lastlight 0.7.0 → 0.7.2
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/connectors/github-webhook.js +5 -0
- package/dist/connectors/github-webhook.js.map +1 -1
- package/dist/connectors/types.d.ts +2 -0
- package/dist/engine/agent-executor.d.ts +7 -16
- package/dist/engine/agent-executor.js +34 -305
- package/dist/engine/agent-executor.js.map +1 -1
- package/dist/engine/dispatcher.js +24 -0
- package/dist/engine/dispatcher.js.map +1 -1
- package/dist/engine/executors/orchestrator.d.ts +81 -0
- package/dist/engine/executors/orchestrator.js +340 -0
- package/dist/engine/executors/orchestrator.js.map +1 -0
- package/dist/engine/router.js +47 -1
- package/dist/engine/router.js.map +1 -1
- package/dist/engine/screen/classifier.d.ts +10 -0
- package/dist/engine/screen/classifier.js +44 -0
- package/dist/engine/screen/classifier.js.map +1 -1
- package/dist/index.js +9 -9
- package/dist/index.js.map +1 -1
- package/dist/sandbox/sandbox.d.ts +189 -0
- package/dist/sandbox/sandbox.js +429 -0
- package/dist/sandbox/sandbox.js.map +1 -0
- package/dist/state/workflow-run-store.d.ts +7 -0
- package/dist/state/workflow-run-store.js +14 -0
- package/dist/state/workflow-run-store.js.map +1 -1
- package/dist/workflows/simple.d.ts +24 -3
- package/dist/workflows/simple.js +29 -3
- package/dist/workflows/simple.js.map +1 -1
- package/docker-compose.yml +1 -1
- package/package.json +1 -1
- package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
- package/plugins/lastlight/skills/lastlight-evals/SKILL.md +30 -2
- package/plugins/lastlight/skills/lastlight-evals/references/authoring-from-pr.md +117 -0
- package/plugins/lastlight/skills/lastlight-evals/references/instance-schema.md +26 -7
- package/skills/README.md +1 -1
- package/skills/issue-triage/SKILL.md +34 -7
- package/skills/issue-triage/references/AGENT-BRIEF.md +28 -24
- package/dist/engine/executors/backends.d.ts +0 -41
- package/dist/engine/executors/backends.js +0 -541
- package/dist/engine/executors/backends.js.map +0 -1
|
@@ -150,12 +150,14 @@ export class GitHubWebhookConnector extends EventEmitter {
|
|
|
150
150
|
let body = "";
|
|
151
151
|
let title = "";
|
|
152
152
|
let labels = [];
|
|
153
|
+
let issueAuthor;
|
|
153
154
|
switch (githubEvent) {
|
|
154
155
|
case "issues":
|
|
155
156
|
issueNumber = payload.issue?.number;
|
|
156
157
|
body = payload.issue?.body || "";
|
|
157
158
|
title = payload.issue?.title || "";
|
|
158
159
|
labels = (payload.issue?.labels || []).map((l) => l.name);
|
|
160
|
+
issueAuthor = payload.issue?.user?.login;
|
|
159
161
|
if (action === "opened")
|
|
160
162
|
type = "issue.opened";
|
|
161
163
|
else if (action === "reopened")
|
|
@@ -167,6 +169,7 @@ export class GitHubWebhookConnector extends EventEmitter {
|
|
|
167
169
|
body = payload.pull_request?.body || "";
|
|
168
170
|
title = payload.pull_request?.title || "";
|
|
169
171
|
labels = (payload.pull_request?.labels || []).map((l) => l.name);
|
|
172
|
+
issueAuthor = payload.pull_request?.user?.login;
|
|
170
173
|
if (action === "opened")
|
|
171
174
|
type = "pr.opened";
|
|
172
175
|
// synchronize fires on every new commit pushed to the PR's branch.
|
|
@@ -188,6 +191,7 @@ export class GitHubWebhookConnector extends EventEmitter {
|
|
|
188
191
|
// security-feedback skill. Without this, every comment arrived
|
|
189
192
|
// label-less and fell through to the build path.
|
|
190
193
|
labels = (payload.issue?.labels || []).map((l) => l.name);
|
|
194
|
+
issueAuthor = payload.issue?.user?.login;
|
|
191
195
|
if (action === "created")
|
|
192
196
|
type = "comment.created";
|
|
193
197
|
// Detect if this is on a PR
|
|
@@ -253,6 +257,7 @@ export class GitHubWebhookConnector extends EventEmitter {
|
|
|
253
257
|
issueNumber,
|
|
254
258
|
prNumber,
|
|
255
259
|
sender,
|
|
260
|
+
issueAuthor,
|
|
256
261
|
senderIsBot: false, // already filtered bots above
|
|
257
262
|
body,
|
|
258
263
|
title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-webhook.js","sourceRoot":"","sources":["../../src/connectors/github-webhook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"github-webhook.js","sourceRoot":"","sources":["../../src/connectors/github-webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,8 @@ export interface EventEnvelope {
|
|
|
19
19
|
prNumber?: number;
|
|
20
20
|
/** Login/username of the sender */
|
|
21
21
|
sender: string;
|
|
22
|
+
/** Login of the issue/PR original author (distinct from `sender`, the commenter) */
|
|
23
|
+
issueAuthor?: string;
|
|
22
24
|
/** Whether sender is a bot */
|
|
23
25
|
senderIsBot: boolean;
|
|
24
26
|
/** Event body text (issue body, comment body, PR body, etc.) */
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type ExecutorConfig, type ExecutionResult, type GitSandboxAccess } from "./github/profiles.js";
|
|
2
|
+
import type { SandboxFactory } from "../sandbox/sandbox.js";
|
|
3
|
+
import { type CommandSpec } from "./executors/orchestrator.js";
|
|
2
4
|
export { RunResultAccumulator, stageSkillBundle, excludeFromGit, detectAccountError } from "./executors/shared.js";
|
|
5
|
+
export type { CommandSpec } from "./executors/orchestrator.js";
|
|
3
6
|
export declare function executeAgent(prompt: string, config: ExecutorConfig, opts?: {
|
|
4
7
|
taskId?: string;
|
|
5
8
|
/**
|
|
@@ -9,23 +12,9 @@ export declare function executeAgent(prompt: string, config: ExecutorConfig, opt
|
|
|
9
12
|
*/
|
|
10
13
|
onSessionId?: (sessionId: string) => void;
|
|
11
14
|
githubAccess?: GitSandboxAccess;
|
|
15
|
+
/** Test seam — substitute a FakeSandbox. Defaults to the real factory. */
|
|
16
|
+
sandboxFactory?: SandboxFactory;
|
|
12
17
|
}): Promise<ExecutionResult>;
|
|
13
|
-
/** What a command phase runs. */
|
|
14
|
-
export type CommandSpec = {
|
|
15
|
-
kind: "bash";
|
|
16
|
-
command: string;
|
|
17
|
-
} | {
|
|
18
|
-
kind: "script";
|
|
19
|
-
script: string;
|
|
20
|
-
runtime: "js" | "ts" | "python";
|
|
21
|
-
name: string;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Execute a deterministic command/script. Mirrors {@link executeDocker} /
|
|
25
|
-
* {@link executeInProcess} for sandbox setup but runs `runCommand` (docker) or
|
|
26
|
-
* `spawnSync` (gondolin/none) instead of an agent, and writes a session jsonl
|
|
27
|
-
* so the output is visible in the dashboard + CLI.
|
|
28
|
-
*/
|
|
29
18
|
export declare function executeCommand(spec: CommandSpec, config: ExecutorConfig, opts?: {
|
|
30
19
|
taskId?: string;
|
|
31
20
|
githubAccess?: GitSandboxAccess;
|
|
@@ -40,4 +29,6 @@ export declare function executeCommand(spec: CommandSpec, config: ExecutorConfig
|
|
|
40
29
|
* shouldn't create a user-facing session log.
|
|
41
30
|
*/
|
|
42
31
|
writeSession?: boolean;
|
|
32
|
+
/** Test seam — substitute a FakeSandbox. Defaults to the real factory. */
|
|
33
|
+
sandboxFactory?: SandboxFactory;
|
|
43
34
|
}): Promise<ExecutionResult>;
|
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
import { resolve
|
|
2
|
-
import { mkdirSync, writeFileSync } from "fs";
|
|
3
|
-
import { spawnSync } from "child_process";
|
|
1
|
+
import { resolve } from "path";
|
|
4
2
|
import { randomUUID } from "crypto";
|
|
5
|
-
import { createTaskSandbox, setupTaskWorktree, prePopulateWorkspace, SANDBOX_IMAGE_QA, } from "../sandbox/index.js";
|
|
6
|
-
import { SmolSandbox, smolAvailable, SMOL_WORKSPACE_DIR } from "../sandbox/smol.js";
|
|
7
3
|
import { refreshGitAuth } from "./github/git-auth.js";
|
|
8
|
-
import { GITHUB_PERMISSION_PROFILES,
|
|
9
|
-
import { AgenticShim } from "./event-shim.js";
|
|
10
|
-
import { projectSlugForCwd } from "../session-log.js";
|
|
11
|
-
import { DEFAULT_ALLOWLIST, mergeAllowlist } from "../sandbox/egress-allowlist.js";
|
|
4
|
+
import { GITHUB_PERMISSION_PROFILES, } from "./github/profiles.js";
|
|
12
5
|
import { getDockerSandboxOtelEnv, getOtelEnvForSandbox, safeSpanAttributes, withSpan } from "../telemetry/index.js";
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
//
|
|
6
|
+
import { DEFAULT_MODEL } from "./executors/shared.js";
|
|
7
|
+
import { runSandboxedAgent, runSandboxedCommand, } from "./executors/orchestrator.js";
|
|
8
|
+
// Re-exported for back-compat with existing importers (tests, dashboards,
|
|
9
|
+
// workflow phase executor).
|
|
17
10
|
export { RunResultAccumulator, stageSkillBundle, excludeFromGit, detectAccountError } from "./executors/shared.js";
|
|
18
11
|
/**
|
|
19
12
|
* Shared run preparation for {@link executeAgent} and {@link executeCommand}:
|
|
@@ -140,144 +133,30 @@ export async function executeAgent(prompt, config, opts) {
|
|
|
140
133
|
"workflow.name": config.telemetry?.workflowName,
|
|
141
134
|
"phase.name": config.telemetry?.phaseName,
|
|
142
135
|
});
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
taskId,
|
|
146
|
-
stateDir,
|
|
147
|
-
env: ghEnv,
|
|
148
|
-
prePopulate,
|
|
149
|
-
access,
|
|
150
|
-
onSessionId: opts?.onSessionId,
|
|
151
|
-
}));
|
|
152
|
-
}
|
|
153
|
-
if (backend === "smol") {
|
|
154
|
-
return withSpan("lastlight.agent.execute", spanAttrs, () => executeSmol(prompt, config, {
|
|
155
|
-
taskId,
|
|
156
|
-
stateDir,
|
|
157
|
-
env: ghEnv,
|
|
158
|
-
prePopulate,
|
|
159
|
-
access,
|
|
160
|
-
onSessionId: opts?.onSessionId,
|
|
161
|
-
}));
|
|
162
|
-
}
|
|
163
|
-
const workDir = setupTaskWorktree({
|
|
136
|
+
const ctx = {
|
|
137
|
+
config,
|
|
164
138
|
taskId,
|
|
165
139
|
stateDir,
|
|
166
|
-
sandboxDir: config.sandboxDir,
|
|
167
|
-
prePopulate,
|
|
168
|
-
});
|
|
169
|
-
// Drop AGENTS.md into the workspace — agentic-pi reads it as the
|
|
170
|
-
// system context (same convention as the previous opencode setup).
|
|
171
|
-
try {
|
|
172
|
-
const md = loadAgentContext(config.agentContextDir);
|
|
173
|
-
if (md)
|
|
174
|
-
writeFileSync(join(workDir, "AGENTS.md"), md);
|
|
175
|
-
}
|
|
176
|
-
catch (err) {
|
|
177
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
178
|
-
console.warn(`[executor] Could not write AGENTS.md: ${msg}`);
|
|
179
|
-
}
|
|
180
|
-
return withSpan("lastlight.agent.execute", spanAttrs, () => executeInProcess(prompt, config, {
|
|
181
140
|
backend,
|
|
182
|
-
taskId,
|
|
183
|
-
workDir,
|
|
184
|
-
stateDir,
|
|
185
141
|
env: ghEnv,
|
|
142
|
+
prePopulate,
|
|
186
143
|
access,
|
|
187
144
|
onSessionId: opts?.onSessionId,
|
|
188
|
-
|
|
189
|
-
}
|
|
190
|
-
const SCRIPT_EXT = { js: "mjs", ts: "mts", python: "py" };
|
|
191
|
-
/**
|
|
192
|
-
* Where a `type: script` source file is staged. A workspace-root sibling of
|
|
193
|
-
* {@link SKILL_BUNDLE_ROOT}, keyed per phase (`<root>/<phase>/script.<ext>`) —
|
|
194
|
-
* same convention as the skill bundle, so it sits beside the skills and is
|
|
195
|
-
* never written inside any checked-out repo's git tree.
|
|
196
|
-
*/
|
|
197
|
-
const SCRIPT_BUNDLE_ROOT = ".lastlight-scripts";
|
|
198
|
-
/** Build the shell invocation + on-disk filename for a script spec. */
|
|
199
|
-
function scriptInvocation(spec) {
|
|
200
|
-
const fileName = `script.${SCRIPT_EXT[spec.runtime]}`;
|
|
201
|
-
const run = (path) => {
|
|
202
|
-
switch (spec.runtime) {
|
|
203
|
-
case "js":
|
|
204
|
-
return `node ${path}`;
|
|
205
|
-
case "ts":
|
|
206
|
-
return `node --experimental-strip-types ${path}`;
|
|
207
|
-
case "python":
|
|
208
|
-
return `uv run ${path}`;
|
|
209
|
-
}
|
|
145
|
+
sandboxFactory: opts?.sandboxFactory,
|
|
210
146
|
};
|
|
211
|
-
return
|
|
147
|
+
return withSpan("lastlight.agent.execute", spanAttrs, () => runSandboxedAgent(prompt, ctx));
|
|
212
148
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
homeDir: opts.sessionsDir,
|
|
222
|
-
projectSlug: opts.projectSlug,
|
|
223
|
-
model: opts.model,
|
|
224
|
-
initialPrompt: opts.displayPrompt,
|
|
225
|
-
});
|
|
226
|
-
const sessionId = randomUUID();
|
|
227
|
-
const ts = Date.now();
|
|
228
|
-
const toolCallId = `cmd_${randomUUID().slice(0, 8)}`;
|
|
229
|
-
const feed = (record) => shim.feed(record);
|
|
230
|
-
feed({ type: "session", id: sessionId, timestamp: ts });
|
|
231
|
-
feed({
|
|
232
|
-
type: "message_end",
|
|
233
|
-
sessionId,
|
|
234
|
-
timestamp: ts,
|
|
235
|
-
message: { role: "assistant", content: [{ type: "toolCall", id: toolCallId, name: opts.toolName, arguments: opts.toolInput }] },
|
|
236
|
-
});
|
|
237
|
-
const combined = opts.stderr ? `${opts.stdout}${opts.stdout && !opts.stdout.endsWith("\n") ? "\n" : ""}${opts.stderr}` : opts.stdout;
|
|
238
|
-
feed({
|
|
239
|
-
type: "tool_execution_end",
|
|
240
|
-
sessionId,
|
|
241
|
-
timestamp: ts,
|
|
242
|
-
toolCallId,
|
|
243
|
-
result: combined || `(no output, exit ${opts.exitCode})`,
|
|
244
|
-
isError: opts.exitCode !== 0,
|
|
245
|
-
});
|
|
246
|
-
const summary = opts.exitCode === 0 ? "Command succeeded (exit 0)." : `Command failed (exit ${opts.exitCode}).`;
|
|
247
|
-
feed({
|
|
248
|
-
type: "message_end",
|
|
249
|
-
sessionId,
|
|
250
|
-
timestamp: ts,
|
|
251
|
-
message: { role: "assistant", content: [{ type: "text", text: summary }] },
|
|
252
|
-
});
|
|
253
|
-
shim.finalize({
|
|
254
|
-
finalText: summary,
|
|
255
|
-
turns: 1,
|
|
256
|
-
costUsd: 0,
|
|
257
|
-
inputTokens: 0,
|
|
258
|
-
outputTokens: 0,
|
|
259
|
-
cacheReadInputTokens: 0,
|
|
260
|
-
cacheCreationInputTokens: 0,
|
|
261
|
-
stopReason: opts.exitCode === 0 ? "success" : "error_bash",
|
|
262
|
-
durationMs: opts.durationMs,
|
|
263
|
-
});
|
|
264
|
-
await shim.flush();
|
|
265
|
-
return shim.isInitialized ? sessionId : null;
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Execute a deterministic command/script. Mirrors {@link executeDocker} /
|
|
269
|
-
* {@link executeInProcess} for sandbox setup but runs `runCommand` (docker) or
|
|
270
|
-
* `spawnSync` (gondolin/none) instead of an agent, and writes a session jsonl
|
|
271
|
-
* so the output is visible in the dashboard + CLI.
|
|
272
|
-
*/
|
|
149
|
+
// ── Deterministic command path (type: bash / type: script) ───────────
|
|
150
|
+
//
|
|
151
|
+
// Runs a deterministic shell command (or inline script) inside the SAME
|
|
152
|
+
// sandbox/workspace an agent phase would use — no LLM. The command's output is
|
|
153
|
+
// mirrored to a Claude-SDK-style session jsonl via the AgenticShim (the same
|
|
154
|
+
// shim agent phases use), so a bash/script phase shows up in the admin console
|
|
155
|
+
// and `lastlight session log` exactly like an agent turn: the command renders
|
|
156
|
+
// as a `bash` tool_use and its stdout/stderr as the tool_result.
|
|
273
157
|
export async function executeCommand(spec, config, opts) {
|
|
274
158
|
const { taskId, stateDir, backend, ghEnv, prePopulate } = await prepareRun(config, opts);
|
|
275
159
|
const access = opts?.githubAccess;
|
|
276
|
-
const model = config.model || DEFAULT_MODEL;
|
|
277
|
-
const sessionsDir = resolveSessionsDir(config);
|
|
278
|
-
const timeoutSeconds = opts?.timeoutSeconds ?? 300;
|
|
279
|
-
const startTime = Date.now();
|
|
280
|
-
const displayPrompt = spec.kind === "bash" ? `$ ${spec.command}` : `${spec.runtime} script: ${spec.name}\n\n${spec.script}`;
|
|
281
160
|
const spanAttrs = safeSpanAttributes({
|
|
282
161
|
"agent.runtime": spec.kind,
|
|
283
162
|
"sandbox.backend": backend,
|
|
@@ -288,171 +167,21 @@ export async function executeCommand(spec, config, opts) {
|
|
|
288
167
|
"workflow.name": config.telemetry?.workflowName,
|
|
289
168
|
"phase.name": config.telemetry?.phaseName,
|
|
290
169
|
});
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
const sbx = await createTaskSandbox({
|
|
302
|
-
taskId, stateDir, sandboxDir: config.sandboxDir, env: ghEnv, prePopulate, dnsIp, imageName,
|
|
303
|
-
});
|
|
304
|
-
if (!sbx) {
|
|
305
|
-
throw new Error("LASTLIGHT_SANDBOX=docker but no docker sandbox was available for command phase.");
|
|
306
|
-
}
|
|
307
|
-
const agentCwd = prePopulate ? `${DOCKER_WORKSPACE_DIR}/${prePopulate.repo}` : DOCKER_WORKSPACE_DIR;
|
|
308
|
-
try {
|
|
309
|
-
let command;
|
|
310
|
-
let toolName;
|
|
311
|
-
let toolInput;
|
|
312
|
-
if (spec.kind === "bash") {
|
|
313
|
-
command = spec.command;
|
|
314
|
-
toolName = "bash";
|
|
315
|
-
toolInput = { command: spec.command };
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
318
|
-
const { fileName, run } = scriptInvocation(spec);
|
|
319
|
-
mkdirSync(join(sbx.workDir, scriptDir), { recursive: true });
|
|
320
|
-
writeFileSync(join(sbx.workDir, scriptDir, fileName), spec.script);
|
|
321
|
-
const inContainer = `${DOCKER_WORKSPACE_DIR}/${scriptDir}/${fileName}`;
|
|
322
|
-
command = run(inContainer);
|
|
323
|
-
toolName = "bash";
|
|
324
|
-
toolInput = { command, runtime: spec.runtime };
|
|
325
|
-
}
|
|
326
|
-
const res = await sbx.sandbox.runCommand(taskId, command, {
|
|
327
|
-
cwd: agentCwd,
|
|
328
|
-
sandboxEnv: opts?.sandboxEnv,
|
|
329
|
-
timeoutSeconds,
|
|
330
|
-
onLine: () => { },
|
|
331
|
-
});
|
|
332
|
-
const durationMs = Date.now() - startTime;
|
|
333
|
-
const sessionId = opts?.writeSession === false ? null : await writeCommandSession({
|
|
334
|
-
sessionsDir, projectSlug: projectSlugForCwd(agentCwd), model,
|
|
335
|
-
displayPrompt, toolName, toolInput,
|
|
336
|
-
stdout: res.stdout, stderr: res.stderr, exitCode: res.exitCode, durationMs,
|
|
337
|
-
});
|
|
338
|
-
if (sessionId && opts?.onSessionId)
|
|
339
|
-
opts.onSessionId(sessionId);
|
|
340
|
-
return buildCommandResult(res, durationMs, sessionId);
|
|
341
|
-
}
|
|
342
|
-
finally {
|
|
343
|
-
await sbx.cleanup();
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
if (backend === "smol") {
|
|
347
|
-
if (!smolAvailable()) {
|
|
348
|
-
throw new Error("LASTLIGHT_SANDBOX=smol but the smolvm CLI is not available for command phase.");
|
|
349
|
-
}
|
|
350
|
-
const allowHosts = config.unrestrictedEgress
|
|
351
|
-
? null
|
|
352
|
-
: mergeAllowlist(DEFAULT_ALLOWLIST, config.otel?.enabled && config.otel.forwardToSandbox ? config.otel.collectorHosts : []);
|
|
353
|
-
// Boot first, then provision the probed share-backed dir (see executeSmol).
|
|
354
|
-
const workDir = setupTaskWorktree({ taskId, stateDir, sandboxDir: config.sandboxDir });
|
|
355
|
-
const sandbox = new SmolSandbox({ env: ghEnv, allowHosts });
|
|
356
|
-
const machine = await sandbox.create({ taskId, worktreePath: workDir });
|
|
357
|
-
const hostWs = machine.hostWorkspace;
|
|
358
|
-
if (prePopulate)
|
|
359
|
-
prePopulateWorkspace(hostWs, prePopulate);
|
|
360
|
-
const agentCwd = prePopulate ? `${SMOL_WORKSPACE_DIR}/${prePopulate.repo}` : SMOL_WORKSPACE_DIR;
|
|
361
|
-
try {
|
|
362
|
-
let command;
|
|
363
|
-
let toolName;
|
|
364
|
-
let toolInput;
|
|
365
|
-
if (spec.kind === "bash") {
|
|
366
|
-
command = spec.command;
|
|
367
|
-
toolName = "bash";
|
|
368
|
-
toolInput = { command: spec.command };
|
|
369
|
-
}
|
|
370
|
-
else {
|
|
371
|
-
const { fileName, run } = scriptInvocation(spec);
|
|
372
|
-
mkdirSync(join(hostWs, scriptDir), { recursive: true });
|
|
373
|
-
writeFileSync(join(hostWs, scriptDir, fileName), spec.script);
|
|
374
|
-
const inGuest = `${SMOL_WORKSPACE_DIR}/${scriptDir}/${fileName}`;
|
|
375
|
-
command = run(inGuest);
|
|
376
|
-
toolName = "bash";
|
|
377
|
-
toolInput = { command, runtime: spec.runtime };
|
|
378
|
-
}
|
|
379
|
-
const res = await sandbox.runCommand(taskId, command, {
|
|
380
|
-
cwd: agentCwd,
|
|
381
|
-
sandboxEnv: opts?.sandboxEnv,
|
|
382
|
-
timeoutSeconds,
|
|
383
|
-
onLine: () => { },
|
|
384
|
-
});
|
|
385
|
-
const durationMs = Date.now() - startTime;
|
|
386
|
-
const sessionId = opts?.writeSession === false ? null : await writeCommandSession({
|
|
387
|
-
sessionsDir, projectSlug: projectSlugForCwd(agentCwd), model,
|
|
388
|
-
displayPrompt, toolName, toolInput,
|
|
389
|
-
stdout: res.stdout, stderr: res.stderr, exitCode: res.exitCode, durationMs,
|
|
390
|
-
});
|
|
391
|
-
if (sessionId && opts?.onSessionId)
|
|
392
|
-
opts.onSessionId(sessionId);
|
|
393
|
-
return buildCommandResult(res, durationMs, sessionId);
|
|
394
|
-
}
|
|
395
|
-
finally {
|
|
396
|
-
await sandbox.destroy(taskId);
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
// gondolin / none — run on the host worktree via spawnSync (the same
|
|
400
|
-
// degraded model those backends already use; matches the pre-existing
|
|
401
|
-
// host-side until_bash behaviour).
|
|
402
|
-
const workDir = setupTaskWorktree({ taskId, stateDir, sandboxDir: config.sandboxDir, prePopulate });
|
|
403
|
-
const agentCwd = access?.prePopulateBranch ? join(workDir, access.repo) : workDir;
|
|
404
|
-
let command;
|
|
405
|
-
let toolName = "bash";
|
|
406
|
-
let toolInput;
|
|
407
|
-
if (spec.kind === "bash") {
|
|
408
|
-
command = spec.command;
|
|
409
|
-
toolInput = { command: spec.command };
|
|
410
|
-
}
|
|
411
|
-
else {
|
|
412
|
-
const { fileName, run } = scriptInvocation(spec);
|
|
413
|
-
mkdirSync(join(workDir, scriptDir), { recursive: true });
|
|
414
|
-
const filePath = join(workDir, scriptDir, fileName);
|
|
415
|
-
writeFileSync(filePath, spec.script);
|
|
416
|
-
command = run(filePath);
|
|
417
|
-
toolInput = { command, runtime: spec.runtime };
|
|
418
|
-
}
|
|
419
|
-
const proc = spawnSync("sh", ["-c", command], {
|
|
420
|
-
cwd: agentCwd,
|
|
421
|
-
env: { ...process.env, ...ghEnv, ...(opts?.sandboxEnv ?? {}) },
|
|
422
|
-
encoding: "utf-8",
|
|
423
|
-
timeout: timeoutSeconds * 1000,
|
|
424
|
-
maxBuffer: 256 * 1024 * 1024,
|
|
425
|
-
});
|
|
426
|
-
const durationMs = Date.now() - startTime;
|
|
427
|
-
const exitCode = proc.status ?? (proc.signal ? 124 : 1);
|
|
428
|
-
const res = { exitCode, stdout: proc.stdout ?? "", stderr: proc.stderr ?? "", timedOut: proc.signal === "SIGTERM" };
|
|
429
|
-
const sessionId = opts?.writeSession === false ? null : await writeCommandSession({
|
|
430
|
-
sessionsDir, projectSlug: projectSlugForCwd(agentCwd), model,
|
|
431
|
-
displayPrompt, toolName, toolInput,
|
|
432
|
-
stdout: res.stdout, stderr: res.stderr, exitCode: res.exitCode, durationMs,
|
|
433
|
-
});
|
|
434
|
-
if (sessionId && opts?.onSessionId)
|
|
435
|
-
opts.onSessionId(sessionId);
|
|
436
|
-
return buildCommandResult(res, durationMs, sessionId);
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
|
-
/** Map a raw command result onto the ExecutionResult contract (turns 0, no cost). */
|
|
440
|
-
function buildCommandResult(res, durationMs, sessionId) {
|
|
441
|
-
const success = res.exitCode === 0;
|
|
442
|
-
const combined = res.stderr ? `${res.stdout}${res.stdout && !res.stdout.endsWith("\n") ? "\n" : ""}${res.stderr}` : res.stdout;
|
|
443
|
-
// Strip the trailing newline so the value substitutes cleanly into a
|
|
444
|
-
// downstream command / `{{phaseOutputs.<name>}}` and can be forwarded as an
|
|
445
|
-
// `LL_OUT_<PHASE>` env var (mirrors archon's "trailing newline removed"). The
|
|
446
|
-
// full raw stdout/stderr is preserved verbatim in the session jsonl.
|
|
447
|
-
const output = combined.replace(/\n+$/, "");
|
|
448
|
-
return {
|
|
449
|
-
success,
|
|
450
|
-
output,
|
|
451
|
-
turns: 0,
|
|
452
|
-
durationMs,
|
|
453
|
-
sessionId: sessionId ?? undefined,
|
|
454
|
-
error: success ? undefined : res.timedOut ? `command timed out after ${Math.round(durationMs / 1000)}s` : `command exited ${res.exitCode}`,
|
|
455
|
-
stopReason: success ? "success" : res.timedOut ? "error_timeout" : "error_bash",
|
|
170
|
+
const ctx = {
|
|
171
|
+
config,
|
|
172
|
+
taskId,
|
|
173
|
+
stateDir,
|
|
174
|
+
backend,
|
|
175
|
+
env: ghEnv,
|
|
176
|
+
prePopulate,
|
|
177
|
+
access,
|
|
178
|
+
onSessionId: opts?.onSessionId,
|
|
179
|
+
sandboxFactory: opts?.sandboxFactory,
|
|
456
180
|
};
|
|
181
|
+
return withSpan("lastlight.command.execute", spanAttrs, () => runSandboxedCommand(spec, ctx, {
|
|
182
|
+
timeoutSeconds: opts?.timeoutSeconds,
|
|
183
|
+
sandboxEnv: opts?.sandboxEnv,
|
|
184
|
+
writeSession: opts?.writeSession,
|
|
185
|
+
}));
|
|
457
186
|
}
|
|
458
187
|
//# sourceMappingURL=agent-executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-executor.js","sourceRoot":"","sources":["../../src/engine/agent-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-executor.js","sourceRoot":"","sources":["../../src/engine/agent-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -367,18 +367,42 @@ async function handlePrFix(context, handler, deps) {
|
|
|
367
367
|
let prBody = context.body || "";
|
|
368
368
|
let branch = "";
|
|
369
369
|
let failedChecks = "";
|
|
370
|
+
let isForkPr = false;
|
|
371
|
+
let headRepoFullName = null;
|
|
370
372
|
if (deps.github) {
|
|
371
373
|
try {
|
|
372
374
|
const pr = await deps.github.getPullRequest(owner, repo, prNumber);
|
|
373
375
|
prTitle = prTitle || pr.title;
|
|
374
376
|
prBody = prBody || pr.body || "";
|
|
375
377
|
branch = pr.head.ref;
|
|
378
|
+
// Cross-repo (fork) PR detection. A fork PR's head branch lives on
|
|
379
|
+
// another repo we have no write access to, and its head ref isn't on
|
|
380
|
+
// this repo's origin — so there's nothing for pr-fix to clone or push
|
|
381
|
+
// to. Bail here, before any sandbox is provisioned. `head.repo` is null
|
|
382
|
+
// when the source fork was deleted; treat that as a fork too (the branch
|
|
383
|
+
// is gone either way).
|
|
384
|
+
headRepoFullName = pr.head.repo?.full_name ?? null;
|
|
385
|
+
const baseRepoFullName = pr.base.repo?.full_name ?? `${owner}/${repo}`;
|
|
386
|
+
isForkPr = headRepoFullName === null || headRepoFullName !== baseRepoFullName;
|
|
376
387
|
failedChecks = await deps.github.getFailedChecks(owner, repo, pr.head.sha);
|
|
377
388
|
}
|
|
378
389
|
catch (err) {
|
|
379
390
|
console.warn(`[event] Could not fetch PR: ${err.message}`);
|
|
380
391
|
}
|
|
381
392
|
}
|
|
393
|
+
if (isForkPr) {
|
|
394
|
+
console.log(`[event] pr-fix skipped: PR #${prNumber} is a fork PR ` +
|
|
395
|
+
`(head ${headRepoFullName ?? "deleted fork"} ≠ base ${owner}/${repo})`);
|
|
396
|
+
if (deps.github) {
|
|
397
|
+
const source = headRepoFullName ? `from \`${headRepoFullName}\`` : "from a now-deleted fork";
|
|
398
|
+
await deps.github
|
|
399
|
+
.postComment(owner, repo, prNumber, `I can't apply fixes to this PR — it comes ${source}, and I have no write access to the ` +
|
|
400
|
+
`source branch (nor is its head ref on \`${owner}/${repo}\`). Re-create the change on a ` +
|
|
401
|
+
`branch in \`${owner}/${repo}\` and I'll fix it there.`)
|
|
402
|
+
.catch((e) => console.warn(`[event] fork-PR notice comment failed: ${e instanceof Error ? e.message : String(e)}`));
|
|
403
|
+
}
|
|
404
|
+
return { kind: "ignored", reason: `pr-fix not supported for fork PR #${prNumber}` };
|
|
405
|
+
}
|
|
382
406
|
if (!branch) {
|
|
383
407
|
console.error(`[event] Could not determine branch for PR #${prNumber}`);
|
|
384
408
|
return { kind: "ignored", reason: `could not determine branch for PR #${prNumber}` };
|