@cliwatch/cli-bench 0.6.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 (61) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +3 -0
  3. package/dist/assertions.d.ts +1 -1
  4. package/dist/assertions.d.ts.map +1 -1
  5. package/dist/assertions.js +6 -6
  6. package/dist/assertions.js.map +1 -1
  7. package/dist/client/index.d.ts +1 -1
  8. package/dist/client/index.d.ts.map +1 -1
  9. package/dist/client/types.gen.d.ts +124 -86
  10. package/dist/client/types.gen.d.ts.map +1 -1
  11. package/dist/client/zod.gen.d.ts +57 -36
  12. package/dist/client/zod.gen.d.ts.map +1 -1
  13. package/dist/client/zod.gen.js +84 -52
  14. package/dist/client/zod.gen.js.map +1 -1
  15. package/dist/config.d.ts +2 -0
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +9 -0
  18. package/dist/config.js.map +1 -1
  19. package/dist/exec.d.ts +2 -0
  20. package/dist/exec.d.ts.map +1 -1
  21. package/dist/exec.js +6 -2
  22. package/dist/exec.js.map +1 -1
  23. package/dist/github-comment.d.ts +16 -0
  24. package/dist/github-comment.d.ts.map +1 -0
  25. package/dist/github-comment.js +90 -0
  26. package/dist/github-comment.js.map +1 -0
  27. package/dist/index.d.ts +2 -3
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +29 -27
  30. package/dist/index.js.map +1 -1
  31. package/dist/models.d.ts +8 -0
  32. package/dist/models.d.ts.map +1 -1
  33. package/dist/project.d.ts +11 -2
  34. package/dist/project.d.ts.map +1 -1
  35. package/dist/project.js +22 -8
  36. package/dist/project.js.map +1 -1
  37. package/dist/providers.d.ts +9 -7
  38. package/dist/providers.d.ts.map +1 -1
  39. package/dist/providers.js +26 -8
  40. package/dist/providers.js.map +1 -1
  41. package/dist/redact.d.ts +20 -6
  42. package/dist/redact.d.ts.map +1 -1
  43. package/dist/redact.js +68 -13
  44. package/dist/redact.js.map +1 -1
  45. package/dist/runner.d.ts +31 -1
  46. package/dist/runner.d.ts.map +1 -1
  47. package/dist/runner.js +84 -78
  48. package/dist/runner.js.map +1 -1
  49. package/dist/schemas.d.ts +16 -0
  50. package/dist/schemas.d.ts.map +1 -1
  51. package/dist/schemas.js +7 -0
  52. package/dist/schemas.js.map +1 -1
  53. package/dist/suite-generator.d.ts.map +1 -1
  54. package/dist/suite-generator.js +63 -11
  55. package/dist/suite-generator.js.map +1 -1
  56. package/package.json +2 -2
  57. package/task_suites/curl.yaml +0 -138
  58. package/task_suites/docker.yaml +0 -163
  59. package/task_suites/gh.yaml +0 -118
  60. package/task_suites/jq.yaml +0 -172
  61. package/task_suites/kubectl.yaml +0 -74
package/dist/redact.d.ts CHANGED
@@ -1,13 +1,27 @@
1
1
  /**
2
2
  * Redact secret values from benchmark results before upload.
3
3
  *
4
- * Reads env var names listed in `redact_env` from cli-bench.yaml,
5
- * resolves their values at runtime, and replaces any occurrence
6
- * in strings throughout the result objects with [REDACTED].
4
+ * Two layers:
5
+ * 1. `redact_env` exact-match replacement of env var values
6
+ * 2. `redact_patterns` regex replacement of API-echoed patterns
7
+ * (e.g. account IDs in error messages)
8
+ *
9
+ * After scrubbing, a blacklist check asserts that no `redact_env`
10
+ * values survive in the serialized output.
11
+ */
12
+ export interface RedactorOptions {
13
+ envVarNames?: string[];
14
+ patterns?: string[];
15
+ }
16
+ /**
17
+ * Build a redactor function from env var names and/or regex patterns.
18
+ * Returns a no-op if nothing to redact.
7
19
  */
20
+ export declare function buildRedactor(opts: string[] | RedactorOptions): (value: unknown) => unknown;
8
21
  /**
9
- * Build a redactor function from a list of env var names.
10
- * Returns a no-op if no secrets are found.
22
+ * Post-scrub blacklist check: verify no `redact_env` values and no
23
+ * `redact_patterns` matches survive in the serialized payload.
24
+ * Throws if any are found.
11
25
  */
12
- export declare function buildRedactor(envVarNames: string[]): (value: unknown) => unknown;
26
+ export declare function assertNoSecrets(value: unknown, envVarNames: string[], patterns?: string[]): void;
13
27
  //# sourceMappingURL=redact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAqBhF"}
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAkC3F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,IAAI,CAgCN"}
package/dist/redact.js CHANGED
@@ -1,16 +1,22 @@
1
1
  /**
2
2
  * Redact secret values from benchmark results before upload.
3
3
  *
4
- * Reads env var names listed in `redact_env` from cli-bench.yaml,
5
- * resolves their values at runtime, and replaces any occurrence
6
- * in strings throughout the result objects with [REDACTED].
4
+ * Two layers:
5
+ * 1. `redact_env` exact-match replacement of env var values
6
+ * 2. `redact_patterns` regex replacement of API-echoed patterns
7
+ * (e.g. account IDs in error messages)
8
+ *
9
+ * After scrubbing, a blacklist check asserts that no `redact_env`
10
+ * values survive in the serialized output.
7
11
  */
8
12
  const PLACEHOLDER = '[REDACTED]';
9
13
  /**
10
- * Build a redactor function from a list of env var names.
11
- * Returns a no-op if no secrets are found.
14
+ * Build a redactor function from env var names and/or regex patterns.
15
+ * Returns a no-op if nothing to redact.
12
16
  */
13
- export function buildRedactor(envVarNames) {
17
+ export function buildRedactor(opts) {
18
+ // Support legacy call signature: buildRedactor(['VAR1', 'VAR2'])
19
+ const { envVarNames = [], patterns = [] } = Array.isArray(opts) ? { envVarNames: opts } : opts;
14
20
  const secrets = [];
15
21
  for (const name of envVarNames) {
16
22
  const value = process.env[name];
@@ -24,33 +30,82 @@ export function buildRedactor(envVarNames) {
24
30
  secrets.push(value);
25
31
  }
26
32
  }
27
- if (secrets.length === 0) {
33
+ const regexes = [];
34
+ for (const pat of patterns) {
35
+ try {
36
+ regexes.push(new RegExp(pat, 'g'));
37
+ }
38
+ catch (e) {
39
+ console.warn(` Warning: redact_patterns contains invalid regex "${pat}" — skipping`);
40
+ }
41
+ }
42
+ if (secrets.length === 0 && regexes.length === 0) {
28
43
  return (value) => value;
29
44
  }
30
45
  // Sort longest first so longer secrets are replaced before shorter substrings
31
46
  secrets.sort((a, b) => b.length - a.length);
32
- return (value) => redactDeep(value, secrets);
47
+ return (value) => redactDeep(value, secrets, regexes);
48
+ }
49
+ /**
50
+ * Post-scrub blacklist check: verify no `redact_env` values and no
51
+ * `redact_patterns` matches survive in the serialized payload.
52
+ * Throws if any are found.
53
+ */
54
+ export function assertNoSecrets(value, envVarNames, patterns) {
55
+ const serialized = JSON.stringify(value);
56
+ const leaked = [];
57
+ // Check exact env var values
58
+ for (const name of envVarNames) {
59
+ const secret = process.env[name];
60
+ if (secret && secret.length >= 8 && serialized.includes(secret)) {
61
+ leaked.push(name);
62
+ }
63
+ }
64
+ // Check regex patterns
65
+ if (patterns) {
66
+ for (const pat of patterns) {
67
+ try {
68
+ const re = new RegExp(pat);
69
+ if (re.test(serialized)) {
70
+ leaked.push(`pattern:${pat}`);
71
+ }
72
+ }
73
+ catch {
74
+ // Invalid regex — already warned during buildRedactor
75
+ }
76
+ }
77
+ }
78
+ if (leaked.length > 0) {
79
+ throw new Error(`SECURITY: redacted payload still contains matches for: ${leaked.join(', ')}. ` +
80
+ `This is a bug in the redactor — aborting upload.`);
81
+ }
33
82
  }
34
- function redactString(s, secrets) {
83
+ function redactString(s, secrets, regexes) {
35
84
  let result = s;
85
+ // Exact-match secrets first (highest priority)
36
86
  for (const secret of secrets) {
37
87
  if (result.includes(secret)) {
38
88
  result = result.replaceAll(secret, PLACEHOLDER);
39
89
  }
40
90
  }
91
+ // Then regex patterns
92
+ for (const re of regexes) {
93
+ re.lastIndex = 0;
94
+ result = result.replace(re, PLACEHOLDER);
95
+ }
41
96
  return result;
42
97
  }
43
- function redactDeep(value, secrets) {
98
+ function redactDeep(value, secrets, regexes) {
44
99
  if (typeof value === 'string') {
45
- return redactString(value, secrets);
100
+ return redactString(value, secrets, regexes);
46
101
  }
47
102
  if (Array.isArray(value)) {
48
- return value.map((item) => redactDeep(item, secrets));
103
+ return value.map((item) => redactDeep(item, secrets, regexes));
49
104
  }
50
105
  if (value !== null && typeof value === 'object') {
51
106
  const result = {};
52
107
  for (const [k, v] of Object.entries(value)) {
53
- result[k] = redactDeep(v, secrets);
108
+ result[k] = redactDeep(v, secrets, regexes);
54
109
  }
55
110
  return result;
56
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,WAAqB;IACjD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,IAAI,+BAA+B,CAAC,CAAC;QACnF,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,YAAY,KAAK,CAAC,MAAM,qCAAqC,CAAC,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,8EAA8E;IAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAE5C,OAAO,CAAC,KAAc,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CAAC,CAAS,EAAE,OAAiB;IAChD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,OAAiB;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,GAAG,YAAY,CAAC;AAOjC;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAgC;IAC5D,iEAAiE;IACjE,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,GACvC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAErD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,IAAI,+BAA+B,CAAC,CAAC;QACnF,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,YAAY,KAAK,CAAC,MAAM,qCAAqC,CAAC,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,sDAAsD,GAAG,cAAc,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,8EAA8E;IAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAE5C,OAAO,CAAC,KAAc,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAc,EACd,WAAqB,EACrB,QAAmB;IAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,6BAA6B;IAC7B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBACxB,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sDAAsD;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,0DAA0D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC/E,kDAAkD,CACnD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,CAAS,EAAE,OAAiB,EAAE,OAAiB;IACnE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,+CAA+C;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,sBAAsB;IACtB,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QACjB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,OAAiB,EAAE,OAAiB;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/dist/runner.d.ts CHANGED
@@ -9,11 +9,29 @@
9
9
  * - After maxSteps or completion: run assertions
10
10
  * - Aggregate into GridReport
11
11
  */
12
+ import { type LanguageModel } from 'ai';
12
13
  import type { TaskSuite, Task, GridReport } from './models.js';
13
14
  import type { Config } from './config.js';
14
15
  import type { ModelEntry } from './providers.js';
15
16
  export declare function loadTaskSuite(filePath: string): Promise<TaskSuite>;
16
- export declare function discoverTaskSuites(suiteDir: string): Promise<Map<string, string>>;
17
+ /**
18
+ * Replace {{workdir}} in a string with the actual path.
19
+ */
20
+ export declare function resolveTemplate(s: string, vars: {
21
+ workdir: string;
22
+ }): string;
23
+ /**
24
+ * Resolve env var templates: replace {{workdir}} with actual path.
25
+ */
26
+ export declare function resolveEnv(env: Record<string, string> | undefined, vars: {
27
+ workdir: string;
28
+ }): Record<string, string> | undefined;
29
+ /**
30
+ * Resolve {{workdir}} in an array of command strings.
31
+ */
32
+ export declare function resolveCommands(commands: string[], vars: {
33
+ workdir: string;
34
+ }): string[];
17
35
  export interface RunGridOptions {
18
36
  config: Config;
19
37
  /** Override tasks (from config file mode). */
@@ -41,6 +59,18 @@ export interface RunGridOptions {
41
59
  configDir?: string;
42
60
  /** Env var names whose values should be redacted from results. */
43
61
  redactEnvVars?: string[];
62
+ /** Regex patterns to redact from results (e.g. API-echoed account IDs). */
63
+ redactPatterns?: string[];
64
+ /** Config-level env vars (merged with per-task env, supports {{workdir}}). */
65
+ fileEnv?: Record<string, string>;
66
+ /** Config-level setup commands (run before each task). */
67
+ fileSetup?: string[];
68
+ /** Config-level cleanup commands (run after each task). */
69
+ fileCleanup?: string[];
70
+ /** Original project files (config + task files) for upload. */
71
+ projectFiles?: Record<string, string>;
72
+ /** Override the language model (for testing with mock models). */
73
+ modelOverride?: LanguageModel;
44
74
  }
45
75
  export declare function runGrid(opts: RunGridOptions): Promise<GridReport[]>;
46
76
  export declare function uploadReport(report: GridReport, backendUrl: string, apiKey: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,KAAK,EACV,SAAS,EACT,IAAI,EACJ,UAAU,EAKX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAUjD,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAKxE;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAc9B;AAiOD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAqEzE;AAoPD,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsBf"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAGnE,OAAO,KAAK,EACV,SAAS,EACT,IAAI,EACJ,UAAU,EAKX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAUjD,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAKxE;AAGD;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACvC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAOpC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACxB,MAAM,EAAE,CAEV;AAoOD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,kEAAkE;IAClE,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAoCzE;AA8RD,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsBf"}
package/dist/runner.js CHANGED
@@ -9,7 +9,7 @@
9
9
  * - After maxSteps or completion: run assertions
10
10
  * - Aggregate into GridReport
11
11
  */
12
- import { readFile, readdir, mkdtemp, rm } from 'node:fs/promises';
12
+ import { readFile, mkdtemp, rm } from 'node:fs/promises';
13
13
  import { join } from 'node:path';
14
14
  import { tmpdir } from 'node:os';
15
15
  import { parse as parseYaml } from 'yaml';
@@ -22,28 +22,36 @@ import { loadTopLevelHelp } from './help-loader.js';
22
22
  import { execCommand, runSetup } from './exec.js';
23
23
  import { TaskSuiteSchema } from './schemas.js';
24
24
  import { detectCI, computeTaskSuiteHash } from './ci.js';
25
- import { buildRedactor } from './redact.js';
25
+ import { buildRedactor, assertNoSecrets } from './redact.js';
26
26
  export async function loadTaskSuite(filePath) {
27
27
  const raw = await readFile(filePath, 'utf-8');
28
28
  const parsed = parseYaml(raw);
29
29
  const data = TaskSuiteSchema.parse(parsed);
30
30
  return data;
31
31
  }
32
- export async function discoverTaskSuites(suiteDir) {
33
- const suites = new Map();
34
- try {
35
- const files = await readdir(suiteDir);
36
- for (const f of files) {
37
- if (f.endsWith('.yaml') || f.endsWith('.yml')) {
38
- const name = f.replace(/\.ya?ml$/, '');
39
- suites.set(name, join(suiteDir, f));
40
- }
41
- }
42
- }
43
- catch {
44
- // No task suites dir
32
+ /**
33
+ * Replace {{workdir}} in a string with the actual path.
34
+ */
35
+ export function resolveTemplate(s, vars) {
36
+ return s.replace(/\{\{workdir\}\}/g, vars.workdir);
37
+ }
38
+ /**
39
+ * Resolve env var templates: replace {{workdir}} with actual path.
40
+ */
41
+ export function resolveEnv(env, vars) {
42
+ if (!env || Object.keys(env).length === 0)
43
+ return undefined;
44
+ const resolved = {};
45
+ for (const [key, value] of Object.entries(env)) {
46
+ resolved[key] = resolveTemplate(value, vars);
45
47
  }
46
- return suites;
48
+ return resolved;
49
+ }
50
+ /**
51
+ * Resolve {{workdir}} in an array of command strings.
52
+ */
53
+ export function resolveCommands(commands, vars) {
54
+ return commands.map((cmd) => resolveTemplate(cmd, vars));
47
55
  }
48
56
  /**
49
57
  * Simple concurrency limiter.
@@ -86,7 +94,7 @@ async function detectCliVersion(versionCommand) {
86
94
  /**
87
95
  * Run a single task with tool-calling agent, then run assertions.
88
96
  */
89
- async function runAgentTask(model, systemMessage, userMessage, task, workdir) {
97
+ async function runAgentTask(model, systemMessage, userMessage, task, workdir, taskEnv, modelOverride) {
90
98
  const commandsRun = [];
91
99
  let lastStdout = '';
92
100
  let lastStderr = '';
@@ -94,7 +102,7 @@ async function runAgentTask(model, systemMessage, userMessage, task, workdir) {
94
102
  const start = Date.now();
95
103
  try {
96
104
  const result = await generateText({
97
- model: getModel(model.id),
105
+ model: modelOverride ?? getModel(model.id),
98
106
  system: systemMessage,
99
107
  prompt: userMessage,
100
108
  tools: {
@@ -105,7 +113,7 @@ async function runAgentTask(model, systemMessage, userMessage, task, workdir) {
105
113
  }),
106
114
  execute: async (input) => {
107
115
  commandsRun.push(input.command);
108
- const { stdout, stderr, exitCode } = await execCommand(input.command, { cwd: workdir });
116
+ const { stdout, stderr, exitCode } = await execCommand(input.command, { cwd: workdir, env: taskEnv });
109
117
  lastStdout = stdout;
110
118
  lastStderr = stderr;
111
119
  lastExitCode = exitCode;
@@ -123,7 +131,7 @@ async function runAgentTask(model, systemMessage, userMessage, task, workdir) {
123
131
  totalInputTokens += step.usage?.inputTokens ?? 0;
124
132
  totalOutputTokens += step.usage?.outputTokens ?? 0;
125
133
  }
126
- const assertionResults = await runAssertions(task.assert, { commandsRun, lastStdout, lastStderr, lastExitCode }, workdir);
134
+ const assertionResults = await runAssertions(task.assert, { commandsRun, lastStdout, lastStderr, lastExitCode }, workdir, taskEnv);
127
135
  const allPassed = assertionResults.every((r) => r.passed);
128
136
  const failures = assertionResults
129
137
  .filter((r) => !r.passed)
@@ -219,61 +227,36 @@ export async function runGrid(opts) {
219
227
  const { config } = opts;
220
228
  const reports = [];
221
229
  const limiter = createLimiter(config.concurrency);
222
- if (opts.tasks && opts.cliName) {
223
- // Config file mode single CLI run
224
- const report = await runCliGrid({
225
- cliName: opts.cliName,
226
- tasks: opts.tasks,
227
- models: opts.models ?? filterModels(config.models),
228
- contextModes: config.contextModes,
229
- limiter,
230
- config,
231
- versionCommand: opts.versionCommand,
232
- workdir: opts.workdir,
233
- globalRepeat: opts.globalRepeat,
234
- systemPrompt: opts.systemPrompt,
235
- displayName: opts.displayName,
236
- category: opts.category,
237
- websiteUrl: opts.websiteUrl,
238
- githubUrl: opts.githubUrl,
239
- taskSuiteContent: opts.taskSuiteContent,
240
- configDir: opts.configDir,
241
- redactEnvVars: opts.redactEnvVars,
242
- });
243
- if (report)
244
- reports.push(report);
245
- return reports;
246
- }
247
- // Legacy task_suites/ discovery mode
248
- const suiteDir = join(new URL('.', import.meta.url).pathname.replace(/\/src\/$/, '').replace(/\/dist\/$/, ''), 'task_suites');
249
- const suiteMap = await discoverTaskSuites(suiteDir);
250
- const models = filterModels(config.models);
251
- const cliFilter = config.filter.length > 0
252
- ? config.filter
253
- : [...suiteMap.keys()];
254
- for (const cliName of cliFilter) {
255
- const suitePath = suiteMap.get(cliName);
256
- if (!suitePath) {
257
- console.error(`No task suite found for CLI: ${cliName}`);
258
- continue;
259
- }
260
- const suite = await loadTaskSuite(suitePath);
261
- const report = await runCliGrid({
262
- cliName,
263
- tasks: suite.tasks,
264
- models,
265
- contextModes: config.contextModes,
266
- limiter,
267
- config,
268
- versionCommand: suite.version_command,
269
- displayName: suite.display_name,
270
- category: suite.category,
271
- websiteUrl: suite.website_url,
272
- githubUrl: suite.github_url,
273
- });
274
- if (report)
275
- reports.push(report);
230
+ if (!opts.tasks || !opts.cliName) {
231
+ throw new Error('tasks and cliName are required');
276
232
  }
233
+ const report = await runCliGrid({
234
+ cliName: opts.cliName,
235
+ tasks: opts.tasks,
236
+ models: opts.models ?? filterModels(config.models),
237
+ contextModes: config.contextModes,
238
+ limiter,
239
+ config,
240
+ versionCommand: opts.versionCommand,
241
+ workdir: opts.workdir,
242
+ globalRepeat: opts.globalRepeat,
243
+ systemPrompt: opts.systemPrompt,
244
+ displayName: opts.displayName,
245
+ category: opts.category,
246
+ websiteUrl: opts.websiteUrl,
247
+ githubUrl: opts.githubUrl,
248
+ taskSuiteContent: opts.taskSuiteContent,
249
+ configDir: opts.configDir,
250
+ redactEnvVars: opts.redactEnvVars,
251
+ redactPatterns: opts.redactPatterns,
252
+ fileEnv: opts.fileEnv,
253
+ fileSetup: opts.fileSetup,
254
+ fileCleanup: opts.fileCleanup,
255
+ projectFiles: opts.projectFiles,
256
+ modelOverride: opts.modelOverride,
257
+ });
258
+ if (report)
259
+ reports.push(report);
277
260
  return reports;
278
261
  }
279
262
  /**
@@ -309,7 +292,10 @@ async function loadContextPayload(contextMode, cliName, configDir) {
309
292
  }
310
293
  async function runCliGrid(opts) {
311
294
  const { cliName, tasks, models, contextModes, limiter, config, versionCommand, systemPrompt } = opts;
312
- const redact = buildRedactor(opts.redactEnvVars ?? []);
295
+ const redact = buildRedactor({
296
+ envVarNames: opts.redactEnvVars ?? [],
297
+ patterns: opts.redactPatterns ?? [],
298
+ });
313
299
  console.log(`\n=== ${cliName} ===`);
314
300
  let cliVersion;
315
301
  // Detect CLI version
@@ -326,9 +312,13 @@ async function runCliGrid(opts) {
326
312
  const contextPayload = await loadContextPayload(contextMode, cliName, opts.configDir);
327
313
  const sysMsg = buildSystemMessage(systemPrompt);
328
314
  const userMessage = buildUserMessage(cliName, firstTask, contextMode, contextPayload);
315
+ const dryEnv = resolveEnv({ ...opts.fileEnv, ...firstTask.env }, { workdir: '/tmp/cli-bench-XXXXXX' });
329
316
  console.log(`\n--- Dry Run: ${cliName} / ${firstTask.id} (${contextMode}) ---`);
330
317
  console.log(`System: ${sysMsg}\n`);
331
318
  console.log(`User:\n${userMessage}\n`);
319
+ if (dryEnv) {
320
+ console.log(`Env: ${JSON.stringify(dryEnv, null, 2)}\n`);
321
+ }
332
322
  console.log(`--- End Dry Run ---\n`);
333
323
  }
334
324
  }
@@ -353,12 +343,17 @@ async function runCliGrid(opts) {
353
343
  // Fresh temp workdir per repeat — critical for independence
354
344
  const workdir = opts.workdir ?? config.workdir ?? await mkdtemp(join(tmpdir(), 'cli-bench-'));
355
345
  const shouldCleanup = !opts.workdir && !config.workdir;
346
+ // Merge config-level + task-level env, resolve {{workdir}} templates
347
+ const taskEnv = resolveEnv({ ...opts.fileEnv, ...task.env }, { workdir });
356
348
  try {
357
349
  const userMessage = buildUserMessage(cliName, task, contextMode, contextPayload);
350
+ if (opts.fileSetup && opts.fileSetup.length > 0) {
351
+ await runSetup(resolveCommands(opts.fileSetup, { workdir }), { cwd: workdir, env: taskEnv });
352
+ }
358
353
  if (task.setup && task.setup.length > 0) {
359
- await runSetup(task.setup, { cwd: workdir });
354
+ await runSetup(resolveCommands(task.setup, { workdir }), { cwd: workdir, env: taskEnv });
360
355
  }
361
- const agentResult = await runAgentTask(model, sysMsg, userMessage, task, workdir);
356
+ const agentResult = await runAgentTask(model, sysMsg, userMessage, task, workdir, taskEnv, opts.modelOverride);
362
357
  const taskEval = {
363
358
  taskId: task.id,
364
359
  passed: agentResult.passed,
@@ -390,6 +385,11 @@ async function runCliGrid(opts) {
390
385
  return redact(taskEval);
391
386
  }
392
387
  finally {
388
+ // Run cleanup commands (task-level first, then config-level)
389
+ const cleanup = [...(task.cleanup ?? []), ...(opts.fileCleanup ?? [])];
390
+ if (cleanup.length > 0) {
391
+ await runSetup(resolveCommands(cleanup, { workdir }), { cwd: workdir, env: taskEnv });
392
+ }
393
393
  if (shouldCleanup) {
394
394
  await rm(workdir, { recursive: true, force: true }).catch(() => { });
395
395
  }
@@ -430,9 +430,15 @@ async function runCliGrid(opts) {
430
430
  ...ciMetadata,
431
431
  taskSuiteHash,
432
432
  taskSuiteContent: opts.taskSuiteContent,
433
+ projectFiles: opts.projectFiles,
433
434
  };
434
435
  printReportSummary(report);
435
- return redact(report);
436
+ const redacted = redact(report);
437
+ // Blacklist check: assert no redact_env values or redact_patterns survive in the final payload
438
+ if ((opts.redactEnvVars && opts.redactEnvVars.length > 0) || (opts.redactPatterns && opts.redactPatterns.length > 0)) {
439
+ assertNoSecrets(redacted, opts.redactEnvVars ?? [], opts.redactPatterns);
440
+ }
441
+ return redacted;
436
442
  }
437
443
  function printReportSummary(report) {
438
444
  console.log(`\n--- ${report.cli} Summary ---`);
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}