Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
236bc88
feat(adk): declarative workflow agents for the Go ADK
dimetron Oct 24, 2026
dfaab01
feat(adk): declarative CEL nodes, remote MCP tools, prompt sources an…
dimetron Oct 24, 2026
7baada1
Merge pull request #3 from dimetron/feat/declarative-workflow-agents
dimetron Oct 24, 2026
255ea17
feat(adk): retry.when, harness tools, remote MCP example and parity p…
dimetron Oct 24, 2026
4662cad
Merge pull request #4 from dimetron/feat/declarative-prompts-cel-hooks
dimetron Oct 24, 2026
37e904a
feat(adk): simplify declarative CEL with vars, route rules and agentg…
dimetron Oct 24, 2026
068c777
feat(adk): validate CEL vars references at load time
dimetron Oct 24, 2026
3b64b52
Merge pull request #5 from dimetron/feat/declarative-cel-vars-routes
dimetron Oct 24, 2026
6b4271a
docs(adk): document that workflows have no END node
dimetron Oct 24, 2026
dc2a2cd
docs(adk): list routes in the cel node row
dimetron Oct 25, 2026
691bcdb
fix(adk): isolate cel node errors per run and propagate standalone to…
dimetron Oct 25, 2026
1efab51
feat(adk): graph-wide max_concurrency for declarative Workflow agents
dimetron Oct 25, 2026
e7b534a
Merge pull request #6 from dimetron/feat/declarative-cel-vars-routes
dimetron Oct 25, 2026
0bc0ea9
fix(adk): keep ADK retry defaults in retry.when and count dynamic run…
dimetron Oct 25, 2026
f36f12f
Merge pull request #7 from dimetron/fix/declarative-review-nits
dimetron Oct 25, 2026
6889080
Merge branch 'kagent-dev:main' into main
dimetron Oct 26, 2026
7747304
Merge upstream/main into main
dimetron Oct 30, 2026
fb83c5e
fix(adk): reject unsupported MCP Kubernetes text sources
pood1e Oct 30, 2026
b5b8d6e
Merge remote-tracking branch 'upstream/main'
dimetron Oct 31, 2026
04ecccc
fix chat in workflow
dimetron Nov 2, 2026
417587c
feat(adk): generic declarative workflow runtime with per-author chat …
dimetron Nov 2, 2026
8e1b0d6
fix(adk): pin workflow-agent image digest in example deploy scripts
dimetron Nov 2, 2026
ed07329
Merge branch 'kagent-dev:main' into main
dimetron Nov 3, 2026
b5bd67d
Merge remote-tracking branch 'upstream/main'
dimetron Nov 6, 2026
85dd2c4
Merge remote-tracking branch 'upstream-tmp/main'
dimetron Nov 6, 2026
9272012
fix(adk): use MaterializeFromBootstrap in declarative example
dimetron Nov 6, 2026
9b602f4
Merge remote-tracking branch 'upstream/main'
dimetron Nov 7, 2026
54ad3ab
Merge remote-tracking branch 'upstream/main'
dimetron Nov 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,12 @@ build-byo-a2a: buildx-create
$(DOCKER_BUILDER) $(DOCKER_BUILD_ARGS) $(TOOLS_IMAGE_BUILD_ARGS) --build-arg BUILD_PACKAGE=core/test/byoa2a/main.go -t $(DOCKER_REGISTRY)/$(DOCKER_REPO)/byo-a2a:$(VERSION) -f go/Dockerfile ./go
$(DOCKER_PUSH) $(DOCKER_REGISTRY)/$(DOCKER_REPO)/byo-a2a:$(VERSION)

.PHONY: build-workflow-agent
build-workflow-agent: ## Build and push the generic BYO image for declarative workflow agents
build-workflow-agent: buildx-create
$(DOCKER_BUILDER) $(DOCKER_BUILD_ARGS) $(TOOLS_IMAGE_BUILD_ARGS) --build-arg BUILD_PACKAGE=./adk/examples/declarative -t $(DOCKER_REGISTRY)/$(DOCKER_REPO)/workflow-agent:$(VERSION) -f go/Dockerfile ./go
$(DOCKER_PUSH) $(DOCKER_REGISTRY)/$(DOCKER_REPO)/workflow-agent:$(VERSION)

.PHONY: build-claude-harness
build-claude-harness: ## Build and push the native Claude Harness image
build-claude-harness: buildx-create
Expand Down
2 changes: 2 additions & 0 deletions docs/architecture/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,8 @@ cleanup. Session lifecycle workers independently pause/suspend idle Actors.
- [MCP](mcp.md)
- [A2A agent tools](a2a-subagents.md)
- [Human in the loop](human-in-the-loop.md)
- [Declarative workflow agents](workflow-agents.md)
- [Workflow design patterns](workflow-patterns.md)
- [Token usage](usage-extension.md)
- [Prompt resolution](prompt-templates.md)
- [Telemetry](telemetry.md)
Expand Down
48 changes: 48 additions & 0 deletions docs/architecture/a2a-subagents.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,54 @@ tools:

Tree resolution detects missing references and cycles before compilation.

### Session isolation

By default a subagent shares the parent's Session: the parent transfers control
and the subagent answers in the same conversation history. `isolation: Isolated`
on the binding changes the call model. The parent calls the subagent as a tool and
receives its answer, and every call runs in a new conversation seeded with a copy
of the parent's state:

```yaml
tools:
- subAgent:
name: reviewer
description: Review proposed changes before applying them.
isolation: Isolated
templateRef:
name: review-context
```

| | `Shared` (default) | `Isolated` |
| --- | --- | --- |
| Call model | The parent transfers the conversation | The parent calls a tool and gets a result |
| History the subagent sees | The whole conversation | Only the request it was given |
| Parallel calls | Share one conversation | One conversation each |
| State | Shared | A copy; writes are not copied back |
| Human input and approvals | Reach the person through the parent | Not possible |

Use `Isolated` to fan out to the same subagent in parallel, to keep a long parent
conversation out of the subagent's context, or to keep the subagent from seeing
what the parent was told. The copy of the parent's state is what the subagent
starts from, so do not keep values there that it should not see.

The controller rejects an `Isolated` binding that cannot work, with
`Compatible=False`:

- Only the kagent and BYO Harnesses support it. Codex and Claude do not.
- The subagent's MCP bindings cannot set `requireApproval`, and it is not offered
`ask_user`: its conversation ends with the tool call, so a request for a person
would never be answered.
- It cannot be combined with STS token exchange. The exchanged token is cached by
session ID and an isolated subagent runs in a new session, so its MCP requests
would carry the caller's own credential instead. Plain token propagation works,
because the credential travels with the request.

A subagent that is not isolated keeps its previous behavior and its revisions do
not change. The same distinction exists for declarative workflows as
`sub_agents` and `agent_tools`; see
[Declarative workflow agents](workflow-agents.md#session-isolation).

## Dedicated agent tools

Dedicated bindings would select an independently configured Agent with its own
Expand Down
7 changes: 6 additions & 1 deletion docs/architecture/configuration-and-compilation.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ on each Agent that selects it.

`AgentTemplate` describes what the agent does. It contains model configuration,
description and prompt, MCP tool bindings, skills, plugins, and Shared
subagent bindings (`tools[].subAgent`). Model configuration may be omitted for BYO images;
subagent bindings (`tools[].subAgent`). A BYO root template may instead set
`workflowFrom` to a ConfigMap-held declarative workflow document that the
controller validates and delivers (see [Declarative workflow agents](workflow-agents.md#control-plane)).
Model configuration may be omitted for BYO images;
Agent compilation rejects managed harness combinations without one.

`Agent` pairs one template and one Harness. The required `template` field selects
Expand All @@ -22,6 +25,8 @@ complete values, not overrides. References, including those inside inline specs,
resolve in the Agent's namespace. The reusable resources have no binding to each other. Child templates are selected
with `tools[].subAgent.templateRef` and compile under the parent Agent's Harness.
Each subagent requires `templateRef` and shares the parent's runtime and Harness.
It shares the parent's Session unless its binding sets `isolation: Isolated`; see
[Session isolation](a2a-subagents.md#session-isolation).
Dedicated `agentRef` bindings are deferred and are not part of the served API.

The resource boundary does not grant authorization by itself. Kubernetes RBAC
Expand Down
Loading
Loading