@juspay/neurolink 12.49.7 → 12.49.9

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.
@@ -101,8 +101,8 @@ export async function selectIrrelevantMessages(messages, currentRequest, decide,
101
101
  type: "boolean",
102
102
  instructions: RELEVANCE_INSTRUCTIONS,
103
103
  criteria: {
104
- true: `The current request depends on this message: "${preview(entry.message)}"`,
105
- false: "The current request does not depend on this message.",
104
+ true: `The current request depends on conversation[${position}].`,
105
+ false: `The current request does not depend on conversation[${position}].`,
106
106
  },
107
107
  };
108
108
  });
@@ -230,7 +230,7 @@ export async function summaryPreservesContext(summary, replacedMessages, decide,
230
230
  }
231
231
  return true;
232
232
  }
233
- /** Bounded text for one message, used in both state and criteria. */
233
+ /** Bounded text stored once in decision state and referenced by position. */
234
234
  function preview(message) {
235
235
  return message.content.slice(0, MAX_MESSAGE_CHARS);
236
236
  }
@@ -48,42 +48,21 @@ const MAX_SERVERS = 200;
48
48
  /**
49
49
  * The question wording, and why it is this wording.
50
50
  *
51
- * The obvious phrasing — "answering this request will require calling at least
52
- * one tool from this server", with a `false` criterion reading "this server is
53
- * unrelated, OR the request needs no tool at all" — was measured against a
54
- * 10-request × 5-server labelled set. It separated correctly but weakly:
55
- * unrelated servers averaged p=0.31 and reached 0.80, so at the 0.6 drop bar
56
- * only 12 of 39 unneeded servers were dropped.
57
- *
58
- * Naming the server, asking in the present tense about what carrying out the
59
- * request *involves*, and splitting the bundled `false` criterion into a single
60
- * claim moved unrelated servers to a mean of p=0.03 with a maximum of 0.35 —
61
- * **37 of 39** dropped at the same bar, still with zero wrong drops.
62
- *
63
- * The lesson generalises: a decision model reads literally, and an `or` in a
64
- * criterion is two questions wearing one coat.
51
+ * The server capability already exists once in structured state. Referencing
52
+ * that indexed field avoids copying the same long description into the
53
+ * instruction and both criteria while still binding each question to one
54
+ * concrete server.
65
55
  */
66
- function serverQuestion(server) {
67
- const does = uncapitalize(describeServer(server));
56
+ function serverQuestion(server, index) {
68
57
  return {
69
58
  type: "boolean",
70
- instructions: `The request needs the "${server.id}" server, which can ${does}.`,
59
+ instructions: `Does the request need the "${server.id}" server? Read available_servers[${index}].does.`,
71
60
  criteria: {
72
- true: `Carrying out the request involves ${does}.`,
73
- false: `The request is about something else; nothing it asks for involves ${does}.`,
61
+ true: "Needed.",
62
+ false: "Not needed.",
74
63
  },
75
64
  };
76
65
  }
77
- /**
78
- * Lowercase only the FIRST character. A plain `toLowerCase()` would turn
79
- * "Read and write GitHub issues" into "…github issues", and the proper noun is
80
- * often the strongest signal in the sentence.
81
- */
82
- function uncapitalize(text) {
83
- // charAt rather than an index: it returns "" for an empty string, so this
84
- // needs no length guard and no non-null assertion.
85
- return text.charAt(0).toLowerCase() + text.slice(1);
86
- }
87
66
  /**
88
67
  * Ask one yes/no question per routable server and return the servers to keep.
89
68
  *
@@ -98,7 +77,7 @@ export async function selectServersByDecision(userQuery, routableServers, decide
98
77
  const servers = routableServers.slice(0, MAX_SERVERS);
99
78
  const questions = {};
100
79
  servers.forEach((server, index) => {
101
- questions[decisionKey(SERVER_NAMESPACE, index)] = serverQuestion(server);
80
+ questions[decisionKey(SERVER_NAMESPACE, index)] = serverQuestion(server, index);
102
81
  });
103
82
  const result = await decide({
104
83
  site: "toolRouting",
@@ -18,7 +18,7 @@ import { logger } from "../../utils/logger.js";
18
18
  import { TTS_ERROR_CODES, TTSError } from "../../utils/ttsProcessor.js";
19
19
  const DEFAULT_BASE_URL = "https://api.cartesia.ai";
20
20
  const DEFAULT_API_VERSION = "2025-04-16";
21
- const DEFAULT_MODEL = "sonic-2";
21
+ const DEFAULT_MODEL = "sonic-3.6";
22
22
  // Same default voice as the streaming handler — a publicly available
23
23
  // Cartesia voice id ("Bright Female"). Override per-call via TTSOptions.voice.
24
24
  const DEFAULT_VOICE_ID = "694f9389-aac1-45b6-b726-9d9369183238";
@@ -4544,7 +4544,7 @@
4544
4544
  {"objectID":"081502d8e5cd1a1c0f622a7d6118ac263dc88c9d07d8ef96402d71b4957a7172","title":"POST /api/agent/transcribe","url":"/docs/features/transcribe#post-apiagenttranscribe","content":"JSON body with exactly one audio source:\n\n| Source | Rules |\n| ----------- | ------------------------------------------------------------------------------------------------------------------------------- |\n| audio | Base64, or a data:audio/...;base64, URL. Bounded by the adapter's JSON body limit (bodyParser.jsonLimit, 10 MB by default). |\n| audioUrl | An http(s) URL the server downloads through the SSRF guard (private addresses and redirects refused), capped in size. |\n| audioPath | A path on the server. Refused by default; allowed only inside the directories in transcribe.allowedAudioRoots. |\n\nThe response is the TranscribeResult, in the adapters' usual\n{ data, metadata } envelope. Errors use the usual error shape: 400 for an\ninvalid body or an unsupported provider, language or format, 403 for a refused\naudioPath, 413 for audio over the limit, 500 for an engine failure.","hierarchy":{"lvl0":"Features","lvl1":"The transcribe inference type","lvl2":"POST /api/agent/transcribe","lvl3":""}},
4545
4545
  {"objectID":"32a917bb7037f51d56da847c36cba9409b8d0a8951cf84aa19822c24a74b8f3f","title":"POST /v1/audio/transcriptions (OpenAI-compatible)","url":"/docs/features/transcribe#post-v1audiotranscriptions-openai-compatible","content":"multipart/form-data, the way OpenAI's API takes it, so an OpenAI client\npointed at http://<host>:<port>/v1 works unchanged:\n\n| Field | Meaning |\n| --------------------------- | ----------------------------------------------------------------------------------------------------------- |\n| file | The audio (required). Its name or type sets the container. |\n| model | <provider> or <provider>/<model>. OpenAI's own model names and auto mean the server's default engine. |\n| language, prompt | As in the SDK. |\n| response_format | json ({ \"text\" }, the default), text (plain text) or verbose_json. |\n| timestamp_granularities[] | word requests word timings. |\n| temperature | Accepted and ignored. |\n| provider | Extension: the STT provider, overriding model. |\n| diarize | Extension: true labels speakers. |\n| dictionary | Extension: the dictionary as a JSON string. |\n| correct | Extension: true runs the correction layer. |\n| fallback | Extension: fallback STT provider.","hierarchy":{"lvl0":"Features","lvl1":"The transcribe inference type","lvl2":"POST /v1/audio/transcriptions (OpenAI-compatible)","lvl3":""}},
4546
4546
  {"objectID":"7f04ab4c7a4895ae38a057d50ee353f51a84b959feb713784f0779b9d0319798","title":"WebSocket /v1/audio/transcriptions/stream","url":"/docs/features/transcribe#websocket-v1audiotranscriptionsstream","content":"The route adapters do not handle WebSocket upgrades, so the streaming endpoint\nattaches to the Node HTTP server you own:\nThe first frame is text: a JSON config with the JSON route's fields\n minus the audio, plus streaming (for example { \"language\": \"auto\",\n\"streaming\": { \"sampleRate\": 16000 } }).\nThen binary frames of PCM16LE mono audio at that sample rate.\nA text frame { \"type\": \"end\" }, or closing the socket, ends the audio.\n\nThe server sends one JSON text frame per TranscribeStreamEvent and closes\nwith 1000 when the stream is done; an invalid config gets an error event and\nclose code 1008.","hierarchy":{"lvl0":"Features","lvl1":"The transcribe inference type","lvl2":"WebSocket /v1/audio/transcriptions/stream","lvl3":""}},
4547
- {"objectID":"499945493bd6604fe9de0b7511127a8f248c00e05724562e9c6c1cd6bf63aa97","title":"Text-to-Speech (TTS) Integration Guide","url":"/docs/features/tts","content":"Text-to-Speech (TTS) Integration Guide\n\nNeuroLink provides integrated Text-to-Speech (TTS) capabilities, allowing you to generate high-quality audio from text prompts or AI-generated responses. This feature is perfect for voice assistants, accessibility features, narration, podcasts, and more.\n\nOverview\n\nKey Features:\nMultiple providers - Google Cloud TTS, OpenAI TTS, ElevenLabs, Azure TTS, Fish Audio, Cartesia, and 60db\nHigh-quality voices - Neural, Wavenet, Standard, and multilingual voice types\nMultiple languages - 50+ voices across 10+ languages\nFlexible audio formats - MP3, WAV, OGG/Opus\nVoice customization - Adjust speed, pitch, and volume\nTwo synthesis modes - Direct text-to-speech OR AI response synthesis\nProduction-ready - Works with Google Cloud, OpenAI, ElevenLabs, Azure, Fish Audio, Cartesia, and 60db\n\nQuick Start\n\nInstallation\n\nTTS support is built into NeuroLink. No additional installation required.\n\nEnvironment Setup\n\nSet the appropriate environment variables for your chosen TTS provider:\n\nGoogle API Key Configuration:\n\nIf using API key authentication for Google, enable both APIs in Google Cloud Console:\nNavigate to \"APIs & Services\" > \"Credentials\"\nCreate or select your API key\nUnder \"API restrictions\", enable:\nGenerative Language API (for Gemini)\nCloud Text-to-Speech API (for TTS)\n\nBasic Usage\n\nCLI:\n\nSDK:\n\nSupported Providers\n\nTTS is available through the following providers:\n\n| Provider | Authentication | Voices / Models | Notes |\n| -------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| google-ai | Service Account (GOOGLE_APPLICATION_CREDENTIALS) | 50+ voices (Neural2, Wavenet, Standard) | Same auth as vertex (TTS uses Google Cloud Text-to-Speech client) |\n| vertex | Service Account (GOOGLE_APPLICATION_CREDENTIALS) | 50+ voices (Neural2, Wavenet, Standard) | Recommended for production |\n| openai-tts | API Key (OPENAI_API_KEY) | 6 voices: alloy, echo, fable, onyx, nova, shimmer; models: tts-1, tts-1-hd | Good default quality |\n| elevenlabs | API Key (ELEVENLABS_API_KEY) | Multilingual voices; model: elevenmultilingualv2 | High-quality multilingual synthesis |\n| azure-tts | API Key (AZURE_SPEECH_KEY + region AZURE_SPEECH_REGION) | Neural voices with SSML support | Enterprise-grade Azure Speech |\n| fish-audio | API Key (FISH_AUDIO_API_KEY) | 14 languages, voice cloning (15 s reference); models: s1 (default), speech-1.6, speech-1.5 | Low-cost, ~80% cheaper than ElevenLabs — see provider guide |\n| cartesia | API Key (CARTESIA_API_KEY) | Cartesia voice library, English-first; models: sonic-2 (default), sonic | Low-latency Sonic models — see provider guide. Synchronous /tts/bytes; the WebSocket streaming flow is exposed separately via CartesiaStream in the voice server. |\n| sixtydb | Workspace API key (SIXTYDB_API_KEY) | Quality and fast workspace voice catalogs | WAV or PCM16 at 24 kHz — see prov","hierarchy":{"lvl0":"Features","lvl1":"Text-to-Speech (TTS) Integration Guide","lvl2":"","lvl3":""}},
4547
+ {"objectID":"499945493bd6604fe9de0b7511127a8f248c00e05724562e9c6c1cd6bf63aa97","title":"Text-to-Speech (TTS) Integration Guide","url":"/docs/features/tts","content":"Text-to-Speech (TTS) Integration Guide\n\nNeuroLink provides integrated Text-to-Speech (TTS) capabilities, allowing you to generate high-quality audio from text prompts or AI-generated responses. This feature is perfect for voice assistants, accessibility features, narration, podcasts, and more.\n\nOverview\n\nKey Features:\nMultiple providers - Google Cloud TTS, OpenAI TTS, ElevenLabs, Azure TTS, Fish Audio, Cartesia, and 60db\nHigh-quality voices - Neural, Wavenet, Standard, and multilingual voice types\nMultiple languages - 50+ voices across 10+ languages\nFlexible audio formats - MP3, WAV, OGG/Opus\nVoice customization - Adjust speed, pitch, and volume\nTwo synthesis modes - Direct text-to-speech OR AI response synthesis\nProduction-ready - Works with Google Cloud, OpenAI, ElevenLabs, Azure, Fish Audio, Cartesia, and 60db\n\nQuick Start\n\nInstallation\n\nTTS support is built into NeuroLink. No additional installation required.\n\nEnvironment Setup\n\nSet the appropriate environment variables for your chosen TTS provider:\n\nGoogle API Key Configuration:\n\nIf using API key authentication for Google, enable both APIs in Google Cloud Console:\nNavigate to \"APIs & Services\" > \"Credentials\"\nCreate or select your API key\nUnder \"API restrictions\", enable:\nGenerative Language API (for Gemini)\nCloud Text-to-Speech API (for TTS)\n\nBasic Usage\n\nCLI:\n\nSDK:\n\nSupported Providers\n\nTTS is available through the following providers:\n\n| Provider | Authentication | Voices / Models | Notes |\n| -------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| google-ai | Service Account (GOOGLE_APPLICATION_CREDENTIALS) | 50+ voices (Neural2, Wavenet, Standard) | Same auth as vertex (TTS uses Google Cloud Text-to-Speech client) |\n| vertex | Service Account (GOOGLE_APPLICATION_CREDENTIALS) | 50+ voices (Neural2, Wavenet, Standard) | Recommended for production |\n| openai-tts | API Key (OPENAI_API_KEY) | 6 voices: alloy, echo, fable, onyx, nova, shimmer; models: tts-1, tts-1-hd | Good default quality |\n| elevenlabs | API Key (ELEVENLABS_API_KEY) | Multilingual voices; model: elevenmultilingualv2 | High-quality multilingual synthesis |\n| azure-tts | API Key (AZURE_SPEECH_KEY + region AZURE_SPEECH_REGION) | Neural voices with SSML support | Enterprise-grade Azure Speech |\n| fish-audio | API Key (FISH_AUDIO_API_KEY) | 14 languages, voice cloning (15 s reference); models: s1 (default), speech-1.6, speech-1.5 | Low-cost, ~80% cheaper than ElevenLabs — see provider guide |\n| cartesia | API Key (CARTESIA_API_KEY) | Cartesia voice library, English-first; models: sonic-3.6 (default) | Low-latency Sonic models — see provider guide. Synchronous /tts/bytes; the WebSocket streaming flow is exposed separately via CartesiaStream in the voice server. |\n| sixtydb | Workspace API key (SIXTYDB_API_KEY) | Quality and fast workspace voice catalogs | WAV or PCM16 at 24 kHz — see pr","hierarchy":{"lvl0":"Features","lvl1":"Text-to-Speech (TTS) Integration Guide","lvl2":"","lvl3":""}},
4548
4548
  {"objectID":"9384b791f5d32ea2c126e7a7a7a8852d80e56954c061aba2d9e493b0a9c25f2b","title":"Text-to-Speech (TTS) Integration Guide","url":"/docs/features/tts#text-to-speech-tts-integration-guide","content":"NeuroLink provides integrated Text-to-Speech (TTS) capabilities, allowing you to generate high-quality audio from text prompts or AI-generated responses. This feature is perfect for voice assistants, accessibility features, narration, podcasts, and more.","hierarchy":{"lvl0":"Features","lvl1":"Text-to-Speech (TTS) Integration Guide","lvl2":"Text-to-Speech (TTS) Integration Guide","lvl3":""}},
4549
4549
  {"objectID":"9cc14837132bc1ce344a44ef8c73aa1b77fe9b81356e3f5e565115a158d47618","title":"Overview","url":"/docs/features/tts#overview","content":"Key Features:\nMultiple providers - Google Cloud TTS, OpenAI TTS, ElevenLabs, Azure TTS, Fish Audio, Cartesia, and 60db\nHigh-quality voices - Neural, Wavenet, Standard, and multilingual voice types\nMultiple languages - 50+ voices across 10+ languages\nFlexible audio formats - MP3, WAV, OGG/Opus\nVoice customization - Adjust speed, pitch, and volume\nTwo synthesis modes - Direct text-to-speech OR AI response synthesis\nProduction-ready - Works with Google Cloud, OpenAI, ElevenLabs, Azure, Fish Audio, Cartesia, and 60db","hierarchy":{"lvl0":"Features","lvl1":"Text-to-Speech (TTS) Integration Guide","lvl2":"Overview","lvl3":""}},
4550
4550
  {"objectID":"fb806097773dc1e87ec327d66a211bf8490b77fa0bc7fafb95d74effe72bb7a5","title":"Installation","url":"/docs/features/tts#installation","content":"TTS support is built into NeuroLink. No additional installation required.","hierarchy":{"lvl0":"Features","lvl1":"Text-to-Speech (TTS) Integration Guide","lvl2":"Installation","lvl3":""}},
@@ -5237,7 +5237,7 @@
5237
5237
  {"objectID":"0bdad5bc6b05c9d92138214cee279e49315c2311e9fff41db914fb6b205b796f","title":"Cartesia TTS Configuration","url":"/docs/getting-started/provider-setup#cartesia","content":"Low-latency TTS provider running Cartesia's Sonic models. The synchronous\n/tts/bytes endpoint is wrapped as a TTSHandler; the realtime WebSocket flow\nis exposed separately as CartesiaStream for the voice server.\n\n`bash","hierarchy":{"lvl0":"Getting Started","lvl1":"⚙️ Provider Configuration Guide","lvl2":"Cartesia TTS Configuration","lvl3":""}},
5238
5238
  {"objectID":"b61647c23405ab4aa25156852b4f57ee2cb867d73e5898efcb5a4e518b066062","title":"Required","url":"/docs/getting-started/provider-setup#required-1","content":"CARTESIAAPIKEY=skcar...","hierarchy":{"lvl0":"Getting Started","lvl1":"⚙️ Provider Configuration Guide","lvl2":"Required","lvl3":""}},
5239
5239
  {"objectID":"4efaa916b6bc11d3511200b5104f217302b0858ae5dbbe7e361d12db3c5d5edf","title":"CARTESIA_BASE_URL=https://api.cartesia.ai","url":"/docs/getting-started/provider-setup#cartesia_base_urlhttpsapicartesiaai","content":"`\n\nGet an API key from play.cartesia.ai/keys.","hierarchy":{"lvl0":"Getting Started","lvl1":"⚙️ Provider Configuration Guide","lvl2":"CARTESIA_BASE_URL=https://api.cartesia.ai","lvl3":""}},
5240
- {"objectID":"4159b052313e06e6cc4d1edcd94e6b942ce4e37f66933dd54561429399c9fa73","title":"Usage","url":"/docs/getting-started/provider-setup#usage-2","content":"Provider ID: cartesia\nDefault model: sonic-2 (also sonic)\nDefault voice: 694f9389-aac1-45b6-b726-9d9369183238 (\"Bright Female\", English)\nMax text length: 5000 characters\nOutput formats: mp3 (default, 44.1 kHz), wav (PCM s16le @ 44.1 kHz), pcm16 (raw, 24 kHz)\nStreaming: synchronous via this handler; WebSocket via CartesiaStream adapter\n\nFull guide: Cartesia TTS Provider.","hierarchy":{"lvl0":"Getting Started","lvl1":"⚙️ Provider Configuration Guide","lvl2":"Usage","lvl3":""}},
5240
+ {"objectID":"4159b052313e06e6cc4d1edcd94e6b942ce4e37f66933dd54561429399c9fa73","title":"Usage","url":"/docs/getting-started/provider-setup#usage-2","content":"Provider ID: cartesia\nDefault model: sonic-3.6\nDefault voice: 694f9389-aac1-45b6-b726-9d9369183238 (\"Bright Female\", English)\nMax text length: 5000 characters\nOutput formats: mp3 (default, 44.1 kHz), wav (PCM s16le @ 44.1 kHz), pcm16 (raw, 24 kHz)\nStreaming: synchronous via this handler; WebSocket via CartesiaStream adapter\n\nFull guide: Cartesia TTS Provider.","hierarchy":{"lvl0":"Getting Started","lvl1":"⚙️ Provider Configuration Guide","lvl2":"Usage","lvl3":""}},
5241
5241
  {"objectID":"5e2b9d2431513e581e1d4b6eb8ac28616244d19938876d778a83fa67d2bce35c","title":"Google Speech Configuration","url":"/docs/getting-started/provider-setup#google-speech","content":"Covers both Google Cloud TTS (google-tts / via google-ai) and Google Cloud\nSpeech-to-Text (google-stt). Both share the same service-account credentials.\n\n`bash","hierarchy":{"lvl0":"Getting Started","lvl1":"⚙️ Provider Configuration Guide","lvl2":"Google Speech Configuration","lvl3":""}},
5242
5242
  {"objectID":"dbcc9f86ecc3a983362842c2d35a3c346ad0de236904ccb132382ea295198072","title":"Required environment variable","url":"/docs/getting-started/provider-setup#required-environment-variable-1","content":"GOOGLEAPPLICATIONCREDENTIALS=/path/to/service-account.json","hierarchy":{"lvl0":"Getting Started","lvl1":"⚙️ Provider Configuration Guide","lvl2":"Required environment variable","lvl3":""}},
5243
5243
  {"objectID":"bde2796050f4d740a96f8266206f541aae2c58920c0d08e763dad57c5f4faff3","title":"OR (for TTS only) an API key","url":"/docs/getting-started/provider-setup#or-for-tts-only-an-api-key","content":"GOOGLEAPIKEY=AIza...\n\n\n> **Speech-to-Text API must be enabled** in your Google Cloud project for\n> google-stt` to work. Enable it at\nconsole.cloud.google.com/apis/library/speech.googleapis.com.","hierarchy":{"lvl0":"Getting Started","lvl1":"⚙️ Provider Configuration Guide","lvl2":"OR (for TTS only) an API key","lvl3":""}},
@@ -5588,10 +5588,10 @@
5588
5588
  {"objectID":"4842424852c197445928c41e9f4b904b82f9453277a4f9bcf57214cb7a39475a","title":"Verification status","url":"/docs/getting-started/providers/bytez#verification-status","content":"Tier-2 onboarding requires evidence before a provider is accepted, and\npnpm run verify:provider-onboarding gates it in CI. This is what the\ncatalog currently records for Bytez — docs-verified only, not\nlive-verified:\n\n| Probe | Result |\n| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Roster | unauthenticated GET https://api.bytez.com/models/v2/openai/v1/models answered HTTP 401 with the body {\"error\":\"Unauthorized\"}, 2026-09-29 — no key used. The model ids come from the docs pages listed under Models; the roster has not been checked |\n| Auth-failure shape | unauthenticated GET of both .../v1/models and .../v1/chat/completions answered 401 with {\"error\":\"Unauthorized\"}, 2026-09-29.","hierarchy":{"lvl0":"Getting Started","lvl1":"Bytez Provider Guide","lvl2":"Verification status","lvl3":""}},
5589
5589
  {"objectID":"a567088a657e2aa1217849cf49afa8bce5515c22858f1cbbc1b9dab6c5712e25","title":"Documented error responses","url":"/docs/getting-started/providers/bytez#documented-error-responses","content":"| Status | What the Bytez docs say |\n| ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| 401 | The Models API reference describes 401 as \"Auth error - check your api key and how you're sending it.\" (page) |\n| 402 | The Billing & Credits page shows the response for an account whose credits ran out with auto-reload disabled, with the message \"Insufficient credits. Please add credits to continue.\" (page) |\n| 429 | The Models API reference documents 429 as \"Too Many Requests – You have hit the rate limit.\"; the Billing & Credits page says requests over the open model rate limits \"are rejected with a rate-limit error\" |","hierarchy":{"lvl0":"Getting Started","lvl1":"Bytez Provider Guide","lvl2":"Documented error responses","lvl3":""}},
5590
5590
  {"objectID":"69ad11770ecf1fbffa4dcca22d5bb4730636695adc2aea28d419a1be08544d0a","title":"See also","url":"/docs/getting-started/providers/bytez#see-also","content":"Provider setup overview\nAll providers\nTier-2 onboarding — how this provider's JSON becomes a working integration\nProvider feature compatibility","hierarchy":{"lvl0":"Getting Started","lvl1":"Bytez Provider Guide","lvl2":"See also","lvl3":""}},
5591
- {"objectID":"697cf287d3dd79fa2966036c5cd82e65b185366b481b980b8e9a5b1cb086bdb0","title":"Cartesia TTS Provider Guide","url":"/docs/getting-started/providers/cartesia","content":"Cartesia TTS Provider Guide\n\nLow-latency text-to-speech — Cartesia's sonic-2 model over the\nsynchronous /tts/bytes REST endpoint\n\nOverview\n\nCartesia ships two TTS interfaces:\nA WebSocket streaming endpoint used by voice-agent pipelines —\n exposed by NeuroLink's CartesiaStream adapter in\n src/lib/adapters/tts/cartesiaHandler.ts (driven by the voice server).\nA synchronous REST endpoint (POST /tts/bytes) that returns the\n complete audio in a single response — wrapped by NeuroLink's\n CartesiaTTS handler so it slots into the same\n generate({ tts: { provider: \"cartesia\" } }) flow as OpenAI /\n ElevenLabs / Azure / Fish Audio / Google AI TTS.\n\nThis page documents the synchronous handler. For the streaming\nWebSocket path, see the voice-agent docs.\n\nKey Facts\nProtocol: Native REST API (POST /tts/bytes)\nDefault base URL: https://api.cartesia.ai\nDefault API version: 2025-04-16 (sent as Cartesia-Version header)\nDefault model: sonic-2\nDefault voice: 694f9389-aac1-45b6-b726-9d9369183238 (\"Bright Female\", English)\nMax text length: 5000 characters\nOutput formats: mp3 (default, 44.1 kHz), wav (PCM s16le, 44.1 kHz), pcm16 (raw, 24 kHz)\nStreaming: Not via this handler — use CartesiaStream for the WebSocket flow\n\nQuick Start\nGet an API Key\n\nSign up at play.cartesia.ai, open\nManage → API Keys, click Create, give the key a description, and\ncopy the sk_car_… value.\nConfigure Environment\nSynthesize Your First Audio\n\nSDK Usage\n\nBasic Synthesis (Default Voice)\n\nCustom Voice\n\nCopy a voice id from the Voice Library at\nplay.cartesia.ai:\n\nTTS-Augmented LLM Response\n\nWhen useAiResponse: true, NeuroLink first calls the LLM, then\nsynthesizes the LLM output through Cartesia:\n\nWAV / PCM16 Output\n\nLanguage Override\n\nThe handler defaults to English. Pass language via the same options\nbag for other supported languages (see Cartesia docs for the current\nlist):\n\nCLI Usage\n\nConfiguration Reference\n\n| Environment Variable | Required | Default | Description |\n| ---------------------- | -------- | -------------------------------------- | ---------------------------------------------------------- |\n| CARTESIA_API_KEY | Yes | — | Cartesia API key (sk_car_…) |\n| CARTESIA_VOICE_ID | No | 694f9389-aac1-45b6-b726-9d9369183238 | Default voice id used when no voice is passed per-call |\n| CARTESIA_MODEL | No | sonic-2 | Model id sent as model_id |\n| CARTESIA_API_VERSION | No | 2025-04-16 | Value of the Cartesia-Version request header |\n| CARTESIA_BASE_URL | No | https://api.cartesia.ai | Base URL (override for self-hosted / EU regional gateways) |\n\nVoice Models\n\n| Model | Notes |\n| --------- | --------------------------------------------------- |\n| sonic-2 | Default — current best balance of latency + quality |\n| sonic | Legacy general-purpose voice model |\n\nVoices are identified by UUID strings from the Cartesia voice library.\nBrowse and clone voices in your Cartesia dashboard.\n\nFeature Support Matrix\n\n| Feature | Cartesia |\n| ---------------------------------- | ------------------------------------------------ |\n| Text-to-speech | Yes (synchronous) |\n| Voice cloning | Yes (via dashboard upload, then voice id) |\n| Multilingual | Yes (English-first; pass language to override) |\n| MP3 output | Yes (44.1 kHz) |\n| WAV output | Yes (PCM s16le @ 44.1 kHz) |\n| PCM16 output | Yes (24 kHz, raw, no RIFF) |\n| OPUS output | Falls back to MP3 |\n| Synchronous synthesis | Yes (this handler) |\n| WebSocket streaming | Separate — CartesiaStream adapter |\n| getVoices() programmatic listing | Not implemented (use dashboard) |\n\nTroubleshooting\n\nCARTESIA_API_KEY not configured\n\nGet / rotate at play.cartesia.ai.\n\nCartesia synthesis failed: 401\n\nThe API key is invalid or revoked. Regenerate from the dashboard and\nupdate your .env.\n\nCartesia synthesis failed: 429\n\nThrottled — usually because the account has insufficient credits or the\nplan's per-minute limit is exhausted. Top up credits or implement\nclient-side backoff. The handler maps 408 / 429 / 5xx to retriable\nerrors so framework-level retry will honor them.\n\nAudio sounds wrong / wrong voice\n\nThe voice field must be a valid Cartesia voice UUID. If it's missing\nor invalid, the handler falls back to the ","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"","lvl3":""}},
5592
- {"objectID":"bd1687c65b3f61357e983fd05e2894fb86699b98c859da0561b7280d3ee7b437","title":"Cartesia TTS Provider Guide","url":"/docs/getting-started/providers/cartesia#cartesia-tts-provider-guide","content":"Low-latency text-to-speech — Cartesia's sonic-2 model over the\nsynchronous /tts/bytes REST endpoint","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Cartesia TTS Provider Guide","lvl3":""}},
5591
+ {"objectID":"697cf287d3dd79fa2966036c5cd82e65b185366b481b980b8e9a5b1cb086bdb0","title":"Cartesia TTS Provider Guide","url":"/docs/getting-started/providers/cartesia","content":"Cartesia TTS Provider Guide\n\nLow-latency text-to-speech — Cartesia's sonic-3.6 model over the\nsynchronous /tts/bytes REST endpoint\n\nOverview\n\nCartesia ships two TTS interfaces:\nA WebSocket streaming endpoint used by voice-agent pipelines —\n exposed by NeuroLink's CartesiaStream adapter in\n src/lib/adapters/tts/cartesiaHandler.ts (driven by the voice server).\nA synchronous REST endpoint (POST /tts/bytes) that returns the\n complete audio in a single response — wrapped by NeuroLink's\n CartesiaTTS handler so it slots into the same\n generate({ tts: { provider: \"cartesia\" } }) flow as OpenAI /\n ElevenLabs / Azure / Fish Audio / Google AI TTS.\n\nThis page documents the synchronous handler. For the streaming\nWebSocket path, see the voice-agent docs.\n\nKey Facts\nProtocol: Native REST API (POST /tts/bytes)\nDefault base URL: https://api.cartesia.ai\nDefault API version: 2025-04-16 (sent as Cartesia-Version header)\nDefault model: sonic-3.6\nDefault voice: 694f9389-aac1-45b6-b726-9d9369183238 (\"Bright Female\", English)\nMax text length: 5000 characters\nOutput formats: mp3 (default, 44.1 kHz), wav (PCM s16le, 44.1 kHz), pcm16 (raw, 24 kHz)\nStreaming: Not via this handler — use CartesiaStream for the WebSocket flow\n\nQuick Start\nGet an API Key\n\nSign up at play.cartesia.ai, open\nManage → API Keys, click Create, give the key a description, and\ncopy the sk_car_… value.\nConfigure Environment\nSynthesize Your First Audio\n\nSDK Usage\n\nBasic Synthesis (Default Voice)\n\nCustom Voice\n\nCopy a voice id from the Voice Library at\nplay.cartesia.ai:\n\nTTS-Augmented LLM Response\n\nWhen useAiResponse: true, NeuroLink first calls the LLM, then\nsynthesizes the LLM output through Cartesia:\n\nWAV / PCM16 Output\n\nLanguage Override\n\nThe handler defaults to English. Pass language via the same options\nbag for other supported languages (see Cartesia docs for the current\nlist):\n\nCLI Usage\n\nConfiguration Reference\n\n| Environment Variable | Required | Default | Description |\n| ---------------------- | -------- | -------------------------------------- | ---------------------------------------------------------- |\n| CARTESIA_API_KEY | Yes | — | Cartesia API key (sk_car_…) |\n| CARTESIA_VOICE_ID | No | 694f9389-aac1-45b6-b726-9d9369183238 | Default voice id used when no voice is passed per-call |\n| CARTESIA_MODEL | No | sonic-3.6 | Model id sent as model_id |\n| CARTESIA_API_VERSION | No | 2025-04-16 | Value of the Cartesia-Version request header |\n| CARTESIA_BASE_URL | No | https://api.cartesia.ai | Base URL (override for self-hosted / EU regional gateways) |\n\nVoice Models\n\n| Model | Notes |\n| ----------- | --------------------------------------------------- |\n| sonic-3.6 | Default — current best balance of latency + quality |\n\nVoices are identified by UUID strings from the Cartesia voice library.\nBrowse and clone voices in your Cartesia dashboard.\n\nFeature Support Matrix\n\n| Feature | Cartesia |\n| ---------------------------------- | ------------------------------------------------ |\n| Text-to-speech | Yes (synchronous) |\n| Voice cloning | Yes (via dashboard upload, then voice id) |\n| Multilingual | Yes (English-first; pass language to override) |\n| MP3 output | Yes (44.1 kHz) |\n| WAV output | Yes (PCM s16le @ 44.1 kHz) |\n| PCM16 output | Yes (24 kHz, raw, no RIFF) |\n| OPUS output | Falls back to MP3 |\n| Synchronous synthesis | Yes (this handler) |\n| WebSocket streaming | Separate — CartesiaStream adapter |\n| getVoices() programmatic listing | Not implemented (use dashboard) |\n\nTroubleshooting\n\nCARTESIA_API_KEY not configured\n\nGet / rotate at play.cartesia.ai.\n\nCartesia synthesis failed: 401\n\nThe API key is invalid or revoked. Regenerate from the dashboard and\nupdate your .env.\n\nCartesia synthesis failed: 429\n\nThrottled — usually because the account has insufficient credits or the\nplan's per-minute limit is exhausted. Top up credits or implement\nclient-side backoff. The handler maps 408 / 429 / 5xx to retriable\nerrors so framework-level retry will honor them.\n\nAudio sounds wrong / wrong voice\n\nThe voice field must be a valid Cartesia voice UUID. If it's missing\nor invalid, the handler falls back to the env default\n(CARTESIA_VOICE_ID) or the built-in \"Bright ","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"","lvl3":""}},
5592
+ {"objectID":"bd1687c65b3f61357e983fd05e2894fb86699b98c859da0561b7280d3ee7b437","title":"Cartesia TTS Provider Guide","url":"/docs/getting-started/providers/cartesia#cartesia-tts-provider-guide","content":"Low-latency text-to-speech — Cartesia's sonic-3.6 model over the\nsynchronous /tts/bytes REST endpoint","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Cartesia TTS Provider Guide","lvl3":""}},
5593
5593
  {"objectID":"7a7e062c33471dc864b09d0d8618d6817319c905e2c4a6802368223d5c3ed42b","title":"Overview","url":"/docs/getting-started/providers/cartesia#overview","content":"Cartesia ships two TTS interfaces:\nA WebSocket streaming endpoint used by voice-agent pipelines —\n exposed by NeuroLink's CartesiaStream adapter in\n src/lib/adapters/tts/cartesiaHandler.ts (driven by the voice server).\nA synchronous REST endpoint (POST /tts/bytes) that returns the\n complete audio in a single response — wrapped by NeuroLink's\n CartesiaTTS handler so it slots into the same\n generate({ tts: { provider: \"cartesia\" } }) flow as OpenAI /\n ElevenLabs / Azure / Fish Audio / Google AI TTS.\n\nThis page documents the synchronous handler. For the streaming\nWebSocket path, see the voice-agent docs.","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Overview","lvl3":""}},
5594
- {"objectID":"a89abb5765d13db8f6891995b9fd62b2a4bb217dd40efd2aade724ce608e618c","title":"Key Facts","url":"/docs/getting-started/providers/cartesia#key-facts","content":"Protocol: Native REST API (POST /tts/bytes)\nDefault base URL: https://api.cartesia.ai\nDefault API version: 2025-04-16 (sent as Cartesia-Version header)\nDefault model: sonic-2\nDefault voice: 694f9389-aac1-45b6-b726-9d9369183238 (\"Bright Female\", English)\nMax text length: 5000 characters\nOutput formats: mp3 (default, 44.1 kHz), wav (PCM s16le, 44.1 kHz), pcm16 (raw, 24 kHz)\nStreaming: Not via this handler — use CartesiaStream for the WebSocket flow","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Key Facts","lvl3":""}},
5594
+ {"objectID":"a89abb5765d13db8f6891995b9fd62b2a4bb217dd40efd2aade724ce608e618c","title":"Key Facts","url":"/docs/getting-started/providers/cartesia#key-facts","content":"Protocol: Native REST API (POST /tts/bytes)\nDefault base URL: https://api.cartesia.ai\nDefault API version: 2025-04-16 (sent as Cartesia-Version header)\nDefault model: sonic-3.6\nDefault voice: 694f9389-aac1-45b6-b726-9d9369183238 (\"Bright Female\", English)\nMax text length: 5000 characters\nOutput formats: mp3 (default, 44.1 kHz), wav (PCM s16le, 44.1 kHz), pcm16 (raw, 24 kHz)\nStreaming: Not via this handler — use CartesiaStream for the WebSocket flow","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Key Facts","lvl3":""}},
5595
5595
  {"objectID":"ec3b02019ba5adc52425d4222a30d58bd86ab135e7cc3ec61f990eb32a6ce372","title":"1. Get an API Key","url":"/docs/getting-started/providers/cartesia#1-get-an-api-key","content":"Sign up at play.cartesia.ai, open\nManage → API Keys, click Create, give the key a description, and\ncopy the sk_car_… value.","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"1. Get an API Key","lvl3":""}},
5596
5596
  {"objectID":"63f09748948b68ff846af0730db7775420aefa7b60ecfbddc2fa4774338336a0","title":"2. Configure Environment","url":"/docs/getting-started/providers/cartesia#2-configure-environment","content":"`bash","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"2. Configure Environment","lvl3":""}},
5597
5597
  {"objectID":"9068d97a72dbb3721daee29757cc5f46ae641d9bac68c05f7d8e1baa236bd694","title":"Required","url":"/docs/getting-started/providers/cartesia#required","content":"CARTESIAAPIKEY=skcar...","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Required","lvl3":""}},
@@ -5603,8 +5603,8 @@
5603
5603
  {"objectID":"9b00223da6b3d94813f85a5af05193eeb6d80fb7cf8becefa363c06d4e1d6401","title":"Basic — default voice + mp3","url":"/docs/getting-started/providers/cartesia#basic-default-voice-mp3","content":"pnpm run cli generate \"Hello world\" \\\n --tts --tts-provider cartesia \\\n --output ./hello.mp3","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Basic — default voice + mp3","lvl3":""}},
5604
5604
  {"objectID":"f2df200c49cf5096c444d0f820affa1bd988bf3f1884224a0d427f97a33808b4","title":"With a custom voice","url":"/docs/getting-started/providers/cartesia#with-a-custom-voice","content":"pnpm run cli generate \"Hello world\" \\\n --tts --tts-provider cartesia \\\n --tts-voice your-cartesia-voice-id \\\n --output ./hello.mp3","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"With a custom voice","lvl3":""}},
5605
5605
  {"objectID":"c0ab81a3e749f0cf1abe16b01b0ba9e062bb3deb00b588a0aeb077526b4fe824","title":"WAV format","url":"/docs/getting-started/providers/cartesia#wav-format","content":"pnpm run cli generate \"Hello world\" \\\n --tts --tts-provider cartesia \\\n --tts-format wav --output ./hello.wav\n`","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"WAV format","lvl3":""}},
5606
- {"objectID":"a9f8d8ae99015cd1eda81d979ee292357123d647901d721701f44376e1f0c6cf","title":"Configuration Reference","url":"/docs/getting-started/providers/cartesia#configuration-reference","content":"| Environment Variable | Required | Default | Description |\n| ---------------------- | -------- | -------------------------------------- | ---------------------------------------------------------- |\n| CARTESIA_API_KEY | Yes | — | Cartesia API key (sk_car_…) |\n| CARTESIA_VOICE_ID | No | 694f9389-aac1-45b6-b726-9d9369183238 | Default voice id used when no voice is passed per-call |\n| CARTESIA_MODEL | No | sonic-2 | Model id sent as model_id |\n| CARTESIA_API_VERSION | No | 2025-04-16 | Value of the Cartesia-Version request header |\n| CARTESIA_BASE_URL | No | https://api.cartesia.ai | Base URL (override for self-hosted / EU regional gateways) |","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Configuration Reference","lvl3":""}},
5607
- {"objectID":"9f76a6a664fb5cce4d9f0037425ed9fb06596e62dd421d7721f1a5d16686dcfe","title":"Voice Models","url":"/docs/getting-started/providers/cartesia#voice-models","content":"| Model | Notes |\n| --------- | --------------------------------------------------- |\n| sonic-2 | Default — current best balance of latency + quality |\n| sonic | Legacy general-purpose voice model |\n\nVoices are identified by UUID strings from the Cartesia voice library.\nBrowse and clone voices in your Cartesia dashboard.","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Voice Models","lvl3":""}},
5606
+ {"objectID":"a9f8d8ae99015cd1eda81d979ee292357123d647901d721701f44376e1f0c6cf","title":"Configuration Reference","url":"/docs/getting-started/providers/cartesia#configuration-reference","content":"| Environment Variable | Required | Default | Description |\n| ---------------------- | -------- | -------------------------------------- | ---------------------------------------------------------- |\n| CARTESIA_API_KEY | Yes | — | Cartesia API key (sk_car_…) |\n| CARTESIA_VOICE_ID | No | 694f9389-aac1-45b6-b726-9d9369183238 | Default voice id used when no voice is passed per-call |\n| CARTESIA_MODEL | No | sonic-3.6 | Model id sent as model_id |\n| CARTESIA_API_VERSION | No | 2025-04-16 | Value of the Cartesia-Version request header |\n| CARTESIA_BASE_URL | No | https://api.cartesia.ai | Base URL (override for self-hosted / EU regional gateways) |","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Configuration Reference","lvl3":""}},
5607
+ {"objectID":"9f76a6a664fb5cce4d9f0037425ed9fb06596e62dd421d7721f1a5d16686dcfe","title":"Voice Models","url":"/docs/getting-started/providers/cartesia#voice-models","content":"| Model | Notes |\n| ----------- | --------------------------------------------------- |\n| sonic-3.6 | Default — current best balance of latency + quality |\n\nVoices are identified by UUID strings from the Cartesia voice library.\nBrowse and clone voices in your Cartesia dashboard.","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Voice Models","lvl3":""}},
5608
5608
  {"objectID":"c4c5917c838b85773d80ff7f8f2b297611db51cbe9f15c2b169d1045ccf3d995","title":"Feature Support Matrix","url":"/docs/getting-started/providers/cartesia#feature-support-matrix","content":"| Feature | Cartesia |\n| ---------------------------------- | ------------------------------------------------ |\n| Text-to-speech | Yes (synchronous) |\n| Voice cloning | Yes (via dashboard upload, then voice id) |\n| Multilingual | Yes (English-first; pass language to override) |\n| MP3 output | Yes (44.1 kHz) |\n| WAV output | Yes (PCM s16le @ 44.1 kHz) |\n| PCM16 output | Yes (24 kHz, raw, no RIFF) |\n| OPUS output | Falls back to MP3 |\n| Synchronous synthesis | Yes (this handler) |\n| WebSocket streaming | Separate — CartesiaStream adapter |\n| getVoices() programmatic listing | Not implemented (use dashboard) |","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Feature Support Matrix","lvl3":""}},
5609
5609
  {"objectID":"fb3928680f9cfc7e2e5c16f88cb3a179800195254e7d57640b5f7d4674fd8673","title":"CARTESIA_API_KEY not configured","url":"/docs/getting-started/providers/cartesia#cartesia_api_key-not-configured","content":"Get / rotate at play.cartesia.ai.","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"CARTESIA_API_KEY not configured","lvl3":""}},
5610
5610
  {"objectID":"c9739a9d1c25b9155e0e523591ee541c5d645b8ff5d7e9f73982c08c67ad88ba","title":"Cartesia synthesis failed: 401","url":"/docs/getting-started/providers/cartesia#cartesia-synthesis-failed-401","content":"The API key is invalid or revoked. Regenerate from the dashboard and\nupdate your .env.","hierarchy":{"lvl0":"Getting Started","lvl1":"Cartesia TTS Provider Guide","lvl2":"Cartesia synthesis failed: 401","lvl3":""}},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juspay/neurolink",
3
- "version": "12.49.7",
3
+ "version": "12.49.9",
4
4
  "packageManager": "pnpm@10.15.1",
5
5
  "description": "The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002/call) for routing, tool selection and context budgeting. MCP-native (4 transports), voice TTS/STT/realtime, RAG, agents, memory, compaction, 9 observability exporters. OpenAI · Anthropic · Gemini · Bedrock · Azure · Ollama · TypeSafe Jev and more.",
6
6
  "author": {