@lesliechan721/agent-skill-eval 0.1.0-beta.1

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 (50) hide show
  1. package/dist/bin.d.ts +2 -0
  2. package/dist/bin.js +80 -0
  3. package/dist/bin.js.map +1 -0
  4. package/dist/bundle.d.ts +93 -0
  5. package/dist/bundle.js +216 -0
  6. package/dist/bundle.js.map +1 -0
  7. package/dist/capabilities.d.ts +2 -0
  8. package/dist/capabilities.js +38 -0
  9. package/dist/capabilities.js.map +1 -0
  10. package/dist/common.d.ts +8 -0
  11. package/dist/common.js +22 -0
  12. package/dist/common.js.map +1 -0
  13. package/dist/corpus-digest.d.ts +3 -0
  14. package/dist/corpus-digest.js +19 -0
  15. package/dist/corpus-digest.js.map +1 -0
  16. package/dist/index.d.ts +16 -0
  17. package/dist/index.js +11 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/json-schema.d.ts +3 -0
  20. package/dist/json-schema.js +70 -0
  21. package/dist/json-schema.js.map +1 -0
  22. package/dist/output-path.d.ts +1 -0
  23. package/dist/output-path.js +34 -0
  24. package/dist/output-path.js.map +1 -0
  25. package/dist/plan.d.ts +79 -0
  26. package/dist/plan.js +285 -0
  27. package/dist/plan.js.map +1 -0
  28. package/dist/process-tree.d.ts +25 -0
  29. package/dist/process-tree.js +385 -0
  30. package/dist/process-tree.js.map +1 -0
  31. package/dist/process.d.ts +14 -0
  32. package/dist/process.js +301 -0
  33. package/dist/process.js.map +1 -0
  34. package/dist/run.d.ts +2 -0
  35. package/dist/run.js +592 -0
  36. package/dist/run.js.map +1 -0
  37. package/dist/runtime-skill.d.ts +18 -0
  38. package/dist/runtime-skill.js +135 -0
  39. package/dist/runtime-skill.js.map +1 -0
  40. package/dist/schemas/aw-skill-eval-execution-plan.schema.json +220 -0
  41. package/dist/schemas/digests.json +5 -0
  42. package/dist/schemas/eval-run-bundle.schema.json +408 -0
  43. package/dist/schemas/eval-runtime-capabilities.schema.json +85 -0
  44. package/dist/schemas.d.ts +5 -0
  45. package/dist/schemas.js +27 -0
  46. package/dist/schemas.js.map +1 -0
  47. package/dist/types.d.ts +86 -0
  48. package/dist/types.js +2 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +34 -0
@@ -0,0 +1,385 @@
1
+ import { execFile } from 'node:child_process';
2
+ const DEFAULT_PROCESS_MARKER_ENV = 'AW_NATIVE_CLI_PROCESS_MARKER';
3
+ const PROCESS_TREE_COMMAND_TIMEOUT_MS = 1_000;
4
+ const PROCESS_TREE_LOOKUP_TIMEOUT_MS = 250;
5
+ const PROCESS_TREE_OBSERVATION_INTERVAL_MS = 50;
6
+ const PROCESS_TREE_MAX_BUFFER_BYTES = 16 * 1024 * 1024;
7
+ const observationStates = new WeakMap();
8
+ const defaultExecFile = (command, args, options, callback) => execFile(command, args, options, (error, stdout) => callback(error, stdout));
9
+ function runCommand(command, args, execFileImpl, timeoutMs) {
10
+ return new Promise((resolve) => {
11
+ let settled = false;
12
+ const finish = (result) => {
13
+ if (settled)
14
+ return;
15
+ settled = true;
16
+ clearTimeout(timeout);
17
+ resolve(result);
18
+ };
19
+ const timeout = setTimeout(() => finish(null), timeoutMs);
20
+ timeout.unref();
21
+ try {
22
+ execFileImpl(command, args, {
23
+ timeout: timeoutMs,
24
+ windowsHide: true,
25
+ maxBuffer: PROCESS_TREE_MAX_BUFFER_BYTES,
26
+ }, (error, stdout) => finish(error ? null : stdout));
27
+ }
28
+ catch {
29
+ finish(null);
30
+ }
31
+ });
32
+ }
33
+ function parsePosixProcessTable(stdout) {
34
+ const table = new Map();
35
+ for (const line of stdout.split('\n')) {
36
+ const match = /^\s*(\d+)\s+(\d+)\s+(\S+)\s+(.+?)\s*$/u.exec(line);
37
+ if (!match)
38
+ continue;
39
+ table.set(Number(match[1]), {
40
+ ppid: Number(match[2]),
41
+ state: match[3],
42
+ startTime: match[4],
43
+ });
44
+ }
45
+ return table;
46
+ }
47
+ function parseMarkerProcessIds(stdout, markerEnvironmentVariable, marker) {
48
+ const processIds = new Set();
49
+ const assignment = `${markerEnvironmentVariable}=${marker}`;
50
+ for (const line of stdout.split('\n')) {
51
+ const match = /^\s*(\d+)\s+(.+)$/u.exec(line);
52
+ if (match?.[2].includes(assignment))
53
+ processIds.add(Number(match[1]));
54
+ }
55
+ return processIds;
56
+ }
57
+ async function readPosixProcessTable(execFileImpl, markerEnvironmentVariable, marker, timeoutMs = PROCESS_TREE_LOOKUP_TIMEOUT_MS) {
58
+ const [identityOutput, markerOutput] = await Promise.all([
59
+ runCommand('ps', ['-A', '-o', 'pid=,ppid=,state=,lstart='], execFileImpl, timeoutMs),
60
+ marker === undefined
61
+ ? Promise.resolve('')
62
+ : runCommand('ps', ['eww', '-A', '-o', 'pid=,command='], execFileImpl, timeoutMs),
63
+ ]);
64
+ if (identityOutput === null)
65
+ return null;
66
+ return {
67
+ table: parsePosixProcessTable(identityOutput),
68
+ markerPids: marker === undefined || markerOutput === null
69
+ ? new Set()
70
+ : parseMarkerProcessIds(markerOutput, markerEnvironmentVariable, marker),
71
+ markerLookupSucceeded: marker === undefined || markerOutput !== null,
72
+ };
73
+ }
74
+ function parseWindowsProcessTable(stdout) {
75
+ const table = new Map();
76
+ for (const line of stdout.split('\n')) {
77
+ const match = /^\s*(\d+)\|(\d+)\|(.+?)\s*$/u.exec(line);
78
+ if (!match)
79
+ continue;
80
+ table.set(Number(match[1]), {
81
+ ppid: Number(match[2]),
82
+ startTime: match[3],
83
+ });
84
+ }
85
+ return table;
86
+ }
87
+ function readWindowsProcessTable(execFileImpl) {
88
+ const script = [
89
+ 'Get-CimInstance Win32_Process | ForEach-Object {',
90
+ " '{0}|{1}|{2}' -f $_.ProcessId,$_.ParentProcessId,$_.CreationDate.ToUniversalTime().Ticks",
91
+ '}',
92
+ ].join(' ');
93
+ return runCommand('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', script], execFileImpl, PROCESS_TREE_COMMAND_TIMEOUT_MS).then((stdout) => stdout === null ? null : parseWindowsProcessTable(stdout));
94
+ }
95
+ function refreshDescendants(root, knownDescendants, table) {
96
+ const childrenByParent = new Map();
97
+ for (const [processId, entry] of table) {
98
+ const children = childrenByParent.get(entry.ppid) ?? [];
99
+ children.push(processId);
100
+ childrenByParent.set(entry.ppid, children);
101
+ }
102
+ const roots = [root, ...knownDescendants.values()].filter((identity) => identity !== undefined && table.get(identity.pid)?.startTime === identity.startTime);
103
+ const pending = roots.map((identity) => identity.pid);
104
+ const visited = new Set(pending);
105
+ while (pending.length > 0) {
106
+ const parent = pending.shift();
107
+ for (const descendantPid of childrenByParent.get(parent) ?? []) {
108
+ if (visited.has(descendantPid))
109
+ continue;
110
+ visited.add(descendantPid);
111
+ const entry = table.get(descendantPid);
112
+ const knownIdentity = knownDescendants.get(descendantPid);
113
+ if (knownIdentity && knownIdentity.startTime !== entry.startTime)
114
+ continue;
115
+ knownDescendants.set(descendantPid, { pid: descendantPid, startTime: entry.startTime });
116
+ pending.push(descendantPid);
117
+ }
118
+ }
119
+ }
120
+ function refreshObservedProcesses(state, table, markerPids = new Set(), allowRootWithoutMarker = false) {
121
+ if (state.root === undefined &&
122
+ (markerPids.has(state.pid) ||
123
+ allowRootWithoutMarker ||
124
+ (state.rootDiscoveryPending && (state.platform === 'win32' || state.marker === undefined)))) {
125
+ const entry = table.get(state.pid);
126
+ if (entry)
127
+ state.root = { pid: state.pid, startTime: entry.startTime };
128
+ }
129
+ state.rootDiscoveryPending = false;
130
+ for (const processId of markerPids) {
131
+ if (processId === state.root?.pid)
132
+ continue;
133
+ const entry = table.get(processId);
134
+ if (!entry)
135
+ continue;
136
+ const known = state.descendants.get(processId);
137
+ if (!known || known.startTime === entry.startTime) {
138
+ state.descendants.set(processId, { pid: processId, startTime: entry.startTime });
139
+ }
140
+ }
141
+ refreshDescendants(state.root, state.descendants, table);
142
+ }
143
+ function createProcessTreeObservation(pid, marker, dependencies, startLookup) {
144
+ const observation = {
145
+ pid,
146
+ dispose: () => {
147
+ const state = observationStates.get(observation);
148
+ if (state) {
149
+ state.disposed = true;
150
+ if (state.pollTimer)
151
+ clearTimeout(state.pollTimer);
152
+ }
153
+ },
154
+ };
155
+ const state = {
156
+ pid,
157
+ platform: dependencies.platform ?? process.platform,
158
+ marker,
159
+ markerEnvironmentVariable: dependencies.markerEnvironmentVariable ?? DEFAULT_PROCESS_MARKER_ENV,
160
+ dependencies,
161
+ rootDiscoveryPending: true,
162
+ descendants: new Map(),
163
+ disposed: false,
164
+ initialLookup: Promise.resolve(),
165
+ };
166
+ observationStates.set(observation, state);
167
+ if (!startLookup)
168
+ return observation;
169
+ const execFileImpl = dependencies.execFile ?? defaultExecFile;
170
+ const refresh = () => state.platform === 'win32'
171
+ ? readWindowsProcessTable(execFileImpl).then((table) => {
172
+ if (!state.disposed && table)
173
+ refreshObservedProcesses(state, table);
174
+ })
175
+ : readPosixProcessTable(execFileImpl, state.markerEnvironmentVariable, marker).then((snapshot) => {
176
+ if (!state.disposed && snapshot) {
177
+ refreshObservedProcesses(state, snapshot.table, snapshot.markerPids, !snapshot.markerLookupSucceeded);
178
+ }
179
+ });
180
+ const scheduleRefresh = () => {
181
+ if (state.disposed)
182
+ return;
183
+ state.pollTimer = setTimeout(() => {
184
+ state.pollTimer = undefined;
185
+ void refresh().finally(scheduleRefresh);
186
+ }, PROCESS_TREE_OBSERVATION_INTERVAL_MS);
187
+ state.pollTimer.unref();
188
+ };
189
+ state.initialLookup = refresh();
190
+ if (state.platform !== 'win32')
191
+ void state.initialLookup.finally(scheduleRefresh);
192
+ return observation;
193
+ }
194
+ export function observeProcessTree(pid, marker, dependencies = {}) {
195
+ return createProcessTreeObservation(pid, marker, dependencies, true);
196
+ }
197
+ export async function assertProcessTreeInspectionAvailable(dependencies = {}) {
198
+ const platform = dependencies.platform ?? process.platform;
199
+ const execFileImpl = dependencies.execFile ?? defaultExecFile;
200
+ if (platform === 'win32') {
201
+ if (!(await readWindowsProcessTable(execFileImpl))) {
202
+ throw cleanupUnconfirmed('Windows process identity lookup failed.');
203
+ }
204
+ return;
205
+ }
206
+ const snapshot = await readPosixProcessTable(execFileImpl, dependencies.markerEnvironmentVariable ?? DEFAULT_PROCESS_MARKER_ENV, 'preflight-marker');
207
+ if (!snapshot)
208
+ throw cleanupUnconfirmed('POSIX process identity lookup failed.');
209
+ if (!snapshot.markerLookupSucceeded) {
210
+ throw cleanupUnconfirmed('POSIX process marker lookup failed.');
211
+ }
212
+ }
213
+ function cleanupUnconfirmed(detail) {
214
+ return new Error(`Process tree cleanup unconfirmed: ${detail}`);
215
+ }
216
+ function identityMatches(identity, table) {
217
+ return identity !== undefined && table.get(identity.pid)?.startTime === identity.startTime;
218
+ }
219
+ function posixIdentityMatches(identity, snapshot) {
220
+ return identityMatches(identity, snapshot.table);
221
+ }
222
+ function signalIdentity(identity, snapshot, signal, kill) {
223
+ if (!posixIdentityMatches(identity, snapshot))
224
+ return;
225
+ try {
226
+ kill(identity.pid, signal);
227
+ }
228
+ catch {
229
+ // The process can exit between identity verification and the signal.
230
+ }
231
+ }
232
+ async function runTaskkill(pid, execFileImpl) {
233
+ return (await runCommand('taskkill', ['/PID', String(pid), '/T', '/F'], execFileImpl, PROCESS_TREE_COMMAND_TIMEOUT_MS)) !== null;
234
+ }
235
+ async function terminateWindowsProcessTree(state, requireConfirmedCleanup) {
236
+ const execFileImpl = state.dependencies.execFile ?? defaultExecFile;
237
+ if (!requireConfirmedCleanup) {
238
+ if (!(await runTaskkill(state.pid, execFileImpl))) {
239
+ throw cleanupUnconfirmed('taskkill did not confirm termination.');
240
+ }
241
+ return;
242
+ }
243
+ await state.initialLookup;
244
+ const table = await readWindowsProcessTable(execFileImpl);
245
+ if (!table) {
246
+ throw cleanupUnconfirmed('Windows process identity lookup failed.');
247
+ }
248
+ refreshObservedProcesses(state, table);
249
+ const rootTarget = identityMatches(state.root, table) ? state.root : undefined;
250
+ const liveDescendants = [...state.descendants.values()].filter((identity) => identityMatches(identity, table));
251
+ const liveDescendantPids = new Set(liveDescendants.map((identity) => identity.pid));
252
+ const targets = rootTarget
253
+ ? [rootTarget]
254
+ : liveDescendants.filter((identity) => !liveDescendantPids.has(table.get(identity.pid).ppid));
255
+ const taskkillResults = await Promise.all(targets.map((identity) => runTaskkill(identity.pid, execFileImpl)));
256
+ if (taskkillResults.some((result) => !result)) {
257
+ throw cleanupUnconfirmed('taskkill did not confirm termination.');
258
+ }
259
+ const verifiedTable = await readWindowsProcessTable(execFileImpl);
260
+ if (!verifiedTable)
261
+ throw cleanupUnconfirmed('Windows termination verification failed.');
262
+ const verifiedIdentities = [rootTarget, ...liveDescendants].filter((identity) => identity !== undefined);
263
+ if (verifiedIdentities.some((identity) => identityMatches(identity, verifiedTable))) {
264
+ throw cleanupUnconfirmed('a verified Windows process is still running.');
265
+ }
266
+ if (requireConfirmedCleanup && targets.length === 0) {
267
+ throw cleanupUnconfirmed('no inherited-pipe process identity was observed.');
268
+ }
269
+ }
270
+ async function terminatePosixProcessTree(state, requireConfirmedCleanup, allowInspectionUnavailable) {
271
+ await state.initialLookup;
272
+ const execFileImpl = state.dependencies.execFile ?? defaultExecFile;
273
+ const kill = state.dependencies.kill ?? process.kill.bind(process);
274
+ const deadline = Date.now() + PROCESS_TREE_COMMAND_TIMEOUT_MS;
275
+ let snapshot = await readPosixProcessTable(execFileImpl, state.markerEnvironmentVariable, state.marker);
276
+ if (!snapshot) {
277
+ if (!requireConfirmedCleanup && allowInspectionUnavailable)
278
+ return;
279
+ throw cleanupUnconfirmed('POSIX process identity lookup failed.');
280
+ }
281
+ if (state.marker !== undefined && !snapshot.markerLookupSucceeded) {
282
+ throw cleanupUnconfirmed('POSIX process marker lookup failed.');
283
+ }
284
+ let markerLookupEverFailed = state.marker !== undefined && !snapshot.markerLookupSucceeded;
285
+ refreshObservedProcesses(state, snapshot.table, snapshot.markerPids);
286
+ const observedAtTermination = new Set([...state.descendants.values()]
287
+ .filter((identity) => posixIdentityMatches(identity, snapshot))
288
+ .map((identity) => `${identity.pid}:${identity.startTime}`));
289
+ while (Date.now() < deadline) {
290
+ if (posixIdentityMatches(state.root, snapshot)) {
291
+ signalIdentity(state.root, snapshot, 'SIGSTOP', kill);
292
+ }
293
+ for (const identity of [...state.descendants.values()].reverse()) {
294
+ signalIdentity(identity, snapshot, 'SIGSTOP', kill);
295
+ }
296
+ const next = await readPosixProcessTable(execFileImpl, state.markerEnvironmentVariable, state.marker, Math.min(PROCESS_TREE_LOOKUP_TIMEOUT_MS, Math.max(1, deadline - Date.now())));
297
+ if (!next)
298
+ break;
299
+ markerLookupEverFailed ||=
300
+ state.marker !== undefined && !next.markerLookupSucceeded;
301
+ if (markerLookupEverFailed)
302
+ break;
303
+ snapshot = next;
304
+ const previousSize = state.descendants.size;
305
+ refreshObservedProcesses(state, snapshot.table, snapshot.markerPids);
306
+ if (posixIdentityMatches(state.root, snapshot)) {
307
+ signalIdentity(state.root, snapshot, 'SIGSTOP', kill);
308
+ }
309
+ for (const identity of [...state.descendants.values()].reverse()) {
310
+ signalIdentity(identity, snapshot, 'SIGSTOP', kill);
311
+ }
312
+ const allFrozen = [state.root, ...state.descendants.values()].every((identity) => {
313
+ if (!posixIdentityMatches(identity, snapshot))
314
+ return true;
315
+ const processState = snapshot.table.get(identity.pid)?.state;
316
+ return processState?.startsWith('T') || processState?.startsWith('Z');
317
+ });
318
+ if (allFrozen && state.descendants.size === previousSize)
319
+ break;
320
+ }
321
+ const killed = [state.root, ...state.descendants.values()].filter((identity) => identity !== undefined &&
322
+ posixIdentityMatches(identity, snapshot));
323
+ for (const identity of killed.reverse()) {
324
+ signalIdentity(identity, snapshot, 'SIGKILL', kill);
325
+ }
326
+ if (markerLookupEverFailed) {
327
+ throw cleanupUnconfirmed('POSIX process marker lookup failed.');
328
+ }
329
+ if (!requireConfirmedCleanup)
330
+ return;
331
+ const verified = await readPosixProcessTable(execFileImpl, state.markerEnvironmentVariable, state.marker);
332
+ if (!verified)
333
+ throw cleanupUnconfirmed('POSIX termination verification failed.');
334
+ if (!verified.markerLookupSucceeded) {
335
+ throw cleanupUnconfirmed('POSIX process marker verification failed.');
336
+ }
337
+ const stillRunning = killed.some((identity) => {
338
+ if (!posixIdentityMatches(identity, verified))
339
+ return false;
340
+ return !verified.table.get(identity.pid)?.state?.startsWith('Z');
341
+ });
342
+ if (stillRunning)
343
+ throw cleanupUnconfirmed('a verified POSIX descendant is still running.');
344
+ const unobservedMarkedProcess = state.marker === undefined
345
+ ? false
346
+ : [...verified.markerPids].some((pid) => !verified.table.get(pid)?.state?.startsWith('Z'));
347
+ if (unobservedMarkedProcess) {
348
+ throw cleanupUnconfirmed('an unverified marker process is still running.');
349
+ }
350
+ if (requireConfirmedCleanup &&
351
+ state.marker !== undefined &&
352
+ state.root === undefined &&
353
+ state.descendants.size === 0) {
354
+ throw cleanupUnconfirmed('no marked process identity was observed.');
355
+ }
356
+ if (requireConfirmedCleanup && state.marker === undefined && observedAtTermination.size === 0) {
357
+ throw cleanupUnconfirmed('no inherited-pipe process identity was observed.');
358
+ }
359
+ }
360
+ export async function terminateProcessTree(pid, killDirectChild, dependencies = {}, options = {}) {
361
+ const platform = dependencies.platform ?? process.platform;
362
+ const observation = options.observation ??
363
+ createProcessTreeObservation(pid, undefined, dependencies, false);
364
+ const state = observationStates.get(observation);
365
+ try {
366
+ if (!state || state.pid !== pid || state.platform !== platform) {
367
+ throw cleanupUnconfirmed('process observation is invalid.');
368
+ }
369
+ if (platform === 'win32') {
370
+ await terminateWindowsProcessTree(state, options.requireConfirmedCleanup ?? false);
371
+ return;
372
+ }
373
+ await terminatePosixProcessTree(state, options.requireConfirmedCleanup ?? false, options.allowInspectionUnavailable ?? false);
374
+ }
375
+ finally {
376
+ observation.dispose();
377
+ try {
378
+ killDirectChild('SIGKILL');
379
+ }
380
+ catch {
381
+ // The direct child can exit before fallback termination runs.
382
+ }
383
+ }
384
+ }
385
+ //# sourceMappingURL=process-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../src/process-tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type ProcessTreeDependencies } from './process-tree.js';
2
+ import type { ProcessLifecycleHooks, ProcessRequest, ProcessResult } from './types.js';
3
+ export interface ProviderProcessDependencies {
4
+ containment?: 'managed' | 'verified-observed' | 'observed' | 'unmanaged-confirmed';
5
+ processTree?: ProcessTreeDependencies;
6
+ }
7
+ export declare class ProviderProcessCleanupError extends Error {
8
+ readonly result?: ProcessResult | undefined;
9
+ constructor(message: string, cause: unknown, result?: ProcessResult | undefined);
10
+ }
11
+ export declare function hasCoreProcessReceipt(result: ProcessResult): boolean;
12
+ export declare function hasCoreManagedProcessReceipt(result: ProcessResult): boolean;
13
+ export declare function runProviderProcess(request: ProcessRequest, hooks?: ProcessLifecycleHooks, dependencies?: ProviderProcessDependencies): Promise<ProcessResult>;
14
+ export declare function assertProviderProcessSupported(platform: NodeJS.Platform, hooks?: ProcessLifecycleHooks): void;