@lesliechan721/agent-skill-eval 0.1.0-beta.6 → 0.1.0-beta.60

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 (123) hide show
  1. package/dist/bin.js +167 -39
  2. package/dist/bin.js.map +1 -1
  3. package/dist/codex-eval-app-server.d.ts +213 -0
  4. package/dist/codex-eval-app-server.js +1387 -0
  5. package/dist/codex-eval-app-server.js.map +1 -0
  6. package/dist/codex-eval-cases.d.ts +41 -0
  7. package/dist/codex-eval-cases.js +324 -0
  8. package/dist/codex-eval-cases.js.map +1 -0
  9. package/dist/codex-eval-isolation.d.ts +79 -0
  10. package/dist/codex-eval-isolation.js +420 -0
  11. package/dist/codex-eval-isolation.js.map +1 -0
  12. package/dist/codex-eval-process-tree.d.ts +42 -0
  13. package/dist/codex-eval-process-tree.js +860 -0
  14. package/dist/codex-eval-process-tree.js.map +1 -0
  15. package/dist/codex-eval-rollout.d.ts +8 -0
  16. package/dist/codex-eval-rollout.js +85 -0
  17. package/dist/codex-eval-rollout.js.map +1 -0
  18. package/dist/codex-eval-runtime-config.d.ts +43 -0
  19. package/dist/codex-eval-runtime-config.js +607 -0
  20. package/dist/codex-eval-runtime-config.js.map +1 -0
  21. package/dist/codex-trigger-eval.d.ts +86 -0
  22. package/dist/codex-trigger-eval.js +943 -0
  23. package/dist/codex-trigger-eval.js.map +1 -0
  24. package/dist/codex-workflow-evaluation.d.ts +91 -0
  25. package/dist/codex-workflow-evaluation.js +309 -0
  26. package/dist/codex-workflow-evaluation.js.map +1 -0
  27. package/dist/codex-workflow-fixtures.d.ts +37 -0
  28. package/dist/codex-workflow-fixtures.js +144 -0
  29. package/dist/codex-workflow-fixtures.js.map +1 -0
  30. package/dist/codex-workflow.d.ts +224 -0
  31. package/dist/codex-workflow.js +2143 -0
  32. package/dist/codex-workflow.js.map +1 -0
  33. package/dist/credentials.d.ts +5 -0
  34. package/dist/credentials.js +30 -0
  35. package/dist/credentials.js.map +1 -0
  36. package/dist/custom-process.d.ts +60 -0
  37. package/dist/custom-process.js +424 -0
  38. package/dist/custom-process.js.map +1 -0
  39. package/dist/eval-audit.d.ts +38 -0
  40. package/dist/eval-audit.js +71 -0
  41. package/dist/eval-audit.js.map +1 -0
  42. package/dist/eval-file.d.ts +9 -0
  43. package/dist/eval-file.js +15 -0
  44. package/dist/eval-file.js.map +1 -0
  45. package/dist/eval-process-management.d.ts +23 -0
  46. package/dist/eval-process-management.js +93 -0
  47. package/dist/eval-process-management.js.map +1 -0
  48. package/dist/eval-result.d.ts +79 -0
  49. package/dist/eval-result.js +144 -0
  50. package/dist/eval-result.js.map +1 -0
  51. package/dist/eval-run.d.ts +27 -0
  52. package/dist/eval-run.js +572 -0
  53. package/dist/eval-run.js.map +1 -0
  54. package/dist/eval-spec.d.ts +57 -0
  55. package/dist/eval-spec.js +120 -0
  56. package/dist/eval-spec.js.map +1 -0
  57. package/dist/eval-suite-binding.d.ts +4 -0
  58. package/dist/eval-suite-binding.js +19 -0
  59. package/dist/eval-suite-binding.js.map +1 -0
  60. package/dist/index.d.ts +46 -10
  61. package/dist/index.js +23 -6
  62. package/dist/index.js.map +1 -1
  63. package/dist/instruction-v2.d.ts +53 -0
  64. package/dist/instruction-v2.js +169 -0
  65. package/dist/instruction-v2.js.map +1 -0
  66. package/dist/json-schema.js +84 -5
  67. package/dist/json-schema.js.map +1 -1
  68. package/dist/output-path.js +2 -2
  69. package/dist/process-tree.d.ts +56 -1
  70. package/dist/process-tree.js +948 -179
  71. package/dist/process-tree.js.map +1 -1
  72. package/dist/process.d.ts +2 -2
  73. package/dist/process.js +104 -34
  74. package/dist/process.js.map +1 -1
  75. package/dist/provider-doctor.d.ts +46 -0
  76. package/dist/provider-doctor.js +123 -0
  77. package/dist/provider-doctor.js.map +1 -0
  78. package/dist/providers.d.ts +86 -0
  79. package/dist/providers.js +689 -0
  80. package/dist/providers.js.map +1 -0
  81. package/dist/run-paths.d.ts +8 -0
  82. package/dist/run-paths.js +71 -0
  83. package/dist/run-paths.js.map +1 -0
  84. package/dist/runtime-skill.d.ts +6 -0
  85. package/dist/runtime-skill.js +87 -3
  86. package/dist/runtime-skill.js.map +1 -1
  87. package/dist/schemas/digests.json +7 -3
  88. package/dist/schemas/eval-audit.schema.json +64 -0
  89. package/dist/schemas/eval-result.schema.json +232 -0
  90. package/dist/schemas/eval-spec.schema.json +109 -0
  91. package/dist/schemas/instruction-v2-receipt.schema.json +24 -0
  92. package/dist/schemas/instruction-v2-request.schema.json +51 -0
  93. package/dist/schemas/workflow-evaluation.schema.json +38 -0
  94. package/dist/schemas/workflow-fixture-action.schema.json +15 -0
  95. package/dist/schemas.d.ts +1 -3
  96. package/dist/schemas.js +22 -20
  97. package/dist/schemas.js.map +1 -1
  98. package/dist/selected-cases.d.ts +30 -0
  99. package/dist/selected-cases.js +386 -0
  100. package/dist/selected-cases.js.map +1 -0
  101. package/dist/types.d.ts +2 -34
  102. package/dist/windows-job.d.ts +26 -0
  103. package/dist/windows-job.js +80 -0
  104. package/dist/windows-job.js.map +1 -0
  105. package/dist/windows-native.d.ts +18 -0
  106. package/dist/windows-native.js +132 -0
  107. package/dist/windows-native.js.map +1 -0
  108. package/package.json +19 -3
  109. package/dist/bundle.d.ts +0 -93
  110. package/dist/bundle.js +0 -216
  111. package/dist/bundle.js.map +0 -1
  112. package/dist/capabilities.d.ts +0 -2
  113. package/dist/capabilities.js +0 -38
  114. package/dist/capabilities.js.map +0 -1
  115. package/dist/plan.d.ts +0 -79
  116. package/dist/plan.js +0 -285
  117. package/dist/plan.js.map +0 -1
  118. package/dist/run.d.ts +0 -2
  119. package/dist/run.js +0 -592
  120. package/dist/run.js.map +0 -1
  121. package/dist/schemas/aw-skill-eval-execution-plan.schema.json +0 -220
  122. package/dist/schemas/eval-run-bundle.schema.json +0 -408
  123. package/dist/schemas/eval-runtime-capabilities.schema.json +0 -85
@@ -0,0 +1,386 @@
1
+ import { readEvalContractFile } from './eval-file.js';
2
+ import { normalizeAwSkillEvalTriggerCase, } from './codex-eval-cases.js';
3
+ function record(value, label) {
4
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
5
+ throw new Error(`${label} must be an object.`);
6
+ }
7
+ return value;
8
+ }
9
+ function onlyKeys(value, allowed, label) {
10
+ const keys = new Set(allowed);
11
+ const unknown = Object.keys(value).find((key) => !keys.has(key));
12
+ if (unknown)
13
+ throw new Error(`${label} has unknown field ${JSON.stringify(unknown)}.`);
14
+ }
15
+ function nonEmptyString(value, label) {
16
+ if (typeof value !== 'string' || value.trim() === '') {
17
+ throw new Error(`${label} must be a non-empty string.`);
18
+ }
19
+ return value;
20
+ }
21
+ function safeId(value, label) {
22
+ const result = nonEmptyString(value, label);
23
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(result)) {
24
+ throw new Error(`${label} must be a safe path segment.`);
25
+ }
26
+ return result;
27
+ }
28
+ function uniqueStrings(value, label, allowEmpty = false) {
29
+ if (!Array.isArray(value) || (!allowEmpty && value.length === 0)) {
30
+ throw new Error(`${label} must be ${allowEmpty ? 'an' : 'a non-empty'} array.`);
31
+ }
32
+ const result = value.map((entry, index) => nonEmptyString(entry, `${label}[${index}]`));
33
+ if (new Set(result).size !== result.length)
34
+ throw new Error(`${label} must contain unique values.`);
35
+ return result;
36
+ }
37
+ function assertJsonValue(value, label) {
38
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
39
+ return;
40
+ if (typeof value === 'number' && Number.isFinite(value))
41
+ return;
42
+ if (Array.isArray(value)) {
43
+ value.forEach((entry, index) => assertJsonValue(entry, `${label}[${index}]`));
44
+ return;
45
+ }
46
+ const row = record(value, label);
47
+ for (const [key, entry] of Object.entries(row)) {
48
+ if (key === '__proto__' || key === 'prototype' || key === 'constructor') {
49
+ throw new Error(`${label} contains unsafe field ${JSON.stringify(key)}.`);
50
+ }
51
+ assertJsonValue(entry, `${label}.${key}`);
52
+ }
53
+ }
54
+ function optionalJson(value, label) {
55
+ if (value !== undefined)
56
+ assertJsonValue(value, label);
57
+ return value;
58
+ }
59
+ function relativePath(value, label, options = {}) {
60
+ const raw = nonEmptyString(value, label);
61
+ const treePattern = options.allowTreePattern === true && raw.endsWith('/**');
62
+ const candidate = treePattern ? raw.slice(0, -3) : raw;
63
+ if (candidate === ''
64
+ || candidate.includes('\0')
65
+ || candidate.includes('\\')
66
+ || candidate.includes('*')
67
+ || candidate.includes('?')
68
+ || candidate.includes('[')
69
+ || candidate.includes(']')
70
+ || candidate.startsWith('/')
71
+ || /^[A-Za-z]:/u.test(candidate)
72
+ || candidate.split('/').some((segment) => segment === '' || segment === '.' || segment === '..'))
73
+ throw new Error(`${label} must be a normalized relative POSIX path.`);
74
+ return raw;
75
+ }
76
+ function pathArray(value, label, options = {}) {
77
+ const values = uniqueStrings(value, label, options.allowEmpty === true);
78
+ return values.map((entry, index) => relativePath(entry, `${label}[${index}]`, { allowTreePattern: options.allowTreePattern }));
79
+ }
80
+ function triggerSuiteContract(suite) {
81
+ const runtime = suite.runtime ?? {};
82
+ return {
83
+ id: 'selected',
84
+ kind: 'trigger',
85
+ skill: suite.unitUnderTest,
86
+ skills: [...new Set([suite.unitUnderTest, ...(suite.participants ?? [])])],
87
+ cases: 'cases.json',
88
+ observeSpawnAgent: runtime.observeSpawnAgent === true,
89
+ isolation: runtime.isolation === 'strict' ? 'strict' : 'standard',
90
+ strictNegativeSplits: (runtime.strictNegativeSplits ?? []),
91
+ forbidMultipleSkillLoads: runtime.forbidMultipleSkillLoads === true,
92
+ ...(typeof runtime.fixture === 'string' ? { fixtureModule: runtime.fixture } : {}),
93
+ profiles: ['selected'],
94
+ defaultRuns: 1,
95
+ perRunTimeoutMs: 1,
96
+ };
97
+ }
98
+ function parseRuntime(value, kind) {
99
+ const runtime = record(value, 'selected cases.suite.runtime');
100
+ if (kind === 'trigger') {
101
+ onlyKeys(runtime, [
102
+ 'observeSpawnAgent',
103
+ 'isolation',
104
+ 'strictNegativeSplits',
105
+ 'forbidMultipleSkillLoads',
106
+ 'fixture',
107
+ 'minimumPassRate',
108
+ ], 'selected cases.suite.runtime');
109
+ if (runtime.observeSpawnAgent !== undefined && typeof runtime.observeSpawnAgent !== 'boolean') {
110
+ throw new Error('selected cases.suite.runtime.observeSpawnAgent must be boolean.');
111
+ }
112
+ if (runtime.forbidMultipleSkillLoads !== undefined && typeof runtime.forbidMultipleSkillLoads !== 'boolean') {
113
+ throw new Error('selected cases.suite.runtime.forbidMultipleSkillLoads must be boolean.');
114
+ }
115
+ if (runtime.isolation !== undefined && runtime.isolation !== 'standard' && runtime.isolation !== 'strict') {
116
+ throw new Error('selected cases.suite.runtime.isolation must be standard or strict.');
117
+ }
118
+ if (runtime.strictNegativeSplits !== undefined) {
119
+ const splits = uniqueStrings(runtime.strictNegativeSplits, 'selected cases.suite.runtime.strictNegativeSplits', true);
120
+ const invalid = splits.find((split) => split !== 'train' && split !== 'validation' && split !== 'sanity');
121
+ if (invalid) {
122
+ throw new Error('selected cases.suite.runtime.strictNegativeSplits has an invalid split.');
123
+ }
124
+ }
125
+ if (runtime.fixture !== undefined) {
126
+ runtime.fixture = relativePath(runtime.fixture, 'selected cases.suite.runtime.fixture');
127
+ }
128
+ }
129
+ else if (kind === 'conversation') {
130
+ onlyKeys(runtime, ['isolation', 'pathPrepend', 'minimumPassRate'], 'selected cases.suite.runtime');
131
+ if (runtime.isolation !== undefined && runtime.isolation !== 'standard' && runtime.isolation !== 'strict') {
132
+ throw new Error('selected cases.suite.runtime.isolation must be standard or strict.');
133
+ }
134
+ runtime.pathPrepend = runtime.pathPrepend === undefined
135
+ ? []
136
+ : pathArray(runtime.pathPrepend, 'selected cases.suite.runtime.pathPrepend', { allowEmpty: true });
137
+ }
138
+ else {
139
+ onlyKeys(runtime, ['minimumPassRate'], 'selected cases.suite.runtime');
140
+ }
141
+ if (runtime.minimumPassRate !== undefined
142
+ && (typeof runtime.minimumPassRate !== 'number'
143
+ || !Number.isFinite(runtime.minimumPassRate)
144
+ || runtime.minimumPassRate < 0
145
+ || runtime.minimumPassRate > 1)) {
146
+ throw new Error('selected cases.suite.runtime.minimumPassRate must be a finite number from 0 to 1.');
147
+ }
148
+ return runtime;
149
+ }
150
+ function parseSuite(value) {
151
+ const suite = record(value, 'selected cases.suite');
152
+ onlyKeys(suite, ['kind', 'unitUnderTest', 'participants', 'policy', 'runtime'], 'selected cases.suite');
153
+ if (suite.kind !== 'trigger'
154
+ && suite.kind !== 'conversation'
155
+ && suite.kind !== 'custom-process'
156
+ && suite.kind !== 'codex-workflow') {
157
+ throw new Error('selected cases.suite.kind must be trigger, conversation, custom-process, or codex-workflow.');
158
+ }
159
+ const result = {
160
+ kind: suite.kind,
161
+ unitUnderTest: safeId(suite.unitUnderTest, 'selected cases.suite.unitUnderTest'),
162
+ };
163
+ if (suite.participants !== undefined) {
164
+ result.participants = uniqueStrings(suite.participants, 'selected cases.suite.participants')
165
+ .map((entry, index) => safeId(entry, `selected cases.suite.participants[${index}]`));
166
+ }
167
+ if (suite.policy !== undefined) {
168
+ const policy = record(suite.policy, 'selected cases.suite.policy');
169
+ onlyKeys(policy, ['optimization', 'falseNegativeCost', 'falsePositiveCost', 'rationale'], 'selected cases.suite.policy');
170
+ result.policy = Object.fromEntries(Object.entries(policy).map(([key, entry]) => [
171
+ key,
172
+ nonEmptyString(entry, `selected cases.suite.policy.${key}`),
173
+ ]));
174
+ }
175
+ if (suite.runtime !== undefined) {
176
+ result.runtime = parseRuntime(suite.runtime, suite.kind);
177
+ }
178
+ if (result.kind === 'trigger') {
179
+ Object.defineProperty(result, 'providerSuite', {
180
+ value: triggerSuiteContract(result),
181
+ enumerable: false,
182
+ });
183
+ }
184
+ return result;
185
+ }
186
+ function triggerExpectation(row, label) {
187
+ if (row.expectedLoad !== undefined && row.expected !== undefined) {
188
+ throw new Error(`${label} must not contain both expectedLoad and expected.`);
189
+ }
190
+ if (row.expectedLoad !== undefined) {
191
+ if (typeof row.expectedLoad !== 'boolean')
192
+ throw new Error(`${label}.expectedLoad must be boolean.`);
193
+ return { should_load_skill: row.expectedLoad };
194
+ }
195
+ const expected = record(row.expected, `${label}.expected`);
196
+ onlyKeys(expected, ['loadedSkills'], `${label}.expected`);
197
+ const loadedSkills = uniqueStrings(expected.loadedSkills, `${label}.expected.loadedSkills`, true);
198
+ return { expected_loaded_skills: loadedSkills };
199
+ }
200
+ function parseTriggerCase(row, index, suite) {
201
+ const label = `selected cases.cases[${index}]`;
202
+ onlyKeys(row, ['id', 'split', 'tags', 'input', 'audit'], label);
203
+ const input = record(row.input, `${label}.input`);
204
+ onlyKeys(input, ['query', 'expectedLoad', 'expected', 'shouldSpawnAgent', 'workspaceFixture', 'useProjectRules'], `${label}.input`);
205
+ const id = safeId(row.id, `${label}.id`);
206
+ const split = safeId(row.split, `${label}.split`);
207
+ const tags = uniqueStrings(row.tags, `${label}.tags`, true);
208
+ const canonical = normalizeAwSkillEvalTriggerCase({
209
+ id,
210
+ split,
211
+ query: nonEmptyString(input.query, `${label}.input.query`),
212
+ ...triggerExpectation(input, `${label}.input`),
213
+ ...(input.shouldSpawnAgent === undefined
214
+ ? {}
215
+ : { should_spawn_agent: input.shouldSpawnAgent }),
216
+ ...(input.workspaceFixture === undefined
217
+ ? {}
218
+ : { workspace_fixture: relativePath(input.workspaceFixture, `${label}.input.workspaceFixture`) }),
219
+ ...(input.useProjectRules === undefined
220
+ ? {}
221
+ : { use_project_rules: input.useProjectRules }),
222
+ ...(tags.length === 0 ? {} : { tags }),
223
+ }, index, suite.providerSuite);
224
+ if (canonical.workspace_fixture && !suite.providerSuite?.fixtureModule) {
225
+ throw new Error(`${label}.input.workspaceFixture requires selected cases.suite.runtime.fixture.`);
226
+ }
227
+ const result = { ...row, id, split, tags };
228
+ Object.defineProperty(result, 'providerCase', { value: canonical, enumerable: false });
229
+ return result;
230
+ }
231
+ function parseCommonAudit(row, label, tags) {
232
+ const audit = row.audit === undefined ? undefined : record(row.audit, `${label}.audit`);
233
+ if (audit) {
234
+ onlyKeys(audit, ['rationale', 'errorCost', 'allowedVariance', 'minimalCounterexample'], `${label}.audit`);
235
+ for (const key of ['rationale', 'allowedVariance', 'minimalCounterexample']) {
236
+ if (Object.hasOwn(audit, key))
237
+ nonEmptyString(audit[key], `${label}.audit.${key}`);
238
+ }
239
+ if (audit.errorCost !== undefined
240
+ && audit.errorCost !== 'high'
241
+ && audit.errorCost !== 'medium'
242
+ && audit.errorCost !== 'low')
243
+ throw new Error(`${label}.audit.errorCost must be high, medium, or low.`);
244
+ }
245
+ const required = [
246
+ ...tags.some((tag) => tag === 'boundary' || tag === 'regression')
247
+ ? ['rationale', 'minimalCounterexample']
248
+ : [],
249
+ ...tags.some((tag) => tag === 'release-critical' || tag === 'high-cost') ? ['errorCost'] : [],
250
+ ...tags.includes('high-variance') ? ['allowedVariance'] : [],
251
+ ];
252
+ const missing = required.find((key) => !audit || !Object.hasOwn(audit, key));
253
+ if (missing)
254
+ throw new Error(`${label}.audit.${missing} is required by case tags.`);
255
+ }
256
+ function parseConversationCase(row, index) {
257
+ const label = `selected cases.cases[${index}]`;
258
+ onlyKeys(row, ['id', 'split', 'tags', 'prompt', 'assertions', 'input', 'expected', 'audit'], label);
259
+ const id = safeId(row.id, `${label}.id`);
260
+ const split = safeId(row.split, `${label}.split`);
261
+ const tags = uniqueStrings(row.tags, `${label}.tags`, true);
262
+ nonEmptyString(row.prompt, `${label}.prompt`);
263
+ if (!Array.isArray(row.assertions) || row.assertions.length === 0) {
264
+ throw new Error(`${label}.assertions must be a non-empty array.`);
265
+ }
266
+ const assertions = row.assertions.map((entry, assertionIndex) => nonEmptyString(entry, `${label}.assertions[${assertionIndex}]`));
267
+ const input = row.input === undefined ? {} : record(row.input, `${label}.input`);
268
+ onlyKeys(input, ['scriptedReplies', 'workspaceFiles', 'pathPrepend'], `${label}.input`);
269
+ if (input.scriptedReplies !== undefined) {
270
+ if (!Array.isArray(input.scriptedReplies)) {
271
+ throw new Error(`${label}.input.scriptedReplies must be an array.`);
272
+ }
273
+ input.scriptedReplies.forEach((reply, replyIndex) => {
274
+ const replyLabel = `${label}.input.scriptedReplies[${replyIndex}]`;
275
+ if (typeof reply === 'string')
276
+ return;
277
+ const replyRow = record(reply, replyLabel);
278
+ onlyKeys(replyRow, ['answersByIndex', 'expectedQuestionCount', 'unexpectedQuestionAnswer'], replyLabel);
279
+ if (!Array.isArray(replyRow.answersByIndex)
280
+ || replyRow.answersByIndex.some((answer) => typeof answer !== 'string'))
281
+ throw new Error(`${replyLabel}.answersByIndex must be an array of strings.`);
282
+ if (replyRow.expectedQuestionCount !== undefined
283
+ && (!Number.isInteger(replyRow.expectedQuestionCount)
284
+ || replyRow.expectedQuestionCount < 0))
285
+ throw new Error(`${replyLabel}.expectedQuestionCount must be a non-negative integer.`);
286
+ nonEmptyString(replyRow.unexpectedQuestionAnswer, `${replyLabel}.unexpectedQuestionAnswer`);
287
+ });
288
+ }
289
+ if (input.workspaceFiles !== undefined) {
290
+ const workspaceFiles = record(input.workspaceFiles, `${label}.input.workspaceFiles`);
291
+ for (const [workspacePath, content] of Object.entries(workspaceFiles)) {
292
+ relativePath(workspacePath, `${label}.input.workspaceFiles.${workspacePath}`);
293
+ if (typeof content !== 'string') {
294
+ throw new Error(`${label}.input.workspaceFiles.${workspacePath} must be a string.`);
295
+ }
296
+ }
297
+ }
298
+ if (input.pathPrepend !== undefined) {
299
+ pathArray(input.pathPrepend, `${label}.input.pathPrepend`, { allowEmpty: true });
300
+ }
301
+ const expected = row.expected === undefined ? {} : record(row.expected, `${label}.expected`);
302
+ onlyKeys(expected, ['output', 'workspaceUnchanged', 'allowedWorkspaceChanges', 'artifacts'], `${label}.expected`);
303
+ if (expected.output !== undefined)
304
+ nonEmptyString(expected.output, `${label}.expected.output`);
305
+ if (expected.workspaceUnchanged !== undefined && typeof expected.workspaceUnchanged !== 'boolean') {
306
+ throw new Error(`${label}.expected.workspaceUnchanged must be boolean.`);
307
+ }
308
+ if (expected.allowedWorkspaceChanges !== undefined) {
309
+ pathArray(expected.allowedWorkspaceChanges, `${label}.expected.allowedWorkspaceChanges`, { allowEmpty: true, allowTreePattern: true });
310
+ }
311
+ if (expected.artifacts !== undefined) {
312
+ if (!Array.isArray(expected.artifacts))
313
+ throw new Error(`${label}.expected.artifacts must be an array.`);
314
+ optionalJson(expected.artifacts, `${label}.expected.artifacts`);
315
+ for (const [artifactIndex, artifact] of expected.artifacts.entries()) {
316
+ const artifactRow = record(artifact, `${label}.expected.artifacts[${artifactIndex}]`);
317
+ onlyKeys(artifactRow, ['path', 'exists', 'contains', 'notContains', 'json'], `${label}.expected.artifacts[${artifactIndex}]`);
318
+ relativePath(artifactRow.path, `${label}.expected.artifacts[${artifactIndex}].path`);
319
+ }
320
+ }
321
+ parseCommonAudit(row, label, tags);
322
+ return { ...row, id, split, tags, assertions };
323
+ }
324
+ function parseCase(value, index, suite) {
325
+ const label = `selected cases.cases[${index}]`;
326
+ const row = record(value, label);
327
+ const common = ['id', 'split', 'tags'];
328
+ if (suite.kind === 'trigger') {
329
+ const result = parseTriggerCase(row, index, suite);
330
+ parseCommonAudit(row, label, result.tags);
331
+ return result;
332
+ }
333
+ if (suite.kind === 'conversation')
334
+ return parseConversationCase(row, index);
335
+ onlyKeys(row, [...common, 'input', 'expected', 'assertions', 'audit'], label);
336
+ {
337
+ optionalJson(row.input, `${label}.input`);
338
+ optionalJson(row.expected, `${label}.expected`);
339
+ optionalJson(row.assertions, `${label}.assertions`);
340
+ }
341
+ const result = {
342
+ ...row,
343
+ id: safeId(row.id, `${label}.id`),
344
+ split: safeId(row.split, `${label}.split`),
345
+ tags: uniqueStrings(row.tags, `${label}.tags`, true),
346
+ };
347
+ parseCommonAudit(row, label, result.tags);
348
+ return result;
349
+ }
350
+ export function parseSelectedCases(value) {
351
+ const document = record(value, 'selected cases');
352
+ onlyKeys(document, ['version', 'suite', 'cases'], 'selected cases');
353
+ if (document.version !== 1)
354
+ throw new Error('selected cases.version must be 1.');
355
+ const suite = parseSuite(document.suite);
356
+ if (!Array.isArray(document.cases) || document.cases.length === 0) {
357
+ throw new Error('selected cases.cases must be a non-empty array.');
358
+ }
359
+ const cases = document.cases.map((entry, index) => parseCase(entry, index, suite));
360
+ if (new Set(cases.map((entry) => entry.id)).size !== cases.length) {
361
+ throw new Error('selected cases.cases must contain unique ids.');
362
+ }
363
+ return { version: 1, suite, cases };
364
+ }
365
+ export async function validateSelectedCases(value) {
366
+ try {
367
+ return { valid: true, errors: [], calculated: parseSelectedCases(value) };
368
+ }
369
+ catch (error) {
370
+ return { valid: false, errors: [error.message], calculated: null };
371
+ }
372
+ }
373
+ export async function validateSelectedCasesFile(casesPath) {
374
+ try {
375
+ const file = await readEvalContractFile(casesPath, 'selected cases');
376
+ return validateSelectedCases(file.value);
377
+ }
378
+ catch (error) {
379
+ return {
380
+ valid: false,
381
+ errors: [`Selected cases are unavailable or invalid: ${error.message}`],
382
+ calculated: null,
383
+ };
384
+ }
385
+ }
386
+ //# sourceMappingURL=selected-cases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selected-cases.js","sourceRoot":"","sources":["../src/selected-cases.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -4,25 +4,6 @@ export interface ValidationResult<TCalculated = unknown> {
4
4
  errors: string[];
5
5
  calculated: TCalculated | null;
6
6
  }
7
- export interface RuntimeCapabilities {
8
- schemaVersion: 1;
9
- provider: string;
10
- providerVersion: string;
11
- capabilities: {
12
- triggerDiscovery: boolean;
13
- skillPathExecution: boolean;
14
- previousVersionBaseline: boolean;
15
- withoutSkillBaseline: boolean;
16
- cleanContext: boolean;
17
- parallelRuns: boolean;
18
- toolTrace: boolean;
19
- tokenUsage: boolean;
20
- duration: boolean;
21
- sandbox: boolean;
22
- materialization: boolean;
23
- };
24
- limitations: string[];
25
- }
26
7
  export interface RuntimeSkillSnapshot {
27
8
  root: string;
28
9
  digest: Digest;
@@ -32,6 +13,7 @@ export interface ProcessRequest {
32
13
  args: string[];
33
14
  cwd: string;
34
15
  env: NodeJS.ProcessEnv;
16
+ stdin?: string;
35
17
  timeoutMs: number;
36
18
  maxBufferBytes: number;
37
19
  signal?: AbortSignal;
@@ -69,18 +51,4 @@ export interface ProcessResult {
69
51
  containmentMode: 'managed' | 'verified-observed' | 'observed' | 'unmanaged-confirmed';
70
52
  containmentLimitation?: string;
71
53
  }
72
- export interface RunExecutionPlanOptions {
73
- processHooks?: ProcessLifecycleHooks;
74
- beforeBundleCommit?: () => void | Promise<void>;
75
- sourceEnv?: NodeJS.ProcessEnv;
76
- platform?: NodeJS.Platform;
77
- processTree?: import('./process-tree.js').ProcessTreeDependencies;
78
- }
79
- export interface RunExecutionResult {
80
- valid: true;
81
- bundlePath: string;
82
- bundleDigest: Digest;
83
- evidenceLevel: 'executed' | 'comparative';
84
- requirementsMet: boolean;
85
- }
86
- export type SchemaName = 'aw-skill-eval-execution-plan' | 'eval-run-bundle' | 'eval-runtime-capabilities';
54
+ export type SchemaName = 'eval-spec' | 'eval-audit' | 'eval-result' | 'instruction-v2-request' | 'instruction-v2-receipt' | 'workflow-fixture-action' | 'workflow-evaluation';
@@ -0,0 +1,26 @@
1
+ export declare const WINDOWS_JOB_HELPER_CONFIG_SCHEMA_VERSION = 1;
2
+ export interface WindowsJobHelperConfig {
3
+ schemaVersion: typeof WINDOWS_JOB_HELPER_CONFIG_SCHEMA_VERSION;
4
+ executable: string;
5
+ args: string[];
6
+ parentPid: number;
7
+ }
8
+ export interface WindowsJobInvocation {
9
+ command: string;
10
+ args: ['--config', string];
11
+ config: WindowsJobHelperConfig;
12
+ }
13
+ export interface PrepareWindowsJobHelperOptions {
14
+ platform?: NodeJS.Platform;
15
+ arch?: string;
16
+ }
17
+ /** Prepare the helper installed with this Eval package before starting consumers. */
18
+ export declare function prepareWindowsJobHelper(options?: PrepareWindowsJobHelperOptions): Promise<string>;
19
+ export declare function resolveWindowsJobHelperPath(options?: PrepareWindowsJobHelperOptions): Promise<string>;
20
+ export declare function encodeWindowsJobHelperConfig(config: WindowsJobHelperConfig): string;
21
+ export declare function quoteWindowsCommandLineArgument(value: string): string;
22
+ export declare function buildWindowsCommandLine(executable: string, args: readonly string[]): string;
23
+ export declare function createWindowsJobInvocation(executable: string, args: readonly string[], options: {
24
+ helperPath: string;
25
+ parentPid?: number;
26
+ }): WindowsJobInvocation;
@@ -0,0 +1,80 @@
1
+ import { stat } from 'node:fs/promises';
2
+ import process from 'node:process';
3
+ import { fileURLToPath } from 'node:url';
4
+ export const WINDOWS_JOB_HELPER_CONFIG_SCHEMA_VERSION = 1;
5
+ /** Prepare the helper installed with this Eval package before starting consumers. */
6
+ export async function prepareWindowsJobHelper(options = {}) {
7
+ return resolveWindowsJobHelperPath(options);
8
+ }
9
+ export async function resolveWindowsJobHelperPath(options = {}) {
10
+ const platform = options.platform ?? process.platform;
11
+ const arch = options.arch ?? process.arch;
12
+ if (platform !== 'win32' || (arch !== 'x64' && arch !== 'arm64')) {
13
+ throw Object.assign(new Error(`Windows Job helper does not support ${platform}/${arch}.`), {
14
+ code: 'nativePlatformUnsupported',
15
+ });
16
+ }
17
+ const packageName = `@lesliechan721/aw-windows-job-win32-${arch}`;
18
+ try {
19
+ const executable = fileURLToPath(import.meta.resolve(`${packageName}/aw-windows-job.exe`));
20
+ if (!(await stat(executable)).isFile())
21
+ throw new Error('Windows Job helper is not a file.');
22
+ return executable;
23
+ }
24
+ catch {
25
+ throw Object.assign(new Error(`Windows Job helper dependency ${packageName} is unavailable. ` +
26
+ 'Reinstall the current AW CLI or Eval package with optional dependencies included.'), { code: 'nativePackageUnavailable' });
27
+ }
28
+ }
29
+ export function encodeWindowsJobHelperConfig(config) {
30
+ if (config.schemaVersion !== WINDOWS_JOB_HELPER_CONFIG_SCHEMA_VERSION ||
31
+ config.executable.length === 0 ||
32
+ config.executable.includes('\0') ||
33
+ !Number.isSafeInteger(config.parentPid) ||
34
+ config.parentPid <= 0 ||
35
+ config.args.some((arg) => arg.includes('\0'))) {
36
+ throw new Error('Invalid Windows Job helper launch configuration.');
37
+ }
38
+ return Buffer.from(JSON.stringify(config), 'utf8').toString('base64url');
39
+ }
40
+ export function quoteWindowsCommandLineArgument(value) {
41
+ let output = '"';
42
+ let backslashes = 0;
43
+ for (const character of value) {
44
+ if (character === '\\') {
45
+ backslashes += 1;
46
+ continue;
47
+ }
48
+ if (character === '"') {
49
+ output += `${'\\'.repeat(backslashes * 2 + 1)}"`;
50
+ backslashes = 0;
51
+ continue;
52
+ }
53
+ output += `${'\\'.repeat(backslashes)}${character}`;
54
+ backslashes = 0;
55
+ }
56
+ return `${output}${'\\'.repeat(backslashes * 2)}"`;
57
+ }
58
+ export function buildWindowsCommandLine(executable, args) {
59
+ return [executable, ...args].map(quoteWindowsCommandLineArgument).join(' ');
60
+ }
61
+ export function createWindowsJobInvocation(executable, args, options) {
62
+ if (/\.(?:cmd|bat)$/iu.test(executable)) {
63
+ throw new Error('Windows Job containment requires an executable file; .cmd and .bat targets are unsupported.');
64
+ }
65
+ if (!options.helperPath || options.helperPath.includes('\0')) {
66
+ throw new Error('Windows Job containment requires a prepared native helper.');
67
+ }
68
+ const config = {
69
+ schemaVersion: WINDOWS_JOB_HELPER_CONFIG_SCHEMA_VERSION,
70
+ executable,
71
+ args: [...args],
72
+ parentPid: options.parentPid ?? process.pid,
73
+ };
74
+ return {
75
+ command: options.helperPath,
76
+ args: ['--config', encodeWindowsJobHelperConfig(config)],
77
+ config,
78
+ };
79
+ }
80
+ //# sourceMappingURL=windows-job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows-job.js","sourceRoot":"","sources":["../src/windows-job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { spawn } from 'node:child_process';
2
+ export interface WindowsNativeProcessRow {
3
+ pid: number;
4
+ ppid: number;
5
+ pgid: null;
6
+ /** .NET UTC ticks at CIM microsecond precision. */
7
+ started: string;
8
+ }
9
+ export interface WindowsNativeOptions {
10
+ helperPath?: string;
11
+ spawn?: typeof spawn;
12
+ /** A caller can reduce the fixed protocol deadline. */
13
+ timeoutMs?: number;
14
+ }
15
+ /** Full 100 ns identity for compatibility with existing CLI win32:<ticks> locks. */
16
+ export declare function readWindowsNativeProcessStart(pid: number, options?: WindowsNativeOptions): Promise<string | null>;
17
+ /** Required live PIDs must be readable; only confirmed exits can be omitted. */
18
+ export declare function readWindowsNativeProcessTable(requiredPids?: readonly number[], options?: WindowsNativeOptions): Promise<WindowsNativeProcessRow[]>;