@post-print/agent-harness 1.1.9 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -93
- package/dist/agent-definition.d.ts +77 -0
- package/dist/agent-definition.d.ts.map +1 -0
- package/dist/agent-definition.js +46 -0
- package/dist/agent-definition.js.map +1 -0
- package/dist/agent-session.d.ts +17 -0
- package/dist/agent-session.d.ts.map +1 -0
- package/dist/agent-session.js +165 -0
- package/dist/agent-session.js.map +1 -0
- package/dist/agent-worker.d.ts +2 -0
- package/dist/agent-worker.d.ts.map +1 -0
- package/dist/agent-worker.js +167 -0
- package/dist/agent-worker.js.map +1 -0
- package/dist/capture.d.ts +1 -0
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +119 -101
- package/dist/capture.js.map +1 -1
- package/dist/claude-capture.d.ts +0 -1
- package/dist/claude-capture.d.ts.map +1 -1
- package/dist/claude-capture.js +96 -106
- package/dist/claude-capture.js.map +1 -1
- package/dist/claude-run.d.ts +3 -11
- package/dist/claude-run.d.ts.map +1 -1
- package/dist/claude-run.js +178 -166
- package/dist/claude-run.js.map +1 -1
- package/dist/cursor-auth.d.ts +0 -1
- package/dist/cursor-auth.d.ts.map +1 -1
- package/dist/cursor-auth.js +5 -3
- package/dist/cursor-auth.js.map +1 -1
- package/dist/cursor-run.d.ts +6 -34
- package/dist/cursor-run.d.ts.map +1 -1
- package/dist/cursor-run.js +123 -175
- package/dist/cursor-run.js.map +1 -1
- package/dist/index.d.ts +8 -40
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -47
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +37 -39
- package/dist/mcp.js.map +1 -1
- package/dist/openai-capture.d.ts.map +1 -1
- package/dist/openai-capture.js +66 -57
- package/dist/openai-capture.js.map +1 -1
- package/dist/openai-run.d.ts +4 -13
- package/dist/openai-run.d.ts.map +1 -1
- package/dist/openai-run.js +168 -159
- package/dist/openai-run.js.map +1 -1
- package/dist/sealed-workspace.d.ts +0 -8
- package/dist/sealed-workspace.d.ts.map +1 -1
- package/dist/sealed-workspace.js +32 -65
- package/dist/sealed-workspace.js.map +1 -1
- package/dist/skills-context.d.ts +0 -24
- package/dist/skills-context.d.ts.map +1 -1
- package/dist/skills-context.js +12 -156
- package/dist/skills-context.js.map +1 -1
- package/dist/types.d.ts +0 -84
- package/dist/types.d.ts.map +1 -1
- package/dist/user-skills.d.ts +6 -6
- package/dist/user-skills.d.ts.map +1 -1
- package/dist/user-skills.js +32 -27
- package/dist/user-skills.js.map +1 -1
- package/dist/working-tree-guard.d.ts.map +1 -1
- package/dist/working-tree-guard.js +3 -1
- package/dist/working-tree-guard.js.map +1 -1
- package/package.json +3 -3
- package/dist/adapters/index.d.ts +0 -28
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -271
- package/dist/adapters/index.js.map +0 -1
- package/dist/classifier.d.ts +0 -15
- package/dist/classifier.d.ts.map +0 -1
- package/dist/classifier.js +0 -102
- package/dist/classifier.js.map +0 -1
- package/dist/context.d.ts +0 -26
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -227
- package/dist/context.js.map +0 -1
- package/dist/conversation.d.ts +0 -28
- package/dist/conversation.d.ts.map +0 -1
- package/dist/conversation.js +0 -191
- package/dist/conversation.js.map +0 -1
- package/dist/host-registry.d.ts +0 -11
- package/dist/host-registry.d.ts.map +0 -1
- package/dist/host-registry.js +0 -36
- package/dist/host-registry.js.map +0 -1
- package/dist/judge.d.ts +0 -132
- package/dist/judge.d.ts.map +0 -1
- package/dist/judge.js +0 -795
- package/dist/judge.js.map +0 -1
- package/dist/logger.d.ts +0 -11
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -20
- package/dist/logger.js.map +0 -1
- package/dist/main.d.ts +0 -9
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -7
- package/dist/main.js.map +0 -1
- package/dist/retry.d.ts +0 -14
- package/dist/retry.d.ts.map +0 -1
- package/dist/retry.js +0 -52
- package/dist/retry.js.map +0 -1
- package/dist/user-simulator.d.ts +0 -10
- package/dist/user-simulator.d.ts.map +0 -1
- package/dist/user-simulator.js +0 -47
- package/dist/user-simulator.js.map +0 -1
- package/dist/worktree-leak.d.ts +0 -16
- package/dist/worktree-leak.d.ts.map +0 -1
- package/dist/worktree-leak.js +0 -110
- package/dist/worktree-leak.js.map +0 -1
- package/dist/worktree.d.ts +0 -10
- package/dist/worktree.d.ts.map +0 -1
- package/dist/worktree.js +0 -58
- package/dist/worktree.js.map +0 -1
package/dist/openai-run.js
CHANGED
|
@@ -6,9 +6,10 @@ import { createInterface } from "node:readline";
|
|
|
6
6
|
import { resolveKeyOrLoginAuthMode } from "./auth-mode.js";
|
|
7
7
|
import { createLiveNotifyState, emitLiveAgentEvents } from "./live-agent-event.js";
|
|
8
8
|
import { resolveMcpServers } from "./mcp.js";
|
|
9
|
-
import { accumulateOpenaiEvent, createOpenaiTraceAccumulator, finalizeOpenaiTraceAccumulator,
|
|
9
|
+
import { accumulateOpenaiEvent, createOpenaiTraceAccumulator, finalizeOpenaiTraceAccumulator, parseOpenaiJsonlLine, } from "./openai-capture.js";
|
|
10
10
|
import { AgentRunTimeoutError, getPartialTrace, isUserInputTool, UserInputRequiredError, withRunTimeout, } from "./run-guards.js";
|
|
11
11
|
import { openaiUserConfigArgs } from "./user-skills.js";
|
|
12
|
+
const ENV_NAME = /^[A-Za-z][A-Za-z0-9_]*$/;
|
|
12
13
|
export const OPENAI_AUTH_MODE_ENV = "OPENAI_AUTH_MODE";
|
|
13
14
|
export const OPENAI_MISSING_KEY_MESSAGE = "OPENAI_API_KEY or CODEX_API_KEY required for --auth-mode api-key";
|
|
14
15
|
export function resolveOpenaiAuthMode(raw = process.env[OPENAI_AUTH_MODE_ENV], apiKey, explicit) {
|
|
@@ -143,9 +144,7 @@ export function buildOpenaiEnv(authMode, apiKey) {
|
|
|
143
144
|
}
|
|
144
145
|
return { ...process.env, OPENAI_API_KEY: key, CODEX_API_KEY: key };
|
|
145
146
|
}
|
|
146
|
-
const env =
|
|
147
|
-
delete env.OPENAI_API_KEY;
|
|
148
|
-
delete env.CODEX_API_KEY;
|
|
147
|
+
const { OPENAI_API_KEY: _openaiKey, CODEX_API_KEY: _codexKey, ...env } = process.env;
|
|
149
148
|
return env;
|
|
150
149
|
}
|
|
151
150
|
export function tomlString(value) {
|
|
@@ -153,33 +152,36 @@ export function tomlString(value) {
|
|
|
153
152
|
}
|
|
154
153
|
/** One `-c mcp_servers.name={…}` override for `codex exec`. */
|
|
155
154
|
export function buildOpenaiMcpOverride(name, config) {
|
|
156
|
-
if (
|
|
155
|
+
if (!ENV_NAME.test(name)) {
|
|
157
156
|
throw new Error(`OpenAI MCP server name must be a TOML key: ${name}`);
|
|
158
157
|
}
|
|
159
158
|
if ("command" in config && config.command) {
|
|
160
|
-
|
|
161
|
-
if (config.args && config.args.length > 0) {
|
|
162
|
-
parts.push(`args=[${config.args.map((arg) => tomlString(arg)).join(",")}]`);
|
|
163
|
-
}
|
|
164
|
-
if (config.cwd) {
|
|
165
|
-
parts.push(`cwd=${tomlString(config.cwd)}`);
|
|
166
|
-
}
|
|
167
|
-
if (config.env && Object.keys(config.env).length > 0) {
|
|
168
|
-
const env = Object.entries(config.env)
|
|
169
|
-
.map(([key, value]) => `${key}=${tomlString(value)}`)
|
|
170
|
-
.join(",");
|
|
171
|
-
parts.push(`env={${env}}`);
|
|
172
|
-
}
|
|
173
|
-
// Codex 0.154+ rejects MCP calls when approval_policy=never unless
|
|
174
|
-
// the server auto-approves tools.
|
|
175
|
-
parts.push('default_tools_approval_mode="approve"');
|
|
176
|
-
return `mcp_servers.${name}={${parts.join(",")}}`;
|
|
159
|
+
return openaiStdioMcp(name, config);
|
|
177
160
|
}
|
|
178
161
|
if ("url" in config && config.url) {
|
|
179
162
|
return `mcp_servers.${name}={url=${tomlString(config.url)},default_tools_approval_mode="approve"}`;
|
|
180
163
|
}
|
|
181
164
|
throw new Error(`OpenAI MCP server "${name}" needs a command or url`);
|
|
182
165
|
}
|
|
166
|
+
function openaiStdioMcp(name, config) {
|
|
167
|
+
const parts = [`command=${tomlString(config.command)}`];
|
|
168
|
+
if (config.args && config.args.length > 0) {
|
|
169
|
+
parts.push(`args=[${config.args.map((arg) => tomlString(arg)).join(",")}]`);
|
|
170
|
+
}
|
|
171
|
+
if (config.cwd) {
|
|
172
|
+
parts.push(`cwd=${tomlString(config.cwd)}`);
|
|
173
|
+
}
|
|
174
|
+
if (config.env && Object.keys(config.env).length > 0) {
|
|
175
|
+
const env = Object.entries(config.env)
|
|
176
|
+
.map(([key, value]) => `${key}=${tomlString(value)}`)
|
|
177
|
+
.join(",");
|
|
178
|
+
parts.push(`env={${env}}`);
|
|
179
|
+
}
|
|
180
|
+
// Codex 0.154+ rejects MCP calls when approval_policy=never unless
|
|
181
|
+
// the server auto-approves tools.
|
|
182
|
+
parts.push('default_tools_approval_mode="approve"');
|
|
183
|
+
return `mcp_servers.${name}={${parts.join(",")}}`;
|
|
184
|
+
}
|
|
183
185
|
export function buildOpenaiMcpConfigArgs(servers) {
|
|
184
186
|
if (!servers || Object.keys(servers).length === 0) {
|
|
185
187
|
return [];
|
|
@@ -201,7 +203,7 @@ export function buildOpenaiExecArgs(options) {
|
|
|
201
203
|
options.cwd,
|
|
202
204
|
// Deny keeps ~/.codex/config.toml out. Auth still uses CODEX_HOME.
|
|
203
205
|
// A user model pin (for example gpt-5.6-luna) can fail older Codex CLIs.
|
|
204
|
-
...openaiUserConfigArgs(options.
|
|
206
|
+
...openaiUserConfigArgs(options.includeGlobalSkills === true),
|
|
205
207
|
// Headless default is never. Set it explicitly so a leftover config
|
|
206
208
|
// cannot prompt, and so we do not need --approve-for-me (Codex >= 0.147).
|
|
207
209
|
"-c",
|
|
@@ -222,8 +224,45 @@ export function buildOpenaiExecArgs(options) {
|
|
|
222
224
|
args.push(options.prompt);
|
|
223
225
|
return args;
|
|
224
226
|
}
|
|
225
|
-
|
|
227
|
+
function stopOpenaiForInput(stream) {
|
|
228
|
+
const { child, acc, failOnUserInput } = stream;
|
|
229
|
+
const lastTool = acc.toolCalls.at(-1);
|
|
230
|
+
if (!lastTool || !isUserInputTool(lastTool.name))
|
|
231
|
+
return false;
|
|
232
|
+
killOpenaiChild(child);
|
|
233
|
+
if (failOnUserInput) {
|
|
234
|
+
const error = new UserInputRequiredError(lastTool.name);
|
|
235
|
+
error.trace = stashTrace(acc);
|
|
236
|
+
throw error;
|
|
237
|
+
}
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
async function readOpenaiOutput(stream) {
|
|
241
|
+
const { child, acc, signal, onAgentEvent } = stream;
|
|
226
242
|
const liveState = createLiveNotifyState();
|
|
243
|
+
const rl = createInterface({ input: child.stdout, crlfDelay: Number.POSITIVE_INFINITY });
|
|
244
|
+
try {
|
|
245
|
+
for await (const line of rl) {
|
|
246
|
+
if (signal.aborted) {
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
const event = parseOpenaiJsonlLine(line);
|
|
250
|
+
if (!event) {
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
accumulateOpenaiEvent(acc, event);
|
|
254
|
+
emitLiveAgentEvents(acc, liveState, onAgentEvent);
|
|
255
|
+
stashTrace(acc);
|
|
256
|
+
if (stopOpenaiForInput(stream))
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
rl.close();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
async function drainJsonl(stream) {
|
|
265
|
+
const { child, signal } = stream;
|
|
227
266
|
const stderrChunks = [];
|
|
228
267
|
child.stderr.setEncoding("utf8");
|
|
229
268
|
child.stderr.on("data", (chunk) => {
|
|
@@ -243,37 +282,6 @@ async function drainJsonl(child, acc, failOnUserInput, signal, onAgentEvent) {
|
|
|
243
282
|
}
|
|
244
283
|
signal.addEventListener("abort", fail, { once: true });
|
|
245
284
|
});
|
|
246
|
-
const readStdout = async () => {
|
|
247
|
-
const rl = createInterface({ input: child.stdout, crlfDelay: Number.POSITIVE_INFINITY });
|
|
248
|
-
try {
|
|
249
|
-
for await (const line of rl) {
|
|
250
|
-
if (signal.aborted) {
|
|
251
|
-
break;
|
|
252
|
-
}
|
|
253
|
-
const event = parseOpenaiJsonlLine(line);
|
|
254
|
-
if (!event) {
|
|
255
|
-
continue;
|
|
256
|
-
}
|
|
257
|
-
accumulateOpenaiEvent(acc, event);
|
|
258
|
-
emitLiveAgentEvents(acc, liveState, onAgentEvent);
|
|
259
|
-
stashTrace(acc);
|
|
260
|
-
const lastTool = acc.toolCalls.at(-1);
|
|
261
|
-
if (lastTool && isUserInputTool(lastTool.name)) {
|
|
262
|
-
if (failOnUserInput) {
|
|
263
|
-
const userInputError = new UserInputRequiredError(lastTool.name);
|
|
264
|
-
userInputError.trace = stashTrace(acc);
|
|
265
|
-
killOpenaiChild(child);
|
|
266
|
-
throw userInputError;
|
|
267
|
-
}
|
|
268
|
-
killOpenaiChild(child);
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
finally {
|
|
274
|
-
rl.close();
|
|
275
|
-
}
|
|
276
|
-
};
|
|
277
285
|
const waitClose = new Promise((resolve) => {
|
|
278
286
|
child.once("close", (code) => resolve(code));
|
|
279
287
|
});
|
|
@@ -281,7 +289,7 @@ async function drainJsonl(child, acc, failOnUserInput, signal, onAgentEvent) {
|
|
|
281
289
|
const settled = await Promise.race([
|
|
282
290
|
spawnError,
|
|
283
291
|
aborted,
|
|
284
|
-
Promise.all([
|
|
292
|
+
Promise.all([readOpenaiOutput(stream), waitClose]).then(([, exitCode]) => ({ exitCode })),
|
|
285
293
|
]);
|
|
286
294
|
return { exitCode: settled.exitCode, stderr: stderrChunks.join("") };
|
|
287
295
|
}
|
|
@@ -290,6 +298,106 @@ async function drainJsonl(child, acc, failOnUserInput, signal, onAgentEvent) {
|
|
|
290
298
|
throw error;
|
|
291
299
|
}
|
|
292
300
|
}
|
|
301
|
+
async function finishOpenaiRun(options, stream) {
|
|
302
|
+
const { child, acc, signal, onAgentEvent } = stream;
|
|
303
|
+
const { exitCode, stderr } = await drainJsonl({
|
|
304
|
+
child,
|
|
305
|
+
acc,
|
|
306
|
+
failOnUserInput: options.failOnUserInput !== false,
|
|
307
|
+
signal,
|
|
308
|
+
onAgentEvent,
|
|
309
|
+
});
|
|
310
|
+
const trace = stashTrace(acc);
|
|
311
|
+
const rawStatus = acc.rawStatus ?? (exitCode === 0 ? "success" : "error");
|
|
312
|
+
const failed = (exitCode !== null && exitCode !== 0) || rawStatus === "error" || Boolean(acc.resultError);
|
|
313
|
+
return {
|
|
314
|
+
status: failed ? "failed" : "completed",
|
|
315
|
+
trace,
|
|
316
|
+
rawStatus,
|
|
317
|
+
exitCode,
|
|
318
|
+
stderr: stderr || undefined,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
function throwOpenaiRunError(error, acc, bin) {
|
|
322
|
+
const partial = stashTrace(acc);
|
|
323
|
+
if (error instanceof AgentRunTimeoutError || error instanceof UserInputRequiredError) {
|
|
324
|
+
error.trace = error.trace ?? partial;
|
|
325
|
+
throw error;
|
|
326
|
+
}
|
|
327
|
+
if (error && typeof error === "object" && "code" in error) {
|
|
328
|
+
const code = error.code;
|
|
329
|
+
if (code === "ENOENT") {
|
|
330
|
+
throw new Error(`OpenAI Codex binary not found (${bin}). Install the Codex CLI or set CODEX_BIN.`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
throw error;
|
|
334
|
+
}
|
|
335
|
+
async function executeOpenaiRun(options, execution) {
|
|
336
|
+
const { bin, args, authMode, deadline, runHome } = execution;
|
|
337
|
+
const acc = createOpenaiTraceAccumulator();
|
|
338
|
+
const abort = new AbortController();
|
|
339
|
+
const env = buildOpenaiEnv(authMode, options.apiKey);
|
|
340
|
+
if (runHome) {
|
|
341
|
+
env.HOME = runHome.home;
|
|
342
|
+
env.USERPROFILE = runHome.home;
|
|
343
|
+
env.CODEX_HOME = runHome.codexHome;
|
|
344
|
+
}
|
|
345
|
+
const child = spawn(bin, args, {
|
|
346
|
+
cwd: options.cwd,
|
|
347
|
+
env,
|
|
348
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
349
|
+
detached: process.platform !== "win32" && process.env.AGENT_HARNESS_SESSION_WORKER !== "1",
|
|
350
|
+
});
|
|
351
|
+
activeOpenaiRun = { child, acc, abort };
|
|
352
|
+
if (deadline.timedOut) {
|
|
353
|
+
abort.abort();
|
|
354
|
+
killOpenaiChild(child);
|
|
355
|
+
activeOpenaiRun = undefined;
|
|
356
|
+
const timeoutError = new AgentRunTimeoutError(options.timeoutMs ?? 0);
|
|
357
|
+
timeoutError.trace = stashTrace(acc);
|
|
358
|
+
throw timeoutError;
|
|
359
|
+
}
|
|
360
|
+
try {
|
|
361
|
+
return await finishOpenaiRun(options, {
|
|
362
|
+
child,
|
|
363
|
+
acc,
|
|
364
|
+
failOnUserInput: options.failOnUserInput !== false,
|
|
365
|
+
signal: abort.signal,
|
|
366
|
+
onAgentEvent: options.onAgentEvent,
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
abort.abort();
|
|
371
|
+
killOpenaiChild(child);
|
|
372
|
+
return throwOpenaiRunError(error, acc, bin);
|
|
373
|
+
}
|
|
374
|
+
finally {
|
|
375
|
+
if (activeOpenaiRun?.child === child) {
|
|
376
|
+
activeOpenaiRun = undefined;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
async function runOpenaiWithDeadline(options, execution) {
|
|
381
|
+
const execute = () => executeOpenaiRun(options, execution);
|
|
382
|
+
if (options.timeoutMs && options.timeoutMs > 0) {
|
|
383
|
+
await options.onDeadlineStart?.();
|
|
384
|
+
try {
|
|
385
|
+
return await withRunTimeout(execute, options.timeoutMs, {
|
|
386
|
+
onTimeout: () => {
|
|
387
|
+
execution.deadline.timedOut = true;
|
|
388
|
+
cancelActiveOpenaiRun();
|
|
389
|
+
},
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
if (error instanceof AgentRunTimeoutError) {
|
|
394
|
+
error.trace = error.trace ?? takeLastOpenaiRunTrace() ?? getPartialTrace(error);
|
|
395
|
+
}
|
|
396
|
+
throw error;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return await execute();
|
|
400
|
+
}
|
|
293
401
|
/** Shared Codex CLI path — `codex exec --json` → AgentTrace. */
|
|
294
402
|
export async function runOpenaiAgent(options) {
|
|
295
403
|
const authMode = resolveOpenaiAuthMode(undefined, options.apiKey, options.authMode);
|
|
@@ -298,122 +406,23 @@ export async function runOpenaiAgent(options) {
|
|
|
298
406
|
throw new Error(OPENAI_MISSING_KEY_MESSAGE);
|
|
299
407
|
}
|
|
300
408
|
const bin = await resolveOpenaiBin(options.bin);
|
|
301
|
-
|
|
409
|
+
const deadline = { timedOut: false };
|
|
302
410
|
const args = buildOpenaiExecArgs({
|
|
303
411
|
prompt: options.prompt,
|
|
304
412
|
cwd: options.cwd,
|
|
305
413
|
model: options.model,
|
|
306
414
|
sandbox: options.sandbox,
|
|
307
415
|
mcpServers: resolveMcpServers(options.mcpServers, { cwd: options.cwd }),
|
|
308
|
-
|
|
416
|
+
includeGlobalSkills: options.includeGlobalSkills === true,
|
|
309
417
|
networkAccess: options.networkAccess === true,
|
|
310
418
|
});
|
|
311
|
-
const runHome = options.
|
|
312
|
-
const execute = async () => {
|
|
313
|
-
const acc = createOpenaiTraceAccumulator();
|
|
314
|
-
const abort = new AbortController();
|
|
315
|
-
const env = buildOpenaiEnv(authMode, options.apiKey);
|
|
316
|
-
if (runHome) {
|
|
317
|
-
env.HOME = runHome.home;
|
|
318
|
-
env.USERPROFILE = runHome.home;
|
|
319
|
-
env.CODEX_HOME = runHome.codexHome;
|
|
320
|
-
}
|
|
321
|
-
const child = spawn(bin, args, {
|
|
322
|
-
cwd: options.cwd,
|
|
323
|
-
env,
|
|
324
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
325
|
-
detached: process.platform !== "win32",
|
|
326
|
-
});
|
|
327
|
-
activeOpenaiRun = { child, acc, abort };
|
|
328
|
-
if (timedOut) {
|
|
329
|
-
abort.abort();
|
|
330
|
-
killOpenaiChild(child);
|
|
331
|
-
activeOpenaiRun = undefined;
|
|
332
|
-
const timeoutError = new AgentRunTimeoutError(options.timeoutMs ?? 0);
|
|
333
|
-
timeoutError.trace = stashTrace(acc);
|
|
334
|
-
throw timeoutError;
|
|
335
|
-
}
|
|
336
|
-
try {
|
|
337
|
-
const { exitCode, stderr } = await drainJsonl(child, acc, options.failOnUserInput !== false, abort.signal, options.onAgentEvent);
|
|
338
|
-
const trace = stashTrace(acc);
|
|
339
|
-
const rawStatus = acc.rawStatus ?? (exitCode === 0 ? "success" : "error");
|
|
340
|
-
const failed = (exitCode !== null && exitCode !== 0) || rawStatus === "error" || Boolean(acc.resultError);
|
|
341
|
-
return {
|
|
342
|
-
status: failed ? "failed" : "completed",
|
|
343
|
-
trace,
|
|
344
|
-
rawStatus,
|
|
345
|
-
exitCode,
|
|
346
|
-
stderr: stderr || undefined,
|
|
347
|
-
};
|
|
348
|
-
}
|
|
349
|
-
catch (error) {
|
|
350
|
-
abort.abort();
|
|
351
|
-
killOpenaiChild(child);
|
|
352
|
-
const partial = stashTrace(acc);
|
|
353
|
-
if (error instanceof AgentRunTimeoutError || error instanceof UserInputRequiredError) {
|
|
354
|
-
error.trace = error.trace ?? partial;
|
|
355
|
-
throw error;
|
|
356
|
-
}
|
|
357
|
-
if (error && typeof error === "object" && "code" in error) {
|
|
358
|
-
const code = error.code;
|
|
359
|
-
if (code === "ENOENT") {
|
|
360
|
-
throw new Error(`OpenAI Codex binary not found (${bin}). Install the Codex CLI or set CODEX_BIN.`);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
throw error;
|
|
364
|
-
}
|
|
365
|
-
finally {
|
|
366
|
-
if (activeOpenaiRun?.child === child) {
|
|
367
|
-
activeOpenaiRun = undefined;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
};
|
|
419
|
+
const runHome = options.includeGlobalSkills === true ? undefined : await createOpenaiRunHome();
|
|
371
420
|
try {
|
|
372
|
-
|
|
373
|
-
await options.onDeadlineStart?.();
|
|
374
|
-
try {
|
|
375
|
-
return await withRunTimeout(execute, options.timeoutMs, {
|
|
376
|
-
onTimeout: () => {
|
|
377
|
-
timedOut = true;
|
|
378
|
-
cancelActiveOpenaiRun();
|
|
379
|
-
},
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
catch (error) {
|
|
383
|
-
if (error instanceof AgentRunTimeoutError) {
|
|
384
|
-
error.trace = error.trace ?? takeLastOpenaiRunTrace() ?? getPartialTrace(error);
|
|
385
|
-
}
|
|
386
|
-
throw error;
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
return await execute();
|
|
421
|
+
return await runOpenaiWithDeadline(options, { bin, args, authMode, deadline, runHome });
|
|
390
422
|
}
|
|
391
423
|
finally {
|
|
392
424
|
await runHome?.cleanup();
|
|
393
425
|
}
|
|
394
426
|
}
|
|
395
427
|
/** Classifier-only Codex path — read-only sandbox, last assistant text. */
|
|
396
|
-
export async function runOpenaiClassifier(options) {
|
|
397
|
-
const result = await runOpenaiAgent({
|
|
398
|
-
cwd: options.cwd,
|
|
399
|
-
prompt: options.prompt,
|
|
400
|
-
apiKey: options.apiKey,
|
|
401
|
-
bin: options.bin,
|
|
402
|
-
sandbox: "read-only",
|
|
403
|
-
failOnUserInput: true,
|
|
404
|
-
onAgentEvent: (event) => {
|
|
405
|
-
if (event.type === "text")
|
|
406
|
-
options.onText?.(event.text);
|
|
407
|
-
},
|
|
408
|
-
});
|
|
409
|
-
return {
|
|
410
|
-
status: result.status,
|
|
411
|
-
text: lastAssistantText(result.trace),
|
|
412
|
-
rawStatus: result.rawStatus,
|
|
413
|
-
sdkError: result.trace.artifacts.openaiResultError
|
|
414
|
-
? { message: result.trace.artifacts.openaiResultError }
|
|
415
|
-
: undefined,
|
|
416
|
-
usage: result.trace.usage,
|
|
417
|
-
};
|
|
418
|
-
}
|
|
419
428
|
//# sourceMappingURL=openai-run.js.map
|
package/dist/openai-run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-run.js","sourceRoot":"","sources":["../src/openai-run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai-run.js","sourceRoot":"","sources":["../src/openai-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAqB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAwB,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EACN,qBAAqB,EACrB,4BAA4B,EAC5B,8BAA8B,EAE9B,oBAAoB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,cAAc,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAI3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,MAAM,CAAC,MAAM,0BAA0B,GACtC,kEAAkE,CAAC;AAEpE,MAAM,UAAU,qBAAqB,CACpC,GAAG,GAAuB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAC3D,MAAe,EACf,QAAyB;IAEzB,OAAO,yBAAyB,CAAC;QAChC,OAAO,EAAE,oBAAoB;QAC7B,GAAG;QACH,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;QAC/F,iBAAiB,EAAE,0BAA0B;QAC7C,QAAQ;KACR,CAAC,CAAC;AACJ,CAAC;AA0CD,IAAI,eAA8C,CAAC;AACnD,IAAI,kBAA0C,CAAC;AAQ/C,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAGzC;IACA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,CAAC;IAChD,MAAM,aAAa,GAClB,OAAO,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC;QACJ,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACR,+DAA+D;IAChE,CAAC;IACD,OAAO;QACN,IAAI;QACJ,SAAS;QACT,OAAO,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;KACD,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAA2B;IAC9C,MAAM,KAAK,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC;IAClD,kBAAkB,GAAG,KAAK,CAAC;IAC3B,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB;IACpC,MAAM,MAAM,GAAG,eAAe,CAAC;IAC/B,eAAe,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO;IACR,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,sBAAsB;IACrC,MAAM,KAAK,GAAG,kBAAkB,CAAC;IACjC,kBAAkB,GAAG,SAAS,CAAC;IAC/B,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAMtC;IACA,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO,sBAAsB,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IACnD,IAAI,CAAC;QACJ,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACR,cAAc;IACf,CAAC;IACD,IAAI,CAAC;QACJ,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACR,cAAc;IACf,CAAC;AACF,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IACjD,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACR,cAAc;IACf,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACnE,OAAO;IACR,CAAC;IACD,IAAI,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACR,cAAc;IACf,CAAC;AACF,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAiB;IACvD,MAAM,SAAS,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC;IAC/E,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAwB,EAAE,MAAe;IACvE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC9E,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACrF,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACvC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AACjE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,MAAuB;IAC3E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3C,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACnC,OAAO,eAAe,IAAI,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC;IACpG,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,0BAA0B,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CACtB,IAAY,EACZ,MAAqD;IAErD,MAAM,KAAK,GAAG,CAAC,WAAW,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;aACpD,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,mEAAmE;IACnE,kCAAkC;IAClC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,OAAO,eAAe,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACnD,CAAC;AACD,MAAM,UAAU,wBAAwB,CACvC,OAAoD;IAEpD,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAQnC;IACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,iBAAiB,CAAC;IACrD,MAAM,IAAI,GAAG;QACZ,MAAM;QACN,QAAQ;QACR,WAAW;QACX,OAAO;QACP,MAAM;QACN,OAAO,CAAC,GAAG;QACX,mEAAmE;QACnE,yEAAyE;QACzE,GAAG,oBAAoB,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,CAAC;QAC7D,oEAAoE;QACpE,0EAA0E;QAC1E,IAAI;QACJ,uBAAuB;KACvB,CAAC;IACF,IAAI,OAAO,KAAK,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAChE,IAAI,OAAO,KAAK,iBAAiB,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,MAAM,KAAK,GACV,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,KAAK,EAAE,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACb,CAAC;AASD,SAAS,kBAAkB,CAAC,MAAoB;IAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,eAAe,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,eAAe,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,KAAK,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AACD,KAAK,UAAU,gBAAgB,CAAC,MAAoB;IACnD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACpD,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;IAE1C,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC;QACJ,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM;YACP,CAAC;YACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,SAAS;YACV,CAAC;YACD,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClC,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAClD,UAAU,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,kBAAkB,CAAC,MAAM,CAAC;gBAAE,MAAM;QACvC,CAAC;IACF,CAAC;YAAS,CAAC;QACV,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;AACF,CAAC;AACD,KAAK,UAAU,UAAU,CACxB,MAAoB;IAEpB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACzC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACnD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,GAAG,EAAE;YACjB,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,EAAE,CAAC;YACP,OAAO;QACR,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;QACxD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAClC,UAAU;YACV,OAAO;YACP,OAAO,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;SACzF,CAAC,CAAC;QACH,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AASD,KAAK,UAAU,eAAe,CAC7B,OAAyB,EACzB,MAAoB;IAEpB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACpD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC;QAC7C,KAAK;QACL,GAAG;QACH,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,KAAK;QAClD,MAAM;QACN,YAAY;KACZ,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,MAAM,GACX,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5F,OAAO;QACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;QACvC,KAAK;QACL,SAAS;QACT,QAAQ;QACR,MAAM,EAAE,MAAM,IAAI,SAAS;KAC3B,CAAC;AACH,CAAC;AACD,SAAS,mBAAmB,CAAC,KAAc,EAAE,GAA2B,EAAE,GAAW;IACpF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,YAAY,oBAAoB,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;QACtF,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;QACrC,MAAM,KAAK,CAAC;IACb,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;QACnD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACd,kCAAkC,GAAG,4CAA4C,CACjF,CAAC;QACH,CAAC;IACF,CAAC;IACD,MAAM,KAAK,CAAC;AACb,CAAC;AACD,KAAK,UAAU,gBAAgB,CAC9B,OAAyB,EACzB,SAA0B;IAE1B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAE7D,MAAM,GAAG,GAAG,4BAA4B,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,OAAO,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACxB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;QAC/B,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG;QACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,GAAG;KAC1F,CAAuB,CAAC;IAEzB,eAAe,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACxC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,eAAe,GAAG,SAAS,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QACtE,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,YAAY,CAAC;IACpB,CAAC;IAED,IAAI,CAAC;QACJ,OAAO,MAAM,eAAe,CAAC,OAAO,EAAE;YACrC,KAAK;YACL,GAAG;YACH,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,KAAK;YAClD,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY;SAClC,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;YAAS,CAAC;QACV,IAAI,eAAe,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;YACtC,eAAe,GAAG,SAAS,CAAC;QAC7B,CAAC;IACF,CAAC;AACF,CAAC;AAED,KAAK,UAAU,qBAAqB,CACnC,OAAyB,EACzB,SAA0B;IAE1B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE3D,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACJ,OAAO,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE;gBACvD,SAAS,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACnC,qBAAqB,EAAE,CAAC;gBACzB,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBAC3C,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,sBAAsB,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IACD,OAAO,MAAM,OAAO,EAAE,CAAC;AACxB,CAAC;AACD,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAyB;IAC7D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACzF,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,mBAAmB,CAAC;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QACvE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,KAAK,IAAI;QACzD,aAAa,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI;KAC7C,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAmB,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,mBAAmB,EAAE,CAAC;IAE/F,IAAI,CAAC;QACJ,OAAO,MAAM,qBAAqB,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC;YAAS,CAAC;QACV,MAAM,OAAO,EAAE,OAAO,EAAE,CAAC;IAC1B,CAAC;AACF,CAAC;AAED,2EAA2E"}
|
|
@@ -4,12 +4,6 @@ export interface SealedWorkspace {
|
|
|
4
4
|
path: string;
|
|
5
5
|
cleanup: () => Promise<void>;
|
|
6
6
|
}
|
|
7
|
-
export interface ReadOnlyWorkspaceSnapshot {
|
|
8
|
-
path: string;
|
|
9
|
-
cleanup: () => Promise<void>;
|
|
10
|
-
}
|
|
11
|
-
/** Snapshot an arm for judge inspection; the snapshot is immutable at the OS boundary. */
|
|
12
|
-
export declare function createReadOnlyWorkspaceSnapshot(source: string, name: string): Promise<ReadOnlyWorkspaceSnapshot>;
|
|
13
7
|
export interface CreateSealedWorkspaceOptions {
|
|
14
8
|
callerCwd: string;
|
|
15
9
|
/** Caller-relative files or directories to overlay after the HEAD snapshot. */
|
|
@@ -32,8 +26,6 @@ export type ParsedScenarioWorkspace = {
|
|
|
32
26
|
* Subfolder paths must stay repo-relative and must not contain `..`.
|
|
33
27
|
*/
|
|
34
28
|
export declare function parseScenarioWorkspace(raw: unknown): ParsedScenarioWorkspace;
|
|
35
|
-
/** True when the run should copy caller HEAD instead of a fixture folder. */
|
|
36
|
-
export declare function isCallerHeadWorkspace(raw: unknown): boolean;
|
|
37
29
|
/** Caller-relative trees copied into every sealed run so hosts see local context. */
|
|
38
30
|
export declare function defaultSealedOverlayPaths(extra?: string[], skillPaths?: string[]): string[];
|
|
39
31
|
/** Copy HEAD plus caller context into a temp folder the agent should not leave. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sealed-workspace.d.ts","sourceRoot":"","sources":["../src/sealed-workspace.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"sealed-workspace.d.ts","sourceRoot":"","sources":["../src/sealed-workspace.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU7C,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,4BAA4B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,uBAAuB,GAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACrC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,uBAAuB,CAyB5E;AAqDD,qFAAqF;AACrF,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAc3F;AAcD,mFAAmF;AACnF,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,4BAA4B,GACnC,OAAO,CAAC,eAAe,CAAC,CAwB1B;AA6CD,4DAA4D;AAC5D,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAc5F"}
|
package/dist/sealed-workspace.js
CHANGED
|
@@ -1,50 +1,16 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
|
-
import {
|
|
2
|
+
import { cp, mkdir, mkdtemp, rm } from "node:fs/promises";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { dirname, isAbsolute, join, resolve, sep } from "node:path";
|
|
5
5
|
import { promisify } from "node:util";
|
|
6
6
|
import { SKILL_ROOTS, skillOverlayRelPath } from "./skills-context.js";
|
|
7
7
|
import { isPathUnderRoot } from "./working-tree-guard.js";
|
|
8
|
+
const BACKSLASH = /\\/g;
|
|
9
|
+
const RELATIVE_PREFIX = /^\.\//;
|
|
10
|
+
const FILE_PROTOCOL = /^file:\/\//;
|
|
11
|
+
const TRAILING_PUNCTUATION = /[,:]+$/;
|
|
8
12
|
const execFileAsync = promisify(execFile);
|
|
9
13
|
export const SEALED_WORKSPACE_DIR_PREFIX = "agent-harness-seal-";
|
|
10
|
-
async function makeTreeReadOnly(root) {
|
|
11
|
-
for (const entry of await readdir(root, { withFileTypes: true })) {
|
|
12
|
-
const path = join(root, entry.name);
|
|
13
|
-
if (entry.isDirectory())
|
|
14
|
-
await makeTreeReadOnly(path);
|
|
15
|
-
await chmod(path, entry.isDirectory() ? 0o555 : 0o444);
|
|
16
|
-
}
|
|
17
|
-
await chmod(root, 0o555);
|
|
18
|
-
}
|
|
19
|
-
async function makeTreeWritable(root) {
|
|
20
|
-
for (const entry of await readdir(root, { withFileTypes: true })) {
|
|
21
|
-
const path = join(root, entry.name);
|
|
22
|
-
if (entry.isDirectory())
|
|
23
|
-
await makeTreeWritable(path);
|
|
24
|
-
await chmod(path, entry.isDirectory() ? 0o755 : 0o644);
|
|
25
|
-
}
|
|
26
|
-
await chmod(root, 0o755);
|
|
27
|
-
}
|
|
28
|
-
/** Snapshot an arm for judge inspection; the snapshot is immutable at the OS boundary. */
|
|
29
|
-
export async function createReadOnlyWorkspaceSnapshot(source, name) {
|
|
30
|
-
const root = await mkdtemp(join(tmpdir(), "agent-harness-judge-"));
|
|
31
|
-
const path = join(root, name);
|
|
32
|
-
try {
|
|
33
|
-
await cp(source, path, { recursive: true, filter: skipNestedGit });
|
|
34
|
-
await makeTreeReadOnly(path);
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
await rm(root, { recursive: true, force: true });
|
|
38
|
-
throw error;
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
path,
|
|
42
|
-
cleanup: async () => {
|
|
43
|
-
await makeTreeWritable(root).catch(() => undefined);
|
|
44
|
-
await rm(root, { recursive: true, force: true });
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
14
|
/**
|
|
49
15
|
* Parse `workspace`. `undefined`, empty, and `"."` mean caller HEAD.
|
|
50
16
|
* Subfolder paths must stay repo-relative and must not contain `..`.
|
|
@@ -56,7 +22,7 @@ export function parseScenarioWorkspace(raw) {
|
|
|
56
22
|
if (typeof raw !== "string") {
|
|
57
23
|
return { ok: false, message: `workspace must be a string, got ${JSON.stringify(raw)}` };
|
|
58
24
|
}
|
|
59
|
-
const normalized = raw.replace(
|
|
25
|
+
const normalized = raw.replace(BACKSLASH, "/").replace(RELATIVE_PREFIX, "").trim();
|
|
60
26
|
if (normalized.length === 0 || normalized === ".") {
|
|
61
27
|
return { ok: true, rel: undefined };
|
|
62
28
|
}
|
|
@@ -75,11 +41,6 @@ export function parseScenarioWorkspace(raw) {
|
|
|
75
41
|
}
|
|
76
42
|
return { ok: true, rel: parts.join("/") };
|
|
77
43
|
}
|
|
78
|
-
/** True when the run should copy caller HEAD instead of a fixture folder. */
|
|
79
|
-
export function isCallerHeadWorkspace(raw) {
|
|
80
|
-
const parsed = parseScenarioWorkspace(raw);
|
|
81
|
-
return parsed.ok && parsed.rel === undefined;
|
|
82
|
-
}
|
|
83
44
|
async function materializeGitHead(callerCwd, dest) {
|
|
84
45
|
try {
|
|
85
46
|
await execFileAsync("git", ["rev-parse", "--is-inside-work-tree"], { cwd: callerCwd });
|
|
@@ -108,7 +69,7 @@ async function materializeWorkspaceFolder(callerCwd, workspaceRel, dest) {
|
|
|
108
69
|
await cp(from, dest, { recursive: true, filter: skipNestedGit });
|
|
109
70
|
}
|
|
110
71
|
async function overlayPath(callerCwd, dest, rel) {
|
|
111
|
-
const normalized = rel.replace(
|
|
72
|
+
const normalized = rel.replace(RELATIVE_PREFIX, "").trim();
|
|
112
73
|
if (!normalized || normalized.includes("\0")) {
|
|
113
74
|
return;
|
|
114
75
|
}
|
|
@@ -186,43 +147,49 @@ function candidatePathsFromArgs(args) {
|
|
|
186
147
|
for (const key of ["path", "file_path", "filePath", "target_file", "uri", "cwd"]) {
|
|
187
148
|
const value = args[key];
|
|
188
149
|
if (typeof value === "string") {
|
|
189
|
-
paths.push(value.replace(
|
|
150
|
+
paths.push(value.replace(FILE_PROTOCOL, ""));
|
|
190
151
|
}
|
|
191
152
|
}
|
|
192
|
-
|
|
153
|
+
paths.push(...contextPathsFromCommand(args.command));
|
|
154
|
+
return paths;
|
|
155
|
+
}
|
|
156
|
+
function contextPathsFromCommand(command) {
|
|
157
|
+
const paths = [];
|
|
193
158
|
if (typeof command === "string") {
|
|
194
159
|
const ignoredExecutables = new Set(["/bin/bash", "/bin/sh", "/bin/zsh", "/usr/bin/env"]);
|
|
195
160
|
for (const match of command.matchAll(/(?:^|[\s"'])((?:\.\.\/|\/)[^\s"';&|)]+)/g)) {
|
|
196
|
-
const path = match[1]?.replace(
|
|
161
|
+
const path = match[1]?.replace(TRAILING_PUNCTUATION, "");
|
|
197
162
|
// Shell commands often inspect runner temp folders while running tests.
|
|
198
163
|
// Only flag external agent configuration paths here; direct tool path
|
|
199
164
|
// arguments still use the complete escape check below.
|
|
200
|
-
if (path &&
|
|
201
|
-
!ignoredExecutables.has(path) &&
|
|
202
|
-
(path.includes("/.agents/skills/") ||
|
|
203
|
-
path.endsWith("/AGENTS.md") ||
|
|
204
|
-
path.endsWith("/CLAUDE.md") ||
|
|
205
|
-
path.includes("/.cursor/"))) {
|
|
165
|
+
if (path && !ignoredExecutables.has(path) && isAgentContextPath(path)) {
|
|
206
166
|
paths.push(path);
|
|
207
167
|
}
|
|
208
168
|
}
|
|
209
169
|
}
|
|
210
170
|
return paths;
|
|
211
171
|
}
|
|
172
|
+
function isAgentContextPath(path) {
|
|
173
|
+
return (path.includes("/.agents/skills/") ||
|
|
174
|
+
path.endsWith("/AGENTS.md") ||
|
|
175
|
+
path.endsWith("/CLAUDE.md") ||
|
|
176
|
+
path.includes("/.cursor/"));
|
|
177
|
+
}
|
|
178
|
+
function isCursorToolOutput(path) {
|
|
179
|
+
return path.includes("/.cursor/projects/") && path.includes("/agent-tools/");
|
|
180
|
+
}
|
|
212
181
|
/** Tool paths that resolve outside the sealed workspace. */
|
|
213
182
|
export function toolPathsOutsideWorkspace(trace, workspaceRoot) {
|
|
214
183
|
const root = resolve(workspaceRoot);
|
|
215
184
|
const escaped = [];
|
|
216
|
-
for (const
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
escaped.push(raw);
|
|
225
|
-
}
|
|
185
|
+
for (const raw of trace.toolCalls.flatMap((call) => candidatePathsFromArgs(call.args))) {
|
|
186
|
+
const abs = isAbsolute(raw) ? resolve(raw) : resolve(root, raw);
|
|
187
|
+
const normalized = abs.replaceAll("\\", "/");
|
|
188
|
+
if (isCursorToolOutput(normalized)) {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
if (!isPathUnderRoot(abs, root)) {
|
|
192
|
+
escaped.push(raw);
|
|
226
193
|
}
|
|
227
194
|
}
|
|
228
195
|
return [...new Set(escaped)];
|