Howie/release 2.7.0 - #49028
Howie/release 2.7.0#49028
Conversation
…est, add new hosted agent samples for Teams message trigger and reminder preview (#48234) * Remove sample_agent_toolbox_skill.py per bakcned folks and Linda request, add new hosted agent samples for Teams message trigger and reminder preview * change log
… usage; update assets.json tag
There was a problem hiding this comment.
🔵 Needs a closer look
Two new tests omit the standard license header, and previously identified sample execution and cleanup issues remain unresolved.
Review details
Suppressed comments (2)
Previously missed (2) — in code that hasn't changed since the last review.
sdk/ai/azure-ai-projects/tests/agents/test_telephony_match_conditions.py:1
- This new Python test omits the repository's standard Microsoft/MIT license header; the adjacent agent tests consistently include it (for example,
tests/agents/test_realtime_client.py:1-5). Add the header to keep the file compliant with the package convention.
sdk/ai/azure-ai-projects/tests/samples/test_llm_instructions.py:1 - This new Python test omits the repository's standard Microsoft/MIT license header used by the neighboring sample tests (for example,
tests/samples/test_samples_helpers.py:1-5). Add the header so the file follows the package-wide convention.
- Files reviewed: 65/69 changed files
- Comments generated: 0 new
- Review effort level: Balanced
There was a problem hiding this comment.
🔵 Needs a closer look
Match-condition failures lack the standard 412 exception mapping, and the PR description does not document or link the source specification change.
Review details
Suppressed comments (2)
Previously missed (2) — in code that hasn't changed since the last review.
sdk/ai/azure-ai-projects/tsp-location.yaml:2
- The PR description is still the unfilled contribution template and does not link the API-spec change used for this regeneration. This commit is Azure/azure-rest-api-specs#46433 (
Restore voice agent version override query); add that link and an informative release summary so reviewers can validate the generated surface against its source change.
sdk/ai/azure-ai-projects/scripts/FixMatchConditions.ps1:89 - The customization adds
MatchConditionsparameters andIf-Matchheaders, but it never injects the standard 412 response mapping into the affected sync/async operations. A failedIfNotModifiedorIfPresentprecondition will therefore raise a genericHttpResponseErrorinstead ofResourceModifiedErrororResourceNotFoundError. Other generated SDK operations add this mapping beforeerror_map.update(...)(for example,sdk/iothub/azure-mgmt-iothub/azure/mgmt/iothub/operations/_operations.py:2024-2029). Extend this post-emitter patch and its tests to generate the same mapping for all four methods.
- Files reviewed: 65/69 changed files
- Comments generated: 0 new
- Review effort level: Balanced
…y mode (#49071) sample_voice_agent_read_conversation.py and its audio counterpart called create_version() on FOUNDRY_VOICE_AGENT_NAME whenever no conversation_id was set, even when agent_name pointed to a real, user-owned agent rather than a temporary one created by the sample. If that agent's current version content happened to match the sample's hardcoded definition, the service deduped and returned the existing version instead of creating a new one; the sample's cleanup then deleted that version, which -- since it was the agent's only version -- deleted the entire agent. Fix: capture owns_agent = not agent_name before defaulting agent_name, and only call create_version (and thus only ever populate created_version, which gates the delete_version cleanup) when owns_agent is true. When the caller names their own agent, the sample now holds a conversation against it directly and never creates, mutates, or deletes it. Verified live against the worst-case fixture (agent content byte-identical to the sample's hardcoded definition) across all 4 FOUNDRY_VOICE_AGENT_NAME / FOUNDRY_VOICE_CONVERSATION_ID combinations for both samples: the agent-only mode no longer issues any create/delete calls and the agent survives, while the other 3 combinations are unaffected. Co-authored-by: Xiting Zhang <xitzhang@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🔵 Needs a closer look
The release has unresolved stable API compatibility and realtime/spec contract gaps.
Review details
Suppressed comments (5)
Previously missed (4) — in code that hasn't changed since the last review.
sdk/ai/azure-ai-projects/tsp-location.yaml:2
- The pinned spec commit specifically restores the
x-agent-version-overridequery parameter, but the handwritten sync/async realtime clients contain neither that wire name nor anagent_version_overrideparameter. Passingagent_version_override=therefore falls through**kwargsto the WebSocket transport instead of the query string, while only the undocumentedextra_queryescape hatch can select a version. Add the named option to both realtime clients/managers, serialize it asx-agent-version-override, and cover both paths.
sdk/ai/azure-ai-projects/samples/agents/voice/sample_voice_agent_live_text_conversation.py:389 response.doneand socket closure do not guarantee that conversation persistence has finalized—the newvoice_sample_util.pyexplicitly polls for this. This path immediately calls the REST read API, so a normal live run can transiently return 404/in_progressor show an incomplete transcript. Add a bounded retry until the conversation is visible and no longerin_progressbefore calling_read_conversation.
sdk/ai/azure-ai-projects/samples/evaluations/sample_synthetic_multiturn_evaluation.py:100- The sample states that
max_samplesis service-required but injects it as an undeclared mapping key because the typed model no longer exposes it. That leaves customers without a discoverable/type-checkable way to construct a valid request and bypasses the generated contract. Restore this required field in the TypeSpec/model and use the constructor parameter instead of documenting this escape hatch.
sdk/ai/azure-ai-projects/tests/samples/llm_instructions.py:297 - A relative path that includes the documented
samples/prefix (for example,samples/agents/sample_agent_basic.py) does not contain"/samples/"; it is reduced to foldersamples/agentsand now silently receives the generic fallback instead ofagents_instructions. Strip a leadingsamples/as well, and add that relative-path form to the new tests.
sdk/ai/azure-ai-projects/CHANGELOG.md:24
- This is a stable API break, not a beta-only one:
ToolboxObjectis returned by the top-level stableToolboxesOperations, and making two constructor parameters required breaks existing direct construction in a 2.7 minor release. Keep the added response metadata backward-compatible (for example, optional/read-only constructor fields) or defer it to the next major version.
* The `ToolboxObject` constructor now requires `updated_at` and `versions`.
- Files reviewed: 65/69 changed files
- Comments generated: 0 new
- Review effort level: Balanced
…ions and update related documentation
There was a problem hiding this comment.
🟡 Changes recommended
Conditional 412 errors remain incorrectly mapped, and the live async tests lack an asyncio execution marker.
Get a fresh assessment by requesting another Copilot review.
Review details
- Files reviewed: 65/69 changed files
- Comments generated: 2
- Review effort level: Balanced
Howie Leung (howieleung)
left a comment
There was a problem hiding this comment.
Approve
|
One or more custom setup steps configured for this repository failed during this Copilot code review run: Setup steps run before each review. If the review above is missing context, or no review was posted at all, the failing step above may be the cause. See the workflow run for failure details, fix your setup steps configuration, and re-request a review. Note You can configure setup steps for Copilot code review separately from Copilot cloud agent with a |
There was a problem hiding this comment.
🟡 Changes recommended
Previously identified unresolved issues remain in live async test execution, interactive sample automation, generated error mapping, and resource cleanup.
Get a fresh assessment by requesting another Copilot review.
Review details
- Files reviewed: 65/69 changed files
- Comments generated: 0 new
- Review effort level: Balanced
Description
Please add an informative description that covers that changes made by the pull request and link all relevant issues.
If an SDK is being regenerated based on a new API spec, a link to the pull request containing these API spec changes should be included above.
All SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines