Skip to content

Report progress for inbound A2A worker tasks - #28

Merged
dimavrem22 merged 14 commits into
mainfrom
feat/a2a-worker-progress
Aug 16, 2026
Merged

Report progress for inbound A2A worker tasks#28
dimavrem22 merged 14 commits into
mainfrom
feat/a2a-worker-progress

Conversation

@dimavrem22

@dimavrem22 dimavrem22 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Executive Summary

Adds durable, concise progress reporting for long-running inbound A2A worker tasks.

  • Workers acknowledge pickup immediately and publish periodic updates every three minutes by default.
  • Progress delivery, cadence, terminal fencing, cancellation, restart, and shutdown behavior are durable and idempotent.
  • Live admission and restart recovery validate the authoritative task generation and caller before acknowledgement or model work.

Description

Inbound workers send a cadence-aware receipt and short periodic updates generated in an isolated, tool-disabled session. The side session receives bounded task context, the previous public update, and normalized identifiers without arguments or results; invalid output uses one generic nonterminal fallback.

The existing registry preserves delivery and ownership across retries, restarts, follow-ups, cancellation, and terminal settlement. Admission and catch-up require an exact active task, context, and latest caller-role message match, replace webhook or stale persisted payloads with authoritative parts and caller metadata, and reject stale generations before acknowledgement or model dispatch.

Reason

Long-running A2A tasks previously appeared idle until completion. Progress must remain visible without waking the requester model, leaking execution details, replaying stale caller input, or racing terminal and lifecycle transitions.

Decisions

  • Default cadence: Use 180 seconds to provide visibility without excessive side-model or protocol traffic; live coverage uses 60 seconds.
  • Summary isolation: Use a bounded tool-disabled session and a generic fallback so progress stays concise and nonterminal.
  • Authoritative ownership: Accept and recover only the latest caller-role generation of an active task, using its authoritative payload and caller metadata.
  • Durability: Persist pending delivery, cadence phase, current generation, and reply fences so uncertain outcomes recover without duplication.
  • Requester behavior: Record informational progress in task history without starting another requester model turn.

Testing

  • npm run lint — passed.
  • npm run typecheck — passed.
  • npm run build — passed.
  • npm test — 71 files and 875 tests passed.
  • Focused A2A gateway suite — 36 tests passed, including stale restart rejection, authoritative catch-up, caller metadata normalization, duplicate suppression, and post-close admission rejection.
  • Live A2A worker progress workflow — verifies prompt acknowledgement, ordered nonterminal cadence updates, at least one descriptive summary, and the final worker result; replacement final-head run is pending.

@dimavrem22
dimavrem22 merged commit bdc889b into main Aug 16, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant