Skip to content

Howie/release 2.7.0 - #49028

Merged
Howie Leung (howieleung) merged 87 commits into
mainfrom
howie/release-2.7.0
Sep 18, 2026
Merged

Howie Leung (howieleung) merged 87 commits into
mainfrom
howie/release-2.7.0

Conversation

@howieleung

Copy link
Copy Markdown
Member

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:

  • The pull request does not introduce [breaking changes]
  • CHANGELOG is updated for new features, bug fixes or other significant changes.
  • I have read the contribution guidelines.

General Guidelines and Best Practices

  • Title of the pull request is clear and informative.
  • There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

  • Pull request includes test coverage for the included changes.

Darren Cohen (dargilco) and others added 30 commits July 1, 2026 15:27
…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
Copilot AI review requested due to automatic review settings September 17, 2026 18:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 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

Copilot AI review requested due to automatic review settings September 17, 2026 19:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 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 MatchConditions parameters and If-Match headers, but it never injects the standard 412 response mapping into the affected sync/async operations. A failed IfNotModified or IfPresent precondition will therefore raise a generic HttpResponseError instead of ResourceModifiedError or ResourceNotFoundError. Other generated SDK operations add this mapping before error_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>
Copilot AI review requested due to automatic review settings September 17, 2026 19:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 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-override query parameter, but the handwritten sync/async realtime clients contain neither that wire name nor an agent_version_override parameter. Passing agent_version_override= therefore falls through **kwargs to the WebSocket transport instead of the query string, while only the undocumented extra_query escape hatch can select a version. Add the named option to both realtime clients/managers, serialize it as x-agent-version-override, and cover both paths.
    sdk/ai/azure-ai-projects/samples/agents/voice/sample_voice_agent_live_text_conversation.py:389
  • response.done and socket closure do not guarantee that conversation persistence has finalized—the new voice_sample_util.py explicitly polls for this. This path immediately calls the REST read API, so a normal live run can transiently return 404/in_progress or show an incomplete transcript. Add a bounded retry until the conversation is visible and no longer in_progress before calling _read_conversation.
    sdk/ai/azure-ai-projects/samples/evaluations/sample_synthetic_multiturn_evaluation.py:100
  • The sample states that max_samples is 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 folder samples/agents and now silently receives the generic fallback instead of agents_instructions. Strip a leading samples/ 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: ToolboxObject is returned by the top-level stable ToolboxesOperations, 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

Copilot AI review requested due to automatic review settings September 17, 2026 21:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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

Comment thread sdk/ai/azure-ai-projects/scripts/FixMatchConditions.ps1
Copilot AI review requested due to automatic review settings September 17, 2026 23:44

@howieleung Howie Leung (howieleung) left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve

Copilot AI commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

One or more custom setup steps configured for this repository failed during this Copilot code review run:

Install azsdk mcp server

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 copilot-code-review.yml file. Read the docs for details.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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

@howieleung
Howie Leung (howieleung) merged commit db8b470 into main Sep 18, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants