Harden A2A pipeline recovery, cleanup, and multimodal flows#129
Merged
Conversation
Record rollback cleanup resources durably, resume cleanup through normal chat, surface cleanup progress in REPL/A2A/observability, and expose cleanup prompts in prompt snapshots.
- include available memory index when read_memory receives an unknown name - stop injecting full auto-memory content into pipeline step prompts - keep pipeline step AgentLoop free of memory side recall - make selling pipeline memory tool policy explicit - guide intent and architecture steps to read memory when relevant
Add a pipeline-only relative read root so step agents can read skill reference files by relative path without changing normal REPL trusted-read behavior. Preserve ToolContext compatibility and cover the pipeline/non-pipeline boundaries with regression tests.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR is the full
fix_pipelinebranch relative tomain. It hardens and expands pipeline mode across A2A, REPL, the selling pipeline workflow, rollback cleanup, multimodal input, durable state recovery, developer tooling, tests, website navigation, and i18n.The branch is not limited to the final review-fix commits. The net diff against
origin/mainis large: 201 files changed, with roughly 46.9k insertions and 1.4k deletions.Major Changes
A2A pipeline execution and recovery
PipelineUserInput, including text, JSON, raw/file URL parts, and supported image MIME types (image/png,image/jpeg,image/webp,image/gif).taskId.ask_user_questionresume, task resubscribe, and normal-chat handoff more consistently.Durable state, sidecar, and persistence behavior
ask_user_questionresume data, active attempt ids, transcripts, and rollback metadata across restarts.Rollback cleanup and cloud-resource tracking
CleanupLedger,CleanupObserver,CleanupResource, and cleanup prompt metadata for tracking resources created by pipeline steps and later requiring cleanup.ResourceObservedEventwhen ROS stack creation reveals a stack id, both throughros_stackand genericaliyun_apiCreateStackpaths.Pipeline engine behavior and completion guards
PipelineUserInputand image-aware display text so pipeline internals can keep original content blocks while UI, telemetry, snapshots, and sidecars have stable text summaries.ros_stackresult with matching stack id/status.complete_stepinputs before accepting restored/precompleted tool state.on_resource_observedandon_rollback_cleanup_required.Selling pipeline workflow and prompt/skill changes
StackName, region, naming constraints, VPC/Zone/CIDR, and network constraints.PreviewStack-validated pricing parameter sets when possible, carrydeployment_parameters, list missing deployment parameters, and avoid writing defaults into templates as cross-step state.TemplateURLinstead of directTemplateBodyto avoid large inline state and improve recoverability.REPL, normal mode, and session behavior
/resume, including user choice to resume or discard resumable sidecars./promptvisibility for cleanup prompts, including a dedicated cleanup prompt tab when present.Tooling, debugger, selling console, and website navigation
scripts/a2a/selling_console.pyandscripts/a2a/selling_console_web/.scripts/repl/e2e/and thepexpectdev dependency.Cross-platform and path-safety fixes
ToolContextconstruction backward-compatible while adding pipeline-mode context fields.i18n and tests
de,es,fr,ja,pt,zh) for new and changed user-facing strings.Rebase Details
02f0a57band later.origin/mainat411e1baf.a36fae75.cdc03eea fix: address pipeline review findings83da92b3 fix: translate pipeline i18n messagesa36fae75 fix: complete translations after main rebaseReview Notes
docs/directory and generated template artifacts were intentionally removed from the committed net diff earlier. The website Pipeline Mode doc already exists underwebsite/docs/automation/pipeline-mode.md; this PR exposes it in website navigation.IacCodeA2APipelineExecutor. If product requirements expect per-request cloud credentials in pipeline mode, that should be handled as follow-up.iac-code a2a-client call --iac-code-modelis supported bymain.Validation
uv run pytest tests/a2a/test_executor.py tests/a2a/test_parts.py tests/a2a/test_client.py tests/cli/test_a2a_command.py tests/services/providers/test_aliyun.py tests/a2a/test_transport_dispatcher.py- 211 passed.make translate && uv run pytest tests/test_i18n.py -q- 20 passed.make test- 7010 passed, 268 warnings.make lint- ruff and ty passed.git diff --check- passed.uv run pytest tests/a2a/test_executor.py::test_pipeline_mode_image_input_checks_provider_context -q- 1 passed.