Skip to content

Commit 13fe8c4

Browse files
committed
docs: align capability matrix with 4.0.44 + fix tool-approval list
Adds BUDGET_ENFORCEMENT/CONFIDENCE_SCORES/PASSIVATION/MODEL_ENUMERATION/MULTI_AGENT_HANDOFF rows to the tutorial matrix; corrects the TOOL_APPROVAL list (Embabel and SK were wrongly excluded); updates the gateway-consumer count from "seven of nine" to all nine (verified by grep — every runtime calls admitThroughGateway); refreshes four pre-Koog/SK/AgentScope/Alibaba narrative enumerations to the current 9-runtime set.
1 parent 3930a7e commit 13fe8c4

5 files changed

Lines changed: 19 additions & 13 deletions

File tree

docs/src/content/docs/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { Card, CardGrid } from '@astrojs/starlight/components';
2323
`@ManagedService` with transport-agnostic Broadcaster pub/sub. WebSocket, SSE, long-polling, and gRPC — auto-negotiated per client. Rooms, presence, message history, and interceptors built in.
2424
</Card>
2525
<Card title="AI / LLM Platform" icon="star">
26-
`@Agent` with pluggable `AgentRuntime` — auto-detects Spring AI, LangChain4j, Google ADK, or Embabel. Tool calling, conversation memory, filters, cost metering, and multi-model routing.
26+
`@Agent` with pluggable `AgentRuntime` — auto-detects nine framework adapters (Spring AI, LangChain4j, Google ADK, Embabel, Koog, Semantic Kernel, AgentScope, Spring AI Alibaba) plus a built-in OpenAI-compatible client. Tool calling, conversation memory, filters, cost metering, and multi-model routing.
2727
</Card>
2828
<Card title="Multi-Agent Orchestration" icon="puzzle">
2929
`@Coordinator` + `@Fleet` for multi-agent systems. Parallel fan-out, sequential pipelines, and weighted routing. MCP, A2A, and AG-UI protocols for agent interoperability.

docs/src/content/docs/reference/ai.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ Default timeout: 5 minutes. Configurable via `@RequiresApproval(timeoutSeconds =
495495

496496
When running on Google ADK, Atmosphere also calls `toolContext.requestConfirmation()` to give ADK native visibility into the approval pause. If ADK resolves a confirmation before Atmosphere (e.g., via its own UI), the ADK denial short-circuits without calling the executor. This creates a two-layer model: Atmosphere-level (cross-runtime) + ADK-native (runtime-specific).
497497

498-
All runtimes with `TOOL_CALLING` also declare `AiCapability.TOOL_APPROVAL` (Built-in, Spring AI, LangChain4j, ADK, Koog). SK and Embabel are excluded: SK because its tool bridge is deferred; Embabel because it has no tool-calling path.
498+
All runtimes with `TOOL_CALLING` also declare `AiCapability.TOOL_APPROVAL` (Built-in, Spring AI, LangChain4j, ADK, Embabel, Koog, Semantic Kernel). AgentScope and Spring AI Alibaba are excluded because their underlying SDKs lack a native tool-call dispatch loop.
499499

500500
## Context Compaction SPI
501501

docs/src/content/docs/tutorial/09-ai-endpoint.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ Key observations:
110110

111111
1. **`@Ready` and `@Disconnect`** work the same as in `@ManagedService` -- they handle connection lifecycle.
112112
2. **`@Prompt`** receives the user's raw message and a `StreamingSession`.
113-
3. **`session.stream(message)`** sends the message to the resolved AI backend and streams the response back. This is the simplest way to invoke the LLM -- the framework resolves the correct adapter (Spring AI, LangChain4j, ADK, or built-in) automatically.
113+
3. **`session.stream(message)`** sends the message to the resolved AI backend and streams the response back. This is the simplest way to invoke the LLM -- the framework resolves the correct adapter (any of the nine `AgentRuntime` implementations: Spring AI, LangChain4j, ADK, Embabel, Koog, Semantic Kernel, AgentScope, Spring AI Alibaba, or the built-in OpenAI-compatible client) automatically via `ServiceLoader`.
114114
4. **Demo fallback** -- if no API key is configured, the sample uses `DemoResponseProducer` to simulate streaming. This pattern is useful for local development without an API key.
115115
5. **System prompt** -- loaded once at startup from `prompts/system-prompt.md` on the classpath via `PromptLoader`.
116116

docs/src/content/docs/tutorial/11-ai-adapters.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: "AI Framework Adapters"
3-
description: "Plugging Spring AI, LangChain4j, Google ADK, and Embabel into Atmosphere's streaming infrastructure"
3+
description: "Plugging Spring AI, LangChain4j, Google ADK, Embabel, Koog, Semantic Kernel, AgentScope, and Spring AI Alibaba into Atmosphere's streaming infrastructure"
44
sidebar:
55
order: 11
66
---
@@ -46,7 +46,7 @@ var request = ChatCompletionRequest.builder(settings.model())
4646
settings.client().streamChatCompletion(request, session);
4747
```
4848

49-
The built-in client is what powers `session.stream(message)` inside `@AiEndpoint`. If you need framework-specific features (Spring AI advisors, LangChain4j tool loops, ADK agent orchestration, Embabel agent planning), use one of the adapter modules below.
49+
The built-in client is what powers `session.stream(message)` inside `@AiEndpoint`. If you need framework-specific features (Spring AI advisors, LangChain4j tool loops, ADK agent orchestration, Embabel agent planning, Koog graph strategies, Semantic Kernel kernel hooks, AgentScope ReAct agents, or Spring AI Alibaba runnable configs), use one of the adapter modules below.
5050

5151
## Runtimes
5252

@@ -80,18 +80,25 @@ This table mirrors the exact `Set<AiCapability>` each runtime's `capabilities()`
8080
| `CONVERSATION_MEMORY` ||||||||||
8181
| `PER_REQUEST_RETRY` ||||||||||
8282
| `TOKEN_USAGE` ||||||||||
83+
| `BUDGET_ENFORCEMENT` ||||||||||
84+
| `CONFIDENCE_SCORES` ||||||||||
8385
| `CANCELLATION` ||||||||||
86+
| `PASSIVATION` ||||||||||
8487
| `VISION` ||||||||||
8588
| `MULTI_MODAL` ||||||||||
8689
| `AUDIO` ||||||||||
8790
| `PROMPT_CACHING` ||||||||||
8891
| `AGENT_ORCHESTRATION` ||||||||||
8992
| `TOOL_CALL_DELTA` ||||||||||
93+
| `MODEL_ENUMERATION` ||||||||||
94+
| `MULTI_AGENT_HANDOFF` ||||||||||
9095

9196
**Legend:**
9297
- ✅ Declared in `capabilities()` and honored at runtime
9398
- — Not declared. Either the framework's native API does not expose the feature, or the bridge has not threaded it through yet.
9499

100+
The full `AiCapability` enum has 20 values. `MODEL_ENUMERATION` and `MULTI_AGENT_HANDOFF` are forward-looking SPI slots — the enum entries exist so callers can probe for them, but no runtime declares them today. `MULTI_AGENT_HANDOFF` is currently surfaced through the coordinator/handoff path (`session.handoff()`, `AiEvent.Handoff`) rather than a per-runtime capability flag.
101+
95102
### Why the baseline is so high
96103

97104
The first three rows plus `CONVERSATION_MEMORY` and `PER_REQUEST_RETRY` are universal across all nine runtimes because `AbstractAgentRuntime` and the pipeline layer implement them once and every runtime that extends or delegates to them inherits the behavior. The framework builds the default, the adapter only plugs in where it differs. `TOOL_CALLING` / `TOOL_APPROVAL` reach the seven adapters that have a tool-call surface in their underlying SDK; `AgentScope` and `Spring AI Alibaba` lack a native dispatch loop today (tools must be invoked manually). `TOKEN_USAGE` reaches eight of nine — `Spring AI Alibaba` has no usage record on `ReactAgent.call()` in `1.1.2.2`.

docs/src/content/docs/tutorial/26-foundation-primitives.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,13 @@ installed via `AiGatewayHolder.install(...)`; every
7777
`*AgentRuntime.doExecute` / `doExecuteWithHandle` calls
7878
`admitThroughGateway(context)` before native dispatch.
7979

80-
- **Consumer** — seven of the nine runtimes consume the gateway:
81-
`BuiltInAgentRuntime.java:79,98`, `SpringAiAgentRuntime.java:104`,
82-
`LangChain4jAgentRuntime.java:147`, `AdkAgentRuntime.java:292`,
83-
`SemanticKernelAgentRuntime.java:118`, `EmbabelAgentRuntime.kt:110`,
84-
`KoogAgentRuntime.kt:103,165`. The two newer runtimes
85-
(`AgentScopeAgentRuntime`, `SpringAiAlibabaAgentRuntime`) do not yet
86-
call `admitThroughGateway` — gateway adoption on those is a tracked
87-
follow-up.
80+
- **Consumer** — all nine runtimes consume the gateway. Each of
81+
`BuiltInAgentRuntime`, `SpringAiAgentRuntime`,
82+
`LangChain4jAgentRuntime`, `AdkAgentRuntime`,
83+
`SemanticKernelAgentRuntime`, `EmbabelAgentRuntime`,
84+
`KoogAgentRuntime`, `AgentScopeAgentRuntime`, and
85+
`SpringAiAlibabaAgentRuntime` calls `admitThroughGateway(context)`
86+
on its dispatch path before reaching the native SDK.
8887
- **Sample** — every sample implicitly exercises it; nothing dispatches
8988
an LLM without admission.
9089

0 commit comments

Comments
 (0)