Skip to content

Commit 9646c21

Browse files
committed
release: Atmosphere 4.0.56
1 parent 9398b95 commit 9646c21

110 files changed

Lines changed: 164 additions & 111 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,59 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [4.0.56] - 2026-06-23
11+
12+
### Added
13+
14+
- guardrails + OBO + cost + run-registry AI bean parity with SB4
15+
- config-driven AI routing parity with the SB4 starter
16+
- install governance decision log out-of-box for the queryable audit trail
17+
- warn on unauthenticated A2A endpoint + advertise declared security scheme
18+
- make spring-boot-agui-chat a real AG-UI agent via the native bridge @Agent + @Prompt + real @AiTool through session.stream() (demo fallback when no key); AiEvent->AgUiEvent over /atmosphere/agent/{name}/agui; replaces the scripted controller
19+
- config-driven cost/latency/model routing rules in atmosphere.ai.routing extends F3a (content-only); compose order content->model->cost->latency; off-by-default + content behavior byte-identical
20+
- emit experimental OTel GenAI semconv span attributes via GenAiTracer gen_ai.usage.*/request+response.model/operation/provider on the live span; fixes provider Runtime-Truth bug (real runtime name, not hardcoded atmosphere); legacy ai.tokens.* byte-identical
21+
- add --routing flag to 'atmosphere new' for routing config scaffolding injects a commented atmosphere.ai.routing.* block into AI-template application.yml; off by default, rejected for non-AI templates
22+
- wire real LongTermMemory cross-session recall into personal-assistant InMemoryLongTermMemory + LongTermMemoryInterceptor on the UpstreamMcpAgent @AiEndpoint (no-arg interceptor + static holder pattern); makes the memory-bearing claim true
23+
- opt-in RoutingLlmClient via atmosphere.ai.routing.enabled autoconfig wraps the resolved client with content-based routing rules; adds AiConfig.installClient seam; default-off byte-identical
24+
- wire ApiKeyResolver into anthropic/cohere with provider env-var support renamed from CredentialResolver (clashed with AiGateway.CredentialResolver); per-provider precedence reads ANTHROPIC_API_KEY/COHERE_API_KEY, no cross-provider key leak
25+
- add generation params (temperature/maxTokens/topP/stop) to LlmSettings wired to the wire for built-in/anthropic/spring-ai/langchain4j; honest per-runtime matrix in README; empty=byte-identical
26+
- explicit prompt-cache-key tri-state replaces base-URL sniffing PromptCacheKeyMode AUTO/ENABLED/DISABLED on LlmSettings; AUTO preserves current per-path heuristics byte-for-byte
27+
- store resolved apiKey on LlmSettings so apiKey() works for any client removes the OpenAiCompatibleClient-only instanceof; 4-arg constructor preserves old behavior; adds CredentialResolver precedence primitive
28+
- provider-neutral model tier aliases (fast/frontier/reasoning) ModelTier resolves tier tokens to a concrete model by active provider; raw model strings pass through unchanged
29+
- add provider-neutral configureNativeClient(Object) to AbstractAgentRuntime type-checked against nativeClientClassName(); provider-typed static setters remain the primary wiring path
30+
31+
### Fixed
32+
33+
- reachable agent bridge + keep response open during AG-UI streaming AgUiAgentBridge made public (cross-module reflective invoke from agui handler); handlePost joins the run thread so virtual-thread SSE writes don't hit a recycled response — fixes the agui-chat demo+UI e2e (only RUN_STARTED was reaching the wire)
34+
- converge AUTO prompt-cache-key to one default-deny allow-list built-in and framework runtimes share CacheHint.endpointAcceptsPromptCacheKey; framework no longer emits on unknown hosts under AUTO (force via PromptCacheKeyMode.ENABLED)
35+
- honor per-request ToolLoopPolicy in anthropic/cohere/langchain4j tool loops they hardcoded a 5-round cap and ignored maxIterations/onMaxIterations; now route through the shared ToolLoopGuard like the built-in (default behavior unchanged)
36+
- make default model configurable, default claude-sonnet-4-6 adds anthropic.model system property; per-request and AiConfig models still win over the fallback
37+
- version-bump touches only Atmosphere deps; regen SKILLCARDs
38+
- repair rag-chat/mcp-server/browser-agent + SB3 Tomcat + stream errors
39+
- restore real third-party dep versions clobbered by 4.0.x bump
40+
41+
### Changed
42+
43+
- pin deny-policy refusal on A2A and AG-UI bridges
44+
- fail-closed Maven Central pre-check guards against version burn
45+
- e2e proving config-driven routing is consumed on the wire
46+
- attribute GenAI "experimental" to the OpenTelemetry spec, not the emitter GenAiTracer/MetricsCapturingSession Javadoc + README make clear the implementation is production code; only the upstream OTel GenAI convention is experimental
47+
- document atmosphere new --routing flag and correct agui-chat sample row agui-chat is now a real @Agent (LLM + @AiTool over the AG-UI native bridge), not scripted
48+
- consolidate per-model-call observability into ModelCallScope replaces duplicated fireModelStart/End/Error + timing across 9 adapters and 2 Kotlin runtimes; event count/ordering unchanged (ADK start-time aligned to dispatch)
49+
- unify tool-call accumulator across built-in, anthropic, cohere shared ToolCallAccumulator gains argumentsAsMap(); deletes the two private copies; built-in parse path unchanged
50+
- extract AbstractSseLlmClient shared by Anthropic and Cohere clients collapses ~268 lines of duplicated HTTP/SSE plumbing (header filter, snippet read, data: loop, tool-schema) into one base; wire behavior byte-identical (black-box suites unchanged)
51+
- add TokenUsage.fromCounts and migrate adapter usage translation collapses 11 hand-rolled null-guard/total-fallback sites; 2 sites now compute total=input+output instead of 0 when the provider omits total (regression-tested)
52+
- hoist models() default into AbstractAgentRuntime removes 9 byte-identical adapter overrides; koog (distinct logic) and the interface default unchanged
53+
- fix cancel-test race by awaiting worker interrupt observation worker records the interrupt asynchronously; wait on a latch instead of reading the flag right after whenDone()
54+
- correct AI doc/sample drift vs verified runtime capabilities embeddings 5->7 runtimes, TOOL_CALL_DELTA Built-in+Cohere, ai.md classpath table, agui relabel, samples.json reattach
55+
- bound playwright install with timeout to prevent multi-hour hangs
56+
- both-layer regressions for the sweep failures (JUnit + Playwright)
57+
- sync version stamp to 4.0.56-SNAPSHOT
58+
- deep-link concept tables to docs site; fix verifier count
59+
- bump version to 4.0.55
60+
- prepare next development version 5.0.33
61+
- prepare for next development iteration 4.0.56-SNAPSHOT
62+
1063
## [4.0.55] - 2026-06-17
1164

1265
### Added

assembly/cpr/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.atmosphere</groupId>
55
<artifactId>atmosphere-project</artifactId>
6-
<version>4.0.56-SNAPSHOT</version>
6+
<version>4.0.56</version>
77
<relativePath>../../pom.xml</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>
@@ -17,7 +17,7 @@
1717
<dependency>
1818
<groupId>org.atmosphere</groupId>
1919
<artifactId>atmosphere-runtime</artifactId>
20-
<version>4.0.56-SNAPSHOT</version>
20+
<version>4.0.56</version>
2121
</dependency>
2222
</dependencies>
2323

assembly/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.atmosphere</groupId>
55
<artifactId>atmosphere-project</artifactId>
6-
<version>4.0.56-SNAPSHOT</version>
6+
<version>4.0.56</version>
77
</parent>
88

99
<modelVersion>4.0.0</modelVersion>

bom/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.atmosphere</groupId>
55
<artifactId>atmosphere-project</artifactId>
6-
<version>4.0.56-SNAPSHOT</version>
6+
<version>4.0.56</version>
77
</parent>
88

99
<modelVersion>4.0.0</modelVersion>

modules/a2a/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.atmosphere</groupId>
55
<artifactId>atmosphere-project</artifactId>
6-
<version>4.0.56-SNAPSHOT</version>
6+
<version>4.0.56</version>
77
<relativePath>../../pom.xml</relativePath>
88
</parent>
99

modules/adk/SKILLCARD.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ license:
3131
artifact:
3232
group_id: org.atmosphere
3333
artifact_id: atmosphere-adk
34-
version: 4.0.56-SNAPSHOT
34+
version: 4.0.56
3535
packaging: jar
3636
module_path: modules/adk
3737

modules/adk/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.atmosphere</groupId>
55
<artifactId>atmosphere-project</artifactId>
6-
<version>4.0.56-SNAPSHOT</version>
6+
<version>4.0.56</version>
77
<relativePath>../../pom.xml</relativePath>
88
</parent>
99

modules/admin-bundle/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ Add the bundle to your Spring Boot project:
4545
<dependency>
4646
<groupId>org.atmosphere</groupId>
4747
<artifactId>atmosphere-admin-bundle</artifactId>
48-
<version>4.0.55</version>
48+
<version>4.0.56</version>
4949
</dependency>
5050

5151
<!-- Pick exactly one AgentRuntime adapter -->
5252
<dependency>
5353
<groupId>org.atmosphere</groupId>
5454
<artifactId>atmosphere-spring-ai</artifactId>
55-
<version>4.0.55</version>
55+
<version>4.0.56</version>
5656
</dependency>
5757
```
5858

modules/admin-bundle/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.atmosphere</groupId>
55
<artifactId>atmosphere-project</artifactId>
6-
<version>4.0.56-SNAPSHOT</version>
6+
<version>4.0.56</version>
77
<relativePath>../../pom.xml</relativePath>
88
</parent>
99

modules/admin/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.atmosphere</groupId>
55
<artifactId>atmosphere-project</artifactId>
6-
<version>4.0.56-SNAPSHOT</version>
6+
<version>4.0.56</version>
77
<relativePath>../../pom.xml</relativePath>
88
</parent>
99

0 commit comments

Comments
 (0)