Jev LangChain and other framework integrations (TypeSafe AI)
When the pool checked search suggestions on , Google, Bing and DuckDuckGo all offered "jev langchain". "jev pydantic", "jev spring ai" and "jev llamaindex" had no suggestions on any of the three. A suggestion shows that people search for a phrase, not how many do. This page reads six framework packages for Jev in source: LangChain for Python and for JavaScript, Pydantic AI, Effect, Spring AI and LlamaIndex. It shows who publishes each one, how young it is, and what it does to your code when the Jev call fails.
Of 6 Jev framework packages read in source, 4 are pre-1.0 and none comes from TypeSafe; 4 raise Jev errors to your code, while the community Spring AI filter passes passages through unscreened.
Picked from framework packages builders asked about ("jev langchain") and those named in the research plan; not a survey. The pool installed none of them, ran nothing and made no Jev call. The 4 that raise errors are the LangChain Python and JavaScript classifiers, Pydantic AI and Effect.
Which integration is mature enough: maturity matrix
One row per package, plus the agent middlewares that ship inside the two LangChain packages. The "On a Jev error" and "No key" cells use the pool's shared failure vocabulary: fail-closed (stops or refuses), fail-open (acts anyway), fallback-<what> (a stated substitute), no-decision (nothing returned; your code must handle it). "Raises" means the error reaches the code you write. Documented source at the pins below, read 5 Oct 2026, 05:12–05:27 UTC; the runner spot-checked 26 key lines (all matched) and read the ModelRouter, JS autoMode and Spring filter decision paths itself
| Integration (pin) | Publisher | Package and version | Released | Pre-1.0? | On a Jev error | No key | Confidence to your code? | Does the framework code decide? |
|---|---|---|---|---|---|---|---|---|
LangChain TypeSafeClassifier (Python)Tag langchain-typesafe==0.0.1a3 = 4af7ab8 | Framework vendor (langchain-ai), not TypeSafe; MIT | langchain-typesafe 0.0.1a3 (3 releases; alpha, marked @beta()) | Correction: not 4 Oct. Still the latest version on 4 Oct | Yes | no-decision: raisesTyped error to your code; no retry in the integration; 30 s timeout | fail-closedError at construction (env TYPESAFE_API_KEY) | Yes, on Choice and Score answers | No: your code decides |
LangChain AutoModeMiddleware and ModelRouterMiddleware (Python)Same package and pin; module experimental/middleware/, [experimental] extra | Framework vendor (langchain-ai); MIT | Inside langchain-typesafe 0.0.1a3, experimental Correction: AutoModeMiddleware is not a separate package | 20 Sep 2026 (same package) | Yes | fail-closedThe error propagates and the tool handler is not called (AutoMode); the run ends (ModelRouter) | fail-closedError when the middleware is constructed | AutoMode: no (it appears only in the block message). ModelRouter: uses the chosen model, no cut-off | Yes. AutoMode blocks risky tool calls; ModelRouter picks the model |
LangChain JS classifierTag @langchain/typesafe@0.0.2 = 417ddcf | Framework vendor (LangChain org npm accounts, published by GitHub Actions); MIT | @langchain/typesafe 0.0.2 (2 releases) | Yes | no-decision: raises2 retries on 429, 5xx, 408, connection errors and timeouts, then raises; 30 s per attempt | fail-closedTypeSafeError at construction | Yes, on answers | No: your code decides | |
LangChain JS autoModeMiddlewareSame package and pin; src/middleware/autoMode.ts | Framework vendor; MIT | Inside @langchain/typesafe 0.0.2 | 1 Oct 2026 (same package) | Yes | fail-closedThe error is not caught, so the tool does not run (30 s × 3 attempts) | fail-closedThe classifier is built when the middleware is created | Not returned; risk is cut at a fixed 0.5 | Yes. Blocks listed tools at risk ≥ 0.5 |
Pydantic AI TypeSafeModelTag v2.54.0 = 6695132 | Framework vendor (pydantic/pydantic-ai); licence not recorded | In pydantic-ai-slim 2.54.0 (framework version; the TypeSafe model is newer than the framework) | No (ships in a 2.x framework) | no-decision: raisesModelHTTPError, ModelAPIError or UserError; no retry in the integration; timeout from model_settings, else the SDK default (not read) | fail-closedMissing-key error at provider construction | Yes, on Choice and Score; booleans thresholded at 0.5 | No: it returns typed answers to the agent you write | |
Effect @effect/ai-typesafeTag @effect/ai-typesafe@4.0.1 = 460272d | Framework vendor (Effect-TS; npm maintainers include effect-bot); MIT | @effect/ai-typesafe 4.0.1 (7 versions, including 0.0.x and rc), marked @stability unstable | Correction: 4.0.1, not 4.0.0; this page audits 4.0.1 | No (4.0.1), but marked unstable | no-decision: raisesAiError; no retry and no timeout set (uses your HttpClient) | conditionallayerConfig(): ConfigError at build. layer(): no bearer header, so the call fails with 401 and raises | Yes, on Classify and Rate | No: your code decides |
Spring AI TypeSafe JevDocumentFilter (RAG passage filter)Tag v0.4.0 = 51993bb | Community: spring-ai-community organisation, not spring-projects; Apache-2.0 Correction: not part of spring-projects/spring-ai | org.springaicommunity:typesafe-spring-ai 0.4.0 (4 releases) | (Maven Central metadata; the 2 Oct Spring blog cites 0.3.0) | Yes | fail-openPassages that could not be screened are passed through, with a WARN log. SDK: 10 s per attempt, 2 retries, 30 s budget | fail-closed (blank key)Blank value: exception at startup. Property absent: no client bean is created | No; the classification is stored in passage metadata | Yes. It drops passages before they reach the prompt |
LlamaIndex JevRerank (community)Repository 421afda (HEAD, 25 Sep) | Community (personal repository); MIT. Nothing official in run-llama/llama_index | llama-index-postprocessor-jev and llama-index-selectors-jev 0.1.1 (2 releases) | (PyPI 0.1.1; the repository read is a week newer) | Yes | fallback-retriever orderDefault raise_on_error=False, which the package calls "fail open": returns the retriever's nodes cut to top_n; 2.5 s timeout | fail-closedValueError at construction | Stored in node metadata | Yes. It reorders and cuts the retrieved nodes |
- fail-closed: stops the run, the tool or the build
- fail-open: acts anyway (unscreened passages reach the prompt)
- fallback-<what>: a stated substitute (here the retriever's order)
- no-decision: raises; your code must handle it
- conditional: depends on how it is set up
- 4/6pre-1.0 (0.0.1a3, 0.0.2, 0.4.0, 0.1.1). Effect is 4.0.1 but marked unstable; Pydantic AI ships in 2.54.0
- 0/6published by TypeSafe (framework vendor 4/6, community 2/6)
- 4/6raise Jev errors to your code (LangChain Python and JS classifiers, Pydantic AI, Effect)
- 2/6decide by themselves and do not stop on a Jev error (Spring fail-open, LlamaIndex fallback-retriever order)
The two LangChain packages also contain middlewares that decide by themselves; all three fail closed (Python AutoMode and ModelRouter, JS autoMode). They are counted inside their package, not as extra packages.
Corrections to earlier research facts
langchain-typesafe0.0.1a3 was uploaded on 20 Sep 2026, 18:54:39 UTC, not 4 Oct (PyPI).@effect/ai-typesafeis now 4.0.1 (4 Oct 2026, 21:51 UTC), not 4.0.0.- The Spring AI integration is community-published (
org.springaicommunity:typesafe-spring-ai0.4.0). It is not part of spring-projects/spring-ai. - AutoModeMiddleware is inside
langchain-typesafe(experimental module). A separate JS version ships in@langchain/typesafe0.0.2. - LlamaIndex has a community integration (
llama-index-postprocessor-jevand-selectors-jev0.1.1). Nothing official was found (where we looked).
Thresholds and known issues that change behaviour
How to pick your own threshold is on how to choose a confidence threshold. Status codes and retries are on errors and rate limits. Documented source at the pins; issue counts from GitHub search, 5 Oct 2026, 05:17 UTC
- LangChain Python middlewares. AutoMode blocks at risk ≥ 0.5; the value is hard-coded. ModelRouter always takes the chosen model, with no confidence cut. Source observation, not filed as an issue: AutoMode passes
criteria=Noneexplicitly, so its default criteria are never applied, and no test covers this. Open issues include #40694 (classifies calls that inner middleware can rewrite) and #40700 (ModelRouter overrides the ModelFallbackMiddleware model). The failure path is tested. - LangChain Python classifier. 13 open issues with "typesafe" in the title, including #40706 (empty questions sent) and #40867 (no retry or rate-limit handling).
- LangChain JS. autoMode cuts at a fixed 0.5. Tools you do not list are never sent to Jev. 0 open issues.
- Pydantic AI. Booleans are thresholded at 0.5. Routes have a threshold that defaults to 0.0; when you set one, it raises
UnsureRoute. Open issues include #9640 (state always sent as text) and #9641 (LLMJudge drops the probability). - Effect. Threshold left to you. A missing answer key is silently skipped. 0 open issues.
- Spring AI filter. Default policy thresholds: injection 0.70, contradiction 0.70, relevance 0.45, evidence 0.55. A passage whose injection score is below 0.70 is kept. 4 open issues (#3, #7, #21, #27); #27 affects advisors, not RAG.
- LlamaIndex reranker. The optional
confidence_threshold(default none) only sets a metadata flag and never drops nodes. Issues not checked.
Rows added to the "when Jev fails" checklist
A row counts on when Jev fails only if the integration acts on Jev's answer itself. Four rows from this page are added there, in a new "Frameworks" domain. Documented source at the pins, 5 Oct 2026
| Implementation (pin) | Jev error or timeout | Malformed answer | Below threshold | No key | Bypass |
|---|---|---|---|---|---|
Spring AI TypeSafe JevDocumentFilter 0.4.0 (51993bb) | fail-openUnscreened passages kept; 10 s per attempt, 2 retries, 30 s budget | fail-openPassage passes through | acts-anywayInjection < 0.70: passage kept | fail-closedBlank key: startup exception | not recorded |
LlamaIndex JevRerank, community (421afda) | fallback-retriever orderCut to top_n; 2.5 s | fallback-retriever order | no-thresholdOptional flag only; never drops | fail-closedValueError at construction | not recorded |
LangChain ModelRouterMiddleware Python 0.0.1a3 (4af7ab8) | fail-closedThe run ends; 30 s | fail-closed | no-thresholdAlways the chosen model | fail-closedAt construction | not recorded |
LangChain autoModeMiddleware JS 0.0.2 (417ddcf) | fail-closedTool not run; 30 s × 3 attempts | fail-closed | acts-anywayRisk < 0.5: the tool runs (fixed cut) | fail-closedAt construction | Tools you do not list are never sent to Jev |
On a Jev error, 1 of these 4 rows lets the action go ahead: Spring, where passages the injection screen could not judge enter the prompt. The LlamaIndex fallback returns the retriever's order by design and is not counted as going ahead, following the checklist's convention for routing fallbacks. Below-threshold results are counted separately from errors.
How these rows were counted
- JS autoModeMiddleware is a separate row. It is a different package and implementation from the Python AutoModeMiddleware, which stays where it is already counted, on Claude Code and MCP guards. No existing row changes.
- Pydantic AI is not a decision row.
TypeSafeModelreturns typed answers to the agent you write and raises on a Jev error, so your code decides what happens next. Its failure behaviour is on this page only. - The Python classifier and Effect are not decision rows either: they raise to your code.
Version rechecks (not audited on this page)
Rechecked 7 Oct 2026, 05:21 UTC: no new release of any of the six packages; LiteLLM still 1.104.0. Documented (package registries, R10-S48)
Rechecked 6 Oct 2026, 05:20 UTC: no new release of any of the six packages; LiteLLM 1.104.0 failure path unchanged. The Spring AI repository HEAD has moved to 2c30a58, but tag v0.4.0 is still 51993bb; the LlamaIndex repository HEAD is still 421afda. Documented (package registries and git ls-remote)
- LiteLLM 1.104.0 (PyPI, 3 Oct 2026, 22:42 UTC). Checked on 6 Oct 2026 at tag commit
7964577: the Jev classifier's failure path is unchanged from8d28e8d(the caller block is byte-identical; the classifier file differs only in comments). The tag may predate8d28e8d; their order was not verified. Routing cells stay on model routing. The TypeSafe proxy guardrail hook (proxy/guardrails/guardrail_hooks/typesafe/typesafe.py) exists at both commits. Read at the tag in spare time on 6 Oct: it is a context-compaction guardrail, not a safety block (it removes tool results Jev judges no longer relevant, below 0.2); on a Jev error it forwards the request uncompacted by default; with no key it fails at start-up. It is not a row on this page yet. - Vercel
@ai-sdk/typesafe-ai3.0.15 (7 Oct 2026, 01:41 UTC), after 3.0.14 (6 Oct, 22:20 UTC) and 3.0.13 (5 Oct, 18:26 UTC); patch releases, not re-audited (R10-S35). See TypeScript. - Pydantic AI Gateway does not route Jev. Its documented providers are OpenAI, Anthropic, Google Vertex, Groq and Bedrock ("More providers coming soon"), and
providers/gateway.pyat v2.54.0 has no TypeSafe entry (docs and source search, 05:19 UTC). - Mastra: no package found.
@mastra/typesafereturns 404, and no Mastra-published package appeared in the npm search (05:16 UTC).
Where we looked for an official LlamaIndex integration
- PyPI
llama-index-llms-typesafe,llama-index-typesafe,-postprocessor-typesafe(-rerank),-tools-typesafeand-llms-jev: 404 (05:12–05:18 UTC). - The PyPI simple index, searched for "typesafe" and "jev": only the two community packages (05:18 UTC).
- npm
@llamaindex/typesafe: 404 (05:13 UTC). - run-llama/llama_index
llama-index-integrations/foldersllms,postprocessorandselectors: no TypeSafe or Jev entry (05:18 UTC).
Other framework packages seen in registry searches (names only, not audited)
Names, versions and publishers from npm and PyPI searches on 5 Oct 2026, 05:16 and 05:18 UTC. Not read in source and not counted above.
- npm:
@tanstack/ai-typesafe0.1.7;@composio/typesafe0.1.1;@openclaw/typesafe2026.9.8;@arizeai/openinference-instrumentation-typesafe0.1.0;@effect-uai/typesafe-ai0.17.0;@effect-agent/ai-typesafe0.1.0-beta.100. - PyPI:
agent-framework-typesafe1.0.0a261002 (author listed as Microsoft);composio-typesafe0.25.0;flyteplugins-typesafe-ai2.10.7;openinference-instrumentation-typesafe0.1.4;kitaru-typesafe-evaluator0.1.0;llm-typesafe0.1a0;langgraph-jev0.1.0;ragas-jev0.3.0;mellea-jev-adapter0.1.1.
What is on other pages
- Calling the Jev SDK directly, without a framework: Python and TypeScript.
- DeepEval and LangSmith Evals: Jev as a judge.
- LiteLLM routing: model routing.
Plugins, hooks and MCP servers for coding agents (Codex, OpenCode, Cursor, OpenClaw, Hermes Agent) are compared on Jev with coding agents (6 Oct 2026); Claude Code guards are on Claude Code and MCP guards.
What was not verified
- Nothing was installed or run, and no API key was used. Every cell is read from code; behaviour at run time may differ.
- SDK defaults not read: the
@langchain/coreretry backoff used by LangChain JS, and the typesafe-sdk retry and timeout defaults used by Pydantic AI. - How Effect's core DecisionModel handles thresholds.
- The Spring auto-configuration lines (no-key behaviour) were read by a helper and not spot-checked by the runner.
- Test contents for Effect, Spring and LlamaIndex (file names only).
- The LiteLLM TypeSafe guardrail hook's registration, config and tests (the hook file was read at
7964577on 6 Oct; it exists at both commits, 17,570 and 18,224 bytes; the difference was not read). - Pydantic AI's licence field. LlamaIndex community issues.
- The LlamaIndex line numbers come from the repository at
421afda, which is a week newer than PyPI 0.1.1. - How many people use any of these packages.
- Coding-agent plugins (Hermes, Codex, OpenCode, Cursor, OpenClaw) are not on this page; 18 were read in source on 6 Oct 2026 for Jev with coding agents.
Sources and check times (5 Oct 2026, UTC)
- R8-S11: search suggestions from Google (
client=firefox), Bing (osjson) and DuckDuckGo (ac), 05:14:54–05:15:03. - R8-S80: PyPI JSON for
langchain-typesafe; taglangchain-typesafe==0.0.1a3at 4af7ab8 (read 05:13). Paths underlibs/partners/typesafe/langchain_typesafe/:classifier.pyL38, L255–265, L366–371;client.pyL333–344;types.pyL241, L269;experimental/middleware/auto_mode.pyL39, L96–97, L147, L164, L167, L232;experimental/middleware/model_router.pyL85–86, L152, L197. Test:test_auto_mode.pyL317–327. - R8-S81: npm record for
@langchain/typesafe; tag@langchain/typesafe@0.0.2at 417ddcf (read 05:13). Paths undersrc/:classifier.tsL26, L128–131, L197;middleware/autoMode.tsL26, L128, L144–146, L154, L157. - R8-S82: PyPI JSON for
pydantic-ai-slim; tagv2.54.0at 6695132 (read 05:14). Paths underpydantic_ai_slim/pydantic_ai/:models/typesafe.pyL222–242, L231–232, L293–306;models/decision.pyL556, L623–624, L798;providers/typesafe.pyL78–83. Test filetests/models/test_typesafe.py. - R8-S83: npm record for
@effect/ai-typesafe; tag@effect/ai-typesafe@4.0.1at 460272d (read 05:13). Paths underpackages/ai/typesafe/src/:TypeSafeClient.tsL76, L145;TypeSafeDecisionModel.tsL72–90;internal/errors.tsL53–111;DecisionModel.tsL69–92. - R8-S84: Maven Central for
typesafe-spring-ai0.4.0; tagv0.4.0at 51993bb (read 05:17).typesafe-spring-ai/src/main/java/org/springaicommunity/typesafe/rag/JevDocumentFilter.javaL118–132, L170–206 (fail-open path; also spot-checked by the publishing manager);RetryPolicy.javaL34–35;TypeSafeConstants.javaL48; auto-configuration L50, L70–71 (helper read). - R8-S85: Spring blog, 2 Oct 2026, cites 0.3.0 (web-search snippet). Reported
- R8-S86: llama-index-jev at 421afda (HEAD 25 Sep; read 05:24) and PyPI JSON (0.1.1, 18 Sep). Paths under
packages/llama-index-postprocessor-jev/llama_index/postprocessor/jev/:base.pyL69–83, L103, L145–151, L266–272;utils.pyL92–96. - R8-S87: LlamaIndex search boundary: PyPI JSON for the official-style names (404), the PyPI simple index, npm
@llamaindex/typesafe(404), and run-llama/llama_index integration folders (05:12–05:18). Absence within that boundary only. - R8-S88: PyPI JSON for LiteLLM 1.104.0 (read 05:15).
- R8-S89: Pydantic AI Gateway docs (read 05:19).
- R8-S90: GitHub issue search for "typesafe" and "jev" in 8 repositories (05:17:50); title matches counted per repository.
- R8-S91: npm and PyPI searches for other framework packages, including
@mastra/typesafe(404) (05:16:38 and 05:18:15).