Atmosphere 4.0.62
·
308 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Added
- session-tape replay — reconstruct a run and a multi-agent coordination tree TapeReplay reconstruct/reconstructTree (no model) + parentRunId linkage (withParentRun→A2A metadata) + tool-agent dispatch tape; gated /api/admin/tape/runs/{id}/replay + Console Replay tab; fixes A2A metadata-inherit and Resilient/Intercepting proxy propagation; docs (tutorial 36 + reference/tape + READMEs)
- Tape tab — browse recorded session tapes in the Atmosphere Console Adds gated /api/admin/tape read endpoints (runs + steps, content-read-auth per Inv#6) + hasTape runtime-truth flag + a Vue Tape tab (runs list + step detail) in the spring-boot-starter console
- tape → training data — self-contained tape + TapeTrainingExtractor Record the input prompt as a tape step on both dispatch paths so the tape is a (prompt→completion) record; TapeTrainingExtractor folds runs to chat-JSONL, TapeDatasetCli emits it; spring-boot-ai-chat demos the durable tape
- session tape — durable typed AiEvent stream, resume, admin read Records the AiEndpointHandler + AiPipeline session seams to SQLite/in-memory TapeStore; late-bound runId, crash-resume segments, atmosphere_read_tape gated REQUIRE_PRINCIPAL; opt-in (atmosphere.ai.tape.enabled) across both Spring starters + Quarkus
- opt-in security-headers filter for app routes; mcp-server consumes it
- in-process sandboxed eval tool (Rhino) — deepagents eval parity Container-free 'eval' JS tool: sandboxed Rhino scope (deny-all ClassShutter, no java/Packages bridge, interpreted-mode instruction + wall-clock budget, fresh scope per call), default-off and runtime-truth gated via an optional dependency, registered at the shared agent/endpoint tool site. Closes the last deepagents capability gap; 14 tests pin the sandbox.
- add delete + rename file tools — deepagents file-tool parity The built-in filesystem floor grows from six to eight tools: delete (ToolKind.DELETE, approval-gateable) and rename, both bounds/traversal-guarded over the conversation-scoped AgentFileSystem, closing the delete gap vs LangChain deepagents. Updates every count/phrasing across code, tests, READMEs (six→eight), and the e2e tool-count pins (dentist + orchestration now log tools: 11 = 2 user + 9 harness) — both verified empirically from a booted sample.
- wire governance decision log to Postgres/Kafka audit sinks Config-gated auto-config installs JdbcAuditSink/KafkaAuditSink so admit+deny persist
- thread inbound image input onto the model request (vision)
- discover Cedar/Rego PolicyParser SPIs on the governance reload path
- wire configurable backpressure drop-policy into the broadcaster write path
- install path for the 5 missing governance admission stages PERMISSIONS.md now wires all 7 stages (rate-limit, concurrency, message-length, time-window, kill-switch)
- one-dependency streaming @agent chat sample proving the blog claim Add spring-boot-one-dep-agent; make atmosphere-ai-spring-boot-starter pull the web server non-optionally so one dependency boots a running streaming chat app.
- add Checkpoints tab to admin Console over durable-run store
Fixed
- isolate optional tape types from always-active admin/console signatures Direct atmosphere-ai tape refs were force-loaded by Spring getDeclaredMethods, crashing non-AI samples at startup; reads move to TapeAdminSupport + reflective hasTape probe
- protect WEB-INF/META-INF in embedded-jetty chat sample
- honor SERVER_PORT env in kotlin-dsl-chat + embedded-jetty-websocket-chat
- nonce-based strict CSP for the console + harden mcp-server root SPA
- harden CORS credentials, console headers, A2A JSON charset, error disclosure
- map spring-boot-one-dep-agent into the release-gate smoke shard Unmapped sample tripped the no-silent-caps gate; smoke tier (boot jar + GET /atmosphere/console/ == 200) verified locally
- keep ai-chat content-read secure by default; opt out only in the real-LLM demo run
- ms-governance-chat opts out content-read-auth so its Decisions tab renders token-less
- reject SSRF to internal targets in push-notification webhooks Deny loopback/private/link-local/metadata by default (delivery-time re-check for DNS rebinding); opt in via org.atmosphere.a2a.pushAllowPrivateTargets on trusted networks
- ai-chat opts out content-read-auth so the console Decisions tab renders token-less
- auth the governance/decisions poll (read-plane fail-close regression)
- bump rhino 1.7.15 to 1.7.15.1 (CVE-2025-66453)
- pin logback 1.5.37 in sample poms (CVE-2026-10532) samples re-import the Spring Boot BOM (logback 1.5.34); a direct version pin forces the patched line
- bump logback 1.5.33 to 1.5.37 (CVE-2026-10532 object injection)
- patch DoS vulns in test deps + pin org.json (Dependabot) ws 8.19→8.21 (CVE-2026-48779), @grpc/grpc-js 1.14.3→1.14.4 (GHSA-5375-pq7m-f5r2), org.json pinned 20250517
- add justified unrestricted @AgentScope to one-dep ChatAgent
- require auth for recorded-content admin reads by default governance/decisions, audit, journal expose prompt/response + coordination content — default-deny, Spring+Quarkus parity, opt-out content-read-auth-required
- sync capability skillcards + README to the 22-capability set
Changed
- make compose-with-native-frameworks layering explicit across READMEs
- tempest campaign coverage overstated — ~8/32 genuinely tested, not 21
- document the unauthenticated channel posture and production hardening
- log drift — swept setup-java hardening on a stale local tree Enumerated verify-signature targets before rebasing onto origin/main; gate is fetch+rebase then re-enumerate before any push-bound sweep.
- GPG-verify Temurin JDK archives across all setup-java steps Fan out the dependency-submission verify-signature pilot; Oracle JDK 26 matrix leg gated off, graalvm skipped (both unsupported).
- run the coverage-map gate on push/PR, not just nightly A new samples/ dir missing its release-gate map entry now fails the introducing PR (build-free --list check) instead of the next nightly run
- bump the maven group across 26 directories with 1 update (#2712)
- bump testcontainers.version from 1.20.6 to 1.21.4 (#2702)
- bump quarkus-langchain4j.version from 1.9.2 to 1.11.2 (#2704)
- bump tools.jackson.core:jackson-databind (#2703)
- bump the sample-frontend group across 15 directories with 2 updates (#2707)
- bump actions/github-script from 7 to 9 (#2706)
- bump codecov/codecov-action from 6 to 7 (#2705)
- pilot verify-signature on the dependency-submission lane
- shared sample config change to fix one e2e broke another on the same fixture
- admin read-plane fix verified via edited specs, not the console consumer it broke
- lead with streaming again — demote deep-agent row, tighten hero Deep-agent Why row moves below streaming/adapters; LangChain deepagents comparison stays only in the harness subsection.
- same-session recurrence — read -q dependency:tree empty result as dependency absent
- make the eval interpreter pluggable via the EvalEngine SPI Extracts a ServiceLoader EvalEngine SPI (highest-priority-available wins, like AgentRuntime); Rhino/JavaScript ships as the default at priority 0, alternatives plug in by adding a jar. Rhino internals move to RhinoScriptSandbox so the adapter signature stays optional-dep-clean. 5 tests pin priority-override + availability-gating.
- wrong 'qwen too weak' call from 0 findings without checking the LLM was reached
- click-through demos for tool-output offload + composite FS routing personal-assistant README now has reproducible offload (LLM_TOOL_OUTPUT_OFFLOAD_THRESHOLD=200 → read_file result offloads to tool-output/) and composite-routing (LLM_FILESYSTEM_ROUTES=memory/=dir → prefix lands in durable backend, rest stays per-conversation) walkthroughs — both browser+disk-proven on Ollama, matching what a user will see in the Workspace tab.
- showcase the task tool, offload, and composite FS routing personal-assistant README documents the dynamic subagent-spawn task tool (the @coordinator harness registers it alongside delegate_task) with a copy-paste Ollama flow — browser-proven end to end; coding-agent README adds tool-output disk offload (default-on) and composite filesystem routing (atmosphere.ai.filesystem.routes) so users can run the newest deep-agent features, not just read about them.
- allowlist java.sql.DriverManager Javadoc ref in the audit DataSource
- drop redundant MULTI_AGENT_HANDOFF, wire Koog MODEL_ENUMERATION
- restore broadcaster tagline, surface deep-agent harness + MCP/A2A/AG-UI
- false 'pinned version' fact in Embabel comment shipped in 4.0.60/4.0.61
- bump version to 4.0.61
- prepare next development version 5.0.37
- prepare for next development iteration 4.0.62-SNAPSHOT