You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -88,14 +90,14 @@ See [ExecutionHandle](../../reference/execution-handle/) for the full cancel con
88
90
|`STRUCTURED_OUTPUT`| ✅ | System-prompt schema injection via the pipeline layer |
89
91
|`SYSTEM_PROMPT`| ✅ | Honored by the Koog prompt builder |
90
92
|`CONVERSATION_MEMORY`| ✅ | Per-session memory threaded through `AgentExecutionContext`|
91
-
|`TOKEN_USAGE`| ✅ | Emitted as `ai.tokens.*` metadata when the Koog client reports it |
92
93
|`AGENT_ORCHESTRATION`| ✅ | Works with `@Coordinator` and `@Fleet`|
94
+
|`TOKEN_USAGE`| — | Not declared. Koog reports usage on its response objects but the bridge does not yet thread it into `StreamingSession.usage(TokenUsage)`. Tier 1 follow-up. |
93
95
|`VISION`| — | Koog 0.7.x does not expose a stable multi-modal input API on the bridge path |
94
96
|`MULTI_MODAL`| — | Same limitation |
95
97
|`PROMPT_CACHING`| — | Koog 0.7.3 only ships Bedrock-specific cache variants; no OpenAI-compatible passthrough |
96
98
|`PER_REQUEST_RETRY`| — | Inherits Koog's native retry layer (not per-request overridable from the bridge) |
97
99
98
-
Exclusions are **honest** — Koog declares them as absent in its `capabilities()` set so runtime-truth advertising is accurate (Correctness Invariant #5). When Koog upstream adds these surfaces in a future release, the bridge will honor them without a breaking change.
100
+
Exclusions are **honest** — Koog declares them as absent in its `capabilities()` set so runtime-truth advertising is accurate (Correctness Invariant #5). When Koog upstream adds these surfaces in a future release, the bridge will honor them without a breaking change. No `KoogEmbeddingRuntime` ships today — if you need Koog-backed embeddings, wire a Spring AI or LangChain4j `EmbeddingModel` alongside the Koog agent runtime.
Copy file name to clipboardExpand all lines: docs/src/content/docs/integrations/semantic-kernel.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -83,7 +83,7 @@ Text streaming, system prompts, conversation memory, structured output (via pipe
83
83
|`CONVERSATION_MEMORY`| ✅ | Per-session memory threaded through `AgentExecutionContext`|
84
84
|`STRUCTURED_OUTPUT`| ✅ | Via pipeline-layer schema injection (no runtime-specific support needed) |
85
85
|`TOKEN_USAGE`| ✅ | Reported via `TokenUsage` when SK surfaces it |
86
-
|`AGENT_ORCHESTRATION`|✅|Works with `@Coordinator`and `@Fleet`|
86
+
|`AGENT_ORCHESTRATION`|—|Not declared. SK can participate in a `@Coordinator`fleet as a worker runtime, but it does not own a multi-agent dispatch loop the way ADK / Embabel / Koog do, so the capability flag is not advertised.|
87
87
|`TOOL_CALLING`| — |**Deferred in 4.0.36.** SK's Java tool-calling API is still stabilizing; bridging will land in a follow-up. Documented as an honest exclusion in `modules/semantic-kernel/README.md`. |
88
88
|`TOOL_APPROVAL`| — | Requires `TOOL_CALLING` — see above |
89
89
|`VISION`| — | SK Java does not yet expose a stable multi-modal input API |
| Semantic Kernel |**None**. `SemanticKernelAgentRuntime` does not override `doExecuteWithHandle`, so it inherits `AbstractAgentRuntime`'s default which calls `doExecute(...)` and returns the `ExecutionHandle.completed()` sentinel. `handle.cancel()` is a no-op. | — |
52
+
| Embabel |**None**. `EmbabelAgentRuntime` does not override `executeWithHandle`, so it inherits the `AgentRuntime` interface default which calls `execute(...)` and returns the `ExecutionHandle.completed()` sentinel. `handle.cancel()` is a no-op. | — |
53
+
54
+
"Hard cancel" means the underlying HTTP request, coroutine, or Reactor/RxJava
55
+
subscription is actually torn down. "Caller-side unblock" means the caller
56
+
sees cancellation immediately but the runtime's internal thread continues
57
+
draining the stream until the LLM finishes — token budgets may still be
58
+
consumed. **None** means no cancel primitive is wired and `cancel()` is an
59
+
idempotent no-op — a known gap for Embabel and Semantic Kernel.
Copy file name to clipboardExpand all lines: website/src/components/Atmosphere.astro
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -47,7 +47,7 @@ const pillars = [
47
47
{ name: '@Coordinator & @Fleet', detail: 'Declarative multi-agent orchestration. A @Coordinator injects an AgentFleet and dispatches work to @Agent beans over local, A2A, or MCP transports. Portable across Spring Boot, Quarkus, and plain JVM.', url: 'https://async-io.org/docs/agents/coordinator/', urlLabel: 'Coordinator Docs' },
48
48
{ name: '@RequiresApproval (HITL)', detail: 'Park a virtual thread until a user approves or denies a tool call via the /__approval/ wire protocol. Every @AiTool annotated with @RequiresApproval gates through the ToolApprovalPolicy sealed interface (AllowAll, DenyAll, Annotated, Custom).', url: 'https://async-io.org/docs/reference/tool-approval-policy/', urlLabel: 'ToolApprovalPolicy' },
49
49
{ name: 'Agent Handoffs', detail: 'session.handoff("billing", message) transfers a conversation with full history to another @Agent. Built-in cycle guard prevents infinite handoff loops; AiEvent.Handoff surfaces on the wire for UI state transitions.', url: 'https://async-io.org/docs/tutorial/10-ai-tools/', urlLabel: 'Tutorial' },
50
-
{ name: 'Durable HITL', detail: 'CheckpointStore SPI (in-memory, SQLite, Redis) persists parent-chained conversation snapshots. An approval that arrives after a JVM restart resumes the exact turn and resurrects the execution on a fresh virtual thread.', url: 'https://async-io.org/docs/tutorial/24-durable-hitl/', urlLabel: 'Durable HITL Tutorial' },
50
+
{ name: 'Durable HITL', detail: 'CheckpointStore SPI with InMemory and SQLite backends in-tree, pluggable for your own store. Parent-chained conversation snapshots so an approval arriving after a JVM restart resumes the exact turn on a fresh virtual thread.', url: 'https://async-io.org/docs/tutorial/24-durable-hitl/', urlLabel: 'Durable HITL Tutorial' },
51
51
{ name: 'ExecutionHandle', detail: 'Cooperative cancel for in-flight agent executions. Each runtime wraps its native cancel primitive (HTTP close, coroutine Job cancel, Reactor Flux dispose). handle.cancel() is idempotent and thread-safe.', url: 'https://async-io.org/docs/reference/execution-handle/', urlLabel: 'ExecutionHandle Docs' },
Copy file name to clipboardExpand all lines: website/src/components/WhatsNew.astro
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -52,7 +52,7 @@ const highlights = [
52
52
{
53
53
badge: 'Feature',
54
54
title: 'Durable HITL workflows',
55
-
description: 'CheckpointStore SPI with in-memory, SQLite, and Redis backends. An approval that arrives after a JVM restart resumes the exact turn on a fresh virtual thread.',
55
+
description: 'CheckpointStore SPI with InMemory + SQLite backends, pluggable for your own backing store. An approval that arrives after a JVM restart resumes the exact turn on a fresh virtual thread.',
0 commit comments