Skip to content

Emit agent/node lifecycle events (start/finish) in runner.run_async #6267

Description

@ferponse

Context

We maintain the AG-UI ↔ ADK middleware (ag-ui-adk, part of ag-ui-protocol/ag-ui). To emit AG-UI's STEP_STARTED / STEP_FINISHED events — which bracket the nodes/phases of a run — from ADK workflows, the middleware must know when each node/agent starts and finishes.

Problem

The runner.run_async stream carries text / tool-call / state / reasoning events, but no explicit "agent X started / finished" boundaries. Consumers that want to bracket work per node/agent (workflows, multi-agent, loops) must infer boundaries from author / branch transitions, which is lossy:

ADK already has the lifecycle internally

  • before_agent_callback / after_agent_callback fire once per agent invocation (including once per LoopAgent iteration).
  • The 2.0 Workflow graph engine has _node_status / node_tracing / _node_runner.

It is simply not surfaced in the public event stream.

Ask

Optionally (behind a flag/config) emit lightweight lifecycle events — agent/node started and finished — into runner.run_async, authored by the agent, so any consumer can bracket nodes exactly: including per LoopAgent iteration and exact parallel-branch boundaries.

Prior art / parity

Other agent frameworks already emit these, and AG-UI integrations map them directly to STEP_STARTED / STEP_FINISHED:

  • CrewAIMethodExecutionStartedEvent / MethodExecutionFinishedEvent
  • AWS Strandsmultiagent_node_start / multiagent_node_stop

Surfacing lifecycle events in the stream would let the ADK integration reach the same precision, without consumers having to install their own plugin/callback to observe boundaries.

Motivation

We need this to faithfully emit all AG-UI event types from ADK; STEP_STARTED/STEP_FINISHED is currently the one category the ADK integration can only approximate. See the AG-UI PR: ag-ui-protocol/ag-ui#2076.

Related

#6266 is a minimal, loop-scoped subset of this (just expose the loop iteration index). This issue is the general form and would subsume #6266.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions