@juspay/neurolink 13.1.1 → 13.3.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 +71 -52
- package/dist/browser/neurolink.min.js +411 -411
- package/dist/cli/commands/decide.d.ts +2 -1
- package/dist/cli/commands/decide.js +2 -1
- package/dist/cli/commands/setup.d.ts +1 -1
- package/dist/cli/commands/setup.js +1 -1
- package/dist/cli/factories/commandFactory.js +1 -1
- package/dist/constants/contextWindows.d.ts +7 -0
- package/dist/constants/contextWindows.js +48 -0
- package/dist/constants/enums.d.ts +5 -0
- package/dist/constants/enums.js +6 -0
- package/dist/core/baseProvider.d.ts +0 -1
- package/dist/core/baseProvider.js +5 -2
- package/dist/factories/providerDescriptors.js +13 -9
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/middleware/defaults.d.ts +68 -0
- package/dist/middleware/defaults.js +225 -0
- package/dist/middleware/factory.js +4 -15
- package/dist/middleware/presets.d.ts +12 -0
- package/dist/middleware/presets.js +29 -0
- package/dist/neurolink.d.ts +9 -0
- package/dist/neurolink.js +38 -1
- package/dist/providers/catalog/charm-hyper.json +6 -10
- package/dist/providers/catalog/index.generated.d.ts +1 -1
- package/dist/providers/catalog/index.generated.js +3 -0
- package/dist/providers/catalog/openai-decisions.json +1 -1
- package/dist/providers/catalog/provider-catalog.schema.json +8 -0
- package/dist/providers/catalog/scaledown.json +68 -0
- package/dist/providers/catalog/schema.js +2 -0
- package/dist/providers/configuredDecision.d.ts +5 -0
- package/dist/providers/configuredDecision.js +27 -5
- package/dist/types/classifierRouter.d.ts +10 -9
- package/dist/types/cli.d.ts +2 -2
- package/dist/types/config.d.ts +22 -0
- package/dist/types/providerCatalog.d.ts +22 -0
- package/dist/types/providerCatalog.generated.d.ts +2 -2
- package/dist/types/providers.d.ts +4 -0
- package/dist/utils/pricing.js +12 -0
- package/dist/utils/tokenLimits.js +20 -1
- package/docs-site/static/search-index.json +128 -100
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
## [13.
|
|
1
|
+
## [13.3.0](https://github.com/juspay/neurolink/compare/v13.2.0...v13.3.0) (2026-10-18)
|
|
2
2
|
|
|
3
|
-
###
|
|
3
|
+
### Features
|
|
4
4
|
|
|
5
|
-
- **(
|
|
5
|
+
- **(middleware):** add constructor and global middleware defaults ([a61c7bd](https://github.com/juspay/neurolink/commit/a61c7bd61ae25f6629dd0ec0c97f1f9f158fb044))
|
|
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
|
@@ -59,37 +59,37 @@ Extracted from production systems at Juspay, NeuroLink provides a practical, Typ
|
|
|
59
59
|
|
|
60
60
|
## What's New
|
|
61
61
|
|
|
62
|
-
| Feature
|
|
63
|
-
|
|
|
64
|
-
| **`decide` Inference Type + TypeSafe Jev + Laya + XOR + SubQ + Perplexity + Cloudflare Clef + OpenAI Decisions** | 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 on Jev). Providers: TypeSafe Jev (`TYPESAFE_API_KEY`, also reachable via the Vercel AI Gateway); [Laya](docs/getting-started/providers/laya.md) (`LAYA_API_KEY` + `LAYA_BASE_URL`), an open-weights model you run yourself; [XOR](docs/getting-started/providers/xor.md) (`XOR_API_KEY` + `XOR_BASE_URL`), Juspay's open-weights model; [SubQ](docs/getting-started/providers/subq.md) (`SUBQ_API_KEY`), Subquadratic's hosted SubQ Snap; [Perplexity](docs/getting-started/providers/perplexity-decider.md) (`PERPLEXITY_API_KEY`, the same key as its text provider), a hosted API that also reads images; and [Cloudflare Clef](docs/getting-started/providers/cloudflare-clef.md) (`CLOUDFLARE_API_KEY` + `CLOUDFLARE_ACCOUNT_ID`, the same two as the Workers AI text provider), hosted on Workers AI, which also reads images; and [OpenAI Decisions](docs/getting-started/providers/openai-decisions.md) (`OPENAI_API_KEY`, the same key as the OpenAI chat provider), OpenAI's Decisions API in public beta, which also reads images — the first one configured, in that order, runs, so an OpenAI key alone makes OpenAI Decisions the
|
|
65
|
-
| **7 More Catalog Providers**
|
|
66
|
-
| **Claude-on-Vertex Proxy Fallback**
|
|
67
|
-
| **Native-Loop V3 Conversation Reclaim**
|
|
68
|
-
| **Multi-Modal Embeddings**
|
|
69
|
-
| **Grok Build Auto-Configuration**
|
|
70
|
-
| **Anthropic Execution-Control Contract**
|
|
71
|
-
| **Catalog Tool Declarations Honoured at Runtime**
|
|
72
|
-
| **Artifact Stores: Redis, Custom, Range Reads, Search**
|
|
73
|
-
| **Local CLI Spend Reading**
|
|
74
|
-
| **Native OpenAI Audio Streaming**
|
|
75
|
-
| **HITL Pending-Confirmation State**
|
|
76
|
-
| **OpenCode + Gemini CLI Proxy Clients**
|
|
77
|
-
| **SambaNova Provider**
|
|
78
|
-
| **Cerebras Provider**
|
|
79
|
-
| **Avatar / Music Modalities + 12 Providers**
|
|
80
|
-
| **Multi-Provider Voice (TTS/STT)**
|
|
81
|
-
| **4 New Providers**
|
|
82
|
-
| **ModelAccessDeniedError**
|
|
83
|
-
| **Provider Fallback Policy**
|
|
84
|
-
| **Per-Request Credentials**
|
|
85
|
-
| **AutoResearch**
|
|
86
|
-
| **Gemini 3 Multi-turn Tool Fix**
|
|
87
|
-
| **MCP Enhancements**
|
|
88
|
-
| **Memory**
|
|
89
|
-
| **Context Window Management**
|
|
90
|
-
| **Tool Execution Control**
|
|
91
|
-
| **File Processor System**
|
|
92
|
-
| **RAG with generate()/stream()**
|
|
62
|
+
| Feature | Version | Description | Guide |
|
|
63
|
+
| ---------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
|
64
|
+
| **`decide` Inference Type + TypeSafe Jev + Laya + XOR + SubQ + Perplexity + Cloudflare Clef + OpenAI Decisions + ScaleDown** | 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 on Jev). Providers: TypeSafe Jev (`TYPESAFE_API_KEY`, also reachable via the Vercel AI Gateway); [Laya](docs/getting-started/providers/laya.md) (`LAYA_API_KEY` + `LAYA_BASE_URL`), an open-weights model you run yourself; [XOR](docs/getting-started/providers/xor.md) (`XOR_API_KEY` + `XOR_BASE_URL`), Juspay's open-weights model; [SubQ](docs/getting-started/providers/subq.md) (`SUBQ_API_KEY`), Subquadratic's hosted SubQ Snap; [Perplexity](docs/getting-started/providers/perplexity-decider.md) (`PERPLEXITY_API_KEY`, the same key as its text provider), a hosted API that also reads images; and [Cloudflare Clef](docs/getting-started/providers/cloudflare-clef.md) (`CLOUDFLARE_API_KEY` + `CLOUDFLARE_ACCOUNT_ID`, the same two as the Workers AI text provider), hosted on Workers AI, which also reads images; and [OpenAI Decisions](docs/getting-started/providers/openai-decisions.md) (`OPENAI_API_KEY`, the same key as the OpenAI chat provider), OpenAI's Decisions API in public beta, which also reads images; and [ScaleDown](docs/getting-started/providers/scaledown.md) (`SCALEDOWN_API_KEY`, its own key), a hosted API that reads text only — the first one configured, in that order, runs, so an OpenAI key alone makes OpenAI Decisions the default (only ScaleDown comes after it) and a ScaleDown key alone makes ScaleDown the default one. Used internally for model routing, context budgeting, relevance compaction and tool routing — fail-open and a no-op when no decision provider is configured. 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 | 5-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) |
|
|
93
93
|
|
|
94
94
|
```typescript
|
|
95
95
|
// decide() — a third inference type: calibrated judgments, not text (next)
|
|
@@ -281,7 +281,7 @@ shorter state than TypeSafe's — about 768 tokens on the default
|
|
|
281
281
|
`typed-decisions` checkpoint (320 on `english`/`auto`), against TypeSafe's
|
|
282
282
|
~33,000 — so it fits short, structured decisions rather than long context.
|
|
283
283
|
Every built-in consumer below asks for the first configured decision provider,
|
|
284
|
-
in the order TypeSafe, Laya, XOR, SubQ, Perplexity, Cloudflare Clef, OpenAI Decisions: with
|
|
284
|
+
in the order TypeSafe, Laya, XOR, SubQ, Perplexity, Cloudflare Clef, OpenAI Decisions, ScaleDown: with
|
|
285
285
|
TypeSafe and Laya both configured, TypeSafe runs; with only Laya's key and base URL
|
|
286
286
|
set, Laya runs.
|
|
287
287
|
|
|
@@ -291,7 +291,7 @@ open-weights decision model (`xor-1.1`); setup is on
|
|
|
291
291
|
either: set `XOR_API_KEY` and `XOR_BASE_URL` to the origin of a deployment or of
|
|
292
292
|
a LiteLLM proxy route (or pass `credentials.xor`). XOR counts only with both its
|
|
293
293
|
key and base URL set, and a call can always name it with `provider: "xor"`. It
|
|
294
|
-
accepts images and video, which TypeSafe and
|
|
294
|
+
accepts images and video, which TypeSafe, Laya, SubQ and ScaleDown refuse.
|
|
295
295
|
|
|
296
296
|
[**SubQ**](docs/getting-started/providers/subq.md) is Subquadratic's hosted
|
|
297
297
|
decision model, SubQ Snap (`subq-snap-preview`, in public preview; provider id
|
|
@@ -345,8 +345,8 @@ has a public endpoint, so a key alone configures it: `OPENAI_API_KEY`, or
|
|
|
345
345
|
`credentials.openaiDecisions`. **That key is shared with the OpenAI chat
|
|
346
346
|
provider**, so setting it for chat also configures `decide`: built-in features
|
|
347
347
|
then use OpenAI Decisions whenever none of TypeSafe, Laya, XOR, SubQ, Perplexity or
|
|
348
|
-
Cloudflare Clef is configured,
|
|
349
|
-
|
|
348
|
+
Cloudflare Clef is configured, and it never displaces one that is (only ScaleDown
|
|
349
|
+
comes after it). A key that sits beside an `OPENAI_BASE_URL`, `OPENAI_API_BASE` or `credentials.openai.baseURL` naming another
|
|
350
350
|
host than `https://api.openai.com` is a gateway's, though, and is never used for
|
|
351
351
|
the default. Those features (model routing, tool routing, relevance compaction, the summary
|
|
352
352
|
gate and RAG planning, plus the speech-to-text correction check for a host that
|
|
@@ -361,6 +361,25 @@ it out of `.env`), or configure one of the earlier providers. The guide lists
|
|
|
361
361
|
and [what is not established](docs/getting-started/providers/openai-decisions.md#what-is-not-established)
|
|
362
362
|
about the endpoint.
|
|
363
363
|
|
|
364
|
+
[**ScaleDown**](docs/getting-started/providers/scaledown.md) is ScaleDown's hosted
|
|
365
|
+
Classify models (`classify-1` by default; provider id `scaledown`, with the alias
|
|
366
|
+
`scaledown-classify`). It has a public endpoint, so a key alone configures it:
|
|
367
|
+
`SCALEDOWN_API_KEY`, or `credentials.scaledown`. The key is sent in an `x-api-key`
|
|
368
|
+
header, never as a Bearer token, and **no other provider reads it**. It is the last
|
|
369
|
+
decision provider in the order, by choice and not because its key is shared: a host
|
|
370
|
+
with only that key gets ScaleDown for the built-in features, and a host that also
|
|
371
|
+
has any earlier provider configured (including an `OPENAI_API_KEY` set only for
|
|
372
|
+
chat) uses that one and reaches ScaleDown by naming `provider: "scaledown"`. It
|
|
373
|
+
reads text only: the state is always sent as a string (a string unchanged,
|
|
374
|
+
anything else as its JSON text, a blank string refused before any request), and
|
|
375
|
+
images and video are refused. A `choice` question is scored once per option by the
|
|
376
|
+
service, so input tokens grow with options times state length. The price is a list
|
|
377
|
+
price reported on 2026-10-15 and everything else about the endpoint (context
|
|
378
|
+
size, latency, rate limits, option and question maximums) is
|
|
379
|
+
[not measured](docs/getting-started/providers/scaledown.md#not-measured). The facts
|
|
380
|
+
about the endpoint come from ScaleDown's documentation and the marketing session's
|
|
381
|
+
probes of 2026-10-15; none were made by this project.
|
|
382
|
+
|
|
364
383
|
```typescript
|
|
365
384
|
import {
|
|
366
385
|
NeuroLink,
|
|
@@ -458,7 +477,7 @@ Cloudflare Clef, measured on a real account in October 2026: the follow-up of 13
|
|
|
458
477
|
|
|
459
478
|
The [guide's limits section](docs/getting-started/providers/cloudflare-clef.md#limits) has the full table, including tokens per character for each kind of text.
|
|
460
479
|
|
|
461
|
-
**[Decide Guide](docs/features/decide-inference-type.md)** · **[TypeSafe Provider Guide](docs/getting-started/providers/typesafe.md)** · **[Laya Provider Guide](docs/getting-started/providers/laya.md)** · **[XOR Provider Guide](docs/getting-started/providers/xor.md)** · **[Perplexity Provider Guide](docs/getting-started/providers/perplexity-decider.md)** · **[Cloudflare Clef Provider Guide](docs/getting-started/providers/cloudflare-clef.md)** · **[SubQ Provider Guide](docs/getting-started/providers/subq.md)** · **[OpenAI Decisions Provider Guide](docs/getting-started/providers/openai-decisions.md)**
|
|
480
|
+
**[Decide Guide](docs/features/decide-inference-type.md)** · **[TypeSafe Provider Guide](docs/getting-started/providers/typesafe.md)** · **[Laya Provider Guide](docs/getting-started/providers/laya.md)** · **[XOR Provider Guide](docs/getting-started/providers/xor.md)** · **[Perplexity Provider Guide](docs/getting-started/providers/perplexity-decider.md)** · **[Cloudflare Clef Provider Guide](docs/getting-started/providers/cloudflare-clef.md)** · **[SubQ Provider Guide](docs/getting-started/providers/subq.md)** · **[OpenAI Decisions Provider Guide](docs/getting-started/providers/openai-decisions.md)** · **[ScaleDown Provider Guide](docs/getting-started/providers/scaledown.md)**
|
|
462
481
|
|
|
463
482
|
## Enterprise Security: Human-in-the-Loop (HITL)
|
|
464
483
|
|
|
@@ -737,7 +756,7 @@ NeuroLink is a comprehensive AI development platform. Every feature below is shi
|
|
|
737
756
|
|
|
738
757
|
### 🤖 AI Provider Integration
|
|
739
758
|
|
|
740
|
-
**Provider neurons behind one API** - Switch providers with a single parameter change. Nearly all serve `generate`/`stream`; TypeSafe Jev, Laya, XOR, SubQ, Perplexity Decisions, Cloudflare Clef
|
|
759
|
+
**Provider neurons behind one API** - Switch providers with a single parameter change. Nearly all serve `generate`/`stream`; TypeSafe Jev, Laya, XOR, SubQ, Perplexity Decisions, Cloudflare Clef, OpenAI Decisions and ScaleDown serve `decide` instead. Tool support varies by provider and model (see the provider catalog); embedding-, media- and decision-only providers serve no tools. 3 are fully local runtimes (Ollama, LM Studio, llama.cpp) and need no cloud account or API key. LiteLLM needs no NeuroLink env vars (it defaults to `localhost:4000`) but requires a running LiteLLM proxy, which holds the upstream provider keys for hosted models. 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.
|
|
741
760
|
|
|
742
761
|
| Provider | Models | Free Tier | Tool Support | Status | Documentation |
|
|
743
762
|
| --------------------- | -------------------------------------------------------------------------- | --------------- | ------------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -771,9 +790,9 @@ NeuroLink is a comprehensive AI development platform. Every feature below is shi
|
|
|
771
790
|
|
|
772
791
|
**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`)
|
|
773
792
|
|
|
774
|
-
**Decision** — [TypeSafe Jev](docs/getting-started/providers/typesafe.md) (`TYPESAFE_API_KEY`, or `AI_GATEWAY_API_KEY` via the Vercel AI Gateway) · [Laya](docs/getting-started/providers/laya.md) (`LAYA_API_KEY` + `LAYA_BASE_URL`, open-weights, self-hosted) · [XOR](docs/getting-started/providers/xor.md) (`XOR_API_KEY` + `XOR_BASE_URL`, open-weights) · [SubQ](docs/getting-started/providers/subq.md) (`SUBQ_API_KEY`, hosted) · [Perplexity Decisions](docs/getting-started/providers/perplexity-decider.md) (`PERPLEXITY_API_KEY`, hosted; the same key as the Perplexity text provider) · [Cloudflare Clef](docs/getting-started/providers/cloudflare-clef.md) (`CLOUDFLARE_API_KEY` + `CLOUDFLARE_ACCOUNT_ID`, hosted on Workers AI; the same two variables as the Cloudflare text provider) · [OpenAI Decisions](docs/getting-started/providers/openai-decisions.md) (`OPENAI_API_KEY`, hosted, public beta; the same key as the OpenAI chat provider) — the providers serving `decide` rather than `generate`/`stream`.
|
|
793
|
+
**Decision** — [TypeSafe Jev](docs/getting-started/providers/typesafe.md) (`TYPESAFE_API_KEY`, or `AI_GATEWAY_API_KEY` via the Vercel AI Gateway) · [Laya](docs/getting-started/providers/laya.md) (`LAYA_API_KEY` + `LAYA_BASE_URL`, open-weights, self-hosted) · [XOR](docs/getting-started/providers/xor.md) (`XOR_API_KEY` + `XOR_BASE_URL`, open-weights) · [SubQ](docs/getting-started/providers/subq.md) (`SUBQ_API_KEY`, hosted) · [Perplexity Decisions](docs/getting-started/providers/perplexity-decider.md) (`PERPLEXITY_API_KEY`, hosted; the same key as the Perplexity text provider) · [Cloudflare Clef](docs/getting-started/providers/cloudflare-clef.md) (`CLOUDFLARE_API_KEY` + `CLOUDFLARE_ACCOUNT_ID`, hosted on Workers AI; the same two variables as the Cloudflare text provider) · [OpenAI Decisions](docs/getting-started/providers/openai-decisions.md) (`OPENAI_API_KEY`, hosted, public beta; the same key as the OpenAI chat provider) · [ScaleDown](docs/getting-started/providers/scaledown.md) (`SCALEDOWN_API_KEY`, hosted; its own key, text only) — the providers serving `decide` rather than `generate`/`stream`.
|
|
775
794
|
|
|
776
|
-
**Decision-only providers:** **TypeSafe Jev** (`TYPESAFE_API_KEY`), **Laya** (`LAYA_API_KEY` + `LAYA_BASE_URL`), **XOR** (`XOR_API_KEY` + `XOR_BASE_URL`), **SubQ** (`SUBQ_API_KEY`), **Perplexity Decisions** (`PERPLEXITY_API_KEY`), **Cloudflare Clef** (`CLOUDFLARE_API_KEY` + `CLOUDFLARE_ACCOUNT_ID`)
|
|
795
|
+
**Decision-only providers:** **TypeSafe Jev** (`TYPESAFE_API_KEY`), **Laya** (`LAYA_API_KEY` + `LAYA_BASE_URL`), **XOR** (`XOR_API_KEY` + `XOR_BASE_URL`), **SubQ** (`SUBQ_API_KEY`), **Perplexity Decisions** (`PERPLEXITY_API_KEY`), **Cloudflare Clef** (`CLOUDFLARE_API_KEY` + `CLOUDFLARE_ACCOUNT_ID`), **OpenAI Decisions** (`OPENAI_API_KEY`) and **ScaleDown** (`SCALEDOWN_API_KEY`) do not appear in the table above because none of them serves `generate`/`stream` — they are the providers for the `decide` inference type, tried in the order TypeSafe, Laya, XOR, SubQ, Perplexity, Cloudflare Clef, OpenAI Decisions, ScaleDown when several are configured. Perplexity's key is shared with the Perplexity text provider, Clef's two variables with the Cloudflare Workers AI text provider, and OpenAI Decisions' key with the OpenAI chat provider; all three text providers appear in the table; ScaleDown's key is its own. See [Decide: Calibrated Judgments, Not Text](#decide-calibrated-judgments-not-text).
|
|
777
796
|
|
|
778
797
|
**[📖 Provider Comparison Guide](docs/reference/provider-comparison.md)** - Detailed feature matrix and selection criteria
|
|
779
798
|
**[🔬 Provider Feature Compatibility](docs/reference/provider-feature-compatibility.md)** - Test-based compatibility reference for 19 features (dated snapshot covering a subset of the full provider list)
|
|
@@ -1295,18 +1314,18 @@ Full command and API breakdown lives in [`docs/cli/commands.md`](docs/cli/comman
|
|
|
1295
1314
|
|
|
1296
1315
|
## Platform Capabilities at a Glance
|
|
1297
1316
|
|
|
1298
|
-
| Capability | Highlights
|
|
1299
|
-
| ------------------------ |
|
|
1300
|
-
| **Provider unification** | Provider neurons behind one API, with automatic fallback, cost-aware routing, `providerFallback` policy, `modelChain` config.
|
|
1301
|
-
| **Decision inference** | Third inference type (`decide`) alongside generate/stream: calibrated `boolean`/`choice`/`score` judgments via TypeSafe Jev (~400ms flat, ~$0.00002/decision), Laya, a self-hosted open-weights alternative, XOR, Juspay's open-weights model, Subquadratic's hosted SubQ Snap, Perplexity's hosted Decisions API, Cloudflare Clef on Workers AI,
|
|
1302
|
-
| **Multimodal pipeline** | Stream images + CSV data + PDF documents across providers with local/remote assets. Auto-detection for mixed file types.
|
|
1303
|
-
| **Voice pipeline** | TTS (6 providers: Google, OpenAI, ElevenLabs, Azure, Fish Audio, Cartesia) + STT (4 providers) + realtime voice APIs (OpenAI Realtime, Gemini Live).
|
|
1304
|
-
| **Quality & governance** | Auto-evaluation engine (14 scorers), guardrails middleware, HITL workflows, audit logging.
|
|
1305
|
-
| **Memory & context** | Per-user condensed memory (S3/Redis/SQLite), Redis session export, 5-stage context compaction.
|
|
1306
|
-
| **CLI tooling** | 34 commands: loop sessions, setup wizard, config validation, Redis auto-detect, JSON output, TTS/STT flags.
|
|
1307
|
-
| **Enterprise ops** | Claude proxy, OTLP observability, OpenObserve dashboard, regional routing, credential management.
|
|
1308
|
-
| **Tool ecosystem** | MCP auto discovery, HTTP/stdio/SSE/WebSocket transports, LiteLLM hub access, SageMaker custom deployment, web search.
|
|
1309
|
-
| **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.
|
|
1317
|
+
| Capability | Highlights |
|
|
1318
|
+
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1319
|
+
| **Provider unification** | Provider neurons behind one API, with automatic fallback, cost-aware routing, `providerFallback` policy, `modelChain` config. |
|
|
1320
|
+
| **Decision inference** | Third inference type (`decide`) alongside generate/stream: calibrated `boolean`/`choice`/`score` judgments via TypeSafe Jev (~400ms flat, ~$0.00002/decision), Laya, a self-hosted open-weights alternative, XOR, Juspay's open-weights model, Subquadratic's hosted SubQ Snap, Perplexity's hosted Decisions API, Cloudflare Clef on Workers AI, OpenAI's Decisions API, or ScaleDown's hosted Classify models. Used internally for model routing, context budgeting, relevance compaction and tool routing; per-query RAG planning is opt-in via `RAGPipeline`. |
|
|
1321
|
+
| **Multimodal pipeline** | Stream images + CSV data + PDF documents across providers with local/remote assets. Auto-detection for mixed file types. |
|
|
1322
|
+
| **Voice pipeline** | TTS (6 providers: Google, OpenAI, ElevenLabs, Azure, Fish Audio, Cartesia) + STT (4 providers) + realtime voice APIs (OpenAI Realtime, Gemini Live). |
|
|
1323
|
+
| **Quality & governance** | Auto-evaluation engine (14 scorers), guardrails middleware, HITL workflows, audit logging. |
|
|
1324
|
+
| **Memory & context** | Per-user condensed memory (S3/Redis/SQLite), Redis session export, 5-stage context compaction. |
|
|
1325
|
+
| **CLI tooling** | 34 commands: loop sessions, setup wizard, config validation, Redis auto-detect, JSON output, TTS/STT flags. |
|
|
1326
|
+
| **Enterprise ops** | Claude proxy, OTLP observability, OpenObserve dashboard, regional routing, credential management. |
|
|
1327
|
+
| **Tool ecosystem** | MCP auto discovery, HTTP/stdio/SSE/WebSocket transports, LiteLLM hub access, SageMaker custom deployment, web search. |
|
|
1328
|
+
| **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. |
|
|
1310
1329
|
|
|
1311
1330
|
## Documentation Map
|
|
1312
1331
|
|
|
@@ -1334,7 +1353,7 @@ Full command and API breakdown lives in [`docs/cli/commands.md`](docs/cli/comman
|
|
|
1334
1353
|
|
|
1335
1354
|
**Decision Inference:**
|
|
1336
1355
|
|
|
1337
|
-
- [Decide Guide](docs/features/decide-inference-type.md) - The `decide` inference type: boolean/choice/score primitives, TypeSafe Jev / Laya / XOR / SubQ / Perplexity / Cloudflare Clef / OpenAI Decisions setup, and the latency/cost measured for the providers that have it
|
|
1356
|
+
- [Decide Guide](docs/features/decide-inference-type.md) - The `decide` inference type: boolean/choice/score primitives, TypeSafe Jev / Laya / XOR / SubQ / Perplexity / Cloudflare Clef / OpenAI Decisions / ScaleDown setup, and the latency/cost measured for the providers that have it
|
|
1338
1357
|
|
|
1339
1358
|
**Provider Intelligence:**
|
|
1340
1359
|
|