@juspay/neurolink 10.8.4 → 10.8.6

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 (217) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/browser/neurolink.min.js +497 -478
  3. package/dist/factories/providerRegistry.js +11 -11
  4. package/dist/lib/factories/providerRegistry.js +11 -11
  5. package/dist/lib/providers/{amazonBedrock.d.ts → amazonBedrock/client.d.ts} +4 -4
  6. package/dist/{providers/amazonBedrock.js → lib/providers/amazonBedrock/client.js} +15 -18
  7. package/dist/lib/providers/amazonBedrock/constants.d.ts +1 -0
  8. package/dist/lib/providers/amazonBedrock/constants.js +3 -0
  9. package/dist/lib/providers/amazonBedrock/index.d.ts +3 -0
  10. package/dist/lib/providers/amazonBedrock/index.js +4 -0
  11. package/dist/lib/providers/amazonBedrock/utils.d.ts +1 -0
  12. package/dist/lib/providers/amazonBedrock/utils.js +4 -0
  13. package/dist/{providers/anthropic.d.ts → lib/providers/anthropic/client.d.ts} +6 -21
  14. package/dist/{providers/anthropic.js → lib/providers/anthropic/client.js} +28 -45
  15. package/dist/lib/providers/anthropic/constants.d.ts +4 -0
  16. package/dist/lib/providers/anthropic/constants.js +9 -0
  17. package/dist/lib/providers/anthropic/index.d.ts +3 -0
  18. package/dist/lib/providers/anthropic/index.js +4 -0
  19. package/dist/lib/providers/anthropic/utils.d.ts +7 -0
  20. package/dist/lib/providers/anthropic/utils.js +150 -0
  21. package/dist/lib/providers/{googleAiStudio.d.ts → googleAiStudio/client.d.ts} +4 -4
  22. package/dist/{providers/googleAiStudio.js → lib/providers/googleAiStudio/client.js} +16 -15
  23. package/dist/lib/providers/googleAiStudio/index.d.ts +2 -0
  24. package/dist/lib/providers/googleAiStudio/index.js +3 -0
  25. package/dist/lib/providers/googleAiStudio/utils.d.ts +2 -0
  26. package/dist/lib/providers/googleAiStudio/utils.js +19 -0
  27. package/dist/lib/providers/googleNativeGemini3/constants.d.ts +1 -0
  28. package/dist/lib/providers/googleNativeGemini3/constants.js +2 -0
  29. package/dist/lib/providers/googleNativeGemini3/index.d.ts +2 -0
  30. package/dist/lib/providers/googleNativeGemini3/index.js +3 -0
  31. package/dist/lib/providers/{googleNativeGemini3.d.ts → googleNativeGemini3/utils.d.ts} +2 -2
  32. package/dist/lib/providers/{googleNativeGemini3.js → googleNativeGemini3/utils.js} +8 -8
  33. package/dist/{providers/googleVertex.d.ts → lib/providers/googleVertex/client.d.ts} +4 -4
  34. package/dist/lib/providers/{googleVertex.js → googleVertex/client.js} +32 -32
  35. package/dist/lib/providers/googleVertex/constants.d.ts +5 -0
  36. package/dist/lib/providers/googleVertex/constants.js +27 -0
  37. package/dist/lib/providers/googleVertex/index.d.ts +3 -0
  38. package/dist/lib/providers/googleVertex/index.js +4 -0
  39. package/dist/lib/providers/googleVertex/utils.d.ts +12 -0
  40. package/dist/lib/providers/googleVertex/utils.js +287 -0
  41. package/dist/lib/providers/{huggingFace.d.ts → huggingFace/client.d.ts} +3 -3
  42. package/dist/lib/providers/{huggingFace.js → huggingFace/client.js} +7 -7
  43. package/dist/lib/providers/huggingFace/index.d.ts +2 -0
  44. package/dist/lib/providers/huggingFace/index.js +3 -0
  45. package/dist/lib/providers/huggingFace/utils.d.ts +2 -0
  46. package/dist/lib/providers/huggingFace/utils.js +8 -0
  47. package/dist/lib/providers/index.d.ts +10 -10
  48. package/dist/lib/providers/index.js +10 -10
  49. package/dist/{providers/litellm.d.ts → lib/providers/litellm/client.d.ts} +3 -3
  50. package/dist/lib/providers/{litellm.js → litellm/client.js} +13 -13
  51. package/dist/lib/providers/litellm/constants.d.ts +1 -0
  52. package/dist/lib/providers/litellm/constants.js +3 -0
  53. package/dist/lib/providers/litellm/index.d.ts +3 -0
  54. package/dist/lib/providers/litellm/index.js +4 -0
  55. package/dist/lib/providers/litellm/utils.d.ts +5 -0
  56. package/dist/lib/providers/litellm/utils.js +11 -0
  57. package/dist/{providers/nvidiaNim.d.ts → lib/providers/nvidiaNim/client.d.ts} +3 -3
  58. package/dist/lib/providers/{nvidiaNim.js → nvidiaNim/client.js} +8 -8
  59. package/dist/lib/providers/nvidiaNim/constants.d.ts +1 -0
  60. package/dist/lib/providers/nvidiaNim/constants.js +2 -0
  61. package/dist/lib/providers/nvidiaNim/index.d.ts +3 -0
  62. package/dist/lib/providers/nvidiaNim/index.js +4 -0
  63. package/dist/lib/providers/nvidiaNim/utils.d.ts +9 -0
  64. package/dist/lib/providers/nvidiaNim/utils.js +101 -0
  65. package/dist/{providers/ollama.d.ts → lib/providers/ollama/client.d.ts} +3 -3
  66. package/dist/{providers/ollama.js → lib/providers/ollama/client.js} +10 -13
  67. package/dist/lib/providers/ollama/constants.d.ts +4 -0
  68. package/dist/lib/providers/ollama/constants.js +6 -0
  69. package/dist/lib/providers/ollama/index.d.ts +3 -0
  70. package/dist/lib/providers/ollama/index.js +4 -0
  71. package/dist/lib/providers/ollama/utils.d.ts +8 -0
  72. package/dist/lib/providers/ollama/utils.js +43 -0
  73. package/dist/lib/providers/{openAI.d.ts → openAI/client.d.ts} +3 -3
  74. package/dist/lib/providers/{openAI.js → openAI/client.js} +13 -13
  75. package/dist/lib/providers/openAI/constants.d.ts +1 -0
  76. package/dist/lib/providers/openAI/constants.js +3 -0
  77. package/dist/lib/providers/openAI/index.d.ts +3 -0
  78. package/dist/lib/providers/openAI/index.js +4 -0
  79. package/dist/lib/providers/openAI/utils.d.ts +2 -0
  80. package/dist/lib/providers/openAI/utils.js +8 -0
  81. package/dist/lib/providers/{openRouter.d.ts → openRouter/client.d.ts} +3 -3
  82. package/dist/{providers/openRouter.js → lib/providers/openRouter/client.js} +13 -29
  83. package/dist/lib/providers/openRouter/constants.d.ts +1 -0
  84. package/dist/lib/providers/openRouter/constants.js +2 -0
  85. package/dist/lib/providers/openRouter/index.d.ts +3 -0
  86. package/dist/lib/providers/openRouter/index.js +4 -0
  87. package/dist/lib/providers/openRouter/utils.d.ts +3 -0
  88. package/dist/lib/providers/openRouter/utils.js +18 -0
  89. package/dist/lib/providers/{openaiCompatible.d.ts → openaiCompatible/client.d.ts} +2 -2
  90. package/dist/{providers/openaiCompatible.js → lib/providers/openaiCompatible/client.js} +8 -22
  91. package/dist/lib/providers/openaiCompatible/constants.d.ts +1 -0
  92. package/dist/lib/providers/openaiCompatible/constants.js +2 -0
  93. package/dist/lib/providers/openaiCompatible/index.d.ts +3 -0
  94. package/dist/lib/providers/openaiCompatible/index.js +4 -0
  95. package/dist/lib/providers/openaiCompatible/utils.d.ts +5 -0
  96. package/dist/lib/providers/openaiCompatible/utils.js +17 -0
  97. package/dist/lib/proxy/modelRouter.d.ts +10 -0
  98. package/dist/lib/proxy/modelRouter.js +17 -0
  99. package/dist/lib/proxy/proxyConfig.js +46 -0
  100. package/dist/lib/proxy/routingPolicy.d.ts +4 -2
  101. package/dist/lib/proxy/routingPolicy.js +8 -5
  102. package/dist/lib/proxy/runtimeConfig.js +2 -0
  103. package/dist/lib/server/routes/claudeProxyRoutes.d.ts +52 -1
  104. package/dist/lib/server/routes/claudeProxyRoutes.js +467 -221
  105. package/dist/lib/server/routes/openaiProxyRoutes.js +1 -1
  106. package/dist/lib/types/errors.d.ts +5 -0
  107. package/dist/lib/types/proxy.d.ts +24 -0
  108. package/dist/lib/types/subscription.d.ts +4 -0
  109. package/dist/lib/utils/providerHealth.js +2 -1
  110. package/dist/lib/utils/providerUtils.js +2 -1
  111. package/dist/providers/{amazonBedrock.d.ts → amazonBedrock/client.d.ts} +4 -4
  112. package/dist/{lib/providers/amazonBedrock.js → providers/amazonBedrock/client.js} +14 -19
  113. package/dist/providers/amazonBedrock/constants.d.ts +1 -0
  114. package/dist/providers/amazonBedrock/constants.js +2 -0
  115. package/dist/providers/amazonBedrock/index.d.ts +3 -0
  116. package/dist/providers/amazonBedrock/index.js +3 -0
  117. package/dist/providers/amazonBedrock/utils.d.ts +1 -0
  118. package/dist/providers/amazonBedrock/utils.js +3 -0
  119. package/dist/{lib/providers/anthropic.d.ts → providers/anthropic/client.d.ts} +6 -21
  120. package/dist/{lib/providers/anthropic.js → providers/anthropic/client.js} +27 -46
  121. package/dist/providers/anthropic/constants.d.ts +4 -0
  122. package/dist/providers/anthropic/constants.js +8 -0
  123. package/dist/providers/anthropic/index.d.ts +3 -0
  124. package/dist/providers/anthropic/index.js +3 -0
  125. package/dist/providers/anthropic/utils.d.ts +7 -0
  126. package/dist/providers/anthropic/utils.js +149 -0
  127. package/dist/providers/{googleAiStudio.d.ts → googleAiStudio/client.d.ts} +4 -4
  128. package/dist/{lib/providers/googleAiStudio.js → providers/googleAiStudio/client.js} +15 -16
  129. package/dist/providers/googleAiStudio/index.d.ts +2 -0
  130. package/dist/providers/googleAiStudio/index.js +2 -0
  131. package/dist/providers/googleAiStudio/utils.d.ts +2 -0
  132. package/dist/providers/googleAiStudio/utils.js +18 -0
  133. package/dist/providers/googleNativeGemini3/constants.d.ts +1 -0
  134. package/dist/providers/googleNativeGemini3/constants.js +1 -0
  135. package/dist/providers/googleNativeGemini3/index.d.ts +2 -0
  136. package/dist/providers/googleNativeGemini3/index.js +2 -0
  137. package/dist/providers/{googleNativeGemini3.d.ts → googleNativeGemini3/utils.d.ts} +2 -2
  138. package/dist/providers/{googleNativeGemini3.js → googleNativeGemini3/utils.js} +7 -7
  139. package/dist/{lib/providers/googleVertex.d.ts → providers/googleVertex/client.d.ts} +4 -4
  140. package/dist/providers/{googleVertex.js → googleVertex/client.js} +31 -31
  141. package/dist/providers/googleVertex/constants.d.ts +5 -0
  142. package/dist/providers/googleVertex/constants.js +26 -0
  143. package/dist/providers/googleVertex/index.d.ts +3 -0
  144. package/dist/providers/googleVertex/index.js +3 -0
  145. package/dist/providers/googleVertex/utils.d.ts +12 -0
  146. package/dist/providers/googleVertex/utils.js +286 -0
  147. package/dist/providers/{huggingFace.d.ts → huggingFace/client.d.ts} +3 -3
  148. package/dist/providers/{huggingFace.js → huggingFace/client.js} +6 -6
  149. package/dist/providers/huggingFace/index.d.ts +2 -0
  150. package/dist/providers/huggingFace/index.js +2 -0
  151. package/dist/providers/huggingFace/utils.d.ts +2 -0
  152. package/dist/providers/huggingFace/utils.js +7 -0
  153. package/dist/providers/index.d.ts +10 -10
  154. package/dist/providers/index.js +10 -10
  155. package/dist/{lib/providers/litellm.d.ts → providers/litellm/client.d.ts} +3 -3
  156. package/dist/providers/{litellm.js → litellm/client.js} +12 -12
  157. package/dist/providers/litellm/constants.d.ts +1 -0
  158. package/dist/providers/litellm/constants.js +2 -0
  159. package/dist/providers/litellm/index.d.ts +3 -0
  160. package/dist/providers/litellm/index.js +3 -0
  161. package/dist/providers/litellm/utils.d.ts +5 -0
  162. package/dist/providers/litellm/utils.js +10 -0
  163. package/dist/{lib/providers/nvidiaNim.d.ts → providers/nvidiaNim/client.d.ts} +3 -3
  164. package/dist/providers/{nvidiaNim.js → nvidiaNim/client.js} +7 -7
  165. package/dist/providers/nvidiaNim/constants.d.ts +1 -0
  166. package/dist/providers/nvidiaNim/constants.js +1 -0
  167. package/dist/providers/nvidiaNim/index.d.ts +3 -0
  168. package/dist/providers/nvidiaNim/index.js +3 -0
  169. package/dist/providers/nvidiaNim/utils.d.ts +9 -0
  170. package/dist/providers/nvidiaNim/utils.js +100 -0
  171. package/dist/{lib/providers/ollama.d.ts → providers/ollama/client.d.ts} +3 -3
  172. package/dist/{lib/providers/ollama.js → providers/ollama/client.js} +9 -14
  173. package/dist/providers/ollama/constants.d.ts +4 -0
  174. package/dist/providers/ollama/constants.js +5 -0
  175. package/dist/providers/ollama/index.d.ts +3 -0
  176. package/dist/providers/ollama/index.js +3 -0
  177. package/dist/providers/ollama/utils.d.ts +8 -0
  178. package/dist/providers/ollama/utils.js +42 -0
  179. package/dist/providers/{openAI.d.ts → openAI/client.d.ts} +3 -3
  180. package/dist/providers/{openAI.js → openAI/client.js} +12 -12
  181. package/dist/providers/openAI/constants.d.ts +1 -0
  182. package/dist/providers/openAI/constants.js +2 -0
  183. package/dist/providers/openAI/index.d.ts +3 -0
  184. package/dist/providers/openAI/index.js +3 -0
  185. package/dist/providers/openAI/utils.d.ts +2 -0
  186. package/dist/providers/openAI/utils.js +7 -0
  187. package/dist/providers/{openRouter.d.ts → openRouter/client.d.ts} +3 -3
  188. package/dist/{lib/providers/openRouter.js → providers/openRouter/client.js} +12 -30
  189. package/dist/providers/openRouter/constants.d.ts +1 -0
  190. package/dist/providers/openRouter/constants.js +1 -0
  191. package/dist/providers/openRouter/index.d.ts +3 -0
  192. package/dist/providers/openRouter/index.js +3 -0
  193. package/dist/providers/openRouter/utils.d.ts +3 -0
  194. package/dist/providers/openRouter/utils.js +17 -0
  195. package/dist/providers/{openaiCompatible.d.ts → openaiCompatible/client.d.ts} +2 -2
  196. package/dist/{lib/providers/openaiCompatible.js → providers/openaiCompatible/client.js} +7 -23
  197. package/dist/providers/openaiCompatible/constants.d.ts +1 -0
  198. package/dist/providers/openaiCompatible/constants.js +1 -0
  199. package/dist/providers/openaiCompatible/index.d.ts +3 -0
  200. package/dist/providers/openaiCompatible/index.js +3 -0
  201. package/dist/providers/openaiCompatible/utils.d.ts +5 -0
  202. package/dist/providers/openaiCompatible/utils.js +16 -0
  203. package/dist/proxy/modelRouter.d.ts +10 -0
  204. package/dist/proxy/modelRouter.js +17 -0
  205. package/dist/proxy/proxyConfig.js +46 -0
  206. package/dist/proxy/routingPolicy.d.ts +4 -2
  207. package/dist/proxy/routingPolicy.js +8 -5
  208. package/dist/proxy/runtimeConfig.js +2 -0
  209. package/dist/server/routes/claudeProxyRoutes.d.ts +52 -1
  210. package/dist/server/routes/claudeProxyRoutes.js +467 -221
  211. package/dist/server/routes/openaiProxyRoutes.js +1 -1
  212. package/dist/types/errors.d.ts +5 -0
  213. package/dist/types/proxy.d.ts +24 -0
  214. package/dist/types/subscription.d.ts +4 -0
  215. package/dist/utils/providerHealth.js +2 -1
  216. package/dist/utils/providerUtils.js +2 -1
  217. package/package.json +3 -1
@@ -65,25 +65,25 @@ export class ProviderRegistry {
65
65
  // Register Google AI Studio Provider (our validated baseline)
66
66
  ProviderFactory.registerProvider(AIProviderName.GOOGLE_AI, async (modelName, _providerName, sdk, _region, credentials) => {
67
67
  const googleAiCreds = credentials;
68
- const { GoogleAIStudioProvider } = await import("../providers/googleAiStudio.js");
68
+ const { GoogleAIStudioProvider } = await import("../providers/googleAiStudio/index.js");
69
69
  return new GoogleAIStudioProvider(modelName, sdk, googleAiCreds);
70
70
  }, GoogleAIModels.GEMINI_2_5_FLASH, ["googleAiStudio", "google", "gemini", "google-ai", "google-ai-studio"]);
71
71
  // Register OpenAI provider
72
72
  ProviderFactory.registerProvider(AIProviderName.OPENAI, async (modelName, _providerName, sdk, _region, credentials) => {
73
73
  const openaiCreds = credentials;
74
- const { OpenAIProvider } = await import("../providers/openAI.js");
74
+ const { OpenAIProvider } = await import("../providers/openAI/index.js");
75
75
  return new OpenAIProvider(modelName, sdk, undefined, openaiCreds);
76
76
  }, OpenAIModels.GPT_4O_MINI, ["gpt", "chatgpt"]);
77
77
  // Register Anthropic provider
78
78
  ProviderFactory.registerProvider(AIProviderName.ANTHROPIC, async (modelName, _providerName, sdk, _region, credentials) => {
79
79
  const anthropicCreds = credentials;
80
- const { AnthropicProvider } = await import("../providers/anthropic.js");
80
+ const { AnthropicProvider } = await import("../providers/anthropic/index.js");
81
81
  return new AnthropicProvider(modelName, sdk, undefined, anthropicCreds);
82
82
  }, AnthropicModels.CLAUDE_SONNET_4_6, ["claude", "anthropic"]);
83
83
  // Register Amazon Bedrock provider
84
84
  ProviderFactory.registerProvider(AIProviderName.BEDROCK, async (modelName, _providerName, sdk, region, credentials) => {
85
85
  const bedrockCreds = credentials;
86
- const { AmazonBedrockProvider } = await import("../providers/amazonBedrock.js");
86
+ const { AmazonBedrockProvider } = await import("../providers/amazonBedrock/index.js");
87
87
  return new AmazonBedrockProvider(modelName, sdk, region, bedrockCreds);
88
88
  }, undefined, // Let provider read BEDROCK_MODEL from .env
89
89
  ["bedrock", "aws"]);
@@ -100,13 +100,13 @@ export class ProviderRegistry {
100
100
  // Register Google Vertex AI provider
101
101
  ProviderFactory.registerProvider(AIProviderName.VERTEX, async (modelName, providerName, sdk, region, credentials) => {
102
102
  const vertexCreds = credentials;
103
- const { GoogleVertexProvider } = await import("../providers/googleVertex.js");
103
+ const { GoogleVertexProvider } = await import("../providers/googleVertex/index.js");
104
104
  return new GoogleVertexProvider(modelName, providerName, sdk, region, vertexCreds);
105
105
  }, VertexModels.CLAUDE_4_6_SONNET, ["vertex", "googleVertex"]);
106
106
  // Register Hugging Face provider (Unified Router implementation)
107
107
  ProviderFactory.registerProvider(AIProviderName.HUGGINGFACE, async (modelName, _providerName, _sdk, _region, credentials) => {
108
108
  const hfCreds = credentials;
109
- const { HuggingFaceProvider } = await import("../providers/huggingFace.js");
109
+ const { HuggingFaceProvider } = await import("../providers/huggingFace/index.js");
110
110
  return new HuggingFaceProvider(modelName, undefined, hfCreds);
111
111
  }, process.env.HUGGINGFACE_MODEL ||
112
112
  HuggingFaceModels.QWEN_2_5_72B_INSTRUCT, ["huggingface", "hf"]);
@@ -119,26 +119,26 @@ export class ProviderRegistry {
119
119
  // Register Ollama provider
120
120
  ProviderFactory.registerProvider(AIProviderName.OLLAMA, async (modelName, _providerName, sdk, _region, credentials) => {
121
121
  const ollamaCreds = credentials;
122
- const { OllamaProvider } = await import("../providers/ollama.js");
122
+ const { OllamaProvider } = await import("../providers/ollama/index.js");
123
123
  return new OllamaProvider(modelName, sdk, undefined, ollamaCreds);
124
124
  }, process.env.OLLAMA_MODEL || OllamaModels.LLAMA3_2_LATEST, ["ollama", "local"]);
125
125
  // Register LiteLLM provider
126
126
  ProviderFactory.registerProvider(AIProviderName.LITELLM, async (modelName, _providerName, sdk, _region, credentials) => {
127
127
  const litellmCreds = credentials;
128
- const { LiteLLMProvider } = await import("../providers/litellm.js");
128
+ const { LiteLLMProvider } = await import("../providers/litellm/index.js");
129
129
  return new LiteLLMProvider(modelName, sdk, undefined, litellmCreds);
130
130
  }, process.env.LITELLM_MODEL || LiteLLMModels.OPENAI_GPT_4O_MINI, ["litellm"]);
131
131
  // Register OpenAI Compatible provider
132
132
  ProviderFactory.registerProvider(AIProviderName.OPENAI_COMPATIBLE, async (modelName, _providerName, sdk, _region, credentials) => {
133
133
  const openaiCompatCreds = credentials;
134
- const { OpenAICompatibleProvider } = await import("../providers/openaiCompatible.js");
134
+ const { OpenAICompatibleProvider } = await import("../providers/openaiCompatible/index.js");
135
135
  return new OpenAICompatibleProvider(modelName, sdk, undefined, openaiCompatCreds);
136
136
  }, process.env.OPENAI_COMPATIBLE_MODEL || undefined, // Enable auto-discovery when no model specified
137
137
  ["openai-compatible", "vllm", "compatible"]);
138
138
  // Register OpenRouter provider (300+ models from 60+ providers)
139
139
  ProviderFactory.registerProvider(AIProviderName.OPENROUTER, async (modelName, _providerName, sdk, _region, credentials) => {
140
140
  const openrouterCreds = credentials;
141
- const { OpenRouterProvider } = await import("../providers/openRouter.js");
141
+ const { OpenRouterProvider } = await import("../providers/openRouter/index.js");
142
142
  return new OpenRouterProvider(modelName, sdk, undefined, openrouterCreds);
143
143
  },
144
144
  // OpenRouter retired `anthropic/claude-3-5-sonnet` in late 2025 — see
@@ -162,7 +162,7 @@ export class ProviderRegistry {
162
162
  // Register NVIDIA NIM provider
163
163
  ProviderFactory.registerProvider(AIProviderName.NVIDIA_NIM, async (modelName, _providerName, sdk, _region, credentials) => {
164
164
  const nimCreds = credentials;
165
- const { NvidiaNimProvider } = await import("../providers/nvidiaNim.js");
165
+ const { NvidiaNimProvider } = await import("../providers/nvidiaNim/index.js");
166
166
  return new NvidiaNimProvider(modelName, sdk, undefined, nimCreds);
167
167
  }, process.env.NVIDIA_NIM_MODEL || NvidiaNimModels.LLAMA_3_3_70B_INSTRUCT, ["nvidia", "nim", "nvidia-nim"]);
168
168
  // Register LM Studio provider (local)
@@ -65,25 +65,25 @@ export class ProviderRegistry {
65
65
  // Register Google AI Studio Provider (our validated baseline)
66
66
  ProviderFactory.registerProvider(AIProviderName.GOOGLE_AI, async (modelName, _providerName, sdk, _region, credentials) => {
67
67
  const googleAiCreds = credentials;
68
- const { GoogleAIStudioProvider } = await import("../providers/googleAiStudio.js");
68
+ const { GoogleAIStudioProvider } = await import("../providers/googleAiStudio/index.js");
69
69
  return new GoogleAIStudioProvider(modelName, sdk, googleAiCreds);
70
70
  }, GoogleAIModels.GEMINI_2_5_FLASH, ["googleAiStudio", "google", "gemini", "google-ai", "google-ai-studio"]);
71
71
  // Register OpenAI provider
72
72
  ProviderFactory.registerProvider(AIProviderName.OPENAI, async (modelName, _providerName, sdk, _region, credentials) => {
73
73
  const openaiCreds = credentials;
74
- const { OpenAIProvider } = await import("../providers/openAI.js");
74
+ const { OpenAIProvider } = await import("../providers/openAI/index.js");
75
75
  return new OpenAIProvider(modelName, sdk, undefined, openaiCreds);
76
76
  }, OpenAIModels.GPT_4O_MINI, ["gpt", "chatgpt"]);
77
77
  // Register Anthropic provider
78
78
  ProviderFactory.registerProvider(AIProviderName.ANTHROPIC, async (modelName, _providerName, sdk, _region, credentials) => {
79
79
  const anthropicCreds = credentials;
80
- const { AnthropicProvider } = await import("../providers/anthropic.js");
80
+ const { AnthropicProvider } = await import("../providers/anthropic/index.js");
81
81
  return new AnthropicProvider(modelName, sdk, undefined, anthropicCreds);
82
82
  }, AnthropicModels.CLAUDE_SONNET_4_6, ["claude", "anthropic"]);
83
83
  // Register Amazon Bedrock provider
84
84
  ProviderFactory.registerProvider(AIProviderName.BEDROCK, async (modelName, _providerName, sdk, region, credentials) => {
85
85
  const bedrockCreds = credentials;
86
- const { AmazonBedrockProvider } = await import("../providers/amazonBedrock.js");
86
+ const { AmazonBedrockProvider } = await import("../providers/amazonBedrock/index.js");
87
87
  return new AmazonBedrockProvider(modelName, sdk, region, bedrockCreds);
88
88
  }, undefined, // Let provider read BEDROCK_MODEL from .env
89
89
  ["bedrock", "aws"]);
@@ -100,13 +100,13 @@ export class ProviderRegistry {
100
100
  // Register Google Vertex AI provider
101
101
  ProviderFactory.registerProvider(AIProviderName.VERTEX, async (modelName, providerName, sdk, region, credentials) => {
102
102
  const vertexCreds = credentials;
103
- const { GoogleVertexProvider } = await import("../providers/googleVertex.js");
103
+ const { GoogleVertexProvider } = await import("../providers/googleVertex/index.js");
104
104
  return new GoogleVertexProvider(modelName, providerName, sdk, region, vertexCreds);
105
105
  }, VertexModels.CLAUDE_4_6_SONNET, ["vertex", "googleVertex"]);
106
106
  // Register Hugging Face provider (Unified Router implementation)
107
107
  ProviderFactory.registerProvider(AIProviderName.HUGGINGFACE, async (modelName, _providerName, _sdk, _region, credentials) => {
108
108
  const hfCreds = credentials;
109
- const { HuggingFaceProvider } = await import("../providers/huggingFace.js");
109
+ const { HuggingFaceProvider } = await import("../providers/huggingFace/index.js");
110
110
  return new HuggingFaceProvider(modelName, undefined, hfCreds);
111
111
  }, process.env.HUGGINGFACE_MODEL ||
112
112
  HuggingFaceModels.QWEN_2_5_72B_INSTRUCT, ["huggingface", "hf"]);
@@ -119,26 +119,26 @@ export class ProviderRegistry {
119
119
  // Register Ollama provider
120
120
  ProviderFactory.registerProvider(AIProviderName.OLLAMA, async (modelName, _providerName, sdk, _region, credentials) => {
121
121
  const ollamaCreds = credentials;
122
- const { OllamaProvider } = await import("../providers/ollama.js");
122
+ const { OllamaProvider } = await import("../providers/ollama/index.js");
123
123
  return new OllamaProvider(modelName, sdk, undefined, ollamaCreds);
124
124
  }, process.env.OLLAMA_MODEL || OllamaModels.LLAMA3_2_LATEST, ["ollama", "local"]);
125
125
  // Register LiteLLM provider
126
126
  ProviderFactory.registerProvider(AIProviderName.LITELLM, async (modelName, _providerName, sdk, _region, credentials) => {
127
127
  const litellmCreds = credentials;
128
- const { LiteLLMProvider } = await import("../providers/litellm.js");
128
+ const { LiteLLMProvider } = await import("../providers/litellm/index.js");
129
129
  return new LiteLLMProvider(modelName, sdk, undefined, litellmCreds);
130
130
  }, process.env.LITELLM_MODEL || LiteLLMModels.OPENAI_GPT_4O_MINI, ["litellm"]);
131
131
  // Register OpenAI Compatible provider
132
132
  ProviderFactory.registerProvider(AIProviderName.OPENAI_COMPATIBLE, async (modelName, _providerName, sdk, _region, credentials) => {
133
133
  const openaiCompatCreds = credentials;
134
- const { OpenAICompatibleProvider } = await import("../providers/openaiCompatible.js");
134
+ const { OpenAICompatibleProvider } = await import("../providers/openaiCompatible/index.js");
135
135
  return new OpenAICompatibleProvider(modelName, sdk, undefined, openaiCompatCreds);
136
136
  }, process.env.OPENAI_COMPATIBLE_MODEL || undefined, // Enable auto-discovery when no model specified
137
137
  ["openai-compatible", "vllm", "compatible"]);
138
138
  // Register OpenRouter provider (300+ models from 60+ providers)
139
139
  ProviderFactory.registerProvider(AIProviderName.OPENROUTER, async (modelName, _providerName, sdk, _region, credentials) => {
140
140
  const openrouterCreds = credentials;
141
- const { OpenRouterProvider } = await import("../providers/openRouter.js");
141
+ const { OpenRouterProvider } = await import("../providers/openRouter/index.js");
142
142
  return new OpenRouterProvider(modelName, sdk, undefined, openrouterCreds);
143
143
  },
144
144
  // OpenRouter retired `anthropic/claude-3-5-sonnet` in late 2025 — see
@@ -162,7 +162,7 @@ export class ProviderRegistry {
162
162
  // Register NVIDIA NIM provider
163
163
  ProviderFactory.registerProvider(AIProviderName.NVIDIA_NIM, async (modelName, _providerName, sdk, _region, credentials) => {
164
164
  const nimCreds = credentials;
165
- const { NvidiaNimProvider } = await import("../providers/nvidiaNim.js");
165
+ const { NvidiaNimProvider } = await import("../providers/nvidiaNim/index.js");
166
166
  return new NvidiaNimProvider(modelName, sdk, undefined, nimCreds);
167
167
  }, process.env.NVIDIA_NIM_MODEL || NvidiaNimModels.LLAMA_3_3_70B_INSTRUCT, ["nvidia", "nim", "nvidia-nim"]);
168
168
  // Register LM Studio provider (local)
@@ -1,8 +1,8 @@
1
1
  import { BedrockRuntimeClient } from "@aws-sdk/client-bedrock-runtime";
2
- import type { AIProviderName } from "../constants/enums.js";
3
- import { BaseProvider } from "../core/baseProvider.js";
4
- import type { NeuroLink } from "../neurolink.js";
5
- import type { StreamOptions, StreamResult, EnhancedGenerateResult, TextGenerationOptions } from "../types/index.js";
2
+ import type { AIProviderName } from "../../constants/enums.js";
3
+ import { BaseProvider } from "../../core/baseProvider.js";
4
+ import type { NeuroLink } from "../../neurolink.js";
5
+ import type { StreamOptions, StreamResult, EnhancedGenerateResult, TextGenerationOptions } from "../../types/index.js";
6
6
  export declare class AmazonBedrockProvider extends BaseProvider {
7
7
  private bedrockClient;
8
8
  private conversationHistory;
@@ -1,24 +1,20 @@
1
- async function loadBedrockControl() {
2
- return await import(/* @vite-ignore */ "@aws-sdk/client-bedrock");
3
- }
4
1
  import { BedrockRuntimeClient, ConverseCommand, ConverseStreamCommand, ImageFormat, } from "@aws-sdk/client-bedrock-runtime";
5
2
  import path from "path";
6
- import { createAnalytics } from "../core/analytics.js";
7
- import { BaseProvider } from "../core/baseProvider.js";
8
- import { DEFAULT_MAX_STEPS } from "../core/constants.js";
9
- import { AuthenticationError, ProviderError, RateLimitError, } from "../types/index.js";
10
- import { isAbortError, withTimeout } from "../utils/errorHandling.js";
11
- import { emitToolEndFromStepFinish } from "../utils/toolEndEmitter.js";
12
- import { logger } from "../utils/logger.js";
13
- import { resolveSamplingParams } from "../models/modelRegistry.js";
14
- import { calculateCost } from "../utils/pricing.js";
15
- import { buildMultimodalMessagesArray } from "../utils/messageBuilder.js";
16
- import { buildMultimodalOptions } from "../utils/multimodalOptionsBuilder.js";
17
- import { convertZodToJsonSchema } from "../utils/schemaConversion.js";
3
+ import { createAnalytics } from "../../core/analytics.js";
4
+ import { BaseProvider } from "../../core/baseProvider.js";
5
+ import { DEFAULT_MAX_STEPS } from "../../core/constants.js";
6
+ import { AuthenticationError, ProviderError, RateLimitError, } from "../../types/index.js";
7
+ import { isAbortError, withTimeout } from "../../utils/errorHandling.js";
8
+ import { emitToolEndFromStepFinish } from "../../utils/toolEndEmitter.js";
9
+ import { logger } from "../../utils/logger.js";
10
+ import { resolveSamplingParams } from "../../models/modelRegistry.js";
11
+ import { calculateCost } from "../../utils/pricing.js";
12
+ import { buildMultimodalMessagesArray } from "../../utils/messageBuilder.js";
13
+ import { buildMultimodalOptions } from "../../utils/multimodalOptionsBuilder.js";
14
+ import { convertZodToJsonSchema } from "../../utils/schemaConversion.js";
18
15
  import { SpanKind, SpanStatusCode } from "@opentelemetry/api";
19
- import { tracers } from "../telemetry/index.js";
20
- const bedrockTracer = tracers.provider;
21
- // Bedrock-specific types now imported from ../types/providerSpecific.js
16
+ import { bedrockTracer } from "./constants.js";
17
+ import { loadBedrockControl } from "./utils.js";
22
18
  export class AmazonBedrockProvider extends BaseProvider {
23
19
  bedrockClient;
24
20
  conversationHistory = [];
@@ -1826,3 +1822,4 @@ export class AmazonBedrockProvider extends BaseProvider {
1826
1822
  }
1827
1823
  }
1828
1824
  }
1825
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ export declare const bedrockTracer: import("@opentelemetry/api").Tracer;
@@ -0,0 +1,3 @@
1
+ import { tracers } from "../../telemetry/index.js";
2
+ export const bedrockTracer = tracers.provider;
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,3 @@
1
+ export * from "./client.js";
2
+ export * from "./constants.js";
3
+ export * from "./utils.js";
@@ -0,0 +1,4 @@
1
+ export * from "./client.js";
2
+ export * from "./constants.js";
3
+ export * from "./utils.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ export declare function loadBedrockControl(): Promise<typeof import("@aws-sdk/client-bedrock")>;
@@ -0,0 +1,4 @@
1
+ export async function loadBedrockControl() {
2
+ return await import(/* @vite-ignore */ "@aws-sdk/client-bedrock");
3
+ }
4
+ //# sourceMappingURL=utils.js.map
@@ -1,21 +1,7 @@
1
- import { type AIProviderName } from "../constants/enums.js";
2
- import { BaseProvider } from "../core/baseProvider.js";
3
- import type { AnthropicProviderConfig, StreamOptions, StreamResult, ValidationSchema, EnhancedGenerateResult, TextGenerationOptions, AnthropicAuthMethod, AnthropicResponseMetadata, ClaudeSubscriptionTier, ClaudeUsageInfo } from "../types/index.js";
4
- import type { LanguageModel } from "../types/index.js";
5
- /**
6
- * Beta headers for Claude Code integration.
7
- * These enable experimental features:
8
- * - claude-code-20250219: Claude Code specific features
9
- * - fine-grained-tool-streaming-2025-05-14: Fine-grained tool streaming
10
- *
11
- * Note: interleaved-thinking-2025-05-14 was removed — it was claude-3-7-sonnet
12
- * specific and causes invalid_request_error (HTTP 400) on claude-4 models
13
- * (claude-opus-4-6, claude-sonnet-4-6) which handle thinking via the
14
- * `thinking` request body parameter instead.
15
- */
16
- declare const ANTHROPIC_BETA_HEADERS: {
17
- "anthropic-beta": string;
18
- };
1
+ import { type AIProviderName } from "../../constants/enums.js";
2
+ import { BaseProvider } from "../../core/baseProvider.js";
3
+ import type { AnthropicProviderConfig, StreamOptions, StreamResult, ValidationSchema, EnhancedGenerateResult, TextGenerationOptions, AnthropicAuthMethod, AnthropicResponseMetadata, ClaudeSubscriptionTier, ClaudeUsageInfo } from "../../types/index.js";
4
+ import type { LanguageModel } from "../../types/index.js";
19
5
  /**
20
6
  * Anthropic Provider v2 - BaseProvider Implementation
21
7
  * Enhanced with OAuth support, subscription tiers, and beta headers for Claude Code integration.
@@ -91,7 +77,7 @@ export declare class AnthropicProvider extends BaseProvider {
91
77
  *
92
78
  * @returns The model capabilities or undefined if not found
93
79
  */
94
- getModelCapabilities(): import("../index.js").AnthropicModelMetadata | undefined;
80
+ getModelCapabilities(): import("../../types/subscription.js").AnthropicModelMetadata | undefined;
95
81
  /**
96
82
  * Get the current subscription tier.
97
83
  * @returns The detected or configured subscription tier
@@ -145,5 +131,4 @@ export declare class AnthropicProvider extends BaseProvider {
145
131
  isAvailable(): Promise<boolean>;
146
132
  getModel(): LanguageModel;
147
133
  }
148
- export { getModelCapabilities, getRecommendedModelForTier, isModelAvailableForTier, ModelAccessError, } from "../models/anthropicModels.js";
149
- export { ANTHROPIC_BETA_HEADERS };
134
+ export { getModelCapabilities, getRecommendedModelForTier, isModelAvailableForTier, ModelAccessError, } from "../../models/anthropicModels.js";
@@ -3,48 +3,32 @@ import { SpanKind, trace } from "@opentelemetry/api";
3
3
  import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, } from "fs";
4
4
  import { homedir } from "os";
5
5
  import { join } from "path";
6
- import { ANTHROPIC_TOKEN_URL, CLAUDE_CLI_USER_AGENT, CLAUDE_CODE_CLIENT_ID, CLAUDE_CODE_OAUTH_BETAS, } from "../auth/anthropicOAuth.js";
7
- import { AnthropicModels, TOKEN_EXPIRY_BUFFER_MS, } from "../constants/enums.js";
8
- import { BaseProvider } from "../core/baseProvider.js";
9
- import { DEFAULT_MAX_STEPS } from "../core/constants.js";
10
- import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
11
- import { getModelCapabilities, getRecommendedModelForTier, isModelAvailableForTier, } from "../models/anthropicModels.js";
12
- import { createOAuthFetch } from "../proxy/oauthFetch.js";
13
- import { createProxyFetch } from "../proxy/proxyFetch.js";
14
- import { AuthenticationError, NetworkError, ProviderError, RateLimitError, } from "../types/index.js";
15
- import { logger } from "../utils/logger.js";
16
- import { redactUrlCredentials } from "../utils/logSanitize.js";
17
- import { ANTHROPIC_MAX_CACHE_BREAKPOINTS, applyAnthropicHistoryCacheBreakpoints, countAnthropicCacheMarkers, } from "../utils/anthropicCacheBreakpoints.js";
18
- import { calculateCost } from "../utils/pricing.js";
19
- import { resolveDeferredTool } from "../tools/toolDiscovery.js";
20
- import { createAnthropicConfig, getProviderModel, validateApiKey, } from "../utils/providerConfig.js";
21
- import { composeAbortSignals, createTimeoutController, mergeAbortSignals, TimeoutError, } from "../utils/timeout.js";
22
- import { resolveToolChoice } from "../utils/toolChoice.js";
23
- import { emitToolEndFromStepFinish } from "../utils/toolEndEmitter.js";
24
- import { NoOutputGeneratedError } from "../utils/generationErrors.js";
25
- import { buildNoOutputSentinel, stampNoOutputSpan, } from "../utils/noOutputSentinel.js";
26
- import { convertZodToJsonSchema } from "../utils/schemaConversion.js";
27
- import { resolveClaudeMaxTokens } from "../utils/tokenLimits.js";
28
- import { toAnthropicImageBlock, fileToAnthropicBlock, } from "./anthropicImageBlocks.js";
29
- import { resolveSamplingParams } from "../models/modelRegistry.js";
30
- import { createChunkQueue, createDeferredAnalytics, stringifyToolInput, } from "./openaiChatCompletionsClient.js";
31
- /**
32
- * Beta headers for Claude Code integration.
33
- * These enable experimental features:
34
- * - claude-code-20250219: Claude Code specific features
35
- * - fine-grained-tool-streaming-2025-05-14: Fine-grained tool streaming
36
- *
37
- * Note: interleaved-thinking-2025-05-14 was removed — it was claude-3-7-sonnet
38
- * specific and causes invalid_request_error (HTTP 400) on claude-4 models
39
- * (claude-opus-4-6, claude-sonnet-4-6) which handle thinking via the
40
- * `thinking` request body parameter instead.
41
- */
42
- const ANTHROPIC_BETA_HEADERS = {
43
- "anthropic-beta": [
44
- "claude-code-20250219",
45
- "fine-grained-tool-streaming-2025-05-14",
46
- ].join(","),
47
- };
6
+ import { ANTHROPIC_TOKEN_URL, CLAUDE_CLI_USER_AGENT, CLAUDE_CODE_CLIENT_ID, CLAUDE_CODE_OAUTH_BETAS, } from "../../auth/anthropicOAuth.js";
7
+ import { AnthropicModels, TOKEN_EXPIRY_BUFFER_MS, } from "../../constants/enums.js";
8
+ import { BaseProvider } from "../../core/baseProvider.js";
9
+ import { DEFAULT_MAX_STEPS } from "../../core/constants.js";
10
+ import { streamAnalyticsCollector } from "../../core/streamAnalytics.js";
11
+ import { getModelCapabilities, getRecommendedModelForTier, isModelAvailableForTier, } from "../../models/anthropicModels.js";
12
+ import { createOAuthFetch } from "../../proxy/oauthFetch.js";
13
+ import { createProxyFetch } from "../../proxy/proxyFetch.js";
14
+ import { AuthenticationError, NetworkError, ProviderError, RateLimitError, } from "../../types/index.js";
15
+ import { logger } from "../../utils/logger.js";
16
+ import { redactUrlCredentials } from "../../utils/logSanitize.js";
17
+ import { ANTHROPIC_MAX_CACHE_BREAKPOINTS, applyAnthropicHistoryCacheBreakpoints, countAnthropicCacheMarkers, } from "../../utils/anthropicCacheBreakpoints.js";
18
+ import { calculateCost } from "../../utils/pricing.js";
19
+ import { resolveDeferredTool } from "../../tools/toolDiscovery.js";
20
+ import { createAnthropicConfig, getProviderModel, validateApiKey, } from "../../utils/providerConfig.js";
21
+ import { composeAbortSignals, createTimeoutController, mergeAbortSignals, TimeoutError, } from "../../utils/timeout.js";
22
+ import { resolveToolChoice } from "../../utils/toolChoice.js";
23
+ import { emitToolEndFromStepFinish } from "../../utils/toolEndEmitter.js";
24
+ import { NoOutputGeneratedError } from "../../utils/generationErrors.js";
25
+ import { buildNoOutputSentinel, stampNoOutputSpan, } from "../../utils/noOutputSentinel.js";
26
+ import { convertZodToJsonSchema } from "../../utils/schemaConversion.js";
27
+ import { resolveClaudeMaxTokens } from "../../utils/tokenLimits.js";
28
+ import { toAnthropicImageBlock, fileToAnthropicBlock, } from "../anthropicImageBlocks.js";
29
+ import { resolveSamplingParams } from "../../models/modelRegistry.js";
30
+ import { createChunkQueue, createDeferredAnalytics, stringifyToolInput, } from "../openaiChatCompletionsClient.js";
31
+ import { ANTHROPIC_BETA_HEADERS } from "./constants.js";
48
32
  // AnthropicProviderConfig is imported from types/providers.ts
49
33
  // Re-export for backward compatibility
50
34
  // Configuration helpers - now using consolidated utility
@@ -1805,6 +1789,5 @@ export class AnthropicProvider extends BaseProvider {
1805
1789
  }
1806
1790
  }
1807
1791
  // Re-export types and utilities for convenience
1808
- export { getModelCapabilities, getRecommendedModelForTier, isModelAvailableForTier, ModelAccessError, } from "../models/anthropicModels.js";
1809
- // Export beta headers constant for external use
1810
- export { ANTHROPIC_BETA_HEADERS };
1792
+ export { getModelCapabilities, getRecommendedModelForTier, isModelAvailableForTier, ModelAccessError, } from "../../models/anthropicModels.js";
1793
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1,4 @@
1
+ export declare const ANTHROPIC_BETA_HEADERS: {
2
+ "anthropic-beta": string;
3
+ };
4
+ export declare const streamTracer: import("@opentelemetry/api").Tracer;
@@ -0,0 +1,9 @@
1
+ import { trace } from "@opentelemetry/api";
2
+ export const ANTHROPIC_BETA_HEADERS = {
3
+ "anthropic-beta": [
4
+ "claude-code-20250219",
5
+ "fine-grained-tool-streaming-2025-05-14",
6
+ ].join(","),
7
+ };
8
+ export const streamTracer = trace.getTracer("neurolink.provider.anthropic");
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,3 @@
1
+ export * from "./client.js";
2
+ export * from "./constants.js";
3
+ export * from "./utils.js";
@@ -0,0 +1,4 @@
1
+ export * from "./client.js";
2
+ export * from "./constants.js";
3
+ export * from "./utils.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ import type { AnthropicAuthMethod, AnthropicRateLimitInfo, ClaudeSubscriptionTier, OAuthToken } from "../../types/index.js";
2
+ export declare const getAnthropicApiKey: () => string;
3
+ export declare const getDefaultAnthropicModel: () => string;
4
+ export declare const getOAuthToken: () => OAuthToken | null;
5
+ export declare const detectSubscriptionTier: (oauthToken: OAuthToken | null) => ClaudeSubscriptionTier;
6
+ export declare const detectAuthMethod: (oauthToken: OAuthToken | null) => AnthropicAuthMethod;
7
+ export declare const parseRateLimitHeaders: (headers: Headers | Record<string, string>) => AnthropicRateLimitInfo;
@@ -0,0 +1,150 @@
1
+ import { existsSync, readFileSync } from "fs";
2
+ import { homedir } from "os";
3
+ import { join } from "path";
4
+ import { AnthropicModels } from "../../constants/enums.js";
5
+ import { logger } from "../../utils/logger.js";
6
+ import { createAnthropicConfig, getProviderModel, validateApiKey, } from "../../utils/providerConfig.js";
7
+ export const getAnthropicApiKey = () => {
8
+ return validateApiKey(createAnthropicConfig());
9
+ };
10
+ export const getDefaultAnthropicModel = () => {
11
+ return getProviderModel("ANTHROPIC_MODEL", AnthropicModels.CLAUDE_SONNET_4_6);
12
+ };
13
+ export const getOAuthToken = () => {
14
+ // First, check stored credentials file (highest priority)
15
+ try {
16
+ const credentialsPath = join(homedir(), ".neurolink", "anthropic-credentials.json");
17
+ if (existsSync(credentialsPath)) {
18
+ const credentialsContent = readFileSync(credentialsPath, "utf-8");
19
+ const credentials = JSON.parse(credentialsContent);
20
+ if (credentials.type === "oauth" && credentials.oauth?.accessToken) {
21
+ logger.debug("[AnthropicProvider] Using OAuth token from stored credentials file");
22
+ return credentials.oauth;
23
+ }
24
+ }
25
+ }
26
+ catch (error) {
27
+ logger.debug("[AnthropicProvider] Failed to read stored credentials:", error);
28
+ }
29
+ // Fallback to environment variables
30
+ const tokenString = process.env.ANTHROPIC_OAUTH_TOKEN || process.env.CLAUDE_OAUTH_TOKEN;
31
+ if (!tokenString) {
32
+ return null;
33
+ }
34
+ // Try to parse as JSON (for full token object with refresh token and expiry)
35
+ try {
36
+ const parsed = JSON.parse(tokenString);
37
+ if (typeof parsed === "object" && parsed.accessToken) {
38
+ return parsed;
39
+ }
40
+ // If it's a simple string in JSON, use it as access token
41
+ if (typeof parsed === "string") {
42
+ return { accessToken: parsed };
43
+ }
44
+ }
45
+ catch {
46
+ // Not JSON, treat as plain access token string
47
+ }
48
+ // Treat as plain access token string
49
+ return { accessToken: tokenString };
50
+ };
51
+ export const detectSubscriptionTier = (oauthToken) => {
52
+ // Check explicit environment variable first
53
+ const envTier = process.env.ANTHROPIC_SUBSCRIPTION_TIER?.toLowerCase();
54
+ if (envTier) {
55
+ const validTiers = [
56
+ "free",
57
+ "pro",
58
+ "max",
59
+ "max_5",
60
+ "max_20",
61
+ "api",
62
+ ];
63
+ if (validTiers.includes(envTier)) {
64
+ logger.debug("[detectSubscriptionTier] Using environment override", {
65
+ tier: envTier,
66
+ });
67
+ return envTier;
68
+ }
69
+ logger.warn("[detectSubscriptionTier] Invalid ANTHROPIC_SUBSCRIPTION_TIER", {
70
+ value: envTier,
71
+ validTiers,
72
+ });
73
+ }
74
+ // If using OAuth, default to 'pro' (most common subscription tier)
75
+ if (oauthToken) {
76
+ // Check if token scopes indicate tier (future-proofing)
77
+ const scopes = oauthToken.scopes ?? [];
78
+ let detectedTier = "pro";
79
+ if (scopes.includes("max_20")) {
80
+ detectedTier = "max_20";
81
+ }
82
+ else if (scopes.includes("max_5")) {
83
+ detectedTier = "max_5";
84
+ }
85
+ else if (scopes.includes("max")) {
86
+ detectedTier = "max";
87
+ }
88
+ logger.debug("[detectSubscriptionTier] Detected from OAuth token", {
89
+ tier: detectedTier,
90
+ scopes,
91
+ });
92
+ return detectedTier;
93
+ }
94
+ // Default to 'api' for API key authentication
95
+ logger.debug("[detectSubscriptionTier] No OAuth token, defaulting to API tier");
96
+ return "api";
97
+ };
98
+ export const detectAuthMethod = (oauthToken) => {
99
+ // Explicit env var takes highest precedence — allows forcing api_key mode
100
+ // even when OAuth credentials exist (e.g., when using a proxy that handles auth)
101
+ const explicit = process.env.ANTHROPIC_AUTH_METHOD?.toLowerCase();
102
+ if (explicit === "api_key" || explicit === "apikey") {
103
+ logger.debug("[detectAuthMethod] Forced to api_key by ANTHROPIC_AUTH_METHOD env var");
104
+ return "api_key";
105
+ }
106
+ if (explicit === "oauth") {
107
+ if (oauthToken) {
108
+ logger.debug("[detectAuthMethod] Forced to oauth by ANTHROPIC_AUTH_METHOD env var");
109
+ return "oauth";
110
+ }
111
+ logger.warn("[detectAuthMethod] ANTHROPIC_AUTH_METHOD=oauth but no OAuth token found; falling through to auto-detection");
112
+ }
113
+ else if (explicit) {
114
+ logger.warn("[detectAuthMethod] Unrecognized ANTHROPIC_AUTH_METHOD value; falling through to auto-detection", {
115
+ value: explicit,
116
+ });
117
+ }
118
+ // Auto-detect: OAuth takes precedence if available
119
+ const method = oauthToken ? "oauth" : "api_key";
120
+ logger.debug("[detectAuthMethod] Auth method resolved", {
121
+ method,
122
+ hasOAuthToken: !!oauthToken,
123
+ });
124
+ return method;
125
+ };
126
+ export const parseRateLimitHeaders = (headers) => {
127
+ const getHeader = (name) => {
128
+ if (headers instanceof Headers) {
129
+ return headers.get(name);
130
+ }
131
+ return headers[name] || headers[name.toLowerCase()] || null;
132
+ };
133
+ const parseNumber = (value) => {
134
+ if (!value) {
135
+ return undefined;
136
+ }
137
+ const num = parseInt(value, 10);
138
+ return isNaN(num) ? undefined : num;
139
+ };
140
+ return {
141
+ requestsLimit: parseNumber(getHeader("anthropic-ratelimit-requests-limit")),
142
+ requestsRemaining: parseNumber(getHeader("anthropic-ratelimit-requests-remaining")),
143
+ requestsReset: getHeader("anthropic-ratelimit-requests-reset") || undefined,
144
+ tokensLimit: parseNumber(getHeader("anthropic-ratelimit-tokens-limit")),
145
+ tokensRemaining: parseNumber(getHeader("anthropic-ratelimit-tokens-remaining")),
146
+ tokensReset: getHeader("anthropic-ratelimit-tokens-reset") || undefined,
147
+ retryAfter: parseNumber(getHeader("retry-after")),
148
+ };
149
+ };
150
+ //# sourceMappingURL=utils.js.map
@@ -1,7 +1,7 @@
1
- import { type AIProviderName } from "../constants/enums.js";
2
- import { BaseProvider } from "../core/baseProvider.js";
3
- import type { ZodUnknownSchema, EnhancedGenerateResult, TextGenerationOptions, StreamOptions, StreamResult } from "../types/index.js";
4
- import type { LanguageModel, Schema } from "../types/index.js";
1
+ import { type AIProviderName } from "../../constants/enums.js";
2
+ import { BaseProvider } from "../../core/baseProvider.js";
3
+ import type { ZodUnknownSchema, EnhancedGenerateResult, TextGenerationOptions, StreamOptions, StreamResult } from "../../types/index.js";
4
+ import type { LanguageModel, Schema } from "../../types/index.js";
5
5
  /**
6
6
  * Google AI Studio provider implementation using BaseProvider
7
7
  * Migrated from original GoogleAIStudio class to new factory pattern