@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
@@ -34,9 +34,18 @@ export interface JudgeAgentsHint {
34
34
  /**
35
35
  * Resolve the `service.name` an agent emits OTel spans under. Priority:
36
36
  * 1. Explicit `agentConfig.traceServiceName` (the per-agent override).
37
- * 2. Protocol-default from the table above.
38
- * 3. `<connectorProtocol>-agent` heuristic (last-resort fallback).
39
- * 4. `<agentKey>-agent` as a final guess when protocol is unknown.
37
+ * 2. Protocol-default from the table above (connectors WE wrote — fixed,
38
+ * known service.name).
39
+ * 3. `undefined` (+ a loud `console.warn`) for `UNKNOWN_SERVICE_NAME_PROTOCOLS`
40
+ * (generic transport protocols where the remote service.name is NOT
41
+ * knowable) — deliberately does NOT fabricate a guessed name. See the
42
+ * set's doc comment for why a wrong guess is worse than no guess.
43
+ * 4. `<connectorProtocol>-agent` heuristic, but ONLY as a last resort for
44
+ * connector protocol strings outside both of the above (e.g. a
45
+ * user-configured custom connector key not in the upstream
46
+ * `ConnectorProtocol` union) — kept for backward compatibility since
47
+ * those are genuinely unknown rather than known-unknowable.
48
+ * 5. `<agentKey>-agent` as a final guess when protocol itself is unknown.
40
49
  *
41
50
  * Returns `undefined` when none of the above is derivable; the caller
42
51
  * should then skip Strategy C and fall back to Strategy B alone.
@@ -60,4 +69,90 @@ export declare function resolveAgentServiceName(args: {
60
69
  * Strategy B (runIds-only) without breaking.
61
70
  */
62
71
  export declare function buildJudgeAgentsHints(report: Pick<TestCaseRun, 'agentKey' | 'connectorProtocol' | 'timestamp' | 'performanceMetrics' | 'sessionId'>, agentTraceServiceName?: string): JudgeAgentsHint[];
72
+ /**
73
+ * Resolve the id forwarded as `runId` to `/api/judge` (provider `agent`).
74
+ *
75
+ * The route hard-requires a truthy `runId` ("runId is required for the agent
76
+ * (trace) judge provider — its trace tools scope to it") because that's the
77
+ * ONLY thing the trace tools historically scoped on (Strategy B). But REST
78
+ * connectors never populate `report.runId` (`RESTConnector.execute()` returns
79
+ * `data.runId || data.id || null`, and agent response bodies here carry
80
+ * neither) — so any REST-connector agent using the `agent-trace-judge` model
81
+ * 400s before the judge ever runs, EVEN when Strategy C (`agents` hints,
82
+ * service.name + time-window) already has enough to find the real spans
83
+ * (root-caused via a live smoke test 2026-09-01:
84
+ * `example-rest-agent-variant` found its spans on poll attempt
85
+ * 1 once `traceServiceName` was set, then still 400'd on this exact gate).
86
+ *
87
+ * Fallback is `report.traceId` ONLY (the eval's own OTel `test_case` span) —
88
+ * deliberately NOT `report.id` (the storage doc id), and NOT `undefined`.
89
+ * Two different downstream consumers read this value with different safety
90
+ * properties:
91
+ * - `/api/traces` (`query_spans`): `traceJudgeTools.ts` sends it as
92
+ * `runIds:[runId]`, UNIONED (bool.should) with the `agents` Strategy-C
93
+ * hints, matched against `attributes.agent_health.run.id` /
94
+ * `attributes.gen_ai.conversation.id`. A value that matches no span is a
95
+ * harmless no-op contribution to that union — safe for ANY truthy
96
+ * string, including `report.id`.
97
+ * - `/api/logs` (`query_logs`): `fetchLogs()` (server/services/logsService.ts)
98
+ * treats a present `runId` as the ONLY filter — `match: { message: runId
99
+ * }` with NO time-range bound at all ("searching by runId, we want to
100
+ * find logs regardless of age"). `match` is analyzed: a hyphenated id
101
+ * like a `report.id` (e.g. `run-1788232186357-pxdnz1a4k`) tokenizes into
102
+ * `run` / `1788232186357` / `pxdnz1a4k` and would OR-match any log
103
+ * containing the extremely common word "run" anywhere in the cluster,
104
+ * unbounded by time — exactly the noise risk this codebase's Strategy-C
105
+ * docs warn about, but worse (no window). A 32-hex-char OTel `traceId`
106
+ * has no word boundaries for the analyzer to split on, so it behaves as
107
+ * one high-entropy token — realistically only ever matches a log line
108
+ * that legitimately contains this exact trace id.
109
+ *
110
+ * So `report.id` is NOT an acceptable fallback despite being always present:
111
+ * it is safe for `/api/traces` but unsafe for `/api/logs`. When `traceId` is
112
+ * ALSO absent (e.g. eval telemetry disabled), returning `undefined` and
113
+ * letting the route's original 400 stand is the correct fail-closed
114
+ * behavior — not a silent degrade into unscoped log search.
115
+ *
116
+ * The route's defense-in-depth check (`trajectoryRunIds.has(runId)`) only
117
+ * activates when trajectory steps carry a `.runId` field (SDK-derived
118
+ * trajectories); classic REST/subprocess trajectory steps never do, so this
119
+ * fallback can't trip that 403 either way.
120
+ */
121
+ export declare function resolveJudgeRunId(report: Pick<TestCaseRun, 'runId' | 'traceId'>): string | undefined;
122
+ /**
123
+ * Does this `/api/judge` (provider `agent`) request carry ANY correlation
124
+ * handle its trace-query tools can scope to?
125
+ *
126
+ * True when EITHER:
127
+ * - `runId` is truthy — Strategy B. By the time a well-behaved caller
128
+ * reaches the route this is often already {@link resolveJudgeRunId}'s
129
+ * `traceId` fallback rather than a native run id; the two are
130
+ * indistinguishable (and equally valid) from here on, so this check
131
+ * doesn't need to know which one it is.
132
+ * - at least one entry in `agents` (Strategy C/D hints from
133
+ * {@link buildJudgeAgentsHints}) carries a `serviceName` or `sessionId`.
134
+ *
135
+ * This is the fix for the bug `resolveJudgeRunId` alone didn't cover: the
136
+ * two SYNCHRONOUS (non-`useTraces`) judge call sites in
137
+ * `services/evaluation/index.ts` (`runEvaluationWithConnector`'s "STANDARD
138
+ * MODE" branch, used by every REST-connector agent that picks the
139
+ * `agent-trace-judge` model WITHOUT enabling trace-mode polling) already
140
+ * forward `agents` hints (`buildJudgeAgentsHints(...)`) — they just never
141
+ * had a `runId` to forward, because the connector never minted one and
142
+ * `report.traceId` isn't stamped yet at that point in the flow (that
143
+ * stamping happens later, in `evaluationRunner.ts`, only on the trace-mode
144
+ * branch). Pre-fix, `POST /api/judge`'s `if (!runId) return 400` rejected
145
+ * these requests unconditionally, even though the hints it had received in
146
+ * the SAME request body were already sufficient for the trace tools to
147
+ * find real spans — the hints mechanism existed (#264) but the gate fired
148
+ * first and never looked at it.
149
+ *
150
+ * Used by the route's `agent` provider gate (replacing the old
151
+ * `if (!runId)` check) and by {@link createTraceJudgeExtension}
152
+ * (`server/services/traceJudgeTools.ts`) to decide whether its tools are
153
+ * enabled at all — the gate and the tools must agree, or the route accepts
154
+ * a request whose tools then silently disable themselves and the judge
155
+ * degrades to trajectory-only reasoning without anyone being told.
156
+ */
157
+ export declare function hasTraceCorrelation(runId: string | undefined, agents?: Array<Pick<JudgeAgentsHint, 'serviceName' | 'sessionId'>>): boolean;
63
158
  //# sourceMappingURL=judgeAgentsHints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"judgeAgentsHints.d.ts","sourceRoot":"","sources":["../../../../services/traces/judgeAgentsHints.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA4B9D,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,GAAG,SAAS,CAQrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,mBAAmB,GAAG,WAAW,GAAG,oBAAoB,GAAG,WAAW,CAAC,EAC9G,qBAAqB,CAAC,EAAE,MAAM,GAC7B,eAAe,EAAE,CAyBnB"}
1
+ {"version":3,"file":"judgeAgentsHints.d.ts","sourceRoot":"","sources":["../../../../services/traces/judgeAgentsHints.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA2D9D,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,GAAG,SAAS,CAoBrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,mBAAmB,GAAG,WAAW,GAAG,oBAAoB,GAAG,WAAW,CAAC,EAC9G,qBAAqB,CAAC,EAAE,MAAM,GAC7B,eAAe,EAAE,CAyBnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC,GAC7C,MAAM,GAAG,SAAS,CAEpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,WAAW,CAAC,CAAC,GACjE,OAAO,CAGT"}
@@ -16,6 +16,36 @@ const PROTOCOL_TO_SERVICE_NAME = {
16
16
  'agui-streaming': 'observio-sample-agent',
17
17
  'subprocess': 'subprocess-agent',
18
18
  };
19
+ /**
20
+ * Connector protocols where agent-health does NOT control (and cannot know)
21
+ * the remote agent's OTel `service.name`. Unlike `claude-code`/`kiro`/`pi`/
22
+ * `agui-streaming`/`subprocess` above — connectors WE wrote, whose spawned
23
+ * process/sample-agent always emits under the same fixed name — these are
24
+ * generic TRANSPORT protocols: `rest`/`openai-compatible`/`langgraph` just
25
+ * describe how the HTTP call is shaped, and ANY third-party agent (with ANY
26
+ * OTel service.name, or none at all) can sit behind one. `strands` is a
27
+ * third-party agent framework we don't control either. `mock` never emits
28
+ * real spans.
29
+ *
30
+ * Root cause (2026-09-01 trace_timeout incident): before this set existed,
31
+ * `resolveAgentServiceName()`'s last-resort `${protocol}-agent` heuristic
32
+ * silently resolved `example-rest-agent` (connectorType `rest`, no
33
+ * `traceServiceName` configured) to the fabricated name `"rest-agent"` —
34
+ * which matches no real span, ever. Strategy C then confidently polled that
35
+ * wrong service.name for the FULL attempt budget (60 attempts / 10 min)
36
+ * every single run, even though the agent's real spans (service.name
37
+ * `"example-agent"`) were landing on the cluster the whole time. A wrong
38
+ * guess here is worse than no guess: `undefined` correctly skips Strategy C
39
+ * and falls back to Strategy A/B/D; a wrong string burns the entire poll
40
+ * budget on a query that can never match.
41
+ */
42
+ const UNKNOWN_SERVICE_NAME_PROTOCOLS = new Set([
43
+ 'rest',
44
+ 'openai-compatible',
45
+ 'langgraph',
46
+ 'strands',
47
+ 'mock',
48
+ ]);
19
49
  /** Time-window slack on each side of the run window to absorb clock skew. */
20
50
  const SLACK_MS = 60_000;
21
51
  /**
@@ -28,9 +58,18 @@ const FALLBACK_LOOKBACK_MS = 30 * 60_000;
28
58
  /**
29
59
  * Resolve the `service.name` an agent emits OTel spans under. Priority:
30
60
  * 1. Explicit `agentConfig.traceServiceName` (the per-agent override).
31
- * 2. Protocol-default from the table above.
32
- * 3. `<connectorProtocol>-agent` heuristic (last-resort fallback).
33
- * 4. `<agentKey>-agent` as a final guess when protocol is unknown.
61
+ * 2. Protocol-default from the table above (connectors WE wrote — fixed,
62
+ * known service.name).
63
+ * 3. `undefined` (+ a loud `console.warn`) for `UNKNOWN_SERVICE_NAME_PROTOCOLS`
64
+ * (generic transport protocols where the remote service.name is NOT
65
+ * knowable) — deliberately does NOT fabricate a guessed name. See the
66
+ * set's doc comment for why a wrong guess is worse than no guess.
67
+ * 4. `<connectorProtocol>-agent` heuristic, but ONLY as a last resort for
68
+ * connector protocol strings outside both of the above (e.g. a
69
+ * user-configured custom connector key not in the upstream
70
+ * `ConnectorProtocol` union) — kept for backward compatibility since
71
+ * those are genuinely unknown rather than known-unknowable.
72
+ * 5. `<agentKey>-agent` as a final guess when protocol itself is unknown.
34
73
  *
35
74
  * Returns `undefined` when none of the above is derivable; the caller
36
75
  * should then skip Strategy C and fall back to Strategy B alone.
@@ -41,6 +80,16 @@ export function resolveAgentServiceName(args) {
41
80
  if (args.connectorProtocol && PROTOCOL_TO_SERVICE_NAME[args.connectorProtocol]) {
42
81
  return PROTOCOL_TO_SERVICE_NAME[args.connectorProtocol];
43
82
  }
83
+ if (args.connectorProtocol && UNKNOWN_SERVICE_NAME_PROTOCOLS.has(args.connectorProtocol)) {
84
+ // Loud and always-on (not gated behind a debug flag): silent wrong-name
85
+ // polling is exactly what caused the 2026-09-01 trace_timeout incident
86
+ // to go unnoticed for as long as it did. Surfacing this at resolve time
87
+ // (every poll attempt, not just once) means it shows up immediately in
88
+ // server logs for anyone running useTraces:true against a REST/
89
+ // openai-compatible/langgraph/strands agent without traceServiceName set.
90
+ console.warn(`[judgeAgentsHints] Agent${args.agentKey ? ` "${args.agentKey}"` : ''} (connectorProtocol="${args.connectorProtocol}") has no traceServiceName configured, and this protocol's service.name isn't fixed/known to agent-health — skipping Strategy C (service.name + time-window) trace correlation rather than guessing a name that would never match. Set traceServiceName in the agent config to the exact OTel resource service.name the agent's own OTel SDK emits, or trace-mode judging (useTraces:true) will rely on Strategy A/B/D only and may time out if those aren't available either.`);
91
+ return undefined;
92
+ }
44
93
  if (args.connectorProtocol)
45
94
  return `${args.connectorProtocol}-agent`;
46
95
  if (args.agentKey)
@@ -86,4 +135,96 @@ export function buildJudgeAgentsHints(report, agentTraceServiceName) {
86
135
  ...(report.sessionId ? { sessionId: report.sessionId } : {}),
87
136
  }];
88
137
  }
138
+ /**
139
+ * Resolve the id forwarded as `runId` to `/api/judge` (provider `agent`).
140
+ *
141
+ * The route hard-requires a truthy `runId` ("runId is required for the agent
142
+ * (trace) judge provider — its trace tools scope to it") because that's the
143
+ * ONLY thing the trace tools historically scoped on (Strategy B). But REST
144
+ * connectors never populate `report.runId` (`RESTConnector.execute()` returns
145
+ * `data.runId || data.id || null`, and agent response bodies here carry
146
+ * neither) — so any REST-connector agent using the `agent-trace-judge` model
147
+ * 400s before the judge ever runs, EVEN when Strategy C (`agents` hints,
148
+ * service.name + time-window) already has enough to find the real spans
149
+ * (root-caused via a live smoke test 2026-09-01:
150
+ * `example-rest-agent-variant` found its spans on poll attempt
151
+ * 1 once `traceServiceName` was set, then still 400'd on this exact gate).
152
+ *
153
+ * Fallback is `report.traceId` ONLY (the eval's own OTel `test_case` span) —
154
+ * deliberately NOT `report.id` (the storage doc id), and NOT `undefined`.
155
+ * Two different downstream consumers read this value with different safety
156
+ * properties:
157
+ * - `/api/traces` (`query_spans`): `traceJudgeTools.ts` sends it as
158
+ * `runIds:[runId]`, UNIONED (bool.should) with the `agents` Strategy-C
159
+ * hints, matched against `attributes.agent_health.run.id` /
160
+ * `attributes.gen_ai.conversation.id`. A value that matches no span is a
161
+ * harmless no-op contribution to that union — safe for ANY truthy
162
+ * string, including `report.id`.
163
+ * - `/api/logs` (`query_logs`): `fetchLogs()` (server/services/logsService.ts)
164
+ * treats a present `runId` as the ONLY filter — `match: { message: runId
165
+ * }` with NO time-range bound at all ("searching by runId, we want to
166
+ * find logs regardless of age"). `match` is analyzed: a hyphenated id
167
+ * like a `report.id` (e.g. `run-1788232186357-pxdnz1a4k`) tokenizes into
168
+ * `run` / `1788232186357` / `pxdnz1a4k` and would OR-match any log
169
+ * containing the extremely common word "run" anywhere in the cluster,
170
+ * unbounded by time — exactly the noise risk this codebase's Strategy-C
171
+ * docs warn about, but worse (no window). A 32-hex-char OTel `traceId`
172
+ * has no word boundaries for the analyzer to split on, so it behaves as
173
+ * one high-entropy token — realistically only ever matches a log line
174
+ * that legitimately contains this exact trace id.
175
+ *
176
+ * So `report.id` is NOT an acceptable fallback despite being always present:
177
+ * it is safe for `/api/traces` but unsafe for `/api/logs`. When `traceId` is
178
+ * ALSO absent (e.g. eval telemetry disabled), returning `undefined` and
179
+ * letting the route's original 400 stand is the correct fail-closed
180
+ * behavior — not a silent degrade into unscoped log search.
181
+ *
182
+ * The route's defense-in-depth check (`trajectoryRunIds.has(runId)`) only
183
+ * activates when trajectory steps carry a `.runId` field (SDK-derived
184
+ * trajectories); classic REST/subprocess trajectory steps never do, so this
185
+ * fallback can't trip that 403 either way.
186
+ */
187
+ export function resolveJudgeRunId(report) {
188
+ return report.runId || report.traceId || undefined;
189
+ }
190
+ /**
191
+ * Does this `/api/judge` (provider `agent`) request carry ANY correlation
192
+ * handle its trace-query tools can scope to?
193
+ *
194
+ * True when EITHER:
195
+ * - `runId` is truthy — Strategy B. By the time a well-behaved caller
196
+ * reaches the route this is often already {@link resolveJudgeRunId}'s
197
+ * `traceId` fallback rather than a native run id; the two are
198
+ * indistinguishable (and equally valid) from here on, so this check
199
+ * doesn't need to know which one it is.
200
+ * - at least one entry in `agents` (Strategy C/D hints from
201
+ * {@link buildJudgeAgentsHints}) carries a `serviceName` or `sessionId`.
202
+ *
203
+ * This is the fix for the bug `resolveJudgeRunId` alone didn't cover: the
204
+ * two SYNCHRONOUS (non-`useTraces`) judge call sites in
205
+ * `services/evaluation/index.ts` (`runEvaluationWithConnector`'s "STANDARD
206
+ * MODE" branch, used by every REST-connector agent that picks the
207
+ * `agent-trace-judge` model WITHOUT enabling trace-mode polling) already
208
+ * forward `agents` hints (`buildJudgeAgentsHints(...)`) — they just never
209
+ * had a `runId` to forward, because the connector never minted one and
210
+ * `report.traceId` isn't stamped yet at that point in the flow (that
211
+ * stamping happens later, in `evaluationRunner.ts`, only on the trace-mode
212
+ * branch). Pre-fix, `POST /api/judge`'s `if (!runId) return 400` rejected
213
+ * these requests unconditionally, even though the hints it had received in
214
+ * the SAME request body were already sufficient for the trace tools to
215
+ * find real spans — the hints mechanism existed (#264) but the gate fired
216
+ * first and never looked at it.
217
+ *
218
+ * Used by the route's `agent` provider gate (replacing the old
219
+ * `if (!runId)` check) and by {@link createTraceJudgeExtension}
220
+ * (`server/services/traceJudgeTools.ts`) to decide whether its tools are
221
+ * enabled at all — the gate and the tools must agree, or the route accepts
222
+ * a request whose tools then silently disable themselves and the judge
223
+ * degrades to trajectory-only reasoning without anyone being told.
224
+ */
225
+ export function hasTraceCorrelation(runId, agents) {
226
+ if (runId)
227
+ return true;
228
+ return Array.isArray(agents) && agents.some((a) => !!a && (!!a.serviceName || !!a.sessionId));
229
+ }
89
230
  //# sourceMappingURL=judgeAgentsHints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"judgeAgentsHints.js","sourceRoot":"","sources":["../../../../services/traces/judgeAgentsHints.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH;;;;;;GAMG;AACH,MAAM,wBAAwB,GAA2B;IACvD,aAAa,EAAE,mBAAmB;IAClC,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,gBAAgB,EAAE,uBAAuB;IACzC,YAAY,EAAE,kBAAkB;CACjC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,MAAM,CAAC;AAExB;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAC;AAczC;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAIvC;IACC,IAAI,IAAI,CAAC,qBAAqB;QAAE,OAAO,IAAI,CAAC,qBAAqB,CAAC;IAClE,IAAI,IAAI,CAAC,iBAAiB,IAAI,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC/E,OAAO,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,CAAC,iBAAiB;QAAE,OAAO,GAAG,IAAI,CAAC,iBAAiB,QAAQ,CAAC;IACrE,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,GAAG,IAAI,CAAC,QAAQ,QAAQ,CAAC;IACnD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA8G,EAC9G,qBAA8B;IAE9B,MAAM,WAAW,GAAG,uBAAuB,CAAC;QAC1C,qBAAqB;QACrB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC;IACH,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAE5B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,kBAAkB,EAAE,UAAU,IAAI,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,iBAAiB;IACjB,OAAO,CAAC;YACN,WAAW;YACX,SAAS,EAAE,EAAE,GAAG,IAAI;YACpB,OAAO,EAAE,EAAE,GAAG,IAAI;YAClB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"judgeAgentsHints.js","sourceRoot":"","sources":["../../../../services/traces/judgeAgentsHints.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messageExtraction.d.ts","sourceRoot":"","sources":["../../../../services/traces/messageExtraction.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,mBAAmB,EAAE,CAuBvB"}
1
+ {"version":3,"file":"messageExtraction.d.ts","sourceRoot":"","sources":["../../../../services/traces/messageExtraction.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,mBAAmB,EAAE,CA4BvB"}
@@ -11,15 +11,20 @@
11
11
  export function extractMessagesFromSpans(spans, serviceName) {
12
12
  if (!spans || spans.length === 0)
13
13
  return [];
14
- const isClaudeCode = serviceName === 'claude-code' ||
15
- spans.some(s => s.attributes?.['service.name'] === 'claude-code');
14
+ const isClaudeCode = serviceName?.startsWith('claude-code') ||
15
+ spans.some(s => String(s.attributes?.['service.name'] ?? '').startsWith('claude-code')) ||
16
+ spans.some(s => s.name?.startsWith('claude_code.'));
16
17
  const sorted = [...spans]
17
18
  .filter(s => s.startTime && !isNaN(new Date(s.startTime).getTime()))
18
19
  .sort((a, b) => new Date(a.startTime).getTime() - new Date(b.startTime).getTime());
19
20
  const messages = [];
21
+ // tool_use_ids that already produced a tool_result message from a `tool`
22
+ // span's own `tool.output` event, so the sibling `tool.execution` span
23
+ // (sorted after the call) doesn't push a duplicate result message.
24
+ const resultEmittedForToolUseId = new Set();
20
25
  for (const span of sorted) {
21
26
  if (isClaudeCode) {
22
- extractClaudeCodeMessages(span, messages);
27
+ extractClaudeCodeMessages(span, messages, resultEmittedForToolUseId);
23
28
  }
24
29
  else {
25
30
  extractGenericMessages(span, messages);
@@ -35,29 +40,41 @@ export function extractMessagesFromSpans(spans, serviceName) {
35
40
  *
36
41
  * Event names: user_prompt, api_request, tool_decision, tool_result
37
42
  */
38
- function extractClaudeCodeMessages(span, messages) {
43
+ function extractClaudeCodeMessages(span, messages, resultEmittedForToolUseId) {
39
44
  const events = span.events || [];
40
45
  const attrs = span.attributes || {};
41
46
  const spanName = span.name?.toLowerCase() || '';
42
- // User prompt events on interaction spans
47
+ // User prompt from interaction span attribute (Claude Code stores it directly)
48
+ if (spanName.includes('interaction') && attrs['user_prompt'] && attrs['user_prompt'] !== '<REDACTED>') {
49
+ messages.push({
50
+ id: `${span.spanId}-user-prompt`,
51
+ timestamp: span.startTime,
52
+ role: 'user',
53
+ content: String(attrs['user_prompt']),
54
+ metadata: { spanId: span.spanId, spanName: span.name },
55
+ });
56
+ }
57
+ // User prompt events on interaction spans (legacy path)
43
58
  for (const event of events) {
44
59
  if (event.name === 'user_prompt') {
45
60
  const content = event.attributes?.['user.prompt'] ||
46
61
  event.attributes?.['prompt'] ||
47
62
  event.attributes?.['content'] || '';
48
- messages.push({
49
- id: `${span.spanId}-user-prompt`,
50
- timestamp: event.time || span.startTime,
51
- role: 'user',
52
- content: content || '[User prompt — content not captured. Set OTEL_LOG_USER_PROMPTS=1]',
53
- metadata: { spanId: span.spanId, spanName: span.name },
54
- });
63
+ if (content && !messages.some(m => m.id === `${span.spanId}-user-prompt`)) {
64
+ messages.push({
65
+ id: `${span.spanId}-user-prompt-ev`,
66
+ timestamp: event.time || span.startTime,
67
+ role: 'user',
68
+ content: content || '[User prompt — content not captured. Set OTEL_LOG_USER_PROMPTS=1]',
69
+ metadata: { spanId: span.spanId, spanName: span.name },
70
+ });
71
+ }
55
72
  }
56
73
  }
57
74
  // Tool decision / tool call spans
58
- if (spanName.includes('tool') && !spanName.includes('execution')) {
75
+ if (spanName.includes('tool') && !spanName.includes('execution') && !spanName.includes('blocked')) {
59
76
  const toolName = attrs['tool_name'] || attrs['gen_ai.tool.name'] || attrs['tool.name'] || span.name;
60
- const toolInput = attrs['tool_input'] || attrs['gen_ai.tool.input'] || '';
77
+ const toolInput = attrs['tool_input'] || attrs['gen_ai.tool.input'] || attrs['full_command'] || '';
61
78
  // Check for tool_decision events
62
79
  const toolDecisionEvent = events.find(e => e.name === 'tool_decision');
63
80
  const input = toolDecisionEvent?.attributes?.['input'] ||
@@ -77,8 +94,36 @@ function extractClaudeCodeMessages(span, messages) {
77
94
  },
78
95
  });
79
96
  }
97
+ // tool.output event on the tool span (Claude Code emits output here).
98
+ // Dedup is symmetric with the tool.execution branch below: whichever one
99
+ // is processed first (normally this one, but a sibling tool.execution
100
+ // span could sort first under clock skew) marks the tool_use_id, and the
101
+ // other skips — so a tool call with both result shapes present never
102
+ // produces two tool_result messages regardless of span order.
103
+ const toolOutputEvent = events.find(e => e.name === 'tool.output');
104
+ if (toolOutputEvent) {
105
+ const output = toolOutputEvent.attributes?.['output'] ||
106
+ toolOutputEvent.attributes?.['result'] || '';
107
+ const toolUseId = attrs['tool_use_id'] || attrs['gen_ai.tool.call.id'];
108
+ const alreadyEmitted = toolUseId != null && resultEmittedForToolUseId.has(String(toolUseId));
109
+ if (output && !alreadyEmitted) {
110
+ if (toolUseId)
111
+ resultEmittedForToolUseId.add(String(toolUseId));
112
+ messages.push({
113
+ id: `${span.spanId}-tool-output-ev`,
114
+ timestamp: toolOutputEvent.time || span.endTime,
115
+ role: 'tool_result',
116
+ content: typeof output === 'object' ? JSON.stringify(output, null, 2) : String(output),
117
+ metadata: {
118
+ spanId: span.spanId,
119
+ spanName: span.name,
120
+ toolName: String(toolName),
121
+ },
122
+ });
123
+ }
124
+ }
80
125
  }
81
- // Tool result events
126
+ // Tool result events (legacy path)
82
127
  for (const event of events) {
83
128
  if (event.name === 'tool_result') {
84
129
  const content = event.attributes?.['result'] ||
@@ -99,8 +144,12 @@ function extractClaudeCodeMessages(span, messages) {
99
144
  }
100
145
  // Tool result from tool.execution span attributes (fallback)
101
146
  if (spanName.includes('tool.execution') || spanName.includes('tool_execution')) {
147
+ const execToolUseId = attrs['tool_use_id'] || attrs['gen_ai.tool.call.id'];
148
+ const alreadyEmitted = execToolUseId != null && resultEmittedForToolUseId.has(String(execToolUseId));
102
149
  const output = attrs['gen_ai.tool.output'] || attrs['tool.output'] || attrs['output'];
103
- if (output && !events.some(e => e.name === 'tool_result')) {
150
+ if (output && !alreadyEmitted && !events.some(e => e.name === 'tool_result')) {
151
+ if (execToolUseId != null)
152
+ resultEmittedForToolUseId.add(String(execToolUseId));
104
153
  messages.push({
105
154
  id: `${span.spanId}-tool-output`,
106
155
  timestamp: span.endTime,
@@ -187,25 +236,38 @@ function extractGenericMessages(span, messages) {
187
236
  });
188
237
  }
189
238
  }
190
- // Tool spans → tool_call + tool_result
239
+ // Tool spans → tool_call + tool_result.
240
+ // OTel GenAI conveys tool arguments/results three ways (issue #319/#320):
241
+ // spec attributes (gen_ai.tool.call.arguments/.result), span events
242
+ // (gen_ai.tool.message / gen_ai.choice — what Strands emits), and the
243
+ // legacy non-spec attribute names kept as vendor-compat fallbacks.
191
244
  const toolName = attrs['gen_ai.tool.name'] || attrs['tool.name'];
192
245
  if (toolName) {
193
- const toolInput = attrs['gen_ai.tool.input'] || attrs['input'];
194
- if (toolInput) {
195
- messages.push({
196
- id: `${span.spanId}-tool-call`,
197
- timestamp: span.startTime,
198
- role: 'tool_call',
199
- content: typeof toolInput === 'object' ? JSON.stringify(toolInput, null, 2) : String(toolInput),
200
- metadata: {
201
- spanId: span.spanId,
202
- spanName: span.name,
203
- toolName: String(toolName),
204
- durationMs: span.duration || (new Date(span.endTime).getTime() - new Date(span.startTime).getTime()),
205
- },
206
- });
207
- }
208
- const toolOutput = attrs['gen_ai.tool.output'] || attrs['output'];
246
+ const toolMessageEvent = events.find(e => e.name === 'gen_ai.tool.message');
247
+ const toolChoiceEvent = events.find(e => e.name === 'gen_ai.choice');
248
+ const toolInput = attrs['gen_ai.tool.call.arguments'] ||
249
+ toolMessageEvent?.attributes?.['content'] ||
250
+ attrs['gen_ai.tool.input'] || attrs['input'];
251
+ // Emit the tool_call even when arguments weren't captured — the tool WAS
252
+ // invoked, and the judge needs to see that (issue #320 root cause 2).
253
+ messages.push({
254
+ id: `${span.spanId}-tool-call`,
255
+ timestamp: span.startTime,
256
+ role: 'tool_call',
257
+ content: toolInput
258
+ ? (typeof toolInput === 'object' ? JSON.stringify(toolInput, null, 2) : String(toolInput))
259
+ : '',
260
+ metadata: {
261
+ spanId: span.spanId,
262
+ spanName: span.name,
263
+ toolName: String(toolName),
264
+ durationMs: span.duration || (new Date(span.endTime).getTime() - new Date(span.startTime).getTime()),
265
+ },
266
+ });
267
+ const toolOutput = attrs['gen_ai.tool.call.result'] ||
268
+ toolChoiceEvent?.attributes?.['message'] ||
269
+ toolChoiceEvent?.attributes?.['content'] ||
270
+ attrs['gen_ai.tool.output'] || attrs['output'];
209
271
  if (toolOutput) {
210
272
  messages.push({
211
273
  id: `${span.spanId}-tool-result`,
@@ -1 +1 @@
1
- {"version":3,"file":"messageExtraction.js","sourceRoot":"","sources":["../../../../services/traces/messageExtraction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageExtraction.js","sourceRoot":"","sources":["../../../../services/traces/messageExtraction.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spansToTrajectory.d.ts","sourceRoot":"","sources":["../../../../services/traces/spansToTrajectory.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAG/D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAuVD,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,CAGvF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAGvF"}
1
+ {"version":3,"file":"spansToTrajectory.d.ts","sourceRoot":"","sources":["../../../../services/traces/spansToTrajectory.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAG/D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2XD,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,CAGvF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAGvF"}