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
docs: scrub all <atmosphere.version> hardcoded 4.0.38 across 30+ files
Sweeps every tutorial, integration, reference, infrastructure, client, agent page: drops the <properties><atmosphere.version>4.0.38</atmosphere.version></properties> block and rewrites every \${atmosphere.version} reference to \${project.version}, matching the tutorial 13 pattern already in use. WAR deployment gets correct third-party versions (jakarta.inject-api 2.0.1, jackson-databind 3.1.1) instead of the 4.0.38 copy-paste. Semantic Kernel integration page pins the real library version (1.4.0) and its capability matrix now reflects TOOL_CALLING / TOOL_APPROVAL / PER_REQUEST_RETRY being declared after the SemanticKernelToolBridge + AbstractAgentRuntime.executeWithOuterRetry work landed — the "Deferred in 4.0.36" note was stale.
@@ -72,25 +68,27 @@ The service is a JVM-level static — set it once at application startup, usuall
72
68
73
69
`SemanticKernelAgentRuntime.execute()` builds an SK `ChatHistory` from `AgentExecutionContext.systemPrompt()` + `history()` + `message()`, calls `chatService.getStreamingChatMessageContentsAsync(...)`, and collects the resulting `Flux<StreamingChatContent>` with `blockLast()` inside the sync SPI boundary. Each content frame's `content()` text is fed into `session.send(text)`.
74
70
75
-
Text streaming, system prompts, conversation memory, structured output (via pipeline-layer schema injection), and token usage reporting all work identically to the other runtimes.
71
+
Text streaming, system prompts, conversation memory, tool calling (via `SemanticKernelToolBridge`), structured output (via pipeline-layer schema injection), token usage reporting, and per-request retry all work identically to the other runtimes.
76
72
77
73
## Capability matrix
78
74
79
75
| Capability | Status | Notes |
80
76
|------------|:------:|-------|
81
77
|`TEXT_STREAMING`| ✅ |`Flux<StreamingChatContent>` unwrapped via `blockLast()`|
82
78
|`SYSTEM_PROMPT`| ✅ | Threaded into the `ChatHistory`|
83
-
|`CONVERSATION_MEMORY`| ✅ | Per-session memory threaded through `AgentExecutionContext`|
84
-
|`STRUCTURED_OUTPUT`| ✅ | Via pipeline-layer schema injection (no runtime-specific support needed) |
79
+
|`STRUCTURED_OUTPUT`| ✅ | Pipeline-layer schema injection — any runtime honoring `SYSTEM_PROMPT` gets it free |
80
+
|`CONVERSATION_MEMORY`| ✅ | Native SK `ChatHistory` replays `context.history()` on every dispatch |
81
+
|`TOOL_CALLING`| ✅ |`SemanticKernelToolBridge` builds one `AtmosphereSkFunction` per `@AiTool` and attaches them to a fresh `Kernel`'s `KernelPlugin`; the SK auto-invoke loop dispatches through `AtmosphereSkFunction.invokeAsync`|
82
+
|`TOOL_APPROVAL`| ✅ | Every `AtmosphereSkFunction.invokeAsync` routes through `ToolExecutionHelper.executeWithApproval`, so `@RequiresApproval` gates fire uniformly with the other runtimes |
85
83
|`TOKEN_USAGE`| ✅ | Reported via `TokenUsage` when SK surfaces it |
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
-
|`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
-
|`TOOL_APPROVAL`| — | Requires `TOOL_CALLING` — see above |
84
+
|`PER_REQUEST_RETRY`| ✅ | Honored via `AbstractAgentRuntime.executeWithOuterRetry` on top of SK's `OpenAIAsyncClient` retry layer |
85
+
|`AGENT_ORCHESTRATION`| — | SK can participate in a `@Coordinator` fleet as a worker runtime, but does not own a multi-agent dispatch loop the way ADK / Embabel / Koog do, so the flag is not advertised |
89
86
|`VISION`| — | SK Java does not yet expose a stable multi-modal input API |
87
+
|`AUDIO`| — | Same limitation |
90
88
|`MULTI_MODAL`| — | Same limitation |
91
89
|`PROMPT_CACHING`| — | SK does not surface a `prompt_cache_key` pass-through |
92
90
93
-
Exclusions are **honest** — the runtime's `capabilities()` set does not advertise tool-calling, so `@AiEndpoint(requires = {TOOL_CALLING})` explicitly fails at startup when SK is the only adapter available. Correctness Invariant #5(Runtime Truth) is preserved.
91
+
The runtime's `capabilities()` set is pinned by `SemanticKernelRuntimeContractTest.expectedCapabilities()`, so adding or removing a capability from the code without updating this table (or vice versa) breaks the build. Correctness Invariant #5— Runtime Truth.
0 commit comments