feat(ai): add Invocations protocol lifecycle support - #9901
feat(ai): add Invocations protocol lifecycle support#9901Wei Meng (m5i-work) wants to merge 4 commits into
Conversation
|
Azure Pipelines: Successfully started running 1 pipeline(s). 21 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
ad72ff7 to
6b86614
Compare
Live E2E validationBuilt and installed the full stack with Passed:
Reference-agent limitation:
|
646639b to
7e303a9
Compare
7e303a9 to
08a31fc
Compare
0a7758c to
0538801
Compare
There was a problem hiding this comment.
🟡 Changes recommended
A new Go line exceeds the repo’s enforced 125-character limit (lll) and is expected to fail linting until wrapped.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
- Files reviewed: 11/11 changed files
- Comments generated: 1
- Review effort level: Lite
4a1187a to
4b64798
Compare
4b64798 to
8f55bc0
Compare
There was a problem hiding this comment.
🟡 Changes recommended
There is a concrete resource-handling issue in invoke.go where defer resp.Body.Close() is registered before invocationIDFromResponse may replace resp.Body, leading to inconsistent closing behavior.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
- Files reviewed: 12/12 changed files
- Comments generated: 1
- Review effort level: Lite
8f55bc0 to
c27f607
Compare
c27f607 to
326c28c
Compare
326c28c to
b176807
Compare
| if err != nil { | ||
| return err | ||
| } | ||
| if resp.StatusCode < http.StatusBadRequest && invocationID != "" && rc.azdClient != nil && agentKey != "" { |
There was a problem hiding this comment.
[azd-code-reviewer][low] Add a test that exercises this create-to-current-ID wiring, not only invocationIDFromResponse and the store in isolation. The current tests would still pass if this call were removed, used the wrong agentKey, saved after an HTTP failure, or skipped raw/202 responses. Cover a successful header ID, a body-only 202 ID, and preservation of the previous selection on an error response so the PR’s core persistence behavior is protected end to end.
| if err != nil { | ||
| return fmt.Errorf("read Invocation cancel result: %w", err) | ||
| } | ||
| if resp.StatusCode >= http.StatusBadRequest { |
There was a problem hiding this comment.
[azd-code-reviewer][low] Cover the terminal-state fallback in the Invocations HTTP tests. The existing cancel cases exercise a successful POST and an active Invocation after a rejected POST, but not this branch where the GET reports completed, failed, or cancelled and the command intentionally converts the rejection into success. That behavior is part of the lifecycle contract and is implemented separately from the already-tested Responses path.
azure.ai.agents PR buildNote This is an unsigned development build. Install it only if you trust this PR. Install the extension: azd ext install "https://azuresdkartifacts.z5.web.core.windows.net/azd/extensions/pr/9901/azure-ai-agents.zip"
|
Summary
Extends the shared lifecycle command group from #9900 with support for the Invocations wire protocol. It does not introduce another command group.
invocations show --protocol invocationsto one GETinvocations cancel --protocol invocationsto the cancel POST--idselector; protocol can instead be inferred from the selected agent or--agent-endpoint202 Acceptedpolling behavior on create, including the accepted-body restoration used for ID extractioninvocations follow --protocol invocationsandinvoke --long-running --protocol invocationsfor nowinvoke_invocation.goand shared command dispatch ininvocations.go; existing create, sync/SSE, and polling methods stay ininvoke.goto avoid relocation-only diffCLI
The protocol need not be repeated when inferable. Explicit IDs work with protocol endpoint URLs without local state. Lifecycle requests do not inherit a saved session or create context.
Validation
go test ./...go build ./...go fix ./...Earlier live validation against the supplied Invocations reference agent passed create/poll and one-shot retrieval. That reference agent returns
cancel_invocation not implementedfor cancel, so successful cancellation cannot be live-validated against it.Base: #9900
Fixes #9780
Part of #9676
Supersedes #9706.
Interactive scenarios
Uses the offline invocation help/validation scenarios introduced in #9900. Shared PR impact mapping changes are deferred to #9996. No new live/cloud test infrastructure or scenario execution is included.
Approval boundary
This PR no longer changes
.github/skills/foundry-extension-scenario-pr-regression/references/impact-mapping.md. All mapping additions and its line-ending cleanup are isolated in follow-up #9996, so separate.github/owner approval does not block this feature PR.