@juspay/neurolink 9.24.0 → 9.25.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 (219) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/adapters/tts/googleTTSHandler.js +26 -1
  3. package/dist/adapters/video/vertexVideoHandler.js +23 -17
  4. package/dist/cli/commands/config.d.ts +3 -3
  5. package/dist/cli/commands/observability.d.ts +53 -0
  6. package/dist/cli/commands/observability.js +453 -0
  7. package/dist/cli/commands/telemetry.d.ts +63 -0
  8. package/dist/cli/commands/telemetry.js +689 -0
  9. package/dist/cli/factories/commandFactory.js +29 -15
  10. package/dist/cli/parser.js +6 -9
  11. package/dist/cli/utils/formatters.d.ts +13 -0
  12. package/dist/cli/utils/formatters.js +23 -0
  13. package/dist/constants/contextWindows.js +6 -0
  14. package/dist/constants/enums.d.ts +6 -0
  15. package/dist/constants/enums.js +8 -2
  16. package/dist/context/budgetChecker.js +75 -48
  17. package/dist/context/contextCompactor.js +135 -127
  18. package/dist/core/baseProvider.d.ts +5 -0
  19. package/dist/core/baseProvider.js +117 -110
  20. package/dist/core/conversationMemoryInitializer.js +7 -4
  21. package/dist/core/conversationMemoryManager.d.ts +2 -0
  22. package/dist/core/conversationMemoryManager.js +6 -2
  23. package/dist/core/modules/GenerationHandler.d.ts +2 -2
  24. package/dist/core/modules/GenerationHandler.js +12 -12
  25. package/dist/evaluation/ragasEvaluator.js +39 -19
  26. package/dist/evaluation/scoring.js +46 -20
  27. package/dist/features/ppt/presentationOrchestrator.js +23 -0
  28. package/dist/features/ppt/slideGenerator.js +13 -0
  29. package/dist/features/ppt/slideRenderers.d.ts +1 -1
  30. package/dist/features/ppt/slideRenderers.js +6 -4
  31. package/dist/features/ppt/slideTypeInference.d.ts +1 -1
  32. package/dist/features/ppt/slideTypeInference.js +75 -73
  33. package/dist/files/fileTools.d.ts +6 -6
  34. package/dist/index.d.ts +46 -12
  35. package/dist/index.js +79 -17
  36. package/dist/lib/adapters/tts/googleTTSHandler.js +26 -1
  37. package/dist/lib/adapters/video/vertexVideoHandler.js +23 -17
  38. package/dist/lib/constants/contextWindows.js +6 -0
  39. package/dist/lib/constants/enums.d.ts +6 -0
  40. package/dist/lib/constants/enums.js +8 -2
  41. package/dist/lib/context/budgetChecker.js +75 -48
  42. package/dist/lib/context/contextCompactor.js +135 -127
  43. package/dist/lib/core/baseProvider.d.ts +5 -0
  44. package/dist/lib/core/baseProvider.js +117 -110
  45. package/dist/lib/core/conversationMemoryInitializer.js +7 -4
  46. package/dist/lib/core/conversationMemoryManager.d.ts +2 -0
  47. package/dist/lib/core/conversationMemoryManager.js +6 -2
  48. package/dist/lib/core/modules/GenerationHandler.d.ts +2 -2
  49. package/dist/lib/core/modules/GenerationHandler.js +12 -12
  50. package/dist/lib/evaluation/ragasEvaluator.js +39 -19
  51. package/dist/lib/evaluation/scoring.js +46 -20
  52. package/dist/lib/features/ppt/presentationOrchestrator.js +23 -0
  53. package/dist/lib/features/ppt/slideGenerator.js +13 -0
  54. package/dist/lib/features/ppt/slideRenderers.d.ts +1 -1
  55. package/dist/lib/features/ppt/slideRenderers.js +6 -4
  56. package/dist/lib/features/ppt/slideTypeInference.d.ts +1 -1
  57. package/dist/lib/features/ppt/slideTypeInference.js +75 -73
  58. package/dist/lib/files/fileTools.d.ts +6 -6
  59. package/dist/lib/index.d.ts +46 -12
  60. package/dist/lib/index.js +79 -17
  61. package/dist/lib/mcp/httpRateLimiter.js +39 -12
  62. package/dist/lib/mcp/httpRetryHandler.js +22 -1
  63. package/dist/lib/mcp/mcpClientFactory.js +13 -15
  64. package/dist/lib/memory/memoryRetrievalTools.js +22 -0
  65. package/dist/lib/neurolink.d.ts +64 -72
  66. package/dist/lib/neurolink.js +1007 -564
  67. package/dist/lib/observability/exporterRegistry.d.ts +152 -0
  68. package/dist/lib/observability/exporterRegistry.js +414 -0
  69. package/dist/lib/observability/exporters/arizeExporter.d.ts +32 -0
  70. package/dist/lib/observability/exporters/arizeExporter.js +139 -0
  71. package/dist/lib/observability/exporters/baseExporter.d.ts +117 -0
  72. package/dist/lib/observability/exporters/baseExporter.js +191 -0
  73. package/dist/lib/observability/exporters/braintrustExporter.d.ts +30 -0
  74. package/dist/lib/observability/exporters/braintrustExporter.js +155 -0
  75. package/dist/lib/observability/exporters/datadogExporter.d.ts +37 -0
  76. package/dist/lib/observability/exporters/datadogExporter.js +197 -0
  77. package/dist/lib/observability/exporters/index.d.ts +13 -0
  78. package/dist/lib/observability/exporters/index.js +14 -0
  79. package/dist/lib/observability/exporters/laminarExporter.d.ts +48 -0
  80. package/dist/lib/observability/exporters/laminarExporter.js +303 -0
  81. package/dist/lib/observability/exporters/langfuseExporter.d.ts +47 -0
  82. package/dist/lib/observability/exporters/langfuseExporter.js +204 -0
  83. package/dist/lib/observability/exporters/langsmithExporter.d.ts +26 -0
  84. package/dist/lib/observability/exporters/langsmithExporter.js +124 -0
  85. package/dist/lib/observability/exporters/otelExporter.d.ts +39 -0
  86. package/dist/lib/observability/exporters/otelExporter.js +165 -0
  87. package/dist/lib/observability/exporters/posthogExporter.d.ts +48 -0
  88. package/dist/lib/observability/exporters/posthogExporter.js +288 -0
  89. package/dist/lib/observability/exporters/sentryExporter.d.ts +32 -0
  90. package/dist/lib/observability/exporters/sentryExporter.js +166 -0
  91. package/dist/lib/observability/index.d.ts +25 -0
  92. package/dist/lib/observability/index.js +32 -0
  93. package/dist/lib/observability/metricsAggregator.d.ts +260 -0
  94. package/dist/lib/observability/metricsAggregator.js +557 -0
  95. package/dist/lib/observability/otelBridge.d.ts +49 -0
  96. package/dist/lib/observability/otelBridge.js +132 -0
  97. package/dist/lib/observability/retryPolicy.d.ts +192 -0
  98. package/dist/lib/observability/retryPolicy.js +384 -0
  99. package/dist/lib/observability/sampling/index.d.ts +4 -0
  100. package/dist/lib/observability/sampling/index.js +5 -0
  101. package/dist/lib/observability/sampling/samplers.d.ts +116 -0
  102. package/dist/lib/observability/sampling/samplers.js +217 -0
  103. package/dist/lib/observability/spanProcessor.d.ts +129 -0
  104. package/dist/lib/observability/spanProcessor.js +304 -0
  105. package/dist/lib/observability/tokenTracker.d.ts +156 -0
  106. package/dist/lib/observability/tokenTracker.js +414 -0
  107. package/dist/lib/observability/types/exporterTypes.d.ts +250 -0
  108. package/dist/lib/observability/types/exporterTypes.js +6 -0
  109. package/dist/lib/observability/types/index.d.ts +6 -0
  110. package/dist/lib/observability/types/index.js +5 -0
  111. package/dist/lib/observability/types/spanTypes.d.ts +244 -0
  112. package/dist/lib/observability/types/spanTypes.js +93 -0
  113. package/dist/lib/observability/utils/index.d.ts +4 -0
  114. package/dist/lib/observability/utils/index.js +5 -0
  115. package/dist/lib/observability/utils/safeMetadata.d.ts +10 -0
  116. package/dist/lib/observability/utils/safeMetadata.js +26 -0
  117. package/dist/lib/observability/utils/spanSerializer.d.ts +115 -0
  118. package/dist/lib/observability/utils/spanSerializer.js +291 -0
  119. package/dist/lib/providers/amazonSagemaker.d.ts +5 -4
  120. package/dist/lib/providers/amazonSagemaker.js +3 -4
  121. package/dist/lib/providers/googleVertex.d.ts +7 -0
  122. package/dist/lib/providers/googleVertex.js +76 -2
  123. package/dist/lib/rag/pipeline/RAGPipeline.d.ts +0 -5
  124. package/dist/lib/rag/pipeline/RAGPipeline.js +122 -87
  125. package/dist/lib/rag/ragIntegration.js +30 -0
  126. package/dist/lib/rag/retrieval/hybridSearch.js +22 -0
  127. package/dist/lib/server/abstract/baseServerAdapter.js +51 -19
  128. package/dist/lib/server/middleware/common.js +44 -12
  129. package/dist/lib/services/server/ai/observability/instrumentation.d.ts +2 -2
  130. package/dist/lib/services/server/ai/observability/instrumentation.js +10 -5
  131. package/dist/lib/types/conversationMemoryInterface.d.ts +2 -0
  132. package/dist/lib/types/modelTypes.d.ts +18 -18
  133. package/dist/lib/types/providers.d.ts +5 -0
  134. package/dist/lib/utils/pricing.js +25 -1
  135. package/dist/lib/utils/ttsProcessor.js +74 -59
  136. package/dist/lib/workflow/config.d.ts +36 -36
  137. package/dist/lib/workflow/core/ensembleExecutor.js +10 -0
  138. package/dist/lib/workflow/core/judgeScorer.js +20 -2
  139. package/dist/lib/workflow/core/workflowRunner.js +34 -1
  140. package/dist/mcp/httpRateLimiter.js +39 -12
  141. package/dist/mcp/httpRetryHandler.js +22 -1
  142. package/dist/mcp/mcpClientFactory.js +13 -15
  143. package/dist/memory/memoryRetrievalTools.js +22 -0
  144. package/dist/neurolink.d.ts +64 -72
  145. package/dist/neurolink.js +1007 -564
  146. package/dist/observability/FEATURE-STATUS.md +269 -0
  147. package/dist/observability/exporterRegistry.d.ts +152 -0
  148. package/dist/observability/exporterRegistry.js +413 -0
  149. package/dist/observability/exporters/arizeExporter.d.ts +32 -0
  150. package/dist/observability/exporters/arizeExporter.js +138 -0
  151. package/dist/observability/exporters/baseExporter.d.ts +117 -0
  152. package/dist/observability/exporters/baseExporter.js +190 -0
  153. package/dist/observability/exporters/braintrustExporter.d.ts +30 -0
  154. package/dist/observability/exporters/braintrustExporter.js +154 -0
  155. package/dist/observability/exporters/datadogExporter.d.ts +37 -0
  156. package/dist/observability/exporters/datadogExporter.js +196 -0
  157. package/dist/observability/exporters/index.d.ts +13 -0
  158. package/dist/observability/exporters/index.js +13 -0
  159. package/dist/observability/exporters/laminarExporter.d.ts +48 -0
  160. package/dist/observability/exporters/laminarExporter.js +302 -0
  161. package/dist/observability/exporters/langfuseExporter.d.ts +47 -0
  162. package/dist/observability/exporters/langfuseExporter.js +203 -0
  163. package/dist/observability/exporters/langsmithExporter.d.ts +26 -0
  164. package/dist/observability/exporters/langsmithExporter.js +123 -0
  165. package/dist/observability/exporters/otelExporter.d.ts +39 -0
  166. package/dist/observability/exporters/otelExporter.js +164 -0
  167. package/dist/observability/exporters/posthogExporter.d.ts +48 -0
  168. package/dist/observability/exporters/posthogExporter.js +287 -0
  169. package/dist/observability/exporters/sentryExporter.d.ts +32 -0
  170. package/dist/observability/exporters/sentryExporter.js +165 -0
  171. package/dist/observability/index.d.ts +25 -0
  172. package/dist/observability/index.js +31 -0
  173. package/dist/observability/metricsAggregator.d.ts +260 -0
  174. package/dist/observability/metricsAggregator.js +556 -0
  175. package/dist/observability/otelBridge.d.ts +49 -0
  176. package/dist/observability/otelBridge.js +131 -0
  177. package/dist/observability/retryPolicy.d.ts +192 -0
  178. package/dist/observability/retryPolicy.js +383 -0
  179. package/dist/observability/sampling/index.d.ts +4 -0
  180. package/dist/observability/sampling/index.js +4 -0
  181. package/dist/observability/sampling/samplers.d.ts +116 -0
  182. package/dist/observability/sampling/samplers.js +216 -0
  183. package/dist/observability/spanProcessor.d.ts +129 -0
  184. package/dist/observability/spanProcessor.js +303 -0
  185. package/dist/observability/tokenTracker.d.ts +156 -0
  186. package/dist/observability/tokenTracker.js +413 -0
  187. package/dist/observability/types/exporterTypes.d.ts +250 -0
  188. package/dist/observability/types/exporterTypes.js +5 -0
  189. package/dist/observability/types/index.d.ts +6 -0
  190. package/dist/observability/types/index.js +4 -0
  191. package/dist/observability/types/spanTypes.d.ts +244 -0
  192. package/dist/observability/types/spanTypes.js +92 -0
  193. package/dist/observability/utils/index.d.ts +4 -0
  194. package/dist/observability/utils/index.js +4 -0
  195. package/dist/observability/utils/safeMetadata.d.ts +10 -0
  196. package/dist/observability/utils/safeMetadata.js +25 -0
  197. package/dist/observability/utils/spanSerializer.d.ts +115 -0
  198. package/dist/observability/utils/spanSerializer.js +290 -0
  199. package/dist/providers/amazonSagemaker.d.ts +5 -4
  200. package/dist/providers/amazonSagemaker.js +3 -4
  201. package/dist/providers/googleVertex.d.ts +7 -0
  202. package/dist/providers/googleVertex.js +76 -2
  203. package/dist/rag/pipeline/RAGPipeline.d.ts +0 -5
  204. package/dist/rag/pipeline/RAGPipeline.js +122 -87
  205. package/dist/rag/ragIntegration.js +30 -0
  206. package/dist/rag/retrieval/hybridSearch.js +22 -0
  207. package/dist/server/abstract/baseServerAdapter.js +51 -19
  208. package/dist/server/middleware/common.js +44 -12
  209. package/dist/services/server/ai/observability/instrumentation.d.ts +2 -2
  210. package/dist/services/server/ai/observability/instrumentation.js +10 -5
  211. package/dist/types/conversationMemoryInterface.d.ts +2 -0
  212. package/dist/types/providers.d.ts +5 -0
  213. package/dist/utils/pricing.js +25 -1
  214. package/dist/utils/ttsProcessor.js +74 -59
  215. package/dist/workflow/config.d.ts +52 -52
  216. package/dist/workflow/core/ensembleExecutor.js +10 -0
  217. package/dist/workflow/core/judgeScorer.js +20 -2
  218. package/dist/workflow/core/workflowRunner.js +34 -1
  219. package/package.json +1 -1
@@ -35,6 +35,7 @@ export declare const ModelConfigSchema: z.ZodObject<{
35
35
  provider: AIProviderName;
36
36
  model: string;
37
37
  timeout?: number | undefined;
38
+ weight?: number | undefined;
38
39
  metadata?: Record<string, JsonValue> | undefined;
39
40
  topK?: number | undefined;
40
41
  temperature?: number | undefined;
@@ -43,12 +44,12 @@ export declare const ModelConfigSchema: z.ZodObject<{
43
44
  topP?: number | undefined;
44
45
  presencePenalty?: number | undefined;
45
46
  frequencyPenalty?: number | undefined;
46
- weight?: number | undefined;
47
47
  label?: string | undefined;
48
48
  }, {
49
49
  provider: string;
50
50
  model: string;
51
51
  timeout?: number | undefined;
52
+ weight?: number | undefined;
52
53
  metadata?: Record<string, JsonValue> | undefined;
53
54
  topK?: number | undefined;
54
55
  temperature?: number | undefined;
@@ -57,7 +58,6 @@ export declare const ModelConfigSchema: z.ZodObject<{
57
58
  topP?: number | undefined;
58
59
  presencePenalty?: number | undefined;
59
60
  frequencyPenalty?: number | undefined;
60
- weight?: number | undefined;
61
61
  label?: string | undefined;
62
62
  }>;
63
63
  /**
@@ -204,6 +204,7 @@ export declare const ModelGroupSchema: z.ZodObject<{
204
204
  provider: AIProviderName;
205
205
  model: string;
206
206
  timeout?: number | undefined;
207
+ weight?: number | undefined;
207
208
  metadata?: Record<string, JsonValue> | undefined;
208
209
  topK?: number | undefined;
209
210
  temperature?: number | undefined;
@@ -212,12 +213,12 @@ export declare const ModelGroupSchema: z.ZodObject<{
212
213
  topP?: number | undefined;
213
214
  presencePenalty?: number | undefined;
214
215
  frequencyPenalty?: number | undefined;
215
- weight?: number | undefined;
216
216
  label?: string | undefined;
217
217
  }, {
218
218
  provider: string;
219
219
  model: string;
220
220
  timeout?: number | undefined;
221
+ weight?: number | undefined;
221
222
  metadata?: Record<string, JsonValue> | undefined;
222
223
  topK?: number | undefined;
223
224
  temperature?: number | undefined;
@@ -226,7 +227,6 @@ export declare const ModelGroupSchema: z.ZodObject<{
226
227
  topP?: number | undefined;
227
228
  presencePenalty?: number | undefined;
228
229
  frequencyPenalty?: number | undefined;
229
- weight?: number | undefined;
230
230
  label?: string | undefined;
231
231
  }>, "many">;
232
232
  executionStrategy: z.ZodEnum<["parallel", "sequential"]>;
@@ -241,6 +241,7 @@ export declare const ModelGroupSchema: z.ZodObject<{
241
241
  provider: AIProviderName;
242
242
  model: string;
243
243
  timeout?: number | undefined;
244
+ weight?: number | undefined;
244
245
  metadata?: Record<string, JsonValue> | undefined;
245
246
  topK?: number | undefined;
246
247
  temperature?: number | undefined;
@@ -249,16 +250,15 @@ export declare const ModelGroupSchema: z.ZodObject<{
249
250
  topP?: number | undefined;
250
251
  presencePenalty?: number | undefined;
251
252
  frequencyPenalty?: number | undefined;
252
- weight?: number | undefined;
253
253
  label?: string | undefined;
254
254
  }[];
255
255
  executionStrategy: "parallel" | "sequential";
256
256
  continueOnFailure: boolean;
257
257
  minSuccessful: number;
258
258
  timeout?: number | undefined;
259
- description?: string | undefined;
260
259
  name?: string | undefined;
261
260
  metadata?: Record<string, JsonValue> | undefined;
261
+ description?: string | undefined;
262
262
  parallelism?: number | undefined;
263
263
  }, {
264
264
  id: string;
@@ -266,6 +266,7 @@ export declare const ModelGroupSchema: z.ZodObject<{
266
266
  provider: string;
267
267
  model: string;
268
268
  timeout?: number | undefined;
269
+ weight?: number | undefined;
269
270
  metadata?: Record<string, JsonValue> | undefined;
270
271
  topK?: number | undefined;
271
272
  temperature?: number | undefined;
@@ -274,14 +275,13 @@ export declare const ModelGroupSchema: z.ZodObject<{
274
275
  topP?: number | undefined;
275
276
  presencePenalty?: number | undefined;
276
277
  frequencyPenalty?: number | undefined;
277
- weight?: number | undefined;
278
278
  label?: string | undefined;
279
279
  }[];
280
280
  executionStrategy: "parallel" | "sequential";
281
281
  timeout?: number | undefined;
282
- description?: string | undefined;
283
282
  name?: string | undefined;
284
283
  metadata?: Record<string, JsonValue> | undefined;
284
+ description?: string | undefined;
285
285
  continueOnFailure?: boolean | undefined;
286
286
  minSuccessful?: number | undefined;
287
287
  parallelism?: number | undefined;
@@ -359,6 +359,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
359
359
  provider: AIProviderName;
360
360
  model: string;
361
361
  timeout?: number | undefined;
362
+ weight?: number | undefined;
362
363
  metadata?: Record<string, JsonValue> | undefined;
363
364
  topK?: number | undefined;
364
365
  temperature?: number | undefined;
@@ -367,12 +368,12 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
367
368
  topP?: number | undefined;
368
369
  presencePenalty?: number | undefined;
369
370
  frequencyPenalty?: number | undefined;
370
- weight?: number | undefined;
371
371
  label?: string | undefined;
372
372
  }, {
373
373
  provider: string;
374
374
  model: string;
375
375
  timeout?: number | undefined;
376
+ weight?: number | undefined;
376
377
  metadata?: Record<string, JsonValue> | undefined;
377
378
  topK?: number | undefined;
378
379
  temperature?: number | undefined;
@@ -381,7 +382,6 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
381
382
  topP?: number | undefined;
382
383
  presencePenalty?: number | undefined;
383
384
  frequencyPenalty?: number | undefined;
384
- weight?: number | undefined;
385
385
  label?: string | undefined;
386
386
  }>, "many">;
387
387
  modelGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -406,6 +406,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
406
406
  provider: AIProviderName;
407
407
  model: string;
408
408
  timeout?: number | undefined;
409
+ weight?: number | undefined;
409
410
  metadata?: Record<string, JsonValue> | undefined;
410
411
  topK?: number | undefined;
411
412
  temperature?: number | undefined;
@@ -414,12 +415,12 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
414
415
  topP?: number | undefined;
415
416
  presencePenalty?: number | undefined;
416
417
  frequencyPenalty?: number | undefined;
417
- weight?: number | undefined;
418
418
  label?: string | undefined;
419
419
  }, {
420
420
  provider: string;
421
421
  model: string;
422
422
  timeout?: number | undefined;
423
+ weight?: number | undefined;
423
424
  metadata?: Record<string, JsonValue> | undefined;
424
425
  topK?: number | undefined;
425
426
  temperature?: number | undefined;
@@ -428,7 +429,6 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
428
429
  topP?: number | undefined;
429
430
  presencePenalty?: number | undefined;
430
431
  frequencyPenalty?: number | undefined;
431
- weight?: number | undefined;
432
432
  label?: string | undefined;
433
433
  }>, "many">;
434
434
  executionStrategy: z.ZodEnum<["parallel", "sequential"]>;
@@ -443,6 +443,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
443
443
  provider: AIProviderName;
444
444
  model: string;
445
445
  timeout?: number | undefined;
446
+ weight?: number | undefined;
446
447
  metadata?: Record<string, JsonValue> | undefined;
447
448
  topK?: number | undefined;
448
449
  temperature?: number | undefined;
@@ -451,16 +452,15 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
451
452
  topP?: number | undefined;
452
453
  presencePenalty?: number | undefined;
453
454
  frequencyPenalty?: number | undefined;
454
- weight?: number | undefined;
455
455
  label?: string | undefined;
456
456
  }[];
457
457
  executionStrategy: "parallel" | "sequential";
458
458
  continueOnFailure: boolean;
459
459
  minSuccessful: number;
460
460
  timeout?: number | undefined;
461
- description?: string | undefined;
462
461
  name?: string | undefined;
463
462
  metadata?: Record<string, JsonValue> | undefined;
463
+ description?: string | undefined;
464
464
  parallelism?: number | undefined;
465
465
  }, {
466
466
  id: string;
@@ -468,6 +468,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
468
468
  provider: string;
469
469
  model: string;
470
470
  timeout?: number | undefined;
471
+ weight?: number | undefined;
471
472
  metadata?: Record<string, JsonValue> | undefined;
472
473
  topK?: number | undefined;
473
474
  temperature?: number | undefined;
@@ -476,14 +477,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
476
477
  topP?: number | undefined;
477
478
  presencePenalty?: number | undefined;
478
479
  frequencyPenalty?: number | undefined;
479
- weight?: number | undefined;
480
480
  label?: string | undefined;
481
481
  }[];
482
482
  executionStrategy: "parallel" | "sequential";
483
483
  timeout?: number | undefined;
484
- description?: string | undefined;
485
484
  name?: string | undefined;
486
485
  metadata?: Record<string, JsonValue> | undefined;
486
+ description?: string | undefined;
487
487
  continueOnFailure?: boolean | undefined;
488
488
  minSuccessful?: number | undefined;
489
489
  parallelism?: number | undefined;
@@ -714,12 +714,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
714
714
  createdAt: z.ZodOptional<z.ZodString>;
715
715
  updatedAt: z.ZodOptional<z.ZodString>;
716
716
  }, "strip", z.ZodTypeAny, {
717
- type: "custom" | "ensemble" | "chain" | "adaptive";
717
+ type: "custom" | "chain" | "ensemble" | "adaptive";
718
718
  id: string;
719
719
  models: {
720
720
  provider: AIProviderName;
721
721
  model: string;
722
722
  timeout?: number | undefined;
723
+ weight?: number | undefined;
723
724
  metadata?: Record<string, JsonValue> | undefined;
724
725
  topK?: number | undefined;
725
726
  temperature?: number | undefined;
@@ -728,7 +729,6 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
728
729
  topP?: number | undefined;
729
730
  presencePenalty?: number | undefined;
730
731
  frequencyPenalty?: number | undefined;
731
- weight?: number | undefined;
732
732
  label?: string | undefined;
733
733
  }[];
734
734
  name: string;
@@ -749,11 +749,11 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
749
749
  enableTracing?: boolean | undefined;
750
750
  } | undefined;
751
751
  version?: string | undefined;
752
- description?: string | undefined;
752
+ tags?: string[] | undefined;
753
753
  metadata?: Record<string, JsonValue> | undefined;
754
+ description?: string | undefined;
754
755
  createdAt?: string | undefined;
755
756
  updatedAt?: string | undefined;
756
- tags?: string[] | undefined;
757
757
  judge?: {
758
758
  provider: AIProviderName;
759
759
  model: string;
@@ -794,6 +794,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
794
794
  provider: AIProviderName;
795
795
  model: string;
796
796
  timeout?: number | undefined;
797
+ weight?: number | undefined;
797
798
  metadata?: Record<string, JsonValue> | undefined;
798
799
  topK?: number | undefined;
799
800
  temperature?: number | undefined;
@@ -802,16 +803,15 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
802
803
  topP?: number | undefined;
803
804
  presencePenalty?: number | undefined;
804
805
  frequencyPenalty?: number | undefined;
805
- weight?: number | undefined;
806
806
  label?: string | undefined;
807
807
  }[];
808
808
  executionStrategy: "parallel" | "sequential";
809
809
  continueOnFailure: boolean;
810
810
  minSuccessful: number;
811
811
  timeout?: number | undefined;
812
- description?: string | undefined;
813
812
  name?: string | undefined;
814
813
  metadata?: Record<string, JsonValue> | undefined;
814
+ description?: string | undefined;
815
815
  parallelism?: number | undefined;
816
816
  }[] | undefined;
817
817
  defaultSystemPrompt?: string | undefined;
@@ -836,12 +836,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
836
836
  blindEvaluation?: boolean | undefined;
837
837
  }[] | undefined;
838
838
  }, {
839
- type: "custom" | "ensemble" | "chain" | "adaptive";
839
+ type: "custom" | "chain" | "ensemble" | "adaptive";
840
840
  id: string;
841
841
  models: {
842
842
  provider: string;
843
843
  model: string;
844
844
  timeout?: number | undefined;
845
+ weight?: number | undefined;
845
846
  metadata?: Record<string, JsonValue> | undefined;
846
847
  topK?: number | undefined;
847
848
  temperature?: number | undefined;
@@ -850,7 +851,6 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
850
851
  topP?: number | undefined;
851
852
  presencePenalty?: number | undefined;
852
853
  frequencyPenalty?: number | undefined;
853
- weight?: number | undefined;
854
854
  label?: string | undefined;
855
855
  }[];
856
856
  name: string;
@@ -871,11 +871,11 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
871
871
  enableTracing?: boolean | undefined;
872
872
  } | undefined;
873
873
  version?: string | undefined;
874
- description?: string | undefined;
874
+ tags?: string[] | undefined;
875
875
  metadata?: Record<string, JsonValue> | undefined;
876
+ description?: string | undefined;
876
877
  createdAt?: string | undefined;
877
878
  updatedAt?: string | undefined;
878
- tags?: string[] | undefined;
879
879
  judge?: {
880
880
  provider: string;
881
881
  model: string;
@@ -916,6 +916,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
916
916
  provider: string;
917
917
  model: string;
918
918
  timeout?: number | undefined;
919
+ weight?: number | undefined;
919
920
  metadata?: Record<string, JsonValue> | undefined;
920
921
  topK?: number | undefined;
921
922
  temperature?: number | undefined;
@@ -924,14 +925,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
924
925
  topP?: number | undefined;
925
926
  presencePenalty?: number | undefined;
926
927
  frequencyPenalty?: number | undefined;
927
- weight?: number | undefined;
928
928
  label?: string | undefined;
929
929
  }[];
930
930
  executionStrategy: "parallel" | "sequential";
931
931
  timeout?: number | undefined;
932
- description?: string | undefined;
933
932
  name?: string | undefined;
934
933
  metadata?: Record<string, JsonValue> | undefined;
934
+ description?: string | undefined;
935
935
  continueOnFailure?: boolean | undefined;
936
936
  minSuccessful?: number | undefined;
937
937
  parallelism?: number | undefined;
@@ -958,12 +958,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
958
958
  blindEvaluation?: boolean | undefined;
959
959
  }[] | undefined;
960
960
  }>, {
961
- type: "custom" | "ensemble" | "chain" | "adaptive";
961
+ type: "custom" | "chain" | "ensemble" | "adaptive";
962
962
  id: string;
963
963
  models: {
964
964
  provider: AIProviderName;
965
965
  model: string;
966
966
  timeout?: number | undefined;
967
+ weight?: number | undefined;
967
968
  metadata?: Record<string, JsonValue> | undefined;
968
969
  topK?: number | undefined;
969
970
  temperature?: number | undefined;
@@ -972,7 +973,6 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
972
973
  topP?: number | undefined;
973
974
  presencePenalty?: number | undefined;
974
975
  frequencyPenalty?: number | undefined;
975
- weight?: number | undefined;
976
976
  label?: string | undefined;
977
977
  }[];
978
978
  name: string;
@@ -993,11 +993,11 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
993
993
  enableTracing?: boolean | undefined;
994
994
  } | undefined;
995
995
  version?: string | undefined;
996
- description?: string | undefined;
996
+ tags?: string[] | undefined;
997
997
  metadata?: Record<string, JsonValue> | undefined;
998
+ description?: string | undefined;
998
999
  createdAt?: string | undefined;
999
1000
  updatedAt?: string | undefined;
1000
- tags?: string[] | undefined;
1001
1001
  judge?: {
1002
1002
  provider: AIProviderName;
1003
1003
  model: string;
@@ -1038,6 +1038,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1038
1038
  provider: AIProviderName;
1039
1039
  model: string;
1040
1040
  timeout?: number | undefined;
1041
+ weight?: number | undefined;
1041
1042
  metadata?: Record<string, JsonValue> | undefined;
1042
1043
  topK?: number | undefined;
1043
1044
  temperature?: number | undefined;
@@ -1046,16 +1047,15 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1046
1047
  topP?: number | undefined;
1047
1048
  presencePenalty?: number | undefined;
1048
1049
  frequencyPenalty?: number | undefined;
1049
- weight?: number | undefined;
1050
1050
  label?: string | undefined;
1051
1051
  }[];
1052
1052
  executionStrategy: "parallel" | "sequential";
1053
1053
  continueOnFailure: boolean;
1054
1054
  minSuccessful: number;
1055
1055
  timeout?: number | undefined;
1056
- description?: string | undefined;
1057
1056
  name?: string | undefined;
1058
1057
  metadata?: Record<string, JsonValue> | undefined;
1058
+ description?: string | undefined;
1059
1059
  parallelism?: number | undefined;
1060
1060
  }[] | undefined;
1061
1061
  defaultSystemPrompt?: string | undefined;
@@ -1080,12 +1080,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1080
1080
  blindEvaluation?: boolean | undefined;
1081
1081
  }[] | undefined;
1082
1082
  }, {
1083
- type: "custom" | "ensemble" | "chain" | "adaptive";
1083
+ type: "custom" | "chain" | "ensemble" | "adaptive";
1084
1084
  id: string;
1085
1085
  models: {
1086
1086
  provider: string;
1087
1087
  model: string;
1088
1088
  timeout?: number | undefined;
1089
+ weight?: number | undefined;
1089
1090
  metadata?: Record<string, JsonValue> | undefined;
1090
1091
  topK?: number | undefined;
1091
1092
  temperature?: number | undefined;
@@ -1094,7 +1095,6 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1094
1095
  topP?: number | undefined;
1095
1096
  presencePenalty?: number | undefined;
1096
1097
  frequencyPenalty?: number | undefined;
1097
- weight?: number | undefined;
1098
1098
  label?: string | undefined;
1099
1099
  }[];
1100
1100
  name: string;
@@ -1115,11 +1115,11 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1115
1115
  enableTracing?: boolean | undefined;
1116
1116
  } | undefined;
1117
1117
  version?: string | undefined;
1118
- description?: string | undefined;
1118
+ tags?: string[] | undefined;
1119
1119
  metadata?: Record<string, JsonValue> | undefined;
1120
+ description?: string | undefined;
1120
1121
  createdAt?: string | undefined;
1121
1122
  updatedAt?: string | undefined;
1122
- tags?: string[] | undefined;
1123
1123
  judge?: {
1124
1124
  provider: string;
1125
1125
  model: string;
@@ -1160,6 +1160,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1160
1160
  provider: string;
1161
1161
  model: string;
1162
1162
  timeout?: number | undefined;
1163
+ weight?: number | undefined;
1163
1164
  metadata?: Record<string, JsonValue> | undefined;
1164
1165
  topK?: number | undefined;
1165
1166
  temperature?: number | undefined;
@@ -1168,14 +1169,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1168
1169
  topP?: number | undefined;
1169
1170
  presencePenalty?: number | undefined;
1170
1171
  frequencyPenalty?: number | undefined;
1171
- weight?: number | undefined;
1172
1172
  label?: string | undefined;
1173
1173
  }[];
1174
1174
  executionStrategy: "parallel" | "sequential";
1175
1175
  timeout?: number | undefined;
1176
- description?: string | undefined;
1177
1176
  name?: string | undefined;
1178
1177
  metadata?: Record<string, JsonValue> | undefined;
1178
+ description?: string | undefined;
1179
1179
  continueOnFailure?: boolean | undefined;
1180
1180
  minSuccessful?: number | undefined;
1181
1181
  parallelism?: number | undefined;
@@ -1202,12 +1202,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1202
1202
  blindEvaluation?: boolean | undefined;
1203
1203
  }[] | undefined;
1204
1204
  }>, {
1205
- type: "custom" | "ensemble" | "chain" | "adaptive";
1205
+ type: "custom" | "chain" | "ensemble" | "adaptive";
1206
1206
  id: string;
1207
1207
  models: {
1208
1208
  provider: AIProviderName;
1209
1209
  model: string;
1210
1210
  timeout?: number | undefined;
1211
+ weight?: number | undefined;
1211
1212
  metadata?: Record<string, JsonValue> | undefined;
1212
1213
  topK?: number | undefined;
1213
1214
  temperature?: number | undefined;
@@ -1216,7 +1217,6 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1216
1217
  topP?: number | undefined;
1217
1218
  presencePenalty?: number | undefined;
1218
1219
  frequencyPenalty?: number | undefined;
1219
- weight?: number | undefined;
1220
1220
  label?: string | undefined;
1221
1221
  }[];
1222
1222
  name: string;
@@ -1237,11 +1237,11 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1237
1237
  enableTracing?: boolean | undefined;
1238
1238
  } | undefined;
1239
1239
  version?: string | undefined;
1240
- description?: string | undefined;
1240
+ tags?: string[] | undefined;
1241
1241
  metadata?: Record<string, JsonValue> | undefined;
1242
+ description?: string | undefined;
1242
1243
  createdAt?: string | undefined;
1243
1244
  updatedAt?: string | undefined;
1244
- tags?: string[] | undefined;
1245
1245
  judge?: {
1246
1246
  provider: AIProviderName;
1247
1247
  model: string;
@@ -1282,6 +1282,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1282
1282
  provider: AIProviderName;
1283
1283
  model: string;
1284
1284
  timeout?: number | undefined;
1285
+ weight?: number | undefined;
1285
1286
  metadata?: Record<string, JsonValue> | undefined;
1286
1287
  topK?: number | undefined;
1287
1288
  temperature?: number | undefined;
@@ -1290,16 +1291,15 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1290
1291
  topP?: number | undefined;
1291
1292
  presencePenalty?: number | undefined;
1292
1293
  frequencyPenalty?: number | undefined;
1293
- weight?: number | undefined;
1294
1294
  label?: string | undefined;
1295
1295
  }[];
1296
1296
  executionStrategy: "parallel" | "sequential";
1297
1297
  continueOnFailure: boolean;
1298
1298
  minSuccessful: number;
1299
1299
  timeout?: number | undefined;
1300
- description?: string | undefined;
1301
1300
  name?: string | undefined;
1302
1301
  metadata?: Record<string, JsonValue> | undefined;
1302
+ description?: string | undefined;
1303
1303
  parallelism?: number | undefined;
1304
1304
  }[] | undefined;
1305
1305
  defaultSystemPrompt?: string | undefined;
@@ -1324,12 +1324,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1324
1324
  blindEvaluation?: boolean | undefined;
1325
1325
  }[] | undefined;
1326
1326
  }, {
1327
- type: "custom" | "ensemble" | "chain" | "adaptive";
1327
+ type: "custom" | "chain" | "ensemble" | "adaptive";
1328
1328
  id: string;
1329
1329
  models: {
1330
1330
  provider: string;
1331
1331
  model: string;
1332
1332
  timeout?: number | undefined;
1333
+ weight?: number | undefined;
1333
1334
  metadata?: Record<string, JsonValue> | undefined;
1334
1335
  topK?: number | undefined;
1335
1336
  temperature?: number | undefined;
@@ -1338,7 +1339,6 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1338
1339
  topP?: number | undefined;
1339
1340
  presencePenalty?: number | undefined;
1340
1341
  frequencyPenalty?: number | undefined;
1341
- weight?: number | undefined;
1342
1342
  label?: string | undefined;
1343
1343
  }[];
1344
1344
  name: string;
@@ -1359,11 +1359,11 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1359
1359
  enableTracing?: boolean | undefined;
1360
1360
  } | undefined;
1361
1361
  version?: string | undefined;
1362
- description?: string | undefined;
1362
+ tags?: string[] | undefined;
1363
1363
  metadata?: Record<string, JsonValue> | undefined;
1364
+ description?: string | undefined;
1364
1365
  createdAt?: string | undefined;
1365
1366
  updatedAt?: string | undefined;
1366
- tags?: string[] | undefined;
1367
1367
  judge?: {
1368
1368
  provider: string;
1369
1369
  model: string;
@@ -1404,6 +1404,7 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1404
1404
  provider: string;
1405
1405
  model: string;
1406
1406
  timeout?: number | undefined;
1407
+ weight?: number | undefined;
1407
1408
  metadata?: Record<string, JsonValue> | undefined;
1408
1409
  topK?: number | undefined;
1409
1410
  temperature?: number | undefined;
@@ -1412,14 +1413,13 @@ export declare const WorkflowConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject
1412
1413
  topP?: number | undefined;
1413
1414
  presencePenalty?: number | undefined;
1414
1415
  frequencyPenalty?: number | undefined;
1415
- weight?: number | undefined;
1416
1416
  label?: string | undefined;
1417
1417
  }[];
1418
1418
  executionStrategy: "parallel" | "sequential";
1419
1419
  timeout?: number | undefined;
1420
- description?: string | undefined;
1421
1420
  name?: string | undefined;
1422
1421
  metadata?: Record<string, JsonValue> | undefined;
1422
+ description?: string | undefined;
1423
1423
  continueOnFailure?: boolean | undefined;
1424
1424
  minSuccessful?: number | undefined;
1425
1425
  parallelism?: number | undefined;
@@ -5,6 +5,7 @@
5
5
  import pLimit from "p-limit";
6
6
  import { AIProviderFactory } from "../../core/factory.js";
7
7
  import { logger } from "../../utils/logger.js";
8
+ import { SpanSerializer, SpanType, SpanStatus, getMetricsAggregator, } from "../../observability/index.js";
8
9
  import { WorkflowError } from "../types.js";
9
10
  const functionTag = "EnsembleExecutor";
10
11
  // ============================================================================
@@ -18,6 +19,11 @@ const functionTag = "EnsembleExecutor";
18
19
  export async function executeEnsemble(options) {
19
20
  const startTime = Date.now();
20
21
  const { prompt, models, executionConfig, systemPrompt, workflowDefaults } = options;
22
+ const span = SpanSerializer.createSpan(SpanType.WORKFLOW, "workflow.ensemble", {
23
+ "workflow.operation": "ensemble",
24
+ "workflow.model_count": models.length,
25
+ "workflow.parallelism": executionConfig?.parallelism || 10,
26
+ });
21
27
  logger.info(`[${functionTag}] Starting ensemble execution`, {
22
28
  modelCount: models.length,
23
29
  parallelism: executionConfig?.parallelism || 10,
@@ -65,6 +71,10 @@ export async function executeEnsemble(options) {
65
71
  failureCount,
66
72
  totalResponses: responses.length,
67
73
  });
74
+ span.durationMs = totalTime;
75
+ const spanStatus = successCount > 0 ? SpanStatus.OK : SpanStatus.ERROR;
76
+ const endedSpan = SpanSerializer.endSpan(span, spanStatus, successCount === 0 ? "No successful model responses" : undefined);
77
+ getMetricsAggregator().recordSpan(endedSpan);
68
78
  return {
69
79
  responses,
70
80
  totalTime,
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { AIProviderFactory } from "../../core/factory.js";
6
6
  import { logger } from "../../utils/logger.js";
7
+ import { SpanSerializer, SpanType, SpanStatus, getMetricsAggregator, } from "../../observability/index.js";
7
8
  import { MAX_REASONING_LENGTH } from "../config.js";
8
9
  import { WorkflowError } from "../types.js";
9
10
  const functionTag = "JudgeScorer";
@@ -18,6 +19,12 @@ const functionTag = "JudgeScorer";
18
19
  export async function scoreEnsemble(options) {
19
20
  const startTime = Date.now();
20
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
+ });
21
28
  logger.info(`[${functionTag}] Starting judge scoring`, {
22
29
  judgeCount: judges.length,
23
30
  responseCount: responses.length,
@@ -36,17 +43,25 @@ export async function scoreEnsemble(options) {
36
43
  if (judges.length === 1) {
37
44
  // Single judge scoring
38
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);
39
50
  return {
40
51
  scores: judgeResult,
41
- judgeTime: Date.now() - startTime,
52
+ judgeTime,
42
53
  };
43
54
  }
44
55
  else {
45
56
  // Multi-judge voting
46
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);
47
62
  return {
48
63
  scores: multiJudgeResult,
49
- judgeTime: Date.now() - startTime,
64
+ judgeTime,
50
65
  };
51
66
  }
52
67
  }
@@ -55,6 +70,9 @@ export async function scoreEnsemble(options) {
55
70
  logger.error(`[${functionTag}] Judge scoring failed`, {
56
71
  error: err.message,
57
72
  });
73
+ span.durationMs = Date.now() - startTime;
74
+ const endedSpan = SpanSerializer.endSpan(span, SpanStatus.ERROR, err.message);
75
+ getMetricsAggregator().recordSpan(endedSpan);
58
76
  const workflowError = error instanceof WorkflowError
59
77
  ? error
60
78
  : new WorkflowError(err.message, {