elasticdash-test 0.1.16 → 0.1.17-alpha-2

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 (86) hide show
  1. package/dist/cloud-client.d.ts +34 -0
  2. package/dist/cloud-client.d.ts.map +1 -0
  3. package/dist/cloud-client.js +103 -0
  4. package/dist/cloud-client.js.map +1 -0
  5. package/dist/dashboard-server.d.ts.map +1 -1
  6. package/dist/dashboard-server.js +425 -90
  7. package/dist/dashboard-server.js.map +1 -1
  8. package/dist/evaluators/determinism.d.ts +3 -0
  9. package/dist/evaluators/determinism.d.ts.map +1 -0
  10. package/dist/evaluators/determinism.js +116 -0
  11. package/dist/evaluators/determinism.js.map +1 -0
  12. package/dist/evaluators/index.d.ts +4 -0
  13. package/dist/evaluators/index.d.ts.map +1 -0
  14. package/dist/evaluators/index.js +61 -0
  15. package/dist/evaluators/index.js.map +1 -0
  16. package/dist/evaluators/latency-budget.d.ts +3 -0
  17. package/dist/evaluators/latency-budget.d.ts.map +1 -0
  18. package/dist/evaluators/latency-budget.js +45 -0
  19. package/dist/evaluators/latency-budget.js.map +1 -0
  20. package/dist/evaluators/llm-judge.d.ts +3 -0
  21. package/dist/evaluators/llm-judge.d.ts.map +1 -0
  22. package/dist/evaluators/llm-judge.js +122 -0
  23. package/dist/evaluators/llm-judge.js.map +1 -0
  24. package/dist/evaluators/output-contains.d.ts +3 -0
  25. package/dist/evaluators/output-contains.d.ts.map +1 -0
  26. package/dist/evaluators/output-contains.js +52 -0
  27. package/dist/evaluators/output-contains.js.map +1 -0
  28. package/dist/evaluators/output-schema.d.ts +3 -0
  29. package/dist/evaluators/output-schema.d.ts.map +1 -0
  30. package/dist/evaluators/output-schema.js +58 -0
  31. package/dist/evaluators/output-schema.js.map +1 -0
  32. package/dist/evaluators/token-budget.d.ts +3 -0
  33. package/dist/evaluators/token-budget.d.ts.map +1 -0
  34. package/dist/evaluators/token-budget.js +45 -0
  35. package/dist/evaluators/token-budget.js.map +1 -0
  36. package/dist/evaluators/types.d.ts +103 -0
  37. package/dist/evaluators/types.d.ts.map +1 -0
  38. package/dist/evaluators/types.js +6 -0
  39. package/dist/evaluators/types.js.map +1 -0
  40. package/dist/html/dashboard.html +359 -73
  41. package/dist/index.cjs +253 -14
  42. package/dist/index.d.ts +2 -2
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/interceptors/telemetry-push.d.ts +40 -0
  47. package/dist/interceptors/telemetry-push.d.ts.map +1 -1
  48. package/dist/interceptors/telemetry-push.js +129 -6
  49. package/dist/interceptors/telemetry-push.js.map +1 -1
  50. package/dist/interceptors/tool.d.ts.map +1 -1
  51. package/dist/interceptors/tool.js +8 -1
  52. package/dist/interceptors/tool.js.map +1 -1
  53. package/dist/interceptors/workflow-ai.d.ts.map +1 -1
  54. package/dist/interceptors/workflow-ai.js +21 -6
  55. package/dist/interceptors/workflow-ai.js.map +1 -1
  56. package/dist/internals/mock-resolver.d.ts +70 -2
  57. package/dist/internals/mock-resolver.d.ts.map +1 -1
  58. package/dist/internals/mock-resolver.js +157 -6
  59. package/dist/internals/mock-resolver.js.map +1 -1
  60. package/dist/test-group/cli.d.ts +8 -0
  61. package/dist/test-group/cli.d.ts.map +1 -0
  62. package/dist/test-group/cli.js +162 -0
  63. package/dist/test-group/cli.js.map +1 -0
  64. package/dist/test-group/git-context.d.ts +3 -0
  65. package/dist/test-group/git-context.d.ts.map +1 -0
  66. package/dist/test-group/git-context.js +59 -0
  67. package/dist/test-group/git-context.js.map +1 -0
  68. package/dist/test-group/reporter.d.ts +4 -0
  69. package/dist/test-group/reporter.d.ts.map +1 -0
  70. package/dist/test-group/reporter.js +54 -0
  71. package/dist/test-group/reporter.js.map +1 -0
  72. package/dist/test-group/runner.d.ts +18 -0
  73. package/dist/test-group/runner.d.ts.map +1 -0
  74. package/dist/test-group/runner.js +234 -0
  75. package/dist/test-group/runner.js.map +1 -0
  76. package/dist/workflow-runner-worker.js +7 -1
  77. package/dist/workflow-runner-worker.js.map +1 -1
  78. package/package.json +1 -1
  79. package/src/dashboard-server.ts +101 -28
  80. package/src/html/dashboard.html +359 -73
  81. package/src/index.ts +2 -2
  82. package/src/interceptors/telemetry-push.ts +159 -7
  83. package/src/interceptors/tool.ts +9 -1
  84. package/src/interceptors/workflow-ai.ts +22 -6
  85. package/src/internals/mock-resolver.ts +190 -7
  86. package/src/workflow-runner-worker.ts +11 -3
@@ -20,7 +20,7 @@
20
20
  * - object → recurse on every value
21
21
  * - other → return unchanged
22
22
  */
23
- function normaliseMockResult(value) {
23
+ export function normaliseMockResult(value) {
24
24
  if (typeof value === 'string') {
25
25
  try {
26
26
  return normaliseMockResult(JSON.parse(value));
@@ -148,8 +148,12 @@ export function replaceSystemPrompt(input, newSystemPrompt) {
148
148
  * If a prompt mock is configured for the system prompt found in `input`, returns
149
149
  * a copy of `input` with the system prompt replaced. Otherwise returns `undefined`.
150
150
  *
151
- * `__ELASTICDASH_PROMPT_MOCKS__` is `Record<string, string>` keyed by the original
152
- * system prompt text, set by the worker/dashboard before the workflow runs.
151
+ * `__ELASTICDASH_PROMPT_MOCKS__` is `Record<string, SystemPromptMockEntry>` keyed by
152
+ * the original system prompt text. Supports replace-all and replace-specific modes
153
+ * with per-text call counting.
154
+ *
155
+ * For backward compatibility, also accepts the legacy `Record<string, string>` format
156
+ * (treated as replace-all).
153
157
  */
154
158
  export function resolvePromptMock(input) {
155
159
  const g = globalThis;
@@ -159,10 +163,157 @@ export function resolvePromptMock(input) {
159
163
  const systemPrompt = extractSystemPrompt(input);
160
164
  if (systemPrompt === undefined)
161
165
  return undefined;
162
- const newSystemPrompt = mocks[systemPrompt];
163
- if (newSystemPrompt === undefined)
166
+ const match = lookupMockEntry(mocks, systemPrompt);
167
+ if (!match)
168
+ return undefined;
169
+ const entry = match.entry;
170
+ // Legacy format: plain string replacement (treat as replace-all)
171
+ if (typeof entry === 'string') {
172
+ return replaceSystemPrompt(input, entry);
173
+ }
174
+ if (entry.mode === 'live')
164
175
  return undefined;
165
- return replaceSystemPrompt(input, newSystemPrompt);
176
+ // Initialise per-text call counters
177
+ if (!g['__ELASTICDASH_PROMPT_CALL_COUNTERS__']) {
178
+ g['__ELASTICDASH_PROMPT_CALL_COUNTERS__'] = {};
179
+ }
180
+ const counters = g['__ELASTICDASH_PROMPT_CALL_COUNTERS__'];
181
+ counters[match.key] = (counters[match.key] ?? 0) + 1;
182
+ const callNumber = counters[match.key];
183
+ if (entry.mode === 'replace-all') {
184
+ return replaceSystemPrompt(input, entry.replacement);
185
+ }
186
+ if (entry.mode === 'replace-specific') {
187
+ const indices = entry.callIndices ?? [];
188
+ if (indices.includes(callNumber)) {
189
+ return replaceSystemPrompt(input, entry.replacement);
190
+ }
191
+ }
192
+ return undefined;
193
+ }
194
+ /**
195
+ * Strips one layer of JSON string quoting if present.
196
+ * `'"hello"'` → `'hello'`, `'hello'` → `'hello'`
197
+ */
198
+ function stripJsonQuotes(s) {
199
+ if (s.length >= 2 && s.startsWith('"') && s.endsWith('"')) {
200
+ try {
201
+ const parsed = JSON.parse(s);
202
+ if (typeof parsed === 'string')
203
+ return parsed;
204
+ }
205
+ catch { /* not valid JSON, return as-is */ }
206
+ }
207
+ return s;
208
+ }
209
+ /**
210
+ * Look up a mock entry by key, falling back to stripped-quotes variants
211
+ * to handle mismatches between trace-recorded text and runtime text.
212
+ */
213
+ export function lookupMockEntry(mocks, text) {
214
+ if (mocks[text])
215
+ return { key: text, entry: mocks[text] };
216
+ // Try stripping quotes from the runtime text
217
+ const stripped = stripJsonQuotes(text);
218
+ if (stripped !== text && mocks[stripped])
219
+ return { key: stripped, entry: mocks[stripped] };
220
+ // Try adding quotes to the runtime text (mock key might have quotes)
221
+ const quoted = JSON.stringify(text);
222
+ if (quoted !== text && mocks[quoted])
223
+ return { key: quoted, entry: mocks[quoted] };
224
+ return undefined;
225
+ }
226
+ /**
227
+ * Extracts all user-role message content strings from an LLM call input.
228
+ * Handles OpenAI-style `{ messages: [...] }` and plain message arrays.
229
+ */
230
+ export function extractUserPrompts(input) {
231
+ if (!input || typeof input !== 'object')
232
+ return [];
233
+ const o = input;
234
+ const msgs = Array.isArray(o.messages) ? o.messages : (Array.isArray(input) ? input : null);
235
+ if (!msgs)
236
+ return [];
237
+ const results = [];
238
+ for (const m of msgs) {
239
+ if (m && typeof m === 'object') {
240
+ const msg = m;
241
+ if (msg.role === 'user' && typeof msg.content === 'string')
242
+ results.push(msg.content);
243
+ }
244
+ }
245
+ return results;
246
+ }
247
+ /**
248
+ * Returns a shallow copy of `input` with all user-role messages whose content
249
+ * matches `originalText` replaced with `newText`.
250
+ */
251
+ export function replaceUserPrompt(input, originalText, newText) {
252
+ if (!input || typeof input !== 'object')
253
+ return input;
254
+ const o = input;
255
+ const replaceInMsgs = (msgs) => msgs.map(m => {
256
+ if (m && typeof m === 'object') {
257
+ const msg = m;
258
+ if (msg.role === 'user' && typeof msg.content === 'string' && msg.content === originalText) {
259
+ return { ...msg, content: newText };
260
+ }
261
+ }
262
+ return m;
263
+ });
264
+ if (Array.isArray(input))
265
+ return replaceInMsgs(input);
266
+ if (Array.isArray(o.messages))
267
+ return { ...o, messages: replaceInMsgs(o.messages) };
268
+ return input;
269
+ }
270
+ /**
271
+ * If user prompt mocks are configured, applies all matching replacements to `input`.
272
+ * Returns modified input or `undefined` if no replacements applied.
273
+ *
274
+ * `__ELASTICDASH_USER_PROMPT_MOCKS__` is `Record<string, UserPromptMockEntry>` keyed
275
+ * by original user message text.
276
+ *
277
+ * Call counting is per unique text — "the x-th LLM call where this text appears".
278
+ */
279
+ export function resolveUserPromptMock(input) {
280
+ const g = globalThis;
281
+ const mocks = g['__ELASTICDASH_USER_PROMPT_MOCKS__'];
282
+ if (!mocks || Object.keys(mocks).length === 0)
283
+ return undefined;
284
+ const userPrompts = extractUserPrompts(input);
285
+ if (userPrompts.length === 0)
286
+ return undefined;
287
+ // Initialise per-text call counters
288
+ if (!g['__ELASTICDASH_USER_PROMPT_CALL_COUNTERS__']) {
289
+ g['__ELASTICDASH_USER_PROMPT_CALL_COUNTERS__'] = {};
290
+ }
291
+ const counters = g['__ELASTICDASH_USER_PROMPT_CALL_COUNTERS__'];
292
+ // Determine which texts in this call have active mock entries
293
+ const uniqueTexts = Array.from(new Set(userPrompts));
294
+ let modified = false;
295
+ let result = input;
296
+ for (const text of uniqueTexts) {
297
+ const match = lookupMockEntry(mocks, text);
298
+ if (!match || match.entry.mode === 'live')
299
+ continue;
300
+ const entry = match.entry;
301
+ // Increment counter for this text (this is the x-th call where this text appears)
302
+ counters[match.key] = (counters[match.key] ?? 0) + 1;
303
+ const callNumber = counters[match.key];
304
+ if (entry.mode === 'replace-all') {
305
+ result = replaceUserPrompt(result, text, entry.replacement);
306
+ modified = true;
307
+ }
308
+ else if (entry.mode === 'replace-specific') {
309
+ const indices = entry.callIndices ?? [];
310
+ if (indices.includes(callNumber)) {
311
+ result = replaceUserPrompt(result, text, entry.replacement);
312
+ modified = true;
313
+ }
314
+ }
315
+ }
316
+ return modified ? result : undefined;
166
317
  }
167
318
  /**
168
319
  * Resolves whether the current call to `modelName` should be mocked.
@@ -1 +1 @@
1
- {"version":3,"file":"mock-resolver.js","sourceRoot":"","sources":["../../src/internals/mock-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock-resolver.js","sourceRoot":"","sources":["../../src/internals/mock-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuBH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAA;QAAC,CAAC;IAC9E,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACvC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,GAAG,GAA4B,EAAE,CAAA;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACjC,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,CAAC,GAAG,UAAqC,CAAA;IAE/C,MAAM,KAAK,GAAG,CAAC,CAAC,4BAA4B,CAA8C,CAAA;IAC1F,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAEpC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAE7D,6CAA6C;IAC7C,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,EAAE,CAAC;QAC7C,CAAC,CAAC,oCAAoC,CAAC,GAAG,EAA4B,CAAA;IACxE,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,CAAC,oCAAoC,CAA2B,CAAA;IAClF,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAErC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAA;IAC3D,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;QACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;YACjC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAA;QACxE,CAAC;QACD,4DAA4D;QAC5D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACzD,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,MAAM,CAAA;IACjD,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,YAAY,CAAA;IAC1F,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACxG,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,CAA4B,CAAA;gBACxC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAA;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,eAAuB;IACzE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAA;IAC1E,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA;IACtF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAQ,KAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAClC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,CAA4B,CAAA;gBACxC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;oBAAE,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAA;YAC3G,CAAC;YACD,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,GAAG,CAAC;YACJ,QAAQ,EAAG,CAAC,CAAC,QAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC1C,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC/B,MAAM,GAAG,GAAG,CAA4B,CAAA;oBACxC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;wBAAE,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAA;gBAC3G,CAAC;gBACD,OAAO,CAAC,CAAA;YACV,CAAC,CAAC;SACH,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAeD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,CAAC,GAAG,UAAqC,CAAA;IAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,8BAA8B,CAA+D,CAAA;IAC7G,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC/D,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAEhD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;IAEzB,iEAAiE;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,SAAS,CAAA;IAE3C,oCAAoC;IACpC,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,EAAE,CAAC;QAC/C,CAAC,CAAC,sCAAsC,CAAC,GAAG,EAA4B,CAAA;IAC1E,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,CAAC,sCAAsC,CAA2B,CAAA;IACpF,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEtC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;QACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,CAAS;IAChC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAA;QAC/C,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAI,KAAwB,EAAE,IAAY;IACvE,IAAI,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;IACzD,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAA;IAC1F,qEAAqE;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAA;IAClF,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAClD,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACxG,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,CAA4B,CAAA;YACxC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACvF,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,YAAoB,EAAE,OAAe;IACrF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,CAAC,GAAG,KAAgC,CAAA;IAE1C,MAAM,aAAa,GAAG,CAAC,IAAe,EAAa,EAAE,CACnD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACX,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,CAA4B,CAAA;YACxC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC3F,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;YACrC,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IAEJ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC,KAAkB,CAAC,CAAA;IAClE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,QAAqB,CAAC,EAAE,CAAA;IAChG,OAAO,KAAK,CAAA;AACd,CAAC;AAeD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,CAAC,GAAG,UAAqC,CAAA;IAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,mCAAmC,CAAqC,CAAA;IACxF,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAE/D,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAE9C,oCAAoC;IACpC,IAAI,CAAC,CAAC,CAAC,2CAA2C,CAAC,EAAE,CAAC;QACpD,CAAC,CAAC,2CAA2C,CAAC,GAAG,EAA4B,CAAA;IAC/E,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,CAAC,2CAA2C,CAA2B,CAAA;IAEzF,8DAA8D;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;IACpD,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAQ;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QAEzB,kFAAkF;QAClF,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEtC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;YAC3D,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;YACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;gBAC3D,QAAQ,GAAG,IAAI,CAAA;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,CAAC,GAAG,UAAqC,CAAA;IAE/C,MAAM,KAAK,GAAG,CAAC,CAAC,0BAA0B,CAA4C,CAAA;IACtF,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAEpC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;IAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAE7D,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC,EAAE,CAAC;QAC3C,CAAC,CAAC,kCAAkC,CAAC,GAAG,EAA4B,CAAA;IACtE,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,CAAC,kCAAkC,CAA2B,CAAA;IAChF,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAEtC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAA;IAC3D,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;QACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;YACjC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAA;QACxE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Test-group CLI command tree.
3
+ * Fully self-contained — does not import dashboard-server, browser-ui,
4
+ * matchers, registry, or the .ai.test.ts runner.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function registerTestGroupCommand(program: Command): void;
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/test-group/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0K/D"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Test-group CLI command tree.
3
+ * Fully self-contained — does not import dashboard-server, browser-ui,
4
+ * matchers, registry, or the .ai.test.ts runner.
5
+ */
6
+ import { writeFileSync, mkdirSync } from 'node:fs';
7
+ import path from 'node:path';
8
+ import { resolveCloudConfig, fetchTestGroups, pushRunResult, pushBatchResult, exportTestGroups } from '../cloud-client.js';
9
+ import { runAllTestGroups } from './runner.js';
10
+ import { reportBatchResult } from './reporter.js';
11
+ import { collectGitContext } from './git-context.js';
12
+ export function registerTestGroupCommand(program) {
13
+ const tg = program
14
+ .command('test-group')
15
+ .description('Run, list, or export cloud-managed test groups (CI/CD mode)')
16
+ .option('--api-url <url>', 'ElasticDash API URL')
17
+ .option('--api-key <key>', 'ElasticDash API key')
18
+ .option('--project-id <id>', 'Project ID', '1');
19
+ // ── test-group run ──────────────────────────────────────────
20
+ tg.command('run')
21
+ .description('Fetch test groups from cloud, execute locally, evaluate, and push results')
22
+ .option('--all', 'Run all test groups for the project')
23
+ .option('--name <name>', 'Run a specific test group by name')
24
+ .option('--tag <tag>', 'Run test groups matching a tag')
25
+ .option('--override-run-count <n>', 'Override run count for all groups', (v) => parseInt(v))
26
+ .action(async (opts) => {
27
+ try {
28
+ const parentOpts = tg.opts();
29
+ const config = resolveCloudConfig({
30
+ apiUrl: parentOpts.apiUrl,
31
+ apiKey: parentOpts.apiKey,
32
+ projectId: parentOpts.projectId,
33
+ });
34
+ // Fetch test groups
35
+ console.log('[elasticdash] Fetching test groups...');
36
+ let groups = await fetchTestGroups(config, {
37
+ tags: opts.tag ? [opts.tag] : undefined,
38
+ });
39
+ if (opts.name) {
40
+ groups = groups.filter((g) => g.name === opts.name);
41
+ }
42
+ if (groups.length === 0) {
43
+ console.error('[elasticdash] No test groups found matching the filters.');
44
+ process.exit(2);
45
+ }
46
+ console.log(`[elasticdash] Running ${groups.length} test group(s)...`);
47
+ const cwd = process.cwd();
48
+ const gitContext = collectGitContext();
49
+ // Execute all groups
50
+ const batch = await runAllTestGroups(groups, cwd, {
51
+ overrideRunCount: opts.overrideRunCount,
52
+ });
53
+ // Attach git context
54
+ if (gitContext) {
55
+ batch.gitContext = gitContext;
56
+ for (const result of batch.results) {
57
+ result.gitContext = gitContext;
58
+ }
59
+ }
60
+ // Push results to cloud
61
+ const runIds = [];
62
+ for (const result of batch.results) {
63
+ try {
64
+ const pushed = await pushRunResult(config, result.testGroupId, result);
65
+ runIds.push(pushed.id);
66
+ }
67
+ catch (err) {
68
+ console.error(`[elasticdash] Failed to push results for "${result.summary.split(':')[0]}": ${err.message}`);
69
+ }
70
+ }
71
+ // Push batch
72
+ if (runIds.length > 0) {
73
+ try {
74
+ await pushBatchResult(config, {
75
+ testGroupRunIds: runIds,
76
+ gitBranch: gitContext?.branch,
77
+ gitCommit: gitContext?.commit,
78
+ passed: batch.passed,
79
+ summary: batch.summary,
80
+ });
81
+ }
82
+ catch (err) {
83
+ console.error(`[elasticdash] Failed to push batch result: ${err.message}`);
84
+ }
85
+ }
86
+ // Print report
87
+ const cloudUrl = config.apiUrl ? `${config.apiUrl}/results` : undefined;
88
+ reportBatchResult(batch, cloudUrl);
89
+ process.exit(batch.passed ? 0 : 1);
90
+ }
91
+ catch (err) {
92
+ console.error(`[elasticdash] Error: ${err.message}`);
93
+ process.exit(2);
94
+ }
95
+ });
96
+ // ── test-group list ─────────────────────────────────────────
97
+ tg.command('list')
98
+ .description('List test groups from the cloud platform')
99
+ .action(async () => {
100
+ try {
101
+ const parentOpts = tg.opts();
102
+ const config = resolveCloudConfig({
103
+ apiUrl: parentOpts.apiUrl,
104
+ apiKey: parentOpts.apiKey,
105
+ projectId: parentOpts.projectId,
106
+ });
107
+ const groups = await fetchTestGroups(config);
108
+ if (groups.length === 0) {
109
+ console.log('No test groups found.');
110
+ return;
111
+ }
112
+ // Print table
113
+ console.log('');
114
+ console.log(`${'Name'.padEnd(35)} ${'Workflow'.padEnd(25)} ${'Runs'.padEnd(6)} ${'Expectations'.padEnd(14)} Tags`);
115
+ console.log('─'.repeat(100));
116
+ for (const g of groups) {
117
+ const name = (g.name || '(unnamed)').slice(0, 34).padEnd(35);
118
+ const workflow = (g.workflowName || '').slice(0, 24).padEnd(25);
119
+ const runs = String(g.runCount).padEnd(6);
120
+ const expectations = String(g.expectations?.length ?? 0).padEnd(14);
121
+ const tags = (g.tags ?? []).join(', ');
122
+ console.log(`${name} ${workflow} ${runs} ${expectations} ${tags}`);
123
+ }
124
+ console.log('');
125
+ console.log(`Total: ${groups.length} test group(s)`);
126
+ }
127
+ catch (err) {
128
+ console.error(`[elasticdash] Error: ${err.message}`);
129
+ process.exit(2);
130
+ }
131
+ });
132
+ // ── test-group export ───────────────────────────────────────
133
+ tg.command('export')
134
+ .description('Export test groups to a local JSON file')
135
+ .option('--output <path>', 'Output file path', '.elasticdash/test-groups.json')
136
+ .action(async (opts) => {
137
+ try {
138
+ const parentOpts = tg.opts();
139
+ const config = resolveCloudConfig({
140
+ apiUrl: parentOpts.apiUrl,
141
+ apiKey: parentOpts.apiKey,
142
+ projectId: parentOpts.projectId,
143
+ });
144
+ const groups = await exportTestGroups(config);
145
+ const cwd = process.cwd();
146
+ const outputPath = path.resolve(cwd, opts.output);
147
+ // Prevent path traversal outside the project directory
148
+ if (!outputPath.startsWith(cwd + path.sep) && outputPath !== cwd) {
149
+ console.error(`[elasticdash] Error: Output path must be within the project directory.`);
150
+ process.exit(2);
151
+ }
152
+ mkdirSync(path.dirname(outputPath), { recursive: true });
153
+ writeFileSync(outputPath, JSON.stringify(groups, null, 2) + '\n');
154
+ console.log(`[elasticdash] Exported ${groups.length} test group(s) to ${outputPath}`);
155
+ }
156
+ catch (err) {
157
+ console.error(`[elasticdash] Error: ${err.message}`);
158
+ process.exit(2);
159
+ }
160
+ });
161
+ }
162
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/test-group/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GitContext } from '../evaluators/types.js';
2
+ export declare function collectGitContext(): GitContext | undefined;
3
+ //# sourceMappingURL=git-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-context.d.ts","sourceRoot":"","sources":["../../src/test-group/git-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD,wBAAgB,iBAAiB,IAAI,UAAU,GAAG,SAAS,CAqD1D"}
@@ -0,0 +1,59 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ export function collectGitContext() {
3
+ try {
4
+ // GitHub Actions — use CI-provided env vars for richer context
5
+ if (process.env.GITHUB_ACTIONS) {
6
+ const branch = process.env.GITHUB_HEAD_REF || // PR source branch
7
+ process.env.GITHUB_REF_NAME || // push branch
8
+ process.env.GITHUB_REF?.replace('refs/heads/', '') ||
9
+ '';
10
+ const commit = process.env.GITHUB_SHA || '';
11
+ const commitMessage = gitExec('log', '-1', '--format=%s');
12
+ const prNumber = process.env.GITHUB_REF?.match(/refs\/pull\/(\d+)/)?.[1];
13
+ const prUrl = prNumber && process.env.GITHUB_SERVER_URL && process.env.GITHUB_REPOSITORY
14
+ ? `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/pull/${prNumber}`
15
+ : undefined;
16
+ return {
17
+ branch,
18
+ commit,
19
+ commitMessage: commitMessage || undefined,
20
+ prNumber: prNumber ? parseInt(prNumber) : undefined,
21
+ prUrl,
22
+ };
23
+ }
24
+ // GitLab CI
25
+ if (process.env.GITLAB_CI) {
26
+ return {
27
+ branch: process.env.CI_COMMIT_BRANCH || process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME || '',
28
+ commit: process.env.CI_COMMIT_SHA || '',
29
+ commitMessage: process.env.CI_COMMIT_MESSAGE || undefined,
30
+ prNumber: process.env.CI_MERGE_REQUEST_IID ? parseInt(process.env.CI_MERGE_REQUEST_IID) : undefined,
31
+ prUrl: process.env.CI_MERGE_REQUEST_URL || undefined,
32
+ };
33
+ }
34
+ // Local or generic CI — try git commands
35
+ const branch = gitExec('rev-parse', '--abbrev-ref', 'HEAD');
36
+ const commit = gitExec('rev-parse', 'HEAD');
37
+ const commitMessage = gitExec('log', '-1', '--format=%s');
38
+ if (branch || commit) {
39
+ return {
40
+ branch: branch || '',
41
+ commit: commit || '',
42
+ commitMessage: commitMessage || undefined,
43
+ };
44
+ }
45
+ }
46
+ catch {
47
+ // Not in a git repo or git not available
48
+ }
49
+ return undefined;
50
+ }
51
+ function gitExec(...args) {
52
+ try {
53
+ return execFileSync('git', args, { encoding: 'utf-8', timeout: 5000 }).trim();
54
+ }
55
+ catch {
56
+ return '';
57
+ }
58
+ }
59
+ //# sourceMappingURL=git-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-context.js","sourceRoot":"","sources":["../../src/test-group/git-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { TestGroupRunResult, BatchResult } from '../evaluators/types.js';
2
+ export declare function reportTestGroupRun(result: TestGroupRunResult): void;
3
+ export declare function reportBatchResult(batch: BatchResult, cloudUrl?: string): void;
4
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/test-group/reporter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAqB,MAAM,wBAAwB,CAAA;AAchG,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAmBnE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAkC7E"}
@@ -0,0 +1,54 @@
1
+ import chalk from 'chalk';
2
+ function formatMs(ms) {
3
+ return ms >= 1000 ? `${(ms / 1000).toFixed(1)}s` : `${ms}ms`;
4
+ }
5
+ function formatTokens(n) {
6
+ return n >= 1000 ? `${(n / 1000).toFixed(1)}k` : String(n);
7
+ }
8
+ function expectationIcon(result) {
9
+ return result.passed ? chalk.green(' ✓') : chalk.red(' ✗');
10
+ }
11
+ export function reportTestGroupRun(result) {
12
+ const icon = result.passed ? chalk.green('✓') : chalk.red('✗');
13
+ const totalTokens = result.singleRuns.reduce((s, r) => s + r.tokenUsage.totalTokens, 0);
14
+ const totalDuration = result.singleRuns.reduce((s, r) => s + r.durationMs, 0);
15
+ const avgDuration = result.singleRuns.length > 0 ? Math.round(totalDuration / result.singleRuns.length) : 0;
16
+ const runCount = result.singleRuns.length;
17
+ console.log(`${icon} ${result.summary} (${runCount} runs, avg ${formatMs(avgDuration)}, ${formatTokens(totalTokens)} tokens)`);
18
+ // Show expectation results
19
+ for (const er of result.expectationResults) {
20
+ console.log(`${expectationIcon(er)} ${er.type}: ${er.detail}`);
21
+ }
22
+ // Show errors for failed runs
23
+ const failedRuns = result.singleRuns.filter((r) => r.error);
24
+ for (const run of failedRuns) {
25
+ console.log(chalk.red(` Run #${run.runIndex}: ${run.error}`));
26
+ }
27
+ }
28
+ export function reportBatchResult(batch, cloudUrl) {
29
+ console.log('');
30
+ console.log(chalk.bold('Test Group Results'));
31
+ console.log(chalk.dim('─'.repeat(60)));
32
+ for (const result of batch.results) {
33
+ reportTestGroupRun(result);
34
+ console.log('');
35
+ }
36
+ console.log(chalk.dim('─'.repeat(60)));
37
+ const passedCount = batch.results.filter((r) => r.passed).length;
38
+ const totalCount = batch.results.length;
39
+ if (batch.passed) {
40
+ console.log(chalk.green.bold(`${passedCount}/${totalCount} test groups passed`));
41
+ }
42
+ else {
43
+ console.log(chalk.red.bold(`${passedCount}/${totalCount} test groups passed`));
44
+ const failed = batch.results.filter((r) => !r.passed);
45
+ console.log(chalk.red(`Failed: ${failed.map((r) => r.summary.split(':')[0]).join(', ')}`));
46
+ }
47
+ const totalDuration = batch.results.reduce((s, r) => s + r.singleRuns.reduce((ss, sr) => ss + sr.durationMs, 0), 0);
48
+ console.log(chalk.dim(`Total duration: ${formatMs(totalDuration)}`));
49
+ if (cloudUrl) {
50
+ console.log(chalk.dim(`View results: ${cloudUrl}`));
51
+ }
52
+ console.log('');
53
+ }
54
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/test-group/reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Test group runner — executes test groups locally via subprocess,
3
+ * evaluates expectations, and returns results for pushing to the cloud.
4
+ *
5
+ * This module is fully independent from the dashboard server.
6
+ * It reuses the same workflow-runner-worker subprocess pattern.
7
+ */
8
+ import type { TestGroup, SingleRunData, TestGroupRunResult, BatchResult } from '../evaluators/types.js';
9
+ export declare function executeSingleRun(testGroup: TestGroup, runIndex: number, cwd: string): Promise<SingleRunData>;
10
+ export declare function runTestGroupNTimes(testGroup: TestGroup, cwd: string, options?: {
11
+ overrideRunCount?: number;
12
+ triggeredBy?: TestGroupRunResult['triggeredBy'];
13
+ }): Promise<TestGroupRunResult>;
14
+ export declare function runAllTestGroups(testGroups: TestGroup[], cwd: string, options?: {
15
+ overrideRunCount?: number;
16
+ triggeredBy?: TestGroupRunResult['triggeredBy'];
17
+ }): Promise<BatchResult>;
18
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/test-group/runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAc,MAAM,wBAAwB,CAAA;AAoKnH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,aAAa,CAAC,CAsDxB;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAA;CAAE,GACvF,OAAO,CAAC,kBAAkB,CAAC,CAoC7B;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,SAAS,EAAE,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAA;CAAE,GACvF,OAAO,CAAC,WAAW,CAAC,CA0BtB"}