Releases
main-v2.0.0
Compare
Sorry, something went wrong.
No results found
2.0.0 (2026-08-20)
⚠ BREAKING CHANGES
workflow: LLMAgentWrapper and LLMAgentWrapperConfig are removed. An agent is a workflow node as itself — pass it to an edge or node() directly. A non-LlmAgent agent used as a node no longer has the node input appended to its conversation, nor its final model text promoted to the node output.
workflow: InvocationContext.agent is now optional. Code reading it outside an agent's own execution must handle undefined; inside one, prefer requireAgent(ctx).
agents: constructing a SequentialAgent, ParallelAgent or LoopAgent now logs a deprecation warning once per class per process. The classes are otherwise unchanged and keep working.
agents: BaseAgent now extends BaseNode, so subclasses inherit rerunOnResume, waitForOutput, retryConfig, timeout, inputSchema, outputSchema and stateSchema. A subclass that declares a field of the same name now collides with the inherited one. BaseAgent.description is also no longer undefined when unset.
workflow: a dynamic ctx.runNode() child that raises an interrupt and re-reads ctx.resumeInputs on re-run must now declare rerunOnResume: true. With the default it is completed with the raw reply as its output instead of re-running. Workflow is still @experimental .
workflow: add engine core — execution model, graph, and node registry (Part 2) (#588 )
Features
agents: deprecate SequentialAgent, ParallelAgent and LoopAgent (#679 ) (63927e2 )
agents: make BaseAgent a BaseNode (#667 ) (4b0c605 )
core: accept a bare Workflow as a root — runner, App and agent loader (#680 ) (b3497e0 )
core: graduate RoutedAgent and RoutedLlm out of experimental (#783 ) (36e3fcb )
core: implement Runner.runLive and LlmAgent live flow (#523 ) (48165a8 )
dev: render graph workflows in the dev UI agent graph (#654 ) (434a43e )
dev: serve the agent structure graph the dev UI's graph tab asks for (#694 ) (8915c2b )
Honor GOOGLE_GENAI_USE_ENTERPRISE in getExpressModeApiKey() (adk-python parity) (#569 ) (444f30b )
plugins: add before/after node callbacks (#659 ) (e03bbad )
Port the environment abstraction (BaseEnvironment, ExecutionResult, LocalEnvironment) from adk-python (#582 ) (f7f541e )
tools: FunctionTool require_confirmation — HITL approval (Part 7) (#594 ) (d2ae57b )
utils: enforce schemas declared in the genai dialect, not just Zod (#663 ) (392511a )
workflow: add engine core — execution model, graph, and node registry (Part 2) (#588 ) (672dbde )
workflow: built-in Function and Tool nodes (Part 3) (#590 ) (68aebdb )
workflow: drive workflows as nodes and remove WorkflowAgent (#688 ) (534546f )
workflow: enforce a node's declared stateSchema (#713 ) (379e45c )
workflow: let ctx.runNode() take what edges take (#683 ) (53535d3 )
workflow: LLM-agent-as-node, task mode, and node-as-tool (Part 6) (#593 ) (5334b45 )
workflow: make isolationScope real by filtering LLM contents on it (#656 ) (bdc9090 )
workflow: ParallelWorker and JoinNode (Part 4) (#591 ) (13f9995 )
workflow: record a failed node as a NodeErrorEvent (#657 ) (e5025e9 )
workflow: trace workflow and node execution with OpenTelemetry (#653 ) (d0f19c5 )
workflow: workflow runner and public API (Part 5) (#592 ) (1b90f3b )
Bug Fixes
agent-loader: ignore node_modules and hidden folders in agent discovery and fix integration test timeouts (#674 ) (d9ffd9d )
agents: bind a human-in-the-loop confirmation to the action it approves (#771 ) (2d1bb44 )
agents: keep usage metadata from content-less streaming responses (#646 ) (2e58422 ), closes #645
agents: persist processLlmRequest state changes (#630 ) (9360bf2 )
agents: stop warning about transfer config the author never set (#746 ) (5860560 ), closes #725 #726
api-server: return the events a failed invocation produced from /run (#749 ) (4bc0e0d ), closes #743
auth: bind a credential response to the request that asked for it (#775 ) (10ae7bd )
build: retry the ADK Web download instead of failing the build (#693 ) (e57f6cf )
cli: keep one broken agent from killing the dev server; surface HITL prompts and errors in adk run (#633 ) (a98d132 )
cli: make --log_level debug actually set the debug level (#658 ) (d56ea73 )
deps: bump google.golang.org/grpc to 1.82.1 in the Go test backend (#745 ) (35b7bdf )
dev: keep the adk run REPL alive when a turn fails (#780 ) (9c3121f )
dev: print a node's output when it emitted no text (#779 ) (2f534b7 )
dev: stop --verbose eating the agent path (#764 ) (b633b57 )
dev: stop an empty node response vanishing from the transcript (#765 ) (af3a821 ), closes #728
dev: stop dropping piped stdin lines, and keep the prompt on its own line (#781 ) (e5c8532 )
encode and validate OpenAPI path parameters in RestApiTool (#638 ) (cedd2a5 )
models: consult GOOGLE_API_KEY on the Gemini API path (#748 ) (60a3c67 ), closes #712
resolve the browser export condition in core and integrations (#618 ) (0f9f73d )
runner: stop warning about workflow nodes when resuming (#672 ) (e294c4d )
samples: validate the classifier's routes, and title-case Unicode (#751 ) (2d77643 ), closes #736 #741
server: serve /version, which the dev UI reads on load (#685 ) (2817457 )
sessions: keep workflow event fields across the Agent Engine fallback path (#649 ) (a493f74 )
sessions: redact connection-URI password in unsupported-URI errors (#602 ) (aee56e0 )
sessions: restore event round trip in VertexAiSessionService (#565 ) (90b2417 )
sessions: send the agent-transfer action under the name the API defines (#660 ) (6a8224e )
sessions: stop a late event commit rolling a state key back (#695 ) (86459dc )
skills: materialize script output into a dedicated dir, not process.cwd() (#620 ) (2ea08cf )
skills: preserve binary skill assets as Buffer (#644 ) (94cbe4a )
skip identity preamble when agent transfer is disabled (#616 ) (09e2375 )
telemetry: make a workflow's spans retrievable so its traces render (#750 ) (63a5f43 )
tests: give the local code executor tests a Windows-sized budget (#662 ) (9726467 )
tests: keep a prompt change from breaking every workflow sample (#647 ) (5742875 )
tests: stop cli_create tests reading the developer's gcloud env (#666 ) (7312efc )
three defects found bug-bashing the graph-workflow docs samples (#664 ) (e0dae58 )
workflow: apply node overrides to an already-built node (#673 ) (a9dd7c6 )
workflow: check a structured HITL reply against its responseSchema (#665 ) (238d600 )
workflow: don't replay a finished run on the next turn (#637 ) (3e4f770 )
workflow: emit the interrupt schema under the key clients read (#686 ) (e84eb3f )
workflow: fail a node that reports an error instead of throwing (#776 ) (8786718 )
workflow: hand the START node the user's text, attachment or not (#778 ) (7c65534 )
workflow: keep a jittered retry delay inside maxDelay (#704 ) (c577510 )
workflow: let a child's pending interrupt hold its caller (#759 ) (8b43818 ), closes #734
workflow: let a resumed graph route back through a node it already ran (#700 ) (074827a )
workflow: let an agent node converse and finish a confirmed tool call (#703 ) (73b9443 )
workflow: let an item that asks the user pause the whole worker (#708 ) (d4a5373 )
workflow: let two route keys share a destination node (#763 ) (172ccb1 ), closes #740
workflow: match a retryable exception by its class name (#705 ) (de31b04 )
workflow: record which nodes an output answers for (#690 ) (6796f42 )
workflow: refuse a numeric custom runId whichever call comes first (#762 ) (fbff483 )
workflow: refuse a reply that answers no open interrupt (#777 ) (19c50ef )
workflow: refuse a runId that collides with an automatic one (#670 ) (aca4a32 )
workflow: report an aborted node as aborted, not timed out (#706 ) (596f41c )
workflow: resume a waiting parent on its original input (#760 ) (67d5246 )
workflow: resume dynamic HITL children instead of livelocking (#635 ) (1961d2c )
workflow: say which node failed, and when a route goes nowhere (#650 ) (a785f3a )
workflow: stamp the invocation id on an event a node built itself (#747 ) (b339f75 ), closes #715
workflow: stop delivering a workflow's output as two events (#669 ) (7aa76e7 )
workflow: stop duplicating a delegated output, and parse a structured reply (#702 ) (bd47431 )
workflow: stop node state writes from being rolled back mid-run (#636 ) (fcc6c1e )
workflow: stop re-running a dynamic node that already settled (#707 ) (bc4e238 )
workflow: stop reinterpreting a text reply the schema asked for as text (#761 ) (022fcc9 ), closes #737
workflow: unwind a caller past a dynamic child that paused or failed (#709 ) (5719010 )
Performance Improvements
core: make situational subsystems optional peers, 591 → 172 packages on install (#626 ) (a5cdc38 )
Code Refactoring
workflow: collapse LLMAgentWrapper into LlmAgent.runImpl (#696 ) (49209ab )
You can’t perform that action at this time.