@juspay/neurolink 9.32.0 → 9.33.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 (475) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/auth/anthropicOAuth.js +1 -1
  3. package/dist/cli/commands/proxy.js +18 -5
  4. package/dist/client/aiSdkAdapter.js +1 -1
  5. package/dist/client/index.js +137 -501
  6. package/dist/core/factory.js +0 -1
  7. package/dist/core/redisConversationMemoryManager.js +1 -1
  8. package/dist/features/ppt/slideGenerator.js +0 -1
  9. package/dist/features/ppt/utils.js +0 -1
  10. package/dist/lib/neurolink.d.ts +10 -0
  11. package/dist/lib/neurolink.js +41 -7
  12. package/dist/lib/server/routes/claudeProxyRoutes.js +45 -9
  13. package/dist/lib/types/generateTypes.d.ts +16 -0
  14. package/dist/lib/types/streamTypes.d.ts +15 -0
  15. package/dist/mcp/elicitationProtocol.js +1 -1
  16. package/dist/mcp/servers/agent/directToolsServer.js +0 -1
  17. package/dist/neurolink.d.ts +10 -0
  18. package/dist/neurolink.js +41 -7
  19. package/dist/providers/azureOpenai.js +1 -1
  20. package/dist/providers/huggingFace.js +0 -1
  21. package/dist/providers/openaiCompatible.js +0 -1
  22. package/dist/sdk/toolRegistration.js +0 -1
  23. package/dist/server/openapi/generator.js +1 -1
  24. package/dist/server/routes/claudeProxyRoutes.js +45 -9
  25. package/dist/types/configTypes.js +0 -5
  26. package/dist/types/generateTypes.d.ts +16 -0
  27. package/dist/types/modelTypes.js +0 -1
  28. package/dist/types/streamTypes.d.ts +15 -0
  29. package/dist/types/tools.js +0 -1
  30. package/dist/types/typeAliases.js +0 -1
  31. package/dist/types/utilities.js +1 -1
  32. package/dist/types/workflowTypes.js +0 -1
  33. package/dist/utils/providerRetry.js +0 -1
  34. package/dist/utils/providerUtils.js +0 -1
  35. package/package.json +2 -2
  36. package/dist/client/adapters/providerImageAdapter.js +0 -588
  37. package/dist/client/adapters/tts/googleTTSHandler.js +0 -344
  38. package/dist/client/adapters/video/directorPipeline.js +0 -516
  39. package/dist/client/adapters/video/ffmpegAdapter.js +0 -206
  40. package/dist/client/adapters/video/frameExtractor.js +0 -143
  41. package/dist/client/adapters/video/vertexVideoHandler.js +0 -763
  42. package/dist/client/adapters/video/videoAnalyzer.js +0 -238
  43. package/dist/client/adapters/video/videoMerger.js +0 -171
  44. package/dist/client/agent/directTools.js +0 -840
  45. package/dist/client/auth/AuthProviderFactory.js +0 -111
  46. package/dist/client/auth/AuthProviderRegistry.js +0 -190
  47. package/dist/client/auth/RequestContext.js +0 -78
  48. package/dist/client/auth/accountPool.js +0 -178
  49. package/dist/client/auth/anthropicOAuth.js +0 -974
  50. package/dist/client/auth/authContext.js +0 -314
  51. package/dist/client/auth/errors.js +0 -39
  52. package/dist/client/auth/index.js +0 -61
  53. package/dist/client/auth/middleware/AuthMiddleware.js +0 -519
  54. package/dist/client/auth/middleware/rateLimitByUser.js +0 -554
  55. package/dist/client/auth/providers/BaseAuthProvider.js +0 -723
  56. package/dist/client/auth/providers/CognitoProvider.js +0 -304
  57. package/dist/client/auth/providers/KeycloakProvider.js +0 -393
  58. package/dist/client/auth/providers/auth0.js +0 -274
  59. package/dist/client/auth/providers/betterAuth.js +0 -182
  60. package/dist/client/auth/providers/clerk.js +0 -317
  61. package/dist/client/auth/providers/custom.js +0 -112
  62. package/dist/client/auth/providers/firebase.js +0 -226
  63. package/dist/client/auth/providers/jwt.js +0 -212
  64. package/dist/client/auth/providers/oauth2.js +0 -303
  65. package/dist/client/auth/providers/supabase.js +0 -259
  66. package/dist/client/auth/providers/workos.js +0 -284
  67. package/dist/client/auth/serverBridge.js +0 -25
  68. package/dist/client/auth/sessionManager.js +0 -437
  69. package/dist/client/auth/tokenStore.js +0 -799
  70. package/dist/client/client/aiSdkAdapter.js +0 -487
  71. package/dist/client/client/auth.js +0 -473
  72. package/dist/client/client/errors.js +0 -552
  73. package/dist/client/client/httpClient.js +0 -837
  74. package/dist/client/client/index.js +0 -172
  75. package/dist/client/client/interceptors.js +0 -601
  76. package/dist/client/client/sseClient.js +0 -545
  77. package/dist/client/client/streamingClient.js +0 -917
  78. package/dist/client/client/wsClient.js +0 -369
  79. package/dist/client/config/configManager.js +0 -303
  80. package/dist/client/config/conversationMemory.js +0 -86
  81. package/dist/client/config/taskClassificationConfig.js +0 -148
  82. package/dist/client/constants/contextWindows.js +0 -295
  83. package/dist/client/constants/enums.js +0 -853
  84. package/dist/client/constants/index.js +0 -207
  85. package/dist/client/constants/performance.js +0 -389
  86. package/dist/client/constants/retry.js +0 -266
  87. package/dist/client/constants/timeouts.js +0 -182
  88. package/dist/client/constants/tokens.js +0 -380
  89. package/dist/client/constants/videoErrors.js +0 -46
  90. package/dist/client/context/budgetChecker.js +0 -98
  91. package/dist/client/context/contextCompactor.js +0 -205
  92. package/dist/client/context/emergencyTruncation.js +0 -88
  93. package/dist/client/context/errorDetection.js +0 -171
  94. package/dist/client/context/errors.js +0 -21
  95. package/dist/client/context/fileTokenBudget.js +0 -127
  96. package/dist/client/context/prompts/summarizationPrompt.js +0 -117
  97. package/dist/client/context/stages/fileReadDeduplicator.js +0 -66
  98. package/dist/client/context/stages/slidingWindowTruncator.js +0 -190
  99. package/dist/client/context/stages/structuredSummarizer.js +0 -99
  100. package/dist/client/context/stages/toolOutputPruner.js +0 -52
  101. package/dist/client/context/summarizationEngine.js +0 -136
  102. package/dist/client/context/toolOutputLimits.js +0 -78
  103. package/dist/client/context/toolPairRepair.js +0 -66
  104. package/dist/client/core/analytics.js +0 -88
  105. package/dist/client/core/baseProvider.js +0 -1385
  106. package/dist/client/core/constants.js +0 -140
  107. package/dist/client/core/conversationMemoryFactory.js +0 -141
  108. package/dist/client/core/conversationMemoryInitializer.js +0 -128
  109. package/dist/client/core/conversationMemoryManager.js +0 -344
  110. package/dist/client/core/dynamicModels.js +0 -358
  111. package/dist/client/core/evaluation.js +0 -309
  112. package/dist/client/core/evaluationProviders.js +0 -248
  113. package/dist/client/core/factory.js +0 -412
  114. package/dist/client/core/infrastructure/baseError.js +0 -22
  115. package/dist/client/core/infrastructure/baseFactory.js +0 -54
  116. package/dist/client/core/infrastructure/baseRegistry.js +0 -53
  117. package/dist/client/core/infrastructure/index.js +0 -5
  118. package/dist/client/core/infrastructure/retry.js +0 -20
  119. package/dist/client/core/infrastructure/typedEventEmitter.js +0 -23
  120. package/dist/client/core/modelConfiguration.js +0 -851
  121. package/dist/client/core/modules/GenerationHandler.js +0 -588
  122. package/dist/client/core/modules/MessageBuilder.js +0 -273
  123. package/dist/client/core/modules/StreamHandler.js +0 -185
  124. package/dist/client/core/modules/TelemetryHandler.js +0 -203
  125. package/dist/client/core/modules/ToolsManager.js +0 -499
  126. package/dist/client/core/modules/Utilities.js +0 -331
  127. package/dist/client/core/redisConversationMemoryManager.js +0 -1435
  128. package/dist/client/core/streamAnalytics.js +0 -131
  129. package/dist/client/evaluation/contextBuilder.js +0 -134
  130. package/dist/client/evaluation/index.js +0 -61
  131. package/dist/client/evaluation/prompts.js +0 -73
  132. package/dist/client/evaluation/ragasEvaluator.js +0 -110
  133. package/dist/client/evaluation/retryManager.js +0 -78
  134. package/dist/client/evaluation/scoring.js +0 -61
  135. package/dist/client/factories/providerFactory.js +0 -166
  136. package/dist/client/factories/providerRegistry.js +0 -166
  137. package/dist/client/features/ppt/constants.js +0 -896
  138. package/dist/client/features/ppt/contentPlanner.js +0 -529
  139. package/dist/client/features/ppt/presentationOrchestrator.js +0 -236
  140. package/dist/client/features/ppt/slideGenerator.js +0 -532
  141. package/dist/client/features/ppt/slideRenderers.js +0 -2383
  142. package/dist/client/features/ppt/slideTypeInference.js +0 -405
  143. package/dist/client/features/ppt/types.js +0 -13
  144. package/dist/client/features/ppt/utils.js +0 -443
  145. package/dist/client/files/fileReferenceRegistry.js +0 -1543
  146. package/dist/client/files/fileTools.js +0 -450
  147. package/dist/client/files/streamingReader.js +0 -321
  148. package/dist/client/files/types.js +0 -23
  149. package/dist/client/hitl/hitlErrors.js +0 -54
  150. package/dist/client/hitl/hitlManager.js +0 -460
  151. package/dist/client/mcp/agentExposure.js +0 -356
  152. package/dist/client/mcp/auth/index.js +0 -11
  153. package/dist/client/mcp/auth/oauthClientProvider.js +0 -325
  154. package/dist/client/mcp/auth/tokenStorage.js +0 -134
  155. package/dist/client/mcp/batching/index.js +0 -10
  156. package/dist/client/mcp/batching/requestBatcher.js +0 -441
  157. package/dist/client/mcp/caching/index.js +0 -10
  158. package/dist/client/mcp/caching/toolCache.js +0 -433
  159. package/dist/client/mcp/elicitation/elicitationManager.js +0 -376
  160. package/dist/client/mcp/elicitation/index.js +0 -11
  161. package/dist/client/mcp/elicitation/types.js +0 -10
  162. package/dist/client/mcp/elicitationProtocol.js +0 -375
  163. package/dist/client/mcp/enhancedToolDiscovery.js +0 -481
  164. package/dist/client/mcp/externalServerManager.js +0 -1478
  165. package/dist/client/mcp/factory.js +0 -161
  166. package/dist/client/mcp/flexibleToolValidator.js +0 -161
  167. package/dist/client/mcp/httpRateLimiter.js +0 -391
  168. package/dist/client/mcp/httpRetryHandler.js +0 -178
  169. package/dist/client/mcp/index.js +0 -74
  170. package/dist/client/mcp/mcpCircuitBreaker.js +0 -427
  171. package/dist/client/mcp/mcpClientFactory.js +0 -708
  172. package/dist/client/mcp/mcpRegistryClient.js +0 -488
  173. package/dist/client/mcp/mcpServerBase.js +0 -373
  174. package/dist/client/mcp/multiServerManager.js +0 -579
  175. package/dist/client/mcp/registry.js +0 -158
  176. package/dist/client/mcp/routing/index.js +0 -10
  177. package/dist/client/mcp/routing/toolRouter.js +0 -416
  178. package/dist/client/mcp/serverCapabilities.js +0 -502
  179. package/dist/client/mcp/servers/agent/directToolsServer.js +0 -150
  180. package/dist/client/mcp/toolAnnotations.js +0 -239
  181. package/dist/client/mcp/toolConverter.js +0 -258
  182. package/dist/client/mcp/toolDiscoveryService.js +0 -798
  183. package/dist/client/mcp/toolIntegration.js +0 -334
  184. package/dist/client/mcp/toolRegistry.js +0 -729
  185. package/dist/client/memory/hippocampusInitializer.js +0 -19
  186. package/dist/client/memory/memoryRetrievalTools.js +0 -166
  187. package/dist/client/middleware/builtin/analytics.js +0 -132
  188. package/dist/client/middleware/builtin/autoEvaluation.js +0 -203
  189. package/dist/client/middleware/builtin/guardrails.js +0 -109
  190. package/dist/client/middleware/builtin/lifecycle.js +0 -168
  191. package/dist/client/middleware/factory.js +0 -327
  192. package/dist/client/middleware/registry.js +0 -295
  193. package/dist/client/middleware/utils/guardrailsUtils.js +0 -396
  194. package/dist/client/models/anthropicModels.js +0 -527
  195. package/dist/client/neurolink.js +0 -8233
  196. package/dist/client/observability/exporterRegistry.js +0 -413
  197. package/dist/client/observability/exporters/arizeExporter.js +0 -138
  198. package/dist/client/observability/exporters/baseExporter.js +0 -190
  199. package/dist/client/observability/exporters/braintrustExporter.js +0 -154
  200. package/dist/client/observability/exporters/datadogExporter.js +0 -196
  201. package/dist/client/observability/exporters/laminarExporter.js +0 -302
  202. package/dist/client/observability/exporters/langfuseExporter.js +0 -209
  203. package/dist/client/observability/exporters/langsmithExporter.js +0 -143
  204. package/dist/client/observability/exporters/otelExporter.js +0 -164
  205. package/dist/client/observability/exporters/posthogExporter.js +0 -287
  206. package/dist/client/observability/exporters/sentryExporter.js +0 -165
  207. package/dist/client/observability/index.js +0 -31
  208. package/dist/client/observability/metricsAggregator.js +0 -556
  209. package/dist/client/observability/otelBridge.js +0 -131
  210. package/dist/client/observability/retryPolicy.js +0 -383
  211. package/dist/client/observability/sampling/samplers.js +0 -216
  212. package/dist/client/observability/spanProcessor.js +0 -303
  213. package/dist/client/observability/tokenTracker.js +0 -413
  214. package/dist/client/observability/types/exporterTypes.js +0 -5
  215. package/dist/client/observability/types/index.js +0 -4
  216. package/dist/client/observability/types/spanTypes.js +0 -92
  217. package/dist/client/observability/utils/safeMetadata.js +0 -25
  218. package/dist/client/observability/utils/spanSerializer.js +0 -292
  219. package/dist/client/processors/archive/ArchiveProcessor.js +0 -1308
  220. package/dist/client/processors/base/BaseFileProcessor.js +0 -614
  221. package/dist/client/processors/base/types.js +0 -82
  222. package/dist/client/processors/config/fileTypes.js +0 -520
  223. package/dist/client/processors/config/index.js +0 -92
  224. package/dist/client/processors/config/languageMap.js +0 -410
  225. package/dist/client/processors/config/mimeTypes.js +0 -363
  226. package/dist/client/processors/config/sizeLimits.js +0 -258
  227. package/dist/client/processors/document/ExcelProcessor.js +0 -590
  228. package/dist/client/processors/document/OpenDocumentProcessor.js +0 -212
  229. package/dist/client/processors/document/PptxProcessor.js +0 -157
  230. package/dist/client/processors/document/RtfProcessor.js +0 -361
  231. package/dist/client/processors/document/WordProcessor.js +0 -353
  232. package/dist/client/processors/errors/FileErrorCode.js +0 -255
  233. package/dist/client/processors/errors/errorHelpers.js +0 -386
  234. package/dist/client/processors/errors/errorSerializer.js +0 -507
  235. package/dist/client/processors/errors/index.js +0 -49
  236. package/dist/client/processors/markup/SvgProcessor.js +0 -240
  237. package/dist/client/processors/media/AudioProcessor.js +0 -707
  238. package/dist/client/processors/media/VideoProcessor.js +0 -1045
  239. package/dist/client/providers/amazonBedrock.js +0 -1512
  240. package/dist/client/providers/amazonSagemaker.js +0 -162
  241. package/dist/client/providers/anthropic.js +0 -831
  242. package/dist/client/providers/azureOpenai.js +0 -143
  243. package/dist/client/providers/googleAiStudio.js +0 -1200
  244. package/dist/client/providers/googleNativeGemini3.js +0 -543
  245. package/dist/client/providers/googleVertex.js +0 -2936
  246. package/dist/client/providers/huggingFace.js +0 -315
  247. package/dist/client/providers/litellm.js +0 -488
  248. package/dist/client/providers/mistral.js +0 -157
  249. package/dist/client/providers/ollama.js +0 -1579
  250. package/dist/client/providers/openAI.js +0 -627
  251. package/dist/client/providers/openRouter.js +0 -543
  252. package/dist/client/providers/openaiCompatible.js +0 -290
  253. package/dist/client/providers/providerTypeUtils.js +0 -46
  254. package/dist/client/providers/sagemaker/adaptive-semaphore.js +0 -215
  255. package/dist/client/providers/sagemaker/client.js +0 -472
  256. package/dist/client/providers/sagemaker/config.js +0 -317
  257. package/dist/client/providers/sagemaker/detection.js +0 -606
  258. package/dist/client/providers/sagemaker/error-constants.js +0 -227
  259. package/dist/client/providers/sagemaker/errors.js +0 -299
  260. package/dist/client/providers/sagemaker/language-model.js +0 -775
  261. package/dist/client/providers/sagemaker/parsers.js +0 -634
  262. package/dist/client/providers/sagemaker/streaming.js +0 -331
  263. package/dist/client/providers/sagemaker/structured-parser.js +0 -625
  264. package/dist/client/proxy/accountQuota.js +0 -162
  265. package/dist/client/proxy/claudeFormat.js +0 -595
  266. package/dist/client/proxy/modelRouter.js +0 -29
  267. package/dist/client/proxy/oauthFetch.js +0 -367
  268. package/dist/client/proxy/proxyFetch.js +0 -586
  269. package/dist/client/proxy/requestLogger.js +0 -207
  270. package/dist/client/proxy/tokenRefresh.js +0 -124
  271. package/dist/client/proxy/usageStats.js +0 -74
  272. package/dist/client/proxy/utils/noProxyUtils.js +0 -149
  273. package/dist/client/rag/ChunkerFactory.js +0 -320
  274. package/dist/client/rag/ChunkerRegistry.js +0 -421
  275. package/dist/client/rag/chunkers/BaseChunker.js +0 -143
  276. package/dist/client/rag/chunkers/CharacterChunker.js +0 -28
  277. package/dist/client/rag/chunkers/HTMLChunker.js +0 -38
  278. package/dist/client/rag/chunkers/JSONChunker.js +0 -68
  279. package/dist/client/rag/chunkers/LaTeXChunker.js +0 -63
  280. package/dist/client/rag/chunkers/MarkdownChunker.js +0 -306
  281. package/dist/client/rag/chunkers/RecursiveChunker.js +0 -139
  282. package/dist/client/rag/chunkers/SemanticMarkdownChunker.js +0 -138
  283. package/dist/client/rag/chunkers/SentenceChunker.js +0 -66
  284. package/dist/client/rag/chunkers/TokenChunker.js +0 -61
  285. package/dist/client/rag/chunkers/index.js +0 -15
  286. package/dist/client/rag/chunking/characterChunker.js +0 -142
  287. package/dist/client/rag/chunking/chunkerRegistry.js +0 -194
  288. package/dist/client/rag/chunking/htmlChunker.js +0 -247
  289. package/dist/client/rag/chunking/index.js +0 -17
  290. package/dist/client/rag/chunking/jsonChunker.js +0 -281
  291. package/dist/client/rag/chunking/latexChunker.js +0 -251
  292. package/dist/client/rag/chunking/markdownChunker.js +0 -373
  293. package/dist/client/rag/chunking/recursiveChunker.js +0 -148
  294. package/dist/client/rag/chunking/semanticChunker.js +0 -306
  295. package/dist/client/rag/chunking/sentenceChunker.js +0 -230
  296. package/dist/client/rag/chunking/tokenChunker.js +0 -183
  297. package/dist/client/rag/document/MDocument.js +0 -392
  298. package/dist/client/rag/document/index.js +0 -5
  299. package/dist/client/rag/document/loaders.js +0 -500
  300. package/dist/client/rag/errors/RAGError.js +0 -274
  301. package/dist/client/rag/errors/index.js +0 -6
  302. package/dist/client/rag/graphRag/graphRAG.js +0 -401
  303. package/dist/client/rag/graphRag/index.js +0 -4
  304. package/dist/client/rag/index.js +0 -141
  305. package/dist/client/rag/metadata/MetadataExtractorFactory.js +0 -418
  306. package/dist/client/rag/metadata/MetadataExtractorRegistry.js +0 -362
  307. package/dist/client/rag/metadata/index.js +0 -9
  308. package/dist/client/rag/metadata/metadataExtractor.js +0 -280
  309. package/dist/client/rag/pipeline/RAGPipeline.js +0 -436
  310. package/dist/client/rag/pipeline/contextAssembly.js +0 -341
  311. package/dist/client/rag/pipeline/index.js +0 -5
  312. package/dist/client/rag/ragIntegration.js +0 -321
  313. package/dist/client/rag/reranker/RerankerFactory.js +0 -430
  314. package/dist/client/rag/reranker/RerankerRegistry.js +0 -402
  315. package/dist/client/rag/reranker/index.js +0 -9
  316. package/dist/client/rag/reranker/reranker.js +0 -277
  317. package/dist/client/rag/resilience/CircuitBreaker.js +0 -431
  318. package/dist/client/rag/resilience/RetryHandler.js +0 -304
  319. package/dist/client/rag/resilience/index.js +0 -7
  320. package/dist/client/rag/retrieval/hybridSearch.js +0 -335
  321. package/dist/client/rag/retrieval/index.js +0 -5
  322. package/dist/client/rag/retrieval/vectorQueryTool.js +0 -307
  323. package/dist/client/rag/types.js +0 -8
  324. package/dist/client/sdk/toolRegistration.js +0 -377
  325. package/dist/client/server/abstract/baseServerAdapter.js +0 -575
  326. package/dist/client/server/adapters/expressAdapter.js +0 -486
  327. package/dist/client/server/adapters/fastifyAdapter.js +0 -472
  328. package/dist/client/server/adapters/honoAdapter.js +0 -632
  329. package/dist/client/server/adapters/koaAdapter.js +0 -510
  330. package/dist/client/server/errors.js +0 -486
  331. package/dist/client/server/factory/serverAdapterFactory.js +0 -160
  332. package/dist/client/server/index.js +0 -108
  333. package/dist/client/server/middleware/abortSignal.js +0 -111
  334. package/dist/client/server/middleware/auth.js +0 -388
  335. package/dist/client/server/middleware/cache.js +0 -359
  336. package/dist/client/server/middleware/common.js +0 -281
  337. package/dist/client/server/middleware/deprecation.js +0 -190
  338. package/dist/client/server/middleware/mcpBodyAttachment.js +0 -63
  339. package/dist/client/server/middleware/rateLimit.js +0 -227
  340. package/dist/client/server/middleware/validation.js +0 -388
  341. package/dist/client/server/openapi/generator.js +0 -398
  342. package/dist/client/server/openapi/index.js +0 -36
  343. package/dist/client/server/openapi/schemas.js +0 -695
  344. package/dist/client/server/openapi/templates.js +0 -374
  345. package/dist/client/server/routes/agentRoutes.js +0 -189
  346. package/dist/client/server/routes/claudeProxyRoutes.js +0 -1600
  347. package/dist/client/server/routes/healthRoutes.js +0 -187
  348. package/dist/client/server/routes/index.js +0 -57
  349. package/dist/client/server/routes/mcpRoutes.js +0 -342
  350. package/dist/client/server/routes/memoryRoutes.js +0 -350
  351. package/dist/client/server/routes/openApiRoutes.js +0 -126
  352. package/dist/client/server/routes/toolRoutes.js +0 -199
  353. package/dist/client/server/streaming/dataStream.js +0 -486
  354. package/dist/client/server/streaming/index.js +0 -11
  355. package/dist/client/server/types.js +0 -67
  356. package/dist/client/server/utils/redaction.js +0 -334
  357. package/dist/client/server/utils/validation.js +0 -243
  358. package/dist/client/server/websocket/WebSocketHandler.js +0 -383
  359. package/dist/client/server/websocket/index.js +0 -4
  360. package/dist/client/services/server/ai/observability/instrumentation.js +0 -808
  361. package/dist/client/telemetry/attributes.js +0 -100
  362. package/dist/client/telemetry/index.js +0 -26
  363. package/dist/client/telemetry/telemetryService.js +0 -308
  364. package/dist/client/telemetry/tracers.js +0 -17
  365. package/dist/client/telemetry/withSpan.js +0 -34
  366. package/dist/client/types/actionTypes.js +0 -6
  367. package/dist/client/types/analytics.js +0 -5
  368. package/dist/client/types/authTypes.js +0 -9
  369. package/dist/client/types/circuitBreakerErrors.js +0 -34
  370. package/dist/client/types/cli.js +0 -21
  371. package/dist/client/types/clientTypes.js +0 -10
  372. package/dist/client/types/common.js +0 -51
  373. package/dist/client/types/configTypes.js +0 -49
  374. package/dist/client/types/content.js +0 -19
  375. package/dist/client/types/contextTypes.js +0 -400
  376. package/dist/client/types/conversation.js +0 -47
  377. package/dist/client/types/conversationMemoryInterface.js +0 -6
  378. package/dist/client/types/domainTypes.js +0 -5
  379. package/dist/client/types/errors.js +0 -167
  380. package/dist/client/types/evaluation.js +0 -5
  381. package/dist/client/types/evaluationProviders.js +0 -5
  382. package/dist/client/types/evaluationTypes.js +0 -1
  383. package/dist/client/types/externalMcp.js +0 -6
  384. package/dist/client/types/fileReferenceTypes.js +0 -8
  385. package/dist/client/types/fileTypes.js +0 -4
  386. package/dist/client/types/generateTypes.js +0 -1
  387. package/dist/client/types/guardrails.js +0 -1
  388. package/dist/client/types/hitlTypes.js +0 -8
  389. package/dist/client/types/index.js +0 -57
  390. package/dist/client/types/mcpTypes.js +0 -5
  391. package/dist/client/types/middlewareTypes.js +0 -1
  392. package/dist/client/types/modelTypes.js +0 -30
  393. package/dist/client/types/multimodal.js +0 -135
  394. package/dist/client/types/observability.js +0 -6
  395. package/dist/client/types/pptTypes.js +0 -82
  396. package/dist/client/types/providers.js +0 -111
  397. package/dist/client/types/proxyTypes.js +0 -16
  398. package/dist/client/types/ragTypes.js +0 -7
  399. package/dist/client/types/sdkTypes.js +0 -8
  400. package/dist/client/types/serviceTypes.js +0 -5
  401. package/dist/client/types/streamTypes.js +0 -1
  402. package/dist/client/types/subscriptionTypes.js +0 -9
  403. package/dist/client/types/taskClassificationTypes.js +0 -5
  404. package/dist/client/types/tools.js +0 -24
  405. package/dist/client/types/ttsTypes.js +0 -57
  406. package/dist/client/types/typeAliases.js +0 -48
  407. package/dist/client/types/utilities.js +0 -4
  408. package/dist/client/types/workflowTypes.js +0 -30
  409. package/dist/client/utils/async/withTimeout.js +0 -98
  410. package/dist/client/utils/asyncMutex.js +0 -60
  411. package/dist/client/utils/conversationMemory.js +0 -431
  412. package/dist/client/utils/csvProcessor.js +0 -846
  413. package/dist/client/utils/errorHandling.js +0 -936
  414. package/dist/client/utils/evaluationUtils.js +0 -131
  415. package/dist/client/utils/factoryProcessing.js +0 -589
  416. package/dist/client/utils/fileDetector.js +0 -2161
  417. package/dist/client/utils/imageCache.js +0 -376
  418. package/dist/client/utils/imageProcessor.js +0 -704
  419. package/dist/client/utils/logger.js +0 -491
  420. package/dist/client/utils/mcpDefaults.js +0 -134
  421. package/dist/client/utils/messageBuilder.js +0 -1653
  422. package/dist/client/utils/modelAliasResolver.js +0 -54
  423. package/dist/client/utils/modelDetection.js +0 -80
  424. package/dist/client/utils/modelRouter.js +0 -292
  425. package/dist/client/utils/multimodalOptionsBuilder.js +0 -65
  426. package/dist/client/utils/observabilityHelpers.js +0 -47
  427. package/dist/client/utils/parameterValidation.js +0 -966
  428. package/dist/client/utils/pdfProcessor.js +0 -410
  429. package/dist/client/utils/performance.js +0 -222
  430. package/dist/client/utils/pricing.js +0 -340
  431. package/dist/client/utils/promptRedaction.js +0 -62
  432. package/dist/client/utils/providerConfig.js +0 -1009
  433. package/dist/client/utils/providerHealth.js +0 -1237
  434. package/dist/client/utils/providerRetry.js +0 -112
  435. package/dist/client/utils/providerUtils.js +0 -434
  436. package/dist/client/utils/rateLimiter.js +0 -200
  437. package/dist/client/utils/redis.js +0 -368
  438. package/dist/client/utils/retryHandler.js +0 -269
  439. package/dist/client/utils/retryability.js +0 -22
  440. package/dist/client/utils/sanitizers/svg.js +0 -481
  441. package/dist/client/utils/schemaConversion.js +0 -255
  442. package/dist/client/utils/taskClassificationUtils.js +0 -149
  443. package/dist/client/utils/taskClassifier.js +0 -94
  444. package/dist/client/utils/thinkingConfig.js +0 -104
  445. package/dist/client/utils/timeout.js +0 -359
  446. package/dist/client/utils/tokenEstimation.js +0 -142
  447. package/dist/client/utils/tokenLimits.js +0 -125
  448. package/dist/client/utils/tokenUtils.js +0 -239
  449. package/dist/client/utils/toolUtils.js +0 -75
  450. package/dist/client/utils/transformationUtils.js +0 -554
  451. package/dist/client/utils/ttsProcessor.js +0 -286
  452. package/dist/client/utils/typeUtils.js +0 -97
  453. package/dist/client/utils/videoAnalysisProcessor.js +0 -67
  454. package/dist/client/workflow/config.js +0 -398
  455. package/dist/client/workflow/core/ensembleExecutor.js +0 -407
  456. package/dist/client/workflow/core/judgeScorer.js +0 -544
  457. package/dist/client/workflow/core/responseConditioner.js +0 -225
  458. package/dist/client/workflow/core/types/conditionerTypes.js +0 -7
  459. package/dist/client/workflow/core/types/ensembleTypes.js +0 -7
  460. package/dist/client/workflow/core/types/index.js +0 -7
  461. package/dist/client/workflow/core/types/judgeTypes.js +0 -7
  462. package/dist/client/workflow/core/types/layerTypes.js +0 -7
  463. package/dist/client/workflow/core/types/registryTypes.js +0 -7
  464. package/dist/client/workflow/core/workflowRegistry.js +0 -304
  465. package/dist/client/workflow/core/workflowRunner.js +0 -586
  466. package/dist/client/workflow/index.js +0 -50
  467. package/dist/client/workflow/types.js +0 -9
  468. package/dist/client/workflow/utils/types/index.js +0 -7
  469. package/dist/client/workflow/utils/workflowMetrics.js +0 -311
  470. package/dist/client/workflow/utils/workflowValidation.js +0 -420
  471. package/dist/client/workflow/workflows/adaptiveWorkflow.js +0 -366
  472. package/dist/client/workflow/workflows/consensusWorkflow.js +0 -192
  473. package/dist/client/workflow/workflows/fallbackWorkflow.js +0 -225
  474. package/dist/client/workflow/workflows/multiJudgeWorkflow.js +0 -351
  475. /package/dist/client/{client/reactHooks.js → reactHooks.js} +0 -0
@@ -1,1009 +0,0 @@
1
- /**
2
- * Provider Configuration Utility
3
- * Consolidated configuration helpers for all AI providers
4
- * Eliminates duplicate error messages and configuration logic
5
- * Enhanced with format validation and advanced error classification
6
- * Extended with Claude subscription OAuth support
7
- */
8
- import { logger } from "./logger.js";
9
- /**
10
- * API key format validation patterns (extracted from advanced validation system)
11
- * Exported for use across the codebase to replace scattered regex patterns
12
- */
13
- export const API_KEY_FORMATS = {
14
- openai: /^sk-[A-Za-z0-9]{48,}$/,
15
- anthropic: /^sk-ant-[A-Za-z0-9\-_]{95,}$/,
16
- "google-ai": /^AIza[A-Za-z0-9\-_]{35}$/,
17
- huggingface: /^hf_[A-Za-z0-9]{37}$/,
18
- mistral: /^[A-Za-z0-9]{32}$/,
19
- azure: /^[A-Za-z0-9]{32}$/,
20
- aws: /^[A-Z0-9]{20}$/, // Access Key ID format
21
- bedrock: /^[A-Z0-9]{20}$/, // AWS access key ID: 20 uppercase alphanumerics
22
- };
23
- /**
24
- * OAuth token format validation patterns
25
- * These patterns are more flexible as OAuth tokens can vary by provider
26
- */
27
- export const OAUTH_TOKEN_FORMATS = {
28
- // OAuth access tokens are typically JWT or opaque tokens
29
- // Claude OAuth access tokens: Bearer tokens with typical JWT structure or opaque format
30
- "anthropic-access": /^[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+$|^[A-Za-z0-9\-_]{32,}$/,
31
- // Refresh tokens are typically longer opaque strings
32
- "anthropic-refresh": /^[A-Za-z0-9\-_]{32,}$/,
33
- };
34
- /**
35
- * API key length constants to replace scattered magic numbers
36
- */
37
- export const API_KEY_LENGTHS = {
38
- OPENAI_MIN: 48, // OpenAI API keys minimum length
39
- ANTHROPIC_MIN: 95, // Anthropic API keys minimum length
40
- HUGGINGFACE_EXACT: 37, // HuggingFace tokens exact length
41
- AZURE_MIN: 32, // Azure OpenAI API keys minimum length
42
- MISTRAL_EXACT: 32, // Mistral API keys exact length
43
- AWS_ACCESS_KEY: 20, // AWS access key ID exact length
44
- GOOGLE_AI_EXACT: 39, // Google AI Studio keys exact length (with AIza prefix)
45
- };
46
- /**
47
- * Project ID format validation (for Google Cloud)
48
- */
49
- export const PROJECT_ID_FORMAT = {
50
- MIN_LENGTH: 6, // Minimum project ID length
51
- MAX_LENGTH: 30, // Maximum project ID length
52
- PATTERN: /^[a-z][a-z0-9-]{4,28}[a-z0-9]$/, // Google Cloud project ID format
53
- };
54
- /**
55
- * Validates API key format for a specific provider
56
- * @param providerKey Provider identifier (e.g., 'openai', 'anthropic')
57
- * @param apiKey The API key to validate
58
- * @returns True if format is valid
59
- */
60
- export function validateApiKeyFormat(providerKey, apiKey) {
61
- const format = API_KEY_FORMATS[providerKey.toLowerCase()];
62
- if (!format) {
63
- // No format validation available, assume valid if not empty
64
- return apiKey.length > 0;
65
- }
66
- return format.test(apiKey);
67
- }
68
- /**
69
- * Enhanced validation with format checking
70
- * @param config Provider configuration options
71
- * @param enableFormatValidation Whether to validate API key format
72
- * @returns Validation result with detailed information
73
- */
74
- export function validateApiKeyEnhanced(config, enableFormatValidation = false) {
75
- // Check primary environment variable
76
- let apiKey = process.env[config.envVarName];
77
- // Check fallback environment variables if provided
78
- if (!apiKey && config.fallbackEnvVars) {
79
- for (const fallbackVar of config.fallbackEnvVars) {
80
- apiKey = process.env[fallbackVar];
81
- if (apiKey) {
82
- break;
83
- }
84
- }
85
- }
86
- if (!apiKey) {
87
- return {
88
- isValid: false,
89
- apiKey: "",
90
- errorType: "missing",
91
- error: createConfigErrorMessage(config),
92
- };
93
- }
94
- // Optional format validation
95
- if (enableFormatValidation) {
96
- const providerKey = config.providerName.toLowerCase().replace(/\s/g, "-");
97
- const formatValid = validateApiKeyFormat(providerKey, apiKey);
98
- if (!formatValid) {
99
- return {
100
- isValid: false,
101
- apiKey,
102
- formatValid: false,
103
- errorType: "format",
104
- error: `Invalid ${config.providerName} API key format. Please check your API key.`,
105
- };
106
- }
107
- }
108
- return {
109
- isValid: true,
110
- apiKey,
111
- formatValid: enableFormatValidation ? true : undefined,
112
- };
113
- }
114
- /**
115
- * Validates an API key for a provider and returns it (BACKWARD COMPATIBLE)
116
- * Throws detailed error message if validation fails
117
- * @param config Provider configuration options
118
- * @returns The validated API key
119
- */
120
- export function validateApiKey(config) {
121
- // Check primary environment variable
122
- let apiKey = process.env[config.envVarName];
123
- // Check fallback environment variables if provided
124
- if (!apiKey && config.fallbackEnvVars) {
125
- for (const fallbackVar of config.fallbackEnvVars) {
126
- apiKey = process.env[fallbackVar];
127
- if (apiKey) {
128
- break;
129
- }
130
- }
131
- }
132
- if (!apiKey) {
133
- throw new Error(createConfigErrorMessage(config));
134
- }
135
- return apiKey;
136
- }
137
- /**
138
- * Creates a standardized configuration error message
139
- * @param config Provider configuration options
140
- * @returns Formatted error message with setup instructions
141
- */
142
- function createConfigErrorMessage(config) {
143
- const envVarsList = config.fallbackEnvVars
144
- ? [config.envVarName, ...config.fallbackEnvVars].join(" or ")
145
- : config.envVarName;
146
- return `❌ ${config.providerName} Provider Configuration Error
147
-
148
- Missing required environment variable: ${envVarsList}
149
-
150
- 🔧 Step 1: Get ${config.description}
151
- ${config.instructions.join("\n")}
152
-
153
- 🔧 Step 2: Set Environment Variable
154
- Add to your .env file:
155
- ${config.envVarName}=your_key_here
156
-
157
- 🔧 Step 3: Restart Application
158
- Restart your application to load the new environment variables.`;
159
- }
160
- /**
161
- * Gets a provider model with fallback to default
162
- * @param envVar Environment variable name for the model
163
- * @param defaultModel Default model to use if env var not set
164
- * @returns The model name to use
165
- */
166
- export function getProviderModel(envVar, defaultModel) {
167
- return process.env[envVar] || defaultModel;
168
- }
169
- /**
170
- * Checks if provider credentials are available
171
- * @param envVars Array of environment variable names to check
172
- * @returns True if one of the credentials is available
173
- */
174
- export function hasProviderCredentials(envVars) {
175
- return envVars.some((envVar) => !!process.env[envVar]);
176
- }
177
- // =============================================================================
178
- // PROVIDER-SPECIFIC CONFIGURATION CREATORS
179
- // =============================================================================
180
- /**
181
- * Creates Anthropic provider configuration
182
- * Supports both API key and OAuth authentication methods
183
- */
184
- export function createAnthropicConfig() {
185
- const authMethod = getAnthropicAuthMethod();
186
- const tier = getAnthropicSubscriptionTier();
187
- // Base instructions for API key authentication
188
- const apiKeyInstructions = [
189
- "🔑 Option 1: API Key Authentication (Recommended for developers)",
190
- "1. Visit: https://console.anthropic.com/",
191
- "2. Sign in or create an account",
192
- "3. Go to API Keys section",
193
- "4. Create a new API key",
194
- "5. Set ANTHROPIC_API_KEY in your .env file",
195
- ];
196
- // OAuth instructions for Claude subscription users
197
- const oauthInstructions = [
198
- "",
199
- "🔐 Option 2: OAuth Authentication (For Claude Pro/Max subscribers)",
200
- "1. Set ANTHROPIC_AUTH_METHOD=oauth in your .env file",
201
- "2. Set ANTHROPIC_SUBSCRIPTION_TIER to your tier (free, pro, max)",
202
- "3. Run the OAuth flow to obtain tokens, or set pre-configured tokens:",
203
- " - ANTHROPIC_OAUTH_TOKEN=your_access_token",
204
- " - ANTHROPIC_OAUTH_REFRESH_TOKEN=your_refresh_token (optional)",
205
- "",
206
- "📋 Available Subscription Tiers:",
207
- " - free: Free tier with limited usage",
208
- " - pro: Claude Pro ($20/month) - Extended usage limits",
209
- " - max: Claude Max - Highest usage limits",
210
- " - api: API-based access (pay-per-use)",
211
- ];
212
- // Choose instructions based on current auth method
213
- const instructions = authMethod === "oauth"
214
- ? [...oauthInstructions.slice(1), "", ...apiKeyInstructions]
215
- : [...apiKeyInstructions, ...oauthInstructions];
216
- return {
217
- providerName: "Anthropic",
218
- envVarName: authMethod === "oauth" ? "ANTHROPIC_OAUTH_TOKEN" : "ANTHROPIC_API_KEY",
219
- setupUrl: authMethod === "oauth"
220
- ? "https://claude.ai/settings"
221
- : "https://console.anthropic.com/",
222
- description: authMethod === "oauth"
223
- ? `Anthropic OAuth Token (${tier} tier)`
224
- : "Anthropic API Key",
225
- instructions,
226
- fallbackEnvVars: authMethod === "oauth"
227
- ? ["ANTHROPIC_API_KEY"] // Fall back to API key if OAuth token not present
228
- : [
229
- "ANTHROPIC_OAUTH_TOKEN",
230
- "CLAUDE_OAUTH_TOKEN",
231
- "ANTHROPIC_OAUTH_ACCESS_TOKEN",
232
- ], // Fall back to OAuth if API key not present
233
- };
234
- }
235
- /**
236
- * Creates OpenAI provider configuration
237
- */
238
- export function createOpenAIConfig() {
239
- return {
240
- providerName: "OPENAI",
241
- envVarName: "OPENAI_API_KEY",
242
- setupUrl: "https://platform.openai.com/api-keys",
243
- description: "Credentials",
244
- instructions: [
245
- "1. Visit: https://platform.openai.com/api-keys",
246
- "2. Create new API key",
247
- "3. Copy the key",
248
- ],
249
- };
250
- }
251
- /**
252
- * Creates HuggingFace provider configuration
253
- */
254
- export function createHuggingFaceConfig() {
255
- return {
256
- providerName: "HuggingFace",
257
- envVarName: "HUGGINGFACE_API_KEY",
258
- setupUrl: "https://huggingface.co/settings/tokens",
259
- description: "Credentials",
260
- instructions: [
261
- "1. Visit: https://huggingface.co/settings/tokens",
262
- "2. Create new API token",
263
- "3. Copy the token",
264
- ],
265
- fallbackEnvVars: ["HF_TOKEN"],
266
- };
267
- }
268
- /**
269
- * Creates Mistral provider configuration
270
- */
271
- export function createMistralConfig() {
272
- return {
273
- providerName: "Mistral",
274
- envVarName: "MISTRAL_API_KEY",
275
- setupUrl: "https://console.mistral.ai/",
276
- description: "API key",
277
- instructions: [
278
- "1. Visit: https://console.mistral.ai/",
279
- "2. Create or sign in to your account",
280
- "3. Generate a new API key",
281
- ],
282
- };
283
- }
284
- /**
285
- * Creates AWS Access Key configuration for Bedrock
286
- */
287
- export function createAWSAccessKeyConfig() {
288
- return {
289
- providerName: "AWS Bedrock",
290
- envVarName: "AWS_ACCESS_KEY_ID",
291
- setupUrl: "https://console.aws.amazon.com/iam/",
292
- description: "AWS Credentials",
293
- instructions: [
294
- "1. Visit: https://console.aws.amazon.com/iam/",
295
- "2. Create IAM user with Bedrock permissions",
296
- "3. Generate access key",
297
- ],
298
- };
299
- }
300
- /**
301
- * Creates AWS Secret Key configuration for Bedrock
302
- */
303
- export function createAWSSecretConfig() {
304
- return {
305
- providerName: "AWS Bedrock",
306
- envVarName: "AWS_SECRET_ACCESS_KEY",
307
- setupUrl: "https://console.aws.amazon.com/iam/",
308
- description: "AWS Credentials",
309
- instructions: [
310
- "1. Visit: https://console.aws.amazon.com/iam/",
311
- "2. Create IAM user with Bedrock permissions",
312
- "3. Generate access key",
313
- ],
314
- };
315
- }
316
- /**
317
- * Creates Azure OpenAI API Key configuration
318
- */
319
- export function createAzureAPIKeyConfig() {
320
- return {
321
- providerName: "Azure OpenAI",
322
- envVarName: "AZURE_OPENAI_API_KEY",
323
- setupUrl: "https://portal.azure.com/",
324
- description: "Azure OpenAI API Key",
325
- instructions: [
326
- "1. Visit: https://portal.azure.com/",
327
- "2. Create or access Azure OpenAI resource",
328
- "3. Get API key from Keys and Endpoint section",
329
- ],
330
- };
331
- }
332
- /**
333
- * Creates Azure OpenAI Endpoint configuration
334
- */
335
- export function createAzureEndpointConfig() {
336
- return {
337
- providerName: "Azure OpenAI",
338
- envVarName: "AZURE_OPENAI_ENDPOINT",
339
- setupUrl: "https://portal.azure.com/",
340
- description: "Azure OpenAI Endpoint",
341
- instructions: [
342
- "1. Visit: https://portal.azure.com/",
343
- "2. Access your Azure OpenAI resource",
344
- "3. Copy endpoint URL from Keys and Endpoint section",
345
- ],
346
- };
347
- }
348
- /**
349
- * Creates OpenAI Compatible provider configuration
350
- */
351
- export function createOpenAICompatibleConfig() {
352
- return {
353
- providerName: "OpenAI Compatible",
354
- envVarName: "OPENAI_COMPATIBLE_API_KEY",
355
- setupUrl: "https://openrouter.ai/",
356
- description: "OpenAI-compatible API credentials",
357
- instructions: [
358
- "1. Set OPENAI_COMPATIBLE_BASE_URL to your endpoint (e.g., https://api.openrouter.ai/api/v1)",
359
- "2. Get API key from your OpenAI-compatible service:",
360
- " • OpenRouter: https://openrouter.ai/keys",
361
- " • vLLM: Use a random value for local deployments",
362
- " • LiteLLM: Check your LiteLLM server configuration",
363
- "3. Set OPENAI_COMPATIBLE_API_KEY to your API key",
364
- "4. Optionally set OPENAI_COMPATIBLE_MODEL (will auto-discover if not set)",
365
- ],
366
- };
367
- }
368
- /**
369
- * Creates Google Vertex Project ID configuration
370
- */
371
- export function createVertexProjectConfig() {
372
- return {
373
- providerName: "Google Vertex AI",
374
- envVarName: "GOOGLE_CLOUD_PROJECT_ID",
375
- setupUrl: "https://console.cloud.google.com/",
376
- description: "Google Cloud Credentials",
377
- instructions: [
378
- "1. Visit: https://console.cloud.google.com/",
379
- "2. Create or select a project",
380
- "3. Enable Vertex AI API",
381
- "4. Set up authentication",
382
- ],
383
- fallbackEnvVars: [
384
- "VERTEX_PROJECT_ID",
385
- "GOOGLE_VERTEX_PROJECT",
386
- "GOOGLE_CLOUD_PROJECT",
387
- ],
388
- };
389
- }
390
- /**
391
- * Creates Google Cloud Authentication configuration
392
- */
393
- export function createGoogleAuthConfig() {
394
- return {
395
- providerName: "Google Vertex AI",
396
- envVarName: "GOOGLE_APPLICATION_CREDENTIALS",
397
- setupUrl: "https://console.cloud.google.com/",
398
- description: "Google Cloud authentication",
399
- instructions: [
400
- "🔧 Option 1: Service Account Key File",
401
- "GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json",
402
- "",
403
- "🔧 Option 2: Service Account Key (Base64)",
404
- "GOOGLE_SERVICE_ACCOUNT_KEY=base64_encoded_key",
405
- "",
406
- "🔧 Option 3: Individual Credentials",
407
- "GOOGLE_AUTH_CLIENT_EMAIL=your-service-account@project.iam.gserviceaccount.com",
408
- "GOOGLE_AUTH_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----...",
409
- ],
410
- fallbackEnvVars: ["GOOGLE_SERVICE_ACCOUNT_KEY"],
411
- };
412
- }
413
- /**
414
- * Creates Anthropic Base Provider configuration
415
- */
416
- export function createAnthropicBaseConfig() {
417
- return {
418
- providerName: "ANTHROPIC",
419
- envVarName: "ANTHROPIC_API_KEY",
420
- setupUrl: "https://console.anthropic.com/",
421
- description: "Credentials",
422
- instructions: [
423
- "Get your API key from https://console.anthropic.com/",
424
- "",
425
- "💡 Step 2: Add to your .env file (or export in CLI):",
426
- ],
427
- };
428
- }
429
- // =============================================================================
430
- // HELPER FUNCTIONS FOR SPECIFIC PROVIDER NEEDS
431
- // =============================================================================
432
- /**
433
- * Gets AWS Region with default fallback
434
- * Supports both AWS_REGION and AWS_DEFAULT_REGION for broader compatibility
435
- */
436
- export function getAWSRegion() {
437
- return (process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || "us-east-1");
438
- }
439
- /**
440
- * Gets AWS Session Token if available
441
- */
442
- export function getAWSSessionToken() {
443
- return process.env.AWS_SESSION_TOKEN;
444
- }
445
- /**
446
- * Checks if HuggingFace credentials are available
447
- */
448
- export function hasHuggingFaceCredentials() {
449
- return hasProviderCredentials(["HUGGINGFACE_API_KEY", "HF_TOKEN"]);
450
- }
451
- // =============================================================================
452
- // ANTHROPIC/CLAUDE SUBSCRIPTION AUTH HELPERS
453
- // =============================================================================
454
- /**
455
- * Gets the configured Anthropic authentication method
456
- * Defaults to "api_key" for backward compatibility
457
- * @returns The configured authentication method
458
- */
459
- export function getAnthropicAuthMethod() {
460
- const method = process.env.ANTHROPIC_AUTH_METHOD?.toLowerCase();
461
- if (method === "oauth") {
462
- return "oauth";
463
- }
464
- return "api_key";
465
- }
466
- /**
467
- * Gets the configured Claude subscription tier
468
- * Defaults to "api" for backward compatibility (API key users)
469
- * @returns The configured subscription tier
470
- */
471
- export function getAnthropicSubscriptionTier() {
472
- const tier = process.env.ANTHROPIC_SUBSCRIPTION_TIER?.toLowerCase();
473
- switch (tier) {
474
- case "free":
475
- return "free";
476
- case "pro":
477
- return "pro";
478
- case "max":
479
- return "max";
480
- case "max_5":
481
- return "max_5";
482
- case "max_20":
483
- return "max_20";
484
- case "api":
485
- default:
486
- return "api";
487
- }
488
- }
489
- /**
490
- * Validates OAuth access token format
491
- * @param token The token to validate
492
- * @returns True if the token format is valid
493
- */
494
- export function validateOAuthAccessToken(token) {
495
- if (!token || token.length < 32) {
496
- return false;
497
- }
498
- const format = OAUTH_TOKEN_FORMATS["anthropic-access"];
499
- return format.test(token);
500
- }
501
- /**
502
- * Validates OAuth refresh token format
503
- * @param token The token to validate
504
- * @returns True if the token format is valid
505
- */
506
- export function validateOAuthRefreshToken(token) {
507
- if (!token || token.length < 32) {
508
- return false;
509
- }
510
- const format = OAUTH_TOKEN_FORMATS["anthropic-refresh"];
511
- return format.test(token);
512
- }
513
- /**
514
- * Detects the best available authentication method for Anthropic
515
- * Checks environment variables and returns the most appropriate auth configuration
516
- * @returns Complete authentication configuration
517
- */
518
- export function detectAnthropicAuth() {
519
- const explicitMethod = process.env.ANTHROPIC_AUTH_METHOD?.toLowerCase();
520
- const tier = getAnthropicSubscriptionTier();
521
- // Check for OAuth tokens — canonical + fallbacks for backward compatibility
522
- const accessToken = process.env.ANTHROPIC_OAUTH_TOKEN ??
523
- process.env.CLAUDE_OAUTH_TOKEN ??
524
- process.env.ANTHROPIC_OAUTH_ACCESS_TOKEN;
525
- const refreshToken = process.env.ANTHROPIC_OAUTH_REFRESH_TOKEN;
526
- // Check for API key
527
- const apiKey = process.env.ANTHROPIC_API_KEY;
528
- // If explicit method is set, use it
529
- if (explicitMethod === "oauth") {
530
- if (accessToken) {
531
- const isValidAccessToken = validateOAuthAccessToken(accessToken);
532
- const isValidRefreshToken = refreshToken
533
- ? validateOAuthRefreshToken(refreshToken)
534
- : true;
535
- if (!isValidAccessToken) {
536
- return {
537
- method: "oauth",
538
- tier,
539
- accessToken,
540
- refreshToken,
541
- isConfigured: false,
542
- error: "Invalid OAuth access token format. Token should be a valid JWT or opaque token.",
543
- };
544
- }
545
- if (refreshToken && !isValidRefreshToken) {
546
- return {
547
- method: "oauth",
548
- tier,
549
- accessToken,
550
- refreshToken,
551
- isConfigured: false,
552
- error: "Invalid OAuth refresh token format. Token should be at least 32 characters.",
553
- };
554
- }
555
- return {
556
- method: "oauth",
557
- tier,
558
- accessToken,
559
- refreshToken,
560
- isConfigured: true,
561
- };
562
- }
563
- // OAuth method specified but no token
564
- return {
565
- method: "oauth",
566
- tier,
567
- isConfigured: false,
568
- error: "OAuth authentication method specified but ANTHROPIC_OAUTH_TOKEN not set.",
569
- };
570
- }
571
- // If explicit method is api_key or not set
572
- if (apiKey) {
573
- const isValidApiKey = validateApiKeyFormat("anthropic", apiKey);
574
- if (!isValidApiKey) {
575
- // Still return as configured but note the format issue
576
- return {
577
- method: "api_key",
578
- tier: "api", // API key users are always on "api" tier
579
- apiKey,
580
- isConfigured: true,
581
- error: "API key format may be invalid. Expected format: sk-ant-...",
582
- };
583
- }
584
- return {
585
- method: "api_key",
586
- tier: "api",
587
- apiKey,
588
- isConfigured: true,
589
- };
590
- }
591
- // Check if OAuth tokens are available without explicit method set
592
- if (accessToken) {
593
- const isValidAccessToken = validateOAuthAccessToken(accessToken);
594
- return {
595
- method: "oauth",
596
- tier,
597
- accessToken,
598
- refreshToken,
599
- isConfigured: isValidAccessToken,
600
- error: isValidAccessToken
601
- ? undefined
602
- : "Invalid OAuth access token format.",
603
- };
604
- }
605
- // No authentication configured
606
- return {
607
- method: "api_key",
608
- tier: "api",
609
- isConfigured: false,
610
- error: "No Anthropic authentication configured. Set ANTHROPIC_API_KEY or configure OAuth.",
611
- };
612
- }
613
- /**
614
- * Checks if Anthropic credentials are available (either API key or OAuth)
615
- * @returns True if any valid authentication is configured
616
- */
617
- export function hasAnthropicCredentials() {
618
- const auth = detectAnthropicAuth();
619
- return auth.isConfigured;
620
- }
621
- /**
622
- * Gets the authentication token or key for Anthropic API calls
623
- * Returns the appropriate credential based on configured auth method
624
- * @returns The API key or OAuth access token, or undefined if not configured
625
- */
626
- export function getAnthropicCredential() {
627
- const auth = detectAnthropicAuth();
628
- if (!auth.isConfigured) {
629
- return undefined;
630
- }
631
- return auth.method === "oauth" ? auth.accessToken : auth.apiKey;
632
- }
633
- /**
634
- * Checks if OAuth refresh is needed based on token state
635
- * This is a placeholder for actual token expiration checking
636
- * @returns True if refresh is needed
637
- */
638
- export function needsOAuthRefresh() {
639
- const auth = detectAnthropicAuth();
640
- if (auth.method !== "oauth" || !auth.isConfigured) {
641
- return false;
642
- }
643
- // In a real implementation, you would check token expiration
644
- // For now, we just check if a refresh token is available
645
- // The actual refresh logic would be in the OAuth client
646
- return !!auth.refreshToken;
647
- }
648
- /**
649
- * Gets subscription tier limits for informational purposes
650
- * These are approximate limits and may change
651
- * @param tier The subscription tier
652
- * @returns Object with tier limit information
653
- */
654
- export function getSubscriptionTierLimits(tier) {
655
- switch (tier) {
656
- case "free":
657
- return {
658
- messagesPerDay: 10,
659
- contextWindow: 100000,
660
- priorityAccess: false,
661
- description: "Free tier with limited daily messages",
662
- };
663
- case "pro":
664
- return {
665
- messagesPerDay: 100,
666
- contextWindow: 200000,
667
- priorityAccess: true,
668
- description: "Claude Pro subscription with extended limits",
669
- };
670
- case "max":
671
- return {
672
- messagesPerDay: "unlimited",
673
- contextWindow: 200000,
674
- priorityAccess: true,
675
- description: "Claude Max subscription with highest limits",
676
- };
677
- case "max_5":
678
- return {
679
- messagesPerDay: "unlimited",
680
- contextWindow: 200000,
681
- priorityAccess: true,
682
- description: "Claude Max 5x usage tier with priority processing",
683
- };
684
- case "max_20":
685
- return {
686
- messagesPerDay: "unlimited",
687
- contextWindow: 200000,
688
- priorityAccess: true,
689
- description: "Claude Max 20x usage tier with maximum capacity",
690
- };
691
- case "api":
692
- default:
693
- return {
694
- messagesPerDay: "unlimited",
695
- contextWindow: 200000,
696
- priorityAccess: true,
697
- description: "API access with pay-per-use billing",
698
- };
699
- }
700
- }
701
- // =============================================================================
702
- // ENVIRONMENT VARIABLE CONSTANTS
703
- // =============================================================================
704
- /**
705
- * Environment variables for Anthropic/Claude subscription configuration
706
- * These control authentication method, subscription tier, and feature flags
707
- */
708
- export const ANTHROPIC_ENV_VARS = {
709
- /** Authentication method: "api_key" or "oauth" */
710
- AUTH_METHOD: "ANTHROPIC_AUTH_METHOD",
711
- /** Subscription tier: "free", "pro", "max", "max_5", "max_20", or "api" */
712
- SUBSCRIPTION_TIER: "ANTHROPIC_SUBSCRIPTION_TIER",
713
- /** Enable beta features: "true" or "false" */
714
- ENABLE_BETA_FEATURES: "ANTHROPIC_ENABLE_BETA_FEATURES",
715
- /** API key for api_key authentication */
716
- API_KEY: "ANTHROPIC_API_KEY",
717
- /** OAuth access token for oauth authentication (canonical, with BC fallbacks) */
718
- OAUTH_ACCESS_TOKEN: "ANTHROPIC_OAUTH_TOKEN",
719
- /** OAuth refresh token for oauth authentication */
720
- OAUTH_REFRESH_TOKEN: "ANTHROPIC_OAUTH_REFRESH_TOKEN",
721
- /** OAuth token expiry timestamp (Unix epoch in seconds) */
722
- OAUTH_TOKEN_EXPIRY: "ANTHROPIC_OAUTH_TOKEN_EXPIRY",
723
- };
724
- /**
725
- * Valid subscription tier values for validation
726
- */
727
- export const VALID_SUBSCRIPTION_TIERS = [
728
- "free",
729
- "pro",
730
- "max",
731
- "max_5",
732
- "max_20",
733
- "api",
734
- ];
735
- /**
736
- * Valid authentication method values for validation
737
- */
738
- export const VALID_AUTH_METHODS = [
739
- "api_key",
740
- "oauth",
741
- ];
742
- // =============================================================================
743
- // SUBSCRIPTION TIER VALIDATION
744
- // =============================================================================
745
- /**
746
- * Validates a subscription tier value
747
- * @param tier The tier value to validate
748
- * @returns True if the tier is valid, false otherwise
749
- */
750
- export function isValidSubscriptionTier(tier) {
751
- if (!tier) {
752
- return false;
753
- }
754
- return VALID_SUBSCRIPTION_TIERS.includes(tier);
755
- }
756
- /**
757
- * Validates an authentication method value
758
- * @param method The method value to validate
759
- * @returns True if the method is valid, false otherwise
760
- */
761
- export function isValidAuthMethod(method) {
762
- if (!method) {
763
- return false;
764
- }
765
- return VALID_AUTH_METHODS.includes(method);
766
- }
767
- /**
768
- * Validates subscription tier and returns a detailed result
769
- * @param tier The tier value to validate
770
- * @returns Validation result with error details if invalid
771
- */
772
- export function validateSubscriptionTier(tier) {
773
- if (!tier) {
774
- return {
775
- isValid: false,
776
- error: "Subscription tier is required but not provided.",
777
- };
778
- }
779
- const normalizedTier = tier.toLowerCase().trim();
780
- if (isValidSubscriptionTier(normalizedTier)) {
781
- return {
782
- isValid: true,
783
- tier: normalizedTier,
784
- };
785
- }
786
- return {
787
- isValid: false,
788
- error: `Invalid subscription tier "${tier}". Valid values are: ${VALID_SUBSCRIPTION_TIERS.join(", ")}`,
789
- };
790
- }
791
- // =============================================================================
792
- // ANTHROPIC AUTH CONFIG FUNCTIONS
793
- // =============================================================================
794
- /**
795
- * Gets the complete Anthropic authentication configuration
796
- * Detects auth method from environment or config and loads appropriate credentials
797
- *
798
- * @returns Complete AnthropicAuthConfig with method, credentials, and tier
799
- */
800
- export function getAnthropicAuthConfig() {
801
- const method = getAnthropicAuthMethod();
802
- const tier = detectSubscriptionTier();
803
- if (method === "oauth") {
804
- const accessToken = process.env[ANTHROPIC_ENV_VARS.OAUTH_ACCESS_TOKEN];
805
- const refreshToken = process.env[ANTHROPIC_ENV_VARS.OAUTH_REFRESH_TOKEN];
806
- const tokenExpiryStr = process.env[ANTHROPIC_ENV_VARS.OAUTH_TOKEN_EXPIRY];
807
- // Parse token expiry if provided
808
- let expiresAt;
809
- if (tokenExpiryStr) {
810
- const parsed = parseInt(tokenExpiryStr, 10);
811
- if (!isNaN(parsed)) {
812
- expiresAt = parsed;
813
- }
814
- }
815
- // Build OAuth token object
816
- const oauthToken = accessToken
817
- ? {
818
- accessToken,
819
- refreshToken,
820
- expiresAt,
821
- tokenType: "Bearer",
822
- }
823
- : undefined;
824
- return {
825
- method: "oauth",
826
- oauthToken,
827
- accessToken, // Legacy field for backward compatibility
828
- refreshToken, // Legacy field for backward compatibility
829
- tokenExpiry: expiresAt ? expiresAt * 1000 : undefined, // Convert to milliseconds
830
- subscriptionTier: tier,
831
- autoRefresh: !!refreshToken,
832
- };
833
- }
834
- // API key authentication
835
- const apiKey = process.env[ANTHROPIC_ENV_VARS.API_KEY];
836
- return {
837
- method: "api_key",
838
- apiKey,
839
- subscriptionTier: tier,
840
- autoRefresh: false,
841
- };
842
- }
843
- /**
844
- * Detects the subscription tier from environment variables or config
845
- * Checks environment variable first, then config, defaults to "api" if using API key
846
- *
847
- * @returns The detected subscription tier
848
- */
849
- export function detectSubscriptionTier() {
850
- // 1. Check environment variable first (highest priority)
851
- const envTier = process.env[ANTHROPIC_ENV_VARS.SUBSCRIPTION_TIER];
852
- if (envTier) {
853
- const validation = validateSubscriptionTier(envTier);
854
- if (validation.isValid && validation.tier) {
855
- return validation.tier;
856
- }
857
- logger.warn("Invalid ANTHROPIC_SUBSCRIPTION_TIER value", {
858
- value: envTier,
859
- validValues: VALID_SUBSCRIPTION_TIERS,
860
- fallback: "Defaulting based on auth method",
861
- });
862
- }
863
- // 2. Check config file (could be extended to read from config file)
864
- // For now, we check if there's a tier set via other means
865
- // This is a placeholder for config file integration
866
- // const configTier = loadConfigTier(); // Future: implement config file loading
867
- // 3. Default based on authentication method
868
- const authMethod = getAnthropicAuthMethod();
869
- if (authMethod === "oauth") {
870
- // OAuth users are typically subscription users, default to "pro"
871
- // unless they've explicitly configured otherwise
872
- logger.debug("[detectSubscriptionTier] OAuth auth detected, defaulting to pro tier");
873
- return "pro";
874
- }
875
- // 4. API key users default to "api" tier
876
- logger.debug("[detectSubscriptionTier] API key auth, defaulting to api tier");
877
- return "api";
878
- }
879
- /**
880
- * Determines whether beta features should be enabled
881
- * Checks environment/config and defaults based on authentication method
882
- *
883
- * @returns True if beta features should be enabled
884
- */
885
- export function shouldEnableBetaFeatures() {
886
- // 1. Check explicit environment variable first (highest priority)
887
- const envValue = process.env[ANTHROPIC_ENV_VARS.ENABLE_BETA_FEATURES];
888
- if (envValue !== undefined) {
889
- const normalized = envValue.toLowerCase().trim();
890
- if (normalized === "true" || normalized === "1" || normalized === "yes") {
891
- return true;
892
- }
893
- if (normalized === "false" || normalized === "0" || normalized === "no") {
894
- return false;
895
- }
896
- logger.warn("Invalid ANTHROPIC_ENABLE_BETA_FEATURES value", {
897
- value: envValue,
898
- expected: ["true", "false"],
899
- fallback: "Defaulting based on auth method",
900
- });
901
- }
902
- // 2. Check config file (placeholder for future config integration)
903
- // const configValue = loadConfigBetaFeatures();
904
- // 3. Default based on authentication method
905
- // OAuth users get beta features enabled by default
906
- // API key users get beta features disabled by default for stability
907
- const authMethod = getAnthropicAuthMethod();
908
- return authMethod === "oauth";
909
- }
910
- /**
911
- * Gets complete subscription configuration including auth, tier, and features
912
- * Combines all configuration sources into a unified config object
913
- *
914
- * @returns Complete subscription configuration
915
- */
916
- export function getAnthropicSubscriptionConfig() {
917
- const auth = getAnthropicAuthConfig();
918
- const tier = detectSubscriptionTier();
919
- const betaFeaturesEnabled = shouldEnableBetaFeatures();
920
- const limits = getSubscriptionTierLimits(tier);
921
- // Determine if properly configured
922
- let isConfigured = false;
923
- let error;
924
- if (auth.method === "oauth") {
925
- if (auth.oauthToken?.accessToken || auth.accessToken) {
926
- isConfigured = true;
927
- }
928
- else {
929
- error =
930
- "OAuth authentication method specified but no access token configured. " +
931
- `Set ${ANTHROPIC_ENV_VARS.OAUTH_ACCESS_TOKEN} environment variable.`;
932
- }
933
- }
934
- else {
935
- if (auth.apiKey) {
936
- isConfigured = true;
937
- }
938
- else {
939
- error =
940
- "API key authentication method specified but no API key configured. " +
941
- `Set ${ANTHROPIC_ENV_VARS.API_KEY} environment variable.`;
942
- }
943
- }
944
- return {
945
- auth,
946
- tier,
947
- betaFeaturesEnabled,
948
- limits,
949
- isConfigured,
950
- error,
951
- };
952
- }
953
- /**
954
- * Checks if the current subscription tier has access to a specific feature
955
- * @param feature The feature to check
956
- * @param currentTier The current subscription tier (optional, auto-detects if not provided)
957
- * @returns True if the tier has access to the feature
958
- */
959
- export function hasSubscriptionFeature(feature, currentTier) {
960
- const tier = currentTier ?? detectSubscriptionTier();
961
- const limits = getSubscriptionTierLimits(tier);
962
- // Map features to tier capabilities
963
- switch (feature) {
964
- case "extended_thinking":
965
- // Extended thinking requires pro or higher, or API tier
966
- return tier !== "free";
967
- case "priority_access":
968
- return limits.priorityAccess;
969
- case "vision":
970
- case "file_analysis":
971
- // Available on all tiers
972
- return true;
973
- case "mcp_tools":
974
- // MCP tools require pro or higher
975
- return tier !== "free";
976
- case "computer_use":
977
- // Computer use requires max tier or API
978
- return (tier === "max" ||
979
- tier === "max_5" ||
980
- tier === "max_20" ||
981
- tier === "api");
982
- case "web_search":
983
- // Web search available on pro or higher
984
- return tier !== "free";
985
- default:
986
- return false;
987
- }
988
- }
989
- /**
990
- * Gets a human-readable description of the current authentication configuration
991
- * Useful for debugging and user feedback
992
- *
993
- * @returns Human-readable configuration description
994
- */
995
- export function describeAnthropicConfig() {
996
- const config = getAnthropicSubscriptionConfig();
997
- const lines = [];
998
- lines.push(`Authentication Method: ${config.auth.method}`);
999
- lines.push(`Subscription Tier: ${config.tier}`);
1000
- lines.push(`Beta Features: ${config.betaFeaturesEnabled ? "Enabled" : "Disabled"}`);
1001
- lines.push(`Configured: ${config.isConfigured ? "Yes" : "No"}`);
1002
- if (config.error) {
1003
- lines.push(`Error: ${config.error}`);
1004
- }
1005
- lines.push(`Daily Messages: ${config.limits.messagesPerDay}`);
1006
- lines.push(`Context Window: ${config.limits.contextWindow.toLocaleString()} tokens`);
1007
- lines.push(`Priority Access: ${config.limits.priorityAccess ? "Yes" : "No"}`);
1008
- return lines.join("\n");
1009
- }