@juspay/neurolink 12.56.1 → 12.57.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 +65 -54
- package/dist/browser/neurolink.min.js +364 -364
- 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/enums.d.ts +4 -0
- package/dist/constants/enums.js +5 -0
- package/dist/factories/providerDescriptors.js +12 -7
- package/dist/providers/catalog/index.generated.d.ts +1 -1
- package/dist/providers/catalog/index.generated.js +3 -1
- package/dist/providers/catalog/subq.json +59 -0
- package/dist/types/providerCatalog.generated.d.ts +2 -2
- package/dist/types/providers.d.ts +4 -0
- package/docs-site/static/search-index.json +62 -46
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ import type { ProviderConfigOptions, SetupArgs } from "../../types/index.js";
|
|
|
13
13
|
* perplexity, sambanova, together-ai, xai — mistral is the 9th catalog
|
|
14
14
|
* provider but keeps its own handleMistralSetup() flow above, so it's
|
|
15
15
|
* excluded here), spread directly from the catalog JSON via
|
|
16
|
-
* buildCatalogConfigOptions(); decide-kind catalog entries (laya, xor) are
|
|
16
|
+
* buildCatalogConfigOptions(); decide-kind catalog entries (laya, xor, subq) are
|
|
17
17
|
* spread the same way from getDecideCatalogEntries(). The hand rows listed
|
|
18
18
|
* first reuse the existing createXConfig() factories in providerConfig.ts; the
|
|
19
19
|
* remaining 5 (ollama, litellm, sagemaker, lm-studio, llamacpp) don't have a
|
|
@@ -150,7 +150,7 @@ const PROVIDERS = [
|
|
|
150
150
|
* perplexity, sambanova, together-ai, xai — mistral is the 9th catalog
|
|
151
151
|
* provider but keeps its own handleMistralSetup() flow above, so it's
|
|
152
152
|
* excluded here), spread directly from the catalog JSON via
|
|
153
|
-
* buildCatalogConfigOptions(); decide-kind catalog entries (laya, xor) are
|
|
153
|
+
* buildCatalogConfigOptions(); decide-kind catalog entries (laya, xor, subq) are
|
|
154
154
|
* spread the same way from getDecideCatalogEntries(). The hand rows listed
|
|
155
155
|
* first reuse the existing createXConfig() factories in providerConfig.ts; the
|
|
156
156
|
* remaining 5 (ollama, litellm, sagemaker, lm-studio, llamacpp) don't have a
|
|
@@ -649,7 +649,7 @@ export class CLICommandFactory {
|
|
|
649
649
|
},
|
|
650
650
|
classifierStrategy: {
|
|
651
651
|
type: "string",
|
|
652
|
-
description: "Classifier strategy: 'auto' (default — 'jev' when a decision provider is configured, such as TYPESAFE_API_KEY, LAYA_API_KEY with LAYA_BASE_URL, XOR_API_KEY with XOR_BASE_URL, PERPLEXITY_API_KEY, or CLOUDFLARE_API_KEY with CLOUDFLARE_ACCOUNT_ID, else 'heuristic'), 'heuristic' (no LLM), 'llm' (a cheap model picks per prompt), or 'jev' (a System One decision model — TypeSafe Jev, Laya, XOR, Perplexity or Cloudflare Clef — with calibrated confidence).",
|
|
652
|
+
description: "Classifier strategy: 'auto' (default — 'jev' when a decision provider is configured, such as TYPESAFE_API_KEY, LAYA_API_KEY with LAYA_BASE_URL, XOR_API_KEY with XOR_BASE_URL, SUBQ_API_KEY, PERPLEXITY_API_KEY, or CLOUDFLARE_API_KEY with CLOUDFLARE_ACCOUNT_ID, else 'heuristic'), 'heuristic' (no LLM), 'llm' (a cheap model picks per prompt), or 'jev' (a System One decision model — TypeSafe Jev, Laya, XOR, SubQ, Perplexity or Cloudflare Clef — with calibrated confidence).",
|
|
653
653
|
choices: ["auto", "heuristic", "llm", "jev"],
|
|
654
654
|
alias: "classifier-strategy",
|
|
655
655
|
},
|
|
@@ -89,6 +89,7 @@ export declare enum AIProviderName {
|
|
|
89
89
|
STACKIT = "stackit",
|
|
90
90
|
STEPFUN = "stepfun",
|
|
91
91
|
SUBCONSCIOUS = "subconscious",
|
|
92
|
+
SUBQ = "subq",
|
|
92
93
|
SYNTHETIC = "synthetic",
|
|
93
94
|
TELNYX = "telnyx",
|
|
94
95
|
THINKING_MACHINES = "thinking-machines",
|
|
@@ -1611,6 +1612,9 @@ export declare enum SubconsciousModels {
|
|
|
1611
1612
|
SUBCONSCIOUS_DEEPSEEK_V4_1_FLASH_MARATHON = "subconscious/deepseek-v4.1-flash-marathon",
|
|
1612
1613
|
SUBCONSCIOUS_TIM_QWEN3_6_27B = "subconscious/tim-qwen3.6-27b"
|
|
1613
1614
|
}
|
|
1615
|
+
export declare enum SubqModels {
|
|
1616
|
+
SUBQ_SNAP_PREVIEW = "subq-snap-preview"
|
|
1617
|
+
}
|
|
1614
1618
|
export declare enum SyntheticModels {
|
|
1615
1619
|
SYN_LARGE_TEXT = "syn:large:text",
|
|
1616
1620
|
SYN_SMALL_TEXT = "syn:small:text",
|
package/dist/constants/enums.js
CHANGED
|
@@ -94,6 +94,7 @@ export var AIProviderName;
|
|
|
94
94
|
AIProviderName["STACKIT"] = "stackit";
|
|
95
95
|
AIProviderName["STEPFUN"] = "stepfun";
|
|
96
96
|
AIProviderName["SUBCONSCIOUS"] = "subconscious";
|
|
97
|
+
AIProviderName["SUBQ"] = "subq";
|
|
97
98
|
AIProviderName["SYNTHETIC"] = "synthetic";
|
|
98
99
|
AIProviderName["TELNYX"] = "telnyx";
|
|
99
100
|
AIProviderName["THINKING_MACHINES"] = "thinking-machines";
|
|
@@ -1920,6 +1921,10 @@ export var SubconsciousModels;
|
|
|
1920
1921
|
SubconsciousModels["SUBCONSCIOUS_DEEPSEEK_V4_1_FLASH_MARATHON"] = "subconscious/deepseek-v4.1-flash-marathon";
|
|
1921
1922
|
SubconsciousModels["SUBCONSCIOUS_TIM_QWEN3_6_27B"] = "subconscious/tim-qwen3.6-27b";
|
|
1922
1923
|
})(SubconsciousModels || (SubconsciousModels = {}));
|
|
1924
|
+
export var SubqModels;
|
|
1925
|
+
(function (SubqModels) {
|
|
1926
|
+
SubqModels["SUBQ_SNAP_PREVIEW"] = "subq-snap-preview";
|
|
1927
|
+
})(SubqModels || (SubqModels = {}));
|
|
1923
1928
|
export var SyntheticModels;
|
|
1924
1929
|
(function (SyntheticModels) {
|
|
1925
1930
|
SyntheticModels["SYN_LARGE_TEXT"] = "syn:large:text";
|
|
@@ -468,22 +468,27 @@ const HAND_DESCRIPTORS = [
|
|
|
468
468
|
setupUrl: "https://console.typesafe.ai/keys",
|
|
469
469
|
},
|
|
470
470
|
// Decision precedence is decideOrder, not position: typesafe 1, laya 2 and
|
|
471
|
-
// xor 3 (from catalog/laya.json and catalog/xor.json),
|
|
472
|
-
// cloudflare-clef
|
|
471
|
+
// xor 3 (from catalog/laya.json and catalog/xor.json), subq 4 (from
|
|
472
|
+
// catalog/subq.json), perplexity-decider 5, cloudflare-clef 6.
|
|
473
473
|
// resolveDefaultDecisionProvider() returns the first configured
|
|
474
474
|
// DECISION_PROVIDERS entry in that order, so a host configured for several
|
|
475
475
|
// keeps Jev for every built-in consumer and reaches the others only by
|
|
476
476
|
// naming them. Renumbering silently changes which model routes, compacts
|
|
477
477
|
// and plans for every such host.
|
|
478
|
+
// perplexity-decider and cloudflare-clef come last because each shares its
|
|
479
|
+
// environment key with a text provider: a key set only for that text provider
|
|
480
|
+
// must not displace a decision provider a host set up on purpose. subq is
|
|
481
|
+
// ahead of them only because SUBQ_API_KEY belongs to no other provider.
|
|
478
482
|
{
|
|
479
483
|
name: AIProviderName.PERPLEXITY_DECIDER,
|
|
480
484
|
aliases: [],
|
|
481
485
|
credentialsKey: "perplexityDecider",
|
|
482
486
|
envVars: {
|
|
483
487
|
// The same key the `perplexity` text provider reads, so an ambient
|
|
484
|
-
// PERPLEXITY_API_KEY configures this provider too. Its decideOrder (
|
|
485
|
-
// sits after XOR's (3), which
|
|
486
|
-
// decision provider a host
|
|
488
|
+
// PERPLEXITY_API_KEY configures this provider too. Its decideOrder (5)
|
|
489
|
+
// sits after XOR's (3) and SubQ's (4), which have keys of their own, which
|
|
490
|
+
// is what keeps that from displacing any other decision provider a host
|
|
491
|
+
// has configured.
|
|
487
492
|
apiKey: "PERPLEXITY_API_KEY",
|
|
488
493
|
// Optional: the API is hosted at a public endpoint, so a key alone is
|
|
489
494
|
// enough and there is no extraRequired.
|
|
@@ -495,7 +500,7 @@ const HAND_DESCRIPTORS = [
|
|
|
495
500
|
// declaration that keeps it out of every generation code path, and out of
|
|
496
501
|
// the way of the `perplexity` text provider.
|
|
497
502
|
inferenceKinds: ["decide"],
|
|
498
|
-
decideOrder:
|
|
503
|
+
decideOrder: 5,
|
|
499
504
|
toolSupport: "none",
|
|
500
505
|
localRuntime: false,
|
|
501
506
|
healthCheck: "env-only",
|
|
@@ -563,7 +568,7 @@ const HAND_DESCRIPTORS = [
|
|
|
563
568
|
// declaration that keeps it out of every generation code path, and out of
|
|
564
569
|
// the way of the `cloudflare` text provider.
|
|
565
570
|
inferenceKinds: ["decide"],
|
|
566
|
-
decideOrder:
|
|
571
|
+
decideOrder: 6,
|
|
567
572
|
toolSupport: "none",
|
|
568
573
|
localRuntime: false,
|
|
569
574
|
healthCheck: "env-only",
|
|
@@ -2,4 +2,4 @@ import type { DecideCatalogJson, ProviderCatalogJson } from "../../types/index.j
|
|
|
2
2
|
export declare const CATALOG_JSON_ENTRIES: ProviderCatalogJson[];
|
|
3
3
|
export declare const CATALOG_PROVIDER_IDS: readonly ["a2agent", "abliteration", "above-dev", "ai21", "aiand", "aihubmix", "aionlabs", "ambient", "api-route", "arcee", "atlas-cloud", "avian-io", "baidu-qianfan", "baseten", "bee-heossi", "byteplus-modelark", "bytez", "cerebras", "charm-hyper", "chutes", "cloudflare", "crusoe", "dashscope", "deepinfra", "deepseek", "empiriolabs", "featherless-ai", "fireworks", "friendli", "gmicloud", "gradientai", "groq", "hetzner-inference", "huggingface", "inception-labs", "inceptron", "inco", "inference-net", "io-intelligence", "koscompute", "lemonfox-ai", "lilac", "llmtech", "longcat", "mancer", "meta-model-api", "minimax", "mistral", "moark", "modelscope", "moonshot-ai", "morph", "naver-clova-studio", "nebius", "neuralwatt", "novita", "ovhcloud", "parasail", "pareto-inference", "perplexity", "poolside", "prime-intellect", "reka", "runinfra", "sakana-ai", "sambanova", "sarvam", "scaleway", "siliconflow", "stackit", "stepfun", "subconscious", "synthetic", "telnyx", "thinking-machines", "tinfoil", "together-ai", "umans-ai", "upstage", "venice-ai", "vispark", "vultr-inference", "wafer", "wandb-inference", "xai", "xiaomi-mimo", "z-ai"];
|
|
4
4
|
export declare const DECIDE_CATALOG_JSON_ENTRIES: DecideCatalogJson[];
|
|
5
|
-
export declare const DECIDE_CATALOG_PROVIDER_IDS: readonly ["laya", "xor"];
|
|
5
|
+
export declare const DECIDE_CATALOG_PROVIDER_IDS: readonly ["laya", "subq", "xor"];
|
|
@@ -73,6 +73,7 @@ import siliconflowJson from "./siliconflow.json" with { type: "json" };
|
|
|
73
73
|
import stackitJson from "./stackit.json" with { type: "json" };
|
|
74
74
|
import stepfunJson from "./stepfun.json" with { type: "json" };
|
|
75
75
|
import subconsciousJson from "./subconscious.json" with { type: "json" };
|
|
76
|
+
import subqJson from "./subq.json" with { type: "json" };
|
|
76
77
|
import syntheticJson from "./synthetic.json" with { type: "json" };
|
|
77
78
|
import telnyxJson from "./telnyx.json" with { type: "json" };
|
|
78
79
|
import thinkingMachinesJson from "./thinking-machines.json" with { type: "json" };
|
|
@@ -277,6 +278,7 @@ export const CATALOG_PROVIDER_IDS = [
|
|
|
277
278
|
];
|
|
278
279
|
export const DECIDE_CATALOG_JSON_ENTRIES = [
|
|
279
280
|
layaJson,
|
|
281
|
+
subqJson,
|
|
280
282
|
xorJson,
|
|
281
283
|
].map(asDecideEntry);
|
|
282
|
-
export const DECIDE_CATALOG_PROVIDER_IDS = ["laya", "xor"];
|
|
284
|
+
export const DECIDE_CATALOG_PROVIDER_IDS = ["laya", "subq", "xor"];
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./provider-catalog.schema.json",
|
|
3
|
+
"id": "subq",
|
|
4
|
+
"displayName": "SubQ",
|
|
5
|
+
"aliases": ["subquadratic", "subq-snap"],
|
|
6
|
+
"inferenceKinds": ["decide"],
|
|
7
|
+
"wire": { "baseURL": "https://api.subq.ai" },
|
|
8
|
+
"models": {
|
|
9
|
+
"default": "subq-snap-preview",
|
|
10
|
+
"topModels": ["subq-snap-preview"],
|
|
11
|
+
"catalog": {
|
|
12
|
+
"subq-snap-preview": {
|
|
13
|
+
"contextWindow": 393216,
|
|
14
|
+
"maxOutputTokens": 1,
|
|
15
|
+
"vision": false,
|
|
16
|
+
"status": "preview",
|
|
17
|
+
"description": "Recommended - SubQ Snap Preview, decision model for boolean, choice and score questions"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"decisionLimits": { "maxStateTokens": 376000, "advisory": true },
|
|
22
|
+
"decide": {
|
|
23
|
+
"dialect": "system-one",
|
|
24
|
+
"order": 4,
|
|
25
|
+
"baseURLNormalize": ["strip-trailing-slash"],
|
|
26
|
+
"endpoint": "{baseURL}/v1/systemone",
|
|
27
|
+
"model": { "placement": "body" },
|
|
28
|
+
"errors": {
|
|
29
|
+
"rules": [
|
|
30
|
+
{ "status": 401, "kind": "authentication" },
|
|
31
|
+
{ "status": [402, 403, 422], "kind": "invalid_request" },
|
|
32
|
+
{ "status": 429, "kind": "rate_limit" },
|
|
33
|
+
{ "status": 503, "kind": "overloaded" },
|
|
34
|
+
{ "statusMin": 500, "kind": "server" }
|
|
35
|
+
],
|
|
36
|
+
"default": "invalid_request",
|
|
37
|
+
"bodyShapes": [{ "path": "detail.message" }, { "path": "detail" }]
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"setup": {
|
|
41
|
+
"url": "https://console.subq.ai",
|
|
42
|
+
"apiKeyFormat": null,
|
|
43
|
+
"billingPolicy": "no-free-tier",
|
|
44
|
+
"description": "API key from the SubQ console",
|
|
45
|
+
"instructions": [
|
|
46
|
+
"1. Sign up at https://console.subq.ai and create an API key (the console shows it once)",
|
|
47
|
+
"2. Set {apiKeyEnvVar} in your .env file",
|
|
48
|
+
"3. A request made with no credits left returns HTTP 402"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"evidence": {
|
|
52
|
+
"rosterVerified": {
|
|
53
|
+
"date": "2026-10-13",
|
|
54
|
+
"method": "Checked by the marketing session, not in this change: GET https://api.subq.ai/v1/models without a key listed subq-snap-preview, and docs.subq.ai/using-the-api/models was read the same day. No request was made to SubQ in this change"
|
|
55
|
+
},
|
|
56
|
+
"liveMatrix": null,
|
|
57
|
+
"addedInPR": "https://github.com/juspay/neurolink/pull/1986"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type CatalogProviderName = "a2agent" | "abliteration" | "above-dev" | "ai21" | "aiand" | "aihubmix" | "aionlabs" | "ambient" | "api-route" | "arcee" | "atlas-cloud" | "avian-io" | "baidu-qianfan" | "baseten" | "bee-heossi" | "byteplus-modelark" | "bytez" | "cerebras" | "charm-hyper" | "chutes" | "cloudflare" | "crusoe" | "dashscope" | "deepinfra" | "deepseek" | "empiriolabs" | "featherless-ai" | "fireworks" | "friendli" | "gmicloud" | "gradientai" | "groq" | "hetzner-inference" | "huggingface" | "inception-labs" | "inceptron" | "inco" | "inference-net" | "io-intelligence" | "koscompute" | "laya" | "lemonfox-ai" | "lilac" | "llmtech" | "longcat" | "mancer" | "meta-model-api" | "minimax" | "mistral" | "moark" | "modelscope" | "moonshot-ai" | "morph" | "naver-clova-studio" | "nebius" | "neuralwatt" | "novita" | "ovhcloud" | "parasail" | "pareto-inference" | "perplexity" | "poolside" | "prime-intellect" | "reka" | "runinfra" | "sakana-ai" | "sambanova" | "sarvam" | "scaleway" | "siliconflow" | "stackit" | "stepfun" | "subconscious" | "synthetic" | "telnyx" | "thinking-machines" | "tinfoil" | "together-ai" | "umans-ai" | "upstage" | "venice-ai" | "vispark" | "vultr-inference" | "wafer" | "wandb-inference" | "xai" | "xiaomi-mimo" | "xor" | "z-ai";
|
|
2
|
-
export type CatalogCredentialKey = "a2agent" | "abliteration" | "aboveDev" | "ai21" | "aiand" | "aihubmix" | "aionlabs" | "ambient" | "apiRoute" | "arcee" | "atlasCloud" | "avianIo" | "baiduQianfan" | "baseten" | "beeHeossi" | "byteplusModelark" | "bytez" | "cerebras" | "charmHyper" | "chutes" | "cloudflare" | "crusoe" | "dashscope" | "deepinfra" | "deepseek" | "empiriolabs" | "featherlessAi" | "fireworks" | "friendli" | "gmicloud" | "gradientai" | "groq" | "hetznerInference" | "huggingFace" | "inceptionLabs" | "inceptron" | "inco" | "inferenceNet" | "ioIntelligence" | "koscompute" | "laya" | "lemonfoxAi" | "lilac" | "llmtech" | "longcat" | "mancer" | "metaModelApi" | "minimax" | "mistral" | "moark" | "modelscope" | "moonshotAi" | "morph" | "naverClovaStudio" | "nebius" | "neuralwatt" | "novita" | "ovhcloud" | "parasail" | "paretoInference" | "perplexity" | "poolside" | "primeIntellect" | "reka" | "runinfra" | "sakanaAi" | "sambanova" | "sarvam" | "scaleway" | "siliconflow" | "stackit" | "stepfun" | "subconscious" | "synthetic" | "telnyx" | "thinkingMachines" | "tinfoil" | "together" | "umansAi" | "upstage" | "veniceAi" | "vispark" | "vultrInference" | "wafer" | "wandbInference" | "xai" | "xiaomiMimo" | "xor" | "zAi";
|
|
1
|
+
export type CatalogProviderName = "a2agent" | "abliteration" | "above-dev" | "ai21" | "aiand" | "aihubmix" | "aionlabs" | "ambient" | "api-route" | "arcee" | "atlas-cloud" | "avian-io" | "baidu-qianfan" | "baseten" | "bee-heossi" | "byteplus-modelark" | "bytez" | "cerebras" | "charm-hyper" | "chutes" | "cloudflare" | "crusoe" | "dashscope" | "deepinfra" | "deepseek" | "empiriolabs" | "featherless-ai" | "fireworks" | "friendli" | "gmicloud" | "gradientai" | "groq" | "hetzner-inference" | "huggingface" | "inception-labs" | "inceptron" | "inco" | "inference-net" | "io-intelligence" | "koscompute" | "laya" | "lemonfox-ai" | "lilac" | "llmtech" | "longcat" | "mancer" | "meta-model-api" | "minimax" | "mistral" | "moark" | "modelscope" | "moonshot-ai" | "morph" | "naver-clova-studio" | "nebius" | "neuralwatt" | "novita" | "ovhcloud" | "parasail" | "pareto-inference" | "perplexity" | "poolside" | "prime-intellect" | "reka" | "runinfra" | "sakana-ai" | "sambanova" | "sarvam" | "scaleway" | "siliconflow" | "stackit" | "stepfun" | "subconscious" | "subq" | "synthetic" | "telnyx" | "thinking-machines" | "tinfoil" | "together-ai" | "umans-ai" | "upstage" | "venice-ai" | "vispark" | "vultr-inference" | "wafer" | "wandb-inference" | "xai" | "xiaomi-mimo" | "xor" | "z-ai";
|
|
2
|
+
export type CatalogCredentialKey = "a2agent" | "abliteration" | "aboveDev" | "ai21" | "aiand" | "aihubmix" | "aionlabs" | "ambient" | "apiRoute" | "arcee" | "atlasCloud" | "avianIo" | "baiduQianfan" | "baseten" | "beeHeossi" | "byteplusModelark" | "bytez" | "cerebras" | "charmHyper" | "chutes" | "cloudflare" | "crusoe" | "dashscope" | "deepinfra" | "deepseek" | "empiriolabs" | "featherlessAi" | "fireworks" | "friendli" | "gmicloud" | "gradientai" | "groq" | "hetznerInference" | "huggingFace" | "inceptionLabs" | "inceptron" | "inco" | "inferenceNet" | "ioIntelligence" | "koscompute" | "laya" | "lemonfoxAi" | "lilac" | "llmtech" | "longcat" | "mancer" | "metaModelApi" | "minimax" | "mistral" | "moark" | "modelscope" | "moonshotAi" | "morph" | "naverClovaStudio" | "nebius" | "neuralwatt" | "novita" | "ovhcloud" | "parasail" | "paretoInference" | "perplexity" | "poolside" | "primeIntellect" | "reka" | "runinfra" | "sakanaAi" | "sambanova" | "sarvam" | "scaleway" | "siliconflow" | "stackit" | "stepfun" | "subconscious" | "subq" | "synthetic" | "telnyx" | "thinkingMachines" | "tinfoil" | "together" | "umansAi" | "upstage" | "veniceAi" | "vispark" | "vultrInference" | "wafer" | "wandbInference" | "xai" | "xiaomiMimo" | "xor" | "zAi";
|