@lesliechan721/agent-skill-eval 0.1.0-beta.8 → 0.1.0-beta.9

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 (98) hide show
  1. package/dist/bin.js +149 -39
  2. package/dist/bin.js.map +1 -1
  3. package/dist/codex-eval-app-server.d.ts +199 -0
  4. package/dist/codex-eval-app-server.js +1366 -0
  5. package/dist/codex-eval-app-server.js.map +1 -0
  6. package/dist/codex-eval-cases.d.ts +43 -0
  7. package/dist/codex-eval-cases.js +327 -0
  8. package/dist/codex-eval-cases.js.map +1 -0
  9. package/dist/codex-eval-isolation.d.ts +61 -0
  10. package/dist/codex-eval-isolation.js +318 -0
  11. package/dist/codex-eval-isolation.js.map +1 -0
  12. package/dist/codex-eval-process-tree.d.ts +38 -0
  13. package/dist/codex-eval-process-tree.js +803 -0
  14. package/dist/codex-eval-process-tree.js.map +1 -0
  15. package/dist/codex-eval-runtime-config.d.ts +43 -0
  16. package/dist/codex-eval-runtime-config.js +607 -0
  17. package/dist/codex-eval-runtime-config.js.map +1 -0
  18. package/dist/codex-trigger-eval.d.ts +82 -0
  19. package/dist/codex-trigger-eval.js +789 -0
  20. package/dist/codex-trigger-eval.js.map +1 -0
  21. package/dist/codex-workflow.d.ts +188 -0
  22. package/dist/codex-workflow.js +1790 -0
  23. package/dist/codex-workflow.js.map +1 -0
  24. package/dist/credentials.d.ts +5 -0
  25. package/dist/credentials.js +30 -0
  26. package/dist/credentials.js.map +1 -0
  27. package/dist/custom-process.d.ts +58 -0
  28. package/dist/custom-process.js +409 -0
  29. package/dist/custom-process.js.map +1 -0
  30. package/dist/eval-audit.d.ts +38 -0
  31. package/dist/eval-audit.js +71 -0
  32. package/dist/eval-audit.js.map +1 -0
  33. package/dist/eval-file.d.ts +9 -0
  34. package/dist/eval-file.js +15 -0
  35. package/dist/eval-file.js.map +1 -0
  36. package/dist/eval-result.d.ts +64 -0
  37. package/dist/eval-result.js +144 -0
  38. package/dist/eval-result.js.map +1 -0
  39. package/dist/eval-run.d.ts +23 -0
  40. package/dist/eval-run.js +539 -0
  41. package/dist/eval-run.js.map +1 -0
  42. package/dist/eval-spec.d.ts +57 -0
  43. package/dist/eval-spec.js +120 -0
  44. package/dist/eval-spec.js.map +1 -0
  45. package/dist/eval-suite-binding.d.ts +4 -0
  46. package/dist/eval-suite-binding.js +19 -0
  47. package/dist/eval-suite-binding.js.map +1 -0
  48. package/dist/index.d.ts +34 -9
  49. package/dist/index.js +18 -6
  50. package/dist/index.js.map +1 -1
  51. package/dist/json-schema.js +75 -5
  52. package/dist/json-schema.js.map +1 -1
  53. package/dist/output-path.js +2 -2
  54. package/dist/process-tree.d.ts +19 -1
  55. package/dist/process-tree.js +321 -65
  56. package/dist/process-tree.js.map +1 -1
  57. package/dist/process.d.ts +0 -2
  58. package/dist/process.js +76 -25
  59. package/dist/process.js.map +1 -1
  60. package/dist/provider-doctor.d.ts +33 -0
  61. package/dist/provider-doctor.js +86 -0
  62. package/dist/provider-doctor.js.map +1 -0
  63. package/dist/providers.d.ts +82 -0
  64. package/dist/providers.js +630 -0
  65. package/dist/providers.js.map +1 -0
  66. package/dist/run-paths.d.ts +8 -0
  67. package/dist/run-paths.js +71 -0
  68. package/dist/run-paths.js.map +1 -0
  69. package/dist/runtime-skill.d.ts +6 -0
  70. package/dist/runtime-skill.js +87 -3
  71. package/dist/runtime-skill.js.map +1 -1
  72. package/dist/schemas/digests.json +3 -3
  73. package/dist/schemas/eval-audit.schema.json +64 -0
  74. package/dist/schemas/eval-result.schema.json +202 -0
  75. package/dist/schemas/eval-spec.schema.json +109 -0
  76. package/dist/schemas.d.ts +1 -3
  77. package/dist/schemas.js +0 -17
  78. package/dist/schemas.js.map +1 -1
  79. package/dist/selected-cases.d.ts +30 -0
  80. package/dist/selected-cases.js +388 -0
  81. package/dist/selected-cases.js.map +1 -0
  82. package/dist/types.d.ts +2 -34
  83. package/package.json +6 -1
  84. package/dist/bundle.d.ts +0 -93
  85. package/dist/bundle.js +0 -216
  86. package/dist/bundle.js.map +0 -1
  87. package/dist/capabilities.d.ts +0 -2
  88. package/dist/capabilities.js +0 -38
  89. package/dist/capabilities.js.map +0 -1
  90. package/dist/plan.d.ts +0 -79
  91. package/dist/plan.js +0 -285
  92. package/dist/plan.js.map +0 -1
  93. package/dist/run.d.ts +0 -2
  94. package/dist/run.js +0 -592
  95. package/dist/run.js.map +0 -1
  96. package/dist/schemas/aw-skill-eval-execution-plan.schema.json +0 -220
  97. package/dist/schemas/eval-run-bundle.schema.json +0 -408
  98. package/dist/schemas/eval-runtime-capabilities.schema.json +0 -85
package/dist/bin.js CHANGED
@@ -1,80 +1,190 @@
1
1
  #!/usr/bin/env node
2
2
  import path from 'node:path';
3
3
  import process from 'node:process';
4
- import { computeSkillDigest, getRuntimeCapabilities, getSchema, runExecutionPlan, validateExecutionPlan, validateRunBundle, } from './index.js';
5
- import { isSchemaName } from './schemas.js';
4
+ import { createEvalResultBinding, doctorEvalProviders, runEvalSpec, validateEvalAuditFile, validateEvalResultFile, validateEvalSpecFile, validateEvalProviderSuiteKind, validateSelectedCasesFile, } from './index.js';
6
5
  const help = `Usage: aw-skill-eval <command>
7
6
 
8
7
  Commands:
9
- capabilities --json
10
- schema print <aw-skill-eval-execution-plan|eval-run-bundle>
11
- plan validate <plan.json>
12
- run <plan.json>
13
- bundle validate <bundle.json>
14
- digest skill <skill-dir>
8
+ spec validate <spec.json>
9
+ audit validate <audit.json> --spec <spec.json>
10
+ run <spec.json> --audit <audit.json>
11
+ result validate <result.json> --spec <spec.json> --audit <audit.json>
12
+ inspect-result <result.json> --spec <spec.json> --audit <audit.json>
13
+ doctor --json
15
14
  `;
16
15
  function requirePath(value, usage) {
17
16
  if (!value)
18
17
  throw new Error(usage);
19
18
  return path.resolve(value);
20
19
  }
20
+ function optionPath(argv, name, usage) {
21
+ const index = argv.indexOf(name);
22
+ if (index < 0 || !argv[index + 1] || argv.indexOf(name, index + 1) >= 0)
23
+ throw new Error(usage);
24
+ return requirePath(argv[index + 1], usage);
25
+ }
26
+ async function boundSpec(specPath) {
27
+ const validation = await validateEvalSpecFile(specPath);
28
+ if (!validation.valid || !validation.calculated) {
29
+ throw new Error(`EvalSpec is invalid: ${validation.errors.join('; ')}`);
30
+ }
31
+ const cases = await validateSelectedCasesFile(validation.calculated.paths.cases);
32
+ if (!cases.valid || !cases.calculated) {
33
+ throw new Error(`Selected cases are invalid: ${cases.errors.join('; ')}`);
34
+ }
35
+ if (cases.calculated.suite.unitUnderTest !== validation.calculated.spec.source.skill) {
36
+ throw new Error('Selected cases unitUnderTest does not match EvalSpec source.skill.');
37
+ }
38
+ const providerErrors = validateEvalProviderSuiteKind(validation.calculated.spec.provider, cases.calculated.suite.kind);
39
+ if (providerErrors.length > 0)
40
+ throw new Error(providerErrors.join('; '));
41
+ return { spec: validation.calculated, cases: cases.calculated };
42
+ }
43
+ async function boundResult(specPath, auditPath) {
44
+ const binding = await boundSpec(specPath);
45
+ const audit = await validateEvalAuditFile(auditPath, {
46
+ spec: binding.spec.spec,
47
+ selectedCaseIds: binding.cases.cases.map((entry) => entry.id),
48
+ });
49
+ if (!audit.valid || !audit.calculated) {
50
+ throw new Error(`EvalAudit is invalid: ${audit.errors.join('; ')}`);
51
+ }
52
+ return createEvalResultBinding(binding.spec, audit.calculated.auditDigest, binding.cases);
53
+ }
21
54
  async function main(argv) {
22
55
  if (argv.length === 0 || argv[0] === '--help' || argv[0] === '-h') {
23
56
  process.stdout.write(help);
24
57
  return;
25
58
  }
26
59
  const [command, action, value, ...extra] = argv;
27
- if (extra.length > 0)
28
- throw new Error('Too many arguments. Use --help for usage.');
29
- if (command === 'capabilities') {
30
- if (action !== '--json' || value !== undefined)
31
- throw new Error('Usage: aw-skill-eval capabilities --json');
32
- process.stdout.write(`${JSON.stringify(getRuntimeCapabilities(), null, 2)}\n`);
33
- return;
34
- }
35
- if (command === 'schema') {
36
- if (action !== 'print' || !value || !isSchemaName(value) || value === 'eval-runtime-capabilities')
37
- throw new Error('Usage: aw-skill-eval schema print <aw-skill-eval-execution-plan|eval-run-bundle>');
38
- process.stdout.write(`${JSON.stringify(await getSchema(value), null, 2)}\n`);
60
+ if (command === 'doctor') {
61
+ if (action !== '--json' || value !== undefined || extra.length > 0) {
62
+ throw new Error('Usage: aw-skill-eval doctor --json');
63
+ }
64
+ process.stdout.write(`${JSON.stringify(await doctorEvalProviders(), null, 2)}\n`);
39
65
  return;
40
66
  }
41
- if (command === 'plan') {
42
- if (action !== 'validate')
43
- throw new Error('Usage: aw-skill-eval plan validate <plan.json>');
44
- const result = await validateExecutionPlan(requirePath(value, 'Usage: aw-skill-eval plan validate <plan.json>'));
67
+ if (command === 'spec') {
68
+ if (action !== 'validate' || !value || extra.length > 0) {
69
+ throw new Error('Usage: aw-skill-eval spec validate <spec.json>');
70
+ }
71
+ const specPath = requirePath(value, 'Usage: aw-skill-eval spec validate <spec.json>');
72
+ const validation = await validateEvalSpecFile(specPath);
73
+ const cases = validation.valid && validation.calculated
74
+ ? await validateSelectedCasesFile(validation.calculated.paths.cases)
75
+ : null;
76
+ const errors = [...validation.errors, ...(cases?.errors ?? [])];
77
+ const unitMatches = !validation.calculated || !cases?.calculated ||
78
+ cases.calculated.suite.unitUnderTest === validation.calculated.spec.source.skill;
79
+ if (!unitMatches)
80
+ errors.push('Selected cases unitUnderTest does not match EvalSpec source.skill.');
81
+ if (validation.calculated && cases?.calculated) {
82
+ errors.push(...validateEvalProviderSuiteKind(validation.calculated.spec.provider, cases.calculated.suite.kind));
83
+ }
84
+ const result = {
85
+ valid: errors.length === 0,
86
+ errors,
87
+ calculated: errors.length === 0 ? validation.calculated : null,
88
+ };
45
89
  process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
46
90
  if (!result.valid)
47
91
  process.exitCode = 1;
48
92
  return;
49
93
  }
50
94
  if (command === 'run') {
51
- if (value !== undefined)
52
- throw new Error('Usage: aw-skill-eval run <plan.json>');
53
- const result = await runExecutionPlan(requirePath(action, 'Usage: aw-skill-eval run <plan.json>'));
54
- process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
55
- if (!result.requirementsMet)
56
- process.exitCode = 1;
95
+ const runPath = requirePath(action, 'Usage: aw-skill-eval run <spec.json> --audit <audit.json>');
96
+ if (value !== '--audit' || extra.length !== 1) {
97
+ throw new Error('Usage: aw-skill-eval run <spec.json> --audit <audit.json>');
98
+ }
99
+ const controller = new AbortController();
100
+ let receivedSignal = null;
101
+ const handleSignal = (signal) => {
102
+ if (receivedSignal)
103
+ return;
104
+ receivedSignal = signal;
105
+ controller.abort();
106
+ };
107
+ const handleSigint = () => handleSignal('SIGINT');
108
+ const handleSigterm = () => handleSignal('SIGTERM');
109
+ process.on('SIGINT', handleSigint);
110
+ process.on('SIGTERM', handleSigterm);
111
+ try {
112
+ const result = await runEvalSpec(runPath, {
113
+ auditPath: requirePath(extra[0], '--audit requires a path'),
114
+ signal: controller.signal,
115
+ });
116
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
117
+ }
118
+ finally {
119
+ process.off('SIGINT', handleSigint);
120
+ process.off('SIGTERM', handleSigterm);
121
+ if (receivedSignal)
122
+ process.exitCode = receivedSignal === 'SIGINT' ? 130 : 143;
123
+ }
57
124
  return;
58
125
  }
59
- if (command === 'bundle') {
60
- if (action !== 'validate')
61
- throw new Error('Usage: aw-skill-eval bundle validate <bundle.json>');
62
- const result = await validateRunBundle(requirePath(value, 'Usage: aw-skill-eval bundle validate <bundle.json>'));
126
+ if (command === 'result') {
127
+ if (action !== 'validate' || !value || extra.length !== 4) {
128
+ throw new Error('Usage: aw-skill-eval result validate <result.json> --spec <spec.json> --audit <audit.json>');
129
+ }
130
+ const specPath = optionPath(extra, '--spec', 'result validate requires one --spec path');
131
+ const auditPath = optionPath(extra, '--audit', 'result validate requires one --audit path');
132
+ const binding = await boundResult(specPath, auditPath);
133
+ const result = await validateEvalResultFile(requirePath(value, 'result validate requires a result path'), binding);
63
134
  process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
64
135
  if (!result.valid)
65
136
  process.exitCode = 1;
66
137
  return;
67
138
  }
68
- if (command === 'digest') {
69
- if (action !== 'skill')
70
- throw new Error('Usage: aw-skill-eval digest skill <skill-dir>');
71
- process.stdout.write(`${await computeSkillDigest(requirePath(value, 'Usage: aw-skill-eval digest skill <skill-dir>'))}\n`);
139
+ if (command === 'inspect-result') {
140
+ const options = value === undefined ? [] : [value, ...extra];
141
+ if (!action || options.length !== 4) {
142
+ throw new Error('Usage: aw-skill-eval inspect-result <result.json> --spec <spec.json> --audit <audit.json>');
143
+ }
144
+ const binding = await boundResult(optionPath(options, '--spec', 'inspect-result requires one --spec path'), optionPath(options, '--audit', 'inspect-result requires one --audit path'));
145
+ const validation = await validateEvalResultFile(requirePath(action, 'inspect-result requires a result path'), binding);
146
+ if (!validation.valid || !validation.calculated) {
147
+ process.stdout.write(`${JSON.stringify(validation, null, 2)}\n`);
148
+ process.exitCode = 1;
149
+ return;
150
+ }
151
+ const groups = new Map();
152
+ for (const run of validation.calculated.result.runs) {
153
+ const key = `${run.caseId}\0${run.attempt}`;
154
+ const group = groups.get(key) ?? { caseId: run.caseId, attempt: run.attempt, variants: {} };
155
+ group.variants[run.variant] = {
156
+ status: run.status,
157
+ durationMs: run.durationMs,
158
+ outputDir: run.outputDir,
159
+ usage: run.usage,
160
+ grade: run.grade,
161
+ error: run.error,
162
+ };
163
+ groups.set(key, group);
164
+ }
165
+ process.stdout.write(`${JSON.stringify({
166
+ version: 1,
167
+ summary: validation.calculated.result.summary,
168
+ groups: [...groups.values()],
169
+ }, null, 2)}\n`);
170
+ return;
171
+ }
172
+ if (command === 'audit' && action === 'validate' && value && extra.length === 2 && extra[0] === '--spec') {
173
+ const binding = await boundSpec(requirePath(extra[1], 'audit validate requires a --spec path'));
174
+ const result = await validateEvalAuditFile(requirePath(value, 'audit validate requires an audit path'), {
175
+ spec: binding.spec.spec,
176
+ selectedCaseIds: binding.cases.cases.map((entry) => entry.id),
177
+ });
178
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
179
+ if (!result.valid)
180
+ process.exitCode = 1;
72
181
  return;
73
182
  }
74
183
  throw new Error(`Unknown command: ${command}. Use --help for usage.`);
75
184
  }
76
185
  main(process.argv.slice(2)).catch((error) => {
77
186
  process.stderr.write(`[ERROR] ${error.message}\n`);
78
- process.exitCode = 1;
187
+ if (!process.exitCode)
188
+ process.exitCode = 1;
79
189
  });
80
190
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ import { type ChildProcess } from 'node:child_process';
2
+ import { type ChildProcessTreeMonitor } from './codex-eval-process-tree.js';
3
+ import { type CodexEvalRuntimeConfig } from './codex-eval-runtime-config.js';
4
+ import { type CodexEvalRpcIsolationEvidence } from './codex-eval-isolation.js';
5
+ import { type AwSkillEvalIsolation } from './codex-eval-cases.js';
6
+ export interface CodexEvalProcessManagementEvidence {
7
+ mode: 'managed' | 'observed' | 'unmanaged-confirmed' | 'not-applicable';
8
+ inspectionAvailable: boolean;
9
+ userAcknowledged: boolean;
10
+ descendantCleanupGuaranteed: boolean;
11
+ limitation?: string;
12
+ diagnostic?: string;
13
+ }
14
+ interface ScriptedReply {
15
+ expectedQuestionCount?: number;
16
+ answersByIndex: string[];
17
+ unexpectedQuestionAnswer: string;
18
+ }
19
+ interface WorkspaceArtifactExpectation {
20
+ path: string;
21
+ exists: boolean;
22
+ contains: string[];
23
+ notContains: string[];
24
+ json?: Record<string, unknown>;
25
+ }
26
+ interface WorkspaceArtifactEvidence {
27
+ path: string;
28
+ exists: boolean;
29
+ kind: 'absent' | 'file' | 'other';
30
+ bytes?: number;
31
+ sha256?: string;
32
+ text?: string;
33
+ }
34
+ export interface ConversationEvalCase {
35
+ id: string;
36
+ prompt: string;
37
+ scriptedReplies: ScriptedReply[];
38
+ expectedOutput: string;
39
+ checks: string[];
40
+ workspaceFiles: Record<string, string>;
41
+ workspaceUnchanged: boolean;
42
+ sandbox: 'read-only' | 'workspace-write';
43
+ allowedWorkspaceChanges: string[];
44
+ artifacts: WorkspaceArtifactExpectation[];
45
+ environmentPathPrepend: string[];
46
+ }
47
+ export interface AppServerRunEvidence {
48
+ variant: 'with_skill' | 'without_skill';
49
+ complete: boolean;
50
+ mechanicalPassed: boolean;
51
+ hostSourceAccessAbsent: boolean | null;
52
+ scriptedReplyMismatches: string[];
53
+ durationMs: number;
54
+ questions: Array<{
55
+ requestId: string;
56
+ step: number;
57
+ questions: Array<{
58
+ id: string;
59
+ header: string;
60
+ question: string;
61
+ options: Array<{
62
+ label: string;
63
+ description: string;
64
+ }> | null;
65
+ }>;
66
+ answers: Record<string, string[]>;
67
+ }>;
68
+ fallbackUserReplies?: Array<{
69
+ step: number;
70
+ eventTraceIndex: number;
71
+ answers: string[];
72
+ }>;
73
+ finalMessages: string[];
74
+ usage: unknown;
75
+ workspaceChanges: string[];
76
+ workspaceArtifacts: WorkspaceArtifactEvidence[];
77
+ diagnostics: string[];
78
+ eventTrace: unknown[];
79
+ isolation: CodexEvalRpcIsolationEvidence | null;
80
+ limitations: string[];
81
+ stderr?: string;
82
+ }
83
+ export declare const CODEX_CONVERSATION_NETWORK_LIMITATION = "Conversation app-server and tool execution network remains enabled because macOS Seatbelt cannot be nested reliably.";
84
+ export declare const CODEX_CONVERSATION_FINAL_ANSWER_FALLBACK_LIMITATION = "For final-answer fallback turns, expected_question_count is checked against answers_by_index length because structured questions are not observable.";
85
+ interface AppServerFrameHandler {
86
+ (frame: Record<string, unknown>): Promise<void> | void;
87
+ }
88
+ export declare function settleAppServerProcessCleanup(options: {
89
+ child: ChildProcess;
90
+ processTreeMonitor: ChildProcessTreeMonitor;
91
+ waitForClose: (timeoutMs: number) => Promise<boolean>;
92
+ }): Promise<void>;
93
+ export type CodexConversationProviderStage = 'workspace-materialization-started' | 'workspace-materialized' | 'containment-admission-started' | 'containment-admitted' | 'session-started' | 'session-initialized' | 'thread-started' | 'turn-started' | 'turn-completed';
94
+ export declare class CodexEvalAttemptControl {
95
+ private readonly options;
96
+ private readonly controller;
97
+ private readonly deadlineAt?;
98
+ private readonly timer?;
99
+ private removeExternalAbort;
100
+ private timedOut;
101
+ private externallyAborted;
102
+ constructor(options: {
103
+ label: string;
104
+ timeoutMs?: number;
105
+ signal?: AbortSignal;
106
+ });
107
+ get signal(): AbortSignal;
108
+ get timeoutExpired(): boolean;
109
+ throwIfStopped(stage: string): void;
110
+ remaining(stage: string): number;
111
+ rpcTimeout(stage: string, capMs?: number): number;
112
+ stopError(stage: string): Error;
113
+ dispose(): void;
114
+ }
115
+ export declare function inspectAppServerConfigWarning(frame: Record<string, unknown>): string | null;
116
+ export declare class EvalAppServerSession {
117
+ private readonly process;
118
+ private readonly processTreeId;
119
+ private readonly processTreeMonitor;
120
+ private readonly pending;
121
+ private readonly handlers;
122
+ private readonly failureHandlers;
123
+ private stdoutBuffer;
124
+ private stderrBuffer;
125
+ private nextId;
126
+ private terminalError?;
127
+ private closing;
128
+ private readonly closed;
129
+ private resolveClosed?;
130
+ private cleanupPromise?;
131
+ private unregisterSignalCleanup;
132
+ constructor(options: {
133
+ codexBin: string;
134
+ cwd: string;
135
+ env: NodeJS.ProcessEnv;
136
+ modelProvider: string;
137
+ sensitiveEnvironmentNames: string[];
138
+ isolation: AwSkillEvalIsolation;
139
+ processManagement?: CodexEvalProcessManagementEvidence;
140
+ configOverrides?: readonly string[];
141
+ hostReadContainmentProfile?: string;
142
+ });
143
+ onFrame(handler: AppServerFrameHandler): () => void;
144
+ onFailure(handler: (error: Error) => void): () => void;
145
+ initialize(timeoutMs?: number): Promise<void>;
146
+ sendRequest(method: string, params: unknown, timeoutMs?: number): Promise<unknown>;
147
+ respond(id: string | number, result: unknown): Promise<void>;
148
+ cleanup(): Promise<void>;
149
+ private cleanupProcess;
150
+ get stderr(): string;
151
+ scrub<T>(value: T): T;
152
+ private waitForClose;
153
+ private write;
154
+ private handleChunk;
155
+ private handleLine;
156
+ private fail;
157
+ }
158
+ export declare function normalizeConversationProviderCase(options: {
159
+ value: Record<string, unknown>;
160
+ expectedSkill: string;
161
+ fixtureRoot: string;
162
+ suitePathPrepend?: string[];
163
+ }): ConversationEvalCase;
164
+ export declare function extractAppServerThreadId(result: unknown): string;
165
+ export declare function runCodexConversationProviderCase(options: {
166
+ evalCase: ConversationEvalCase;
167
+ sourceProjectRoot: string;
168
+ skillMode: 'with-skill' | 'without-skill' | 'previous-version';
169
+ skillName: string;
170
+ skillNames: string[];
171
+ codexBin: string;
172
+ model?: string;
173
+ codexRuntime: CodexEvalRuntimeConfig;
174
+ timeoutMs: number;
175
+ sourceEnv?: NodeJS.ProcessEnv;
176
+ isolation: AwSkillEvalIsolation;
177
+ forbiddenHostRoots?: string[];
178
+ environmentFixtures: Array<{
179
+ fixtureRoot: string;
180
+ relativePath: string;
181
+ }>;
182
+ processManagement?: CodexEvalProcessManagementEvidence;
183
+ workRoot?: string;
184
+ manageTimeout?: boolean;
185
+ signal?: AbortSignal;
186
+ onStage?: (stage: CodexConversationProviderStage) => void;
187
+ }): Promise<AppServerRunEvidence>;
188
+ export declare function runCodexEvalIsolationProbe(options: {
189
+ subjectRoot: string;
190
+ skillName: string;
191
+ skillNames?: string[];
192
+ codexBin: string;
193
+ codexRuntime: CodexEvalRuntimeConfig;
194
+ sourceEnv?: NodeJS.ProcessEnv;
195
+ processManagement?: CodexEvalProcessManagementEvidence;
196
+ timeoutMs?: number;
197
+ signal?: AbortSignal;
198
+ }): Promise<CodexEvalRpcIsolationEvidence>;
199
+ export {};