@juspay/neurolink 12.18.0 → 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.
Files changed (77) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/README.md +277 -75
  3. package/dist/browser/neurolink.min.js +396 -396
  4. package/dist/cli/commands/setup.js +2 -1
  5. package/dist/cli/factories/commandFactory.d.ts +22 -2
  6. package/dist/cli/factories/commandFactory.js +14 -2
  7. package/dist/cli/loop/optionsSchema.js +4 -0
  8. package/dist/cli/utils/classifierRouterFlags.js +39 -1
  9. package/dist/constants/enums.d.ts +13 -0
  10. package/dist/constants/enums.js +14 -0
  11. package/dist/context/budgetChecker.d.ts +3 -1
  12. package/dist/context/budgetChecker.js +20 -4
  13. package/dist/context/contextCompactor.d.ts +43 -3
  14. package/dist/context/contextCompactor.js +157 -41
  15. package/dist/context/contextDecision.d.ts +56 -0
  16. package/dist/context/contextDecision.js +234 -0
  17. package/dist/core/baseProvider.d.ts +27 -1
  18. package/dist/core/baseProvider.js +39 -0
  19. package/dist/core/toolRouting.d.ts +8 -0
  20. package/dist/core/toolRouting.js +52 -1
  21. package/dist/core/toolRoutingDecision.d.ts +35 -0
  22. package/dist/core/toolRoutingDecision.js +194 -0
  23. package/dist/factories/providerDescriptors.d.ts +15 -0
  24. package/dist/factories/providerDescriptors.js +57 -1
  25. package/dist/factories/providerRegistry.js +9 -1
  26. package/dist/index.d.ts +57 -1
  27. package/dist/index.js +60 -1
  28. package/dist/models/manifestRegistry.js +2 -0
  29. package/dist/models/manifests/typesafe.d.ts +16 -0
  30. package/dist/models/manifests/typesafe.js +42 -0
  31. package/dist/neurolink.d.ts +57 -1
  32. package/dist/neurolink.js +254 -10
  33. package/dist/observability/exporters/laminarExporter.js +3 -0
  34. package/dist/observability/exporters/posthogExporter.js +3 -0
  35. package/dist/observability/utils/spanSerializer.js +4 -0
  36. package/dist/providers/catalog/schema.d.ts +1 -1
  37. package/dist/providers/typesafe.d.ts +112 -0
  38. package/dist/providers/typesafe.js +654 -0
  39. package/dist/proxy/proxyHistoryTruncation.js +15 -10
  40. package/dist/rag/pipeline/RAGPipeline.d.ts +3 -1
  41. package/dist/rag/pipeline/RAGPipeline.js +65 -4
  42. package/dist/rag/retrieval/searchDecision.d.ts +27 -0
  43. package/dist/rag/retrieval/searchDecision.js +124 -0
  44. package/dist/routing/classifierRouter.d.ts +74 -2
  45. package/dist/routing/classifierRouter.js +232 -32
  46. package/dist/routing/classifierStrategies.d.ts +33 -1
  47. package/dist/routing/classifierStrategies.js +237 -0
  48. package/dist/routing/index.d.ts +1 -1
  49. package/dist/routing/index.js +1 -1
  50. package/dist/routing/modelCatalog.d.ts +79 -0
  51. package/dist/routing/modelCatalog.js +382 -0
  52. package/dist/telemetry/tracers.d.ts +1 -0
  53. package/dist/telemetry/tracers.js +1 -0
  54. package/dist/types/classifierRouter.d.ts +160 -4
  55. package/dist/types/cli.d.ts +17 -1
  56. package/dist/types/config.d.ts +12 -0
  57. package/dist/types/context.d.ts +55 -1
  58. package/dist/types/decision.d.ts +200 -0
  59. package/dist/types/decision.js +21 -0
  60. package/dist/types/generate.d.ts +20 -0
  61. package/dist/types/index.d.ts +1 -0
  62. package/dist/types/index.js +2 -0
  63. package/dist/types/providers.d.ts +59 -1
  64. package/dist/types/providers.js +5 -0
  65. package/dist/types/rag.d.ts +48 -0
  66. package/dist/types/span.d.ts +11 -0
  67. package/dist/types/span.js +11 -0
  68. package/dist/types/stream.d.ts +13 -0
  69. package/dist/types/toolRouting.d.ts +56 -0
  70. package/dist/utils/decisionAnswers.d.ts +56 -0
  71. package/dist/utils/decisionAnswers.js +95 -0
  72. package/dist/utils/modelChoices.js +13 -1
  73. package/dist/utils/pricing.js +11 -0
  74. package/dist/utils/providerConfig.d.ts +4 -0
  75. package/dist/utils/providerConfig.js +17 -0
  76. package/docs-site/static/search-index.json +1 -1
  77. package/package.json +16 -3
package/CHANGELOG.md CHANGED
@@ -1,8 +1,8 @@
1
- ## [12.18.0](https://github.com/juspay/neurolink/compare/v12.17.4...v12.18.0) (2026-09-20)
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
- - **(proxy):** native Claude-on-Vertex fallback so agentic turns survive the hop ([574240f](https://github.com/juspay/neurolink/commit/574240f9f3c55d571668fd83cb4b22542b854564))
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 30+ AI providers and 100+ models under one consistent API.**
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 30+ supported providers, NeuroLink gives you a single, consistent interface that works everywhere.
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 (Q1 2026)
48
-
49
- | Feature | Version | Description | Guide |
50
- | -------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
51
- | **SambaNova Provider** | next | 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) |
52
- | **Cerebras Provider** | next | 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) |
53
- | **Avatar / Music Modalities + 12 Providers** | next | 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/) |
54
- | **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) |
55
- | **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) |
56
- | **ModelAccessDeniedError** | v9.59.0 | Typed `ModelAccessDeniedError` + `sdk.checkCredentials()` API for proactive credential validation before first call. | [Error Reference](docs/reference/troubleshooting.md) |
57
- | **Provider Fallback Policy** | v9.58.0 | `providerFallback` callback + `modelChain` config for centralized multi-provider fallback logic. | [Advanced Guide](docs/advanced/index.md) |
58
- | **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) |
59
- | **AutoResearch** | v9.53.0 | Autonomous AI experiment engine: proposes code changes, runs experiments, evaluates metrics — unattended for hours. | [AutoResearch Guide](docs/features/autoresearch.md) |
60
- | **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) |
61
- | **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) |
62
- | **Memory** | v9.12.0 | Per-user condensed memory across conversations. LLM-powered condensation with S3, Redis, or SQLite. | [Memory Guide](docs/features/memory.md) |
63
- | **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) |
64
- | **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) |
65
- | **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) |
66
- | **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. | [RAG Guide](docs/features/rag.md) |
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 (Q3–Q4 2025)</strong></summary>
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 30+ AI providers. You'll need at least one API key to get started:
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 30+ providers
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
- **30+ providers unified under one API** - Switch providers with a single parameter change.
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 30+ providers
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`; 11 popular servers (GitHub, PostgreSQL, Google Drive, Slack, and more) ship with ready-made configs:
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 | Processing |
602
- | ------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
603
- | **Documents** | Excel (`.xlsx`, `.xls`), Word (`.docx`), PowerPoint (`.pptx`), RTF, OpenDocument | Sheet extraction, text extraction, slide + speaker-notes extraction |
604
- | **Data** | JSON, YAML, XML | Validation, syntax highlighting |
605
- | **Markup** | HTML, SVG, Markdown, Text | OWASP-compliant sanitization |
606
- | **Code** | 50+ languages (TypeScript, Python, Java, Go, etc.) | Language detection, syntax metadata |
607
- | **Config** | `.env`, `.ini`, `.toml`, `.cfg` | Secure parsing |
608
- | **Media** | Images (PNG, JPEG, WebP, GIF), PDFs, CSV | Provider-specific formatting |
609
- | **Audio** | `.mp3`, `.wav`, `.m4a`, `.ogg`, `.flac`, `.webm` | Automatic transcription + duration metadata |
610
- | **Video** | `.mp4`, `.webm`, `.mov`, `.mkv`, `.avi` | Keyframe extraction, metadata, embedded subtitles |
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 30+ AI providers
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 | Use Case | Documentation |
673
- | --------------------------- | ------------------------------------------- | ------------------------- | ----------------------------------------------------------- |
674
- | **Enterprise Proxy** | Corporate proxy support | Behind firewalls | [Proxy Setup](docs/enterprise-proxy-setup.md) |
675
- | **Redis Memory** | Distributed conversation state | Multi-instance deployment | [Redis Guide](docs/getting-started/provider-setup.md#redis) |
676
- | **Memory** | Per-user condensed memory (S3/Redis/SQLite) | Long-term user context | [Memory Guide](docs/features/memory.md) |
677
- | **Cost Optimization** | Automatic cheapest model selection | Budget control | [Cost Guide](docs/advanced/index.md) |
678
- | **Multi-Provider Failover** | Automatic provider switching | High availability | [Failover Guide](docs/advanced/index.md) |
679
- | **Telemetry & Monitoring** | OpenTelemetry integration | Observability | [Telemetry Guide](docs/telemetry-guide.md) |
680
- | **Security Hardening** | Credential management, auditing | Compliance | [Security Guide](docs/advanced/enterprise.md) |
681
- | **Custom Model Hosting** | SageMaker integration | Private models | [SageMaker Guide](docs/sagemaker-integration.md) |
682
- | **Load Balancing** | LiteLLM proxy integration | Scale & routing | [Load Balancing](docs/litellm-integration.md) |
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 30+ provider support and automatic PR/issue commenting.
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** | 30+ providers with unified interface |
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** | 30+ providers with automatic fallback, cost-aware routing, `providerFallback` policy, `modelChain` config. |
998
- | **Multimodal pipeline** | Stream images + CSV data + PDF documents across providers with local/remote assets. Auto-detection for mixed file types. |
999
- | **Voice pipeline** | TTS (6 providers: Google, OpenAI, ElevenLabs, Azure, Fish Audio, Cartesia) + STT (4 providers) + realtime voice APIs (OpenAI Realtime, Gemini Live). |
1000
- | **Quality & governance** | Auto-evaluation engine (14 scorers), guardrails middleware, HITL workflows, audit logging. |
1001
- | **Memory & context** | Per-user condensed memory (S3/Redis/SQLite), Redis session export, 4-stage context compaction. |
1002
- | **CLI tooling** | Loop sessions, setup wizard, config validation, Redis auto-detect, JSON output, TTS/STT flags. |
1003
- | **Enterprise ops** | Claude proxy, OTLP observability, OpenObserve dashboard, regional routing, credential management. |
1004
- | **Tool ecosystem** | MCP auto discovery, HTTP/stdio/SSE/WebSocket transports, LiteLLM hub access, SageMaker custom deployment, web search. |
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
- | CLI reference | Command syntax, flags, loop sessions | [`docs/cli/index.md`](docs/cli/index.md) |
1013
- | SDK reference | Classes, methods, options | [`docs/sdk/index.md`](docs/sdk/index.md) |
1014
- | RAG | Document chunking, hybrid search, reranking, `rag:{}` API | [`docs/features/rag.md`](docs/features/rag.md) |
1015
- | Integrations | LiteLLM, SageMaker, MCP | [`docs/litellm-integration.md`](docs/litellm-integration.md) |
1016
- | Advanced | Middleware, architecture, streaming patterns | [`docs/advanced/index.md`](docs/advanced/index.md) |
1017
- | Cookbook | Practical recipes for common patterns | [`docs/cookbook/index.md`](docs/cookbook/index.md) |
1018
- | Guides | Migration, Redis, troubleshooting, provider selection | [`docs/guides/index.md`](docs/guides/index.md) |
1019
- | Operations | Configuration, troubleshooting, provider matrix | [`docs/reference/index.md`](docs/reference/index.md) |
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