@tokenfactory/acc-runner 0.29.1 → 0.29.3
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/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +38 -0
- package/dist/doctor.js.map +1 -1
- package/dist/runtime/clone-cache.d.ts +61 -0
- package/dist/runtime/clone-cache.d.ts.map +1 -0
- package/dist/runtime/clone-cache.js +161 -0
- package/dist/runtime/clone-cache.js.map +1 -0
- package/dist/runtime/reviewer.d.ts +24 -3
- package/dist/runtime/reviewer.d.ts.map +1 -1
- package/dist/runtime/reviewer.js +204 -25
- package/dist/runtime/reviewer.js.map +1 -1
- package/dist/runtime/rework.d.ts +37 -0
- package/dist/runtime/rework.d.ts.map +1 -1
- package/dist/runtime/rework.js +137 -0
- package/dist/runtime/rework.js.map +1 -1
- package/dist/runtime/worktree.d.ts +55 -0
- package/dist/runtime/worktree.d.ts.map +1 -1
- package/dist/runtime/worktree.js +118 -0
- package/dist/runtime/worktree.js.map +1 -1
- package/dist/task-runner.d.ts +20 -1
- package/dist/task-runner.d.ts.map +1 -1
- package/dist/task-runner.js +171 -4
- package/dist/task-runner.js.map +1 -1
- package/dist/watch.d.ts +38 -0
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +174 -30
- package/dist/watch.js.map +1 -1
- package/package.json +1 -1
|
@@ -113,6 +113,61 @@ export interface WorktreeInspection {
|
|
|
113
113
|
}
|
|
114
114
|
export declare function inspectExistingWorktree(repoPath: string, taskId: string): Promise<WorktreeInspection | null>;
|
|
115
115
|
export declare function prepareTaskWorktree(opts: PrepareWorktreeOptions): Promise<PreparedWorktree>;
|
|
116
|
+
/** stdout-capturing git exec (rev-parse / cat-file / diff). Injectable for tests. */
|
|
117
|
+
export type GitCapture = (args: string[], cwd: string) => Promise<string>;
|
|
118
|
+
/** Why a review's head could not be materialized — carried on `ReviewFetchError`. */
|
|
119
|
+
export interface ReviewFetchFailure {
|
|
120
|
+
readonly event: "task.review_fetch_failed";
|
|
121
|
+
readonly prNumber: number;
|
|
122
|
+
readonly expectedHeadSha: string;
|
|
123
|
+
readonly reason: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Thrown when the reviewer cannot materialize the exact PR head: the branch is
|
|
127
|
+
* unfetchable, the head SHA is absent after fetch, or resolved `HEAD` differs
|
|
128
|
+
* from the expected head SHA. The caller catches this and fails closed —
|
|
129
|
+
* abort the review, post NO verdict, emit `task.review_fetch_failed` so R0's
|
|
130
|
+
* re-broadcast can reassign to a healthy runner.
|
|
131
|
+
*/
|
|
132
|
+
export declare class ReviewFetchError extends Error {
|
|
133
|
+
readonly event: "task.review_fetch_failed";
|
|
134
|
+
readonly prNumber: number;
|
|
135
|
+
readonly expectedHeadSha: string;
|
|
136
|
+
readonly reason: string;
|
|
137
|
+
constructor(info: ReviewFetchFailure);
|
|
138
|
+
}
|
|
139
|
+
/** Dedicated per-review worktree path; `review-` prefix so it can never name-
|
|
140
|
+
* collide with a task worktree (keyed by taskId) and be picked up as a base. */
|
|
141
|
+
export declare function reviewWorktreePath(reviewId: string): string;
|
|
142
|
+
export interface PrepareReviewWorktreeOptions {
|
|
143
|
+
/** Local clone with credentials + ref history; `git fetch` runs here. */
|
|
144
|
+
repoPath: string;
|
|
145
|
+
/** Optional mirror for `git worktree` sub-commands (see prepareTaskWorktree). */
|
|
146
|
+
worktreeRepoPath?: string;
|
|
147
|
+
reviewId: string;
|
|
148
|
+
prNumber: number;
|
|
149
|
+
/** PR head branch name (fetched explicitly from origin). */
|
|
150
|
+
headBranch: string;
|
|
151
|
+
/** Expected PR head SHA — the tree is checked out detached on this and asserted. */
|
|
152
|
+
headSha: string;
|
|
153
|
+
/** PR base branch — fetched so the merge-base (three-dot) diff can be computed. */
|
|
154
|
+
baseBranch: string;
|
|
155
|
+
git?: GitExec;
|
|
156
|
+
gitCapture?: GitCapture;
|
|
157
|
+
}
|
|
158
|
+
export interface PreparedReviewWorktree {
|
|
159
|
+
path: string;
|
|
160
|
+
headSha: string;
|
|
161
|
+
diff: string;
|
|
162
|
+
cleanup(): Promise<void>;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Fetch the exact PR head, hard-checkout it detached into a clean dedicated
|
|
166
|
+
* worktree, assert `HEAD == headSha`, and compute the PR (merge-base) diff from
|
|
167
|
+
* that verified tree. Throws `ReviewFetchError` (fail closed) on any mismatch —
|
|
168
|
+
* never returns a fallback tree.
|
|
169
|
+
*/
|
|
170
|
+
export declare function prepareReviewWorktree(opts: PrepareReviewWorktreeOptions): Promise<PreparedReviewWorktree>;
|
|
116
171
|
export interface OrphanWorktree {
|
|
117
172
|
path: string;
|
|
118
173
|
taskId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/runtime/worktree.ts"],"names":[],"mappings":"AAgDA,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACrE,MAAM,MAAM,iBAAiB,GAAG,CAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;AAExC,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GAAG,CAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,KAAK,EAAG,yBAAyB,CAAU;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,IAAI,EAAE,aAAa;CAYhC;AA0BD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAyBD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAgDpC;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CA+F3B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,iFAAiF;AACjF,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CA+B3B"}
|
|
1
|
+
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/runtime/worktree.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/worktree.js
CHANGED
|
@@ -247,6 +247,124 @@ export async function prepareTaskWorktree(opts) {
|
|
|
247
247
|
},
|
|
248
248
|
};
|
|
249
249
|
}
|
|
250
|
+
function defaultGitCapture(args, cwd) {
|
|
251
|
+
return execa("git", args, { cwd, env: buildEnv() }).then((r) => r.stdout);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Thrown when the reviewer cannot materialize the exact PR head: the branch is
|
|
255
|
+
* unfetchable, the head SHA is absent after fetch, or resolved `HEAD` differs
|
|
256
|
+
* from the expected head SHA. The caller catches this and fails closed —
|
|
257
|
+
* abort the review, post NO verdict, emit `task.review_fetch_failed` so R0's
|
|
258
|
+
* re-broadcast can reassign to a healthy runner.
|
|
259
|
+
*/
|
|
260
|
+
export class ReviewFetchError extends Error {
|
|
261
|
+
event = "task.review_fetch_failed";
|
|
262
|
+
prNumber;
|
|
263
|
+
expectedHeadSha;
|
|
264
|
+
reason;
|
|
265
|
+
constructor(info) {
|
|
266
|
+
super(`refusing to review PR #${info.prNumber}: could not materialize the exact ` +
|
|
267
|
+
`head ${info.expectedHeadSha || "<unknown>"} (${info.reason}); failing ` +
|
|
268
|
+
`closed rather than reviewing a fallback tree`);
|
|
269
|
+
this.name = "ReviewFetchError";
|
|
270
|
+
this.prNumber = info.prNumber;
|
|
271
|
+
this.expectedHeadSha = info.expectedHeadSha;
|
|
272
|
+
this.reason = info.reason;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/** Dedicated per-review worktree path; `review-` prefix so it can never name-
|
|
276
|
+
* collide with a task worktree (keyed by taskId) and be picked up as a base. */
|
|
277
|
+
export function reviewWorktreePath(reviewId) {
|
|
278
|
+
return path.join(workDir(), `review-${reviewId}`);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Fetch the exact PR head, hard-checkout it detached into a clean dedicated
|
|
282
|
+
* worktree, assert `HEAD == headSha`, and compute the PR (merge-base) diff from
|
|
283
|
+
* that verified tree. Throws `ReviewFetchError` (fail closed) on any mismatch —
|
|
284
|
+
* never returns a fallback tree.
|
|
285
|
+
*/
|
|
286
|
+
export async function prepareReviewWorktree(opts) {
|
|
287
|
+
const git = opts.git ?? defaultGitExec;
|
|
288
|
+
const capture = opts.gitCapture ?? defaultGitCapture;
|
|
289
|
+
const worktreeBase = opts.worktreeRepoPath ?? opts.repoPath;
|
|
290
|
+
const fail = (reason) => {
|
|
291
|
+
throw new ReviewFetchError({
|
|
292
|
+
event: "task.review_fetch_failed",
|
|
293
|
+
prNumber: opts.prNumber,
|
|
294
|
+
expectedHeadSha: opts.headSha,
|
|
295
|
+
reason,
|
|
296
|
+
});
|
|
297
|
+
};
|
|
298
|
+
const firstLine = (err) => err?.message?.split("\n")[0] ?? String(err);
|
|
299
|
+
if (!opts.headSha?.trim())
|
|
300
|
+
fail("PR metadata carried no head SHA");
|
|
301
|
+
if (!opts.headBranch?.trim())
|
|
302
|
+
fail("PR metadata carried no head branch");
|
|
303
|
+
if (!opts.baseBranch?.trim())
|
|
304
|
+
fail("PR metadata carried no base branch");
|
|
305
|
+
await fs.mkdir(workDir(), { recursive: true });
|
|
306
|
+
const target = reviewWorktreePath(opts.reviewId);
|
|
307
|
+
// Always start from a clean slate — a leftover review/task worktree must never
|
|
308
|
+
// be reused as this head (the recurrence root cause).
|
|
309
|
+
await removeWorktree(worktreeBase, target, git);
|
|
310
|
+
// Fetch the exact PR head + base refs from origin (credentials live on repoPath).
|
|
311
|
+
try {
|
|
312
|
+
await git(["fetch", "origin", opts.headBranch], opts.repoPath);
|
|
313
|
+
}
|
|
314
|
+
catch (err) {
|
|
315
|
+
fail(`could not fetch origin ${opts.headBranch}: ${firstLine(err)}`);
|
|
316
|
+
}
|
|
317
|
+
try {
|
|
318
|
+
await git(["fetch", "origin", opts.baseBranch], opts.repoPath);
|
|
319
|
+
}
|
|
320
|
+
catch (err) {
|
|
321
|
+
fail(`could not fetch base origin ${opts.baseBranch}: ${firstLine(err)}`);
|
|
322
|
+
}
|
|
323
|
+
// The fetched ref must actually contain the expected head SHA.
|
|
324
|
+
const shaPresent = await capture(["cat-file", "-t", `${opts.headSha}^{commit}`], opts.repoPath)
|
|
325
|
+
.then((t) => t.trim() === "commit")
|
|
326
|
+
.catch(() => false);
|
|
327
|
+
if (!shaPresent) {
|
|
328
|
+
fail(`expected head SHA ${opts.headSha} not present after fetching ${opts.headBranch}`);
|
|
329
|
+
}
|
|
330
|
+
// Hard-checkout the exact head into a clean detached worktree.
|
|
331
|
+
try {
|
|
332
|
+
await git(["worktree", "add", "--detach", target, opts.headSha], worktreeBase);
|
|
333
|
+
}
|
|
334
|
+
catch (err) {
|
|
335
|
+
await removeWorktree(worktreeBase, target, git);
|
|
336
|
+
fail(`worktree add --detach at ${opts.headSha} failed: ${firstLine(err)}`);
|
|
337
|
+
}
|
|
338
|
+
// Assert HEAD == expected head SHA — never review a tree that isn't the head.
|
|
339
|
+
const resolvedHead = await capture(["rev-parse", "HEAD"], target)
|
|
340
|
+
.then((t) => t.trim())
|
|
341
|
+
.catch(() => "");
|
|
342
|
+
if (resolvedHead !== opts.headSha) {
|
|
343
|
+
await removeWorktree(worktreeBase, target, git);
|
|
344
|
+
fail(`resolved HEAD ${resolvedHead || "<unknown>"} != expected head SHA ${opts.headSha}`);
|
|
345
|
+
}
|
|
346
|
+
// Compute the PR diff (merge-base, three-dot) from the verified head.
|
|
347
|
+
let diff = "";
|
|
348
|
+
try {
|
|
349
|
+
diff = await capture(["diff", `origin/${opts.baseBranch}...HEAD`], target);
|
|
350
|
+
}
|
|
351
|
+
catch (err) {
|
|
352
|
+
await removeWorktree(worktreeBase, target, git);
|
|
353
|
+
fail(`could not compute diff origin/${opts.baseBranch}...HEAD: ${firstLine(err)}`);
|
|
354
|
+
}
|
|
355
|
+
let cleaned = false;
|
|
356
|
+
return {
|
|
357
|
+
path: target,
|
|
358
|
+
headSha: opts.headSha,
|
|
359
|
+
diff,
|
|
360
|
+
async cleanup() {
|
|
361
|
+
if (cleaned)
|
|
362
|
+
return;
|
|
363
|
+
cleaned = true;
|
|
364
|
+
await removeWorktree(worktreeBase, target, git);
|
|
365
|
+
},
|
|
366
|
+
};
|
|
367
|
+
}
|
|
250
368
|
/** Doctor helper: dirs under workDir() not registered in `git worktree list`. */
|
|
251
369
|
export async function listOrphanWorktrees(repoPath) {
|
|
252
370
|
let entries;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/runtime/worktree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/runtime/worktree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,wEAAwE;AACxE,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,wEAAwE;AACxE,8BAA8B;AAC9B,MAAM,UAAU,OAAO;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AA0CD;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,KAAK,GAAG,yBAAkC,CAAC;IAC3C,MAAM,CAAS;IACf,MAAM,CAAS;IACf,IAAI,CAAS;IACb,MAAM,CAAS;IACxB,YAAY,IAAmB;QAC7B,KAAK,CACH,oBAAoB,IAAI,CAAC,MAAM,+BAA+B;YAC5D,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,mCAAmC;YACjE,yCAAyC,CAC5C,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAAkB,EAClB,QAAgB;IAEhB,OAAO,KAAK,CACV,KAAK,EACL,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,UAAU,WAAW,CAAC,EAC9D,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CACnC,CAAC,IAAI,CACJ,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;AACJ,CAAC;AAgDD,SAAS,cAAc,CAAC,IAAc,EAAE,GAAW;IACjD,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,QAAgB,EAChB,MAAc,EACd,GAAY;IAEZ,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,8DAA8D;QAC9D,iDAAiD;QACjD,IAAI,CAAC;YAAC,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QAC5F,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC;QAAC,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;AAC1E,CAAC;AAyBD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,MAAc;IAEd,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,kEAAkE;IAClE,+DAA+D;IAC/D,4DAA4D;IAC5D,6DAA6D;IAC7D,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAC5B,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAC1C,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CACnC,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrD,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAC5B,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAC5C,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CACjC,CAAC;QACF,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAC5B,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAChC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CACjC,CAAC;QACF,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA4B;IAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,cAAc,CAAC;IACvC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEzC,oEAAoE;IACpE,+DAA+D;IAC/D,oEAAoE;IACpE,gEAAgE;IAChE,oEAAoE;IACpE,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC;IAE5D,6DAA6D;IAC7D,+DAA+D;IAC/D,6DAA6D;IAC7D,4DAA4D;IAC5D,2DAA2D;IAC3D,EAAE;IACF,2DAA2D;IAC3D,6DAA6D;IAC7D,kEAAkE;IAClE,iEAAiE;IACjE,gEAAgE;IAChE,4DAA4D;IAC5D,kDAAkD;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,uBAAuB,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACvE,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI;YACb,KAAK,CAAC,OAAO;gBACX,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;SACF,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,kEAAkE;IAClE,0DAA0D;IAC1D,iDAAiD;IACjD,sEAAsE;IACtE,gEAAgE;IAChE,iDAAiD;IACjD,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,KAAK,GAAG,KAAK,EAAE,MAAc,EAAkB,EAAE;QACrD,MAAM,IAAI,GAAkB;YAC1B,KAAK,EAAE,yBAAyB;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,MAAM;SACP,CAAC;QACF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,sBAAsB,CAAC;IACvE,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAChD,qEAAqE;IACrE,sEAAsE;IACtE,uEAAuE;IACvE,wEAAwE;IACxE,wEAAwE;IACxE,uEAAuE;IACvE,+BAA+B;IAC/B,MAAM,GAAG,CACP,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,EAC/D,YAAY,CACb,CAAC;IACF,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK;QACd,KAAK,CAAC,OAAO;YACX,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC;AAkBD,SAAS,iBAAiB,CAAC,IAAc,EAAE,GAAW;IACpD,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,KAAK,GAAG,0BAAmC,CAAC;IAC5C,QAAQ,CAAS;IACjB,eAAe,CAAS;IACxB,MAAM,CAAS;IACxB,YAAY,IAAwB;QAClC,KAAK,CACH,0BAA0B,IAAI,CAAC,QAAQ,oCAAoC;YACzE,QAAQ,IAAI,CAAC,eAAe,IAAI,WAAW,KAAK,IAAI,CAAC,MAAM,aAAa;YACxE,8CAA8C,CACjD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF;AAED;iFACiF;AACjF,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,QAAQ,EAAE,CAAC,CAAC;AACpD,CAAC;AA0BD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAkC;IAElC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,cAAc,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC;IAC5D,MAAM,IAAI,GAAG,CAAC,MAAc,EAAS,EAAE;QACrC,MAAM,IAAI,gBAAgB,CAAC;YACzB,KAAK,EAAE,0BAA0B;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,OAAO;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,GAAY,EAAU,EAAE,CACxC,GAAa,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAEzD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACnE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACzE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAEzE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEjD,+EAA+E;IAC/E,sDAAsD;IACtD,MAAM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAEhD,kFAAkF;IAClF,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,0BAA0B,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,+BAA+B,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,+DAA+D;IAC/D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,WAAW,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;SAC5F,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC;SAClC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAI,CAAC,qBAAqB,IAAI,CAAC,OAAO,+BAA+B,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,4BAA4B,IAAI,CAAC,OAAO,YAAY,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,8EAA8E;IAC9E,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;SAC9D,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnB,IAAI,YAAY,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,YAAY,IAAI,WAAW,yBAAyB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,sEAAsE;IACtE,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,UAAU,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,iCAAiC,IAAI,CAAC,UAAU,YAAY,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI;QACJ,KAAK,CAAC,OAAO;YACX,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC;AAOD,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB;IAEhB,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAChE,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAC5B,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAC1C,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CACnC,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;IACpE,CAAC;IACD,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,SAAS;QACpC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/task-runner.d.ts
CHANGED
|
@@ -8,7 +8,9 @@ import { type McpConfigCleanup, type McpSpawnOptions } from "./mcp-spawn.js";
|
|
|
8
8
|
import { type PostRunnerStateArgs } from "./messaging.js";
|
|
9
9
|
import { type TaskLock } from "./runtime/locks.js";
|
|
10
10
|
import { type PreparedWorktree, type PrepareWorktreeOptions } from "./runtime/worktree.js";
|
|
11
|
+
import { type EnsureCloneOptions } from "./runtime/clone-cache.js";
|
|
11
12
|
import { type ConflictResolutionDeps } from "./runtime/conflict-resolver.js";
|
|
13
|
+
import { type ReconcileResult, type ReconcileReworkOptions } from "./runtime/rework.js";
|
|
12
14
|
import { type AssertResolutionOptions, type ResolutionIntegrityDeps, type ResolutionIntegrityResult } from "./runtime/resolution-integrity.js";
|
|
13
15
|
import { type PreprGateResult } from "./prepr-gate.js";
|
|
14
16
|
import type { RunnerSupabaseClient } from "./supabase.js";
|
|
@@ -74,6 +76,15 @@ export interface RunTaskDeps {
|
|
|
74
76
|
* operator's shared clone.
|
|
75
77
|
*/
|
|
76
78
|
prepareWorktree?: (opts: PrepareWorktreeOptions) => Promise<PreparedWorktree>;
|
|
79
|
+
/**
|
|
80
|
+
* POOL-P1b: clone-on-demand source provisioning. Defaults to the real
|
|
81
|
+
* `ensureRepoClone` (clones the task's repo into the per-repo cache once,
|
|
82
|
+
* mutex-serialized, reusing an existing clone). Only invoked when
|
|
83
|
+
* `cfg.cloneOnDemand` is on and the task carries a repo with no
|
|
84
|
+
* repo_path_hint. Tests override to assert clone-once / off-noop without
|
|
85
|
+
* shelling out to `gh repo clone`.
|
|
86
|
+
*/
|
|
87
|
+
provisionRepoClone?: (opts: EnsureCloneOptions) => Promise<string>;
|
|
77
88
|
/**
|
|
78
89
|
* v0.12-RESUME: cadence (ms) for the periodic
|
|
79
90
|
* `acc.update_task_signal` RPC that refreshes
|
|
@@ -153,6 +164,14 @@ export interface RunTaskDeps {
|
|
|
153
164
|
* `ACC_RUNNER_SKIP_PREPR=1`.
|
|
154
165
|
*/
|
|
155
166
|
runPreprGate?: (workdir: string, baseRef?: string) => Promise<PreprGateResult>;
|
|
167
|
+
/**
|
|
168
|
+
* PA-1: reconcile a rework branch with the current integration head before
|
|
169
|
+
* the agent runs — merges `origin/<integration>` into the worktree,
|
|
170
|
+
* auto-resolves mechanical conflicts, regenerates artifacts, and signals a
|
|
171
|
+
* HALT on a genuine source conflict. Defaults to `reconcileReworkBranch`;
|
|
172
|
+
* tests inject a stub so the rework path doesn't shell out to a real merge.
|
|
173
|
+
*/
|
|
174
|
+
reconcileReworkBranch?: (opts: ReconcileReworkOptions) => Promise<ReconcileResult>;
|
|
156
175
|
}
|
|
157
176
|
export interface RunTaskController {
|
|
158
177
|
taskId: string;
|
|
@@ -164,7 +183,7 @@ export interface RunTaskController {
|
|
|
164
183
|
* line (REG-294) so an operator can tell whether a multi-minute task
|
|
165
184
|
* died at fetch, git, claude, or push.
|
|
166
185
|
*/
|
|
167
|
-
export type RunTaskPhase = "claim_locks" | "transition_to_running" | "fetch" | "worktree_lock" | "git" | "claude_exit" | "prepr_gate" | "push" | "github" | "repo_scope";
|
|
186
|
+
export type RunTaskPhase = "claim_locks" | "transition_to_running" | "fetch" | "clone" | "worktree_lock" | "git" | "claude_exit" | "prepr_gate" | "push" | "github" | "repo_scope";
|
|
168
187
|
export interface RunTaskOutcome {
|
|
169
188
|
taskId: string;
|
|
170
189
|
status: "ok" | "failed" | "cancelled" | "capacity_paused" | "requeued" | "ignored";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAS,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAmD,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACrH,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../src/task-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/task-runner.js
CHANGED
|
@@ -36,8 +36,13 @@ import { prepareTaskWorktree as defaultPrepareTaskWorktree, } from "./runtime/wo
|
|
|
36
36
|
// against the shared clone so concurrent tasks can't collide on git's
|
|
37
37
|
// repo-global locks (the T-65-2 race).
|
|
38
38
|
import { withProvisionLock } from "./runtime/provision-mutex.js";
|
|
39
|
+
// POOL-P1b: clone-on-demand source provisioning. When cfg.cloneOnDemand is on
|
|
40
|
+
// and the task carries a repo (and no repo_path_hint), the task builds out of
|
|
41
|
+
// a per-repo cached clone instead of the fixed cfg.repoPath. Default-off: the
|
|
42
|
+
// resolver/clone step is skipped entirely when the flag is false.
|
|
43
|
+
import { clonePathForRepo, ensureRepoClone, CloneFailedError, } from "./runtime/clone-cache.js";
|
|
39
44
|
import { parseConflictMeta, resolveConflict, MAX_CONFLICT_ATTEMPTS, } from "./runtime/conflict-resolver.js";
|
|
40
|
-
import { parseReworkMeta, renderReworkPrompt, fetchPrHeadRef as defaultFetchPrHeadRef, } from "./runtime/rework.js";
|
|
45
|
+
import { parseReworkMeta, renderReworkPrompt, reconcileReworkBranch as defaultReconcileReworkBranch, fetchPrHeadRef as defaultFetchPrHeadRef, } from "./runtime/rework.js";
|
|
41
46
|
import { assertResolutionIntegrity, isConflictResolutionTask, summariseFailures, } from "./runtime/resolution-integrity.js";
|
|
42
47
|
import { runPreprGate as defaultRunPreprGate, } from "./prepr-gate.js";
|
|
43
48
|
const LOG_BATCH_BYTES = 4 * 1024;
|
|
@@ -532,6 +537,7 @@ export function runTask(taskId, deps) {
|
|
|
532
537
|
const checkoutBase = deps.checkoutBase ?? defaultCheckoutBase;
|
|
533
538
|
const acquireLock = deps.acquireLock ?? defaultAcquireTaskLock;
|
|
534
539
|
const prepareWorktree = deps.prepareWorktree ?? defaultPrepareTaskWorktree;
|
|
540
|
+
const provisionRepoClone = deps.provisionRepoClone ?? ensureRepoClone;
|
|
535
541
|
const postCostEvent = deps.postCostEvent ?? ((event) => defaultPostCostEvent(deps.supabase, event));
|
|
536
542
|
const postState = deps.postRunnerStateMessage ??
|
|
537
543
|
((args) => defaultPostRunnerStateMessage(deps.supabase, args));
|
|
@@ -540,6 +546,7 @@ export function runTask(taskId, deps) {
|
|
|
540
546
|
const healthProbe = deps.healthProbe ?? defaultHealthProbe;
|
|
541
547
|
const runPreprGate = deps.runPreprGate ??
|
|
542
548
|
((workdir, baseRef) => defaultRunPreprGate(workdir, { baseRef }));
|
|
549
|
+
const reconcileRework = deps.reconcileReworkBranch ?? defaultReconcileReworkBranch;
|
|
543
550
|
// Silence the unused-binding lint for `checkoutBase` — v0.11-F supersedes
|
|
544
551
|
// the v0.6.0 REG-301 pre-spawn `git checkout <baseBranch>` with the
|
|
545
552
|
// worktree's `add -B <branch> <path> <baseBranch>` start-point semantics,
|
|
@@ -818,9 +825,20 @@ export function runTask(taskId, deps) {
|
|
|
818
825
|
// REG-295: per-task repo overrides — task row trumps config so one
|
|
819
826
|
// runner can service tasks across multiple repos. Env-backed config
|
|
820
827
|
// remains the fallback for tasks that don't carry a hint yet.
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
828
|
+
//
|
|
829
|
+
// POOL-P1b: clone-on-demand. When the flag is on and the task carries a
|
|
830
|
+
// `repo` (and the operator has NOT pinned a `repo_path_hint`), resolve
|
|
831
|
+
// repoPath to the per-repo cache path. The actual clone happens in the
|
|
832
|
+
// guarded clone step below, inside the provision-mutex. The repo_path_hint
|
|
833
|
+
// operator pin always wins; with the flag off this is byte-identical to
|
|
834
|
+
// the historic `task.repo_path_hint ?? cfg.repoPath` resolution.
|
|
835
|
+
const repoPathHint = task.repo_path_hint?.trim();
|
|
836
|
+
const useCloneCache = !repoPathHint && !!deps.cfg.cloneOnDemand && !!task.repo?.trim();
|
|
837
|
+
const repoPath = repoPathHint
|
|
838
|
+
? expandHomePath(repoPathHint)
|
|
839
|
+
: useCloneCache
|
|
840
|
+
? clonePathForRepo(task.repo.trim())
|
|
841
|
+
: deps.cfg.repoPath;
|
|
824
842
|
const targetRepo = task.repo?.trim() || deps.cfg.targetRepo;
|
|
825
843
|
// REG-301: branch base comes from task → cfg → main. cfg.integrationBranch
|
|
826
844
|
// already defaults to "acc/integration" so the third fallback only
|
|
@@ -991,6 +1009,43 @@ export function runTask(taskId, deps) {
|
|
|
991
1009
|
};
|
|
992
1010
|
};
|
|
993
1011
|
try {
|
|
1012
|
+
// POOL-P1b: clone-on-demand source provisioning. When the flag is on and
|
|
1013
|
+
// repoPath resolved to the per-repo cache path above, clone the task's
|
|
1014
|
+
// repo into that path now (once, mutex-serialized) so the fetch +
|
|
1015
|
+
// worktree steps below have a real clone to work against. Reuses the
|
|
1016
|
+
// existing clone if present (the per-task fetch refreshes it). A clone
|
|
1017
|
+
// failure fails the task with a classified error and leaves no partial
|
|
1018
|
+
// dir behind — we never fall back to the wrong repo's clone. The lock
|
|
1019
|
+
// released in this try's finally still releases on this early return.
|
|
1020
|
+
// No-op (skipped) when the flag is off.
|
|
1021
|
+
if (useCloneCache) {
|
|
1022
|
+
try {
|
|
1023
|
+
await provisionRepoClone({ repo: task.repo.trim() });
|
|
1024
|
+
}
|
|
1025
|
+
catch (err) {
|
|
1026
|
+
const msg = err.message;
|
|
1027
|
+
const kind = err instanceof CloneFailedError ? err.kind : "transient";
|
|
1028
|
+
await appendEvent(deps.supabase, taskId, "error", {
|
|
1029
|
+
phase: "clone",
|
|
1030
|
+
error: msg,
|
|
1031
|
+
error_class: "clone_failed",
|
|
1032
|
+
clone_error_kind: kind,
|
|
1033
|
+
repo: task.repo ?? null,
|
|
1034
|
+
repo_path: repoPath,
|
|
1035
|
+
});
|
|
1036
|
+
await postState_("blocked", "error_context", {
|
|
1037
|
+
task_id: taskId,
|
|
1038
|
+
phase: "plan",
|
|
1039
|
+
error_class: "clone_failed",
|
|
1040
|
+
stderr_tail: msg,
|
|
1041
|
+
});
|
|
1042
|
+
await deps.supabase.rpc("transition_task", {
|
|
1043
|
+
p_task_id: taskId,
|
|
1044
|
+
p_new_status: "failed",
|
|
1045
|
+
});
|
|
1046
|
+
return { taskId, status: "failed", phase: "clone", error: msg };
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
994
1049
|
// 3. Repo prep. v0.11-F: fetch on the shared clone (worktree
|
|
995
1050
|
// shares the object store) then provision an isolated worktree
|
|
996
1051
|
// at ~/.cache/acc-runner/work/<task_id>/ forked from the
|
|
@@ -1163,6 +1218,66 @@ export function runTask(taskId, deps) {
|
|
|
1163
1218
|
});
|
|
1164
1219
|
return { taskId, status: "failed", phase: "git", error: msg };
|
|
1165
1220
|
}
|
|
1221
|
+
// PA-1: reconcile a rework branch with the current integration head
|
|
1222
|
+
// BEFORE the agent runs, so it can fix trivial in-scope drift in the
|
|
1223
|
+
// same pass instead of re-failing review/CI and burning the cycle into a
|
|
1224
|
+
// dead-letter (see runtime/rework.ts). A genuine source conflict HALTs
|
|
1225
|
+
// (task → blocked, surfaced for operator review) without consuming a
|
|
1226
|
+
// cycle or pushing. Fail closed: a crashed reconcile HALTs too.
|
|
1227
|
+
if (reworkMeta) {
|
|
1228
|
+
let reconcile;
|
|
1229
|
+
try {
|
|
1230
|
+
reconcile = await reconcileRework({ workdir, integrationBranch });
|
|
1231
|
+
}
|
|
1232
|
+
catch (err) {
|
|
1233
|
+
reconcile = {
|
|
1234
|
+
status: "halt",
|
|
1235
|
+
integrationRef: `origin/${integrationBranch}`,
|
|
1236
|
+
merged: false,
|
|
1237
|
+
autoResolved: [],
|
|
1238
|
+
conflicted: [`reconcile crashed: ${err.message?.slice(0, 200)}`],
|
|
1239
|
+
};
|
|
1240
|
+
}
|
|
1241
|
+
if (reconcile.status === "halt") {
|
|
1242
|
+
await appendEvent(deps.supabase, taskId, "rework_halt", {
|
|
1243
|
+
phase: "reconcile",
|
|
1244
|
+
pr_number: reworkMeta.pr_number,
|
|
1245
|
+
repo: reworkMeta.repo,
|
|
1246
|
+
branch,
|
|
1247
|
+
integration_ref: reconcile.integrationRef,
|
|
1248
|
+
conflicted: reconcile.conflicted,
|
|
1249
|
+
runner_id: deps.session.runnerId,
|
|
1250
|
+
});
|
|
1251
|
+
// HALT, NOT dead-letter: blocked → operator review, no re-review
|
|
1252
|
+
// requested, no rework cycle consumed.
|
|
1253
|
+
await postState_("blocked", "error_context", {
|
|
1254
|
+
task_id: taskId,
|
|
1255
|
+
phase: "plan",
|
|
1256
|
+
error_class: "rework_integration_conflict",
|
|
1257
|
+
stderr_tail: `rework branch conflicts with ${reconcile.integrationRef} — ` +
|
|
1258
|
+
`needs human merge: ${reconcile.conflicted.join(", ")}`,
|
|
1259
|
+
});
|
|
1260
|
+
await deps.supabase.rpc("transition_task", {
|
|
1261
|
+
p_task_id: taskId,
|
|
1262
|
+
p_new_status: "blocked",
|
|
1263
|
+
});
|
|
1264
|
+
return {
|
|
1265
|
+
taskId,
|
|
1266
|
+
status: "failed",
|
|
1267
|
+
phase: "git",
|
|
1268
|
+
error: `rework reconcile HALT: conflicts in ${reconcile.conflicted.join(", ")}`,
|
|
1269
|
+
};
|
|
1270
|
+
}
|
|
1271
|
+
await appendEvent(deps.supabase, taskId, "rework_reconciled", {
|
|
1272
|
+
phase: "reconcile",
|
|
1273
|
+
pr_number: reworkMeta.pr_number,
|
|
1274
|
+
branch,
|
|
1275
|
+
integration_ref: reconcile.integrationRef,
|
|
1276
|
+
merged: reconcile.merged,
|
|
1277
|
+
auto_resolved: reconcile.autoResolved,
|
|
1278
|
+
runner_id: deps.session.runnerId,
|
|
1279
|
+
});
|
|
1280
|
+
}
|
|
1166
1281
|
// 4. Spawn Claude.
|
|
1167
1282
|
if (cancelled) {
|
|
1168
1283
|
return { taskId, status: "cancelled" };
|
|
@@ -1595,6 +1710,58 @@ export function runTask(taskId, deps) {
|
|
|
1595
1710
|
const reworkIntegrity = await runResolutionIntegrityGate();
|
|
1596
1711
|
if (reworkIntegrity)
|
|
1597
1712
|
return reworkIntegrity;
|
|
1713
|
+
// PA-1: rework branches now run the SAME full local gate (RR-1) as
|
|
1714
|
+
// fresh tasks before the re-push (they previously skipped it, letting
|
|
1715
|
+
// drift the agent couldn't fix re-fail at review/CI and burn the
|
|
1716
|
+
// cycle). On failure HALT (blocked → operator review) instead of
|
|
1717
|
+
// pushing — no review re-requested, no cycle consumed.
|
|
1718
|
+
const reworkGate = await runPreprGate(workdir, resolvedBaseRef).catch((err) => ({
|
|
1719
|
+
ok: false,
|
|
1720
|
+
skipped: false,
|
|
1721
|
+
ran: [],
|
|
1722
|
+
absent: [],
|
|
1723
|
+
failure: {
|
|
1724
|
+
gate: "typecheck",
|
|
1725
|
+
exitCode: null,
|
|
1726
|
+
outputTail: `pre-PR gate runner crashed: ${err.message?.slice(0, 400)}`,
|
|
1727
|
+
},
|
|
1728
|
+
}));
|
|
1729
|
+
if (!reworkGate.skipped && !reworkGate.ok && reworkGate.failure) {
|
|
1730
|
+
const fail = reworkGate.failure;
|
|
1731
|
+
await appendEvent(deps.supabase, taskId, "rework_halt", {
|
|
1732
|
+
phase: "prepr_gate",
|
|
1733
|
+
pr_number: reworkMeta.pr_number,
|
|
1734
|
+
repo: reworkMeta.repo,
|
|
1735
|
+
branch,
|
|
1736
|
+
error_class: "rework_gate_failed",
|
|
1737
|
+
failed_gate: fail.gate,
|
|
1738
|
+
exit_code: fail.exitCode,
|
|
1739
|
+
gates_ran: reworkGate.ran,
|
|
1740
|
+
stderr_tail: fail.outputTail,
|
|
1741
|
+
runner_id: deps.session.runnerId,
|
|
1742
|
+
});
|
|
1743
|
+
// HALT, NOT dead-letter: the drift falls outside what the agent could
|
|
1744
|
+
// fix in-scope, so surface it for operator review without pushing,
|
|
1745
|
+
// re-requesting review, or consuming a rework cycle.
|
|
1746
|
+
await postState_("blocked", "error_context", {
|
|
1747
|
+
task_id: taskId,
|
|
1748
|
+
phase: "review",
|
|
1749
|
+
error_class: "rework_gate_failed",
|
|
1750
|
+
failed_gate: fail.gate,
|
|
1751
|
+
stderr_tail: fail.outputTail,
|
|
1752
|
+
});
|
|
1753
|
+
await deps.supabase.rpc("transition_task", {
|
|
1754
|
+
p_task_id: taskId,
|
|
1755
|
+
p_new_status: "blocked",
|
|
1756
|
+
});
|
|
1757
|
+
return {
|
|
1758
|
+
taskId,
|
|
1759
|
+
status: "failed",
|
|
1760
|
+
phase: "prepr_gate",
|
|
1761
|
+
exitCode: fail.exitCode,
|
|
1762
|
+
error: `rework gate HALT: ${fail.gate} failed — re-push withheld for operator review`,
|
|
1763
|
+
};
|
|
1764
|
+
}
|
|
1598
1765
|
try {
|
|
1599
1766
|
await git.push(workdir, branch);
|
|
1600
1767
|
}
|