@opensearch-project/agent-health 0.5.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/README.md +1 -0
  2. package/cli/dist/index.js +2325 -961
  3. package/dist/assets/index-D-Np_l_T.js +246 -0
  4. package/dist/assets/index-vZt9QZKf.css +1 -0
  5. package/dist/index.html +2 -2
  6. package/docs/CLI.md +183 -3
  7. package/docs/CONFIGURATION.md +1 -1
  8. package/docs/CONNECTORS.md +1 -1
  9. package/docs/INSTRUMENT_WITH_OTEL.md +7 -0
  10. package/docs/SDK.md +178 -5
  11. package/docs/STORAGE_INDEX_FIELD_LIMITS.md +216 -0
  12. package/docs/skills/AGENT_HEALTH.md +55 -1
  13. package/docs/skills/add-connector/SKILL.md +5 -1
  14. package/examples/eval-files/demo.eval.js +1 -1
  15. package/examples/eval-files/ops-rca-classification.eval.js +71 -0
  16. package/examples/eval-files/ops-rca-evaluator.json +15 -0
  17. package/examples/eval-files/sdk-demo.eval.js +72 -0
  18. package/examples/eval-files/sdk-describe-demo.eval.js +50 -0
  19. package/examples/eval-files/sdk-hooks-demo.eval.js +1 -1
  20. package/lib/dist/lib/agentTrends.d.ts +210 -0
  21. package/lib/dist/lib/agentTrends.d.ts.map +1 -0
  22. package/lib/dist/lib/agentTrends.js +360 -0
  23. package/lib/dist/lib/agentTrends.js.map +1 -0
  24. package/lib/dist/lib/bedrockCompat.d.ts +27 -0
  25. package/lib/dist/lib/bedrockCompat.d.ts.map +1 -0
  26. package/lib/dist/lib/bedrockCompat.js +83 -0
  27. package/lib/dist/lib/bedrockCompat.js.map +1 -0
  28. package/lib/dist/lib/benchmarkCaseReview.d.ts +114 -0
  29. package/lib/dist/lib/benchmarkCaseReview.d.ts.map +1 -0
  30. package/lib/dist/lib/benchmarkCaseReview.js +177 -0
  31. package/lib/dist/lib/benchmarkCaseReview.js.map +1 -0
  32. package/lib/dist/lib/benchmarkImage.d.ts +52 -0
  33. package/lib/dist/lib/benchmarkImage.d.ts.map +1 -0
  34. package/lib/dist/lib/benchmarkImage.js +113 -0
  35. package/lib/dist/lib/benchmarkImage.js.map +1 -0
  36. package/lib/dist/lib/benchmarkRunsTable.d.ts +109 -0
  37. package/lib/dist/lib/benchmarkRunsTable.d.ts.map +1 -0
  38. package/lib/dist/lib/benchmarkRunsTable.js +212 -0
  39. package/lib/dist/lib/benchmarkRunsTable.js.map +1 -0
  40. package/lib/dist/lib/benchmarkVersionUtils.d.ts +13 -0
  41. package/lib/dist/lib/benchmarkVersionUtils.d.ts.map +1 -1
  42. package/lib/dist/lib/benchmarkVersionUtils.js +21 -0
  43. package/lib/dist/lib/benchmarkVersionUtils.js.map +1 -1
  44. package/lib/dist/lib/chunkedFetch.d.ts +18 -0
  45. package/lib/dist/lib/chunkedFetch.d.ts.map +1 -0
  46. package/lib/dist/lib/chunkedFetch.js +40 -0
  47. package/lib/dist/lib/chunkedFetch.js.map +1 -0
  48. package/lib/dist/lib/comparisonInsights.d.ts +151 -0
  49. package/lib/dist/lib/comparisonInsights.d.ts.map +1 -0
  50. package/lib/dist/lib/comparisonInsights.js +270 -0
  51. package/lib/dist/lib/comparisonInsights.js.map +1 -0
  52. package/lib/dist/lib/config/loader.d.ts.map +1 -1
  53. package/lib/dist/lib/config/loader.js +16 -1
  54. package/lib/dist/lib/config/loader.js.map +1 -1
  55. package/lib/dist/lib/config/types.d.ts +14 -0
  56. package/lib/dist/lib/config/types.d.ts.map +1 -1
  57. package/lib/dist/lib/constants.d.ts +11 -0
  58. package/lib/dist/lib/constants.d.ts.map +1 -1
  59. package/lib/dist/lib/constants.js +10 -1
  60. package/lib/dist/lib/constants.js.map +1 -1
  61. package/lib/dist/lib/contextFormat.d.ts +26 -0
  62. package/lib/dist/lib/contextFormat.d.ts.map +1 -0
  63. package/lib/dist/lib/contextFormat.js +28 -0
  64. package/lib/dist/lib/contextFormat.js.map +1 -0
  65. package/lib/dist/lib/dashboardMetrics.d.ts +11 -2
  66. package/lib/dist/lib/dashboardMetrics.d.ts.map +1 -1
  67. package/lib/dist/lib/dashboardMetrics.js +38 -3
  68. package/lib/dist/lib/dashboardMetrics.js.map +1 -1
  69. package/lib/dist/lib/envCompat.d.ts.map +1 -1
  70. package/lib/dist/lib/envCompat.js +14 -5
  71. package/lib/dist/lib/envCompat.js.map +1 -1
  72. package/lib/dist/lib/evaluationRerun.d.ts +102 -0
  73. package/lib/dist/lib/evaluationRerun.d.ts.map +1 -0
  74. package/lib/dist/lib/evaluationRerun.js +134 -0
  75. package/lib/dist/lib/evaluationRerun.js.map +1 -0
  76. package/lib/dist/lib/judgeFailureSummary.d.ts +66 -0
  77. package/lib/dist/lib/judgeFailureSummary.d.ts.map +1 -0
  78. package/lib/dist/lib/judgeFailureSummary.js +68 -0
  79. package/lib/dist/lib/judgeFailureSummary.js.map +1 -0
  80. package/lib/dist/lib/judgeStrategies.d.ts +108 -0
  81. package/lib/dist/lib/judgeStrategies.d.ts.map +1 -0
  82. package/lib/dist/lib/judgeStrategies.js +135 -0
  83. package/lib/dist/lib/judgeStrategies.js.map +1 -0
  84. package/lib/dist/lib/matchers/expect.d.ts +21 -1
  85. package/lib/dist/lib/matchers/expect.d.ts.map +1 -1
  86. package/lib/dist/lib/matchers/expect.js +51 -0
  87. package/lib/dist/lib/matchers/expect.js.map +1 -1
  88. package/lib/dist/lib/matchers/judgeAccessor.d.ts +4 -0
  89. package/lib/dist/lib/matchers/judgeAccessor.d.ts.map +1 -1
  90. package/lib/dist/lib/matchers/judgeAccessor.js +13 -2
  91. package/lib/dist/lib/matchers/judgeAccessor.js.map +1 -1
  92. package/lib/dist/lib/matchers/judgeReasoningParse.d.ts +49 -0
  93. package/lib/dist/lib/matchers/judgeReasoningParse.d.ts.map +1 -0
  94. package/lib/dist/lib/matchers/judgeReasoningParse.js +128 -0
  95. package/lib/dist/lib/matchers/judgeReasoningParse.js.map +1 -0
  96. package/lib/dist/lib/matchers/traces.d.ts +17 -2
  97. package/lib/dist/lib/matchers/traces.d.ts.map +1 -1
  98. package/lib/dist/lib/matchers/traces.js +136 -16
  99. package/lib/dist/lib/matchers/traces.js.map +1 -1
  100. package/lib/dist/lib/matchers/tracesPricing.d.ts +38 -0
  101. package/lib/dist/lib/matchers/tracesPricing.d.ts.map +1 -0
  102. package/lib/dist/lib/matchers/tracesPricing.js +64 -0
  103. package/lib/dist/lib/matchers/tracesPricing.js.map +1 -0
  104. package/lib/dist/lib/matchers/types.d.ts +25 -0
  105. package/lib/dist/lib/matchers/types.d.ts.map +1 -1
  106. package/lib/dist/lib/resolveCanonicalRun.d.ts +23 -0
  107. package/lib/dist/lib/resolveCanonicalRun.d.ts.map +1 -0
  108. package/lib/dist/lib/resolveCanonicalRun.js +26 -0
  109. package/lib/dist/lib/resolveCanonicalRun.js.map +1 -0
  110. package/lib/dist/lib/runActions.d.ts +120 -0
  111. package/lib/dist/lib/runActions.d.ts.map +1 -0
  112. package/lib/dist/lib/runActions.js +130 -0
  113. package/lib/dist/lib/runActions.js.map +1 -0
  114. package/lib/dist/lib/runInsights.d.ts +86 -0
  115. package/lib/dist/lib/runInsights.d.ts.map +1 -0
  116. package/lib/dist/lib/runInsights.js +185 -0
  117. package/lib/dist/lib/runInsights.js.map +1 -0
  118. package/lib/dist/lib/runName.d.ts +29 -0
  119. package/lib/dist/lib/runName.d.ts.map +1 -0
  120. package/lib/dist/lib/runName.js +38 -0
  121. package/lib/dist/lib/runName.js.map +1 -0
  122. package/lib/dist/lib/runReportPath.d.ts +16 -0
  123. package/lib/dist/lib/runReportPath.d.ts.map +1 -0
  124. package/lib/dist/lib/runReportPath.js +22 -0
  125. package/lib/dist/lib/runReportPath.js.map +1 -0
  126. package/lib/dist/lib/runSort.d.ts +27 -0
  127. package/lib/dist/lib/runSort.d.ts.map +1 -0
  128. package/lib/dist/lib/runSort.js +31 -0
  129. package/lib/dist/lib/runSort.js.map +1 -0
  130. package/lib/dist/lib/runStats.d.ts +109 -5
  131. package/lib/dist/lib/runStats.d.ts.map +1 -1
  132. package/lib/dist/lib/runStats.js +193 -10
  133. package/lib/dist/lib/runStats.js.map +1 -1
  134. package/lib/dist/lib/testCases/define.d.ts.map +1 -1
  135. package/lib/dist/lib/testCases/define.js +93 -46
  136. package/lib/dist/lib/testCases/define.js.map +1 -1
  137. package/lib/dist/lib/testCases/judge.d.ts.map +1 -1
  138. package/lib/dist/lib/testCases/judge.js +22 -4
  139. package/lib/dist/lib/testCases/judge.js.map +1 -1
  140. package/lib/dist/lib/testCases/loader.d.ts +35 -1
  141. package/lib/dist/lib/testCases/loader.d.ts.map +1 -1
  142. package/lib/dist/lib/testCases/loader.js +278 -31
  143. package/lib/dist/lib/testCases/loader.js.map +1 -1
  144. package/lib/dist/lib/trajectoryStepDisplay.d.ts +25 -0
  145. package/lib/dist/lib/trajectoryStepDisplay.d.ts.map +1 -0
  146. package/lib/dist/lib/trajectoryStepDisplay.js +42 -0
  147. package/lib/dist/lib/trajectoryStepDisplay.js.map +1 -0
  148. package/lib/dist/lib/utils.d.ts +34 -0
  149. package/lib/dist/lib/utils.d.ts.map +1 -1
  150. package/lib/dist/lib/utils.js +49 -0
  151. package/lib/dist/lib/utils.js.map +1 -1
  152. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts +68 -22
  153. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.d.ts.map +1 -1
  154. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js +148 -111
  155. package/lib/dist/services/connectors/claude-code/ClaudeCodeConnector.js.map +1 -1
  156. package/lib/dist/services/connectors/kiro/KiroConnector.d.ts +21 -13
  157. package/lib/dist/services/connectors/kiro/KiroConnector.d.ts.map +1 -1
  158. package/lib/dist/services/connectors/kiro/KiroConnector.js +22 -25
  159. package/lib/dist/services/connectors/kiro/KiroConnector.js.map +1 -1
  160. package/lib/dist/services/connectors/pi/PiConnector.d.ts +49 -10
  161. package/lib/dist/services/connectors/pi/PiConnector.d.ts.map +1 -1
  162. package/lib/dist/services/connectors/pi/PiConnector.js +102 -86
  163. package/lib/dist/services/connectors/pi/PiConnector.js.map +1 -1
  164. package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts +59 -14
  165. package/lib/dist/services/connectors/subprocess/SubprocessConnector.d.ts.map +1 -1
  166. package/lib/dist/services/connectors/subprocess/SubprocessConnector.js +95 -61
  167. package/lib/dist/services/connectors/subprocess/SubprocessConnector.js.map +1 -1
  168. package/lib/dist/services/evaluation/bedrockJudge.d.ts +18 -0
  169. package/lib/dist/services/evaluation/bedrockJudge.d.ts.map +1 -1
  170. package/lib/dist/services/evaluation/bedrockJudge.js +4 -0
  171. package/lib/dist/services/evaluation/bedrockJudge.js.map +1 -1
  172. package/lib/dist/services/evaluation/index.d.ts +18 -1
  173. package/lib/dist/services/evaluation/index.d.ts.map +1 -1
  174. package/lib/dist/services/evaluation/index.js +156 -19
  175. package/lib/dist/services/evaluation/index.js.map +1 -1
  176. package/lib/dist/services/metrics.d.ts +55 -0
  177. package/lib/dist/services/metrics.d.ts.map +1 -0
  178. package/lib/dist/services/metrics.js +89 -0
  179. package/lib/dist/services/metrics.js.map +1 -0
  180. package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts +1 -1
  181. package/lib/dist/services/storage/asyncBenchmarkStorage.d.ts.map +1 -1
  182. package/lib/dist/services/storage/asyncBenchmarkStorage.js +30 -3
  183. package/lib/dist/services/storage/asyncBenchmarkStorage.js.map +1 -1
  184. package/lib/dist/services/storage/asyncRunStorage.d.ts +20 -1
  185. package/lib/dist/services/storage/asyncRunStorage.d.ts.map +1 -1
  186. package/lib/dist/services/storage/asyncRunStorage.js +125 -2
  187. package/lib/dist/services/storage/asyncRunStorage.js.map +1 -1
  188. package/lib/dist/services/storage/asyncTestCaseStorage.d.ts +18 -4
  189. package/lib/dist/services/storage/asyncTestCaseStorage.d.ts.map +1 -1
  190. package/lib/dist/services/storage/asyncTestCaseStorage.js +21 -4
  191. package/lib/dist/services/storage/asyncTestCaseStorage.js.map +1 -1
  192. package/lib/dist/services/storage/opensearchClient.d.ts +47 -12
  193. package/lib/dist/services/storage/opensearchClient.d.ts.map +1 -1
  194. package/lib/dist/services/storage/opensearchClient.js +12 -5
  195. package/lib/dist/services/storage/opensearchClient.js.map +1 -1
  196. package/lib/dist/services/traces/browserRecovery.d.ts +12 -1
  197. package/lib/dist/services/traces/browserRecovery.d.ts.map +1 -1
  198. package/lib/dist/services/traces/browserRecovery.js +35 -5
  199. package/lib/dist/services/traces/browserRecovery.js.map +1 -1
  200. package/lib/dist/services/traces/index.d.ts +8 -1
  201. package/lib/dist/services/traces/index.d.ts.map +1 -1
  202. package/lib/dist/services/traces/index.js +33 -12
  203. package/lib/dist/services/traces/index.js.map +1 -1
  204. package/lib/dist/services/traces/judgeAgentsHints.d.ts +98 -3
  205. package/lib/dist/services/traces/judgeAgentsHints.d.ts.map +1 -1
  206. package/lib/dist/services/traces/judgeAgentsHints.js +144 -3
  207. package/lib/dist/services/traces/judgeAgentsHints.js.map +1 -1
  208. package/lib/dist/services/traces/messageExtraction.d.ts.map +1 -1
  209. package/lib/dist/services/traces/messageExtraction.js +95 -33
  210. package/lib/dist/services/traces/messageExtraction.js.map +1 -1
  211. package/lib/dist/services/traces/spansToTrajectory.d.ts.map +1 -1
  212. package/lib/dist/services/traces/spansToTrajectory.js +51 -13
  213. package/lib/dist/services/traces/spansToTrajectory.js.map +1 -1
  214. package/lib/dist/services/traces/tracePoller.d.ts +27 -3
  215. package/lib/dist/services/traces/tracePoller.d.ts.map +1 -1
  216. package/lib/dist/services/traces/tracePoller.js +196 -33
  217. package/lib/dist/services/traces/tracePoller.js.map +1 -1
  218. package/lib/dist/services/traces/trajectoryMerge.d.ts +79 -0
  219. package/lib/dist/services/traces/trajectoryMerge.d.ts.map +1 -0
  220. package/lib/dist/services/traces/trajectoryMerge.js +109 -0
  221. package/lib/dist/services/traces/trajectoryMerge.js.map +1 -0
  222. package/lib/dist/types/index.d.ts +250 -3
  223. package/lib/dist/types/index.d.ts.map +1 -1
  224. package/lib/dist/types/index.js +24 -0
  225. package/lib/dist/types/index.js.map +1 -1
  226. package/package.json +8 -5
  227. package/server/dist/app.js +5490 -1557
  228. package/server/dist/index.js +5490 -1557
  229. package/dist/assets/index-CCQRDlO0.js +0 -243
  230. package/dist/assets/index-CNHQVbcj.css +0 -1
@@ -78,6 +78,10 @@ function claudeNativeTrajectory(spans) {
78
78
  const sorted = sortByStart(spans);
79
79
  const toolNames = toolNamesById(sorted);
80
80
  const steps = [];
81
+ // tool_use_ids that already got a tool_result from a `tool` span's own
82
+ // `tool.output` event, so the sibling `tool.execution` span (processed
83
+ // later, since it starts after the call) doesn't emit a duplicate result.
84
+ const resultEmittedForToolUseId = new Set();
81
85
  for (const s of sorted) {
82
86
  const a = s.attributes || {};
83
87
  const ts = new Date(s.startTime).getTime() || Date.now();
@@ -88,10 +92,10 @@ function claudeNativeTrajectory(spans) {
88
92
  const redacted = !prompt || prompt === '<REDACTED>';
89
93
  steps.push({
90
94
  ...base,
91
- type: 'thinking',
95
+ type: 'user',
92
96
  content: redacted
93
- ? `User: [prompt redacted — set OTEL_LOG_USER_PROMPTS=1 to capture] (${a['user_prompt_length'] ?? '?'} chars)`
94
- : `User: ${prompt}`,
97
+ ? `[prompt redacted — set OTEL_LOG_USER_PROMPTS=1 to capture] (${a['user_prompt_length'] ?? '?'} chars)`
98
+ : String(prompt),
95
99
  });
96
100
  }
97
101
  else if (t === 'llm_request') {
@@ -105,7 +109,7 @@ function claudeNativeTrajectory(spans) {
105
109
  }
106
110
  else if (t === 'tool') {
107
111
  const name = a['tool_name'] || a['gen_ai.tool.name'];
108
- const input = a['tool_input'] || a['gen_ai.tool.input'];
112
+ const input = a['tool_input'] || a['gen_ai.tool.input'] || a['full_command'];
109
113
  let toolArgs;
110
114
  if (input) {
111
115
  try {
@@ -120,20 +124,54 @@ function claudeNativeTrajectory(spans) {
120
124
  toolName: name ? String(name) : undefined,
121
125
  toolArgs,
122
126
  });
127
+ // Some Claude Code tool spans carry the result inline as a `tool.output`
128
+ // span event instead of a separate `tool.execution` span — surface it as
129
+ // a tool_result so it isn't silently dropped from the trajectory. Guard
130
+ // against the (unusual, but possible under clock skew) case where the
131
+ // sibling `tool.execution` span was already PROCESSED first (i.e. it
132
+ // sorted before this `tool` span) and already emitted a result for the
133
+ // same tool_use_id — the dedup Set is checked/marked symmetrically by
134
+ // both branches so whichever one runs first "wins" and the other skips.
135
+ const toolOutputEvent = (s.events || []).find(e => e.name === 'tool.output');
136
+ const eventOutput = toolOutputEvent?.attributes?.['output'] || toolOutputEvent?.attributes?.['result'];
137
+ const toolUseId = a['tool_use_id'] || a['gen_ai.tool.call.id'];
138
+ const alreadyEmittedForThisId = toolUseId != null && resultEmittedForToolUseId.has(String(toolUseId));
139
+ if (eventOutput && !alreadyEmittedForThisId) {
140
+ if (toolUseId != null)
141
+ resultEmittedForToolUseId.add(String(toolUseId));
142
+ const eventTs = toolOutputEvent?.time ? new Date(toolOutputEvent.time).getTime() : NaN;
143
+ steps.push({
144
+ ...base,
145
+ id: `${s.spanId}-output`,
146
+ timestamp: !isNaN(eventTs) ? eventTs : ts,
147
+ type: 'tool_result',
148
+ content: String(eventOutput),
149
+ toolName: name ? String(name) : undefined,
150
+ toolOutput: eventOutput,
151
+ status: s.status === 'ERROR' ? ToolCallStatus.FAILURE : ToolCallStatus.SUCCESS,
152
+ });
153
+ }
123
154
  }
124
155
  else if (t === 'tool.execution') {
125
156
  const success = a['success'];
126
157
  const id = a['tool_use_id'] || a['gen_ai.tool.call.id'];
127
158
  const name = (id && toolNames.get(String(id))) || a['tool_name'];
128
159
  const output = a['gen_ai.tool.output'] || a['tool.output'];
129
- steps.push({
130
- ...base,
131
- type: 'tool_result',
132
- content: output != null ? String(output) : (success === false ? 'tool failed' : 'tool succeeded'),
133
- toolName: name ? String(name) : undefined,
134
- toolOutput: output,
135
- status: success === false ? ToolCallStatus.FAILURE : ToolCallStatus.SUCCESS,
136
- });
160
+ if (id && resultEmittedForToolUseId.has(String(id))) {
161
+ // Already emitted from the sibling `tool` span's tool.output event — skip duplicate.
162
+ }
163
+ else {
164
+ if (id)
165
+ resultEmittedForToolUseId.add(String(id));
166
+ steps.push({
167
+ ...base,
168
+ type: 'tool_result',
169
+ content: output != null ? String(output) : (success === false ? 'tool failed' : 'tool succeeded'),
170
+ toolName: name ? String(name) : undefined,
171
+ toolOutput: output,
172
+ status: success === false ? ToolCallStatus.FAILURE : ToolCallStatus.SUCCESS,
173
+ });
174
+ }
137
175
  }
138
176
  else if (t === 'tool.blocked_on_user') {
139
177
  const decision = String(a['decision'] ?? '');
@@ -298,7 +336,7 @@ function genericTrajectory(spans, serviceName) {
298
336
  break;
299
337
  }
300
338
  case 'user':
301
- steps.push({ ...base, type: 'thinking', content: `User: ${m.content}` });
339
+ steps.push({ ...base, type: 'user', content: m.content });
302
340
  break;
303
341
  default:
304
342
  steps.push({ ...base, type: 'thinking', content: m.content });
@@ -1 +1 @@
1
- {"version":3,"file":"spansToTrajectory.js","sourceRoot":"","sources":["../../../../services/traces/spansToTrajectory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spansToTrajectory.js","sourceRoot":"","sources":["../../../../services/traces/spansToTrajectory.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,12 @@
7
7
  import { Span, EvaluationReport, AgentConfig } from '../../types/index.js';
8
8
  export interface PollState {
9
9
  reportId: string;
10
- runId: string;
10
+ /**
11
+ * Connector runId (Strategy B). OPTIONAL — REST-connector reports never
12
+ * get one; correlation then relies on the sessionId/service-window hints
13
+ * derived from the report (Strategies C/D).
14
+ */
15
+ runId?: string;
11
16
  attempts: number;
12
17
  maxAttempts: number;
13
18
  intervalMs: number;
@@ -20,6 +25,13 @@ export interface PollCallbacks {
20
25
  onTracesFound: (spans: Span[], report: EvaluationReport) => Promise<void>;
21
26
  onAttempt?: (attempt: number, maxAttempts: number) => void;
22
27
  onError: (error: Error) => void;
28
+ /**
29
+ * Fired when polling stops WITHOUT a verdict from this poller — e.g. the
30
+ * report reached a terminal metricsStatus through another path (eager
31
+ * judge, sibling server). Callers that wrap `startPolling` in a promise
32
+ * (evaluationRunner.waitForTracesAndJudge) MUST resolve here or they hang.
33
+ */
34
+ onStopped?: () => void;
23
35
  }
24
36
  /**
25
37
  * Trace Polling Manager
@@ -38,7 +50,7 @@ declare class TracePollingManager {
38
50
  /**
39
51
  * Start polling for traces for a specific report
40
52
  */
41
- startPolling(reportId: string, runId: string, callbacks: PollCallbacks, options?: {
53
+ startPolling(reportId: string, runId: string | undefined, callbacks: PollCallbacks, options?: {
42
54
  intervalMs?: number;
43
55
  maxAttempts?: number;
44
56
  agentConfig?: AgentConfig;
@@ -65,11 +77,23 @@ declare class TracePollingManager {
65
77
  * If polling is already active for this reportId, returns the existing
66
78
  * completion promise (no duplicate poll started).
67
79
  */
68
- startPollingAsync(reportId: string, runId: string, callbacks: PollCallbacks, options?: {
80
+ startPollingAsync(reportId: string, runId: string | undefined, callbacks: PollCallbacks, options?: {
69
81
  intervalMs?: number;
70
82
  maxAttempts?: number;
71
83
  agentConfig?: AgentConfig;
72
84
  }): Promise<void>;
85
+ /**
86
+ * Fetch a report defensively: storage failures and missing docs both
87
+ * resolve to null (callers treat null as "unknown — proceed").
88
+ */
89
+ private safeGetReport;
90
+ /**
91
+ * Write an evaluator-error patch ONLY if the report is still pending /
92
+ * calculating. A report judged through another path (eager judge, another
93
+ * server's poller) must never have its verdict clobbered by this poller's
94
+ * timeout/error bookkeeping.
95
+ */
96
+ private patchErrorIfStillPending;
73
97
  /**
74
98
  * Execute a single poll attempt
75
99
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tracePoller.d.ts","sourceRoot":"","sources":["../../../../services/traces/tracePoller.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAA0B,MAAM,SAAS,CAAC;AA0BtF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,cAAM,mBAAmB;IACvB,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,kBAAkB,CAAiF;IAE3G;;OAEG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GACjF,IAAI;IAyBP;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAmBnC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIjD;;OAEG;IACH,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAU3C;;;;;;;OAOG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GACjF,OAAO,CAAC,IAAI,CAAC;IAyChB;;OAEG;YACW,IAAI;IA4IlB;;OAEG;YACW,eAAe;CAgC9B;AAGD,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
1
+ {"version":3,"file":"tracePoller.d.ts","sourceRoot":"","sources":["../../../../services/traces/tracePoller.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAA0B,MAAM,SAAS,CAAC;AAiCtF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,cAAM,mBAAmB;IACvB,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,kBAAkB,CAAiF;IAE3G;;OAEG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GACjF,IAAI;IAgCP;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAmBnC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIjD;;OAEG;IACH,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAU3C;;;;;;;OAOG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GACjF,OAAO,CAAC,IAAI,CAAC;IAyChB;;;OAGG;YACW,aAAa;IAQ3B;;;;;OAKG;YACW,wBAAwB;IAgBtC;;OAEG;YACW,IAAI;IAmPlB;;OAEG;YACW,eAAe;CA6C9B;AAGD,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
@@ -3,10 +3,13 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { debug } from '../../lib/debug.js';
6
- import { fetchTracesByRunIds } from './index.js';
6
+ import { fetchTracesForRun } from './index.js';
7
+ import { buildJudgeAgentsHints } from './judgeAgentsHints.js';
7
8
  import { asyncRunStorage } from '../storage/asyncRunStorage.js';
8
9
  import { executeBuildTrajectoryHook } from '../../lib/hooks.js';
9
10
  import { buildEvaluatorErrorPatch } from '../../services/evaluation/evaluatorError.js';
11
+ import { spansToTrajectory } from './spansToTrajectory.js';
12
+ import { mergeSpanTrajectory } from './trajectoryMerge.js';
10
13
  // Polling configuration. Defaults are overridable via env vars so that
11
14
  // CI / E2E runs without a real OpenSearch trace backend can fail fast
12
15
  // instead of waiting the full ~10 min before the poller gives up.
@@ -24,7 +27,11 @@ const envInt = (name, fallback) => {
24
27
  };
25
28
  const DEFAULT_POLL_INTERVAL_MS = envInt('TRACE_POLL_INTERVAL_MS', 10000); // 10 seconds
26
29
  const DEFAULT_MAX_ATTEMPTS = envInt('TRACE_POLL_MAX_ATTEMPTS', 60); // 10 minutes total at default interval
27
- const MAX_POLL_CEILING = 60; // Hard ceiling: never exceed 60 attempts regardless of agent config or env override
30
+ // Hard ceiling: never exceed this many attempts regardless of agent config or
31
+ // env override. Raised 60 → 240 (40 min at the default interval): the old
32
+ // ceiling silently clamped explicit agent `tracePolling.maxAttempts` overrides
33
+ // (e.g. 180 for slow OTLP→API-Gateway→cluster ingestion) back down to 10 min.
34
+ const MAX_POLL_CEILING = 240;
28
35
  /**
29
36
  * Trace Polling Manager
30
37
  *
@@ -50,12 +57,19 @@ class TracePollingManager {
50
57
  debug('TracePoller', `Already polling for report ${reportId}`);
51
58
  return;
52
59
  }
60
+ // Explicit options win; otherwise fall back to the agent's configured
61
+ // tracePolling budget (callers like evaluationRunner pass agentConfig but
62
+ // not the numbers — per-agent overrides were silently ignored there).
63
+ const cfgPolling = options?.agentConfig?.tracePolling;
64
+ const requestedMax = Number.isFinite(options?.maxAttempts)
65
+ ? options.maxAttempts
66
+ : Number.isFinite(cfgPolling?.maxAttempts) ? cfgPolling.maxAttempts : DEFAULT_MAX_ATTEMPTS;
53
67
  const state = {
54
68
  reportId,
55
69
  runId,
56
70
  attempts: 0,
57
- maxAttempts: Math.min(Number.isFinite(options?.maxAttempts) ? options.maxAttempts : DEFAULT_MAX_ATTEMPTS, MAX_POLL_CEILING),
58
- intervalMs: options?.intervalMs ?? DEFAULT_POLL_INTERVAL_MS,
71
+ maxAttempts: Math.min(requestedMax, MAX_POLL_CEILING),
72
+ intervalMs: options?.intervalMs ?? cfgPolling?.intervalMs ?? DEFAULT_POLL_INTERVAL_MS,
59
73
  lastAttempt: null,
60
74
  running: true,
61
75
  agentConfig: options?.agentConfig,
@@ -153,6 +167,40 @@ class TracePollingManager {
153
167
  this.startPolling(reportId, runId, wrappedCallbacks, options);
154
168
  });
155
169
  }
170
+ /**
171
+ * Fetch a report defensively: storage failures and missing docs both
172
+ * resolve to null (callers treat null as "unknown — proceed").
173
+ */
174
+ async safeGetReport(reportId) {
175
+ try {
176
+ return (await asyncRunStorage.getReportById(reportId)) ?? null;
177
+ }
178
+ catch {
179
+ return null;
180
+ }
181
+ }
182
+ /**
183
+ * Write an evaluator-error patch ONLY if the report is still pending /
184
+ * calculating. A report judged through another path (eager judge, another
185
+ * server's poller) must never have its verdict clobbered by this poller's
186
+ * timeout/error bookkeeping.
187
+ */
188
+ async patchErrorIfStillPending(reportId, patch) {
189
+ try {
190
+ const fresh = await this.safeGetReport(reportId);
191
+ if (fresh && (fresh.metricsStatus === 'ready' || fresh.metricsStatus === 'error')) {
192
+ // 'ready': a real verdict landed — never overwrite it.
193
+ // 'error': another path already wrote a (likely more specific) error
194
+ // cause — don't stomp it with a generic timeout.
195
+ debug('TracePoller', `Skipping error patch for ${reportId} — already '${fresh.metricsStatus}'`);
196
+ return;
197
+ }
198
+ await asyncRunStorage.updateReport(reportId, patch);
199
+ }
200
+ catch (updateErr) {
201
+ console.error(`[TracePoller] CRITICAL: Failed to update report ${reportId} error status. Report may be stuck in pending state.`, updateErr);
202
+ }
203
+ }
156
204
  /**
157
205
  * Execute a single poll attempt
158
206
  */
@@ -178,25 +226,111 @@ class TracePollingManager {
178
226
  console.warn(`[TracePoller] Failed to update attempt count:`, err);
179
227
  }
180
228
  try {
181
- // Try to fetch traces
182
- const result = await fetchTracesByRunIds([state.runId]);
183
- if (result.spans && result.spans.length > 0) {
229
+ // Fetch the current report FIRST. Two reasons:
230
+ // 1. Clobber guard: if the report was already judged (eager path — a
231
+ // browser fan-out can start polls for transiently-pending eager
232
+ // reports), STOP instead of racing the verdict. A trace_timeout
233
+ // patch 10 minutes later must never overwrite a real judgment
234
+ // (2026-08-25: run-inspector fan-out clobbered a full run's early
235
+ // verdicts this way).
236
+ // 2. Correlation hints: the report carries sessionId / timestamp /
237
+ // connectorProtocol, from which we derive the service-window +
238
+ // sessionId hints (Strategies C/D). Claude Code spans carry only
239
+ // `session.id` (no runId tag), pi/REST spans carry neither —
240
+ // runId-only polling (Strategy B) can never find them.
241
+ const currentReport = await this.safeGetReport(reportId);
242
+ if (currentReport && (currentReport.metricsStatus === 'ready' || currentReport.metricsStatus === 'error')) {
243
+ debug('TracePoller', `Report ${reportId} is already '${currentReport.metricsStatus}' — stopping poll (no clobber)`);
244
+ state.running = false;
245
+ this.callbacks.delete(reportId);
246
+ this.polls.delete(reportId);
247
+ // Resolve (not reject) any completion promise — the report reached a
248
+ // terminal state through another path; nothing is owed here. Plain
249
+ // startPolling callers are notified via onStopped (promise wrappers
250
+ // like waitForTracesAndJudge resolve there — otherwise they'd hang).
251
+ this.completionPromises.get(reportId)?.resolve();
252
+ this.completionPromises.delete(reportId);
253
+ try {
254
+ callbacks?.onStopped?.();
255
+ }
256
+ catch { /* notification only */ }
257
+ return;
258
+ }
259
+ const windowAgents = currentReport
260
+ ? buildJudgeAgentsHints(currentReport, state.agentConfig?.traceServiceName)
261
+ : [];
262
+ const sessionId = currentReport?.sessionId;
263
+ // The run's own OTel traceId (test_case eval span) — stamped by the
264
+ // runners at case start. Agents that adopt the propagated traceparent
265
+ // (REST via header, pi via TRACEPARENT env — both verified) emit their
266
+ // spans under this exact traceId (Strategy A).
267
+ const evalTraceId = currentReport?.traceId;
268
+ if (!state.runId && !sessionId && !evalTraceId && windowAgents.length === 0) {
269
+ // No correlator at all this attempt (report fetch may have failed
270
+ // transiently, or the report carries no correlation fields yet).
271
+ // An unfiltered query would be rejected by the traces API anyway —
272
+ // skip the fetch and let the attempt budget advance.
273
+ debug('TracePoller', `No correlator available for report ${reportId} (attempt ${state.attempts}) — skipping fetch`);
274
+ if (state.attempts >= state.maxAttempts) {
275
+ state.running = false;
276
+ callbacks?.onError(new Error(`Traces not available after ${state.maxAttempts} attempts (no correlation keys on report)`));
277
+ await this.patchErrorIfStillPending(reportId, buildEvaluatorErrorPatch('trace_timeout', `no correlation keys (runId/sessionId/traceId/service-window) available after ${state.maxAttempts} attempts`));
278
+ this.callbacks.delete(reportId);
279
+ this.polls.delete(reportId);
280
+ }
281
+ else {
282
+ state.timerId = setTimeout(() => this.poll(reportId), state.intervalMs);
283
+ }
284
+ return;
285
+ }
286
+ // Try to fetch traces — union of Strategy A (eval traceId), B (runId),
287
+ // C (service.name + time window) and D (session.id inside the window hint).
288
+ const result = await fetchTracesForRun({
289
+ runId: state.runId,
290
+ evalTraceId,
291
+ windowAgents,
292
+ includeWindowFallback: windowAgents.length > 0,
293
+ });
294
+ // EXACT-MATCH FILTER (fail-closed): the window clause (Strategy C) is a
295
+ // discovery fallback and can return spans from CONCURRENT runs of the
296
+ // same agent — or from unrelated emitters sharing the service name
297
+ // (observed live: a pi-web session's spans were fetched for a pi eval
298
+ // run). When the report carries a precise correlator, judge ONLY spans
299
+ // matching it — and if none match yet, treat the attempt as "traces
300
+ // not available" and keep polling rather than judging foreign spans:
301
+ // session.id (Claude Code) > eval traceId (traceparent adopters).
302
+ let spans = result.spans || [];
303
+ if (spans.length > 0) {
304
+ if (sessionId) {
305
+ spans = spans.filter(sp => sp.attributes?.['session.id'] === sessionId);
306
+ if (spans.length === 0)
307
+ debug('TracePoller', `Fetched ${result.spans.length} spans but none match session ${sessionId} — waiting`);
308
+ }
309
+ else if (evalTraceId) {
310
+ spans = spans.filter(sp => sp.traceId === evalTraceId);
311
+ if (spans.length === 0)
312
+ debug('TracePoller', `Fetched ${result.spans.length} spans but none match eval traceId ${evalTraceId} — waiting`);
313
+ }
314
+ }
315
+ const filteredResult = { ...result, spans };
316
+ if (filteredResult.spans && filteredResult.spans.length > 0) {
184
317
  // Traces found!
185
- debug('TracePoller', `Found ${result.spans.length} spans for report ${reportId}`);
186
- // Get the current report
187
- const report = await asyncRunStorage.getReportById(reportId);
318
+ debug('TracePoller', `Found ${filteredResult.spans.length} spans for report ${reportId} (fetched ${result.spans?.length ?? 0})`);
319
+ // Get the current report (reuse the top-of-poll fetch when it
320
+ // succeeded — one storage read per attempt).
321
+ const report = currentReport ?? await asyncRunStorage.getReportById(reportId);
188
322
  if (!report) {
189
323
  throw new Error(`Report ${reportId} not found`);
190
324
  }
191
325
  // Build trajectory from trace spans
192
- const { trajectory, shouldContinuePolling } = await this.buildTrajectory(result.spans, state);
326
+ const { trajectory, shouldContinuePolling, fromHook } = await this.buildTrajectory(filteredResult.spans, state);
193
327
  // Check if we should continue polling
194
328
  if (shouldContinuePolling) {
195
329
  if (state.attempts >= state.maxAttempts) {
196
330
  console.log(`[TracePoller] Max attempts reached with incomplete trace`);
197
331
  state.running = false;
198
332
  callbacks?.onError(new Error(`Trace incomplete after ${state.maxAttempts} attempts`));
199
- await asyncRunStorage.updateReport(reportId, buildEvaluatorErrorPatch('trace_incomplete', `found ${result.spans.length} spans but no root span after ${state.maxAttempts} attempts`)).catch(err => console.error(`[TracePoller] Failed to update report error status:`, err));
333
+ await this.patchErrorIfStillPending(reportId, buildEvaluatorErrorPatch('trace_incomplete', `found ${filteredResult.spans.length} spans but no root span after ${state.maxAttempts} attempts`));
200
334
  this.callbacks.delete(reportId);
201
335
  this.polls.delete(reportId);
202
336
  }
@@ -206,14 +340,39 @@ class TracePollingManager {
206
340
  }
207
341
  return;
208
342
  }
209
- // Trajectory is ready - only overwrite if the hook produced steps
343
+ // Trajectory replacement policy (full rationale + rules in
344
+ // services/traces/trajectoryMerge.ts):
345
+ // - an agent's explicit buildTrajectory HOOK is intentional — its
346
+ // output always wins (issue #320);
347
+ // - the DEFAULT span→trajectory conversion is MERGED with the
348
+ // connector trajectory so replacement never loses evidence: the
349
+ // connector's `action`/`tool_result` steps (with `toolOutput`) are
350
+ // kept whenever the span-derived steps would drop tool steps or
351
+ // their outputs (agents whose spans carry no tool payloads), and
352
+ // the connector's response is appended when the span-built steps
353
+ // carry no response content (Claude Code keeps prompts/responses
354
+ // in OTel LOGS, not span attributes). Wholesale replacement with
355
+ // content-less span stubs made the judge fail every case of a
356
+ // live benchmark and grade ~50% of a REST agent's cases with no
357
+ // retrieval evidence at all.
210
358
  if (trajectory.length > 0) {
211
- report.trajectory = trajectory;
359
+ report.trajectory = fromHook
360
+ ? trajectory
361
+ : mergeSpanTrajectory(report.trajectory, trajectory);
212
362
  }
213
363
  // Stop polling and notify success
214
364
  state.running = false;
365
+ // Claim the report before judging (pending -> calculating). Not an
366
+ // atomic lease — the storage layer has no CAS — but it makes the
367
+ // browser recovery's "someone else is judging" guard effective and
368
+ // narrows the double-judge window between sibling pollers to the
369
+ // fetch-to-claim gap.
370
+ try {
371
+ await asyncRunStorage.updateReport(reportId, { metricsStatus: 'calculating' });
372
+ }
373
+ catch { /* best-effort claim — proceed to judge regardless */ }
215
374
  try {
216
- await callbacks?.onTracesFound(result.spans, report);
375
+ await callbacks?.onTracesFound(filteredResult.spans, report);
217
376
  }
218
377
  catch (callbackErr) {
219
378
  // onTracesFound failed (e.g., judge + error recovery both failed).
@@ -237,12 +396,7 @@ class TracePollingManager {
237
396
  state.running = false;
238
397
  callbacks?.onError(new Error(`Traces not available after ${state.maxAttempts} attempts`));
239
398
  // Update report with error status - critical as report will remain stuck otherwise
240
- try {
241
- await asyncRunStorage.updateReport(reportId, buildEvaluatorErrorPatch('trace_timeout', `traces not available after ${state.maxAttempts} attempts (${state.maxAttempts * state.intervalMs / 60000} minutes)`));
242
- }
243
- catch (updateErr) {
244
- console.error(`[TracePoller] CRITICAL: Failed to update report ${reportId} error status. Report may be stuck in pending state.`, updateErr);
245
- }
399
+ await this.patchErrorIfStillPending(reportId, buildEvaluatorErrorPatch('trace_timeout', `traces not available after ${state.maxAttempts} attempts (${state.maxAttempts * state.intervalMs / 60000} minutes)`));
246
400
  this.callbacks.delete(reportId);
247
401
  this.polls.delete(reportId);
248
402
  }
@@ -258,12 +412,7 @@ class TracePollingManager {
258
412
  state.running = false;
259
413
  callbacks?.onError(error);
260
414
  // Update report with error status - critical as report will remain stuck otherwise
261
- try {
262
- await asyncRunStorage.updateReport(reportId, buildEvaluatorErrorPatch('trace_fetch_failed', error));
263
- }
264
- catch (updateErr) {
265
- console.error(`[TracePoller] CRITICAL: Failed to update report ${reportId} error status. Report may be stuck in pending state.`, updateErr);
266
- }
415
+ await this.patchErrorIfStillPending(reportId, buildEvaluatorErrorPatch('trace_fetch_failed', error));
267
416
  this.callbacks.delete(reportId);
268
417
  this.polls.delete(reportId);
269
418
  }
@@ -280,27 +429,41 @@ class TracePollingManager {
280
429
  const traceId = spans[0]?.traceId;
281
430
  if (!traceId) {
282
431
  console.warn(`[TracePoller] No traceId found in spans`);
283
- return { trajectory: [], shouldContinuePolling: false };
432
+ return { trajectory: [], shouldContinuePolling: false, fromHook: false };
284
433
  }
285
- // If no buildTrajectory hook, return empty trajectory (will use SSE trajectory)
434
+ // No buildTrajectory hook: fall back to the generic span→trajectory
435
+ // conversion so the judge grades what the traces actually show (tool
436
+ // calls included) instead of the tool-call-less AG-UI trajectory.
437
+ // Previously this returned [] and trace-only agents could not be judged
438
+ // from their traces without a custom hook (issue #320, root cause 2).
286
439
  if (!state.agentConfig?.hooks?.buildTrajectory) {
287
- return { trajectory: [], shouldContinuePolling: false };
440
+ try {
441
+ const converted = spansToTrajectory(spans, state.agentConfig?.traceServiceName);
442
+ if (converted.length > 0) {
443
+ debug('TracePoller', `Default span→trajectory conversion produced ${converted.length} steps for trace ${traceId}`);
444
+ }
445
+ return { trajectory: converted, shouldContinuePolling: false, fromHook: false };
446
+ }
447
+ catch (err) {
448
+ console.error(`[TracePoller] Default span→trajectory conversion failed for ${traceId}:`, err);
449
+ return { trajectory: [], shouldContinuePolling: false, fromHook: false };
450
+ }
288
451
  }
289
452
  try {
290
453
  console.log(`[TracePoller] Building trajectory from hook for trace ${traceId}`);
291
454
  const hookResult = await executeBuildTrajectoryHook(state.agentConfig.hooks, { spans, runId: state.runId }, state.agentConfig.key);
292
455
  if (hookResult !== null) {
293
456
  console.log(`[TracePoller] Hook returned ${hookResult.length} trajectory steps`);
294
- return { trajectory: hookResult, shouldContinuePolling: false };
457
+ return { trajectory: hookResult, shouldContinuePolling: false, fromHook: true };
295
458
  }
296
459
  else {
297
460
  console.log(`[TracePoller] Hook returned null - trace not ready yet`);
298
- return { trajectory: [], shouldContinuePolling: true };
461
+ return { trajectory: [], shouldContinuePolling: true, fromHook: true };
299
462
  }
300
463
  }
301
464
  catch (err) {
302
465
  console.error(`[TracePoller] Failed to build trajectory for ${traceId}:`, err);
303
- return { trajectory: [], shouldContinuePolling: false };
466
+ return { trajectory: [], shouldContinuePolling: false, fromHook: true };
304
467
  }
305
468
  }
306
469
  }