@juspay/neurolink 11.3.1 → 11.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/CHANGELOG.md +6 -2
  2. package/dist/adapters/providerImageAdapter.js +3 -1
  3. package/dist/browser/neurolink.min.js +276 -276
  4. package/dist/constants/contextWindows.js +1 -1
  5. package/dist/constants/enums.d.ts +26 -1
  6. package/dist/constants/enums.js +37 -3
  7. package/dist/lib/adapters/providerImageAdapter.js +3 -1
  8. package/dist/lib/constants/contextWindows.js +1 -1
  9. package/dist/lib/constants/enums.d.ts +26 -1
  10. package/dist/lib/constants/enums.js +37 -3
  11. package/dist/lib/models/manifestRegistry.d.ts +33 -0
  12. package/dist/lib/models/manifestRegistry.js +174 -0
  13. package/dist/lib/models/manifests/anthropic.d.ts +9 -0
  14. package/dist/lib/models/manifests/anthropic.js +346 -0
  15. package/dist/lib/models/manifests/azure.d.ts +2 -0
  16. package/dist/lib/models/manifests/azure.js +87 -0
  17. package/dist/lib/models/manifests/bedrock.d.ts +2 -0
  18. package/dist/lib/models/manifests/bedrock.js +75 -0
  19. package/dist/lib/models/manifests/cloudflare.d.ts +8 -0
  20. package/dist/lib/models/manifests/cloudflare.js +19 -0
  21. package/dist/lib/models/manifests/cohere.d.ts +8 -0
  22. package/dist/lib/models/manifests/cohere.js +19 -0
  23. package/dist/lib/models/manifests/deepseek.d.ts +8 -0
  24. package/dist/lib/models/manifests/deepseek.js +19 -0
  25. package/dist/lib/models/manifests/fireworks.d.ts +8 -0
  26. package/dist/lib/models/manifests/fireworks.js +19 -0
  27. package/dist/lib/models/manifests/google-ai.d.ts +2 -0
  28. package/dist/lib/models/manifests/google-ai.js +28 -0
  29. package/dist/lib/models/manifests/groq.d.ts +8 -0
  30. package/dist/lib/models/manifests/groq.js +19 -0
  31. package/dist/lib/models/manifests/huggingface.d.ts +8 -0
  32. package/dist/lib/models/manifests/huggingface.js +19 -0
  33. package/dist/lib/models/manifests/ideogram.d.ts +8 -0
  34. package/dist/lib/models/manifests/ideogram.js +19 -0
  35. package/dist/lib/models/manifests/jina.d.ts +8 -0
  36. package/dist/lib/models/manifests/jina.js +19 -0
  37. package/dist/lib/models/manifests/litellm.d.ts +8 -0
  38. package/dist/lib/models/manifests/litellm.js +19 -0
  39. package/dist/lib/models/manifests/llamacpp.d.ts +8 -0
  40. package/dist/lib/models/manifests/llamacpp.js +19 -0
  41. package/dist/lib/models/manifests/lm-studio.d.ts +8 -0
  42. package/dist/lib/models/manifests/lm-studio.js +19 -0
  43. package/dist/lib/models/manifests/mistral.d.ts +2 -0
  44. package/dist/lib/models/manifests/mistral.js +50 -0
  45. package/dist/lib/models/manifests/nvidia-nim.d.ts +8 -0
  46. package/dist/lib/models/manifests/nvidia-nim.js +19 -0
  47. package/dist/lib/models/manifests/ollama.d.ts +2 -0
  48. package/dist/lib/models/manifests/ollama.js +72 -0
  49. package/dist/lib/models/manifests/openai-compatible.d.ts +8 -0
  50. package/dist/lib/models/manifests/openai-compatible.js +19 -0
  51. package/dist/lib/models/manifests/openai.d.ts +11 -0
  52. package/dist/lib/models/manifests/openai.js +560 -0
  53. package/dist/lib/models/manifests/openrouter.d.ts +8 -0
  54. package/dist/lib/models/manifests/openrouter.js +19 -0
  55. package/dist/lib/models/manifests/perplexity.d.ts +8 -0
  56. package/dist/lib/models/manifests/perplexity.js +19 -0
  57. package/dist/lib/models/manifests/recraft.d.ts +8 -0
  58. package/dist/lib/models/manifests/recraft.js +19 -0
  59. package/dist/lib/models/manifests/replicate.d.ts +8 -0
  60. package/dist/lib/models/manifests/replicate.js +19 -0
  61. package/dist/lib/models/manifests/sagemaker.d.ts +8 -0
  62. package/dist/lib/models/manifests/sagemaker.js +19 -0
  63. package/dist/lib/models/manifests/stability.d.ts +8 -0
  64. package/dist/lib/models/manifests/stability.js +19 -0
  65. package/dist/lib/models/manifests/together-ai.d.ts +8 -0
  66. package/dist/lib/models/manifests/together-ai.js +19 -0
  67. package/dist/lib/models/manifests/vertex.d.ts +8 -0
  68. package/dist/lib/models/manifests/vertex.js +19 -0
  69. package/dist/lib/models/manifests/voyage.d.ts +8 -0
  70. package/dist/lib/models/manifests/voyage.js +19 -0
  71. package/dist/lib/models/manifests/xai.d.ts +8 -0
  72. package/dist/lib/models/manifests/xai.js +19 -0
  73. package/dist/lib/models/modelRegistry.js +225 -7
  74. package/dist/lib/types/model.d.ts +77 -0
  75. package/dist/lib/utils/modelChoices.js +0 -1
  76. package/dist/models/manifestRegistry.d.ts +33 -0
  77. package/dist/models/manifestRegistry.js +173 -0
  78. package/dist/models/manifests/anthropic.d.ts +9 -0
  79. package/dist/models/manifests/anthropic.js +345 -0
  80. package/dist/models/manifests/azure.d.ts +2 -0
  81. package/dist/models/manifests/azure.js +86 -0
  82. package/dist/models/manifests/bedrock.d.ts +2 -0
  83. package/dist/models/manifests/bedrock.js +74 -0
  84. package/dist/models/manifests/cloudflare.d.ts +8 -0
  85. package/dist/models/manifests/cloudflare.js +18 -0
  86. package/dist/models/manifests/cohere.d.ts +8 -0
  87. package/dist/models/manifests/cohere.js +18 -0
  88. package/dist/models/manifests/deepseek.d.ts +8 -0
  89. package/dist/models/manifests/deepseek.js +18 -0
  90. package/dist/models/manifests/fireworks.d.ts +8 -0
  91. package/dist/models/manifests/fireworks.js +18 -0
  92. package/dist/models/manifests/google-ai.d.ts +2 -0
  93. package/dist/models/manifests/google-ai.js +27 -0
  94. package/dist/models/manifests/groq.d.ts +8 -0
  95. package/dist/models/manifests/groq.js +18 -0
  96. package/dist/models/manifests/huggingface.d.ts +8 -0
  97. package/dist/models/manifests/huggingface.js +18 -0
  98. package/dist/models/manifests/ideogram.d.ts +8 -0
  99. package/dist/models/manifests/ideogram.js +18 -0
  100. package/dist/models/manifests/jina.d.ts +8 -0
  101. package/dist/models/manifests/jina.js +18 -0
  102. package/dist/models/manifests/litellm.d.ts +8 -0
  103. package/dist/models/manifests/litellm.js +18 -0
  104. package/dist/models/manifests/llamacpp.d.ts +8 -0
  105. package/dist/models/manifests/llamacpp.js +18 -0
  106. package/dist/models/manifests/lm-studio.d.ts +8 -0
  107. package/dist/models/manifests/lm-studio.js +18 -0
  108. package/dist/models/manifests/mistral.d.ts +2 -0
  109. package/dist/models/manifests/mistral.js +49 -0
  110. package/dist/models/manifests/nvidia-nim.d.ts +8 -0
  111. package/dist/models/manifests/nvidia-nim.js +18 -0
  112. package/dist/models/manifests/ollama.d.ts +2 -0
  113. package/dist/models/manifests/ollama.js +71 -0
  114. package/dist/models/manifests/openai-compatible.d.ts +8 -0
  115. package/dist/models/manifests/openai-compatible.js +18 -0
  116. package/dist/models/manifests/openai.d.ts +11 -0
  117. package/dist/models/manifests/openai.js +559 -0
  118. package/dist/models/manifests/openrouter.d.ts +8 -0
  119. package/dist/models/manifests/openrouter.js +18 -0
  120. package/dist/models/manifests/perplexity.d.ts +8 -0
  121. package/dist/models/manifests/perplexity.js +18 -0
  122. package/dist/models/manifests/recraft.d.ts +8 -0
  123. package/dist/models/manifests/recraft.js +18 -0
  124. package/dist/models/manifests/replicate.d.ts +8 -0
  125. package/dist/models/manifests/replicate.js +18 -0
  126. package/dist/models/manifests/sagemaker.d.ts +8 -0
  127. package/dist/models/manifests/sagemaker.js +18 -0
  128. package/dist/models/manifests/stability.d.ts +8 -0
  129. package/dist/models/manifests/stability.js +18 -0
  130. package/dist/models/manifests/together-ai.d.ts +8 -0
  131. package/dist/models/manifests/together-ai.js +18 -0
  132. package/dist/models/manifests/vertex.d.ts +8 -0
  133. package/dist/models/manifests/vertex.js +18 -0
  134. package/dist/models/manifests/voyage.d.ts +8 -0
  135. package/dist/models/manifests/voyage.js +18 -0
  136. package/dist/models/manifests/xai.d.ts +8 -0
  137. package/dist/models/manifests/xai.js +18 -0
  138. package/dist/models/modelRegistry.js +225 -7
  139. package/dist/types/model.d.ts +77 -0
  140. package/dist/utils/modelChoices.js +0 -1
  141. package/package.json +5 -2
@@ -0,0 +1,173 @@
1
+ import { PROVIDER_MAX_TOKENS } from "../core/constants.js";
2
+ import { anthropicManifest } from "./manifests/anthropic.js";
3
+ import { openaiManifest } from "./manifests/openai.js";
4
+ import { azureManifest } from "./manifests/azure.js";
5
+ import { bedrockManifest } from "./manifests/bedrock.js";
6
+ import { ollamaManifest } from "./manifests/ollama.js";
7
+ import { mistralManifest } from "./manifests/mistral.js";
8
+ import { googleAiManifest } from "./manifests/google-ai.js";
9
+ import { openaiCompatibleManifest } from "./manifests/openai-compatible.js";
10
+ import { openrouterManifest } from "./manifests/openrouter.js";
11
+ import { vertexManifest } from "./manifests/vertex.js";
12
+ import { huggingfaceManifest } from "./manifests/huggingface.js";
13
+ import { litellmManifest } from "./manifests/litellm.js";
14
+ import { sagemakerManifest } from "./manifests/sagemaker.js";
15
+ import { deepseekManifest } from "./manifests/deepseek.js";
16
+ import { nvidiaNimManifest } from "./manifests/nvidia-nim.js";
17
+ import { lmStudioManifest } from "./manifests/lm-studio.js";
18
+ import { llamacppManifest } from "./manifests/llamacpp.js";
19
+ import { xaiManifest } from "./manifests/xai.js";
20
+ import { groqManifest } from "./manifests/groq.js";
21
+ import { cohereManifest } from "./manifests/cohere.js";
22
+ import { togetherAiManifest } from "./manifests/together-ai.js";
23
+ import { fireworksManifest } from "./manifests/fireworks.js";
24
+ import { perplexityManifest } from "./manifests/perplexity.js";
25
+ import { cloudflareManifest } from "./manifests/cloudflare.js";
26
+ import { replicateManifest } from "./manifests/replicate.js";
27
+ import { voyageManifest } from "./manifests/voyage.js";
28
+ import { jinaManifest } from "./manifests/jina.js";
29
+ import { stabilityManifest } from "./manifests/stability.js";
30
+ import { ideogramManifest } from "./manifests/ideogram.js";
31
+ import { recraftManifest } from "./manifests/recraft.js";
32
+ /**
33
+ * Every provider's model manifest, keyed by the exact AIProviderName enum
34
+ * value (kebab-case) — e.g. "google-ai", "nvidia-nim". Manifests are pure
35
+ * data with zero heavy dependencies, so they are imported statically here
36
+ * (Critical Rule 1's dynamic-import mandate targets providerRegistry.ts's
37
+ * *provider* factories, which pull in real SDK clients — not this).
38
+ */
39
+ export const MANIFEST_REGISTRY = {
40
+ anthropic: anthropicManifest,
41
+ openai: openaiManifest,
42
+ azure: azureManifest,
43
+ bedrock: bedrockManifest,
44
+ ollama: ollamaManifest,
45
+ mistral: mistralManifest,
46
+ "google-ai": googleAiManifest,
47
+ "openai-compatible": openaiCompatibleManifest,
48
+ openrouter: openrouterManifest,
49
+ vertex: vertexManifest,
50
+ huggingface: huggingfaceManifest,
51
+ litellm: litellmManifest,
52
+ sagemaker: sagemakerManifest,
53
+ deepseek: deepseekManifest,
54
+ "nvidia-nim": nvidiaNimManifest,
55
+ "lm-studio": lmStudioManifest,
56
+ llamacpp: llamacppManifest,
57
+ xai: xaiManifest,
58
+ groq: groqManifest,
59
+ cohere: cohereManifest,
60
+ "together-ai": togetherAiManifest,
61
+ fireworks: fireworksManifest,
62
+ perplexity: perplexityManifest,
63
+ cloudflare: cloudflareManifest,
64
+ replicate: replicateManifest,
65
+ voyage: voyageManifest,
66
+ jina: jinaManifest,
67
+ stability: stabilityManifest,
68
+ ideogram: ideogramManifest,
69
+ recraft: recraftManifest,
70
+ };
71
+ export function getManifestForProvider(provider) {
72
+ return MANIFEST_REGISTRY[provider];
73
+ }
74
+ export function getAllManifestProviders() {
75
+ return Object.keys(MANIFEST_REGISTRY);
76
+ }
77
+ /**
78
+ * Apply every matching family rule's patch, in declaration order, on top of
79
+ * a base entry. Later rules win on overlapping fields (last patch applied
80
+ * wins), matching the "later registrations overwrite earlier ones" idiom
81
+ * used elsewhere in this subsystem (see registerRuntimeContextWindow's
82
+ * docblock, src/lib/constants/contextWindows.ts).
83
+ */
84
+ function applyFamilyRules(manifest, model, base) {
85
+ if (!manifest.familyRules) {
86
+ return base;
87
+ }
88
+ let result = base;
89
+ for (const rule of manifest.familyRules) {
90
+ if (rule.pattern.test(model)) {
91
+ result = { ...result, ...rule.patch };
92
+ }
93
+ }
94
+ return result;
95
+ }
96
+ /**
97
+ * Resolve a model against a provider's manifest WITHOUT ever falling back to
98
+ * the provider's `_default` entry. Used by callers that need to insert their
99
+ * own special-case fallback (cross-provider pricing, proxy pass-through)
100
+ * between "no real match" and "give up" — see resolveManifestEntry's
101
+ * docblock for why the split exists.
102
+ *
103
+ * Resolution order: exact canonical id, then a declared alias, then
104
+ * longest-prefix match (for tagged/gateway-shaped ids like Ollama's
105
+ * "llama3.2:latest" or OpenRouter's "openai/gpt-4o"), then undefined.
106
+ * Family rules are applied on top of whichever entry matched.
107
+ */
108
+ export function resolveManifestEntryExact(provider, model) {
109
+ const manifest = MANIFEST_REGISTRY[provider];
110
+ if (!manifest) {
111
+ return undefined;
112
+ }
113
+ const exact = manifest.models[model];
114
+ if (exact) {
115
+ return applyFamilyRules(manifest, model, exact);
116
+ }
117
+ const aliasMatch = Object.entries(manifest.models).find(([canonicalId, entry]) => canonicalId !== "_default" && entry.aliases.includes(model));
118
+ if (aliasMatch) {
119
+ return applyFamilyRules(manifest, model, aliasMatch[1]);
120
+ }
121
+ const sortedKeys = Object.keys(manifest.models)
122
+ .filter((k) => k !== "_default")
123
+ .sort((a, b) => b.length - a.length);
124
+ const prefixKey = sortedKeys.find((k) => model.startsWith(k));
125
+ if (prefixKey) {
126
+ return applyFamilyRules(manifest, model, manifest.models[prefixKey]);
127
+ }
128
+ return undefined;
129
+ }
130
+ /**
131
+ * Provider-specific output-token ceiling used to synthesize a `_default`
132
+ * entry when a manifest declares no explicit one (currently every
133
+ * MODEL_REGISTRY-generated manifest — azure, bedrock, ollama, mistral,
134
+ * google-ai — since `generateFullManifest` only emits real model ids).
135
+ * Mirrors the same table + fallback chain the minimal-manifest generator
136
+ * already uses (scripts/generate-remaining-manifests.ts), so a provider
137
+ * with no PROVIDER_MAX_TOKENS entry still gets an honest ceiling instead of
138
+ * `undefined`. Clamped against the manifest's own `defaultContextWindow` —
139
+ * an output ceiling can never legitimately exceed total context.
140
+ */
141
+ function defaultMaxOutputTokens(provider, defaultContextWindow) {
142
+ const providerLimits = PROVIDER_MAX_TOKENS[provider];
143
+ const rawMax = typeof providerLimits === "number"
144
+ ? providerLimits
145
+ : (providerLimits?.default ?? PROVIDER_MAX_TOKENS.default);
146
+ return Math.min(rawMax, defaultContextWindow);
147
+ }
148
+ /**
149
+ * Resolve a model against a provider's manifest, falling back to the
150
+ * provider's `_default` entry (synthesized from `PROVIDER_MAX_TOKENS`,
151
+ * clamped to `defaultContextWindow`, when no explicit `_default` model
152
+ * entry exists) when no real model matches. Family rules are tested
153
+ * against the ORIGINAL model string even on the `_default` path, so an
154
+ * unmatched gateway-shaped id still gets patched.
155
+ */
156
+ export function resolveManifestEntry(provider, model) {
157
+ const exact = resolveManifestEntryExact(provider, model);
158
+ if (exact) {
159
+ return exact;
160
+ }
161
+ const manifest = MANIFEST_REGISTRY[provider];
162
+ if (!manifest) {
163
+ return undefined;
164
+ }
165
+ const defaultEntry = manifest.models._default ?? {
166
+ aliases: [],
167
+ contextWindow: manifest.defaultContextWindow,
168
+ maxOutputTokens: defaultMaxOutputTokens(provider, manifest.defaultContextWindow),
169
+ vision: false,
170
+ functionCalling: false,
171
+ };
172
+ return applyFamilyRules(manifest, model, defaultEntry);
173
+ }
@@ -0,0 +1,9 @@
1
+ import type { ProviderModelManifest } from "../../types/index.js";
2
+ /**
3
+ * Anthropic model manifest. Canonical ids match AnthropicModels
4
+ * (src/lib/constants/enums.ts:524+) and MODEL_CONTEXT_WINDOWS.anthropic
5
+ * (src/lib/constants/contextWindows.ts:160-182). maxOutputTokens values
6
+ * come from getClaudeMaxOutputTokens (src/lib/utils/tokenLimits.ts) — the
7
+ * regex ladder already authoritative for native Claude request paths.
8
+ */
9
+ export declare const anthropicManifest: ProviderModelManifest;
@@ -0,0 +1,345 @@
1
+ /**
2
+ * Anthropic model manifest. Canonical ids match AnthropicModels
3
+ * (src/lib/constants/enums.ts:524+) and MODEL_CONTEXT_WINDOWS.anthropic
4
+ * (src/lib/constants/contextWindows.ts:160-182). maxOutputTokens values
5
+ * come from getClaudeMaxOutputTokens (src/lib/utils/tokenLimits.ts) — the
6
+ * regex ladder already authoritative for native Claude request paths.
7
+ */
8
+ export const anthropicManifest = {
9
+ defaultContextWindow: 200_000,
10
+ familyRules: [
11
+ {
12
+ // claude-{opus,sonnet,haiku}-N (N>=4) and claude-{fable,mythos}-N —
13
+ // mirrors CLAUDE_MODERN_VISION_FAMILIES
14
+ // (src/lib/adapters/providerImageAdapter.ts:70-73). Applied to
15
+ // gateway-shaped ids (e.g. "vertex_ai/claude-sonnet-5@20260203") that
16
+ // don't exact- or prefix-match any entry below.
17
+ pattern: /claude-(?:opus|sonnet|haiku)-(?:[4-9]|\d{2,})/i,
18
+ patch: { vision: true },
19
+ },
20
+ {
21
+ pattern: /claude-(?:fable|mythos)-\d/i,
22
+ patch: { vision: true },
23
+ },
24
+ ],
25
+ models: {
26
+ "claude-sonnet-5": {
27
+ aliases: ["sonnet-5", "claude-sonnet"],
28
+ displayName: "Claude Sonnet 5",
29
+ contextWindow: 1_000_000,
30
+ maxOutputTokens: 64_000,
31
+ // No pricingPerMTok: genuinely absent from PRICING.anthropic today.
32
+ // Do not invent a rate — hasPricing()/findRates() (pricing.ts) must
33
+ // keep reporting this model as unpriced.
34
+ vision: true,
35
+ functionCalling: true,
36
+ reasoning: true,
37
+ jsonMode: true,
38
+ samplingParams: false, // matches SAMPLING_PARAM_REJECTING_FAMILIES /sonnet[-_.]?5(?![0-9])/i
39
+ },
40
+ "claude-opus-4-6": {
41
+ aliases: ["opus-4.6", "claude-opus-latest"],
42
+ displayName: "Claude Opus 4.6",
43
+ contextWindow: 1_000_000,
44
+ maxOutputTokens: 32_000,
45
+ pricingPerMTok: {
46
+ input: 5.0,
47
+ output: 25.0,
48
+ cacheRead: 0.5,
49
+ cacheWrite: 6.25,
50
+ },
51
+ vision: true,
52
+ functionCalling: true,
53
+ reasoning: true,
54
+ jsonMode: true,
55
+ },
56
+ "claude-sonnet-4-6": {
57
+ aliases: ["sonnet-4.6"],
58
+ displayName: "Claude Sonnet 4.6",
59
+ contextWindow: 1_000_000,
60
+ maxOutputTokens: 64_000,
61
+ pricingPerMTok: {
62
+ input: 3.0,
63
+ output: 15.0,
64
+ cacheRead: 0.3,
65
+ cacheWrite: 3.75,
66
+ },
67
+ vision: true,
68
+ functionCalling: true,
69
+ reasoning: true,
70
+ jsonMode: true,
71
+ },
72
+ "claude-opus-4-5-20251101": {
73
+ aliases: ["claude-opus-4-5", "opus-4.5"],
74
+ displayName: "Claude Opus 4.5",
75
+ contextWindow: 200_000,
76
+ maxOutputTokens: 32_000,
77
+ pricingPerMTok: {
78
+ input: 5.0,
79
+ output: 25.0,
80
+ cacheRead: 0.5,
81
+ cacheWrite: 6.25,
82
+ },
83
+ vision: true,
84
+ functionCalling: true,
85
+ reasoning: true,
86
+ jsonMode: true,
87
+ // Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_OPUS_4_5]
88
+ // (src/lib/models/modelRegistry.ts:1084-1133) so Task 9's equality test
89
+ // holds for performance/useCases/category, not just pricing/limits.
90
+ curated: {
91
+ performance: { speed: "medium", quality: "high", accuracy: "high" },
92
+ useCases: {
93
+ coding: 10,
94
+ creative: 10,
95
+ analysis: 10,
96
+ conversation: 9,
97
+ reasoning: 10,
98
+ translation: 9,
99
+ summarization: 9,
100
+ },
101
+ category: "reasoning",
102
+ },
103
+ },
104
+ "claude-sonnet-4-5-20250929": {
105
+ aliases: ["claude-sonnet-4-5", "sonnet-4.5"],
106
+ displayName: "Claude Sonnet 4.5",
107
+ contextWindow: 200_000,
108
+ maxOutputTokens: 64_000,
109
+ pricingPerMTok: {
110
+ input: 3.0,
111
+ output: 15.0,
112
+ cacheRead: 0.3,
113
+ cacheWrite: 3.75,
114
+ },
115
+ vision: true,
116
+ functionCalling: true,
117
+ reasoning: true,
118
+ jsonMode: true,
119
+ // Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_SONNET_4_5]
120
+ // (src/lib/models/modelRegistry.ts:1135-1179).
121
+ curated: {
122
+ performance: { speed: "medium", quality: "high", accuracy: "high" },
123
+ useCases: {
124
+ coding: 10,
125
+ creative: 9,
126
+ analysis: 9,
127
+ conversation: 9,
128
+ reasoning: 10,
129
+ translation: 8,
130
+ summarization: 8,
131
+ },
132
+ category: "coding",
133
+ },
134
+ },
135
+ "claude-haiku-4-5-20251001": {
136
+ aliases: ["claude-haiku-4-5", "haiku-4.5", "claude-4-5-haiku"],
137
+ displayName: "Claude 4.5 Haiku",
138
+ contextWindow: 200_000,
139
+ maxOutputTokens: 64_000,
140
+ pricingPerMTok: {
141
+ input: 1.0,
142
+ output: 5.0,
143
+ cacheRead: 0.1,
144
+ cacheWrite: 1.25,
145
+ },
146
+ vision: true,
147
+ functionCalling: true,
148
+ reasoning: true,
149
+ jsonMode: true,
150
+ // Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_4_5_HAIKU]
151
+ // (src/lib/models/modelRegistry.ts:1181-1224).
152
+ curated: {
153
+ performance: { speed: "fast", quality: "high", accuracy: "high" },
154
+ useCases: {
155
+ coding: 8,
156
+ creative: 8,
157
+ analysis: 8,
158
+ conversation: 9,
159
+ reasoning: 8,
160
+ translation: 8,
161
+ summarization: 9,
162
+ },
163
+ category: "general",
164
+ },
165
+ },
166
+ "claude-opus-4-1-20250805": {
167
+ aliases: ["claude-opus-4-1", "opus-4.1"],
168
+ displayName: "Claude Opus 4.1",
169
+ contextWindow: 200_000,
170
+ maxOutputTokens: 32_000,
171
+ pricingPerMTok: {
172
+ input: 15.0,
173
+ output: 75.0,
174
+ cacheRead: 1.5,
175
+ cacheWrite: 18.75,
176
+ },
177
+ vision: true,
178
+ functionCalling: true,
179
+ reasoning: true,
180
+ jsonMode: true,
181
+ },
182
+ "claude-opus-4-20250514": {
183
+ aliases: ["claude-opus-4"],
184
+ displayName: "Claude Opus 4",
185
+ contextWindow: 200_000,
186
+ maxOutputTokens: 32_000,
187
+ pricingPerMTok: {
188
+ input: 15.0,
189
+ output: 75.0,
190
+ cacheRead: 1.5,
191
+ cacheWrite: 18.75,
192
+ },
193
+ vision: true,
194
+ functionCalling: true,
195
+ reasoning: true,
196
+ jsonMode: true,
197
+ },
198
+ "claude-sonnet-4-20250514": {
199
+ aliases: ["claude-sonnet-4"],
200
+ displayName: "Claude Sonnet 4",
201
+ contextWindow: 200_000,
202
+ maxOutputTokens: 64_000,
203
+ pricingPerMTok: {
204
+ input: 3.0,
205
+ output: 15.0,
206
+ cacheRead: 0.3,
207
+ cacheWrite: 3.75,
208
+ },
209
+ vision: true,
210
+ functionCalling: true,
211
+ reasoning: true,
212
+ jsonMode: true,
213
+ },
214
+ "claude-3-7-sonnet-20250219": {
215
+ aliases: ["claude-3-7-sonnet"],
216
+ displayName: "Claude 3.7 Sonnet",
217
+ contextWindow: 200_000,
218
+ maxOutputTokens: 64_000,
219
+ pricingPerMTok: {
220
+ input: 3.0,
221
+ output: 15.0,
222
+ cacheRead: 0.3,
223
+ cacheWrite: 3.75,
224
+ },
225
+ vision: true,
226
+ functionCalling: true,
227
+ reasoning: true,
228
+ jsonMode: true,
229
+ },
230
+ "claude-3-5-sonnet-20241022": {
231
+ aliases: ["claude-3-5-sonnet"],
232
+ displayName: "Claude 3.5 Sonnet",
233
+ contextWindow: 200_000,
234
+ maxOutputTokens: 8_192,
235
+ pricingPerMTok: {
236
+ input: 3.0,
237
+ output: 15.0,
238
+ cacheRead: 0.3,
239
+ cacheWrite: 3.75,
240
+ },
241
+ vision: true,
242
+ functionCalling: true,
243
+ reasoning: false,
244
+ jsonMode: true,
245
+ // Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_3_5_SONNET]
246
+ // (src/lib/models/modelRegistry.ts:1226-1275).
247
+ curated: {
248
+ performance: { speed: "medium", quality: "high", accuracy: "high" },
249
+ useCases: {
250
+ coding: 10,
251
+ creative: 9,
252
+ analysis: 9,
253
+ conversation: 9,
254
+ reasoning: 10,
255
+ translation: 8,
256
+ summarization: 8,
257
+ },
258
+ category: "coding",
259
+ },
260
+ },
261
+ "claude-3-5-haiku-20241022": {
262
+ aliases: ["claude-3-5-haiku"],
263
+ displayName: "Claude 3.5 Haiku",
264
+ contextWindow: 200_000,
265
+ maxOutputTokens: 8_192,
266
+ pricingPerMTok: {
267
+ input: 0.8,
268
+ output: 4.0,
269
+ cacheRead: 0.08,
270
+ cacheWrite: 1.0,
271
+ },
272
+ // Deliberately false: the last non-vision Claude. Does not appear in
273
+ // VISION_CAPABILITIES.anthropic and does not match the modern-family
274
+ // regex (family word precedes the version digit for 3.x ids), see
275
+ // providerImageAdapter.ts:66-68's comment.
276
+ vision: false,
277
+ functionCalling: true,
278
+ reasoning: false,
279
+ jsonMode: true,
280
+ // Carried forward verbatim from MODEL_REGISTRY[AnthropicModels.CLAUDE_3_5_HAIKU]
281
+ // (src/lib/models/modelRegistry.ts:1277-1320).
282
+ curated: {
283
+ performance: { speed: "fast", quality: "high", accuracy: "high" },
284
+ useCases: {
285
+ coding: 8,
286
+ creative: 7,
287
+ analysis: 8,
288
+ conversation: 8,
289
+ reasoning: 8,
290
+ translation: 8,
291
+ summarization: 9,
292
+ },
293
+ category: "general",
294
+ },
295
+ },
296
+ "claude-3-opus-20240229": {
297
+ aliases: ["claude-3-opus"],
298
+ displayName: "Claude 3 Opus",
299
+ contextWindow: 200_000,
300
+ maxOutputTokens: 4_096,
301
+ pricingPerMTok: {
302
+ input: 15.0,
303
+ output: 75.0,
304
+ cacheRead: 1.5,
305
+ cacheWrite: 18.75,
306
+ },
307
+ vision: true,
308
+ functionCalling: true,
309
+ reasoning: false,
310
+ jsonMode: true,
311
+ },
312
+ "claude-3-sonnet-20240229": {
313
+ aliases: ["claude-3-sonnet"],
314
+ displayName: "Claude 3 Sonnet",
315
+ contextWindow: 200_000,
316
+ maxOutputTokens: 4_096,
317
+ pricingPerMTok: {
318
+ input: 3.0,
319
+ output: 15.0,
320
+ cacheRead: 0.3,
321
+ cacheWrite: 3.75,
322
+ },
323
+ vision: true,
324
+ functionCalling: true,
325
+ reasoning: false,
326
+ jsonMode: true,
327
+ },
328
+ "claude-3-haiku-20240307": {
329
+ aliases: ["claude-3-haiku"],
330
+ displayName: "Claude 3 Haiku",
331
+ contextWindow: 200_000,
332
+ maxOutputTokens: 4_096,
333
+ pricingPerMTok: {
334
+ input: 0.25,
335
+ output: 1.25,
336
+ cacheRead: 0.025,
337
+ cacheWrite: 0.3125,
338
+ },
339
+ vision: true,
340
+ functionCalling: true,
341
+ reasoning: false,
342
+ jsonMode: true,
343
+ },
344
+ },
345
+ };
@@ -0,0 +1,2 @@
1
+ import type { ProviderModelManifest } from "../../types/index.js";
2
+ export declare const azureManifest: ProviderModelManifest;
@@ -0,0 +1,86 @@
1
+ export const azureManifest = {
2
+ defaultContextWindow: 128000,
3
+ models: {
4
+ "gpt-5.1": {
5
+ aliases: ["azure-gpt-5.1", "gpt51-azure", "azure-flagship"],
6
+ displayName: "GPT-5.1 (Azure)",
7
+ contextWindow: 300000,
8
+ maxOutputTokens: 64000,
9
+ pricingPerMTok: { input: 0.625, output: 5 },
10
+ vision: true,
11
+ functionCalling: true,
12
+ reasoning: true,
13
+ jsonMode: true,
14
+ },
15
+ "gpt-5.1-chat": {
16
+ aliases: ["azure-gpt-5.1-chat", "gpt51-chat-azure"],
17
+ displayName: "GPT-5.1 Chat (Azure)",
18
+ contextWindow: 300000,
19
+ maxOutputTokens: 32000,
20
+ pricingPerMTok: { input: 0.625, output: 5 },
21
+ vision: true,
22
+ functionCalling: true,
23
+ reasoning: true,
24
+ jsonMode: true,
25
+ },
26
+ "gpt-5.1-codex": {
27
+ aliases: ["azure-gpt-5.1-codex", "gpt51-codex-azure", "azure-code"],
28
+ displayName: "GPT-5.1 Codex (Azure)",
29
+ contextWindow: 300000,
30
+ maxOutputTokens: 64000,
31
+ pricingPerMTok: { input: 1.25, output: 10 },
32
+ vision: true,
33
+ functionCalling: true,
34
+ reasoning: true,
35
+ jsonMode: true,
36
+ },
37
+ "gpt-5.1-codex-mini": {
38
+ aliases: ["azure-gpt-5.1-codex-mini", "gpt51-codex-mini-azure"],
39
+ displayName: "GPT-5.1 Codex Mini (Azure)",
40
+ contextWindow: 200000,
41
+ maxOutputTokens: 32000,
42
+ pricingPerMTok: { input: 1.25, output: 10 },
43
+ vision: true,
44
+ functionCalling: true,
45
+ reasoning: true,
46
+ jsonMode: true,
47
+ },
48
+ "gpt-5.1-codex-max": {
49
+ aliases: [
50
+ "azure-gpt-5.1-codex-max",
51
+ "gpt51-codex-max-azure",
52
+ "azure-enterprise",
53
+ ],
54
+ displayName: "GPT-5.1 Codex Max (Azure)",
55
+ contextWindow: 500000,
56
+ maxOutputTokens: 128000,
57
+ pricingPerMTok: { input: 1.25, output: 10 },
58
+ vision: true,
59
+ functionCalling: true,
60
+ reasoning: true,
61
+ jsonMode: true,
62
+ },
63
+ "gpt-5-pro": {
64
+ aliases: ["azure-gpt-5-pro", "gpt5-pro-azure"],
65
+ displayName: "GPT-5 Pro (Azure)",
66
+ contextWindow: 256000,
67
+ maxOutputTokens: 64000,
68
+ pricingPerMTok: { input: 1.25, output: 10 },
69
+ vision: true,
70
+ functionCalling: true,
71
+ reasoning: true,
72
+ jsonMode: true,
73
+ },
74
+ "gpt-5-turbo": {
75
+ aliases: ["azure-gpt-5-turbo", "gpt5-turbo-azure"],
76
+ displayName: "GPT-5 Turbo (Azure)",
77
+ contextWindow: 200000,
78
+ maxOutputTokens: 32768,
79
+ pricingPerMTok: { input: 1.25, output: 10 },
80
+ vision: true,
81
+ functionCalling: true,
82
+ reasoning: true,
83
+ jsonMode: true,
84
+ },
85
+ },
86
+ };
@@ -0,0 +1,2 @@
1
+ import type { ProviderModelManifest } from "../../types/index.js";
2
+ export declare const bedrockManifest: ProviderModelManifest;