dependabot[bot] opened a new pull request, #3310: URL: https://github.com/apache/cxf/pull/3310
Bumps [org.atmosphere:atmosphere-runtime](https://github.com/Atmosphere/atmosphere) from 3.1.0 to 4.0.61. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/Atmosphere/atmosphere/releases">org.atmosphere:atmosphere-runtime's releases</a>.</em></p> <blockquote> <h2>Atmosphere 4.0.61</h2> <h3>Added</h3> <ul> <li>governance as a learning signal — Prefer decision, feedback loop, durable recall PolicyDecision.Prefer soft-preference + native preference type + GovernanceFeedbackInterceptor (re-injects deny/prefer guidance into the turn) + opt-in durable provenance memory across Spring/Quarkus/bare-JVM; real-LLM sample (spring-boot-ai-chat) + Ollama e2e; console PREFER view; real-LLM CI consolidated on Ollama.</li> <li>tool-output disk offload + composite AgentFileSystem routing Large built-in tool results (>8000 chars, threshold-gated, sysprop/env overridable) spill to the agent workspace and the model gets a preview + read_file pointer — default-on at the tool choke point, fail-safe (never throws/loses data, honors workspace bounds). AgentFileSystemProvider composes a CompositeAgentFileSystem over the per-conversation workspace when durable prefix routes are configured (atmosphere.ai.filesystem.routes, off by default), routing the eight ops by longest-prefix with per-route bounds. Closes the two minor deepagents parity gaps. 3+15+2 tests.</li> <li>task tool — dynamic ephemeral subagent spawn (deepagents parity) The <a href="https://github.com/Coordinator"><code>@Coordinator</code></a> harness now registers a 'task' tool alongside delegate_task: it spawns a general-purpose subagent with an isolated context/workspace (fresh conversation, own plan store + bounded file store), runs one subtask with the harness floor, and returns its final report. Governed (pre-admission, fail-closed), depth-bounded across the spawn thread, time-bounded with cleanup; 7 tests + preset pin. Closes the last parity gap vs LangChain deepagents.</li> <li>native tool-loop enforcement via Embabel 0.5.0 inspector/transformer API The stale comment claimed 0.3.5 lacked the seam; 0.5.0 ships withToolLoopInspectors/withToolLoopTransformers, so EmbabelToolLoopBridge strips tool calls on the transformer seam at the cap (the real stop) and mirrors ToolLoopGuard's breach on FAIL, honoring COMPLETE_WITHOUT_TOOLS natively; wire guard kept as backstop, native path only, 7 tests.</li> </ul> <h3>Fixed</h3> <ul> <li>env/sysprop LLM knobs win over RUNTIME.md pins A workspace RUNTIME.md model/mode/base-url/api-key pin was overriding an operator's explicit LLM_MODEL/LLM_MODE/... env (or system property), so pointing the personal-assistant sample at Ollama 404'd on the pinned gemini model; pins are now defaults an env override beats. Regression + env-lookup seam keep the test hermetic against ambient .envrc vars.</li> </ul> <h3>Changed</h3> <ul> <li>log drift — feature called 'documented' while published docs were stale Governance learning-signal PolicyDecision.Prefer shipped but atmosphere.github.io reference listed only Admit/Transform/Deny; caught on the completion-number question, external docs now published.</li> <li>surface the batteries-included deep-agent harness A plain <a href="https://github.com/Agent"><code>@Agent</code></a> is a deep agent out of the box (memory, write_todos plan, virtual filesystem, task sub-agent spawn) — add a Why-Atmosphere row and a dedicated subsection linking the harness docs and the LangChain deepagents comparison.</li> <li>note governance learning-signal loop in module README Points at governance-policy-plane.md + the spring-boot-ai-chat sample; adds the native prefer vocabulary + durable-recall flag.</li> <li>rewrite compliance matrix notes in plain operator language EU AI Act / HIPAA / SOC2 rows; class names and config move to the evidence disclosure</li> <li>deep-agent harness primitives on a <a href="https://github.com/Coordinator"><code>@Coordinator</code></a> Deterministic Playwright spec (demo mode, no live LLM) pinning that the personal-assistant coordinator registers the dynamic subagent-spawn task tool + delegate_task + the write_todos floor, and /api/console/info reports planning/filesystem/delegation ACTIVE — the wiring a real turn depends on, guarded in the always-on lane.</li> <li>rewrite OWASP matrix notes in plain operator language class names, config keys and roadmap labels move to the evidence disclosure</li> <li>bump version to 4.0.60</li> <li>prepare next development version 5.0.36</li> <li>prepare for next development iteration 4.0.61-SNAPSHOT</li> </ul> <h2>Atmosphere 4.0.60</h2> <h3>Added</h3> <ul> <li>native plan bridges persist to AgentPlanStore under the floor's key Embabel GOAP and Koog planner mirrors now also put() every plan under the same (agentId, conversationId) the write_todos floor uses, so the admin plan endpoint and Workspace stored view work for opted-in native surfaces; best-effort with WARN on store failure, pinned by persistence + failure-isolation tests in both bridges.</li> <li>koog native plan observation, embabel bounded file tools, plan-event correlation KoogPlanner dispatch branch + KoogPlanBridge mirror planner lifecycle into PlanUpdate (capability deliberately undeclared: koog plans exist only when the caller supplies a planner, so the write_todos floor must stay); AtmosphereFileTools implements Embabel's FileTools over the bounded conversation store (VIRTUAL_FILESYSTEM declared); PlanUpdate now carries conversationId/agentId at every emitter so the console Workspace tab correlates live plans to stored state one-click.</li> <li>planning + virtual-filesystem harness primitives; console broadcast fix write_todos and bounded ls/read/write/edit/glob/grep tools attach by default on every tool-calling runtime (Harness PLANNING/FILESYSTEM); AgentScope PlanNotebook, Embabel GOAP and Alibaba todos delegate via AiCapability.PLANNING while ADK artifacts and the Anthropic memory tool expose the store via VIRTUAL_FILESYSTEM; console gains a Workspace tab plus a broadcast-mode fix from a 29-sample browser sweep (outbound {author,message} envelope, event-less inbound frames render, cross-client Playwright regression); browser-proven with a real model.</li> <li>Harness feature set on @Agent/@Coordinator/<a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a> replaces the deep-agent boolean <a href="https://github.com/Agent"><code>@Agent</code></a> and <a href="https://github.com/Coordinator"><code>@Coordinator</code></a> are batteries-included by default (harness() = {ALL}; empty array opts down to a bare loop) while a bare <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a> opts in per endpoint; the app-wide atmosphere.ai.harness.enabled flag is tri-state with explicit false as a kill switch beating every annotation; user-facing config keys and the console runtime-truth block rename deep-agent to harness; HTTP + Playwright e2e pin default-on, opt-in and kill-switch on booted apps.</li> <li>deep-agent harness on <a href="https://github.com/Agent"><code>@Agent</code></a>(deepAgent) + wired <a href="https://github.com/SandboxTool"><code>@SandboxTool</code></a> <a href="https://github.com/Agent"><code>@Agent</code></a>(deepAgent=true) — or atmosphere.ai.deep-agent.enabled app-wide — attaches long-term memory, a prompt-cache default, selectable compaction and fleet delegation with per-primitive runtime-truth at /api/console/info; <a href="https://github.com/SandboxTool"><code>@SandboxTool</code></a> routes a tool method through a framework-owned Sandbox; fixed the built-in runtime model fallback so LTM fact extraction works (browser-proven cross-session recall); Spring/Quarkus/servlet parity; personal-assistant + coding-agent samples converted.</li> <li><a href="https://github.com/Command"><code>@Command</code></a> slash commands work on <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a>, not only <a href="https://github.com/Agent"><code>@Agent</code></a> New AiHandlerDecorator SPI lets atmosphere-agent wrap any <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a> that declares <a href="https://github.com/Command"><code>@Command</code></a> methods with the same command router the <a href="https://github.com/Agent"><code>@Agent</code></a> path uses; rag-chat console /sources is now an instant KB listing instead of falling through to the LLM.</li> <li>honor <a href="https://github.com/AgentScope"><code>@AgentScope</code></a> on <a href="https://github.com/Agent"><code>@Agent</code></a> classes and lint their scope posture</li> <li>client-reachable durable crash-resume via X-Atmosphere-Run-Id reconnect</li> <li>lead quarkus-ai-chat with <a href="https://github.com/Agent"><code>@Agent</code></a> instead of <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a></li> <li>lead spring-boot-ai-chat with <a href="https://github.com/Agent"><code>@Agent</code></a> instead of <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a></li> <li>lead spring-boot-channels-chat with <a href="https://github.com/Agent"><code>@Agent</code></a> instead of <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a></li> <li>add atmosphere-ai-spring-boot-starter for one-dependency <a href="https://github.com/Agent"><code>@Agent</code></a> apps</li> <li>durable agent runs with deterministic replay across runtimes</li> <li>auto-wire default CheckpointStore and ContextProvider beans in-memory defaults via <a href="https://github.com/ConditionalOnMissingBean"><code>@ConditionalOnMissingBean</code></a> with startup warnings; all six families now self-wire</li> <li>prove atmosphere-admin-bundle self-wires the six families</li> <li>add kotlin-dsl-chat proving the Kotlin DSL + coroutine extensions</li> <li>prove Spring AI setChatClient + defaultAdvisors + per-request advisors</li> <li>deliver audio input to the runtime via stream(message, parts) MultiModalChat forwards audio: prompts as Content.Audio input; delivery test asserts the runtime context carries the audio part</li> <li>add <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a>(broadcastReply) to fan one reply out to a room</li> <li>add passivation-agent sample proving pause/resume Snapshots a paused conversation to a CheckpointStore and resumes it from the restored history; PassivationDeliveryTest asserts the round-trip.</li> <li>gate a money-moving refund tool behind <a href="https://github.com/RequiresApproval"><code>@RequiresApproval</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Atmosphere/atmosphere/blob/main/CHANGELOG.md">org.atmosphere:atmosphere-runtime's changelog</a>.</em></p> <blockquote> <h2>[4.0.61] - 2026-07-07</h2> <h3>Added</h3> <ul> <li>governance as a learning signal — Prefer decision, feedback loop, durable recall PolicyDecision.Prefer soft-preference + native preference type + GovernanceFeedbackInterceptor (re-injects deny/prefer guidance into the turn) + opt-in durable provenance memory across Spring/Quarkus/bare-JVM; real-LLM sample (spring-boot-ai-chat) + Ollama e2e; console PREFER view; real-LLM CI consolidated on Ollama.</li> <li>tool-output disk offload + composite AgentFileSystem routing Large built-in tool results (>8000 chars, threshold-gated, sysprop/env overridable) spill to the agent workspace and the model gets a preview + read_file pointer — default-on at the tool choke point, fail-safe (never throws/loses data, honors workspace bounds). AgentFileSystemProvider composes a CompositeAgentFileSystem over the per-conversation workspace when durable prefix routes are configured (atmosphere.ai.filesystem.routes, off by default), routing the eight ops by longest-prefix with per-route bounds. Closes the two minor deepagents parity gaps. 3+15+2 tests.</li> <li>task tool — dynamic ephemeral subagent spawn (deepagents parity) The <a href="https://github.com/Coordinator"><code>@Coordinator</code></a> harness now registers a 'task' tool alongside delegate_task: it spawns a general-purpose subagent with an isolated context/workspace (fresh conversation, own plan store + bounded file store), runs one subtask with the harness floor, and returns its final report. Governed (pre-admission, fail-closed), depth-bounded across the spawn thread, time-bounded with cleanup; 7 tests + preset pin. Closes the last parity gap vs LangChain deepagents.</li> <li>native tool-loop enforcement via Embabel 0.5.0 inspector/transformer API The stale comment claimed 0.3.5 lacked the seam; 0.5.0 ships withToolLoopInspectors/withToolLoopTransformers, so EmbabelToolLoopBridge strips tool calls on the transformer seam at the cap (the real stop) and mirrors ToolLoopGuard's breach on FAIL, honoring COMPLETE_WITHOUT_TOOLS natively; wire guard kept as backstop, native path only, 7 tests.</li> </ul> <h3>Fixed</h3> <ul> <li>env/sysprop LLM knobs win over RUNTIME.md pins A workspace RUNTIME.md model/mode/base-url/api-key pin was overriding an operator's explicit LLM_MODEL/LLM_MODE/... env (or system property), so pointing the personal-assistant sample at Ollama 404'd on the pinned gemini model; pins are now defaults an env override beats. Regression + env-lookup seam keep the test hermetic against ambient .envrc vars.</li> </ul> <h3>Changed</h3> <ul> <li>log drift — feature called 'documented' while published docs were stale Governance learning-signal PolicyDecision.Prefer shipped but atmosphere.github.io reference listed only Admit/Transform/Deny; caught on the completion-number question, external docs now published.</li> <li>surface the batteries-included deep-agent harness A plain <a href="https://github.com/Agent"><code>@Agent</code></a> is a deep agent out of the box (memory, write_todos plan, virtual filesystem, task sub-agent spawn) — add a Why-Atmosphere row and a dedicated subsection linking the harness docs and the LangChain deepagents comparison.</li> <li>note governance learning-signal loop in module README Points at governance-policy-plane.md + the spring-boot-ai-chat sample; adds the native prefer vocabulary + durable-recall flag.</li> <li>rewrite compliance matrix notes in plain operator language EU AI Act / HIPAA / SOC2 rows; class names and config move to the evidence disclosure</li> <li>deep-agent harness primitives on a <a href="https://github.com/Coordinator"><code>@Coordinator</code></a> Deterministic Playwright spec (demo mode, no live LLM) pinning that the personal-assistant coordinator registers the dynamic subagent-spawn task tool + delegate_task + the write_todos floor, and /api/console/info reports planning/filesystem/delegation ACTIVE — the wiring a real turn depends on, guarded in the always-on lane.</li> <li>rewrite OWASP matrix notes in plain operator language class names, config keys and roadmap labels move to the evidence disclosure</li> <li>bump version to 4.0.60</li> <li>prepare next development version 5.0.36</li> <li>prepare for next development iteration 4.0.61-SNAPSHOT</li> </ul> <h2>[4.0.60] - 2026-07-06</h2> <h3>Added</h3> <ul> <li>native plan bridges persist to AgentPlanStore under the floor's key Embabel GOAP and Koog planner mirrors now also put() every plan under the same (agentId, conversationId) the write_todos floor uses, so the admin plan endpoint and Workspace stored view work for opted-in native surfaces; best-effort with WARN on store failure, pinned by persistence + failure-isolation tests in both bridges.</li> <li>koog native plan observation, embabel bounded file tools, plan-event correlation KoogPlanner dispatch branch + KoogPlanBridge mirror planner lifecycle into PlanUpdate (capability deliberately undeclared: koog plans exist only when the caller supplies a planner, so the write_todos floor must stay); AtmosphereFileTools implements Embabel's FileTools over the bounded conversation store (VIRTUAL_FILESYSTEM declared); PlanUpdate now carries conversationId/agentId at every emitter so the console Workspace tab correlates live plans to stored state one-click.</li> <li>planning + virtual-filesystem harness primitives; console broadcast fix write_todos and bounded ls/read/write/edit/glob/grep tools attach by default on every tool-calling runtime (Harness PLANNING/FILESYSTEM); AgentScope PlanNotebook, Embabel GOAP and Alibaba todos delegate via AiCapability.PLANNING while ADK artifacts and the Anthropic memory tool expose the store via VIRTUAL_FILESYSTEM; console gains a Workspace tab plus a broadcast-mode fix from a 29-sample browser sweep (outbound {author,message} envelope, event-less inbound frames render, cross-client Playwright regression); browser-proven with a real model.</li> <li>Harness feature set on @Agent/@Coordinator/<a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a> replaces the deep-agent boolean <a href="https://github.com/Agent"><code>@Agent</code></a> and <a href="https://github.com/Coordinator"><code>@Coordinator</code></a> are batteries-included by default (harness() = {ALL}; empty array opts down to a bare loop) while a bare <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a> opts in per endpoint; the app-wide atmosphere.ai.harness.enabled flag is tri-state with explicit false as a kill switch beating every annotation; user-facing config keys and the console runtime-truth block rename deep-agent to harness; HTTP + Playwright e2e pin default-on, opt-in and kill-switch on booted apps.</li> <li>deep-agent harness on <a href="https://github.com/Agent"><code>@Agent</code></a>(deepAgent) + wired <a href="https://github.com/SandboxTool"><code>@SandboxTool</code></a> <a href="https://github.com/Agent"><code>@Agent</code></a>(deepAgent=true) — or atmosphere.ai.deep-agent.enabled app-wide — attaches long-term memory, a prompt-cache default, selectable compaction and fleet delegation with per-primitive runtime-truth at /api/console/info; <a href="https://github.com/SandboxTool"><code>@SandboxTool</code></a> routes a tool method through a framework-owned Sandbox; fixed the built-in runtime model fallback so LTM fact extraction works (browser-proven cross-session recall); Spring/Quarkus/servlet parity; personal-assistant + coding-agent samples converted.</li> <li><a href="https://github.com/Command"><code>@Command</code></a> slash commands work on <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a>, not only <a href="https://github.com/Agent"><code>@Agent</code></a> New AiHandlerDecorator SPI lets atmosphere-agent wrap any <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a> that declares <a href="https://github.com/Command"><code>@Command</code></a> methods with the same command router the <a href="https://github.com/Agent"><code>@Agent</code></a> path uses; rag-chat console /sources is now an instant KB listing instead of falling through to the LLM.</li> <li>honor <a href="https://github.com/AgentScope"><code>@AgentScope</code></a> on <a href="https://github.com/Agent"><code>@Agent</code></a> classes and lint their scope posture</li> <li>client-reachable durable crash-resume via X-Atmosphere-Run-Id reconnect</li> <li>lead quarkus-ai-chat with <a href="https://github.com/Agent"><code>@Agent</code></a> instead of <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a></li> <li>lead spring-boot-ai-chat with <a href="https://github.com/Agent"><code>@Agent</code></a> instead of <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a></li> <li>lead spring-boot-channels-chat with <a href="https://github.com/Agent"><code>@Agent</code></a> instead of <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a></li> <li>add atmosphere-ai-spring-boot-starter for one-dependency <a href="https://github.com/Agent"><code>@Agent</code></a> apps</li> <li>durable agent runs with deterministic replay across runtimes</li> <li>auto-wire default CheckpointStore and ContextProvider beans in-memory defaults via <a href="https://github.com/ConditionalOnMissingBean"><code>@ConditionalOnMissingBean</code></a> with startup warnings; all six families now self-wire</li> <li>prove atmosphere-admin-bundle self-wires the six families</li> <li>add kotlin-dsl-chat proving the Kotlin DSL + coroutine extensions</li> <li>prove Spring AI setChatClient + defaultAdvisors + per-request advisors</li> <li>deliver audio input to the runtime via stream(message, parts) MultiModalChat forwards audio: prompts as Content.Audio input; delivery test asserts the runtime context carries the audio part</li> <li>add <a href="https://github.com/AiEndpoint"><code>@AiEndpoint</code></a>(broadcastReply) to fan one reply out to a room</li> <li>add passivation-agent sample proving pause/resume Snapshots a paused conversation to a CheckpointStore and resumes it from the restored history; PassivationDeliveryTest asserts the round-trip.</li> <li>gate a money-moving refund tool behind <a href="https://github.com/RequiresApproval"><code>@RequiresApproval</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/Atmosphere/atmosphere/commit/9401046bb5544aeb83fa589ab9ce5a80bb09af22"><code>9401046</code></a> release: Atmosphere 4.0.61</li> <li><a href="https://github.com/Atmosphere/atmosphere/commit/f03e7fe22cfad3b465e9b4e2949b42d0b08e8620"><code>f03e7fe</code></a> docs(harness): log drift — feature called 'documented' while published docs w...</li> <li><a href="https://github.com/Atmosphere/atmosphere/commit/ff67d376ea3a8b1ff86604f9ef0306fedd8fc08f"><code>ff67d37</code></a> docs(readme): surface the batteries-included deep-agent harness</li> <li><a href="https://github.com/Atmosphere/atmosphere/commit/dcf704d62919b5d5193b6d898ce9ef0dc539e04d"><code>dcf704d</code></a> docs(ai): note governance learning-signal loop in module README</li> <li><a href="https://github.com/Atmosphere/atmosphere/commit/5dadd8515f1190e27414012c7515cdf854f9689a"><code>5dadd85</code></a> docs(ai): rewrite compliance matrix notes in plain operator language</li> <li><a href="https://github.com/Atmosphere/atmosphere/commit/8399777dc03585286cce1b8f213febecad6168e4"><code>8399777</code></a> test(e2e): deep-agent harness primitives on a <a href="https://github.com/Coordinator"><code>@Coordinator</code></a></li> <li><a href="https://github.com/Atmosphere/atmosphere/commit/134d9cd6a9ab6959c06342cc4fe8448e5c93df08"><code>134d9cd</code></a> feat(ai): governance as a learning signal — Prefer decision, feedback loop, d...</li> <li><a href="https://github.com/Atmosphere/atmosphere/commit/ce015a394b6de66b6c3905c6669b2fe63c6c9b35"><code>ce015a3</code></a> feat(ai): tool-output disk offload + composite AgentFileSystem routing</li> <li><a href="https://github.com/Atmosphere/atmosphere/commit/94650ae02bd50475ff6e0bce096795c1071cd755"><code>94650ae</code></a> feat(coordinator): task tool — dynamic ephemeral subagent spawn (deepagents p...</li> <li><a href="https://github.com/Atmosphere/atmosphere/commit/1462909b872fb57303b3c3bb56789ca9f6689bb7"><code>1462909</code></a> docs(ai): rewrite OWASP matrix notes in plain operator language</li> <li>Additional commits viewable in <a href="https://github.com/Atmosphere/atmosphere/compare/atmosphere-project-3.1.0...atmosphere-4.0.61">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
