@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
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Improvement-strategy recovery from a judge's raw output.
3
+ *
4
+ * Why this exists
5
+ * ---------------
6
+ * Every judge provider persists the model's verbatim text on
7
+ * `report.llmJudgeResponse.rawResponse` and the parsed
8
+ * `improvement_strategies` array on `report.improvementStrategies` (plus the
9
+ * `[llm-judge]` matcher entry). For a window of time the agentic trace judge
10
+ * forced the parsed array to `[]` on the way out (an RFC-era stance that the
11
+ * verdict should not carry recommendations) while the raw text still held the
12
+ * full `improvement_strategies` the evaluator prompt asked for. Every report
13
+ * judged by that provider in the window therefore shows an empty Judge
14
+ * Evaluation tab even though the data is sitting one field over.
15
+ *
16
+ * This module is the single place that knows how to get those strategies
17
+ * back out of `rawResponse`. It is shared by:
18
+ *
19
+ * - the run-report UI (RunDetailsContent), which renders recovered
20
+ * strategies with a "recovered" notice instead of a blank section;
21
+ * - `scripts/backfill-improvement-strategies.ts`, which persists the
22
+ * recovered arrays so every other reader (comparison page, HTML report,
23
+ * failure clustering) sees them too.
24
+ *
25
+ * It lives in `lib/` (not `server/services/judgeResponseParser.ts`) because
26
+ * the browser bundle imports it and the SDK build (`tsconfig.lib.json`) must
27
+ * not pull the server tree in.
28
+ */
29
+ import type { ImprovementStrategy } from '../types/index.js';
30
+ /**
31
+ * Extract the JSON object from a raw judge response.
32
+ *
33
+ * Handles three observed shapes from the wild:
34
+ * - markdown ```json fenced blocks
35
+ * - bare `{...}` JSON
36
+ * - JSON with leading/trailing prose that some models still emit despite
37
+ * being told not to
38
+ *
39
+ * Returns `undefined` when no `{...}` substring is present at all.
40
+ */
41
+ export declare function extractJsonFromResponse(raw: string): string | undefined;
42
+ /**
43
+ * Coerce whatever the model emitted for `improvement_strategies` into a
44
+ * well-typed `ImprovementStrategy[]`. Non-object junk is dropped; a bare
45
+ * string (some older prompts/models emit an array of plain strings) becomes
46
+ * an entry with the string as the `issue`; an unknown `priority` defaults to
47
+ * `medium`. The run-report UI indexes straight into `strategy.category` /
48
+ * `strategy.priority`, so anything returned from here must be fully shaped.
49
+ */
50
+ export declare function normalizeImprovementStrategies(value: unknown): ImprovementStrategy[];
51
+ /**
52
+ * Re-parse a judge's raw text and return the `improvement_strategies` it
53
+ * contains, normalized. `[]` when the text is missing, not JSON, or carries
54
+ * no strategies. Never throws — this runs on every render of the judge tab.
55
+ */
56
+ export declare function recoverImprovementStrategies(rawResponse: string | undefined | null): ImprovementStrategy[];
57
+ /** The minimal report shape the helpers below read. */
58
+ export interface StrategyBearingReport {
59
+ improvementStrategies?: ImprovementStrategy[];
60
+ llmJudgeResponse?: {
61
+ rawResponse?: string;
62
+ improvementStrategies?: ImprovementStrategy[];
63
+ };
64
+ matcherResults?: Array<{
65
+ method?: string;
66
+ improvementStrategies?: ImprovementStrategy[];
67
+ }>;
68
+ }
69
+ /**
70
+ * Strategies to show for a report: the persisted array when present,
71
+ * otherwise whatever can be recovered from the raw judge text.
72
+ * `recovered` is true only when the UI is showing recovered (unpersisted)
73
+ * strategies, so callers can render a notice pointing at the backfill.
74
+ */
75
+ export declare function resolveImprovementStrategies(report: StrategyBearingReport): {
76
+ strategies: ImprovementStrategy[];
77
+ recovered: boolean;
78
+ };
79
+ /**
80
+ * The single `[llm-judge]` matcher row that the report-level judge response
81
+ * belongs to, or `undefined` when there isn't exactly one. A report with
82
+ * several judge rows (SDK tests calling `judge()` more than once) has one
83
+ * `llmJudgeResponse` for the LAST call only, so stamping its strategies onto
84
+ * every row would attribute advice to the wrong claim — in that case the
85
+ * report-level array is still shown/persisted but no row is touched.
86
+ */
87
+ export declare function soleJudgeMatcherIndex(report: StrategyBearingReport): number | undefined;
88
+ /** The exact PATCH body the backfill sends for one report. */
89
+ export interface ImprovementStrategiesBackfillPatch<R extends StrategyBearingReport = StrategyBearingReport> {
90
+ improvementStrategies: ImprovementStrategy[];
91
+ llmJudgeResponse: NonNullable<R['llmJudgeResponse']>;
92
+ matcherResults?: NonNullable<R['matcherResults']>;
93
+ }
94
+ /**
95
+ * Build the PATCH that persists recovered strategies onto a report, or
96
+ * `null` when there is nothing to do (strategies already stored, or none
97
+ * recoverable). Idempotent by construction: once applied, the top-level
98
+ * array is non-empty and the next call returns `null`.
99
+ *
100
+ * `PATCH /api/storage/runs/:id` shallow-merges top-level fields, so nested
101
+ * objects (`llmJudgeResponse`, `matcherResults`) are sent whole with only the
102
+ * strategies filled in. `matcherResults` is included only when the report has
103
+ * exactly one `[llm-judge]` row (see {@link soleJudgeMatcherIndex}) and that
104
+ * row's own array is empty; code matchers and already-populated judge rows
105
+ * are passed through untouched.
106
+ */
107
+ export declare function buildImprovementStrategiesBackfillPatch<R extends StrategyBearingReport>(report: R): ImprovementStrategiesBackfillPatch<R> | null;
108
+ //# sourceMappingURL=judgeStrategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judgeStrategies.d.ts","sourceRoot":"","sources":["../../judgeStrategies.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUvE;AAID;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,EAAE,CAqBpF;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,mBAAmB,EAAE,CAU1G;AAED,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,qBAAqB,CAAC,EAAE,mBAAmB,EAAE,CAAC;KAC/C,CAAC;IACF,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,qBAAqB,CAAC,EAAE,mBAAmB,EAAE,CAAC;KAC/C,CAAC,CAAC;CACJ;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,qBAAqB,GAC5B;IAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAO3D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAIvF;AAED,8DAA8D;AAC9D,MAAM,WAAW,kCAAkC,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB;IACzG,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;IAC7C,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACrD,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;CACnD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uCAAuC,CAAC,CAAC,SAAS,qBAAqB,EACrF,MAAM,EAAE,CAAC,GACR,kCAAkC,CAAC,CAAC,CAAC,GAAG,IAAI,CAc9C"}
@@ -0,0 +1,135 @@
1
+ /*
2
+ * Copyright OpenSearch Contributors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Extract the JSON object from a raw judge response.
7
+ *
8
+ * Handles three observed shapes from the wild:
9
+ * - markdown ```json fenced blocks
10
+ * - bare `{...}` JSON
11
+ * - JSON with leading/trailing prose that some models still emit despite
12
+ * being told not to
13
+ *
14
+ * Returns `undefined` when no `{...}` substring is present at all.
15
+ */
16
+ export function extractJsonFromResponse(raw) {
17
+ const trimmed = raw.trim();
18
+ const fenceMatch = trimmed.match(/```json\s*([\s\S]*?)\s*```/);
19
+ if (fenceMatch)
20
+ return fenceMatch[1];
21
+ const startIdx = trimmed.indexOf('{');
22
+ const endIdx = trimmed.lastIndexOf('}');
23
+ if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
24
+ return trimmed.slice(startIdx, endIdx + 1);
25
+ }
26
+ return undefined;
27
+ }
28
+ const VALID_STRATEGY_PRIORITIES = new Set(['high', 'medium', 'low']);
29
+ /**
30
+ * Coerce whatever the model emitted for `improvement_strategies` into a
31
+ * well-typed `ImprovementStrategy[]`. Non-object junk is dropped; a bare
32
+ * string (some older prompts/models emit an array of plain strings) becomes
33
+ * an entry with the string as the `issue`; an unknown `priority` defaults to
34
+ * `medium`. The run-report UI indexes straight into `strategy.category` /
35
+ * `strategy.priority`, so anything returned from here must be fully shaped.
36
+ */
37
+ export function normalizeImprovementStrategies(value) {
38
+ if (!Array.isArray(value))
39
+ return [];
40
+ const out = [];
41
+ for (const entry of value) {
42
+ if (typeof entry === 'string' && entry.trim()) {
43
+ out.push({ category: 'general', issue: entry, recommendation: '', priority: 'medium' });
44
+ continue;
45
+ }
46
+ if (!entry || typeof entry !== 'object')
47
+ continue;
48
+ const raw = entry;
49
+ const priority = typeof raw.priority === 'string' && VALID_STRATEGY_PRIORITIES.has(raw.priority)
50
+ ? raw.priority
51
+ : 'medium';
52
+ out.push({
53
+ category: typeof raw.category === 'string' ? raw.category : 'general',
54
+ issue: typeof raw.issue === 'string' ? raw.issue : '',
55
+ recommendation: typeof raw.recommendation === 'string' ? raw.recommendation : '',
56
+ priority,
57
+ });
58
+ }
59
+ return out;
60
+ }
61
+ /**
62
+ * Re-parse a judge's raw text and return the `improvement_strategies` it
63
+ * contains, normalized. `[]` when the text is missing, not JSON, or carries
64
+ * no strategies. Never throws — this runs on every render of the judge tab.
65
+ */
66
+ export function recoverImprovementStrategies(rawResponse) {
67
+ if (!rawResponse || !rawResponse.includes('improvement_strategies'))
68
+ return [];
69
+ const jsonText = extractJsonFromResponse(rawResponse);
70
+ if (!jsonText)
71
+ return [];
72
+ try {
73
+ const parsed = JSON.parse(jsonText);
74
+ return normalizeImprovementStrategies(parsed?.improvement_strategies);
75
+ }
76
+ catch {
77
+ return [];
78
+ }
79
+ }
80
+ /**
81
+ * Strategies to show for a report: the persisted array when present,
82
+ * otherwise whatever can be recovered from the raw judge text.
83
+ * `recovered` is true only when the UI is showing recovered (unpersisted)
84
+ * strategies, so callers can render a notice pointing at the backfill.
85
+ */
86
+ export function resolveImprovementStrategies(report) {
87
+ // Persisted arrays are normalized too, so a malformed stored entry can't
88
+ // crash the renderer any more than a recovered one can.
89
+ const stored = normalizeImprovementStrategies(report.improvementStrategies);
90
+ if (stored.length > 0)
91
+ return { strategies: stored, recovered: false };
92
+ const recovered = recoverImprovementStrategies(report.llmJudgeResponse?.rawResponse);
93
+ return { strategies: recovered, recovered: recovered.length > 0 };
94
+ }
95
+ /**
96
+ * The single `[llm-judge]` matcher row that the report-level judge response
97
+ * belongs to, or `undefined` when there isn't exactly one. A report with
98
+ * several judge rows (SDK tests calling `judge()` more than once) has one
99
+ * `llmJudgeResponse` for the LAST call only, so stamping its strategies onto
100
+ * every row would attribute advice to the wrong claim — in that case the
101
+ * report-level array is still shown/persisted but no row is touched.
102
+ */
103
+ export function soleJudgeMatcherIndex(report) {
104
+ const rows = report.matcherResults ?? [];
105
+ const judgeIdx = rows.map((m, i) => (m.method === 'llm-judge' ? i : -1)).filter((i) => i >= 0);
106
+ return judgeIdx.length === 1 ? judgeIdx[0] : undefined;
107
+ }
108
+ /**
109
+ * Build the PATCH that persists recovered strategies onto a report, or
110
+ * `null` when there is nothing to do (strategies already stored, or none
111
+ * recoverable). Idempotent by construction: once applied, the top-level
112
+ * array is non-empty and the next call returns `null`.
113
+ *
114
+ * `PATCH /api/storage/runs/:id` shallow-merges top-level fields, so nested
115
+ * objects (`llmJudgeResponse`, `matcherResults`) are sent whole with only the
116
+ * strategies filled in. `matcherResults` is included only when the report has
117
+ * exactly one `[llm-judge]` row (see {@link soleJudgeMatcherIndex}) and that
118
+ * row's own array is empty; code matchers and already-populated judge rows
119
+ * are passed through untouched.
120
+ */
121
+ export function buildImprovementStrategiesBackfillPatch(report) {
122
+ const { strategies, recovered } = resolveImprovementStrategies(report);
123
+ if (!recovered || !report.llmJudgeResponse)
124
+ return null;
125
+ const patch = {
126
+ improvementStrategies: strategies,
127
+ llmJudgeResponse: { ...report.llmJudgeResponse, improvementStrategies: strategies },
128
+ };
129
+ const idx = soleJudgeMatcherIndex(report);
130
+ if (idx !== undefined && !(report.matcherResults[idx].improvementStrategies?.length)) {
131
+ patch.matcherResults = report.matcherResults.map((m, i) => i === idx ? { ...m, improvementStrategies: strategies } : m);
132
+ }
133
+ return patch;
134
+ }
135
+ //# sourceMappingURL=judgeStrategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judgeStrategies.js","sourceRoot":"","sources":["../../judgeStrategies.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,23 @@
1
+ /**
2
+ * Chai-based `expect` with two extensions:
3
+ *
4
+ * 1. A recording plugin that captures every assertion outcome on the
5
+ * active matcher session (so the runner can persist per-matcher
6
+ * results and the UI can show a breakdown).
7
+ *
8
+ * 2. Custom matchers tailored to agent trajectories:
9
+ * - `.haveCalledTool(name)` — tool was invoked
10
+ * - `.haveStepsOfType(type)` — at least one step of given type
11
+ * - `.haveOutputMatching(regex)` — final response matches regex
12
+ * - `.haveCompletedWithin(ms)` — durationMs is below threshold
13
+ *
14
+ * Chai's BDD style: `expect(value).to.<matcher>(...)`.
15
+ */
16
+ import * as chai from 'chai';
1
17
  /** The user-facing `expect` — chai's expect with our plugin pre-installed. */
2
- export declare const expect: Chai.ExpectStatic;
18
+ export declare const expect: typeof chai.expect & {
19
+ soft: SoftExpect;
20
+ };
21
+ type SoftExpect = (val?: unknown, msg?: string) => Chai.Assertion;
22
+ export {};
3
23
  //# sourceMappingURL=expect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../../matchers/expect.ts"],"names":[],"mappings":"AA+LA,8EAA8E;AAC9E,eAAO,MAAM,MAAM,mBAAc,CAAC"}
1
+ {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../../matchers/expect.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAyL7B,8EAA8E;AAC9E,eAAO,MAAM,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAuB,CAAC;AAuCpF,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC"}
@@ -67,6 +67,21 @@ function ensurePluginsInstalled() {
67
67
  errorMessage: err?.message || String(err),
68
68
  });
69
69
  }
70
+ // `expect.soft(...)` (RFC 004 roadmap — non-throwing assertions):
71
+ // the failure is already recorded above; swallow instead of
72
+ // re-throwing so the rest of the test body keeps running and later
73
+ // matchers (traces/judge/evaluate calls) still execute. This is the
74
+ // ONLY difference from hard `expect()` — chaining, custom matchers,
75
+ // and negation all keep working unmodified because every chai
76
+ // assertion (built-in or custom) funnels through this same override,
77
+ // and chai's own addMethod/addProperty wrappers build the next chain
78
+ // link regardless of what this function returns. The runner's overall
79
+ // verdict is still the AND of every recorded gate (see `anyGateFailed`
80
+ // in services/evaluationRunner.ts) so a soft failure here still fails
81
+ // the test — it just doesn't truncate it.
82
+ if (utils.flag(this, 'ahSoft')) {
83
+ return;
84
+ }
70
85
  throw err;
71
86
  }
72
87
  };
@@ -137,6 +152,42 @@ function ensurePluginsInstalled() {
137
152
  ensurePluginsInstalled();
138
153
  /** The user-facing `expect` — chai's expect with our plugin pre-installed. */
139
154
  export const expect = chai.expect;
155
+ /**
156
+ * `expect.soft(value, message?)` — same chai assertion surface as
157
+ * `expect(value)` (every built-in BDD matcher plus our custom
158
+ * haveCalledTool/haveStepsOfType/haveOutputMatching/haveCompletedWithin/
159
+ * toPass), except a failing assertion RECORDS the MatcherResult and
160
+ * returns instead of throwing. Use it to collect every axis in a test body
161
+ * instead of bailing on the first failure:
162
+ *
163
+ * expect.soft(result.traces.totalTokens).to.be.lessThan(10_000); // fails — recorded, body continues
164
+ * expect.soft(result.traces.totalCost).to.be.lessThan(0.05); // still runs
165
+ * await judge(result, 'identifies the root cause'); // still runs
166
+ *
167
+ * The runner's overall verdict is unaffected by soft vs. hard: it already
168
+ * fails a test when ANY recorded gate matcher has `pass: false` (see
169
+ * `anyGateFailed` in services/evaluationRunner.ts), which is exactly how
170
+ * non-throwing `judge()`/`evaluate()` gates have always worked (RFC 004
171
+ * §4.4/§4.8) — `expect.soft` just extends that same non-throwing contract
172
+ * to chai assertions. Mix soft and hard freely in one body; a hard
173
+ * `expect()` after a soft failure still bails at that point.
174
+ *
175
+ * KNOWN LIMITATION (codex_review finding, empirically confirmed): a
176
+ * multi-step chain like `expect.soft(obj).to.have.property('x').that
177
+ * .equals(5)` is two chai assertions run back-to-back on the SAME
178
+ * Assertion instance. With a hard expect(), a missing property throws and
179
+ * `.that.equals(5)` never runs. In soft mode nothing throws, so
180
+ * `.that.equals(5)` DOES run (against `undefined`) and records its own
181
+ * derivative failure — real, but a symptom of the first, not independent
182
+ * signal. See docs/SDK.md's "Known limitation" callout; prefer single-step
183
+ * matchers on primitive values with `.soft`.
184
+ */
185
+ function softExpect(val, msg) {
186
+ const assertion = chai.expect(val, msg);
187
+ chai.util.flag(assertion, 'ahSoft', true);
188
+ return assertion;
189
+ }
190
+ expect.soft = softExpect;
140
191
  /**
141
192
  * Build a UI-friendly description for an assertion. Chai's raw msg/negateMsg
142
193
  * contain `#{this}`, `#{exp}`, `#{act}` placeholders that only get resolved
@@ -1 +1 @@
1
- {"version":3,"file":"expect.js","sourceRoot":"","sources":["../../../matchers/expect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expect.js","sourceRoot":"","sources":["../../../matchers/expect.ts"],"names":[],"mappings":"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"}
@@ -108,6 +108,10 @@ export interface JudgeResultLike {
108
108
  recommendation: string;
109
109
  priority: 'high' | 'medium' | 'low';
110
110
  }>;
111
+ /** Weighted overall across the evaluator's declared metrics (server-computed). */
112
+ overallScore?: number;
113
+ /** Non-metric structured judge output (facts, failure_causes, evidence, …). */
114
+ extraFields?: Record<string, unknown>;
111
115
  }
112
116
  export type { JudgeResult } from '../../types/index.js';
113
117
  //# sourceMappingURL=judgeAccessor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"judgeAccessor.d.ts","sourceRoot":"","sources":["../../../matchers/judgeAccessor.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,aAAa,EAAE,CAuBjF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAevE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,eAAe,EAC5B,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,aAAa,CA0Bf;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAoBxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,iBAAiB,GAAG;IAAE,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5F,WAAW,EAAE,eAAe,EAC5B,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,aAAa,CAcf;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAChE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,KAAK,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KACrC,CAAC,CAAC;CACJ;AA+BD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"judgeAccessor.d.ts","sourceRoot":"","sources":["../../../matchers/judgeAccessor.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,aAAa,EAAE,CAuBjF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAevE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,eAAe,EAC5B,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,aAAa,CAsCf;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAoBxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,iBAAiB,GAAG;IAAE,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5F,WAAW,EAAE,eAAe,EAC5B,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,aAAa,CAcf;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAChE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,KAAK,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AA+BD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
@@ -73,7 +73,14 @@ export function getJudgeReasoningText(report) {
73
73
  export function buildJudgeMatcherEntry(judgeResult, options) {
74
74
  const claim = options?.claim?.trim() || 'expected outcomes';
75
75
  const accuracy = judgeResult.metrics?.accuracy;
76
- const score = typeof accuracy === 'number' ? accuracy / 100 : undefined;
76
+ // Same headline precedence as the SDK judge(): legacy `accuracy` →
77
+ // server-computed weighted overall → none (never a fabricated 0).
78
+ const headline = typeof accuracy === 'number'
79
+ ? accuracy
80
+ : typeof judgeResult.overallScore === 'number'
81
+ ? judgeResult.overallScore
82
+ : undefined;
83
+ const score = headline !== undefined ? headline / 100 : undefined;
77
84
  const pass = judgeResult.passFailStatus === 'passed';
78
85
  const reasoning = judgeResult.llmJudgeReasoning ?? '';
79
86
  return {
@@ -84,7 +91,8 @@ export function buildJudgeMatcherEntry(judgeResult, options) {
84
91
  score,
85
92
  reasoning,
86
93
  ...(options?.model ? { model: options.model } : {}),
87
- ...(pass ? {} : { errorMessage: reasoning }),
94
+ // No `errorMessage` mirror: it used to copy `reasoning` verbatim on
95
+ // failure, which the UI then rendered twice. Reasoning is canonical.
88
96
  // Carry the rest of the judge payload through so SDK
89
97
  // `getJudgeMatcherResults()` consumers see the same data the
90
98
  // legacy report-level fields used to expose. See MatcherResult.
@@ -94,6 +102,9 @@ export function buildJudgeMatcherEntry(judgeResult, options) {
94
102
  ...(judgeResult.metrics && typeof judgeResult.metrics === 'object'
95
103
  ? { judgeMetrics: { ...judgeResult.metrics } }
96
104
  : {}),
105
+ ...(judgeResult.extraFields && typeof judgeResult.extraFields === 'object' && Object.keys(judgeResult.extraFields).length > 0
106
+ ? { judgeExtraFields: judgeResult.extraFields }
107
+ : {}),
97
108
  };
98
109
  }
99
110
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"judgeAccessor.js","sourceRoot":"","sources":["../../../matchers/judgeAccessor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsCH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAyB;IAC9D,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAC9B,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,CAAC,MAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oEAAoE;IACpE,2DAA2D;IAC3D,OAAO;QACL;YACE,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,MAAM;SAClB;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,iEAAiE;IACjE,kEAAkE;IAClE,oEAAoE;IACpE,oBAAoB;IACpB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IAC5D,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACzC,OAAO,OAAO,OAAO,WAAW,KAAK,OAAO,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;IAClE,CAAC,CAAC;SACD,IAAI,CAAC,aAAa,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAA4B,EAC5B,OAA4C;IAE5C,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,mBAAmB,CAAC;IAC5D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,KAAK,QAAQ,CAAC;IACrD,MAAM,SAAS,GAAG,WAAW,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAEtD,OAAO;QACL,WAAW,EAAE,UAAU,KAAK,EAAE;QAC9B,IAAI;QACJ,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,WAAW,CAAC,eAAe;QACvC,KAAK;QACL,SAAS;QACT,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QAC5C,qDAAqD;QACrD,6DAA6D;QAC7D,gEAAgE;QAChE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,WAAW,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAClG,CAAC,CAAC,EAAE,qBAAqB,EAAE,WAAW,CAAC,qBAAqB,EAAE;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ;YAChE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,GAAG,WAAW,CAAC,OAAO,EAAS,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAkB;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpD,4FAA4F;QAC5F,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAmC,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,GAAI,QAAoC,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;wBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,GAAG,KAAK,CAAC,MAAM,oBAAoB,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAA4F,EAC5F,WAA4B,EAC5B,OAA4C;IAE5C,MAAM,KAAK,GAAG,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;IAC7C,MAAM,CAAC,cAAc,GAAG,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE7C,sEAAsE;IACtE,mEAAmE;IACnE,qEAAqE;IACrE,oEAAoE;IACpE,sBAAsB;IACtB,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;IAEjD,OAAO,KAAK,CAAC;AACf,CAAC;AAgBD,+EAA+E;AAE/E;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,CAAS;IACvC,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,MAAwF;IACnH,IAAI,MAAM,CAAC,cAAc,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,MAAM,CAAC,cAAc,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,IAAI,EAAE,CAAC;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"judgeAccessor.js","sourceRoot":"","sources":["../../../matchers/judgeAccessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Best-effort extraction of structure from LLM-judge *reasoning prose*.
3
+ *
4
+ * The durable contract for structured judge output is `judgeExtraFields`
5
+ * (facts / failure_causes / evidence emitted as JSON by the judge prompt and
6
+ * captured by `server/services/judgeResponseParser.ts`). But the large body
7
+ * of already-persisted verdicts — and every evaluator whose prompt hasn't
8
+ * been upgraded — carries this information only inside the free-form
9
+ * `reasoning` string. Judges reliably write recognizable shapes there:
10
+ *
11
+ * 1. 'You can start accepting payments almost immediately' — PARTIALLY stated. …
12
+ * **Fact 1: Voucher is not visible at checkout.** — FULLY STATED. …
13
+ * Required fact 1 ('can start accepting payments'): FULLY STATED — …
14
+ * The expected source document is article 49d9e88f… However, the agent
15
+ * retrieved a different article (b6c9353c…)
16
+ *
17
+ * These parsers are deliberately conservative: they return nothing rather
18
+ * than guess, and the UI treats their output as an *annotation* on top of
19
+ * the verbatim reasoning (which stays available), never a replacement.
20
+ * Structured `judgeExtraFields` always wins over a parse when present.
21
+ */
22
+ export type FactVerdictKind = 'stated' | 'partial' | 'missing' | 'contradicted';
23
+ export interface ParsedFactVerdict {
24
+ /** The required fact / claim text as the judge quoted it. */
25
+ fact: string;
26
+ verdict: FactVerdictKind;
27
+ /** Trailing judge note for this fact, when one directly follows. */
28
+ note?: string;
29
+ }
30
+ export interface ParsedSourceMismatch {
31
+ /** Doc/article id the test expected the agent to cite (truncated ok). */
32
+ expected: string;
33
+ /** Doc/article id the agent actually cited/retrieved. */
34
+ cited: string;
35
+ }
36
+ /**
37
+ * Extract per-required-fact verdicts from judge reasoning prose.
38
+ * Returns `[]` when nothing that looks like a fact list is present —
39
+ * callers must fall back to showing the raw reasoning.
40
+ */
41
+ export declare function parseFactVerdicts(reasoning: string | undefined): ParsedFactVerdict[];
42
+ /**
43
+ * Detect an "expected source X but cited/retrieved Y" statement.
44
+ * Conservative: both ids must be present and differ.
45
+ */
46
+ export declare function parseSourceMismatch(reasoning: string | undefined): ParsedSourceMismatch | null;
47
+ /** Shorten a long doc id for display: `49d9e88fadbf…` (first 8 chars). */
48
+ export declare function shortId(id: string): string;
49
+ //# sourceMappingURL=judgeReasoningParse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judgeReasoningParse.d.ts","sourceRoot":"","sources":["../../../matchers/judgeReasoningParse.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;AAEhF,MAAM,WAAW,iBAAiB;IAChC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,CAAC;IACzB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;CACf;AA0CD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,EAAE,CAyBpF;AAaD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,oBAAoB,GAAG,IAAI,CAkC9F;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE1C"}