@juspay/neurolink 9.32.0 → 9.32.1

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 (467) hide show
  1. package/CHANGELOG.md +6 -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/server/routes/claudeProxyRoutes.js +45 -9
  11. package/dist/mcp/elicitationProtocol.js +1 -1
  12. package/dist/mcp/servers/agent/directToolsServer.js +0 -1
  13. package/dist/providers/azureOpenai.js +1 -1
  14. package/dist/providers/huggingFace.js +0 -1
  15. package/dist/providers/openaiCompatible.js +0 -1
  16. package/dist/sdk/toolRegistration.js +0 -1
  17. package/dist/server/openapi/generator.js +1 -1
  18. package/dist/server/routes/claudeProxyRoutes.js +45 -9
  19. package/dist/types/configTypes.js +0 -5
  20. package/dist/types/modelTypes.js +0 -1
  21. package/dist/types/tools.js +0 -1
  22. package/dist/types/typeAliases.js +0 -1
  23. package/dist/types/utilities.js +1 -1
  24. package/dist/types/workflowTypes.js +0 -1
  25. package/dist/utils/providerRetry.js +0 -1
  26. package/dist/utils/providerUtils.js +0 -1
  27. package/package.json +2 -2
  28. package/dist/client/adapters/providerImageAdapter.js +0 -588
  29. package/dist/client/adapters/tts/googleTTSHandler.js +0 -344
  30. package/dist/client/adapters/video/directorPipeline.js +0 -516
  31. package/dist/client/adapters/video/ffmpegAdapter.js +0 -206
  32. package/dist/client/adapters/video/frameExtractor.js +0 -143
  33. package/dist/client/adapters/video/vertexVideoHandler.js +0 -763
  34. package/dist/client/adapters/video/videoAnalyzer.js +0 -238
  35. package/dist/client/adapters/video/videoMerger.js +0 -171
  36. package/dist/client/agent/directTools.js +0 -840
  37. package/dist/client/auth/AuthProviderFactory.js +0 -111
  38. package/dist/client/auth/AuthProviderRegistry.js +0 -190
  39. package/dist/client/auth/RequestContext.js +0 -78
  40. package/dist/client/auth/accountPool.js +0 -178
  41. package/dist/client/auth/anthropicOAuth.js +0 -974
  42. package/dist/client/auth/authContext.js +0 -314
  43. package/dist/client/auth/errors.js +0 -39
  44. package/dist/client/auth/index.js +0 -61
  45. package/dist/client/auth/middleware/AuthMiddleware.js +0 -519
  46. package/dist/client/auth/middleware/rateLimitByUser.js +0 -554
  47. package/dist/client/auth/providers/BaseAuthProvider.js +0 -723
  48. package/dist/client/auth/providers/CognitoProvider.js +0 -304
  49. package/dist/client/auth/providers/KeycloakProvider.js +0 -393
  50. package/dist/client/auth/providers/auth0.js +0 -274
  51. package/dist/client/auth/providers/betterAuth.js +0 -182
  52. package/dist/client/auth/providers/clerk.js +0 -317
  53. package/dist/client/auth/providers/custom.js +0 -112
  54. package/dist/client/auth/providers/firebase.js +0 -226
  55. package/dist/client/auth/providers/jwt.js +0 -212
  56. package/dist/client/auth/providers/oauth2.js +0 -303
  57. package/dist/client/auth/providers/supabase.js +0 -259
  58. package/dist/client/auth/providers/workos.js +0 -284
  59. package/dist/client/auth/serverBridge.js +0 -25
  60. package/dist/client/auth/sessionManager.js +0 -437
  61. package/dist/client/auth/tokenStore.js +0 -799
  62. package/dist/client/client/aiSdkAdapter.js +0 -487
  63. package/dist/client/client/auth.js +0 -473
  64. package/dist/client/client/errors.js +0 -552
  65. package/dist/client/client/httpClient.js +0 -837
  66. package/dist/client/client/index.js +0 -172
  67. package/dist/client/client/interceptors.js +0 -601
  68. package/dist/client/client/sseClient.js +0 -545
  69. package/dist/client/client/streamingClient.js +0 -917
  70. package/dist/client/client/wsClient.js +0 -369
  71. package/dist/client/config/configManager.js +0 -303
  72. package/dist/client/config/conversationMemory.js +0 -86
  73. package/dist/client/config/taskClassificationConfig.js +0 -148
  74. package/dist/client/constants/contextWindows.js +0 -295
  75. package/dist/client/constants/enums.js +0 -853
  76. package/dist/client/constants/index.js +0 -207
  77. package/dist/client/constants/performance.js +0 -389
  78. package/dist/client/constants/retry.js +0 -266
  79. package/dist/client/constants/timeouts.js +0 -182
  80. package/dist/client/constants/tokens.js +0 -380
  81. package/dist/client/constants/videoErrors.js +0 -46
  82. package/dist/client/context/budgetChecker.js +0 -98
  83. package/dist/client/context/contextCompactor.js +0 -205
  84. package/dist/client/context/emergencyTruncation.js +0 -88
  85. package/dist/client/context/errorDetection.js +0 -171
  86. package/dist/client/context/errors.js +0 -21
  87. package/dist/client/context/fileTokenBudget.js +0 -127
  88. package/dist/client/context/prompts/summarizationPrompt.js +0 -117
  89. package/dist/client/context/stages/fileReadDeduplicator.js +0 -66
  90. package/dist/client/context/stages/slidingWindowTruncator.js +0 -190
  91. package/dist/client/context/stages/structuredSummarizer.js +0 -99
  92. package/dist/client/context/stages/toolOutputPruner.js +0 -52
  93. package/dist/client/context/summarizationEngine.js +0 -136
  94. package/dist/client/context/toolOutputLimits.js +0 -78
  95. package/dist/client/context/toolPairRepair.js +0 -66
  96. package/dist/client/core/analytics.js +0 -88
  97. package/dist/client/core/baseProvider.js +0 -1385
  98. package/dist/client/core/constants.js +0 -140
  99. package/dist/client/core/conversationMemoryFactory.js +0 -141
  100. package/dist/client/core/conversationMemoryInitializer.js +0 -128
  101. package/dist/client/core/conversationMemoryManager.js +0 -344
  102. package/dist/client/core/dynamicModels.js +0 -358
  103. package/dist/client/core/evaluation.js +0 -309
  104. package/dist/client/core/evaluationProviders.js +0 -248
  105. package/dist/client/core/factory.js +0 -412
  106. package/dist/client/core/infrastructure/baseError.js +0 -22
  107. package/dist/client/core/infrastructure/baseFactory.js +0 -54
  108. package/dist/client/core/infrastructure/baseRegistry.js +0 -53
  109. package/dist/client/core/infrastructure/index.js +0 -5
  110. package/dist/client/core/infrastructure/retry.js +0 -20
  111. package/dist/client/core/infrastructure/typedEventEmitter.js +0 -23
  112. package/dist/client/core/modelConfiguration.js +0 -851
  113. package/dist/client/core/modules/GenerationHandler.js +0 -588
  114. package/dist/client/core/modules/MessageBuilder.js +0 -273
  115. package/dist/client/core/modules/StreamHandler.js +0 -185
  116. package/dist/client/core/modules/TelemetryHandler.js +0 -203
  117. package/dist/client/core/modules/ToolsManager.js +0 -499
  118. package/dist/client/core/modules/Utilities.js +0 -331
  119. package/dist/client/core/redisConversationMemoryManager.js +0 -1435
  120. package/dist/client/core/streamAnalytics.js +0 -131
  121. package/dist/client/evaluation/contextBuilder.js +0 -134
  122. package/dist/client/evaluation/index.js +0 -61
  123. package/dist/client/evaluation/prompts.js +0 -73
  124. package/dist/client/evaluation/ragasEvaluator.js +0 -110
  125. package/dist/client/evaluation/retryManager.js +0 -78
  126. package/dist/client/evaluation/scoring.js +0 -61
  127. package/dist/client/factories/providerFactory.js +0 -166
  128. package/dist/client/factories/providerRegistry.js +0 -166
  129. package/dist/client/features/ppt/constants.js +0 -896
  130. package/dist/client/features/ppt/contentPlanner.js +0 -529
  131. package/dist/client/features/ppt/presentationOrchestrator.js +0 -236
  132. package/dist/client/features/ppt/slideGenerator.js +0 -532
  133. package/dist/client/features/ppt/slideRenderers.js +0 -2383
  134. package/dist/client/features/ppt/slideTypeInference.js +0 -405
  135. package/dist/client/features/ppt/types.js +0 -13
  136. package/dist/client/features/ppt/utils.js +0 -443
  137. package/dist/client/files/fileReferenceRegistry.js +0 -1543
  138. package/dist/client/files/fileTools.js +0 -450
  139. package/dist/client/files/streamingReader.js +0 -321
  140. package/dist/client/files/types.js +0 -23
  141. package/dist/client/hitl/hitlErrors.js +0 -54
  142. package/dist/client/hitl/hitlManager.js +0 -460
  143. package/dist/client/mcp/agentExposure.js +0 -356
  144. package/dist/client/mcp/auth/index.js +0 -11
  145. package/dist/client/mcp/auth/oauthClientProvider.js +0 -325
  146. package/dist/client/mcp/auth/tokenStorage.js +0 -134
  147. package/dist/client/mcp/batching/index.js +0 -10
  148. package/dist/client/mcp/batching/requestBatcher.js +0 -441
  149. package/dist/client/mcp/caching/index.js +0 -10
  150. package/dist/client/mcp/caching/toolCache.js +0 -433
  151. package/dist/client/mcp/elicitation/elicitationManager.js +0 -376
  152. package/dist/client/mcp/elicitation/index.js +0 -11
  153. package/dist/client/mcp/elicitation/types.js +0 -10
  154. package/dist/client/mcp/elicitationProtocol.js +0 -375
  155. package/dist/client/mcp/enhancedToolDiscovery.js +0 -481
  156. package/dist/client/mcp/externalServerManager.js +0 -1478
  157. package/dist/client/mcp/factory.js +0 -161
  158. package/dist/client/mcp/flexibleToolValidator.js +0 -161
  159. package/dist/client/mcp/httpRateLimiter.js +0 -391
  160. package/dist/client/mcp/httpRetryHandler.js +0 -178
  161. package/dist/client/mcp/index.js +0 -74
  162. package/dist/client/mcp/mcpCircuitBreaker.js +0 -427
  163. package/dist/client/mcp/mcpClientFactory.js +0 -708
  164. package/dist/client/mcp/mcpRegistryClient.js +0 -488
  165. package/dist/client/mcp/mcpServerBase.js +0 -373
  166. package/dist/client/mcp/multiServerManager.js +0 -579
  167. package/dist/client/mcp/registry.js +0 -158
  168. package/dist/client/mcp/routing/index.js +0 -10
  169. package/dist/client/mcp/routing/toolRouter.js +0 -416
  170. package/dist/client/mcp/serverCapabilities.js +0 -502
  171. package/dist/client/mcp/servers/agent/directToolsServer.js +0 -150
  172. package/dist/client/mcp/toolAnnotations.js +0 -239
  173. package/dist/client/mcp/toolConverter.js +0 -258
  174. package/dist/client/mcp/toolDiscoveryService.js +0 -798
  175. package/dist/client/mcp/toolIntegration.js +0 -334
  176. package/dist/client/mcp/toolRegistry.js +0 -729
  177. package/dist/client/memory/hippocampusInitializer.js +0 -19
  178. package/dist/client/memory/memoryRetrievalTools.js +0 -166
  179. package/dist/client/middleware/builtin/analytics.js +0 -132
  180. package/dist/client/middleware/builtin/autoEvaluation.js +0 -203
  181. package/dist/client/middleware/builtin/guardrails.js +0 -109
  182. package/dist/client/middleware/builtin/lifecycle.js +0 -168
  183. package/dist/client/middleware/factory.js +0 -327
  184. package/dist/client/middleware/registry.js +0 -295
  185. package/dist/client/middleware/utils/guardrailsUtils.js +0 -396
  186. package/dist/client/models/anthropicModels.js +0 -527
  187. package/dist/client/neurolink.js +0 -8233
  188. package/dist/client/observability/exporterRegistry.js +0 -413
  189. package/dist/client/observability/exporters/arizeExporter.js +0 -138
  190. package/dist/client/observability/exporters/baseExporter.js +0 -190
  191. package/dist/client/observability/exporters/braintrustExporter.js +0 -154
  192. package/dist/client/observability/exporters/datadogExporter.js +0 -196
  193. package/dist/client/observability/exporters/laminarExporter.js +0 -302
  194. package/dist/client/observability/exporters/langfuseExporter.js +0 -209
  195. package/dist/client/observability/exporters/langsmithExporter.js +0 -143
  196. package/dist/client/observability/exporters/otelExporter.js +0 -164
  197. package/dist/client/observability/exporters/posthogExporter.js +0 -287
  198. package/dist/client/observability/exporters/sentryExporter.js +0 -165
  199. package/dist/client/observability/index.js +0 -31
  200. package/dist/client/observability/metricsAggregator.js +0 -556
  201. package/dist/client/observability/otelBridge.js +0 -131
  202. package/dist/client/observability/retryPolicy.js +0 -383
  203. package/dist/client/observability/sampling/samplers.js +0 -216
  204. package/dist/client/observability/spanProcessor.js +0 -303
  205. package/dist/client/observability/tokenTracker.js +0 -413
  206. package/dist/client/observability/types/exporterTypes.js +0 -5
  207. package/dist/client/observability/types/index.js +0 -4
  208. package/dist/client/observability/types/spanTypes.js +0 -92
  209. package/dist/client/observability/utils/safeMetadata.js +0 -25
  210. package/dist/client/observability/utils/spanSerializer.js +0 -292
  211. package/dist/client/processors/archive/ArchiveProcessor.js +0 -1308
  212. package/dist/client/processors/base/BaseFileProcessor.js +0 -614
  213. package/dist/client/processors/base/types.js +0 -82
  214. package/dist/client/processors/config/fileTypes.js +0 -520
  215. package/dist/client/processors/config/index.js +0 -92
  216. package/dist/client/processors/config/languageMap.js +0 -410
  217. package/dist/client/processors/config/mimeTypes.js +0 -363
  218. package/dist/client/processors/config/sizeLimits.js +0 -258
  219. package/dist/client/processors/document/ExcelProcessor.js +0 -590
  220. package/dist/client/processors/document/OpenDocumentProcessor.js +0 -212
  221. package/dist/client/processors/document/PptxProcessor.js +0 -157
  222. package/dist/client/processors/document/RtfProcessor.js +0 -361
  223. package/dist/client/processors/document/WordProcessor.js +0 -353
  224. package/dist/client/processors/errors/FileErrorCode.js +0 -255
  225. package/dist/client/processors/errors/errorHelpers.js +0 -386
  226. package/dist/client/processors/errors/errorSerializer.js +0 -507
  227. package/dist/client/processors/errors/index.js +0 -49
  228. package/dist/client/processors/markup/SvgProcessor.js +0 -240
  229. package/dist/client/processors/media/AudioProcessor.js +0 -707
  230. package/dist/client/processors/media/VideoProcessor.js +0 -1045
  231. package/dist/client/providers/amazonBedrock.js +0 -1512
  232. package/dist/client/providers/amazonSagemaker.js +0 -162
  233. package/dist/client/providers/anthropic.js +0 -831
  234. package/dist/client/providers/azureOpenai.js +0 -143
  235. package/dist/client/providers/googleAiStudio.js +0 -1200
  236. package/dist/client/providers/googleNativeGemini3.js +0 -543
  237. package/dist/client/providers/googleVertex.js +0 -2936
  238. package/dist/client/providers/huggingFace.js +0 -315
  239. package/dist/client/providers/litellm.js +0 -488
  240. package/dist/client/providers/mistral.js +0 -157
  241. package/dist/client/providers/ollama.js +0 -1579
  242. package/dist/client/providers/openAI.js +0 -627
  243. package/dist/client/providers/openRouter.js +0 -543
  244. package/dist/client/providers/openaiCompatible.js +0 -290
  245. package/dist/client/providers/providerTypeUtils.js +0 -46
  246. package/dist/client/providers/sagemaker/adaptive-semaphore.js +0 -215
  247. package/dist/client/providers/sagemaker/client.js +0 -472
  248. package/dist/client/providers/sagemaker/config.js +0 -317
  249. package/dist/client/providers/sagemaker/detection.js +0 -606
  250. package/dist/client/providers/sagemaker/error-constants.js +0 -227
  251. package/dist/client/providers/sagemaker/errors.js +0 -299
  252. package/dist/client/providers/sagemaker/language-model.js +0 -775
  253. package/dist/client/providers/sagemaker/parsers.js +0 -634
  254. package/dist/client/providers/sagemaker/streaming.js +0 -331
  255. package/dist/client/providers/sagemaker/structured-parser.js +0 -625
  256. package/dist/client/proxy/accountQuota.js +0 -162
  257. package/dist/client/proxy/claudeFormat.js +0 -595
  258. package/dist/client/proxy/modelRouter.js +0 -29
  259. package/dist/client/proxy/oauthFetch.js +0 -367
  260. package/dist/client/proxy/proxyFetch.js +0 -586
  261. package/dist/client/proxy/requestLogger.js +0 -207
  262. package/dist/client/proxy/tokenRefresh.js +0 -124
  263. package/dist/client/proxy/usageStats.js +0 -74
  264. package/dist/client/proxy/utils/noProxyUtils.js +0 -149
  265. package/dist/client/rag/ChunkerFactory.js +0 -320
  266. package/dist/client/rag/ChunkerRegistry.js +0 -421
  267. package/dist/client/rag/chunkers/BaseChunker.js +0 -143
  268. package/dist/client/rag/chunkers/CharacterChunker.js +0 -28
  269. package/dist/client/rag/chunkers/HTMLChunker.js +0 -38
  270. package/dist/client/rag/chunkers/JSONChunker.js +0 -68
  271. package/dist/client/rag/chunkers/LaTeXChunker.js +0 -63
  272. package/dist/client/rag/chunkers/MarkdownChunker.js +0 -306
  273. package/dist/client/rag/chunkers/RecursiveChunker.js +0 -139
  274. package/dist/client/rag/chunkers/SemanticMarkdownChunker.js +0 -138
  275. package/dist/client/rag/chunkers/SentenceChunker.js +0 -66
  276. package/dist/client/rag/chunkers/TokenChunker.js +0 -61
  277. package/dist/client/rag/chunkers/index.js +0 -15
  278. package/dist/client/rag/chunking/characterChunker.js +0 -142
  279. package/dist/client/rag/chunking/chunkerRegistry.js +0 -194
  280. package/dist/client/rag/chunking/htmlChunker.js +0 -247
  281. package/dist/client/rag/chunking/index.js +0 -17
  282. package/dist/client/rag/chunking/jsonChunker.js +0 -281
  283. package/dist/client/rag/chunking/latexChunker.js +0 -251
  284. package/dist/client/rag/chunking/markdownChunker.js +0 -373
  285. package/dist/client/rag/chunking/recursiveChunker.js +0 -148
  286. package/dist/client/rag/chunking/semanticChunker.js +0 -306
  287. package/dist/client/rag/chunking/sentenceChunker.js +0 -230
  288. package/dist/client/rag/chunking/tokenChunker.js +0 -183
  289. package/dist/client/rag/document/MDocument.js +0 -392
  290. package/dist/client/rag/document/index.js +0 -5
  291. package/dist/client/rag/document/loaders.js +0 -500
  292. package/dist/client/rag/errors/RAGError.js +0 -274
  293. package/dist/client/rag/errors/index.js +0 -6
  294. package/dist/client/rag/graphRag/graphRAG.js +0 -401
  295. package/dist/client/rag/graphRag/index.js +0 -4
  296. package/dist/client/rag/index.js +0 -141
  297. package/dist/client/rag/metadata/MetadataExtractorFactory.js +0 -418
  298. package/dist/client/rag/metadata/MetadataExtractorRegistry.js +0 -362
  299. package/dist/client/rag/metadata/index.js +0 -9
  300. package/dist/client/rag/metadata/metadataExtractor.js +0 -280
  301. package/dist/client/rag/pipeline/RAGPipeline.js +0 -436
  302. package/dist/client/rag/pipeline/contextAssembly.js +0 -341
  303. package/dist/client/rag/pipeline/index.js +0 -5
  304. package/dist/client/rag/ragIntegration.js +0 -321
  305. package/dist/client/rag/reranker/RerankerFactory.js +0 -430
  306. package/dist/client/rag/reranker/RerankerRegistry.js +0 -402
  307. package/dist/client/rag/reranker/index.js +0 -9
  308. package/dist/client/rag/reranker/reranker.js +0 -277
  309. package/dist/client/rag/resilience/CircuitBreaker.js +0 -431
  310. package/dist/client/rag/resilience/RetryHandler.js +0 -304
  311. package/dist/client/rag/resilience/index.js +0 -7
  312. package/dist/client/rag/retrieval/hybridSearch.js +0 -335
  313. package/dist/client/rag/retrieval/index.js +0 -5
  314. package/dist/client/rag/retrieval/vectorQueryTool.js +0 -307
  315. package/dist/client/rag/types.js +0 -8
  316. package/dist/client/sdk/toolRegistration.js +0 -377
  317. package/dist/client/server/abstract/baseServerAdapter.js +0 -575
  318. package/dist/client/server/adapters/expressAdapter.js +0 -486
  319. package/dist/client/server/adapters/fastifyAdapter.js +0 -472
  320. package/dist/client/server/adapters/honoAdapter.js +0 -632
  321. package/dist/client/server/adapters/koaAdapter.js +0 -510
  322. package/dist/client/server/errors.js +0 -486
  323. package/dist/client/server/factory/serverAdapterFactory.js +0 -160
  324. package/dist/client/server/index.js +0 -108
  325. package/dist/client/server/middleware/abortSignal.js +0 -111
  326. package/dist/client/server/middleware/auth.js +0 -388
  327. package/dist/client/server/middleware/cache.js +0 -359
  328. package/dist/client/server/middleware/common.js +0 -281
  329. package/dist/client/server/middleware/deprecation.js +0 -190
  330. package/dist/client/server/middleware/mcpBodyAttachment.js +0 -63
  331. package/dist/client/server/middleware/rateLimit.js +0 -227
  332. package/dist/client/server/middleware/validation.js +0 -388
  333. package/dist/client/server/openapi/generator.js +0 -398
  334. package/dist/client/server/openapi/index.js +0 -36
  335. package/dist/client/server/openapi/schemas.js +0 -695
  336. package/dist/client/server/openapi/templates.js +0 -374
  337. package/dist/client/server/routes/agentRoutes.js +0 -189
  338. package/dist/client/server/routes/claudeProxyRoutes.js +0 -1600
  339. package/dist/client/server/routes/healthRoutes.js +0 -187
  340. package/dist/client/server/routes/index.js +0 -57
  341. package/dist/client/server/routes/mcpRoutes.js +0 -342
  342. package/dist/client/server/routes/memoryRoutes.js +0 -350
  343. package/dist/client/server/routes/openApiRoutes.js +0 -126
  344. package/dist/client/server/routes/toolRoutes.js +0 -199
  345. package/dist/client/server/streaming/dataStream.js +0 -486
  346. package/dist/client/server/streaming/index.js +0 -11
  347. package/dist/client/server/types.js +0 -67
  348. package/dist/client/server/utils/redaction.js +0 -334
  349. package/dist/client/server/utils/validation.js +0 -243
  350. package/dist/client/server/websocket/WebSocketHandler.js +0 -383
  351. package/dist/client/server/websocket/index.js +0 -4
  352. package/dist/client/services/server/ai/observability/instrumentation.js +0 -808
  353. package/dist/client/telemetry/attributes.js +0 -100
  354. package/dist/client/telemetry/index.js +0 -26
  355. package/dist/client/telemetry/telemetryService.js +0 -308
  356. package/dist/client/telemetry/tracers.js +0 -17
  357. package/dist/client/telemetry/withSpan.js +0 -34
  358. package/dist/client/types/actionTypes.js +0 -6
  359. package/dist/client/types/analytics.js +0 -5
  360. package/dist/client/types/authTypes.js +0 -9
  361. package/dist/client/types/circuitBreakerErrors.js +0 -34
  362. package/dist/client/types/cli.js +0 -21
  363. package/dist/client/types/clientTypes.js +0 -10
  364. package/dist/client/types/common.js +0 -51
  365. package/dist/client/types/configTypes.js +0 -49
  366. package/dist/client/types/content.js +0 -19
  367. package/dist/client/types/contextTypes.js +0 -400
  368. package/dist/client/types/conversation.js +0 -47
  369. package/dist/client/types/conversationMemoryInterface.js +0 -6
  370. package/dist/client/types/domainTypes.js +0 -5
  371. package/dist/client/types/errors.js +0 -167
  372. package/dist/client/types/evaluation.js +0 -5
  373. package/dist/client/types/evaluationProviders.js +0 -5
  374. package/dist/client/types/evaluationTypes.js +0 -1
  375. package/dist/client/types/externalMcp.js +0 -6
  376. package/dist/client/types/fileReferenceTypes.js +0 -8
  377. package/dist/client/types/fileTypes.js +0 -4
  378. package/dist/client/types/generateTypes.js +0 -1
  379. package/dist/client/types/guardrails.js +0 -1
  380. package/dist/client/types/hitlTypes.js +0 -8
  381. package/dist/client/types/index.js +0 -57
  382. package/dist/client/types/mcpTypes.js +0 -5
  383. package/dist/client/types/middlewareTypes.js +0 -1
  384. package/dist/client/types/modelTypes.js +0 -30
  385. package/dist/client/types/multimodal.js +0 -135
  386. package/dist/client/types/observability.js +0 -6
  387. package/dist/client/types/pptTypes.js +0 -82
  388. package/dist/client/types/providers.js +0 -111
  389. package/dist/client/types/proxyTypes.js +0 -16
  390. package/dist/client/types/ragTypes.js +0 -7
  391. package/dist/client/types/sdkTypes.js +0 -8
  392. package/dist/client/types/serviceTypes.js +0 -5
  393. package/dist/client/types/streamTypes.js +0 -1
  394. package/dist/client/types/subscriptionTypes.js +0 -9
  395. package/dist/client/types/taskClassificationTypes.js +0 -5
  396. package/dist/client/types/tools.js +0 -24
  397. package/dist/client/types/ttsTypes.js +0 -57
  398. package/dist/client/types/typeAliases.js +0 -48
  399. package/dist/client/types/utilities.js +0 -4
  400. package/dist/client/types/workflowTypes.js +0 -30
  401. package/dist/client/utils/async/withTimeout.js +0 -98
  402. package/dist/client/utils/asyncMutex.js +0 -60
  403. package/dist/client/utils/conversationMemory.js +0 -431
  404. package/dist/client/utils/csvProcessor.js +0 -846
  405. package/dist/client/utils/errorHandling.js +0 -936
  406. package/dist/client/utils/evaluationUtils.js +0 -131
  407. package/dist/client/utils/factoryProcessing.js +0 -589
  408. package/dist/client/utils/fileDetector.js +0 -2161
  409. package/dist/client/utils/imageCache.js +0 -376
  410. package/dist/client/utils/imageProcessor.js +0 -704
  411. package/dist/client/utils/logger.js +0 -491
  412. package/dist/client/utils/mcpDefaults.js +0 -134
  413. package/dist/client/utils/messageBuilder.js +0 -1653
  414. package/dist/client/utils/modelAliasResolver.js +0 -54
  415. package/dist/client/utils/modelDetection.js +0 -80
  416. package/dist/client/utils/modelRouter.js +0 -292
  417. package/dist/client/utils/multimodalOptionsBuilder.js +0 -65
  418. package/dist/client/utils/observabilityHelpers.js +0 -47
  419. package/dist/client/utils/parameterValidation.js +0 -966
  420. package/dist/client/utils/pdfProcessor.js +0 -410
  421. package/dist/client/utils/performance.js +0 -222
  422. package/dist/client/utils/pricing.js +0 -340
  423. package/dist/client/utils/promptRedaction.js +0 -62
  424. package/dist/client/utils/providerConfig.js +0 -1009
  425. package/dist/client/utils/providerHealth.js +0 -1237
  426. package/dist/client/utils/providerRetry.js +0 -112
  427. package/dist/client/utils/providerUtils.js +0 -434
  428. package/dist/client/utils/rateLimiter.js +0 -200
  429. package/dist/client/utils/redis.js +0 -368
  430. package/dist/client/utils/retryHandler.js +0 -269
  431. package/dist/client/utils/retryability.js +0 -22
  432. package/dist/client/utils/sanitizers/svg.js +0 -481
  433. package/dist/client/utils/schemaConversion.js +0 -255
  434. package/dist/client/utils/taskClassificationUtils.js +0 -149
  435. package/dist/client/utils/taskClassifier.js +0 -94
  436. package/dist/client/utils/thinkingConfig.js +0 -104
  437. package/dist/client/utils/timeout.js +0 -359
  438. package/dist/client/utils/tokenEstimation.js +0 -142
  439. package/dist/client/utils/tokenLimits.js +0 -125
  440. package/dist/client/utils/tokenUtils.js +0 -239
  441. package/dist/client/utils/toolUtils.js +0 -75
  442. package/dist/client/utils/transformationUtils.js +0 -554
  443. package/dist/client/utils/ttsProcessor.js +0 -286
  444. package/dist/client/utils/typeUtils.js +0 -97
  445. package/dist/client/utils/videoAnalysisProcessor.js +0 -67
  446. package/dist/client/workflow/config.js +0 -398
  447. package/dist/client/workflow/core/ensembleExecutor.js +0 -407
  448. package/dist/client/workflow/core/judgeScorer.js +0 -544
  449. package/dist/client/workflow/core/responseConditioner.js +0 -225
  450. package/dist/client/workflow/core/types/conditionerTypes.js +0 -7
  451. package/dist/client/workflow/core/types/ensembleTypes.js +0 -7
  452. package/dist/client/workflow/core/types/index.js +0 -7
  453. package/dist/client/workflow/core/types/judgeTypes.js +0 -7
  454. package/dist/client/workflow/core/types/layerTypes.js +0 -7
  455. package/dist/client/workflow/core/types/registryTypes.js +0 -7
  456. package/dist/client/workflow/core/workflowRegistry.js +0 -304
  457. package/dist/client/workflow/core/workflowRunner.js +0 -586
  458. package/dist/client/workflow/index.js +0 -50
  459. package/dist/client/workflow/types.js +0 -9
  460. package/dist/client/workflow/utils/types/index.js +0 -7
  461. package/dist/client/workflow/utils/workflowMetrics.js +0 -311
  462. package/dist/client/workflow/utils/workflowValidation.js +0 -420
  463. package/dist/client/workflow/workflows/adaptiveWorkflow.js +0 -366
  464. package/dist/client/workflow/workflows/consensusWorkflow.js +0 -192
  465. package/dist/client/workflow/workflows/fallbackWorkflow.js +0 -225
  466. package/dist/client/workflow/workflows/multiJudgeWorkflow.js +0 -351
  467. /package/dist/client/{client/reactHooks.js → reactHooks.js} +0 -0
@@ -1,544 +0,0 @@
1
- /**
2
- * workflow/core/judgeScorer.ts
3
- * Judge-based scoring system for ensemble response evaluation
4
- */
5
- import { AIProviderFactory } from "../../core/factory.js";
6
- import { logger } from "../../utils/logger.js";
7
- import { SpanSerializer, SpanType, SpanStatus, getMetricsAggregator, } from "../../observability/index.js";
8
- import { MAX_REASONING_LENGTH } from "../config.js";
9
- import { WorkflowError } from "../types.js";
10
- const functionTag = "JudgeScorer";
11
- // ============================================================================
12
- // SCORING FUNCTIONS
13
- // ============================================================================
14
- /**
15
- * Execute judge scoring on ensemble responses
16
- * @param options - Scoring options including judges and responses
17
- * @returns Score result with judge evaluation
18
- */
19
- export async function scoreEnsemble(options) {
20
- const startTime = Date.now();
21
- const { judges, responses, originalPrompt, systemPrompt, timeout, workflowDefaults, } = options;
22
- const span = SpanSerializer.createSpan(SpanType.WORKFLOW, "workflow.judge", {
23
- "workflow.operation": "judge",
24
- "workflow.judge_count": judges.length,
25
- "workflow.response_count": responses.length,
26
- "workflow.pattern": judges.length > 1 ? "multi-judge" : "single-judge",
27
- });
28
- logger.info(`[${functionTag}] Starting judge scoring`, {
29
- judgeCount: judges.length,
30
- responseCount: responses.length,
31
- });
32
- try {
33
- // Filter successful responses for evaluation
34
- const successfulResponses = responses.filter((r) => r.status === "success" && r.content.trim() !== "");
35
- if (successfulResponses.length === 0) {
36
- throw new WorkflowError("No successful responses to evaluate", {
37
- code: "NO_RESPONSES_TO_EVALUATE",
38
- workflowId: "judge",
39
- phase: "judge",
40
- retryable: false,
41
- });
42
- }
43
- if (judges.length === 1) {
44
- // Single judge scoring
45
- const judgeResult = await executeSingleJudge(judges[0], successfulResponses, originalPrompt, systemPrompt, timeout, workflowDefaults?.judgePrompt);
46
- const judgeTime = Date.now() - startTime;
47
- span.durationMs = judgeTime;
48
- const endedSpan = SpanSerializer.endSpan(span, SpanStatus.OK);
49
- getMetricsAggregator().recordSpan(endedSpan);
50
- return {
51
- scores: judgeResult,
52
- judgeTime,
53
- };
54
- }
55
- else {
56
- // Multi-judge voting
57
- const multiJudgeResult = await executeMultiJudge(judges, successfulResponses, originalPrompt, systemPrompt, timeout, workflowDefaults?.judgePrompt);
58
- const judgeTime = Date.now() - startTime;
59
- span.durationMs = judgeTime;
60
- const endedSpan = SpanSerializer.endSpan(span, SpanStatus.OK);
61
- getMetricsAggregator().recordSpan(endedSpan);
62
- return {
63
- scores: multiJudgeResult,
64
- judgeTime,
65
- };
66
- }
67
- }
68
- catch (error) {
69
- const err = error;
70
- logger.error(`[${functionTag}] Judge scoring failed`, {
71
- error: err.message,
72
- });
73
- span.durationMs = Date.now() - startTime;
74
- const endedSpan = SpanSerializer.endSpan(span, SpanStatus.ERROR, err.message);
75
- getMetricsAggregator().recordSpan(endedSpan);
76
- const workflowError = error instanceof WorkflowError
77
- ? error
78
- : new WorkflowError(err.message, {
79
- code: "JUDGE_SCORING_ERROR",
80
- workflowId: "judge",
81
- phase: "judge",
82
- retryable: true,
83
- });
84
- return {
85
- scores: createEmptyScores(judges[0], responses),
86
- judgeTime: Date.now() - startTime,
87
- error: workflowError,
88
- };
89
- }
90
- }
91
- /**
92
- * Execute single judge evaluation
93
- * @param judge - Judge configuration
94
- * @param responses - Successful ensemble responses
95
- * @param originalPrompt - Original user prompt
96
- * @param systemPrompt - Optional system prompt
97
- * @param timeout - Judge timeout in milliseconds
98
- * @returns Judge scores with evaluation
99
- */
100
- async function executeSingleJudge(judge, responses, originalPrompt, systemPrompt, timeout, workflowDefaultJudgePrompt) {
101
- const startTime = Date.now();
102
- logger.debug(`[${functionTag}] Executing single judge`, {
103
- provider: judge.provider,
104
- model: judge.model,
105
- });
106
- // Resolve judge prompt with hierarchical fallback:
107
- // 1. Judge-specific customPrompt (highest priority)
108
- // 2. Workflow-level default judge prompt
109
- // 3. Built-in default template
110
- const resolvedJudgePrompt = judge.customPrompt || workflowDefaultJudgePrompt;
111
- // Create judge prompt (will use resolvedJudgePrompt if provided, otherwise default template)
112
- const judgePrompt = createJudgePrompt(judge, responses, originalPrompt, resolvedJudgePrompt);
113
- // Execute judge
114
- const provider = await AIProviderFactory.createProvider(judge.provider, judge.model);
115
- const result = await provider.generate({
116
- prompt: judgePrompt,
117
- systemPrompt: systemPrompt || judge.systemPrompt,
118
- temperature: judge.temperature || 0.1,
119
- maxTokens: judge.maxTokens || 2000,
120
- timeout: timeout || judge.timeout || 10000,
121
- });
122
- // Parse judge response
123
- const parsed = parseJudgeResponse(result?.content || "", responses, judge);
124
- // Build JudgeScores
125
- const judgeScores = {
126
- judgeProvider: judge.provider,
127
- judgeModel: judge.model,
128
- scores: parsed.scores,
129
- ranking: parsed.ranking,
130
- bestResponse: parsed.bestResponse,
131
- criteria: judge.criteria,
132
- reasoning: parsed.reasoning,
133
- synthesizedResponse: parsed.synthesizedResponse, // Include synthesized response if present
134
- confidenceInJudgment: parsed.confidenceInJudgment,
135
- judgeTime: Date.now() - startTime,
136
- timestamp: new Date().toISOString(),
137
- };
138
- logger.debug(`[${functionTag}] Single judge completed`, {
139
- bestResponse: judgeScores.bestResponse,
140
- hasSynthesizedResponse: !!parsed.synthesizedResponse,
141
- judgeTime: judgeScores.judgeTime,
142
- });
143
- return judgeScores;
144
- }
145
- /**
146
- * Execute multi-judge voting
147
- * @param judges - Array of judge configurations
148
- * @param responses - Successful ensemble responses
149
- * @param originalPrompt - Original user prompt
150
- * @param systemPrompt - Optional system prompt
151
- * @param timeout - Judge timeout in milliseconds
152
- * @returns Multi-judge scores with aggregated results
153
- */
154
- async function executeMultiJudge(judges, responses, originalPrompt, systemPrompt, timeout, workflowDefaultJudgePrompt) {
155
- const startTime = Date.now();
156
- logger.debug(`[${functionTag}] Executing multi-judge voting`, {
157
- judgeCount: judges.length,
158
- });
159
- // Execute all judges in parallel
160
- const judgePromises = judges.map((judge) => executeSingleJudge(judge, responses, originalPrompt, systemPrompt, timeout, workflowDefaultJudgePrompt).catch((error) => {
161
- logger.warn(`[${functionTag}] Judge failed`, {
162
- provider: judge.provider,
163
- model: judge.model,
164
- error: error.message,
165
- });
166
- return createEmptyJudgeScores(judge, responses);
167
- }));
168
- const judgeResults = await Promise.all(judgePromises);
169
- // Aggregate scores using average (can be configurable in future)
170
- const aggregated = aggregateJudgeScores(judgeResults, "average");
171
- const multiJudgeScores = {
172
- judges: judgeResults,
173
- averageScores: aggregated.averageScores,
174
- aggregatedRanking: aggregated.ranking,
175
- consensusLevel: calculateConsensusLevel(judgeResults),
176
- bestResponse: aggregated.bestResponse,
177
- confidence: aggregated.confidence,
178
- votingStrategy: "average",
179
- // Expose unified interface fields
180
- judgeProvider: judgeResults[0]?.judgeProvider,
181
- judgeModel: `multi-judge-${judges.length}`,
182
- scores: aggregated.averageScores,
183
- ranking: aggregated.ranking,
184
- reasoning: aggregated.reasoning,
185
- confidenceInJudgment: aggregated.confidence,
186
- criteria: judges[0]?.criteria || [],
187
- judgeTime: Date.now() - startTime,
188
- timestamp: new Date().toISOString(),
189
- };
190
- logger.debug(`[${functionTag}] Multi-judge completed`, {
191
- bestResponse: multiJudgeScores.bestResponse,
192
- consensusLevel: multiJudgeScores.consensusLevel,
193
- judgeTime: multiJudgeScores.judgeTime,
194
- });
195
- return multiJudgeScores;
196
- }
197
- // ============================================================================
198
- // HELPER FUNCTIONS
199
- // ============================================================================
200
- /**
201
- * Create judge evaluation prompt
202
- * @param judge - Judge configuration
203
- * @param responses - Ensemble responses to evaluate
204
- * @param originalPrompt - Original user prompt
205
- * @param customPrompt - Custom evaluation prompt (overrides default)
206
- * @returns Formatted judge prompt
207
- */
208
- function createJudgePrompt(judge, responses, originalPrompt, customPrompt) {
209
- // If custom prompt provided, use it
210
- if (customPrompt) {
211
- logger.debug(`[${functionTag}] Using custom judge prompt`);
212
- return customPrompt;
213
- }
214
- // Build response blocks
215
- const responseBlocks = responses
216
- .map((r, index) => {
217
- const identifier = `response-${index}`;
218
- const modelInfo = judge.blindEvaluation
219
- ? `Response ${index + 1}`
220
- : `${r.provider}/${r.model}`;
221
- return `
222
- <response id="${identifier}">
223
- <model>${modelInfo}</model>
224
- <content>
225
- ${r.content}
226
- </content>
227
- </response>`;
228
- })
229
- .join("\n");
230
- const criteriaList = judge.criteria
231
- .map((c, i) => `${i + 1}. ${c}`)
232
- .join("\n");
233
- // If synthesis is enabled, judge creates improved response
234
- if (judge.synthesizeImprovedResponse) {
235
- return `You are an expert AI evaluator and synthesizer. Your task is to:
236
- 1. Evaluate all responses
237
- 2. Synthesize an IMPROVED final response that combines their strengths
238
-
239
- USER QUESTION:
240
- ${originalPrompt}
241
-
242
- RESPONSES TO EVALUATE:
243
- ${responseBlocks}
244
-
245
- EVALUATION CRITERIA:
246
- ${criteriaList}
247
-
248
- INSTRUCTIONS:
249
- 1. Score each response on a scale of 0-100 (0 = poor, 100 = excellent)
250
- 2. Consider all evaluation criteria listed above
251
- 3. Provide a ranking of responses from best to worst
252
- 4. Identify the single best response
253
- 5. Provide brief reasoning for your evaluation (max 200 characters)
254
- 6. **SYNTHESIZE an improved response** that:
255
- - Combines the best elements from all responses
256
- - Addresses any weaknesses identified in the evaluation
257
- - Maintains accuracy and technical correctness
258
- - Is more complete and higher quality than any single response
259
- - Directly answers the user's question (no meta-commentary)
260
- 7. Rate your confidence in this judgment (0.0 to 1.0)
261
-
262
- Respond in JSON format:
263
- {
264
- "scores": {
265
- "response-0": 85,
266
- "response-1": 92
267
- },
268
- "ranking": ["response-1", "response-0"],
269
- "bestResponse": "response-1",
270
- "reasoning": "Brief explanation of evaluation",
271
- "synthesizedResponse": "Your improved, synthesized response here",
272
- "confidenceInJudgment": 0.9
273
- }`;
274
- }
275
- // Standard evaluation (no synthesis)
276
- return `You are an expert AI evaluator. Evaluate the following responses to the user's question.
277
-
278
- USER QUESTION:
279
- ${originalPrompt}
280
-
281
- RESPONSES TO EVALUATE:
282
- ${responseBlocks}
283
-
284
- EVALUATION CRITERIA:
285
- ${criteriaList}
286
-
287
- INSTRUCTIONS:
288
- 1. Score each response on a scale of 0-100 (0 = poor, 100 = excellent)
289
- 2. Consider all evaluation criteria listed above
290
- 3. Provide a ranking of responses from best to worst
291
- 4. Identify the single best response
292
- 5. Provide brief reasoning for your evaluation (max 200 characters)
293
- 6. Rate your confidence in this judgment (0.0 to 1.0)
294
-
295
- Respond in JSON format:
296
- {
297
- "scores": {
298
- "response-0": 85,
299
- "response-1": 92
300
- },
301
- "ranking": ["response-1", "response-0"],
302
- "bestResponse": "response-1",
303
- "reasoning": "Brief explanation of evaluation",
304
- "confidenceInJudgment": 0.9
305
- }`;
306
- }
307
- /**
308
- * Parse judge response to extract scores
309
- * @param content - Raw judge response content
310
- * @param responses - Original ensemble responses
311
- * @param _judge - Judge configuration (unused)
312
- * @returns Parsed judge response with scores
313
- */
314
- function parseJudgeResponse(content, responses, _judge) {
315
- try {
316
- // Try to extract JSON from response
317
- const jsonMatch = content.match(/\{[\s\S]*\}/);
318
- if (!jsonMatch) {
319
- logger.warn(`[${functionTag}] No JSON found in judge response`);
320
- return createFallbackScores(responses);
321
- }
322
- const parsed = JSON.parse(jsonMatch[0]);
323
- // Validate and normalize scores to 0-100 range
324
- const scores = {};
325
- Object.keys(parsed.scores || {}).forEach((key) => {
326
- const score = Number(parsed.scores[key]);
327
- scores[key] = Math.max(0, Math.min(100, score));
328
- });
329
- // Ensure all responses have scores
330
- responses.forEach((_, index) => {
331
- const key = `response-${index}`;
332
- if (!(key in scores)) {
333
- scores[key] = 50; // Default neutral score
334
- }
335
- });
336
- return {
337
- scores,
338
- ranking: parsed.ranking || generateRankingFromScores(scores),
339
- bestResponse: parsed.bestResponse || findBestResponse(scores),
340
- reasoning: truncateReasoning(parsed.reasoning || "No reasoning provided"),
341
- synthesizedResponse: parsed.synthesizedResponse, // Extract synthesized response if present
342
- confidenceInJudgment: normalizeConfidence(parsed.confidenceInJudgment),
343
- };
344
- }
345
- catch (error) {
346
- logger.warn(`[${functionTag}] Failed to parse judge response`, {
347
- error: error.message,
348
- });
349
- return createFallbackScores(responses);
350
- }
351
- }
352
- /**
353
- * Create fallback scores when parsing fails
354
- * @param responses - Ensemble responses
355
- * @returns Default scores with equal values
356
- */
357
- function createFallbackScores(responses) {
358
- const scores = {};
359
- const ranking = [];
360
- responses.forEach((_, index) => {
361
- const key = `response-${index}`;
362
- scores[key] = 50; // Neutral score
363
- ranking.push(key);
364
- });
365
- return {
366
- scores,
367
- ranking,
368
- bestResponse: ranking[0],
369
- reasoning: "Unable to parse judge evaluation",
370
- confidenceInJudgment: 0.5,
371
- };
372
- }
373
- /**
374
- * Generate ranking from scores
375
- * @param scores - Score record
376
- * @returns Array of response IDs sorted by score descending
377
- */
378
- function generateRankingFromScores(scores) {
379
- return Object.keys(scores).sort((a, b) => scores[b] - scores[a]);
380
- }
381
- /**
382
- * Find best response from scores
383
- * @param scores - Score record
384
- * @returns Response ID with highest score
385
- */
386
- function findBestResponse(scores) {
387
- let bestId = "";
388
- let bestScore = -1;
389
- Object.keys(scores).forEach((key) => {
390
- if (scores[key] > bestScore) {
391
- bestScore = scores[key];
392
- bestId = key;
393
- }
394
- });
395
- return bestId || Object.keys(scores)[0];
396
- }
397
- /**
398
- * Truncate reasoning to max 200 characters
399
- * @param reasoning - Reasoning text
400
- * @returns Truncated reasoning
401
- */
402
- function truncateReasoning(reasoning) {
403
- if (reasoning.length <= MAX_REASONING_LENGTH) {
404
- return reasoning;
405
- }
406
- return reasoning.substring(0, MAX_REASONING_LENGTH - 3) + "...";
407
- }
408
- /**
409
- * Normalize confidence to 0-1 range
410
- * @param confidence - Confidence value
411
- * @returns Normalized confidence between 0 and 1
412
- */
413
- function normalizeConfidence(confidence) {
414
- if (typeof confidence !== "number") {
415
- return 0.5;
416
- }
417
- return Math.max(0, Math.min(1, confidence));
418
- }
419
- /**
420
- * Aggregate multiple judge scores
421
- * @param judgeResults - Array of judge score results
422
- * @param _strategy - Aggregation strategy (currently only 'average')
423
- * @returns Aggregated scores and ranking
424
- */
425
- function aggregateJudgeScores(judgeResults, _strategy) {
426
- // Collect all response IDs
427
- const responseIds = new Set();
428
- judgeResults.forEach((result) => {
429
- Object.keys(result.scores).forEach((id) => responseIds.add(id));
430
- });
431
- // Calculate average scores
432
- const averageScores = {};
433
- responseIds.forEach((id) => {
434
- const scores = judgeResults
435
- .map((result) => result.scores[id])
436
- .filter((score) => score !== undefined);
437
- if (scores.length > 0) {
438
- averageScores[id] =
439
- scores.reduce((sum, score) => sum + score, 0) / scores.length;
440
- }
441
- else {
442
- averageScores[id] = 50; // Default
443
- }
444
- });
445
- // Generate ranking from average scores
446
- const ranking = generateRankingFromScores(averageScores);
447
- const bestResponse = ranking[0];
448
- // Calculate aggregate confidence
449
- const confidences = judgeResults
450
- .map((r) => r.confidenceInJudgment || 0.5)
451
- .filter((c) => c > 0);
452
- const confidence = confidences.length > 0
453
- ? confidences.reduce((sum, c) => sum + c, 0) / confidences.length
454
- : 0.5;
455
- // Aggregate reasoning
456
- const reasoning = `Aggregated from ${judgeResults.length} judges`;
457
- return {
458
- averageScores,
459
- ranking,
460
- bestResponse,
461
- confidence,
462
- reasoning,
463
- };
464
- }
465
- /**
466
- * Calculate consensus level between judges
467
- * @param judgeResults - Array of judge score results
468
- * @returns Consensus level between 0 and 1
469
- */
470
- function calculateConsensusLevel(judgeResults) {
471
- if (judgeResults.length < 2) {
472
- return 1.0; // Perfect consensus with single judge
473
- }
474
- // Calculate agreement on best response
475
- const bestResponses = judgeResults.map((r) => r.bestResponse);
476
- const modeCounts = new Map();
477
- bestResponses.forEach((response) => {
478
- if (response) {
479
- modeCounts.set(response, (modeCounts.get(response) || 0) + 1);
480
- }
481
- });
482
- const maxCount = Math.max(...Array.from(modeCounts.values()));
483
- return maxCount / judgeResults.length;
484
- }
485
- /**
486
- * Create empty judge scores for error cases
487
- * @param judge - Judge configuration
488
- * @param responses - Ensemble responses
489
- * @returns Empty judge scores
490
- */
491
- function createEmptyJudgeScores(judge, responses) {
492
- const scores = {};
493
- responses.forEach((_, index) => {
494
- scores[`response-${index}`] = 50;
495
- });
496
- return {
497
- judgeProvider: judge.provider,
498
- judgeModel: judge.model,
499
- scores,
500
- criteria: judge.criteria,
501
- judgeTime: 0,
502
- timestamp: new Date().toISOString(),
503
- };
504
- }
505
- /**
506
- * Create empty scores for error cases
507
- * @param judge - Judge configuration
508
- * @param responses - Ensemble responses
509
- * @returns Empty judge scores
510
- */
511
- function createEmptyScores(judge, responses) {
512
- return createEmptyJudgeScores(judge, responses);
513
- }
514
- /**
515
- * Get best response from judge scores
516
- * @param scores - Judge scores or multi-judge scores
517
- * @param responses - Original ensemble responses
518
- * @returns Best ensemble response
519
- */
520
- export function getBestResponse(scores, responses) {
521
- const bestId = scores.bestResponse;
522
- if (!bestId) {
523
- return undefined;
524
- }
525
- const index = parseInt(bestId.replace("response-", ""), 10);
526
- return responses[index];
527
- }
528
- /**
529
- * Get ranked responses
530
- * @param scores - Judge scores or multi-judge scores
531
- * @param responses - Original ensemble responses
532
- * @returns Responses sorted by ranking
533
- */
534
- export function getRankedResponses(scores, responses) {
535
- if (!scores.ranking || scores.ranking.length === 0) {
536
- return responses;
537
- }
538
- return scores.ranking
539
- .map((id) => {
540
- const index = parseInt(id.replace("response-", ""), 10);
541
- return responses[index];
542
- })
543
- .filter((r) => r !== undefined);
544
- }