Repository navigation
Conversation
The Spring Boot and LangChain4j pages described crash recovery, replay of in-flight calls and graceful degradation. None of that happened: the 0.1.0 clients called /api/v1 routes the runtime never served, so nothing was recorded. jamjet-spring 0.2.0 and jamjet-sdk 0.5.1 call the real routes, fail closed by default and bind approvals to the reviewed request. The pages now say what is recorded and where, what fails closed, how a reviewer approves (authenticated, ROLE_JAMJET_APPROVER, content digest, initiator cannot approve), and that the runtime does not re-run Spring AI or LangChain4j calls. The Java SDK page gains the jamjet-sdk REST client and stops calling that artifact frozen. The JVM-native page names the real starter artifact (jamjet-runtime-spring-boot-starter 0.4.0) and stops implying checkpoints survive a restart on their own.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🟡 Changes recommended
Several behavior descriptions remain inaccurate, and the documented releases are still blocked by open upstream pull requests.
3 open findings
What changed in this PR
Rewrites JVM integration documentation to match the corrected clients and distinguish self-hosted runtime integrations from Cloud adapters.
Changes:
- Updates Spring Boot and LangChain4j behavior, configuration, approvals, and testing.
- Documents Java REST client and JVM-native runtime artifacts.
- Corrects integration card descriptions.
| File | Description |
|---|---|
open-source/jvm-native-runtime.mdx |
Corrects artifacts, versions, and checkpoint behavior. |
open-source/java-runtime.mdx |
Adds REST client and Spring starter guidance. |
integrations/spring-boot.mdx |
Rewrites Spring AI recording and approval documentation. |
integrations/langchain4j.mdx |
Rewrites AI service and chat-memory documentation. |
integrations/index.mdx |
Updates JVM integration cards. |
cloud/integrations.mdx |
Clarifies which integrations are self-hosted. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| | After your service threw | Your service's exception, with a `JamjetRecordingException` attached as suppressed. | | ||
|
|
||
| LangChain4j stores conversation history through the `ChatMemoryStore` interface. The default implementation is in-memory — if the process restarts, all conversation history is lost. | ||
| With `.onRuntimeError(RuntimeErrorMode.FAIL_OPEN)` each of these logs a warning and the call goes on. |
| ``` | ||
|
|
||
| And the corresponding response event: | ||
| An allowed stream records the whole streamed text as `spring_ai.response` and an outcome of `completed`, `failed` or `cancelled`. A stream's record can only be written after its output was delivered, so a fail-closed record failure on a stream arrives as an error at the end of the stream, after the chunks. |
| "completion_tokens": 1203, | ||
| "total_tokens": 2050 | ||
| } | ||
| ## Human approval |
The rows that cited open PRs and the approval-deadlines branch were written before that work merged. jamjet #140 to #146, jamjet-policy #12 and #14, agentboundary #5, engram #11 and jamjet-guardrails #44 are now on main but not published, so those rows stay unreleased and their links point at main and the merged PR numbers. Reading main also showed two released rows were wrong. In crates 0.5.0 the Agent Card's iteration and tool-call limits are compared with counters nothing increments and the circuit breaker never trips, so the ceilings and breaker rows now cite #146 as unreleased and the 0.5.0 row covers only the workflow token and cost budget, as Partial. New rows cover what main now enforces: Agent Card tool lists and allowed_delegations at the shared guard (#145), autonomy limits (#146), Ed25519 audit signing (#145), Cedar at ext-authz (jamjet-policy #14) and Engram revocation (engram #11). The status counts are recounted from the rows.
* Add a control map for OWASP ASI, FINOS AIGF and NIST CAISI Maps each JamJet open-source control to the OWASP Top 10 for Agentic Applications 2026, the FINOS AIGF agentic catalogue (with mi-24 item by item) and the NCCoE agent identity and authorization themes. Every row names the component, the version or PR, and a status. Gaps are listed as Not covered. * Recheck the control map against what merged on main The rows that cited open PRs and the approval-deadlines branch were written before that work merged. jamjet #140 to #146, jamjet-policy #12 and #14, agentboundary #5, engram #11 and jamjet-guardrails #44 are now on main but not published, so those rows stay unreleased and their links point at main and the merged PR numbers. Reading main also showed two released rows were wrong. In crates 0.5.0 the Agent Card's iteration and tool-call limits are compared with counters nothing increments and the circuit breaker never trips, so the ceilings and breaker rows now cite #146 as unreleased and the 0.5.0 row covers only the workflow token and cost budget, as Partial. New rows cover what main now enforces: Agent Card tool lists and allowed_delegations at the shared guard (#145), autonomy limits (#146), Ed25519 audit signing (#145), Cedar at ext-authz (jamjet-policy #14) and Engram revocation (engram #11). The status counts are recounted from the rows.

Rewrites the JVM integration pages to match the fixed clients. Do not merge until the releases below are on Maven Central. The pages describe the released state.
Merge prerequisites
dev.jamjet:jamjet-sdk:0.5.1on Maven Central (today Central has up to 0.5.0)dev.jamjet:jamjet-spring-boot-starter:0.2.0,jamjet-spring-boot-starter-test:0.2.0andlangchain4j-jamjet:0.2.0on Maven Central (today Central has only 0.1.0 of each)Already on Central and used as is:
jamjet-agent0.4.0,jamjet-agent-spring-boot-starter0.4.0,jamjet-runtime-spring-boot-starter/-core/-instrument0.4.0.What changed
spring_ai.*external events on a one-nodewaitworkflow), fail-closed by default withfail-openandallow-streamingopt-ins, the approval flow (authenticated reviewer,ROLE_JAMJET_APPROVER,content_digestecho, initiator cannot approve, recorded and void decision events), runtime-held approvals decided with the reviewer's own token viajamjet approve ... --action-digest, and the full property table. Removeswebhook-url(unused) andtenant-id(ignored). Says the Micrometer and OTel bridges are not called by the advisors in 0.2.0.langchain4j-jamjet:0.2.0on its own (no starter peer dependency),JamjetConfig, recorded AI services, chat memory with a required namespace, its limits (namespace is not access control, first-access scan, one writer per id), fail-closed behaviour.jamjet-sdkREST client section (0.5.1, bare routes, approvals withaction_digest), drops the "jamjet-sdk is frozen" callout, documentsjamjet-agent-spring-boot-starter'sjamjet.agent.*properties and separates it fromjamjet-spring-boot-starter. Removes em dashes.jamjet-runtime-spring-boot-starter(the page namedjamjet-spring-boot-starter:0.3.1, which 404s), versions to 0.4.0, and the checkpoint text no longer implies checkpoints survive a restart without persisting them.Verification
spring-ai-starter-model-openai).jamjet-server0.5.0 in dev mode: the LangChain4j wrap, chat memory (read back by a fresh store), outcome events, namespace check and fail-closed path; thejamjet-sdkstart, status, events, external event andlistWorkflows()refusal; the@ReplayExecutiontest example against a recorded execution (and it fails when the asserted event is changed).RuntimeContractITcovers those paths.npm run buildpasses.Translations
Only
content/docs/en/is edited. The other locales have no copies of these pages yet. The Lingo.dev Translate workflow generates them on merge to main (it needs theLINGODOTDEV_API_KEYsecret).🤖 Generated with Claude Code