@tokenfactory/acc-runner 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,14 +13,32 @@
13
13
  * Cancellation: watch.ts holds a reference to the running child via the
14
14
  * returned controller and SIGTERMs it on task_cancelled.
15
15
  */
16
+ import os from "node:os";
17
+ import path from "node:path";
16
18
  import { execa } from "execa";
17
19
  import { normalizeUsage, parseClaudeJson, priceUsdCents, } from "./cost-pricing.js";
18
20
  import { git as defaultGit } from "./git.js";
19
21
  import { gh as defaultGh } from "./gh.js";
20
22
  import { writeMcpConfig as defaultWriteMcpConfig, } from "./mcp-spawn.js";
21
23
  import { branchForTask, prTitleForTask, renderTaskPrompt, } from "./prompt.js";
24
+ import { acquireTaskLock as defaultAcquireTaskLock, TaskLockHeldError, } from "./runtime/locks.js";
25
+ import { prepareTaskWorktree as defaultPrepareTaskWorktree, } from "./runtime/worktree.js";
22
26
  const LOG_BATCH_BYTES = 4 * 1024;
23
- function defaultSpawnClaude(cwd) {
27
+ /**
28
+ * v0.6.0 REG-296: build the argv for `claude --print`. Splitting this
29
+ * out keeps the model-passthrough logic unit-testable without spawning
30
+ * a real subprocess. modelId is forwarded as `--model <id>` when
31
+ * non-empty (whitespace counts as empty); otherwise omitted so claude
32
+ * uses the operator's default model.
33
+ */
34
+ export function buildClaudeArgs(modelId) {
35
+ const args = ["--print", "--dangerously-skip-permissions", "--output-format=json"];
36
+ const trimmed = (modelId ?? "").trim();
37
+ if (trimmed)
38
+ args.push("--model", trimmed);
39
+ return args;
40
+ }
41
+ function defaultSpawnClaude(cwd, modelId) {
24
42
  // --dangerously-skip-permissions: bypass claude's per-edit approval
25
43
  // prompts. The runner is non-interactive (no TTY for human approval)
26
44
  // and the permission boundary is enforced one level up — see the
@@ -28,7 +46,8 @@ function defaultSpawnClaude(cwd) {
28
46
  // --output-format=json: emit a structured object so we can parse the
29
47
  // usage block for cost tracking. parseClaudeJson falls back to plain
30
48
  // text when older claude versions emit markdown directly.
31
- return execa("claude", ["--print", "--dangerously-skip-permissions", "--output-format=json"], {
49
+ // --model: forwarded when the task pins a model (REG-296).
50
+ return execa("claude", buildClaudeArgs(modelId), {
32
51
  cwd,
33
52
  stdin: "pipe",
34
53
  stdout: "pipe",
@@ -37,6 +56,25 @@ function defaultSpawnClaude(cwd) {
37
56
  env: process.env,
38
57
  });
39
58
  }
59
+ async function defaultCheckoutBase(repoPath, baseBranch) {
60
+ // Plain `git checkout <branch>` (not `-B`) so the integration
61
+ // branch's existing ref is honored. With -B we'd reset the
62
+ // integration branch to current HEAD, which is the exact bug
63
+ // REG-301 was filed for in reverse — destructive instead of stale.
64
+ await execa("git", ["checkout", baseBranch], { cwd: repoPath, env: process.env });
65
+ }
66
+ /**
67
+ * v0.6.0 REG-295: expand `~/...` paths against $HOME so a task can
68
+ * carry `repo_path_hint = "~/work/foo"` from a row populated on a
69
+ * different machine. Absolute and relative paths pass through.
70
+ */
71
+ export function expandHomePath(p) {
72
+ if (p === "~")
73
+ return os.homedir();
74
+ if (p.startsWith("~/"))
75
+ return path.join(os.homedir(), p.slice(2));
76
+ return p;
77
+ }
40
78
  async function appendEvent(supabase, taskId, kind, payload) {
41
79
  const { error } = await supabase.rpc("append_task_event", {
42
80
  p_task_id: taskId,
@@ -121,176 +159,323 @@ export function runTask(taskId, deps) {
121
159
  const git = deps.git ?? defaultGit;
122
160
  const gh = deps.gh ?? defaultGh;
123
161
  const spawnClaude = deps.spawnClaude ?? defaultSpawnClaude;
162
+ const checkoutBase = deps.checkoutBase ?? defaultCheckoutBase;
163
+ const acquireLock = deps.acquireLock ?? defaultAcquireTaskLock;
164
+ const prepareWorktree = deps.prepareWorktree ?? defaultPrepareTaskWorktree;
124
165
  const postCostEvent = deps.postCostEvent ?? ((event) => defaultPostCostEvent(deps.supabase, event));
166
+ // Silence the unused-binding lint for `checkoutBase` — v0.11-F supersedes
167
+ // the v0.6.0 REG-301 pre-spawn `git checkout <baseBranch>` with the
168
+ // worktree's `add -B <branch> <path> <baseBranch>` start-point semantics,
169
+ // but the dep is still accepted for back-compat with test fixtures that
170
+ // inject a mock. Drop in v0.7.
171
+ void checkoutBase;
125
172
  let child = null;
126
173
  let cancelled = false;
174
+ // v0.6.1 (v0.11-D): release lock rows on every terminal exit path
175
+ // below the claim. Best-effort — a release failure logs to stderr
176
+ // but does not change the outcome the runner reports to the caller.
177
+ // Calling release without first calling claim is a no-op at the
178
+ // RPC level, so wiring this into both pre-claim and post-claim
179
+ // returns would be safe; we only call it from post-claim returns
180
+ // to keep the code path obvious to a reader.
181
+ const releaseLocks = async () => {
182
+ const { error } = await deps.supabase.rpc("release_task_locks", {
183
+ p_task_id: taskId,
184
+ });
185
+ if (error) {
186
+ process.stderr.write(`[acc-runner] release_task_locks(${taskId}) failed: ${error.message}\n`);
187
+ }
188
+ };
127
189
  const promise = (async () => {
128
- // 1. running (no-op if already running due to a duplicate broadcast).
129
- const transition = await deps.supabase.rpc("transition_task", {
190
+ // 1. Atomic claim + transition to running. v0.11-D: replaces the
191
+ // pre-v0.6.1 raw transition_task('running') call. The RPC
192
+ // row-locks acc.tasks FOR UPDATE, checks file-path overlap
193
+ // against other running tasks' locks, INSERTs a lock row +
194
+ // transitions to running in one transaction. On overlap or
195
+ // same-task race the task stays queued for another runner.
196
+ const claim = await deps.supabase.rpc("claim_task_with_locks", {
130
197
  p_task_id: taskId,
131
- p_new_status: "running",
198
+ p_runner_id: deps.session.runnerId,
132
199
  });
133
- if (transition.error) {
134
- const msg = transition.error.message;
135
- // 22023 = invalid_task_transition. The task may already be past
136
- // 'running' (e.g. needs-review) — log and bail rather than crash.
200
+ if (claim.error) {
201
+ const msg = claim.error.message;
202
+ // Includes 22023 (invalid_task_transition surfaced through the
203
+ // nested acc.transition_task call) — task may already be past
204
+ // 'running' (e.g. needs-review). Log and bail rather than crash.
137
205
  await appendEvent(deps.supabase, taskId, "error", {
138
- phase: "transition_to_running",
206
+ phase: "claim_locks",
139
207
  error: msg,
140
208
  });
141
- return { taskId, status: "failed", error: msg };
209
+ return { taskId, status: "failed", phase: "claim_locks", error: msg };
142
210
  }
143
- // 2. Fetch task + adjacent rows.
144
- const fetched = await deps.supabase.rpc("fetch_task_for_runner", {
145
- p_task_id: taskId,
146
- });
147
- if (fetched.error || !fetched.data) {
148
- const msg = fetched.error?.message ?? "fetch_task_for_runner returned no data";
149
- await appendEvent(deps.supabase, taskId, "error", { phase: "fetch", error: msg });
150
- await deps.supabase.rpc("transition_task", {
151
- p_task_id: taskId,
152
- p_new_status: "failed",
211
+ const claimResult = (claim.data ?? {});
212
+ if (claimResult.ok !== true) {
213
+ const conflicts = Array.isArray(claimResult.conflicts) ? claimResult.conflicts : [];
214
+ await appendEvent(deps.supabase, taskId, "log", {
215
+ phase: "claim_locks",
216
+ stream: "stderr",
217
+ conflicts,
218
+ message: `file-lock conflict — other tasks hold overlapping paths: ${conflicts.join(", ")}`,
219
+ runner_id: deps.session.runnerId,
153
220
  });
154
- return { taskId, status: "failed", error: msg };
221
+ const reason = `file-lock conflict with: ${conflicts.join(", ") || "(unknown)"}`;
222
+ return {
223
+ taskId,
224
+ status: "failed",
225
+ phase: "claim_locks",
226
+ error: reason,
227
+ };
155
228
  }
156
- const result = fetched.data;
157
- const { task } = result;
158
- const branch = branchForTask(task.id, task.title, task.branch);
159
- const prompt = renderTaskPrompt({
160
- task,
161
- agent: result.agent,
162
- model: result.model,
163
- integrationBranch: deps.cfg.integrationBranch,
164
- targetRepo: deps.cfg.targetRepo,
165
- });
166
- // 3. Repo prep.
229
+ // v0.6.1 (v0.11-D): every exit path below the successful claim
230
+ // must release the lock row so the same paths free up for the
231
+ // next runner. try/finally captures returns AND uncaught throws
232
+ // alike strictly stronger than explicit pre-return release at
233
+ // each of the seven completion sites, and the runner CLI never
234
+ // recovers from a thrown error inside runTask, so the lock
235
+ // would otherwise leak until a future sweep job clears it.
167
236
  try {
168
- await git.fetch(deps.cfg.repoPath);
169
- await git.checkout(deps.cfg.repoPath, branch);
170
- }
171
- catch (err) {
172
- const msg = err.message;
173
- await appendEvent(deps.supabase, taskId, "error", { phase: "git", error: msg });
174
- await deps.supabase.rpc("transition_task", {
237
+ // 2. Fetch task + adjacent rows.
238
+ const fetched = await deps.supabase.rpc("fetch_task_for_runner", {
175
239
  p_task_id: taskId,
176
- p_new_status: "failed",
177
240
  });
178
- return { taskId, status: "failed", error: msg };
179
- }
180
- // 4. Spawn Claude.
181
- if (cancelled) {
182
- return { taskId, status: "cancelled" };
183
- }
184
- // 4a. Provision .mcp.json so Claude Code auto-discovers acc-mcp-server.
185
- // Best-effort: a failed write must not block the task. The MCP server
186
- // is a context source, not a critical dependency for v0.5-C1.
187
- let mcpCleanup = null;
188
- if (deps.session) {
189
- const writer = deps.writeMcpConfig ?? defaultWriteMcpConfig;
190
- try {
191
- mcpCleanup = await writer({
192
- cwd: deps.cfg.repoPath,
193
- taskId,
194
- runnerId: deps.session.runnerId,
195
- accessToken: deps.session.accessToken,
196
- publicUrl: deps.publicUrl ?? deps.cfg.publicUrl,
197
- supabaseUrl: deps.cfg.supabaseUrl,
198
- supabaseAnonKey: deps.cfg.supabaseAnonKey,
241
+ if (fetched.error || !fetched.data) {
242
+ const msg = fetched.error?.message ?? "fetch_task_for_runner returned no data";
243
+ await appendEvent(deps.supabase, taskId, "error", { phase: "fetch", error: msg });
244
+ await deps.supabase.rpc("transition_task", {
245
+ p_task_id: taskId,
246
+ p_new_status: "failed",
199
247
  });
248
+ return { taskId, status: "failed", phase: "fetch", error: msg };
200
249
  }
201
- catch (err) {
202
- // Don't echo the token even on failure.
203
- process.stderr.write(`[acc-runner] mcp .mcp.json write failed: ${err.message}\n`);
204
- }
205
- }
206
- child = spawnClaude(deps.cfg.repoPath);
207
- if (child.stdin) {
208
- child.stdin.write(prompt);
209
- child.stdin.end();
210
- }
211
- const stdoutPromise = child.stdout
212
- ? streamToEvents(child.stdout, deps.supabase, taskId, "stdout")
213
- : Promise.resolve("");
214
- const stderrPromise = child.stderr
215
- ? streamToEvents(child.stderr, deps.supabase, taskId, "stderr")
216
- : Promise.resolve("");
217
- const [outcome, capturedStdout, capturedStderr] = await Promise.all([
218
- child,
219
- stdoutPromise,
220
- stderrPromise,
221
- ]);
222
- // Restore .mcp.json as soon as Claude exits its MCP subprocess
223
- // tree comes down with it, so leaving our token-bearing config on
224
- // disk a moment longer is pure exposure surface.
225
- if (mcpCleanup) {
250
+ const result = fetched.data;
251
+ const { task } = result;
252
+ const branch = branchForTask(task.id, task.title, task.branch);
253
+ // REG-295: per-task repo overrides — task row trumps config so one
254
+ // runner can service tasks across multiple repos. Env-backed config
255
+ // remains the fallback for tasks that don't carry a hint yet.
256
+ const repoPath = task.repo_path_hint?.trim()
257
+ ? expandHomePath(task.repo_path_hint.trim())
258
+ : deps.cfg.repoPath;
259
+ const targetRepo = task.repo?.trim() || deps.cfg.targetRepo;
260
+ // REG-301: branch base comes from task → cfg → main. cfg.integrationBranch
261
+ // already defaults to "acc/integration" so the third fallback only
262
+ // matters when an operator zeroed it out via env.
263
+ const integrationBranch = task.integration_branch?.trim() || deps.cfg.integrationBranch || "main";
264
+ const prompt = renderTaskPrompt({
265
+ task,
266
+ agent: result.agent,
267
+ model: result.model,
268
+ integrationBranch,
269
+ targetRepo,
270
+ });
271
+ // v0.11-F: acquire the per-task PID lock before any worktree
272
+ // side-effect. Same-machine parallel runners that picked up the same
273
+ // task_id (e.g. two `acc-runner watch` processes seeing the same
274
+ // broadcast) race here; the second one bails on TaskLockHeldError.
275
+ let lock;
226
276
  try {
227
- await mcpCleanup.restore();
277
+ lock = await acquireLock(taskId);
228
278
  }
229
279
  catch (err) {
230
- process.stderr.write(`[acc-runner] mcp .mcp.json restore failed: ${err.message}\n`);
280
+ if (err instanceof TaskLockHeldError) {
281
+ await appendEvent(deps.supabase, taskId, "error", {
282
+ phase: "worktree_lock",
283
+ error: err.message,
284
+ held_by_pid: err.heldByPid,
285
+ });
286
+ await deps.supabase.rpc("transition_task", {
287
+ p_task_id: taskId,
288
+ p_new_status: "failed",
289
+ });
290
+ return { taskId, status: "failed", phase: "worktree_lock", error: err.message };
291
+ }
292
+ throw err;
231
293
  }
232
- }
233
- // Post the cost event before any later branch returns so cap tracking
234
- // captures success, cancellation, and non-zero exit alike. Best-effort:
235
- // a failed POST logs to stderr but never bubbles past the runner.
236
- {
237
- const event = buildCostEvent(taskId, capturedStdout, result.model?.id, result.runner?.id);
294
+ // Worktree gets assigned inside the git-prep block; cleanup in the
295
+ // outer finally handles both the success path and every early
296
+ // return that follows.
297
+ let worktree = null;
298
+ let workdir = repoPath;
238
299
  try {
239
- await postCostEvent(event);
300
+ // 3. Repo prep. v0.11-F: fetch on the shared clone (worktree
301
+ // shares the object store) then provision an isolated worktree
302
+ // at ~/.cache/acc-runner/work/<task_id>/ forked from the
303
+ // integration branch. The redundant `git.checkout -B <branch>`
304
+ // is a no-op inside the new worktree — kept so the v0.6.0
305
+ // checkout seam stays observable in unit tests.
306
+ try {
307
+ await git.fetch(repoPath);
308
+ worktree = await prepareWorktree({
309
+ repoPath,
310
+ taskId,
311
+ branch,
312
+ baseBranch: integrationBranch,
313
+ });
314
+ workdir = worktree.path;
315
+ await git.checkout(workdir, branch);
316
+ }
317
+ catch (err) {
318
+ const msg = err.message;
319
+ await appendEvent(deps.supabase, taskId, "error", {
320
+ phase: "git",
321
+ error: msg,
322
+ base: integrationBranch,
323
+ branch,
324
+ repo_path: repoPath,
325
+ worktree_path: worktree?.path ?? null,
326
+ });
327
+ await deps.supabase.rpc("transition_task", {
328
+ p_task_id: taskId,
329
+ p_new_status: "failed",
330
+ });
331
+ return { taskId, status: "failed", phase: "git", error: msg };
332
+ }
333
+ // 4. Spawn Claude.
334
+ if (cancelled) {
335
+ return { taskId, status: "cancelled" };
336
+ }
337
+ // 4a. Provision .mcp.json so Claude Code auto-discovers acc-mcp-server.
338
+ // Best-effort: a failed write must not block the task. The MCP server
339
+ // is a context source, not a critical dependency for v0.5-C1.
340
+ let mcpCleanup = null;
341
+ if (deps.session) {
342
+ const writer = deps.writeMcpConfig ?? defaultWriteMcpConfig;
343
+ try {
344
+ mcpCleanup = await writer({
345
+ cwd: workdir,
346
+ taskId,
347
+ runnerId: deps.session.runnerId,
348
+ accessToken: deps.session.accessToken,
349
+ publicUrl: deps.publicUrl ?? deps.cfg.publicUrl,
350
+ supabaseUrl: deps.cfg.supabaseUrl,
351
+ supabaseAnonKey: deps.cfg.supabaseAnonKey,
352
+ });
353
+ }
354
+ catch (err) {
355
+ // Don't echo the token even on failure.
356
+ process.stderr.write(`[acc-runner] mcp .mcp.json write failed: ${err.message}\n`);
357
+ }
358
+ }
359
+ child = spawnClaude(workdir, result.model?.id);
360
+ if (child.stdin) {
361
+ child.stdin.write(prompt);
362
+ child.stdin.end();
363
+ }
364
+ const stdoutPromise = child.stdout
365
+ ? streamToEvents(child.stdout, deps.supabase, taskId, "stdout")
366
+ : Promise.resolve("");
367
+ const stderrPromise = child.stderr
368
+ ? streamToEvents(child.stderr, deps.supabase, taskId, "stderr")
369
+ : Promise.resolve("");
370
+ const [outcome, capturedStdout, capturedStderr] = await Promise.all([
371
+ child,
372
+ stdoutPromise,
373
+ stderrPromise,
374
+ ]);
375
+ // Restore .mcp.json as soon as Claude exits — its MCP subprocess
376
+ // tree comes down with it, so leaving our token-bearing config on
377
+ // disk a moment longer is pure exposure surface.
378
+ if (mcpCleanup) {
379
+ try {
380
+ await mcpCleanup.restore();
381
+ }
382
+ catch (err) {
383
+ process.stderr.write(`[acc-runner] mcp .mcp.json restore failed: ${err.message}\n`);
384
+ }
385
+ }
386
+ // Post the cost event before any later branch returns so cap tracking
387
+ // captures success, cancellation, and non-zero exit alike. Best-effort:
388
+ // a failed POST logs to stderr but never bubbles past the runner.
389
+ {
390
+ const event = buildCostEvent(taskId, capturedStdout, result.model?.id, result.runner?.id);
391
+ try {
392
+ await postCostEvent(event);
393
+ }
394
+ catch (err) {
395
+ process.stderr.write(`[acc-runner] cost-event post failed: ${err.message}\n`);
396
+ }
397
+ }
398
+ if (cancelled) {
399
+ await appendEvent(deps.supabase, taskId, "cancelled", {
400
+ exit_code: outcome.exitCode,
401
+ });
402
+ return { taskId, status: "cancelled", exitCode: outcome.exitCode };
403
+ }
404
+ if (outcome.exitCode !== 0) {
405
+ await appendEvent(deps.supabase, taskId, "error", {
406
+ phase: "claude_exit",
407
+ exit_code: outcome.exitCode,
408
+ stderr_tail: capturedStderr.slice(-2000),
409
+ });
410
+ await deps.supabase.rpc("transition_task", {
411
+ p_task_id: taskId,
412
+ p_new_status: "failed",
413
+ });
414
+ return {
415
+ taskId,
416
+ status: "failed",
417
+ phase: "claude_exit",
418
+ exitCode: outcome.exitCode,
419
+ error: capturedStderr.slice(-200).trim() || `claude exited ${outcome.exitCode}`,
420
+ };
421
+ }
422
+ // 5. Push + open PR. Both run from the worktree so the operator's
423
+ // shared clone never has the task branch checked out.
424
+ try {
425
+ await git.push(workdir, branch);
426
+ }
427
+ catch (err) {
428
+ const msg = err.message;
429
+ await appendEvent(deps.supabase, taskId, "error", { phase: "push", error: msg });
430
+ await deps.supabase.rpc("transition_task", {
431
+ p_task_id: taskId,
432
+ p_new_status: "failed",
433
+ });
434
+ return { taskId, status: "failed", phase: "push", error: msg };
435
+ }
436
+ let prUrl = "";
437
+ try {
438
+ const body = extractReportFromOutput(capturedStdout);
439
+ const pr = await gh.openPR(workdir, {
440
+ title: prTitleForTask(task.id, task.title),
441
+ body,
442
+ base: integrationBranch,
443
+ });
444
+ prUrl = pr.url;
445
+ await appendEvent(deps.supabase, taskId, "pr-opened", { url: prUrl });
446
+ }
447
+ catch (err) {
448
+ const msg = err.message;
449
+ await appendEvent(deps.supabase, taskId, "error", { phase: "pr_open", error: msg });
450
+ // Don't transition to failed — the push succeeded, the user can
451
+ // open a PR manually. Webhook will pick it up.
452
+ }
453
+ return { taskId, status: "ok", prUrl, exitCode: 0 };
240
454
  }
241
- catch (err) {
242
- process.stderr.write(`[acc-runner] cost-event post failed: ${err.message}\n`);
455
+ finally {
456
+ // v0.11-F: tear down the per-task worktree and release the PID
457
+ // lock on every completion path (success, failure, cancellation,
458
+ // unexpected throw). Both legs are best-effort — leaking either
459
+ // resource is preferable to masking the original return value.
460
+ if (worktree) {
461
+ try {
462
+ await worktree.cleanup();
463
+ }
464
+ catch (err) {
465
+ process.stderr.write(`[acc-runner] worktree cleanup failed: ${err.message}\n`);
466
+ }
467
+ }
468
+ try {
469
+ await lock.release();
470
+ }
471
+ catch (err) {
472
+ process.stderr.write(`[acc-runner] lock release failed: ${err.message}\n`);
473
+ }
243
474
  }
244
475
  }
245
- if (cancelled) {
246
- await appendEvent(deps.supabase, taskId, "cancelled", {
247
- exit_code: outcome.exitCode,
248
- });
249
- return { taskId, status: "cancelled", exitCode: outcome.exitCode };
250
- }
251
- if (outcome.exitCode !== 0) {
252
- await appendEvent(deps.supabase, taskId, "error", {
253
- phase: "claude_exit",
254
- exit_code: outcome.exitCode,
255
- stderr_tail: capturedStderr.slice(-2000),
256
- });
257
- await deps.supabase.rpc("transition_task", {
258
- p_task_id: taskId,
259
- p_new_status: "failed",
260
- });
261
- return { taskId, status: "failed", exitCode: outcome.exitCode };
262
- }
263
- // 5. Push + open PR.
264
- try {
265
- await git.push(deps.cfg.repoPath, branch);
266
- }
267
- catch (err) {
268
- const msg = err.message;
269
- await appendEvent(deps.supabase, taskId, "error", { phase: "push", error: msg });
270
- await deps.supabase.rpc("transition_task", {
271
- p_task_id: taskId,
272
- p_new_status: "failed",
273
- });
274
- return { taskId, status: "failed", error: msg };
275
- }
276
- let prUrl = "";
277
- try {
278
- const body = extractReportFromOutput(capturedStdout);
279
- const pr = await gh.openPR(deps.cfg.repoPath, {
280
- title: prTitleForTask(task.id, task.title),
281
- body,
282
- base: deps.cfg.integrationBranch,
283
- });
284
- prUrl = pr.url;
285
- await appendEvent(deps.supabase, taskId, "pr-opened", { url: prUrl });
286
- }
287
- catch (err) {
288
- const msg = err.message;
289
- await appendEvent(deps.supabase, taskId, "error", { phase: "pr_open", error: msg });
290
- // Don't transition to failed — the push succeeded, the user can
291
- // open a PR manually. Webhook will pick it up.
476
+ finally {
477
+ await releaseLocks();
292
478
  }
293
- return { taskId, status: "ok", prUrl, exitCode: 0 };
294
479
  })();
295
480
  return {
296
481
  taskId,
@@ -1 +1 @@
1
- {"version":3,"file":"task-runner.js","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-runner.js","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * shape rather than importing it cross-workspace. v0.3 will dedupe via a
6
6
  * shared workspace package once the runner is published.
7
7
  */
8
- export declare const PROTOCOL_VERSION: "0.5.0";
8
+ export declare const PROTOCOL_VERSION: "0.6.1";
9
9
  export declare const RUNNER_KEYCHAIN_SERVICE: "acc-runner";
10
10
  export interface DeviceCodeResponse {
11
11
  device_code: string;
@@ -62,6 +62,17 @@ export interface FetchTaskResult {
62
62
  allowed: string[];
63
63
  forbidden: string[];
64
64
  contracts?: string[] | null;
65
+ /** v0.6.1 REG-295: per-task GitHub slug (owner/name) — overrides
66
+ * cfg.targetRepo so a single runner can service tasks spanning
67
+ * multiple repos. */
68
+ repo?: string | null;
69
+ /** v0.6.1 REG-295: per-task local clone path hint. `~`-prefixed
70
+ * paths expand against $HOME. Overrides cfg.repoPath. */
71
+ repo_path_hint?: string | null;
72
+ /** v0.6.1 REG-301: per-task base branch for new PR branches.
73
+ * Overrides cfg.integrationBranch so a hotfix task can target a
74
+ * release branch without touching env. */
75
+ integration_branch?: string | null;
65
76
  };
66
77
  agent: {
67
78
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}