Commit: 20fee56

Date: October 20, 2025 at 8:13 AM

Executor invokes an ADK agent and translates session.Events to a2a.Events according to the following rules:

  • If the input doesn't reference any `Task`, produce a `TaskStatusUpdateEvent` with `TaskStateSubmitted`.
  • Right before `runner.Runner` invocation, produce `TaskStatusUpdateEvent` with `TaskStateWorking`.
  • For every `session.Event` produce a `TaskArtifactUpdateEvent{Append=true}` with transformed parts.
  • After the last `session.Event` is processed produce an empty `TaskArtifactUpdateEvent{Append=true}` with `LastChunk=true`, if at least one artifact update was produced during the run.
  • If there was an `LLMResponse` with non-zero error code, produce a `TaskStatusUpdateEvent` with `TaskStateFailed`.

Else if there was an `LLMResponse` with long-running tool invocation, produce a `TaskStatusUpdateEvent` with `TaskStateInputRequired`.

Else produce a `TaskStatusUpdateEvent` with `TaskStateCompleted`.

There's no `TaskAuthRequiredState` production rules at the moment, because A2A assumes an Agent is still executing while waiting for auth credentials. A proper integration will require more research and planning.