Python: include checkpoint_id on AG-UI interrupt metadata (#8150) - #8163
Conversation
…8150) Attach the pause workflow checkpoint id to RUN_FINISHED interrupt metadata.agent_framework so multi-worker clients can resume via forwardedProps.checkpoint_id without a side channel.
There was a problem hiding this comment.
🟡 Changes recommended
Checkpoint selection can advertise a stale or different request owner’s checkpoint ID.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds checkpoint IDs to AG-UI workflow interrupt metadata for durable multi-worker resume.
Changes:
- Resolves and attaches pause checkpoint IDs to interrupts.
- Adds helper and checkpoint-resume coverage.
File summaries
| File | Description |
|---|---|
_workflow_run.py |
Adds checkpoint lookup and interrupt metadata enrichment. |
test_workflow_run.py |
Tests attachment and checkpoint ID propagation. |
Review details
- Files reviewed: 2/2 changed files
- Comments generated: 3
- Review effort level: Balanced
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
|
Addressed review feedback:
|
|
|
Evan Mattson (@moonbox3) Thanks 鈥?addressed your checklist:
|
Move pause-checkpoint selection into Workflow and require a run-scoped baseline so leftover runner ids are not advertised across runs.
|
Evan Mattson (@moonbox3) Follow-up for the run-scoped / core-helper review:
Commit: |
Unblocks Package Checks / merge-gatekeeper on PR microsoft#8163.
|
Merged the pause-checkpoint ownership follow-up on the PR branch (FOWEPJF255#2). Ready for another maintainer pass. |
|
All open review threads from Evan Mattson (@moonbox3) / Eduard van Valkenburg (@eavanvalkenburg) are addressed on the PR head (
Ready for another look when you have a moment. |
1 similar comment
|
All open review threads from Evan Mattson (@moonbox3) / Eduard van Valkenburg (@eavanvalkenburg) are addressed on the PR head (
Ready for another look when you have a moment. |
When checkpoint_id+resume is supplied, load pending requests from the workflow's effective builder/runtime storage if AG-UI was not given an explicit checkpoint_storage, so emitted pause IDs remain round-trippable.
|
lsmlhi_25 (@FOWEPJF255) Eduard van Valkenburg (@eavanvalkenburg) Follow-up for the builder-storage resume round-trip is ready: FOWEPJF255#5. Please merge into the PR branch when convenient. |
|
Merged the builder-storage resume round-trip follow-up onto this PR head ( Resume with Coverage: |
|
Please fix failing CI/CD checks. |
Eduard van Valkenburg (eavanvalkenburg)
left a comment
There was a problem hiding this comment.
Thanks for the contribution. I found one blocking issue in the builder-storage resume path and left it inline. The current Test Typing Checks and Merge Gatekeeper runs are also failing; please address the inline finding and get those checks passing before re-requesting review.
…e test Match existing yield_output ignore markers so Test Typing Checks accept the new resume round-trip coverage.
|
Fixed the CI typing failure on this head (
Please re-run / re-check once workflows refresh. |
Allow forwardedProps.checkpoint_id when only WorkflowBuilder storage is configured, so wrapper/endpoint hosts round-trip pause ids without duplicating checkpoint_storage.
|
Follow-up for Eduard van Valkenburg (@eavanvalkenburg) / Evan Mattson (@moonbox3): builder-owned checkpoint storage now round-trips through Regression: |
|
Evan Mattson (@moonbox3) Eduard van Valkenburg (@eavanvalkenburg) tip |
Motivation & Context
AG-UI workflow interrupts need a durable pause
checkpoint_idso multi-worker clients can resume viaforwardedProps.checkpoint_idwithout a side-channel lookup (Option A from #8150).Description & Review Guide
checkpoint_idto each interrupt'smetadata.agent_frameworkwhen AG-UI workflow runs finish with interrupts and checkpoint storage is active.get_latest(workflow_name=...)(avoids cross-owner races / stale ids).run_workflow_streamdoes not passcheckpoint_storage.interruptsis empty; remove the unusedcheckpoint_idkwarg on_workflow_interrupt_metadata.get_latest, builder-only storage path, and empty-interrupt short-circuit.Related Issue
Fixes #8150
Contribution Checklist
breaking changelabel (or add "[BREAKING]" to the title prefix, before or after any language prefix) 鈥?a workflow keeps the label and title prefix in sync automatically.