@juspay/neurolink
Version:
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
394 lines (393 loc) • 14.7 kB
JavaScript
/**
* Anthropic model manifest. Canonical ids match AnthropicModels
* (src/lib/constants/enums.ts:524+) and MODEL_CONTEXT_WINDOWS.anthropic
* (src/lib/constants/contextWindows.ts:160-182). maxOutputTokens values
* come from getClaudeMaxOutputTokens (src/lib/utils/tokenLimits.ts) — the
* regex ladder already authoritative for native Claude request paths.
*/
export const anthropicManifest = {
defaultContextWindow: 200_000,
familyRules: [
{
// claude-{opus,sonnet,haiku}-N (N>=4) and claude-{fable,mythos}-N —
// mirrors CLAUDE_MODERN_VISION_FAMILIES
// (src/lib/adapters/providerImageAdapter.ts:70-73). Applied to
// gateway-shaped ids (e.g. "vertex_ai/claude-sonnet-5@20260203") that
// don't exact- or prefix-match any entry below.
pattern: /claude-(?:opus|sonnet|haiku)-(?:[4-9]|\d{2,})/i,
patch: { vision: true },
},
{
pattern: /claude-(?:fable|mythos)-\d/i,
patch: { vision: true },
},
],
models: {
"claude-opus-5-5": {
aliases: ["opus-5.5"],
displayName: "Claude Opus 5.5",
contextWindow: 1_000_000,
maxOutputTokens: 128_000,
// No pricingPerMTok DELIBERATELY: PRICING.anthropic already carries
// real rates for this id (input 4.0/output 20.0 per MTok) — see the
// claude-sonnet-5 comment below for why this defers to that table.
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
samplingParams: false, // matches SAMPLING_PARAM_REJECTING_FAMILIES /opus[-_.]?5(?![0-9])/i
},
"claude-sonnet-5-5": {
aliases: ["sonnet-5.5", "claude-sonnet"],
displayName: "Claude Sonnet 5.5",
contextWindow: 1_000_000,
maxOutputTokens: 128_000,
// No pricingPerMTok DELIBERATELY: PRICING.anthropic already carries
// real rates for this id (input 2.0/output 10.0 per MTok) — see the
// claude-sonnet-5 comment below for why this defers to that table.
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
samplingParams: false, // matches SAMPLING_PARAM_REJECTING_FAMILIES /sonnet[-_.]?5(?![0-9])/i
},
"claude-fable-5-1": {
aliases: ["fable-5.1"],
displayName: "Claude Fable 5.1",
contextWindow: 1_000_000,
maxOutputTokens: 128_000,
// No pricingPerMTok DELIBERATELY: PRICING.anthropic already carries
// real rates for this id (input 10.0/output 50.0 per MTok) — see the
// claude-sonnet-5 comment below for why this defers to that table.
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
samplingParams: false, // matches SAMPLING_PARAM_REJECTING_FAMILIES /fable/i
},
"claude-sonnet-5": {
aliases: ["sonnet-5"],
displayName: "Claude Sonnet 5",
contextWindow: 1_000_000,
// Was 64_000; corrected to 128_000 to match the official spec
// (platform.claude.com/docs/en/about-claude/models/overview) and the
// matching fix in getClaudeMaxOutputTokens (tokenLimits.ts), which this
// manifest's own header comment names as the authoritative source.
maxOutputTokens: 128_000,
// No pricingPerMTok DELIBERATELY: PRICING.anthropic carries real
// rates for this id, and findRates() is manifest-first with a legacy
// fallback — omitting the rate here defers to that table instead of
// duplicating it, and keeps this entry out of the manifest-derived
// MODEL_REGISTRY rows (which only admit priced entries).
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
samplingParams: false, // matches SAMPLING_PARAM_REJECTING_FAMILIES /sonnet[-_.]?5(?![0-9])/i
},
"claude-opus-4-6": {
aliases: ["opus-4.6", "claude-opus-latest"],
displayName: "Claude Opus 4.6",
contextWindow: 1_000_000,
maxOutputTokens: 32_000,
pricingPerMTok: {
input: 5.0,
output: 25.0,
cacheRead: 0.5,
cacheWrite: 6.25,
},
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
},
"claude-sonnet-4-6": {
aliases: ["sonnet-4.6"],
displayName: "Claude Sonnet 4.6",
contextWindow: 1_000_000,
maxOutputTokens: 64_000,
pricingPerMTok: {
input: 3.0,
output: 15.0,
cacheRead: 0.3,
cacheWrite: 3.75,
},
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
},
"claude-opus-4-5-20251101": {
aliases: ["claude-opus-4-5", "opus-4.5"],
displayName: "Claude Opus 4.5",
contextWindow: 200_000,
maxOutputTokens: 32_000,
pricingPerMTok: {
input: 5.0,
output: 25.0,
cacheRead: 0.5,
cacheWrite: 6.25,
},
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
// Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_OPUS_4_5]
// (src/lib/models/modelRegistry.ts:1084-1133) so Task 9's equality test
// holds for performance/useCases/category, not just pricing/limits.
curated: {
performance: { speed: "medium", quality: "high", accuracy: "high" },
useCases: {
coding: 10,
creative: 10,
analysis: 10,
conversation: 9,
reasoning: 10,
translation: 9,
summarization: 9,
},
category: "reasoning",
},
},
"claude-sonnet-4-5-20250929": {
aliases: ["claude-sonnet-4-5", "sonnet-4.5"],
displayName: "Claude Sonnet 4.5",
contextWindow: 200_000,
maxOutputTokens: 64_000,
pricingPerMTok: {
input: 3.0,
output: 15.0,
cacheRead: 0.3,
cacheWrite: 3.75,
},
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
// Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_SONNET_4_5]
// (src/lib/models/modelRegistry.ts:1135-1179).
curated: {
performance: { speed: "medium", quality: "high", accuracy: "high" },
useCases: {
coding: 10,
creative: 9,
analysis: 9,
conversation: 9,
reasoning: 10,
translation: 8,
summarization: 8,
},
category: "coding",
},
},
"claude-haiku-4-5-20251001": {
aliases: ["claude-haiku-4-5", "haiku-4.5", "claude-4-5-haiku"],
displayName: "Claude 4.5 Haiku",
contextWindow: 200_000,
maxOutputTokens: 64_000,
pricingPerMTok: {
input: 1.0,
output: 5.0,
cacheRead: 0.1,
cacheWrite: 1.25,
},
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
// Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_4_5_HAIKU]
// (src/lib/models/modelRegistry.ts:1181-1224).
curated: {
performance: { speed: "fast", quality: "high", accuracy: "high" },
useCases: {
coding: 8,
creative: 8,
analysis: 8,
conversation: 9,
reasoning: 8,
translation: 8,
summarization: 9,
},
category: "general",
},
},
"claude-opus-4-1-20250805": {
aliases: ["claude-opus-4-1", "opus-4.1"],
displayName: "Claude Opus 4.1",
contextWindow: 200_000,
maxOutputTokens: 32_000,
pricingPerMTok: {
input: 15.0,
output: 75.0,
cacheRead: 1.5,
cacheWrite: 18.75,
},
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
},
"claude-opus-4-20250514": {
aliases: ["claude-opus-4"],
displayName: "Claude Opus 4",
contextWindow: 200_000,
maxOutputTokens: 32_000,
pricingPerMTok: {
input: 15.0,
output: 75.0,
cacheRead: 1.5,
cacheWrite: 18.75,
},
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
},
"claude-sonnet-4-20250514": {
aliases: ["claude-sonnet-4"],
displayName: "Claude Sonnet 4",
contextWindow: 200_000,
maxOutputTokens: 64_000,
pricingPerMTok: {
input: 3.0,
output: 15.0,
cacheRead: 0.3,
cacheWrite: 3.75,
},
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
},
"claude-3-7-sonnet-20250219": {
aliases: ["claude-3-7-sonnet"],
displayName: "Claude 3.7 Sonnet",
contextWindow: 200_000,
maxOutputTokens: 64_000,
pricingPerMTok: {
input: 3.0,
output: 15.0,
cacheRead: 0.3,
cacheWrite: 3.75,
},
vision: true,
functionCalling: true,
reasoning: true,
jsonMode: true,
},
"claude-3-5-sonnet-20241022": {
aliases: ["claude-3-5-sonnet"],
displayName: "Claude 3.5 Sonnet",
contextWindow: 200_000,
maxOutputTokens: 8_192,
pricingPerMTok: {
input: 3.0,
output: 15.0,
cacheRead: 0.3,
cacheWrite: 3.75,
},
vision: true,
functionCalling: true,
reasoning: false,
jsonMode: true,
// Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_3_5_SONNET]
// (src/lib/models/modelRegistry.ts:1226-1275).
curated: {
performance: { speed: "medium", quality: "high", accuracy: "high" },
useCases: {
coding: 10,
creative: 9,
analysis: 9,
conversation: 9,
reasoning: 10,
translation: 8,
summarization: 8,
},
category: "coding",
},
},
"claude-3-5-haiku-20241022": {
aliases: ["claude-3-5-haiku"],
displayName: "Claude 3.5 Haiku",
contextWindow: 200_000,
maxOutputTokens: 8_192,
pricingPerMTok: {
input: 0.8,
output: 4.0,
cacheRead: 0.08,
cacheWrite: 1.0,
},
// Deliberately false: the last non-vision Claude. Does not appear in
// VISION_CAPABILITIES.anthropic and does not match the modern-family
// regex (family word precedes the version digit for 3.x ids), see
// providerImageAdapter.ts:66-68's comment.
vision: false,
functionCalling: true,
reasoning: false,
jsonMode: true,
// Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_3_5_HAIKU]
// (src/lib/models/modelRegistry.ts:1277-1320).
curated: {
performance: { speed: "fast", quality: "high", accuracy: "high" },
useCases: {
coding: 8,
creative: 7,
analysis: 8,
conversation: 8,
reasoning: 8,
translation: 8,
summarization: 9,
},
category: "general",
},
},
"claude-3-opus-20240229": {
aliases: ["claude-3-opus"],
displayName: "Claude 3 Opus",
contextWindow: 200_000,
maxOutputTokens: 4_096,
pricingPerMTok: {
input: 15.0,
output: 75.0,
cacheRead: 1.5,
cacheWrite: 18.75,
},
vision: true,
functionCalling: true,
reasoning: false,
jsonMode: true,
},
"claude-3-sonnet-20240229": {
aliases: ["claude-3-sonnet"],
displayName: "Claude 3 Sonnet",
contextWindow: 200_000,
maxOutputTokens: 4_096,
pricingPerMTok: {
input: 3.0,
output: 15.0,
cacheRead: 0.3,
cacheWrite: 3.75,
},
vision: true,
functionCalling: true,
reasoning: false,
jsonMode: true,
},
"claude-3-haiku-20240307": {
aliases: ["claude-3-haiku"],
displayName: "Claude 3 Haiku",
contextWindow: 200_000,
maxOutputTokens: 4_096,
pricingPerMTok: {
input: 0.25,
output: 1.25,
cacheRead: 0.025,
cacheWrite: 0.3125,
},
vision: true,
functionCalling: true,
reasoning: false,
jsonMode: true,
},
},
};