dependabot[bot] opened a new pull request, #3414:
URL: https://github.com/apache/cxf/pull/3414

   Bumps 
[org.atmosphere:atmosphere-runtime](https://github.com/Atmosphere/atmosphere) 
from 3.1.0 to 4.0.68.
   <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.68</h2>
   <h3>Added</h3>
   <ul>
   <li>scope workspace RUNTIME.md settings to their agent via 
AiConfig.configureForAgent First workspace seeds the process default, later 
ones stay agent-scoped; the built-in runtime serves scoped agents from their 
own client (registre#39)</li>
   <li>ship the voice-mode endpoint driving the speech-to-speech loop 
VoiceEndpointHandler resolves RealtimeVoiceProvider per connect; mounted behind 
atmosphere.ai.voice.enabled on Spring and Quarkus (registre#25)</li>
   <li>per-user MCP credentials via McpTrustProvider, facade on the selection 
path connectForUser sends the resolved Bearer credential and fails closed 
unauthorized; ToolSelection composes ToolExtensibilityPoint per request 
(registre#24)</li>
   <li>arm durable approval-expiry timers for journaled approvals 
DurableApprovalExpiry is DurableTimerService's production consumer, wired by 
both durable-run installers; markFailed never demotes COMMITTED 
(registre#26)</li>
   <li>implement expose, snapshot and hibernate on both shipped backends Docker 
uses pause/commit/port-publishing recreation, in-process copies its workdir 
(registre#5); README stops naming non-existent backend modules</li>
   <li>execute saved workflow manifests through AgentFleet with run/approval 
endpoints WorkflowRunner dispatches 
agent/condition/fan-out/join/approval/output nodes (registre#1); Quarkus gains 
the workflow surface and live coordinator wiring</li>
   <li>read WEBTRANSPORT_PROTOCOL knob to install custom WebTransport protocols 
Custom protocol owns message/lifecycle callbacks (registre#28); tool/voice SPI 
docs made truthful (registre#24, registre#25); exec-maven-plugin version 
pinned</li>
   <li>expose fleet health, make VerifyCli launchable, honest fan-out contract 
GET /coordinators/{name}/health reads AgentFleet.health(); exec mainClass 
pinned for the verifier CLI; FanOutStreamingSession documented app-constructed 
(registre#43)</li>
   <li>surface priced call cost as business.session.cost response metadata 
CostAccountant gains priceUsd; the accounting session emits the real figure and 
BusinessMetadata docs now state who writes what (registre#42)</li>
   <li>emit MESSAGES_SNAPSHOT at run start and document the produced event set 
23 of 27 AG-UI types now have producers; the chunked/raw alternates are 
documented parse-only by design (registre#29)</li>
   <li>stream reasoning and citations as first-class AiEvents Anthropic 
thinking blocks and Cohere citations now produce 
ReasoningDelta/ReasoningComplete/Citation, mapped to AG-UI's REASONING_* and 
CUSTOM (registre#16)</li>
   <li>wire the agent-state control plane to both admin transports 
StateController serves the live per-agent AgentState registry with guarded 
mutations; the vacuous [200,404] e2e now discriminates (registre#21)</li>
   <li>register live protocol bridges and list them on the admin plane 
Processors install Mcp/A2a/AgUi/InMemory bridges via 
ProtocolBridgeRegistry.install; GET /api/admin/protocols reports runtime truth 
and the false SPI comments are corrected (registre#22)</li>
   <li>render the coordination causal tree from the journaled lineage GET 
/journal/{id}/tree reads CoordinationProjection on both admin transports, 
giving the envelope lineage its production consumer (registre#23)</li>
   <li>route shared-channel free text by address, default agent, or sole 
binding <code>@​name/name</code>: addressing beats registration order; 
atmosphere.channels.default-agent catches the rest; ambiguity now warns 
(registre#34)</li>
   </ul>
   <h3>Fixed</h3>
   <ul>
   <li>run --env sets real child environment variables that beat ambient 
exports -D-only mapping let an inherited LLM_BASE_URL silently redirect a local 
run to a remote provider; e2e regression added, sweep matrix model guidance 
corrected</li>
   <li>voice config strings are Optional, SmallRye rejects empty-string 
defaults</li>
   <li>propagate response metadata to the task and retire the mispointed marker 
sendMetadata lands on TaskContext (Task/TaskStatusUpdateEvent carry it); 
DurableTimerService docs now register the unwired-consumer limitation 
(registre#26)</li>
   <li>surface encoder/decoder registration conflicts and decode failures 
Last-wins codec conflicts and the first throwing Decoder now WARN instead of 
passing silently at trace (registre#40)</li>
   <li>warn once when durable run state degrades to in-memory The first 
RunJournal failure is an operator-visible WARN instead of TRACE; repeats stay 
quiet off the hot path (registre#32)</li>
   <li>journal denied dispatches by wrapping governance inside journaling 
journal(intercepting(base)) is now the default composition, upholding 
Decision.Deny's documented audit guarantee (registre#8)</li>
   <li>count tool-call payloads, honor maxMessages and reserve headroom in 
TokenWindowStrategy Tool arguments now consume the token estimate, maxMessages 
caps the selection, and forModel budgets 75 percent of the window 
(registre#33)</li>
   <li>warn loudly when a second workspace clobbers the process-wide AiConfig 
RUNTIME.md application stays last-write-wins but now registers the limitation 
and names both workspaces on the WARN (registre#39)</li>
   <li>honor the configured session TTL in the Redis store removeExpired(ttl) 
now expires on lastSeen against the passed ttl like the sibling stores, instead 
of discarding it (registre#11)</li>
   <li>protect each coordination's resume anchor from global eviction Oldest 
non-anchor snapshots evict first in all three stores; anchors go only when the 
cap is below the live-coordination count, with a WARN (registre#36)</li>
   <li>honor configured pool bounds in virtual-thread mode An explicit 
maxProcessingThreads/maxAsyncWriteThreads now bounds a virtual-thread pool 
instead of being silently ignored (registre#7)</li>
   <li>signal structured-output parse failure via metadata breadcrumb An 
AiEvent.Error hard-failed minimal sessions through the default emit mapping; 
ai.structured.parse_failed keeps terminal semantics (registre#30)</li>
   <li>frame binary payloads instead of corrupting them as text Binary rides a 
0x00 length-prefixed frame on server and JS client; text keeps newline framing; 
console bundles re-synced (registre#15)</li>
   <li>thread client history to the OpenAI-compatible endpoint without memory 
Prior turns and client system messages ride REQUEST_HISTORY_METADATA_KEY so 
standard SDK clients no longer lose their context (registre#6)</li>
   <li>surface structured-output parse failures as a recoverable Error event A 
parse failure on complete() was swallowed at DEBUG, leaving a clean terminal 
frame indistinguishable from an empty answer (registre#30)</li>
   <li>drop tool string arguments truncated mid-value instead of delivering 
them An unterminated string in cut-off model JSON now fails required-arg 
validation rather than silently shortening the value (registre#37)</li>
   <li>deliver content and metadata on the live AG-UI session sendContent now 
uses the default text/breadcrumb routing and sendMetadata rides the CUSTOM 
event instead of vanishing (registre#13)</li>
   <li>honor the fluent contract on DefaultBroadcasterCache listener 
registration Returning null NPE'd the BroadcasterConfig loop; registration now 
warns that the no-op cache fires no events (registre#14)</li>
   <li>implement WebSocket ping/pong and close(code, reason) JSR356 binding 
transmits control frames and coded closes; the base close(code, reason) now 
closes instead of silently no-oping (registre#10)</li>
   <li>decode the stream transport incrementally to keep split UTF-8 intact 
Per-chunk new String() corrupted multi-byte characters at buffer boundaries 
(registre#38)</li>
   <li>stop registering webhook routes for Gateway-only channels DiscordChannel 
returns a null webhookPath (no unauthenticated dead route) and its webhook SPI 
methods fail closed (registre#44)</li>
   <li>enforce the documented same-origin policy on WebSocket handshakes 
WEBSOCKET_REQUIRE_SAME_ORIGIN is now read (default true); cross-origin browser 
handshakes are refused unless explicitly disabled (registre#18)</li>
   <li>enforce the isolation-tier floor on the production resolve path <a 
href="https://github.com/SandboxTool";><code>@​SandboxTool</code></a> gains 
minTier; named backends below the floor are refused and empty backend selects 
by tier via Sandboxes (registre#20)</li>
   <li>tighten and verify seal key permissions for pre-existing key files 
loadKey now restores owner-only permissions and fails loud when the key stays 
accessible beyond its owner (registre#17)</li>
   <li>verify A2A agent-card signatures on the consuming side isAvailable now 
enforces self-integrity on signed cards and supports a pinned peer key that 
fails closed (registre#19)</li>
   <li>carry caller identity into POST_RESPONSE policy evaluation 
inspectResponse gains an identity-aware overload wired through 
DispatchDecorators, so output authorization keeps its subject (registre#9)</li>
   <li>honor user/agent scoping in agent-state rules and workspace root 
getRules reads users/{userId}/USER.md and agents/{agentId} overrides; 
workspaceRoot returns the per-agent subtree (registre#12)</li>
   <li>apply PolicyDecision.Transform to the dispatched fleet args Transform 
now re-evaluates per String arg so redaction lands on the real payload; 
unapplied transforms report Proceed, not a false rewrite (registre#4)</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.68] - 2026-08-23</h2>
   <h3>Added</h3>
   <ul>
   <li>scope workspace RUNTIME.md settings to their agent via 
AiConfig.configureForAgent First workspace seeds the process default, later 
ones stay agent-scoped; the built-in runtime serves scoped agents from their 
own client (registre#39)</li>
   <li>ship the voice-mode endpoint driving the speech-to-speech loop 
VoiceEndpointHandler resolves RealtimeVoiceProvider per connect; mounted behind 
atmosphere.ai.voice.enabled on Spring and Quarkus (registre#25)</li>
   <li>per-user MCP credentials via McpTrustProvider, facade on the selection 
path connectForUser sends the resolved Bearer credential and fails closed 
unauthorized; ToolSelection composes ToolExtensibilityPoint per request 
(registre#24)</li>
   <li>arm durable approval-expiry timers for journaled approvals 
DurableApprovalExpiry is DurableTimerService's production consumer, wired by 
both durable-run installers; markFailed never demotes COMMITTED 
(registre#26)</li>
   <li>implement expose, snapshot and hibernate on both shipped backends Docker 
uses pause/commit/port-publishing recreation, in-process copies its workdir 
(registre#5); README stops naming non-existent backend modules</li>
   <li>execute saved workflow manifests through AgentFleet with run/approval 
endpoints WorkflowRunner dispatches 
agent/condition/fan-out/join/approval/output nodes (registre#1); Quarkus gains 
the workflow surface and live coordinator wiring</li>
   <li>read WEBTRANSPORT_PROTOCOL knob to install custom WebTransport protocols 
Custom protocol owns message/lifecycle callbacks (registre#28); tool/voice SPI 
docs made truthful (registre#24, registre#25); exec-maven-plugin version 
pinned</li>
   <li>expose fleet health, make VerifyCli launchable, honest fan-out contract 
GET /coordinators/{name}/health reads AgentFleet.health(); exec mainClass 
pinned for the verifier CLI; FanOutStreamingSession documented app-constructed 
(registre#43)</li>
   <li>surface priced call cost as business.session.cost response metadata 
CostAccountant gains priceUsd; the accounting session emits the real figure and 
BusinessMetadata docs now state who writes what (registre#42)</li>
   <li>emit MESSAGES_SNAPSHOT at run start and document the produced event set 
23 of 27 AG-UI types now have producers; the chunked/raw alternates are 
documented parse-only by design (registre#29)</li>
   <li>stream reasoning and citations as first-class AiEvents Anthropic 
thinking blocks and Cohere citations now produce 
ReasoningDelta/ReasoningComplete/Citation, mapped to AG-UI's REASONING_* and 
CUSTOM (registre#16)</li>
   <li>wire the agent-state control plane to both admin transports 
StateController serves the live per-agent AgentState registry with guarded 
mutations; the vacuous [200,404] e2e now discriminates (registre#21)</li>
   <li>register live protocol bridges and list them on the admin plane 
Processors install Mcp/A2a/AgUi/InMemory bridges via 
ProtocolBridgeRegistry.install; GET /api/admin/protocols reports runtime truth 
and the false SPI comments are corrected (registre#22)</li>
   <li>render the coordination causal tree from the journaled lineage GET 
/journal/{id}/tree reads CoordinationProjection on both admin transports, 
giving the envelope lineage its production consumer (registre#23)</li>
   <li>route shared-channel free text by address, default agent, or sole 
binding <code>@​name/name</code>: addressing beats registration order; 
atmosphere.channels.default-agent catches the rest; ambiguity now warns 
(registre#34)</li>
   </ul>
   <h3>Fixed</h3>
   <ul>
   <li>run --env sets real child environment variables that beat ambient 
exports -D-only mapping let an inherited LLM_BASE_URL silently redirect a local 
run to a remote provider; e2e regression added, sweep matrix model guidance 
corrected</li>
   <li>voice config strings are Optional, SmallRye rejects empty-string 
defaults</li>
   <li>propagate response metadata to the task and retire the mispointed marker 
sendMetadata lands on TaskContext (Task/TaskStatusUpdateEvent carry it); 
DurableTimerService docs now register the unwired-consumer limitation 
(registre#26)</li>
   <li>surface encoder/decoder registration conflicts and decode failures 
Last-wins codec conflicts and the first throwing Decoder now WARN instead of 
passing silently at trace (registre#40)</li>
   <li>warn once when durable run state degrades to in-memory The first 
RunJournal failure is an operator-visible WARN instead of TRACE; repeats stay 
quiet off the hot path (registre#32)</li>
   <li>journal denied dispatches by wrapping governance inside journaling 
journal(intercepting(base)) is now the default composition, upholding 
Decision.Deny's documented audit guarantee (registre#8)</li>
   <li>count tool-call payloads, honor maxMessages and reserve headroom in 
TokenWindowStrategy Tool arguments now consume the token estimate, maxMessages 
caps the selection, and forModel budgets 75 percent of the window 
(registre#33)</li>
   <li>warn loudly when a second workspace clobbers the process-wide AiConfig 
RUNTIME.md application stays last-write-wins but now registers the limitation 
and names both workspaces on the WARN (registre#39)</li>
   <li>honor the configured session TTL in the Redis store removeExpired(ttl) 
now expires on lastSeen against the passed ttl like the sibling stores, instead 
of discarding it (registre#11)</li>
   <li>protect each coordination's resume anchor from global eviction Oldest 
non-anchor snapshots evict first in all three stores; anchors go only when the 
cap is below the live-coordination count, with a WARN (registre#36)</li>
   <li>honor configured pool bounds in virtual-thread mode An explicit 
maxProcessingThreads/maxAsyncWriteThreads now bounds a virtual-thread pool 
instead of being silently ignored (registre#7)</li>
   <li>signal structured-output parse failure via metadata breadcrumb An 
AiEvent.Error hard-failed minimal sessions through the default emit mapping; 
ai.structured.parse_failed keeps terminal semantics (registre#30)</li>
   <li>frame binary payloads instead of corrupting them as text Binary rides a 
0x00 length-prefixed frame on server and JS client; text keeps newline framing; 
console bundles re-synced (registre#15)</li>
   <li>thread client history to the OpenAI-compatible endpoint without memory 
Prior turns and client system messages ride REQUEST_HISTORY_METADATA_KEY so 
standard SDK clients no longer lose their context (registre#6)</li>
   <li>surface structured-output parse failures as a recoverable Error event A 
parse failure on complete() was swallowed at DEBUG, leaving a clean terminal 
frame indistinguishable from an empty answer (registre#30)</li>
   <li>drop tool string arguments truncated mid-value instead of delivering 
them An unterminated string in cut-off model JSON now fails required-arg 
validation rather than silently shortening the value (registre#37)</li>
   <li>deliver content and metadata on the live AG-UI session sendContent now 
uses the default text/breadcrumb routing and sendMetadata rides the CUSTOM 
event instead of vanishing (registre#13)</li>
   <li>honor the fluent contract on DefaultBroadcasterCache listener 
registration Returning null NPE'd the BroadcasterConfig loop; registration now 
warns that the no-op cache fires no events (registre#14)</li>
   <li>implement WebSocket ping/pong and close(code, reason) JSR356 binding 
transmits control frames and coded closes; the base close(code, reason) now 
closes instead of silently no-oping (registre#10)</li>
   <li>decode the stream transport incrementally to keep split UTF-8 intact 
Per-chunk new String() corrupted multi-byte characters at buffer boundaries 
(registre#38)</li>
   <li>stop registering webhook routes for Gateway-only channels DiscordChannel 
returns a null webhookPath (no unauthenticated dead route) and its webhook SPI 
methods fail closed (registre#44)</li>
   <li>enforce the documented same-origin policy on WebSocket handshakes 
WEBSOCKET_REQUIRE_SAME_ORIGIN is now read (default true); cross-origin browser 
handshakes are refused unless explicitly disabled (registre#18)</li>
   <li>enforce the isolation-tier floor on the production resolve path <a 
href="https://github.com/SandboxTool";><code>@​SandboxTool</code></a> gains 
minTier; named backends below the floor are refused and empty backend selects 
by tier via Sandboxes (registre#20)</li>
   <li>tighten and verify seal key permissions for pre-existing key files 
loadKey now restores owner-only permissions and fails loud when the key stays 
accessible beyond its owner (registre#17)</li>
   <li>verify A2A agent-card signatures on the consuming side isAvailable now 
enforces self-integrity on signed cards and supports a pinned peer key that 
fails closed (registre#19)</li>
   <li>carry caller identity into POST_RESPONSE policy evaluation 
inspectResponse gains an identity-aware overload wired through 
DispatchDecorators, so output authorization keeps its subject (registre#9)</li>
   <li>honor user/agent scoping in agent-state rules and workspace root 
getRules reads users/{userId}/USER.md and agents/{agentId} overrides; 
workspaceRoot returns the per-agent subtree (registre#12)</li>
   <li>apply PolicyDecision.Transform to the dispatched fleet args Transform 
now re-evaluates per String arg so redaction lands on the real payload; 
unapplied transforms report Proceed, not a false rewrite (registre#4)</li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/32b9d275dbe034eeadeadd1726ca0a2fdf067463";><code>32b9d27</code></a>
 release: Atmosphere 4.0.68</li>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/33ca6e13c608456d477a80c559bf463ee874e774";><code>33ca6e1</code></a>
 fix(cli): run --env sets real child environment variables that beat ambient 
e...</li>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/5c0352a39fe1e269f0d4f6ed470ca8158ca2940a";><code>5c0352a</code></a>
 fix(quarkus): voice config strings are Optional, SmallRye rejects 
empty-strin...</li>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/bbb1fbc2cb38c021185abf66b581138fcae8c1d9";><code>bbb1fbc</code></a>
 docs(spring-boot): reattach the durable-run spine javadoc</li>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/daee88ab0afadd5200a04baa4b91edd914976dce";><code>daee88a</code></a>
 test(ai): model the crash window without demoting committed effects</li>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/c5abc0d9811fab837f1f39e329ae68d9a130cbfd";><code>c5abc0d</code></a>
 feat(ai): scope workspace RUNTIME.md settings to their agent via 
AiConfig.con...</li>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/38a1b9b94636c1dc81695e1cdc7fda6d13462645";><code>38a1b9b</code></a>
 feat(ai): ship the voice-mode endpoint driving the speech-to-speech loop</li>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/dffa8990d6dfb8e99ac1b5b2be3413ab33776a5f";><code>dffa899</code></a>
 feat(mcp-client): per-user MCP credentials via McpTrustProvider, facade on 
th...</li>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/6665c52e5dd4eafd9a6745b9c238341f93ffc7eb";><code>6665c52</code></a>
 feat(checkpoint): arm durable approval-expiry timers for journaled 
approvals</li>
   <li><a 
href="https://github.com/Atmosphere/atmosphere/commit/65bdcaa7a779b933bddc6c1e95d3542b8766b1ac";><code>65bdcaa</code></a>
 docs(spring-boot): reattach the workflow bean javadoc</li>
   <li>Additional commits viewable in <a 
href="https://github.com/Atmosphere/atmosphere/compare/atmosphere-project-3.1.0...atmosphere-4.0.68";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   
   [![Dependabot compatibility 
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.atmosphere:atmosphere-runtime&package-manager=maven&previous-version=3.1.0&new-version=4.0.68)](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]

Reply via email to