@juspay/neurolink 12.18.1 → 12.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -3
- package/README.md +277 -75
- package/dist/browser/neurolink.min.js +396 -396
- package/dist/cli/commands/setup.js +2 -1
- package/dist/cli/factories/commandFactory.d.ts +22 -2
- package/dist/cli/factories/commandFactory.js +14 -2
- package/dist/cli/loop/optionsSchema.js +4 -0
- package/dist/cli/utils/classifierRouterFlags.js +39 -1
- package/dist/constants/enums.d.ts +13 -0
- package/dist/constants/enums.js +14 -0
- package/dist/context/budgetChecker.d.ts +3 -1
- package/dist/context/budgetChecker.js +20 -4
- package/dist/context/contextCompactor.d.ts +43 -3
- package/dist/context/contextCompactor.js +157 -41
- package/dist/context/contextDecision.d.ts +56 -0
- package/dist/context/contextDecision.js +234 -0
- package/dist/core/baseProvider.d.ts +27 -1
- package/dist/core/baseProvider.js +39 -0
- package/dist/core/toolRouting.d.ts +8 -0
- package/dist/core/toolRouting.js +52 -1
- package/dist/core/toolRoutingDecision.d.ts +35 -0
- package/dist/core/toolRoutingDecision.js +194 -0
- package/dist/factories/providerDescriptors.d.ts +15 -0
- package/dist/factories/providerDescriptors.js +57 -1
- package/dist/factories/providerRegistry.js +9 -1
- package/dist/index.d.ts +57 -1
- package/dist/index.js +60 -1
- package/dist/models/manifestRegistry.js +2 -0
- package/dist/models/manifests/typesafe.d.ts +16 -0
- package/dist/models/manifests/typesafe.js +42 -0
- package/dist/neurolink.d.ts +57 -1
- package/dist/neurolink.js +254 -10
- package/dist/observability/exporters/laminarExporter.js +3 -0
- package/dist/observability/exporters/posthogExporter.js +3 -0
- package/dist/observability/utils/spanSerializer.js +4 -0
- package/dist/providers/catalog/schema.d.ts +1 -1
- package/dist/providers/typesafe.d.ts +112 -0
- package/dist/providers/typesafe.js +654 -0
- package/dist/rag/pipeline/RAGPipeline.d.ts +3 -1
- package/dist/rag/pipeline/RAGPipeline.js +65 -4
- package/dist/rag/retrieval/searchDecision.d.ts +27 -0
- package/dist/rag/retrieval/searchDecision.js +124 -0
- package/dist/routing/classifierRouter.d.ts +74 -2
- package/dist/routing/classifierRouter.js +232 -32
- package/dist/routing/classifierStrategies.d.ts +33 -1
- package/dist/routing/classifierStrategies.js +237 -0
- package/dist/routing/index.d.ts +1 -1
- package/dist/routing/index.js +1 -1
- package/dist/routing/modelCatalog.d.ts +79 -0
- package/dist/routing/modelCatalog.js +382 -0
- package/dist/telemetry/tracers.d.ts +1 -0
- package/dist/telemetry/tracers.js +1 -0
- package/dist/types/classifierRouter.d.ts +160 -4
- package/dist/types/cli.d.ts +17 -1
- package/dist/types/config.d.ts +12 -0
- package/dist/types/context.d.ts +55 -1
- package/dist/types/decision.d.ts +200 -0
- package/dist/types/decision.js +21 -0
- package/dist/types/generate.d.ts +20 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/providers.d.ts +59 -1
- package/dist/types/providers.js +5 -0
- package/dist/types/rag.d.ts +48 -0
- package/dist/types/span.d.ts +11 -0
- package/dist/types/span.js +11 -0
- package/dist/types/stream.d.ts +13 -0
- package/dist/types/toolRouting.d.ts +56 -0
- package/dist/utils/decisionAnswers.d.ts +56 -0
- package/dist/utils/decisionAnswers.js +95 -0
- package/dist/utils/modelChoices.js +13 -1
- package/dist/utils/pricing.js +11 -0
- package/dist/utils/providerConfig.d.ts +4 -0
- package/dist/utils/providerConfig.js +17 -0
- package/docs-site/static/search-index.json +1 -1
- package/package.json +16 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
## [12.
|
|
1
|
+
## [12.19.0](https://github.com/juspay/neurolink/compare/v12.18.1...v12.19.0) (2026-09-20)
|
|
2
2
|
|
|
3
|
-
###
|
|
3
|
+
### Features
|
|
4
4
|
|
|
5
|
-
- **(
|
|
5
|
+
- **(decide):** add a third inference type and wire it through routing, context, tools and RAG ([268b0fe](https://github.com/juspay/neurolink/commit/268b0fe8313076d8f44613059c0d0940564635d5))
|
|
6
6
|
|
|
7
7
|
## [11.2.3](https://github.com/juspay/neurolink/compare/v11.2.2...v11.2.3) (2026-08-19)
|
|
8
8
|
|
package/README.md
CHANGED
|
@@ -24,6 +24,19 @@ for await (const chunk of result.stream) {
|
|
|
24
24
|
process.stdout.write(chunk.content);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
+
|
|
28
|
+
// Or skip text entirely: a calibrated decision, not a token stream
|
|
29
|
+
const decision = await pipe.tryDecide({
|
|
30
|
+
// null if no decision provider is set
|
|
31
|
+
state: { ticket: "Refund request, $42, first occurrence" },
|
|
32
|
+
questions: {
|
|
33
|
+
autoApprove: {
|
|
34
|
+
type: "boolean",
|
|
35
|
+
instructions: "Approve without human review.",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
// decision?.answers.autoApprove.probability -> 0.91
|
|
27
40
|
```
|
|
28
41
|
|
|
29
42
|
**[→ Docs](https://docs.neurolink.ink) · [→ Quick Start](https://docs.neurolink.ink/docs/getting-started/quick-start) · [→ npm](https://www.npmjs.com/package/@juspay/neurolink)**
|
|
@@ -32,11 +45,11 @@ for await (const chunk of result.stream) {
|
|
|
32
45
|
|
|
33
46
|
## 🧠 What is NeuroLink?
|
|
34
47
|
|
|
35
|
-
**NeuroLink is the universal AI integration platform that unifies
|
|
48
|
+
**NeuroLink is the universal AI integration platform that unifies 40 AI providers under one consistent API, across three inference types: `generate`, `stream`, and `decide`.** A curated 64-model registry (7 providers, 132 aliases) backs model metadata, routing, and context-window checks out of the box, and hundreds more models are reachable through aggregator providers — 100+ via LiteLLM, 300+ via OpenRouter.
|
|
36
49
|
|
|
37
|
-
Extracted from production systems at Juspay, NeuroLink provides a practical, TypeScript-first way to integrate AI into any application. Whether you're building with OpenAI, Anthropic, Google, AWS Bedrock, Azure, or any of our
|
|
50
|
+
Extracted from production systems at Juspay, NeuroLink provides a practical, TypeScript-first way to integrate AI into any application. Whether you're building with OpenAI, Anthropic, Google, AWS Bedrock, Azure, or any of our 40 supported providers, NeuroLink gives you a single, consistent interface that works everywhere. `decide` is the third inference type — a typed, calibrated judgment instead of text — for the model-routing and gating decisions `generate`/`stream` were never meant to make.
|
|
38
51
|
|
|
39
|
-
**Why NeuroLink?** Switch providers with a single parameter change, leverage built-in tools plus any MCP-compliant tool server, deploy with confidence using enterprise features like Redis memory and multi-provider failover, and optimize costs automatically with intelligent routing. Use it via our professional CLI or TypeScript SDK—whichever fits your workflow.
|
|
52
|
+
**Why NeuroLink?** Three genuine inference types, not one dressed up three ways — `generate` and `stream` produce text; `decide` produces a calibrated `boolean`/`choice`/`score` judgment, and which types a provider serves is declared per-provider via `inferenceKinds` rather than inferred from behavior. One API spans all 40 providers, including 3 fully local runtimes (Ollama, LM Studio, llama.cpp) with per-request credential overrides, and MCP support covers all 4 transports (stdio, HTTP, SSE, WebSocket). Every AI-driven optimization — model routing, context compaction, tool selection — fails open: no key configured behaves exactly like NeuroLink without it, and routing uses asymmetric confidence thresholds (upgrade at 0.3, downgrade at 0.6) rather than a single cutoff, because a wrong downgrade costs more than a wrong upgrade. Switch providers with a single parameter change, leverage built-in tools plus any MCP-compliant tool server, deploy with confidence using enterprise features like Redis memory and multi-provider failover, and optimize costs automatically with intelligent routing. Use it via our professional CLI or TypeScript SDK—whichever fits your workflow.
|
|
40
53
|
|
|
41
54
|
**Where we're headed:** We're building for the future of AI—edge-first execution and continuous streaming architectures that make AI practically free and universally available. **[Read our vision →](docs/about/vision.md)**
|
|
42
55
|
|
|
@@ -44,28 +57,64 @@ Extracted from production systems at Juspay, NeuroLink provides a practical, Typ
|
|
|
44
57
|
|
|
45
58
|
---
|
|
46
59
|
|
|
47
|
-
## What's New
|
|
48
|
-
|
|
49
|
-
| Feature
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
| **
|
|
53
|
-
| **
|
|
54
|
-
| **
|
|
55
|
-
| **
|
|
56
|
-
| **
|
|
57
|
-
| **
|
|
58
|
-
| **
|
|
59
|
-
| **
|
|
60
|
-
| **
|
|
61
|
-
| **
|
|
62
|
-
| **
|
|
63
|
-
| **
|
|
64
|
-
| **
|
|
65
|
-
| **
|
|
66
|
-
| **
|
|
60
|
+
## What's New
|
|
61
|
+
|
|
62
|
+
| Feature | Version | Description | Guide |
|
|
63
|
+
| ------------------------------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
|
64
|
+
| **`decide` Inference Type + TypeSafe Jev** | next | A third inference type alongside `generate`/`stream`: typed, calibrated judgments (`boolean`, `choice`, `score`) via `neurolink.decide()` / `tryDecide()`, one parallel pass, ~400ms and ~$0.00002/decision. First provider is TypeSafe Jev (`TYPESAFE_API_KEY`, also reachable via the Vercel AI Gateway). Used internally for model routing, context budgeting, relevance compaction and tool routing — fail-open and a no-op without a key. Per-query RAG planning is opt-in via `RAGPipeline`. | [Decide Guide](docs/features/decide-inference-type.md) |
|
|
65
|
+
| **7 More Catalog Providers** | v12.11.0–v12.16.0 | Baseten, GMI Cloud, Inception Labs, io.net Intelligence, Mancer, Upstage and API Route onboarded as Tier-2 catalog entries — one JSON file each, roster live-verified against the provider's own `/v1/models`. | [Tier 2 Onboarding](docs/provider-integration/tiers/tier-2-catalog-entry.md) |
|
|
66
|
+
| **Claude-on-Vertex Proxy Fallback** | v12.18.0 | The Anthropic proxy pool can fall back to Claude served on Google Vertex, so an agentic turn survives losing its primary backend mid-conversation instead of failing the turn. | [Claude Proxy](docs/features/claude-proxy.md) |
|
|
67
|
+
| **Native-Loop V3 Conversation Reclaim** | v12.17.0 | Reclaims V3 conversations without splitting tool-call/tool-result pairs — the pairing a provider rejects the whole request over. | [Claude Proxy Architecture](docs/features/claude-proxy-architecture.md) |
|
|
68
|
+
| **Multi-Modal Embeddings** | v12.15.0 | `embed()` / `embedMany()` accept images alongside text on providers whose embedding models are multi-modal, for cross-modal retrieval in RAG and custom vector search. | [Embeddings Guide](docs/features/embeddings.md) |
|
|
69
|
+
| **Grok Build Auto-Configuration** | v12.14.0 | The proxy configures Grok Build automatically, deriving context windows and backends from the model catalog rather than hardcoded values. | [Proxy CLI Onboarding](docs/features/proxy-cli-onboarding.md) |
|
|
70
|
+
| **Anthropic Execution-Control Contract** | v12.13.0 | Truthful stream termination plus an opt-in execution-control contract, so a stream that stopped early reports why instead of looking like a clean finish. | [Claude Proxy](docs/features/claude-proxy.md) |
|
|
71
|
+
| **Catalog Tool Declarations Honoured at Runtime** | v12.12.0 | A Tier-2 catalog entry declaring `tools: false` (e.g. Mancer) no longer has tools offered to it at runtime — the JSON declaration is enforced, not just documented. | [Tier 2 Onboarding](docs/provider-integration/tiers/tier-2-catalog-entry.md) |
|
|
72
|
+
| **Artifact Stores: Redis, Custom, Range Reads, Search** | v12.10.0 | Artifacts can be backed by Redis or a custom store, read by byte range, and searched — instead of being held only in process memory. | [Claude Proxy](docs/features/claude-proxy.md) |
|
|
73
|
+
| **Local CLI Spend Reading** | v12.6.0–v12.9.0 | Reads token usage directly from other coding CLIs' own local stores — Cursor, Grok Build, Hermes Agent and three more — and names them in proxy traffic, so spend is attributed per client. | [Proxy CLI Onboarding](docs/features/proxy-cli-onboarding.md) |
|
|
74
|
+
| **Native OpenAI Audio Streaming** | v12.7.0 | OpenAI TTS audio streams natively rather than being buffered to completion first. | [TTS Guide](docs/features/tts.md) |
|
|
75
|
+
| **HITL Pending-Confirmation State** | v12.5.0 | Exposes whether a human-in-the-loop confirmation is still outstanding, so a caller can distinguish 'waiting on a human' from 'finished'. | [Task Manager](docs/features/task-manager.md) |
|
|
76
|
+
| **OpenCode + Gemini CLI Proxy Clients** | v12.4.0 | OpenCode's generated config is actually loadable, and Gemini CLI is onboarded as a proxy client. | [OpenCode Proxy](docs/features/opencode-proxy-support.md) \| [Proxy CLI Onboarding](docs/features/proxy-cli-onboarding.md) |
|
|
77
|
+
| **SambaNova Provider** | v12.3.0 | RDU-accelerated open-weight flagships: Llama 3.3 70B (default), GPT-OSS 120B, DeepSeek V3.x, MiniMax, Gemma 4 (vision) — OpenAI-compatible Tier 2 catalog entry. Note: new SambaNova accounts require purchased credits. | [SambaNova Guide](docs/getting-started/providers/sambanova.md) |
|
|
78
|
+
| **Cerebras Provider** | v12.1.0 | Wafer-scale inference at ~3000 tok/s: GPT-OSS 120B (default) + Gemma 4 31B, OpenAI-compatible Tier 2 catalog entry, live-verified end to end (generate, stream, tools, structured output). | [Cerebras Guide](docs/getting-started/providers/cerebras.md) |
|
|
79
|
+
| **Avatar / Music Modalities + 12 Providers** | v9.65.0 | New `output: { mode: "avatar" \| "music" }` dispatch with handlers for D-ID, HeyGen, Replicate-MuseTalk (avatar) and Beatoven, ElevenLabs Music, Lyria, Replicate-MusicGen (music). Plus Fish Audio TTS, Kling/Runway/Replicate video, xAI/Groq/Cohere/Together/Fireworks/Perplexity/Cloudflare LLMs, Voyage/Jina embeddings, Stability/Ideogram/Recraft/Replicate image-gen. | [Provider Integration](docs/provider-integration/) |
|
|
80
|
+
| **Multi-Provider Voice (TTS/STT)** | v9.62.0 | 6 TTS providers (OpenAI TTS, ElevenLabs, Google TTS, Azure TTS, Fish Audio, Cartesia) + 4 STT providers (Whisper, Deepgram, Azure STT, Google STT) + 2 realtime APIs (OpenAI Realtime, Gemini Live). | [TTS Guide](docs/features/tts.md) \| [STT Guide](docs/features/audio-input.md) \| [Realtime Guide](docs/features/real-time-services.md) |
|
|
81
|
+
| **4 New Providers** | v9.60.0 | DeepSeek (V3/R1), NVIDIA NIM (400+ catalog), LM Studio (local), llama.cpp (GGUF local). | [Provider Setup](docs/getting-started/provider-setup.md) |
|
|
82
|
+
| **ModelAccessDeniedError** | v9.59.0 | Typed `ModelAccessDeniedError` + `sdk.checkCredentials()` API for proactive credential validation before first call. | [Error Reference](docs/reference/troubleshooting.md) |
|
|
83
|
+
| **Provider Fallback Policy** | v9.58.0 | `providerFallback` callback + `modelChain` config for centralized multi-provider fallback logic. | [Advanced Guide](docs/advanced/index.md) |
|
|
84
|
+
| **Per-Request Credentials** | v9.52.0 | Pass credentials per-call or per-instance for all providers. Per-call overrides instance; instance overrides env vars. | [Credentials Guide](docs/features/per-request-credentials.md) |
|
|
85
|
+
| **AutoResearch** | v9.53.0 | Autonomous AI experiment engine: proposes code changes, runs experiments, evaluates metrics — unattended for hours. | [AutoResearch Guide](docs/features/autoresearch.md) |
|
|
86
|
+
| **Gemini 3 Multi-turn Tool Fix** | v9.49.0 | Fixed multi-step agentic tool calling on Vertex AI Gemini 3. Correct `thoughtSignature` replay, `stepIndex` grouping, `executionId` session isolation, 5-min timeout. | [Vertex AI Guide](docs/getting-started/providers/google-vertex.md) |
|
|
87
|
+
| **MCP Enhancements** | v9.16.0 | Tool routing (6 strategies), result caching (LRU/FIFO/LFU), request batching, annotations, elicitation protocol, multi-server management. | [MCP Enhancements Guide](docs/features/mcp-enhancements.md) |
|
|
88
|
+
| **Memory** | v9.12.0 | Per-user condensed memory across conversations. LLM-powered condensation with S3, Redis, or SQLite. | [Memory Guide](docs/features/memory.md) |
|
|
89
|
+
| **Context Window Management** | v9.2.0 | 4-stage compaction pipeline with budget gate at 80% usage, per-provider token estimation. | [Context Compaction Guide](docs/features/context-compaction.md) |
|
|
90
|
+
| **Tool Execution Control** | v9.3.0 | `prepareStep` and `toolChoice` for per-step tool enforcement in multi-step agentic loops. | [API Reference](docs/api/type-aliases/GenerateOptions.md#preparestep) |
|
|
91
|
+
| **File Processor System** | v9.1.0 | 17+ file type processors with ProcessorRegistry, security sanitization, SVG text injection. | [File Processors Guide](docs/features/file-processors.md) |
|
|
92
|
+
| **RAG with generate()/stream()** | v9.2.0 | Pass `rag: { files }` for automatic document chunking, embedding, and AI-powered search. 10 chunking strategies, hybrid search, reranking, and a choice of 4 vector stores (in-memory, Chroma, PgVector, Pinecone). | [RAG Guide](docs/features/rag.md) |
|
|
67
93
|
|
|
68
94
|
```typescript
|
|
95
|
+
// decide() — a third inference type: calibrated judgments, not text (next)
|
|
96
|
+
// Enable with TYPESAFE_API_KEY (or AI_GATEWAY_API_KEY via Vercel AI Gateway).
|
|
97
|
+
import { NeuroLink, readDecisionChoice } from "@juspay/neurolink";
|
|
98
|
+
|
|
99
|
+
const neurolink = new NeuroLink();
|
|
100
|
+
|
|
101
|
+
const result = await neurolink.tryDecide({
|
|
102
|
+
// null if no decision provider is configured
|
|
103
|
+
state: ticketText,
|
|
104
|
+
questions: {
|
|
105
|
+
team: {
|
|
106
|
+
type: "choice",
|
|
107
|
+
instructions: "Which team should handle this?",
|
|
108
|
+
criteria: { billing: "Payments", technical: "Bugs", sales: "Pricing" },
|
|
109
|
+
},
|
|
110
|
+
urgent: { type: "boolean", instructions: "Is this urgent?" },
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
const team = result && readDecisionChoice(result.answers, "team");
|
|
114
|
+
if (team && team.confidence > 0.7) {
|
|
115
|
+
route(team.choice); // "billing" | "technical" | "sales", plus a full ranking
|
|
116
|
+
}
|
|
117
|
+
|
|
69
118
|
// Multi-Provider Voice (v9.62.0) — TTS + STT
|
|
70
119
|
// Voice is configured via the `tts` / `stt` options on generate() / stream(),
|
|
71
120
|
// not via dedicated synthesizeSpeech / transcribeAudio methods.
|
|
@@ -146,7 +195,7 @@ const neurolink = new NeuroLink({
|
|
|
146
195
|
---
|
|
147
196
|
|
|
148
197
|
<details>
|
|
149
|
-
<summary><strong>Previous Updates
|
|
198
|
+
<summary><strong>Previous Updates</strong></summary>
|
|
150
199
|
|
|
151
200
|
- **Sharp image compression** (v9.50.0) – Automatic image compression for AI providers via the sharp library; reduces upload bandwidth and bypasses provider size limits.
|
|
152
201
|
- **Redis URL/TLS** (v9.49.0) – Redis URL-based connections with TLS support for secure conversation memory in production.
|
|
@@ -170,6 +219,139 @@ const neurolink = new NeuroLink({
|
|
|
170
219
|
|
|
171
220
|
</details>
|
|
172
221
|
|
|
222
|
+
## Decide: Calibrated Judgments, Not Text
|
|
223
|
+
|
|
224
|
+
**NeuroLink now supports decision models — a third inference type, and the first
|
|
225
|
+
provider for it ships today.**
|
|
226
|
+
|
|
227
|
+
`decide` sits alongside `generate` and `stream`. Instead of tokens, a decision
|
|
228
|
+
model takes one `state` plus a map of named typed questions and returns one
|
|
229
|
+
typed, **calibrated** answer per question, all in a single parallel pass — no
|
|
230
|
+
text output anywhere, so nothing has to be parsed back out of prose.
|
|
231
|
+
|
|
232
|
+
Public API: `neurolink.decide()` and the fail-open `neurolink.tryDecide()`
|
|
233
|
+
(returns `null` instead of throwing). This is a **TypeScript SDK surface** —
|
|
234
|
+
there is no `neurolink decide` CLI command today.
|
|
235
|
+
|
|
236
|
+
| Primitive | Answer shape | Use it for |
|
|
237
|
+
| --------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
|
|
238
|
+
| `boolean` | A probability, 0–1 (no confidence of its own — gate on distance from 0.5) | Yes/no gates: approve, drop, include, flag |
|
|
239
|
+
| `choice` | An option + the full probability distribution + a confidence | Routing to one of N options — the distribution also **ranks** all N |
|
|
240
|
+
| `score` | A probability-weighted index into an ordered rubric + a confidence, **and a `legend`** | Position on a scale: severity, priority, quality tier |
|
|
241
|
+
|
|
242
|
+
A `score` is probability-weighted, so it can land **between** rubric levels —
|
|
243
|
+
useful for sorting a queue, not just bucketing it.
|
|
244
|
+
|
|
245
|
+
### What you can build with it
|
|
246
|
+
|
|
247
|
+
The model is fast, cheap and calibrated, but ~68% accurate (see the trade-off
|
|
248
|
+
below). That combination fits work that is **batched, gated and reversible** —
|
|
249
|
+
where a wrong answer is caught by a threshold or a human, not shipped to a user.
|
|
250
|
+
|
|
251
|
+
| Use case | Primitive | Why it fits |
|
|
252
|
+
| ---------------------------------- | -------------------------------- | ---------------------------------------------------------------------------- |
|
|
253
|
+
| **Ticket / helpdesk triage** | `choice` team + `score` priority | `ranked` gives a fallback team order; a human still sees the ticket |
|
|
254
|
+
| **Content moderation, first pass** | one `boolean` per item | Only a confident "yes" auto-hides; everything else escalates |
|
|
255
|
+
| **Lead or severity queues** | `score` over an ordered rubric | The between-levels score sorts a queue rather than bucketing it |
|
|
256
|
+
| **Shortlisting & reranking** | one `choice` over N candidates | One request ranks the whole catalogue — SKUs, canned replies, search results |
|
|
257
|
+
| **Your own model-tier gate** | `boolean` or `choice` | Decide cheap-vs-capable per message before you call a text model |
|
|
258
|
+
| **Spam / fraud pre-screen** | `boolean` with asymmetric bars | A high bar to auto-reject, a lower one to flag for review |
|
|
259
|
+
|
|
260
|
+
**Do not use it for** a final answer a user reads, an irreversible action with no
|
|
261
|
+
confirmation step, or anything needing a rationale — a decision carries a
|
|
262
|
+
probability, never an explanation. Those belong to `generate`.
|
|
263
|
+
|
|
264
|
+
### Enabling it
|
|
265
|
+
|
|
266
|
+
Set `TYPESAFE_API_KEY` — that one env var is the whole switch.
|
|
267
|
+
[TypeSafe Jev](https://console.typesafe.ai/keys) is the first decision provider
|
|
268
|
+
(`AIProviderName.TYPESAFE`, aliases `jev` / `typesafe-ai`). It is also reachable
|
|
269
|
+
through the **Vercel AI Gateway** via `AI_GATEWAY_API_KEY`; force one transport
|
|
270
|
+
with `TYPESAFE_TRANSPORT=direct|gateway`. Per-request credentials work as they do
|
|
271
|
+
for every other provider.
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
import {
|
|
275
|
+
NeuroLink,
|
|
276
|
+
readDecisionChoice,
|
|
277
|
+
gateDecisionBoolean,
|
|
278
|
+
} from "@juspay/neurolink";
|
|
279
|
+
|
|
280
|
+
const neurolink = new NeuroLink();
|
|
281
|
+
|
|
282
|
+
const result = await neurolink.tryDecide({
|
|
283
|
+
state: { ticket: "Customer reports a failed $42 payment, first occurrence." },
|
|
284
|
+
questions: {
|
|
285
|
+
team: {
|
|
286
|
+
type: "choice",
|
|
287
|
+
instructions: "Which team should handle this?",
|
|
288
|
+
criteria: { billing: "Payments", technical: "Bugs", sales: "Pricing" },
|
|
289
|
+
},
|
|
290
|
+
autoRefund: {
|
|
291
|
+
type: "boolean",
|
|
292
|
+
instructions: "Approve the refund without human review.",
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
const team = result && readDecisionChoice(result.answers, "team");
|
|
298
|
+
if (team && team.confidence > 0.7) {
|
|
299
|
+
route(team.choice); // team.ranked is the full ordering, not just the winner
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// A boolean has no confidence of its own, so gate on BOTH the probability and
|
|
303
|
+
// its distance from a coin flip. `undefined` means "not sure" — not "no".
|
|
304
|
+
const refund = result && gateDecisionBoolean(result.answers, "autoRefund");
|
|
305
|
+
if (refund === true) autoRefund();
|
|
306
|
+
else queueForHuman();
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Where NeuroLink uses it itself
|
|
310
|
+
|
|
311
|
+
**Five `decide()` calls across the codebase**, each fail-open and a no-op
|
|
312
|
+
without a key — so nothing changes in its absence:
|
|
313
|
+
|
|
314
|
+
| # | Call site | What it asks | Guide |
|
|
315
|
+
| --- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
316
|
+
| 1 | `routing/classifierStrategies.ts` | Difficulty, required capabilities, risk, how much context is needed, **and** which model to pick — all in **one** request | [routing](docs/features/classifier-router-jev-strategy.md) · [catalogue](docs/features/classifier-router-catalog.md) · [context budget](docs/features/context-budget.md) |
|
|
317
|
+
| 2 | `context/contextDecision.ts` | One yes/no per earlier message: is this still needed for the current request? | [relevance compaction](docs/features/relevance-compaction.md) |
|
|
318
|
+
| 3 | `context/contextDecision.ts` | Does this generated summary preserve every decision and open question? | [relevance compaction](docs/features/relevance-compaction.md) |
|
|
319
|
+
| 4 | `core/toolRoutingDecision.ts` | One yes/no per MCP server: does the request need it? Drops only on a confident "no" | [tool routing](docs/features/tool-routing-decision-model.md) |
|
|
320
|
+
| 5 | `rag/retrieval/searchDecision.ts` | Per query: `topK` breadth, and whether to use hybrid / graph / rerank | [RAG planning](docs/features/rag-retrieval-planning.md) |
|
|
321
|
+
|
|
322
|
+
Worth being precise about two of these, because the grouping is easy to
|
|
323
|
+
misread:
|
|
324
|
+
|
|
325
|
+
- **Call 1 is a single request that does the work of three features.** Model
|
|
326
|
+
routing, the registry-derived catalogue and the per-request
|
|
327
|
+
`compactionThreshold` all read different answers out of the _same_ call —
|
|
328
|
+
the context budget is not a second round trip, and `modelCatalog.ts` never
|
|
329
|
+
calls `decide()` at all; it renders the candidate lines that call 1's model
|
|
330
|
+
question chooses between. That is the batch-never-fan-out rule applied to
|
|
331
|
+
NeuroLink's own code.
|
|
332
|
+
- **Call 5 is opt-in wiring, not automatic.** Per-query planning lives in
|
|
333
|
+
`RAGPipeline`, which the `rag: { files }` shortcut on `generate()`/`stream()`
|
|
334
|
+
does not construct. Build a `RAGPipeline` yourself and pass a decide function
|
|
335
|
+
to get it; the shortcut path is unchanged.
|
|
336
|
+
|
|
337
|
+
Every one goes through the same `decide()` / `tryDecide()` core, so each gets
|
|
338
|
+
telemetry **even on failure** — a dedicated `model.decision` span, never folded
|
|
339
|
+
into generation metrics. That matters because a decision path that has silently
|
|
340
|
+
stopped working (rate-limited, timed out, provider down) would otherwise look
|
|
341
|
+
identical to one that was never configured; the span is what tells the two
|
|
342
|
+
apart.
|
|
343
|
+
|
|
344
|
+
### What it costs, and its limits
|
|
345
|
+
|
|
346
|
+
Measured against the live API — don't extrapolate past these:
|
|
347
|
+
|
|
348
|
+
- Latency is flat in question count: 1 question ~393ms, 400 questions ~465ms. Concurrent requests **queue**, so batch every question into one call — never fan out.
|
|
349
|
+
- ~$0.042 per million input tokens, output reported but billed at zero — about **$0.00002 per decision**.
|
|
350
|
+
- Two input ceilings: `state` + the longest single question ≈ 33,000 tokens; `state` + all questions ≈ 64,000 tokens.
|
|
351
|
+
- **Accuracy is the trade-off**: ~68% on TypeSafe's own 711-case benchmark vs. ~73% for a frontier model (TypeSafe's published figures, not our measurement). Use it for decisions that are **gated and reversible** — routing, dropping, budgeting — never for a final answer a user will see.
|
|
352
|
+
|
|
353
|
+
**[Decide Guide](docs/features/decide-inference-type.md)** · **[TypeSafe Provider Guide](docs/getting-started/providers/typesafe.md)**
|
|
354
|
+
|
|
173
355
|
## Enterprise Security: Human-in-the-Loop (HITL)
|
|
174
356
|
|
|
175
357
|
NeuroLink includes a **HITL (Human-in-the-Loop) system** for regulated industries and high-stakes AI operations:
|
|
@@ -228,7 +410,7 @@ npx @juspay/neurolink --help
|
|
|
228
410
|
|
|
229
411
|
### Configuration
|
|
230
412
|
|
|
231
|
-
NeuroLink works with
|
|
413
|
+
NeuroLink works with 40 AI providers. You'll need at least one API key to get started:
|
|
232
414
|
|
|
233
415
|
**Option 1: Interactive Setup (Recommended)**
|
|
234
416
|
|
|
@@ -415,7 +597,7 @@ const result = await neurolink.generate({
|
|
|
415
597
|
### Next Steps
|
|
416
598
|
|
|
417
599
|
- **[Complete Documentation](https://docs.neurolink.ink)** - Comprehensive guides and API reference
|
|
418
|
-
- **[Provider Setup Guide](docs/getting-started/provider-setup.md)** - Configure all
|
|
600
|
+
- **[Provider Setup Guide](docs/getting-started/provider-setup.md)** - Configure all 40 providers
|
|
419
601
|
- **[SDK API Reference](docs/sdk/api-reference.md)** - Full TypeScript API documentation
|
|
420
602
|
- **[CLI Command Reference](docs/cli/commands.md)** - Complete CLI documentation
|
|
421
603
|
- **[Example Projects](docs/examples/index.md)** - Real-world integration examples
|
|
@@ -447,7 +629,7 @@ NeuroLink is a comprehensive AI development platform. Every feature below is shi
|
|
|
447
629
|
|
|
448
630
|
### 🤖 AI Provider Integration
|
|
449
631
|
|
|
450
|
-
**
|
|
632
|
+
**40 providers unified under one API** - Switch providers with a single parameter change. 39 serve `generate`/`stream`; 1 (TypeSafe Jev) serves `decide`. Tool support: 29 native tool-calling, 3 model-dependent, 8 that serve no tools at all (embedding-, media- and decision-only). 3 are fully local runtimes (Ollama, LM Studio, llama.cpp) and 4 need zero configuration to start (those three plus LiteLLM) — no cloud account, no API key. 9 providers (OpenAI, Google AI Studio, Google Vertex, Amazon Bedrock, Cohere, Ollama, LiteLLM, Voyage, Jina) expose `embed()`/`embedMany()` natively for RAG and custom vector search.
|
|
451
633
|
|
|
452
634
|
| Provider | Models | Free Tier | Tool Support | Status | Documentation |
|
|
453
635
|
| --------------------- | -------------------------------------------------------------------------- | --------------- | ------------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -473,8 +655,20 @@ NeuroLink is a comprehensive AI development platform. Every feature below is shi
|
|
|
473
655
|
| **Deepgram** | Nova-3, Nova-2, Enhanced, Base (STT) | ✅ Free Tier | N/A | ✅ Production | [Setup Guide](docs/getting-started/provider-setup.md#deepgram) |
|
|
474
656
|
| **Azure Speech** | Azure Cognitive Services TTS + STT | ❌ | N/A | ✅ Production | [Setup Guide](docs/getting-started/provider-setup.md#azure-speech) |
|
|
475
657
|
|
|
658
|
+
**The other 23 providers**, each with its own setup guide:
|
|
659
|
+
|
|
660
|
+
**Hosted inference (OpenAI-wire compatible)** — [Groq](docs/getting-started/providers/groq.md) — default `openai/gpt-oss-120b` (`GROQ_API_KEY`) · [Cerebras](docs/getting-started/providers/cerebras.md) — default `gpt-oss-120b` (`CEREBRAS_API_KEY`) · [SambaNova](docs/getting-started/providers/sambanova.md) — default `Meta-Llama-3.3-70B-Instruct` (`SAMBANOVA_API_KEY`) · [Together AI](docs/getting-started/providers/together-ai.md) — default `meta-llama/Llama-3.3-70B-Instruct-Turbo` (`TOGETHER_API_KEY`) · [Fireworks AI](docs/getting-started/providers/fireworks.md) — default `accounts/fireworks/models/kimi-k2p6` (`FIREWORKS_API_KEY`) · [Perplexity](docs/getting-started/providers/perplexity.md) — default `sonar` (`PERPLEXITY_API_KEY`) · [Cloudflare Workers AI](docs/getting-started/providers/cloudflare.md) — default `@cf/meta/llama-3.3-70b-instruct-fp8-fast` (`CLOUDFLARE_API_KEY`) · [xAI Grok](docs/getting-started/providers/xai.md) — default `grok-4.6` (`XAI_API_KEY`) · [API Route](docs/getting-started/providers/api-route.md) — default `claude-sonnet-4-6` (`API_ROUTE_API_KEY`) · [Baseten](docs/getting-started/providers/baseten.md) — default `zai-org/GLM-5.3-Flash` (`BASETEN_API_KEY`) · [GMI Cloud](docs/getting-started/providers/gmicloud.md) — default `MiniMaxAI/MiniMax-M3` (`GMICLOUD_API_KEY`) · [Inception Labs](docs/getting-started/providers/inception-labs.md) — default `mercury-2` (`INCEPTION_LABS_API_KEY`) · [io.net Intelligence](docs/getting-started/providers/io-intelligence.md) — default `meta-llama/Llama-3.3-70B-Instruct` (`IO_INTELLIGENCE_API_KEY`) · [Mancer](docs/getting-started/providers/mancer.md) — default `deepseek-v4-flash`; **no tool calling** (`MANCER_API_KEY`) · [Upstage](docs/getting-started/providers/upstage.md) — default `solar-pro4` (`UPSTAGE_API_KEY`)
|
|
661
|
+
|
|
662
|
+
**Embeddings & reranking** — [Cohere](docs/getting-started/providers/cohere.md) (`COHERE_API_KEY`) · [Voyage AI](docs/getting-started/providers/voyage.md) (`VOYAGE_API_KEY`) · [Jina AI](docs/getting-started/providers/jina.md) (`JINA_API_KEY`)
|
|
663
|
+
|
|
664
|
+
**Media generation** — [Replicate](docs/getting-started/providers/replicate.md) (`REPLICATE_API_TOKEN`) · [Stability AI](docs/getting-started/providers/stability.md) (`STABILITY_API_KEY`) · [Ideogram](docs/getting-started/providers/ideogram.md) (`IDEOGRAM_API_KEY`) · [Recraft](docs/getting-started/providers/recraft.md) (`RECRAFT_API_KEY`)
|
|
665
|
+
|
|
666
|
+
**Decision** — [TypeSafe Jev](docs/getting-started/providers/typesafe.md) (`TYPESAFE_API_KEY`, or `AI_GATEWAY_API_KEY` via the Vercel AI Gateway) — the only provider serving `decide` rather than `generate`/`stream`.
|
|
667
|
+
|
|
668
|
+
**Decision-only provider:** **TypeSafe Jev** (`TYPESAFE_API_KEY`) does not appear in the table above because it does not serve `generate`/`stream` — it is the first provider for the `decide` inference type. See [Decide: Calibrated Judgments, Not Text](#decide-calibrated-judgments-not-text).
|
|
669
|
+
|
|
476
670
|
**[📖 Provider Comparison Guide](docs/reference/provider-comparison.md)** - Detailed feature matrix and selection criteria
|
|
477
|
-
**[🔬 Provider Feature Compatibility](docs/reference/provider-feature-compatibility.md)** - Test-based compatibility reference for all 19 features across
|
|
671
|
+
**[🔬 Provider Feature Compatibility](docs/reference/provider-feature-compatibility.md)** - Test-based compatibility reference for all 19 features across 40 providers
|
|
478
672
|
|
|
479
673
|
---
|
|
480
674
|
|
|
@@ -491,7 +685,7 @@ NeuroLink is a comprehensive AI development platform. Every feature below is shi
|
|
|
491
685
|
| `calculateMath` | Mathematical operations | ✅ | [Tool Reference](docs/sdk/custom-tools.md) |
|
|
492
686
|
| `websearchGrounding` | Google Vertex web search | ⚠️ Requires credentials | [Tool Reference](docs/sdk/custom-tools.md) |
|
|
493
687
|
|
|
494
|
-
**External MCP servers** — connect any MCP-compliant server via `neurolink mcp add`;
|
|
688
|
+
**External MCP servers** — connect any MCP-compliant server via `neurolink mcp add`; 9 popular servers (GitHub, PostgreSQL, SQLite, Filesystem, Git, Brave Search, Puppeteer, Memory, Bitbucket) ship with ready-made configs:
|
|
495
689
|
|
|
496
690
|
```typescript
|
|
497
691
|
// stdio transport - local MCP servers via command execution
|
|
@@ -598,16 +792,17 @@ const batcher = new RequestBatcher({ maxBatchSize: 10, maxWaitMs: 50 });
|
|
|
598
792
|
|
|
599
793
|
**17+ file categories supported** (50+ total file types including code languages) with intelligent content extraction and provider-agnostic processing:
|
|
600
794
|
|
|
601
|
-
| Category | Supported Types
|
|
602
|
-
| ------------- |
|
|
603
|
-
| **Documents** | Excel (`.xlsx`, `.xls`), Word (`.docx`), PowerPoint (`.pptx`), RTF, OpenDocument
|
|
604
|
-
| **Data** | JSON, YAML, XML
|
|
605
|
-
| **Markup** | HTML, SVG, Markdown, Text
|
|
606
|
-
| **Code** | 50+ languages (TypeScript, Python, Java, Go, etc.)
|
|
607
|
-
| **Config** | `.env`, `.ini`, `.toml`, `.cfg`
|
|
608
|
-
| **Media** | Images (PNG, JPEG, WebP, GIF), PDFs, CSV
|
|
609
|
-
| **Audio** | `.mp3`, `.wav`, `.m4a`, `.ogg`, `.flac`, `.webm`
|
|
610
|
-
| **Video** | `.mp4`, `.webm`, `.mov`, `.mkv`, `.avi`
|
|
795
|
+
| Category | Supported Types | Processing |
|
|
796
|
+
| ------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
|
|
797
|
+
| **Documents** | Excel (`.xlsx`, `.xls`), Word (`.docx`), PowerPoint (`.pptx`), RTF, OpenDocument | Sheet extraction, text extraction, slide + speaker-notes extraction |
|
|
798
|
+
| **Data** | JSON, YAML, XML | Validation, syntax highlighting |
|
|
799
|
+
| **Markup** | HTML, SVG, Markdown, Text | OWASP-compliant sanitization |
|
|
800
|
+
| **Code** | 50+ languages (TypeScript, Python, Java, Go, etc.) | Language detection, syntax metadata |
|
|
801
|
+
| **Config** | `.env`, `.ini`, `.toml`, `.cfg` | Secure parsing |
|
|
802
|
+
| **Media** | Images (PNG, JPEG, WebP, GIF), PDFs, CSV | Provider-specific formatting |
|
|
803
|
+
| **Audio** | `.mp3`, `.wav`, `.m4a`, `.ogg`, `.flac`, `.webm` | Automatic transcription + duration metadata |
|
|
804
|
+
| **Video** | `.mp4`, `.webm`, `.mov`, `.mkv`, `.avi` | Keyframe extraction, metadata, embedded subtitles |
|
|
805
|
+
| **Archive** | `.zip`, `.tar`, `.gz`, `.tgz`, `.bz2`, `.tbz2`, `.jar`, `.xz`, `.txz`, `.zst`, `.tzst` | Entry listing, nested text extraction |
|
|
611
806
|
|
|
612
807
|
```typescript
|
|
613
808
|
// Process any supported file type
|
|
@@ -659,7 +854,7 @@ neurolink generate "Describe what happens" --file ./demo.mp4
|
|
|
659
854
|
- **ProcessorRegistry** - Priority-based processor selection with fallback
|
|
660
855
|
- **OWASP Security** - HTML/SVG sanitization prevents XSS attacks
|
|
661
856
|
- **Auto-detection** - FileDetector identifies file types by extension and content
|
|
662
|
-
- **Provider-agnostic** - All processors work across all
|
|
857
|
+
- **Provider-agnostic** - All processors work across all 40 AI providers
|
|
663
858
|
|
|
664
859
|
**[📖 File Processors Guide](docs/features/file-processors.md)** - Complete reference for all file types
|
|
665
860
|
|
|
@@ -669,17 +864,17 @@ neurolink generate "Describe what happens" --file ./demo.mp4
|
|
|
669
864
|
|
|
670
865
|
**Capabilities for regulated industries:**
|
|
671
866
|
|
|
672
|
-
| Feature | Description
|
|
673
|
-
| --------------------------- |
|
|
674
|
-
| **Enterprise Proxy** | Corporate proxy support
|
|
675
|
-
| **Redis Memory** | Distributed conversation state
|
|
676
|
-
| **Memory** | Per-user condensed memory (S3/Redis/SQLite)
|
|
677
|
-
| **Cost Optimization** | Automatic cheapest model selection
|
|
678
|
-
| **Multi-Provider Failover** | Automatic provider switching
|
|
679
|
-
| **Telemetry & Monitoring** | OpenTelemetry integration
|
|
680
|
-
| **Security Hardening** | Credential management, auditing
|
|
681
|
-
| **Custom Model Hosting** | SageMaker integration
|
|
682
|
-
| **Load Balancing** | LiteLLM proxy integration
|
|
867
|
+
| Feature | Description | Use Case | Documentation |
|
|
868
|
+
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ----------------------------------------------------------- |
|
|
869
|
+
| **Enterprise Proxy** | Corporate proxy support | Behind firewalls | [Proxy Setup](docs/enterprise-proxy-setup.md) |
|
|
870
|
+
| **Redis Memory** | Distributed conversation state | Multi-instance deployment | [Redis Guide](docs/getting-started/provider-setup.md#redis) |
|
|
871
|
+
| **Memory** | Per-user condensed memory (S3/Redis/SQLite) | Long-term user context | [Memory Guide](docs/features/memory.md) |
|
|
872
|
+
| **Cost Optimization** | Automatic cheapest model selection | Budget control | [Cost Guide](docs/advanced/index.md) |
|
|
873
|
+
| **Multi-Provider Failover** | Automatic provider switching | High availability | [Failover Guide](docs/advanced/index.md) |
|
|
874
|
+
| **Telemetry & Monitoring** | OpenTelemetry integration, 9 exporters (Arize, Braintrust, Datadog, Laminar, Langfuse, LangSmith, OTel, PostHog, Sentry), OTel GenAI semantic conventions, and a dedicated `model.decision` span type with its own cost attribution so decision calls never distort generation dashboards | Observability | [Telemetry Guide](docs/telemetry-guide.md) |
|
|
875
|
+
| **Security Hardening** | Credential management, auditing | Compliance | [Security Guide](docs/advanced/enterprise.md) |
|
|
876
|
+
| **Custom Model Hosting** | SageMaker integration | Private models | [SageMaker Guide](docs/sagemaker-integration.md) |
|
|
877
|
+
| **Load Balancing** | LiteLLM proxy integration | Scale & routing | [Load Balancing](docs/litellm-integration.md) |
|
|
683
878
|
|
|
684
879
|
**Security & Compliance:**
|
|
685
880
|
|
|
@@ -789,7 +984,7 @@ node your-app.js
|
|
|
789
984
|
|
|
790
985
|
### 🤖 GitHub Action
|
|
791
986
|
|
|
792
|
-
Run AI-powered workflows directly in GitHub Actions with
|
|
987
|
+
Run AI-powered workflows directly in GitHub Actions with 40 provider support and automatic PR/issue commenting.
|
|
793
988
|
|
|
794
989
|
```yaml
|
|
795
990
|
- uses: juspay/neurolink@v1
|
|
@@ -801,7 +996,7 @@ Run AI-powered workflows directly in GitHub Actions with 30+ provider support an
|
|
|
801
996
|
|
|
802
997
|
| Feature | Description |
|
|
803
998
|
| ---------------------- | ----------------------------------------------------------------------------------------- |
|
|
804
|
-
| **Multi-Provider** |
|
|
999
|
+
| **Multi-Provider** | 40 providers with unified interface |
|
|
805
1000
|
| **PR/Issue Comments** | Auto-post AI responses with intelligent updates |
|
|
806
1001
|
| **Multimodal Support** | Attach images, PDFs, CSVs, Excel, Word, JSON, YAML, XML, HTML, SVG, code files to prompts |
|
|
807
1002
|
| **Cost Tracking** | Built-in analytics and quality evaluation |
|
|
@@ -992,31 +1187,34 @@ Full command and API breakdown lives in [`docs/cli/commands.md`](docs/cli/comman
|
|
|
992
1187
|
|
|
993
1188
|
## Platform Capabilities at a Glance
|
|
994
1189
|
|
|
995
|
-
| Capability | Highlights
|
|
996
|
-
| ------------------------ |
|
|
997
|
-
| **Provider unification** |
|
|
998
|
-
| **
|
|
999
|
-
| **
|
|
1000
|
-
| **
|
|
1001
|
-
| **
|
|
1002
|
-
| **
|
|
1003
|
-
| **
|
|
1004
|
-
| **
|
|
1190
|
+
| Capability | Highlights |
|
|
1191
|
+
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1192
|
+
| **Provider unification** | 40 providers with automatic fallback, cost-aware routing, `providerFallback` policy, `modelChain` config. |
|
|
1193
|
+
| **Decision inference** | Third inference type (`decide`) alongside generate/stream: calibrated `boolean`/`choice`/`score` judgments via TypeSafe Jev, ~400ms flat, ~$0.00002/decision. Used internally for model routing, context budgeting, relevance compaction and tool routing; per-query RAG planning is opt-in via `RAGPipeline`. |
|
|
1194
|
+
| **Multimodal pipeline** | Stream images + CSV data + PDF documents across providers with local/remote assets. Auto-detection for mixed file types. |
|
|
1195
|
+
| **Voice pipeline** | TTS (6 providers: Google, OpenAI, ElevenLabs, Azure, Fish Audio, Cartesia) + STT (4 providers) + realtime voice APIs (OpenAI Realtime, Gemini Live). |
|
|
1196
|
+
| **Quality & governance** | Auto-evaluation engine (14 scorers), guardrails middleware, HITL workflows, audit logging. |
|
|
1197
|
+
| **Memory & context** | Per-user condensed memory (S3/Redis/SQLite), Redis session export, 4-stage context compaction. |
|
|
1198
|
+
| **CLI tooling** | 34 commands: loop sessions, setup wizard, config validation, Redis auto-detect, JSON output, TTS/STT flags. |
|
|
1199
|
+
| **Enterprise ops** | Claude proxy, OTLP observability, OpenObserve dashboard, regional routing, credential management. |
|
|
1200
|
+
| **Tool ecosystem** | MCP auto discovery, HTTP/stdio/SSE/WebSocket transports, LiteLLM hub access, SageMaker custom deployment, web search. |
|
|
1201
|
+
| **Engineering rigor** | 129 end-to-end test suites (every suite drives the public `generate`/`stream`/`decide`/CLI surface, never internals), 13 custom ESLint rules enforcing the architecture (no `interface`, unique type names, barrel-only type imports) — all AST-based, no regex heuristics. |
|
|
1005
1202
|
|
|
1006
1203
|
## Documentation Map
|
|
1007
1204
|
|
|
1008
|
-
| Area | When to Use | Link
|
|
1009
|
-
| --------------- | --------------------------------------------------------- |
|
|
1010
|
-
| Getting started | Install, configure, run first prompt | [`docs/getting-started/index.md`](docs/getting-started/index.md)
|
|
1011
|
-
| Feature guides | Understand new functionality front-to-back | [`docs/features/index.md`](docs/features/index.md)
|
|
1012
|
-
|
|
|
1013
|
-
|
|
|
1014
|
-
|
|
|
1015
|
-
|
|
|
1016
|
-
|
|
|
1017
|
-
|
|
|
1018
|
-
|
|
|
1019
|
-
|
|
|
1205
|
+
| Area | When to Use | Link |
|
|
1206
|
+
| --------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------- |
|
|
1207
|
+
| Getting started | Install, configure, run first prompt | [`docs/getting-started/index.md`](docs/getting-started/index.md) |
|
|
1208
|
+
| Feature guides | Understand new functionality front-to-back | [`docs/features/index.md`](docs/features/index.md) |
|
|
1209
|
+
| Decide | Calibrated judgments (boolean/choice/score), not text | [`docs/features/decide-inference-type.md`](docs/features/decide-inference-type.md) |
|
|
1210
|
+
| CLI reference | Command syntax, flags, loop sessions | [`docs/cli/index.md`](docs/cli/index.md) |
|
|
1211
|
+
| SDK reference | Classes, methods, options | [`docs/sdk/index.md`](docs/sdk/index.md) |
|
|
1212
|
+
| RAG | Document chunking, hybrid search, reranking, `rag:{}` API | [`docs/features/rag.md`](docs/features/rag.md) |
|
|
1213
|
+
| Integrations | LiteLLM, SageMaker, MCP | [`docs/litellm-integration.md`](docs/litellm-integration.md) |
|
|
1214
|
+
| Advanced | Middleware, architecture, streaming patterns | [`docs/advanced/index.md`](docs/advanced/index.md) |
|
|
1215
|
+
| Cookbook | Practical recipes for common patterns | [`docs/cookbook/index.md`](docs/cookbook/index.md) |
|
|
1216
|
+
| Guides | Migration, Redis, troubleshooting, provider selection | [`docs/guides/index.md`](docs/guides/index.md) |
|
|
1217
|
+
| Operations | Configuration, troubleshooting, provider matrix | [`docs/reference/index.md`](docs/reference/index.md) |
|
|
1020
1218
|
|
|
1021
1219
|
### New in 2026: Enhanced Documentation
|
|
1022
1220
|
|
|
@@ -1026,6 +1224,10 @@ Full command and API breakdown lives in [`docs/cli/commands.md`](docs/cli/comman
|
|
|
1026
1224
|
- [Interactive CLI Guide](docs/features/interactive-cli.md) - AI development environment
|
|
1027
1225
|
- [MCP Tools Showcase](docs/features/mcp-tools-showcase.md) - 6 built-in tools & connecting external MCP servers
|
|
1028
1226
|
|
|
1227
|
+
**Decision Inference:**
|
|
1228
|
+
|
|
1229
|
+
- [Decide Guide](docs/features/decide-inference-type.md) - The `decide` inference type: boolean/choice/score primitives, TypeSafe Jev setup, measured latency/cost
|
|
1230
|
+
|
|
1029
1231
|
**Provider Intelligence:**
|
|
1030
1232
|
|
|
1031
1233
|
- [Provider Capabilities Audit](docs/reference/provider-capabilities-audit.md) - Technical capabilities matrix
|