@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.
- package/dist/bin.js +149 -39
- package/dist/bin.js.map +1 -1
- package/dist/codex-eval-app-server.d.ts +199 -0
- package/dist/codex-eval-app-server.js +1366 -0
- package/dist/codex-eval-app-server.js.map +1 -0
- package/dist/codex-eval-cases.d.ts +43 -0
- package/dist/codex-eval-cases.js +327 -0
- package/dist/codex-eval-cases.js.map +1 -0
- package/dist/codex-eval-isolation.d.ts +61 -0
- package/dist/codex-eval-isolation.js +318 -0
- package/dist/codex-eval-isolation.js.map +1 -0
- package/dist/codex-eval-process-tree.d.ts +38 -0
- package/dist/codex-eval-process-tree.js +803 -0
- package/dist/codex-eval-process-tree.js.map +1 -0
- package/dist/codex-eval-runtime-config.d.ts +43 -0
- package/dist/codex-eval-runtime-config.js +607 -0
- package/dist/codex-eval-runtime-config.js.map +1 -0
- package/dist/codex-trigger-eval.d.ts +82 -0
- package/dist/codex-trigger-eval.js +789 -0
- package/dist/codex-trigger-eval.js.map +1 -0
- package/dist/codex-workflow.d.ts +188 -0
- package/dist/codex-workflow.js +1790 -0
- package/dist/codex-workflow.js.map +1 -0
- package/dist/credentials.d.ts +5 -0
- package/dist/credentials.js +30 -0
- package/dist/credentials.js.map +1 -0
- package/dist/custom-process.d.ts +58 -0
- package/dist/custom-process.js +409 -0
- package/dist/custom-process.js.map +1 -0
- package/dist/eval-audit.d.ts +38 -0
- package/dist/eval-audit.js +71 -0
- package/dist/eval-audit.js.map +1 -0
- package/dist/eval-file.d.ts +9 -0
- package/dist/eval-file.js +15 -0
- package/dist/eval-file.js.map +1 -0
- package/dist/eval-result.d.ts +64 -0
- package/dist/eval-result.js +144 -0
- package/dist/eval-result.js.map +1 -0
- package/dist/eval-run.d.ts +23 -0
- package/dist/eval-run.js +539 -0
- package/dist/eval-run.js.map +1 -0
- package/dist/eval-spec.d.ts +57 -0
- package/dist/eval-spec.js +120 -0
- package/dist/eval-spec.js.map +1 -0
- package/dist/eval-suite-binding.d.ts +4 -0
- package/dist/eval-suite-binding.js +19 -0
- package/dist/eval-suite-binding.js.map +1 -0
- package/dist/index.d.ts +34 -9
- package/dist/index.js +18 -6
- package/dist/index.js.map +1 -1
- package/dist/json-schema.js +75 -5
- package/dist/json-schema.js.map +1 -1
- package/dist/output-path.js +2 -2
- package/dist/process-tree.d.ts +19 -1
- package/dist/process-tree.js +321 -65
- package/dist/process-tree.js.map +1 -1
- package/dist/process.d.ts +0 -2
- package/dist/process.js +76 -25
- package/dist/process.js.map +1 -1
- package/dist/provider-doctor.d.ts +33 -0
- package/dist/provider-doctor.js +86 -0
- package/dist/provider-doctor.js.map +1 -0
- package/dist/providers.d.ts +82 -0
- package/dist/providers.js +630 -0
- package/dist/providers.js.map +1 -0
- package/dist/run-paths.d.ts +8 -0
- package/dist/run-paths.js +71 -0
- package/dist/run-paths.js.map +1 -0
- package/dist/runtime-skill.d.ts +6 -0
- package/dist/runtime-skill.js +87 -3
- package/dist/runtime-skill.js.map +1 -1
- package/dist/schemas/digests.json +3 -3
- package/dist/schemas/eval-audit.schema.json +64 -0
- package/dist/schemas/eval-result.schema.json +202 -0
- package/dist/schemas/eval-spec.schema.json +109 -0
- package/dist/schemas.d.ts +1 -3
- package/dist/schemas.js +0 -17
- package/dist/schemas.js.map +1 -1
- package/dist/selected-cases.d.ts +30 -0
- package/dist/selected-cases.js +388 -0
- package/dist/selected-cases.js.map +1 -0
- package/dist/types.d.ts +2 -34
- package/package.json +6 -1
- package/dist/bundle.d.ts +0 -93
- package/dist/bundle.js +0 -216
- package/dist/bundle.js.map +0 -1
- package/dist/capabilities.d.ts +0 -2
- package/dist/capabilities.js +0 -38
- package/dist/capabilities.js.map +0 -1
- package/dist/plan.d.ts +0 -79
- package/dist/plan.js +0 -285
- package/dist/plan.js.map +0 -1
- package/dist/run.d.ts +0 -2
- package/dist/run.js +0 -592
- package/dist/run.js.map +0 -1
- package/dist/schemas/aw-skill-eval-execution-plan.schema.json +0 -220
- package/dist/schemas/eval-run-bundle.schema.json +0 -408
- package/dist/schemas/eval-runtime-capabilities.schema.json +0 -85
|
@@ -0,0 +1,607 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import fs from 'fs-extra';
|
|
5
|
+
import { ParseError, parseTOML } from 'toml-eslint-parser';
|
|
6
|
+
import { CODEX_EVAL_CREDENTIAL_CONFIG_LINES } from './codex-eval-isolation.js';
|
|
7
|
+
import { redactSecrets } from './credentials.js';
|
|
8
|
+
export const DEFAULT_CODEX_EVAL_MODEL = 'gpt-5.6-luna';
|
|
9
|
+
const MODEL_CONFIG_KEYS = new Set([
|
|
10
|
+
'model',
|
|
11
|
+
'model_provider',
|
|
12
|
+
'model_reasoning_effort',
|
|
13
|
+
'model_reasoning_summary',
|
|
14
|
+
'model_verbosity',
|
|
15
|
+
]);
|
|
16
|
+
const OPENAI_AUTH_FILES = ['auth.json', '.credentials.json'];
|
|
17
|
+
const EVAL_PROCESS_PASSTHROUGH_ENV = [
|
|
18
|
+
'PATH',
|
|
19
|
+
'LANG',
|
|
20
|
+
'LC_ALL',
|
|
21
|
+
'HTTP_PROXY',
|
|
22
|
+
'HTTPS_PROXY',
|
|
23
|
+
'ALL_PROXY',
|
|
24
|
+
'NO_PROXY',
|
|
25
|
+
'SSL_CERT_FILE',
|
|
26
|
+
'SSL_CERT_DIR',
|
|
27
|
+
'NODE_EXTRA_CA_CERTS',
|
|
28
|
+
];
|
|
29
|
+
const RESERVED_PROVIDER_ENV = new Set([
|
|
30
|
+
...EVAL_PROCESS_PASSTHROUGH_ENV,
|
|
31
|
+
'HOME',
|
|
32
|
+
'USERPROFILE',
|
|
33
|
+
'CODEX_HOME',
|
|
34
|
+
'TMPDIR',
|
|
35
|
+
'TEMP',
|
|
36
|
+
'TMP',
|
|
37
|
+
'NODE_OPTIONS',
|
|
38
|
+
'NODE_PATH',
|
|
39
|
+
'BASH_ENV',
|
|
40
|
+
'ENV',
|
|
41
|
+
'LD_PRELOAD',
|
|
42
|
+
]);
|
|
43
|
+
const SENSITIVE_PASSTHROUGH_ENV = new Set([
|
|
44
|
+
'HTTP_PROXY',
|
|
45
|
+
'HTTPS_PROXY',
|
|
46
|
+
'ALL_PROXY',
|
|
47
|
+
'NO_PROXY',
|
|
48
|
+
]);
|
|
49
|
+
const ACTIVE_RUNTIME_ROOTS = new Set();
|
|
50
|
+
const ACTIVE_SIGNAL_CLEANUPS = new Set();
|
|
51
|
+
const EVAL_RESOURCE_SIGNALS = ['SIGINT', 'SIGTERM'];
|
|
52
|
+
const RUNTIME_ROOT_REMOVE_ATTEMPTS = 4;
|
|
53
|
+
const RUNTIME_ROOT_REMOVE_RETRY_MS = 50;
|
|
54
|
+
const evalSignalHandlers = new Map();
|
|
55
|
+
let evalSignalCleanupInProgress = false;
|
|
56
|
+
let codexEvalSignalShutdownRequested = false;
|
|
57
|
+
function isRecord(value) {
|
|
58
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
59
|
+
}
|
|
60
|
+
function keySegments(key) {
|
|
61
|
+
return key.keys.map((segment) => segment.type === 'TOMLBare' ? segment.name : segment.value);
|
|
62
|
+
}
|
|
63
|
+
function scalarString(node) {
|
|
64
|
+
return node.type === 'TOMLValue' && node.kind === 'string'
|
|
65
|
+
? node.value
|
|
66
|
+
: undefined;
|
|
67
|
+
}
|
|
68
|
+
function tableEntry(table, key) {
|
|
69
|
+
return table.body.find((entry) => keySegments(entry.key).join('.') === key);
|
|
70
|
+
}
|
|
71
|
+
function inlineStringValues(node) {
|
|
72
|
+
if (!node || node.type !== 'TOMLInlineTable') {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
return node.body.flatMap((entry) => {
|
|
76
|
+
const value = scalarString(entry.value);
|
|
77
|
+
return value ? [value] : [];
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function sourceCodexHome(sourceEnv) {
|
|
81
|
+
return path.resolve(sourceEnv.CODEX_HOME ?? path.join(sourceEnv.HOME ?? os.homedir(), '.codex'));
|
|
82
|
+
}
|
|
83
|
+
function topLevelEntries(program) {
|
|
84
|
+
return program.body[0].body;
|
|
85
|
+
}
|
|
86
|
+
function topLevelString(program, key) {
|
|
87
|
+
const entry = topLevelEntries(program).find((candidate) => candidate.type === 'TOMLKeyValue' && keySegments(candidate.key).join('.') === key);
|
|
88
|
+
return entry ? scalarString(entry.value) : undefined;
|
|
89
|
+
}
|
|
90
|
+
function activeProfileTable(program) {
|
|
91
|
+
const profile = topLevelString(program, 'profile');
|
|
92
|
+
if (!profile)
|
|
93
|
+
return undefined;
|
|
94
|
+
return topLevelEntries(program).find((entry) => {
|
|
95
|
+
if (entry.type !== 'TOMLTable')
|
|
96
|
+
return false;
|
|
97
|
+
const segments = keySegments(entry.key);
|
|
98
|
+
return segments.length === 2 && segments[0] === 'profiles' && segments[1] === profile;
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function effectiveModelEntries(program) {
|
|
102
|
+
const entries = new Map();
|
|
103
|
+
for (const entry of topLevelEntries(program)) {
|
|
104
|
+
if (entry.type !== 'TOMLKeyValue')
|
|
105
|
+
continue;
|
|
106
|
+
const key = keySegments(entry.key).join('.');
|
|
107
|
+
if (MODEL_CONFIG_KEYS.has(key))
|
|
108
|
+
entries.set(key, entry);
|
|
109
|
+
}
|
|
110
|
+
for (const entry of activeProfileTable(program)?.body ?? []) {
|
|
111
|
+
const key = keySegments(entry.key).join('.');
|
|
112
|
+
if (MODEL_CONFIG_KEYS.has(key))
|
|
113
|
+
entries.set(key, entry);
|
|
114
|
+
}
|
|
115
|
+
return entries;
|
|
116
|
+
}
|
|
117
|
+
function effectiveModelString(program, key) {
|
|
118
|
+
const entry = effectiveModelEntries(program).get(key);
|
|
119
|
+
return entry ? scalarString(entry.value) : undefined;
|
|
120
|
+
}
|
|
121
|
+
function providerTables(program, provider) {
|
|
122
|
+
return topLevelEntries(program).filter((entry) => {
|
|
123
|
+
if (entry.type !== 'TOMLTable')
|
|
124
|
+
return false;
|
|
125
|
+
const segments = keySegments(entry.key);
|
|
126
|
+
return segments[0] === 'model_providers' && segments[1] === provider;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
function providerEnvironmentNames(tables) {
|
|
130
|
+
const provider = tables.find((table) => keySegments(table.key).length === 2);
|
|
131
|
+
if (!provider)
|
|
132
|
+
return [];
|
|
133
|
+
const names = new Set();
|
|
134
|
+
const envKey = tableEntry(provider, 'env_key');
|
|
135
|
+
const envKeyName = envKey ? scalarString(envKey.value) : undefined;
|
|
136
|
+
if (envKeyName)
|
|
137
|
+
names.add(envKeyName);
|
|
138
|
+
const inlineHeaders = tableEntry(provider, 'env_http_headers');
|
|
139
|
+
for (const name of inlineStringValues(inlineHeaders?.value))
|
|
140
|
+
names.add(name);
|
|
141
|
+
for (const table of tables) {
|
|
142
|
+
const segments = keySegments(table.key);
|
|
143
|
+
if (segments.length !== 3 || segments[2] !== 'env_http_headers')
|
|
144
|
+
continue;
|
|
145
|
+
for (const entry of table.body) {
|
|
146
|
+
const value = scalarString(entry.value);
|
|
147
|
+
if (value)
|
|
148
|
+
names.add(value);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return [...names].sort((left, right) => left.localeCompare(right));
|
|
152
|
+
}
|
|
153
|
+
function assertSafeProviderEnvironmentName(name, provider) {
|
|
154
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(name)) {
|
|
155
|
+
throw new Error(`Codex eval model provider ${JSON.stringify(provider)} declares invalid environment variable ${JSON.stringify(name)}.`);
|
|
156
|
+
}
|
|
157
|
+
if (RESERVED_PROVIDER_ENV.has(name) ||
|
|
158
|
+
name.startsWith('AW_') ||
|
|
159
|
+
name.startsWith('XDG_') ||
|
|
160
|
+
name.startsWith('DYLD_')) {
|
|
161
|
+
throw new Error(`Codex eval model provider ${JSON.stringify(provider)} cannot use reserved environment variable ${name}.`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function providerHasEmbeddedBearer(tables) {
|
|
165
|
+
const provider = tables.find((table) => keySegments(table.key).length === 2);
|
|
166
|
+
const entry = provider ? tableEntry(provider, 'experimental_bearer_token') : undefined;
|
|
167
|
+
return Boolean(entry && scalarString(entry.value));
|
|
168
|
+
}
|
|
169
|
+
function providerSensitiveValues(tables) {
|
|
170
|
+
const values = new Set();
|
|
171
|
+
const provider = tables.find((table) => keySegments(table.key).length === 2);
|
|
172
|
+
for (const key of ['base_url', 'experimental_bearer_token']) {
|
|
173
|
+
const entry = provider ? tableEntry(provider, key) : undefined;
|
|
174
|
+
const value = entry ? scalarString(entry.value) : undefined;
|
|
175
|
+
if (value)
|
|
176
|
+
values.add(value);
|
|
177
|
+
}
|
|
178
|
+
const inlineHeaders = provider ? tableEntry(provider, 'http_headers') : undefined;
|
|
179
|
+
for (const value of inlineStringValues(inlineHeaders?.value))
|
|
180
|
+
values.add(value);
|
|
181
|
+
for (const table of tables) {
|
|
182
|
+
const segments = keySegments(table.key);
|
|
183
|
+
if (segments.length !== 3 || segments[2] !== 'http_headers')
|
|
184
|
+
continue;
|
|
185
|
+
for (const entry of table.body) {
|
|
186
|
+
const value = scalarString(entry.value);
|
|
187
|
+
if (value)
|
|
188
|
+
values.add(value);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return [...values];
|
|
192
|
+
}
|
|
193
|
+
function addSensitiveValues(runtime, values) {
|
|
194
|
+
const unique = new Set(runtime.sensitiveValues);
|
|
195
|
+
for (const value of values) {
|
|
196
|
+
if (value)
|
|
197
|
+
unique.add(value);
|
|
198
|
+
}
|
|
199
|
+
runtime.sensitiveValues = [...unique].sort((left, right) => right.length - left.length);
|
|
200
|
+
}
|
|
201
|
+
function sensitivePassthroughEnvironment(sourceEnv) {
|
|
202
|
+
const names = [];
|
|
203
|
+
const values = [];
|
|
204
|
+
for (const name of SENSITIVE_PASSTHROUGH_ENV) {
|
|
205
|
+
const value = sourceEnv[name];
|
|
206
|
+
if (value === undefined)
|
|
207
|
+
continue;
|
|
208
|
+
names.push(name);
|
|
209
|
+
if (value)
|
|
210
|
+
values.push(value);
|
|
211
|
+
}
|
|
212
|
+
return { names: names.sort(), values };
|
|
213
|
+
}
|
|
214
|
+
function jsonStringValues(value) {
|
|
215
|
+
if (typeof value === 'string')
|
|
216
|
+
return value ? [value] : [];
|
|
217
|
+
if (Array.isArray(value))
|
|
218
|
+
return value.flatMap(jsonStringValues);
|
|
219
|
+
if (isRecord(value))
|
|
220
|
+
return Object.values(value).flatMap(jsonStringValues);
|
|
221
|
+
return [];
|
|
222
|
+
}
|
|
223
|
+
function renderFilteredConfig(options) {
|
|
224
|
+
const lines = [...CODEX_EVAL_CREDENTIAL_CONFIG_LINES];
|
|
225
|
+
for (const [key, entry] of effectiveModelEntries(options.program)) {
|
|
226
|
+
if (key === 'model')
|
|
227
|
+
continue;
|
|
228
|
+
if (key === 'model_provider')
|
|
229
|
+
continue;
|
|
230
|
+
lines.push(options.content.slice(entry.range[0], entry.range[1]));
|
|
231
|
+
}
|
|
232
|
+
lines.push(`model = ${JSON.stringify(options.model)}`);
|
|
233
|
+
lines.push(`model_provider = ${JSON.stringify(options.providerOverride ?? options.provider)}`);
|
|
234
|
+
for (const table of options.tables) {
|
|
235
|
+
lines.push(options.content.slice(table.range[0], table.range[1]));
|
|
236
|
+
}
|
|
237
|
+
return `${lines.join('\n\n')}\n`;
|
|
238
|
+
}
|
|
239
|
+
function evidenceDigest(value) {
|
|
240
|
+
return `sha256:${createHash('sha256').update(JSON.stringify({
|
|
241
|
+
...value,
|
|
242
|
+
credentialStores: {
|
|
243
|
+
cliAuth: 'file',
|
|
244
|
+
mcpOauth: 'file',
|
|
245
|
+
secretAuthStorage: false,
|
|
246
|
+
},
|
|
247
|
+
})).digest('hex')}`;
|
|
248
|
+
}
|
|
249
|
+
export function cleanCodexEvalRuntimeConfig(sourceEnv = process.env, modelOverride) {
|
|
250
|
+
const model = modelOverride ?? DEFAULT_CODEX_EVAL_MODEL;
|
|
251
|
+
const sensitivePassthrough = sensitivePassthroughEnvironment(sourceEnv);
|
|
252
|
+
const descriptor = {
|
|
253
|
+
inherited: false,
|
|
254
|
+
model,
|
|
255
|
+
modelProvider: 'openai',
|
|
256
|
+
credentialSource: sourceEnv.OPENAI_API_KEY ? 'environment' : 'openai-auth',
|
|
257
|
+
};
|
|
258
|
+
return {
|
|
259
|
+
...descriptor,
|
|
260
|
+
configToml: [
|
|
261
|
+
...CODEX_EVAL_CREDENTIAL_CONFIG_LINES,
|
|
262
|
+
`model = ${JSON.stringify(model)}`,
|
|
263
|
+
'model_provider = "openai"',
|
|
264
|
+
'',
|
|
265
|
+
].join('\n'),
|
|
266
|
+
providerEnvironment: sourceEnv.OPENAI_API_KEY
|
|
267
|
+
? { OPENAI_API_KEY: sourceEnv.OPENAI_API_KEY }
|
|
268
|
+
: {},
|
|
269
|
+
sourceCodexHome: sourceCodexHome(sourceEnv),
|
|
270
|
+
copyOpenAiAuth: !sourceEnv.OPENAI_API_KEY,
|
|
271
|
+
sensitiveEnvironmentNames: [
|
|
272
|
+
...(sourceEnv.OPENAI_API_KEY ? ['OPENAI_API_KEY'] : []),
|
|
273
|
+
...sensitivePassthrough.names,
|
|
274
|
+
].sort(),
|
|
275
|
+
sensitiveValues: [
|
|
276
|
+
...(sourceEnv.OPENAI_API_KEY ? [sourceEnv.OPENAI_API_KEY] : []),
|
|
277
|
+
...sensitivePassthrough.values,
|
|
278
|
+
],
|
|
279
|
+
evidenceDigest: evidenceDigest(descriptor),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
export async function resolveCodexEvalRuntimeConfig(options) {
|
|
283
|
+
const sourceEnv = options.sourceEnv ?? process.env;
|
|
284
|
+
if (!options.inheritUserConfig) {
|
|
285
|
+
if (options.configPath || options.modelProviderOverride) {
|
|
286
|
+
throw new Error('--no-inherit-codex-config cannot be combined with --codex-config or --model-provider.');
|
|
287
|
+
}
|
|
288
|
+
return cleanCodexEvalRuntimeConfig(sourceEnv, options.modelOverride);
|
|
289
|
+
}
|
|
290
|
+
const codexHome = sourceCodexHome(sourceEnv);
|
|
291
|
+
const configPath = path.resolve(options.configPath ?? path.join(codexHome, 'config.toml'));
|
|
292
|
+
if (!(await fs.pathExists(configPath))) {
|
|
293
|
+
if (options.configPath) {
|
|
294
|
+
throw new Error(`Codex eval config does not exist: ${configPath}`);
|
|
295
|
+
}
|
|
296
|
+
return cleanCodexEvalRuntimeConfig(sourceEnv, options.modelOverride);
|
|
297
|
+
}
|
|
298
|
+
const content = await fs.readFile(configPath, 'utf8');
|
|
299
|
+
let program;
|
|
300
|
+
try {
|
|
301
|
+
program = parseTOML(content);
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
const message = error instanceof ParseError ? error.message : String(error);
|
|
305
|
+
throw new Error(`Unable to parse Codex eval config ${configPath}: ${message}`);
|
|
306
|
+
}
|
|
307
|
+
const provider = options.modelProviderOverride ?? effectiveModelString(program, 'model_provider') ?? 'openai';
|
|
308
|
+
const tables = providerTables(program, provider);
|
|
309
|
+
if (provider !== 'openai' && tables.length === 0) {
|
|
310
|
+
throw new Error(`Codex eval model provider ${JSON.stringify(provider)} is not defined in ${configPath}.`);
|
|
311
|
+
}
|
|
312
|
+
const model = options.modelOverride ?? DEFAULT_CODEX_EVAL_MODEL;
|
|
313
|
+
const builtInOpenAiProvider = provider === 'openai' && tables.length === 0;
|
|
314
|
+
const names = providerEnvironmentNames(tables);
|
|
315
|
+
const providerEnvironment = {};
|
|
316
|
+
for (const name of names) {
|
|
317
|
+
assertSafeProviderEnvironmentName(name, provider);
|
|
318
|
+
const value = sourceEnv[name];
|
|
319
|
+
if (!value) {
|
|
320
|
+
throw new Error(`Codex eval model provider ${JSON.stringify(provider)} requires environment variable ${name}.`);
|
|
321
|
+
}
|
|
322
|
+
providerEnvironment[name] = value;
|
|
323
|
+
}
|
|
324
|
+
if (builtInOpenAiProvider && sourceEnv.OPENAI_API_KEY) {
|
|
325
|
+
providerEnvironment.OPENAI_API_KEY = sourceEnv.OPENAI_API_KEY;
|
|
326
|
+
}
|
|
327
|
+
const embedded = providerHasEmbeddedBearer(tables);
|
|
328
|
+
const environmentCredential = Object.keys(providerEnvironment).length > 0;
|
|
329
|
+
const copyOpenAiAuth = builtInOpenAiProvider && !embedded && !environmentCredential;
|
|
330
|
+
const sensitivePassthrough = sensitivePassthroughEnvironment(sourceEnv);
|
|
331
|
+
const credentialSource = embedded
|
|
332
|
+
? 'embedded'
|
|
333
|
+
: environmentCredential
|
|
334
|
+
? 'environment'
|
|
335
|
+
: copyOpenAiAuth
|
|
336
|
+
? 'openai-auth'
|
|
337
|
+
: 'none';
|
|
338
|
+
const descriptor = {
|
|
339
|
+
inherited: true,
|
|
340
|
+
model,
|
|
341
|
+
modelProvider: provider,
|
|
342
|
+
credentialSource,
|
|
343
|
+
};
|
|
344
|
+
return {
|
|
345
|
+
...descriptor,
|
|
346
|
+
configToml: renderFilteredConfig({
|
|
347
|
+
content,
|
|
348
|
+
program,
|
|
349
|
+
provider,
|
|
350
|
+
tables,
|
|
351
|
+
model,
|
|
352
|
+
providerOverride: options.modelProviderOverride,
|
|
353
|
+
}),
|
|
354
|
+
providerEnvironment,
|
|
355
|
+
sourceCodexHome: codexHome,
|
|
356
|
+
copyOpenAiAuth,
|
|
357
|
+
sensitiveEnvironmentNames: [
|
|
358
|
+
...Object.keys(providerEnvironment),
|
|
359
|
+
...sensitivePassthrough.names,
|
|
360
|
+
].sort(),
|
|
361
|
+
sensitiveValues: [
|
|
362
|
+
...providerSensitiveValues(tables),
|
|
363
|
+
...Object.values(providerEnvironment),
|
|
364
|
+
...sensitivePassthrough.values,
|
|
365
|
+
],
|
|
366
|
+
evidenceDigest: evidenceDigest(descriptor),
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
export async function materializeCodexEvalRuntimeHome(runtime, destination, options = {}) {
|
|
370
|
+
await fs.ensureDir(destination);
|
|
371
|
+
await fs.chmod(destination, 0o700).catch(() => undefined);
|
|
372
|
+
const configPath = path.join(destination, 'config.toml');
|
|
373
|
+
const trustedProject = options.trustedProject
|
|
374
|
+
? await fs.realpath(options.trustedProject)
|
|
375
|
+
: null;
|
|
376
|
+
const configToml = trustedProject
|
|
377
|
+
? `${runtime.configToml.trimEnd()}\n\n[projects.${JSON.stringify(trustedProject)}]\ntrust_level = "trusted"\n`
|
|
378
|
+
: runtime.configToml;
|
|
379
|
+
await fs.writeFile(configPath, configToml, { encoding: 'utf8', mode: 0o600 });
|
|
380
|
+
await fs.chmod(configPath, 0o600).catch(() => undefined);
|
|
381
|
+
if (!runtime.copyOpenAiAuth)
|
|
382
|
+
return;
|
|
383
|
+
for (const name of OPENAI_AUTH_FILES) {
|
|
384
|
+
const source = path.join(runtime.sourceCodexHome, name);
|
|
385
|
+
if (!(await fs.pathExists(source)))
|
|
386
|
+
continue;
|
|
387
|
+
const target = path.join(destination, name);
|
|
388
|
+
const bytes = await fs.readFile(source);
|
|
389
|
+
const content = bytes.toString('utf8');
|
|
390
|
+
try {
|
|
391
|
+
addSensitiveValues(runtime, jsonStringValues(JSON.parse(content)));
|
|
392
|
+
}
|
|
393
|
+
catch {
|
|
394
|
+
addSensitiveValues(runtime, [content.trim()]);
|
|
395
|
+
}
|
|
396
|
+
await fs.writeFile(target, bytes, { flag: 'wx', mode: 0o600 });
|
|
397
|
+
await fs.chmod(target, 0o600).catch(() => undefined);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
export function applyCodexEvalProviderEnvironment(env, runtime) {
|
|
401
|
+
return { ...runtime.providerEnvironment, ...env };
|
|
402
|
+
}
|
|
403
|
+
function removeEvalSignalHandlers() {
|
|
404
|
+
for (const [signal, handler] of evalSignalHandlers) {
|
|
405
|
+
process.off(signal, handler);
|
|
406
|
+
}
|
|
407
|
+
evalSignalHandlers.clear();
|
|
408
|
+
}
|
|
409
|
+
function delay(milliseconds) {
|
|
410
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
411
|
+
}
|
|
412
|
+
function unregisterRuntimeRoot(registration) {
|
|
413
|
+
ACTIVE_RUNTIME_ROOTS.delete(registration);
|
|
414
|
+
if (ACTIVE_RUNTIME_ROOTS.size === 0 &&
|
|
415
|
+
ACTIVE_SIGNAL_CLEANUPS.size === 0 &&
|
|
416
|
+
!evalSignalCleanupInProgress) {
|
|
417
|
+
removeEvalSignalHandlers();
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
function addRuntimeRoot(rootPromise) {
|
|
421
|
+
assertCodexEvalCanStartWork();
|
|
422
|
+
const registration = { rootPromise };
|
|
423
|
+
ACTIVE_RUNTIME_ROOTS.add(registration);
|
|
424
|
+
installEvalSignalHandlers();
|
|
425
|
+
return registration;
|
|
426
|
+
}
|
|
427
|
+
async function removeRuntimeRoot(registration) {
|
|
428
|
+
if (registration.cleanupPromise)
|
|
429
|
+
return registration.cleanupPromise;
|
|
430
|
+
const cleanupPromise = (async () => {
|
|
431
|
+
let root;
|
|
432
|
+
try {
|
|
433
|
+
root = await registration.rootPromise;
|
|
434
|
+
}
|
|
435
|
+
catch (error) {
|
|
436
|
+
unregisterRuntimeRoot(registration);
|
|
437
|
+
return `Could not allocate a registered Codex eval temporary root: ${error instanceof Error ? error.message : String(error)}`;
|
|
438
|
+
}
|
|
439
|
+
let lastError;
|
|
440
|
+
for (let attempt = 1; attempt <= RUNTIME_ROOT_REMOVE_ATTEMPTS; attempt += 1) {
|
|
441
|
+
try {
|
|
442
|
+
await fs.remove(root);
|
|
443
|
+
unregisterRuntimeRoot(registration);
|
|
444
|
+
return null;
|
|
445
|
+
}
|
|
446
|
+
catch (error) {
|
|
447
|
+
lastError = error;
|
|
448
|
+
if (attempt < RUNTIME_ROOT_REMOVE_ATTEMPTS) {
|
|
449
|
+
await delay(RUNTIME_ROOT_REMOVE_RETRY_MS);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
return `Could not remove Codex eval temporary root after ${RUNTIME_ROOT_REMOVE_ATTEMPTS} attempts: ` +
|
|
454
|
+
`${root}: ${lastError instanceof Error ? lastError.message : String(lastError)}`;
|
|
455
|
+
})();
|
|
456
|
+
registration.cleanupPromise = cleanupPromise;
|
|
457
|
+
const diagnostic = await cleanupPromise;
|
|
458
|
+
if (diagnostic)
|
|
459
|
+
registration.cleanupPromise = undefined;
|
|
460
|
+
return diagnostic;
|
|
461
|
+
}
|
|
462
|
+
export function assertCodexEvalCanStartWork() {
|
|
463
|
+
if (codexEvalSignalShutdownRequested) {
|
|
464
|
+
throw new Error('Cannot start Codex eval work because signal shutdown is in progress.');
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
export function resetCodexEvalSignalShutdownForTests() {
|
|
468
|
+
if (evalSignalCleanupInProgress ||
|
|
469
|
+
ACTIVE_RUNTIME_ROOTS.size > 0 ||
|
|
470
|
+
ACTIVE_SIGNAL_CLEANUPS.size > 0) {
|
|
471
|
+
throw new Error('Cannot reset Codex eval signal shutdown while resources are active.');
|
|
472
|
+
}
|
|
473
|
+
codexEvalSignalShutdownRequested = false;
|
|
474
|
+
}
|
|
475
|
+
export async function cleanupActiveCodexEvalResources() {
|
|
476
|
+
const diagnostics = (await Promise.all([...ACTIVE_RUNTIME_ROOTS].map(removeRuntimeRoot))).filter((entry) => entry !== null);
|
|
477
|
+
if (diagnostics.length > 0) {
|
|
478
|
+
throw new Error(diagnostics.join('\n'));
|
|
479
|
+
}
|
|
480
|
+
if (ACTIVE_SIGNAL_CLEANUPS.size === 0 &&
|
|
481
|
+
!evalSignalCleanupInProgress) {
|
|
482
|
+
removeEvalSignalHandlers();
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
async function cleanupActiveCodexEvalSignalResources() {
|
|
486
|
+
const diagnostics = [];
|
|
487
|
+
while (ACTIVE_SIGNAL_CLEANUPS.size > 0) {
|
|
488
|
+
const cleanups = [...ACTIVE_SIGNAL_CLEANUPS];
|
|
489
|
+
ACTIVE_SIGNAL_CLEANUPS.clear();
|
|
490
|
+
const results = await Promise.allSettled(cleanups.map((cleanup) => Promise.resolve().then(cleanup)));
|
|
491
|
+
for (const result of results) {
|
|
492
|
+
if (result.status === 'rejected') {
|
|
493
|
+
diagnostics.push(`Codex eval process cleanup failed: ${result.reason instanceof Error ? result.reason.message : String(result.reason)}`);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
diagnostics.push(...(await Promise.all([...ACTIVE_RUNTIME_ROOTS].map(removeRuntimeRoot))).filter((entry) => entry !== null));
|
|
498
|
+
return diagnostics;
|
|
499
|
+
}
|
|
500
|
+
export function registerCodexEvalSignalCleanup(cleanup) {
|
|
501
|
+
assertCodexEvalCanStartWork();
|
|
502
|
+
ACTIVE_SIGNAL_CLEANUPS.add(cleanup);
|
|
503
|
+
installEvalSignalHandlers();
|
|
504
|
+
return () => {
|
|
505
|
+
ACTIVE_SIGNAL_CLEANUPS.delete(cleanup);
|
|
506
|
+
if (ACTIVE_RUNTIME_ROOTS.size === 0 &&
|
|
507
|
+
ACTIVE_SIGNAL_CLEANUPS.size === 0 &&
|
|
508
|
+
!evalSignalCleanupInProgress) {
|
|
509
|
+
removeEvalSignalHandlers();
|
|
510
|
+
}
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
export function registerCodexEvalTemporaryRoot(root) {
|
|
514
|
+
const registration = addRuntimeRoot(Promise.resolve(root));
|
|
515
|
+
return () => unregisterRuntimeRoot(registration);
|
|
516
|
+
}
|
|
517
|
+
export async function createCodexEvalTemporaryRoot(prefix, options = {}) {
|
|
518
|
+
assertCodexEvalCanStartWork();
|
|
519
|
+
const rootPromise = options.allocate?.() ?? fs.mkdtemp(path.join(os.tmpdir(), prefix));
|
|
520
|
+
const registration = addRuntimeRoot(rootPromise);
|
|
521
|
+
let root;
|
|
522
|
+
try {
|
|
523
|
+
root = await rootPromise;
|
|
524
|
+
assertCodexEvalCanStartWork();
|
|
525
|
+
}
|
|
526
|
+
catch (error) {
|
|
527
|
+
if (root) {
|
|
528
|
+
await removeRuntimeRoot(registration);
|
|
529
|
+
}
|
|
530
|
+
else {
|
|
531
|
+
unregisterRuntimeRoot(registration);
|
|
532
|
+
}
|
|
533
|
+
throw error;
|
|
534
|
+
}
|
|
535
|
+
return {
|
|
536
|
+
root,
|
|
537
|
+
cleanup: async () => {
|
|
538
|
+
const diagnostic = await removeRuntimeRoot(registration);
|
|
539
|
+
if (diagnostic)
|
|
540
|
+
throw new Error(diagnostic);
|
|
541
|
+
},
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
function installEvalSignalHandlers() {
|
|
545
|
+
if (evalSignalHandlers.size > 0)
|
|
546
|
+
return;
|
|
547
|
+
for (const signal of EVAL_RESOURCE_SIGNALS) {
|
|
548
|
+
const handler = () => {
|
|
549
|
+
codexEvalSignalShutdownRequested = true;
|
|
550
|
+
if (evalSignalCleanupInProgress)
|
|
551
|
+
return;
|
|
552
|
+
evalSignalCleanupInProgress = true;
|
|
553
|
+
void cleanupActiveCodexEvalSignalResources().then((diagnostics) => {
|
|
554
|
+
if (diagnostics.length > 0) {
|
|
555
|
+
process.stderr.write(`${diagnostics.join('\n')}\n`);
|
|
556
|
+
}
|
|
557
|
+
}).finally(() => {
|
|
558
|
+
removeEvalSignalHandlers();
|
|
559
|
+
evalSignalCleanupInProgress = false;
|
|
560
|
+
try {
|
|
561
|
+
process.kill(process.pid, signal);
|
|
562
|
+
}
|
|
563
|
+
catch {
|
|
564
|
+
process.exitCode = 1;
|
|
565
|
+
}
|
|
566
|
+
});
|
|
567
|
+
};
|
|
568
|
+
evalSignalHandlers.set(signal, handler);
|
|
569
|
+
process.on(signal, handler);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
export function redactCodexEvalText(value, runtime) {
|
|
573
|
+
return redactSecrets(value, runtime.sensitiveValues);
|
|
574
|
+
}
|
|
575
|
+
export function redactCodexEvalValue(value, runtime) {
|
|
576
|
+
if (typeof value === 'string') {
|
|
577
|
+
return redactCodexEvalText(value, runtime);
|
|
578
|
+
}
|
|
579
|
+
if (Array.isArray(value)) {
|
|
580
|
+
return value.map((entry) => redactCodexEvalValue(entry, runtime));
|
|
581
|
+
}
|
|
582
|
+
if (isRecord(value)) {
|
|
583
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => [
|
|
584
|
+
redactCodexEvalText(key, runtime),
|
|
585
|
+
redactCodexEvalValue(entry, runtime),
|
|
586
|
+
]));
|
|
587
|
+
}
|
|
588
|
+
return value;
|
|
589
|
+
}
|
|
590
|
+
export function codexEvalRuntimeEvidence(runtime) {
|
|
591
|
+
return {
|
|
592
|
+
inherited: runtime.inherited,
|
|
593
|
+
model: runtime.model,
|
|
594
|
+
model_provider: runtime.modelProvider,
|
|
595
|
+
credential_source: runtime.credentialSource,
|
|
596
|
+
credential_stores: {
|
|
597
|
+
cli_auth: 'file',
|
|
598
|
+
mcp_oauth: 'file',
|
|
599
|
+
secret_auth_storage: false,
|
|
600
|
+
},
|
|
601
|
+
config_digest: runtime.evidenceDigest,
|
|
602
|
+
};
|
|
603
|
+
}
|
|
604
|
+
export function isCodexEvalRuntimeEvidence(value) {
|
|
605
|
+
return isRecord(value) && typeof value.model_provider === 'string';
|
|
606
|
+
}
|
|
607
|
+
//# sourceMappingURL=codex-eval-runtime-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-eval-runtime-config.js","sourceRoot":"","sources":["../src/codex-eval-runtime-config.ts"],"names":[],"mappings":"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"}
|