opencode-swarm 7.153.0 → 7.153.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/background/pending-delegations.d.ts +7 -0
- package/dist/cli/{config-doctor-7s7xga6f.js → config-doctor-tv0ar88m.js} +2 -2
- package/dist/cli/{core-vkpy14vv.js → core-kmsm50zn.js} +1 -1
- package/dist/cli/{curation-policy-xy7tm4ad.js → curation-policy-twa6agf8.js} +7 -7
- package/dist/cli/{curator-llm-factory-q5cjk7mt.js → curator-llm-factory-dxkhdhwg.js} +30 -30
- package/dist/cli/{curator-6freqnhf.js → curator-wxe863k9.js} +30 -30
- package/dist/cli/{evidence-summary-service-engtgjww.js → evidence-summary-service-9akrdg9t.js} +13 -13
- package/dist/cli/{gate-evidence-6bzzz8kq.js → gate-evidence-bdzqbg2y.js} +7 -7
- package/dist/cli/{guardrail-explain-vsck39dh.js → guardrail-explain-kx9rem51.js} +31 -31
- package/dist/cli/{guardrail-log-0dn8m3k6.js → guardrail-log-zxzyx1de.js} +5 -5
- package/dist/cli/{guardrail-reset-6e2vyfn9.js → guardrail-reset-1mc3st34.js} +30 -30
- package/dist/cli/{hive-promoter-021abs6z.js → hive-promoter-gncwtq0z.js} +30 -30
- package/dist/cli/{index-babtfqa0.js → index-02rbfrab.js} +450 -48
- package/dist/cli/{index-eqh3t8eh.js → index-0azn976d.js} +14 -14
- package/dist/cli/{index-9gjbe4e4.js → index-1gzdnjg9.js} +2 -2
- package/dist/cli/{index-g0m6kypc.js → index-21pt4jwf.js} +1 -1
- package/dist/cli/{index-z4bg1hv8.js → index-2mqmvxac.js} +9 -2
- package/dist/cli/{index-xv881ahz.js → index-3bh4h6ve.js} +108 -8
- package/dist/cli/index-3cegckkq.js +239 -0
- package/dist/cli/{index-hkmgzesw.js → index-3fpqpyp6.js} +2 -2
- package/dist/cli/{index-1yfpw7w0.js → index-3ttktt56.js} +1 -1
- package/dist/cli/{index-x6zy6veh.js → index-4pjkdcgc.js} +1 -1
- package/dist/cli/{index-5w915x8b.js → index-56ejcj07.js} +4 -4
- package/dist/cli/{index-7q56f3se.js → index-5ad8xcv3.js} +2 -2
- package/dist/cli/{index-e2hs0bh7.js → index-5zp4c36c.js} +1 -1
- package/dist/cli/{index-9vdh4kdx.js → index-84m4per1.js} +2 -2
- package/dist/cli/{index-txbd25bc.js → index-891g7hbf.js} +1 -1
- package/dist/cli/{index-3z5jtyan.js → index-a58nmnmz.js} +9 -2
- package/dist/cli/{index-77xy577c.js → index-bw55r5bz.js} +9 -9
- package/dist/cli/{index-80ekaf5b.js → index-ebshrg4x.js} +3 -3
- package/dist/cli/{index-5x67858f.js → index-h06112sh.js} +5 -5
- package/dist/cli/{index-6v77adf7.js → index-h3zhb18p.js} +2 -2
- package/dist/cli/{index-hw49515c.js → index-hhv2pvab.js} +1 -1
- package/dist/cli/{index-95qra69h.js → index-j4f8sz67.js} +4489 -2475
- package/dist/cli/{index-dh1gk5c5.js → index-kenz5bja.js} +32 -32
- package/dist/cli/{index-hexhzq5j.js → index-kvk65qzz.js} +3 -3
- package/dist/cli/{index-0q2mjxp2.js → index-meg33yyv.js} +1 -1
- package/dist/cli/{index-6zkm4p7p.js → index-pk1gbqmq.js} +1 -1
- package/dist/cli/{index-eajfs7v4.js → index-s6b8jgtn.js} +1 -1
- package/dist/cli/{index-k2ydsqs7.js → index-td0jz8xe.js} +4 -4
- package/dist/cli/{index-3z2f1cy8.js → index-vhbds89e.js} +4 -4
- package/dist/cli/{index-qgfnd206.js → index-x3y6zhgj.js} +1 -1
- package/dist/cli/{index-aw492hpn.js → index-x8vw6ap1.js} +58 -41
- package/dist/cli/{index-4gn111h3.js → index-yvepnbyd.js} +5 -5
- package/dist/cli/{index-0n7nm9e8.js → index-zppxpc3y.js} +2 -2
- package/dist/cli/index.js +30 -30
- package/dist/cli/{knowledge-escalator-79zbhpz5.js → knowledge-escalator-gp3mpbqe.js} +12 -12
- package/dist/cli/{knowledge-events-79cak7eb.js → knowledge-events-nvkhtqvn.js} +10 -10
- package/dist/cli/{knowledge-link-40zsr5ja.js → knowledge-link-ge0rddxw.js} +6 -6
- package/dist/cli/{knowledge-store-w29aw5w0.js → knowledge-store-2ngh8xvv.js} +7 -7
- package/dist/cli/{knowledge-validator-qsecnt2d.js → knowledge-validator-4bphyrec.js} +9 -9
- package/dist/cli/{pending-delegations-a2nmssr1.js → pending-delegations-nk78wx7h.js} +4 -4
- package/dist/cli/{pr-subscriptions-7879nq5k.js → pr-subscriptions-dq1f61ye.js} +4 -4
- package/dist/cli/{runner-fbgsxs74.js → runner-n50w1y4w.js} +7 -7
- package/dist/cli/{scan-cursor-1r3pcdqp.js → scan-cursor-c16xtygz.js} +8 -8
- package/dist/cli/{schema-19qsv6fw.js → schema-83tbte2g.js} +1 -1
- package/dist/cli/{scope-persistence-ypcrvqtt.js → scope-persistence-gdbw8xh8.js} +9 -9
- package/dist/cli/{skill-generator-wpp9kpa0.js → skill-generator-gr13xeha.js} +14 -14
- package/dist/cli/{telemetry-52pw5xac.js → telemetry-hh1j99za.js} +1 -1
- package/dist/cli/{worktree-collision-ownership-p31zm5k0.js → worktree-collision-ownership-4drcjymy.js} +15 -10
- package/dist/cli/{worktree-isolation-wcry8qnn.js → worktree-isolation-jjkfg2pg.js} +30 -30
- package/dist/commands/lanes.d.ts +25 -0
- package/dist/commands/registry.d.ts +1 -1
- package/dist/commands/reset-session.d.ts +8 -2
- package/dist/consensus/corpus.d.ts +16 -0
- package/dist/hooks/delegation-gate/worktree-isolation.d.ts +50 -3
- package/dist/hooks/delegation-gate/worktree-provisioning-owner.d.ts +40 -2
- package/dist/hooks/delegation-gate/worktree-recovery-authority.d.ts +201 -0
- package/dist/hooks/init-orphan-recovery.d.ts +5 -1
- package/dist/hooks/knowledge-application-gate.d.ts +10 -1
- package/dist/hooks/knowledge-receipt-ledger.d.ts +1 -1
- package/dist/hooks/trajectory-logger.d.ts +22 -6
- package/dist/hooks/trajectory-step-state.d.ts +43 -2
- package/dist/index.js +557 -552
- package/dist/observability/catalog.d.ts +6 -4
- package/dist/prm/index.d.ts +3 -3
- package/dist/prm/replay.d.ts +29 -2
- package/dist/prm/trajectory-store.d.ts +210 -20
- package/dist/state.d.ts +6 -4
- package/dist/telemetry.d.ts +21 -1
- package/dist/utils/atomic-write.d.ts +2 -0
- package/dist/utils/canonical-root.d.ts +31 -0
- package/dist/workflow/coder-settlement.d.ts +2 -0
- package/dist/worktree/index.d.ts +2 -2
- package/dist/worktree/merge.d.ts +47 -0
- package/package.json +8 -1
- package/dist/cli/index-fxvgaeq4.js +0 -125
- package/dist/cli/worktree-provisioning-owner-cve95q4f.js +0 -22
- package/dist/cli/{curator-drift-2h1d2fnq.js → curator-drift-h57z6tm3.js} +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
autoCommitDirty,
|
|
4
4
|
cleanUntrackedFiles
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-s6b8jgtn.js";
|
|
6
6
|
import {
|
|
7
7
|
isPathWithinDeclaredScope,
|
|
8
8
|
unsafePathTextReason
|
|
@@ -26,13 +26,13 @@ import {
|
|
|
26
26
|
atomicWriteFile,
|
|
27
27
|
taskEvidencePath,
|
|
28
28
|
withTaskEvidenceLock
|
|
29
|
-
} from "./index-
|
|
29
|
+
} from "./index-zppxpc3y.js";
|
|
30
30
|
import {
|
|
31
31
|
assertProjectRoot
|
|
32
|
-
} from "./index-
|
|
32
|
+
} from "./index-891g7hbf.js";
|
|
33
33
|
import {
|
|
34
34
|
telemetry
|
|
35
|
-
} from "./index-
|
|
35
|
+
} from "./index-x8vw6ap1.js";
|
|
36
36
|
import {
|
|
37
37
|
exports_external,
|
|
38
38
|
init_zod
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
// src/gate-evidence.ts
|
|
45
45
|
init_zod();
|
|
46
46
|
import { mkdirSync as mkdirSync3, readFileSync as readFileSync3, realpathSync as realpathSync2 } from "fs";
|
|
47
|
-
import * as
|
|
47
|
+
import * as path4 from "path";
|
|
48
48
|
|
|
49
49
|
// src/evidence/task-gate-requirements.ts
|
|
50
50
|
init_zod();
|
|
@@ -299,12 +299,14 @@ function sanitizeTaskId(taskId) {
|
|
|
299
299
|
}
|
|
300
300
|
|
|
301
301
|
// src/workflow/workflow-wal-file.ts
|
|
302
|
-
import * as
|
|
302
|
+
import * as fs4 from "fs";
|
|
303
303
|
import { mkdir, open } from "fs/promises";
|
|
304
304
|
import { dirname } from "path";
|
|
305
305
|
|
|
306
306
|
// src/worktree/merge.ts
|
|
307
307
|
init_warning_buffer();
|
|
308
|
+
import * as fs3 from "fs";
|
|
309
|
+
import * as path3 from "path";
|
|
308
310
|
|
|
309
311
|
// src/turbo/lean/recovery.ts
|
|
310
312
|
import * as fs2 from "fs";
|
|
@@ -398,9 +400,10 @@ init_git_executable();
|
|
|
398
400
|
var _internals = {
|
|
399
401
|
bunSpawn,
|
|
400
402
|
platform: process.platform,
|
|
401
|
-
sleep: (ms) => new Promise((
|
|
403
|
+
sleep: (ms) => new Promise((resolve3) => setTimeout(resolve3, ms)),
|
|
402
404
|
cleanupOrphanedBranches,
|
|
403
405
|
startupOrphanRecovery,
|
|
406
|
+
captureMergeOverlapSnapshot,
|
|
404
407
|
extractSessionId,
|
|
405
408
|
resolveGitExecutable
|
|
406
409
|
};
|
|
@@ -471,6 +474,285 @@ function parseConflictFiles(output) {
|
|
|
471
474
|
return files;
|
|
472
475
|
}
|
|
473
476
|
var GIT_OBJECT_ID_PATTERN = /^[0-9a-f]{40}$|^[0-9a-f]{64}$/;
|
|
477
|
+
function abortArgsForStrategy(strategy) {
|
|
478
|
+
return strategy === "rebase" ? ["rebase", "--abort"] : strategy === "cherry-pick" ? ["cherry-pick", "--abort"] : ["merge", "--abort"];
|
|
479
|
+
}
|
|
480
|
+
async function finalizeMergeStrategyResult(primaryDir, strategy, result, metadata) {
|
|
481
|
+
if (result.exitCode === 0) {
|
|
482
|
+
return { merged: true, strategy, ...metadata };
|
|
483
|
+
}
|
|
484
|
+
const combinedOutput = `${result.stderr}
|
|
485
|
+
${result.stdout}`;
|
|
486
|
+
const hasConflict = /CONFLICT/i.test(combinedOutput);
|
|
487
|
+
const operationState = await detectInProgressOperation(primaryDir);
|
|
488
|
+
if (hasConflict || operationState.inProgress) {
|
|
489
|
+
const abortResult = await runGit(abortArgsForStrategy(strategy), primaryDir);
|
|
490
|
+
if (abortResult.exitCode !== 0) {
|
|
491
|
+
return {
|
|
492
|
+
error: `${strategy} abort failed after a non-zero merge result: ${abortResult.stderr.trim() || abortResult.stdout.trim() || "unknown abort failure"}`,
|
|
493
|
+
...metadata
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
return {
|
|
497
|
+
conflict: true,
|
|
498
|
+
files: parseConflictFiles(combinedOutput),
|
|
499
|
+
message: result.stderr.trim() || result.stdout.trim() || (operationState.inProgress ? `${strategy} left an in-progress operation; it was aborted` : `${strategy} reported a conflict`),
|
|
500
|
+
...metadata
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
return {
|
|
504
|
+
error: result.stderr.trim() || result.stdout.trim(),
|
|
505
|
+
...metadata
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
async function detectInProgressOperation(primaryDir) {
|
|
509
|
+
for (const marker of [
|
|
510
|
+
"MERGE_HEAD",
|
|
511
|
+
"CHERRY_PICK_HEAD",
|
|
512
|
+
"rebase-merge",
|
|
513
|
+
"rebase-apply",
|
|
514
|
+
"sequencer"
|
|
515
|
+
]) {
|
|
516
|
+
const result = await runGit(["rev-parse", "--git-path", marker], primaryDir);
|
|
517
|
+
if (result.exitCode !== 0)
|
|
518
|
+
continue;
|
|
519
|
+
const rawPath = result.stdout.trim();
|
|
520
|
+
if (!rawPath)
|
|
521
|
+
continue;
|
|
522
|
+
const markerPath = path3.isAbsolute(rawPath) ? rawPath : path3.resolve(primaryDir, rawPath);
|
|
523
|
+
if (fs3.existsSync(markerPath))
|
|
524
|
+
return { inProgress: true };
|
|
525
|
+
}
|
|
526
|
+
return { inProgress: false };
|
|
527
|
+
}
|
|
528
|
+
function currentPathCasePolicy() {
|
|
529
|
+
return _internals.platform === "win32" ? "insensitive" : "sensitive";
|
|
530
|
+
}
|
|
531
|
+
function normalizeGitPath(rawPath, casePolicy) {
|
|
532
|
+
if (rawPath.includes("\x00")) {
|
|
533
|
+
return null;
|
|
534
|
+
}
|
|
535
|
+
const slashNormalized = rawPath.replaceAll("\\", "/");
|
|
536
|
+
const segments = slashNormalized.split("/");
|
|
537
|
+
const normalizedSegments = [];
|
|
538
|
+
const displaySegments = [];
|
|
539
|
+
for (const segment of segments) {
|
|
540
|
+
if (segment.length === 0 || segment === ".") {
|
|
541
|
+
continue;
|
|
542
|
+
}
|
|
543
|
+
if (segment === "..") {
|
|
544
|
+
return null;
|
|
545
|
+
}
|
|
546
|
+
displaySegments.push(segment);
|
|
547
|
+
normalizedSegments.push(casePolicy === "insensitive" ? segment.toLowerCase() : segment);
|
|
548
|
+
}
|
|
549
|
+
if (displaySegments.length === 0) {
|
|
550
|
+
return null;
|
|
551
|
+
}
|
|
552
|
+
return {
|
|
553
|
+
normalized: normalizedSegments.join("/"),
|
|
554
|
+
display: displaySegments.join("/")
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
function collapseOverlapPaths(paths) {
|
|
558
|
+
return Array.from(new Set(paths)).sort((a, b) => a.localeCompare(b));
|
|
559
|
+
}
|
|
560
|
+
function extractRecordPath(record, spacesToSkip) {
|
|
561
|
+
let cursor = 0;
|
|
562
|
+
for (let index = 0;index < spacesToSkip; index++) {
|
|
563
|
+
const next = record.indexOf(" ", cursor);
|
|
564
|
+
if (next === -1) {
|
|
565
|
+
return null;
|
|
566
|
+
}
|
|
567
|
+
cursor = next + 1;
|
|
568
|
+
}
|
|
569
|
+
return record.slice(cursor);
|
|
570
|
+
}
|
|
571
|
+
function parsePrimaryDirtyPaths(rawStatus, casePolicy) {
|
|
572
|
+
const paths = new Map;
|
|
573
|
+
const records = rawStatus.split("\x00");
|
|
574
|
+
for (let index = 0;index < records.length; index++) {
|
|
575
|
+
const record = records[index];
|
|
576
|
+
if (!record) {
|
|
577
|
+
continue;
|
|
578
|
+
}
|
|
579
|
+
switch (record[0]) {
|
|
580
|
+
case "1": {
|
|
581
|
+
const path4 = extractRecordPath(record, 8);
|
|
582
|
+
const normalized = path4 ? normalizeGitPath(path4, casePolicy) : null;
|
|
583
|
+
if (!normalized) {
|
|
584
|
+
return { error: `Malformed porcelain v2 entry: ${record}` };
|
|
585
|
+
}
|
|
586
|
+
paths.set(normalized.normalized, normalized.display);
|
|
587
|
+
break;
|
|
588
|
+
}
|
|
589
|
+
case "2": {
|
|
590
|
+
const path4 = extractRecordPath(record, 9);
|
|
591
|
+
const previousPath = records[++index];
|
|
592
|
+
const normalizedPath = path4 ? normalizeGitPath(path4, casePolicy) : null;
|
|
593
|
+
const normalizedPrevious = previousPath ? normalizeGitPath(previousPath, casePolicy) : null;
|
|
594
|
+
if (!normalizedPath || !normalizedPrevious) {
|
|
595
|
+
return {
|
|
596
|
+
error: `Malformed porcelain v2 rename/copy entry: ${record}`
|
|
597
|
+
};
|
|
598
|
+
}
|
|
599
|
+
paths.set(normalizedPath.normalized, normalizedPath.display);
|
|
600
|
+
paths.set(normalizedPrevious.normalized, normalizedPrevious.display);
|
|
601
|
+
break;
|
|
602
|
+
}
|
|
603
|
+
case "u": {
|
|
604
|
+
const path4 = extractRecordPath(record, 10);
|
|
605
|
+
const normalized = path4 ? normalizeGitPath(path4, casePolicy) : null;
|
|
606
|
+
if (!normalized) {
|
|
607
|
+
return { error: `Malformed porcelain v2 unmerged entry: ${record}` };
|
|
608
|
+
}
|
|
609
|
+
paths.set(normalized.normalized, normalized.display);
|
|
610
|
+
break;
|
|
611
|
+
}
|
|
612
|
+
case "?": {
|
|
613
|
+
const normalized = normalizeGitPath(record.slice(2), casePolicy);
|
|
614
|
+
if (!normalized) {
|
|
615
|
+
return { error: `Malformed porcelain v2 untracked entry: ${record}` };
|
|
616
|
+
}
|
|
617
|
+
paths.set(normalized.normalized, normalized.display);
|
|
618
|
+
break;
|
|
619
|
+
}
|
|
620
|
+
case "!":
|
|
621
|
+
break;
|
|
622
|
+
default:
|
|
623
|
+
return { error: `Malformed porcelain v2 record kind: ${record}` };
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
return { paths };
|
|
627
|
+
}
|
|
628
|
+
function parseIncomingPaths(rawDiff, casePolicy) {
|
|
629
|
+
const paths = new Map;
|
|
630
|
+
const records = rawDiff.split("\x00");
|
|
631
|
+
for (let index = 0;index < records.length; ) {
|
|
632
|
+
const status = records[index++];
|
|
633
|
+
if (!status) {
|
|
634
|
+
continue;
|
|
635
|
+
}
|
|
636
|
+
if (status.startsWith("R") || status.startsWith("C")) {
|
|
637
|
+
const fromPath = records[index++];
|
|
638
|
+
const toPath = records[index++];
|
|
639
|
+
const normalizedFrom = fromPath ? normalizeGitPath(fromPath, casePolicy) : null;
|
|
640
|
+
const normalizedTo = toPath ? normalizeGitPath(toPath, casePolicy) : null;
|
|
641
|
+
if (!normalizedFrom || !normalizedTo) {
|
|
642
|
+
return { error: `Malformed diff rename/copy entry: ${status}` };
|
|
643
|
+
}
|
|
644
|
+
paths.set(normalizedFrom.normalized, normalizedFrom.display);
|
|
645
|
+
paths.set(normalizedTo.normalized, normalizedTo.display);
|
|
646
|
+
continue;
|
|
647
|
+
}
|
|
648
|
+
const path4 = records[index++];
|
|
649
|
+
const normalized = path4 ? normalizeGitPath(path4, casePolicy) : null;
|
|
650
|
+
if (!normalized) {
|
|
651
|
+
return { error: `Malformed diff entry: ${status}` };
|
|
652
|
+
}
|
|
653
|
+
paths.set(normalized.normalized, normalized.display);
|
|
654
|
+
}
|
|
655
|
+
return { paths };
|
|
656
|
+
}
|
|
657
|
+
function pathsOverlap(left, right) {
|
|
658
|
+
return left === right || left.startsWith(`${right}/`) || right.startsWith(`${left}/`);
|
|
659
|
+
}
|
|
660
|
+
function buildOverlapPaths(dirtyPaths, incomingPaths) {
|
|
661
|
+
const collisions = new Set;
|
|
662
|
+
for (const dirtyNormalized of dirtyPaths.keys()) {
|
|
663
|
+
for (const incomingNormalized of incomingPaths.keys()) {
|
|
664
|
+
if (!pathsOverlap(dirtyNormalized, incomingNormalized)) {
|
|
665
|
+
continue;
|
|
666
|
+
}
|
|
667
|
+
collisions.add(dirtyNormalized);
|
|
668
|
+
collisions.add(incomingNormalized);
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
return collapseOverlapPaths(collisions);
|
|
672
|
+
}
|
|
673
|
+
async function readVerifiedGitObjectId(cwd, ref, description) {
|
|
674
|
+
const result = await runGit(["rev-parse", "--verify", `${ref}^0`], cwd);
|
|
675
|
+
const oid = result.stdout.trim();
|
|
676
|
+
if (result.exitCode !== 0 || !GIT_OBJECT_ID_PATTERN.test(oid)) {
|
|
677
|
+
return {
|
|
678
|
+
error: `Unable to verify ${description} for overlap preflight`
|
|
679
|
+
};
|
|
680
|
+
}
|
|
681
|
+
return { oid };
|
|
682
|
+
}
|
|
683
|
+
async function captureMergeOverlapSnapshot(primaryDir, branchName) {
|
|
684
|
+
const casePolicy = currentPathCasePolicy();
|
|
685
|
+
const targetHead = await readVerifiedGitObjectId(primaryDir, "HEAD", "primary HEAD");
|
|
686
|
+
if ("error" in targetHead) {
|
|
687
|
+
return targetHead;
|
|
688
|
+
}
|
|
689
|
+
const laneHead = await readVerifiedGitObjectId(primaryDir, branchName, "lane HEAD");
|
|
690
|
+
if ("error" in laneHead) {
|
|
691
|
+
return laneHead;
|
|
692
|
+
}
|
|
693
|
+
const mergeBaseResult = await runGit(["merge-base", targetHead.oid, laneHead.oid], primaryDir);
|
|
694
|
+
const mergeBase = mergeBaseResult.stdout.trim();
|
|
695
|
+
if (mergeBaseResult.exitCode !== 0 || !GIT_OBJECT_ID_PATTERN.test(mergeBase)) {
|
|
696
|
+
return {
|
|
697
|
+
error: "Unable to determine incoming lane changes for overlap preflight"
|
|
698
|
+
};
|
|
699
|
+
}
|
|
700
|
+
const statusResult = await runGit(["status", "--porcelain=v2", "-z", "--untracked-files=all"], primaryDir);
|
|
701
|
+
if (statusResult.exitCode !== 0) {
|
|
702
|
+
return {
|
|
703
|
+
error: "Unable to inspect primary dirty state for overlap preflight"
|
|
704
|
+
};
|
|
705
|
+
}
|
|
706
|
+
const parsedStatus = parsePrimaryDirtyPaths(statusResult.stdout, casePolicy);
|
|
707
|
+
if ("error" in parsedStatus) {
|
|
708
|
+
return { error: parsedStatus.error };
|
|
709
|
+
}
|
|
710
|
+
const indexResult = await runGit(["ls-files", "--stage", "-z"], primaryDir);
|
|
711
|
+
if (indexResult.exitCode !== 0) {
|
|
712
|
+
return { error: "Unable to inspect primary index for overlap preflight" };
|
|
713
|
+
}
|
|
714
|
+
const incomingResult = await runGit([
|
|
715
|
+
"diff",
|
|
716
|
+
"--name-status",
|
|
717
|
+
"-z",
|
|
718
|
+
"--find-renames",
|
|
719
|
+
`${mergeBase}..${laneHead.oid}`
|
|
720
|
+
], primaryDir);
|
|
721
|
+
if (incomingResult.exitCode !== 0) {
|
|
722
|
+
return {
|
|
723
|
+
error: "Unable to inspect incoming lane paths for overlap preflight"
|
|
724
|
+
};
|
|
725
|
+
}
|
|
726
|
+
const parsedIncoming = parseIncomingPaths(incomingResult.stdout, casePolicy);
|
|
727
|
+
if ("error" in parsedIncoming) {
|
|
728
|
+
return { error: parsedIncoming.error };
|
|
729
|
+
}
|
|
730
|
+
return {
|
|
731
|
+
snapshot: {
|
|
732
|
+
targetHead: targetHead.oid,
|
|
733
|
+
laneHead: laneHead.oid,
|
|
734
|
+
mergeBase,
|
|
735
|
+
indexDigest: indexResult.stdout,
|
|
736
|
+
statusDigest: statusResult.stdout,
|
|
737
|
+
incomingDigest: incomingResult.stdout,
|
|
738
|
+
overlapPaths: buildOverlapPaths(parsedStatus.paths, parsedIncoming.paths)
|
|
739
|
+
}
|
|
740
|
+
};
|
|
741
|
+
}
|
|
742
|
+
async function captureImmutableMergeOverlapSnapshot(primaryDir, coordinates) {
|
|
743
|
+
const snapshot = await captureMergeOverlapSnapshot(primaryDir, coordinates.sourceHeadOid);
|
|
744
|
+
if ("error" in snapshot)
|
|
745
|
+
return snapshot;
|
|
746
|
+
if (snapshot.snapshot.laneHead !== coordinates.sourceHeadOid || snapshot.snapshot.mergeBase !== coordinates.sourceBaseOid) {
|
|
747
|
+
return {
|
|
748
|
+
error: "Immutable recovery coordinates changed during overlap preflight; refusing merge-back"
|
|
749
|
+
};
|
|
750
|
+
}
|
|
751
|
+
return snapshot;
|
|
752
|
+
}
|
|
753
|
+
function sameOverlapSnapshot(left, right) {
|
|
754
|
+
return left.targetHead === right.targetHead && left.laneHead === right.laneHead && left.mergeBase === right.mergeBase && left.indexDigest === right.indexDigest && left.statusDigest === right.statusDigest && left.incomingDigest === right.incomingDigest;
|
|
755
|
+
}
|
|
474
756
|
function getMergeStrategy(config) {
|
|
475
757
|
return config.mergeStrategy ?? config.merge_strategy ?? "merge";
|
|
476
758
|
}
|
|
@@ -495,24 +777,123 @@ async function mergeLaneBranch(primaryDir, branchName, strategy) {
|
|
|
495
777
|
break;
|
|
496
778
|
}
|
|
497
779
|
}
|
|
498
|
-
|
|
499
|
-
|
|
780
|
+
return finalizeMergeStrategyResult(primaryDir, strategy, result, {});
|
|
781
|
+
}
|
|
782
|
+
async function requireAncestorRelation(primaryDir, ancestor, descendant, description) {
|
|
783
|
+
const relation = await runGit(["merge-base", "--is-ancestor", ancestor, descendant], primaryDir);
|
|
784
|
+
if (relation.exitCode === 0) {
|
|
785
|
+
return { ok: true };
|
|
500
786
|
}
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
787
|
+
if (relation.exitCode === 1) {
|
|
788
|
+
return { ok: false, error: description };
|
|
789
|
+
}
|
|
790
|
+
return {
|
|
791
|
+
ok: false,
|
|
792
|
+
error: relation.stderr.trim() || relation.stdout.trim() || `git merge-base exited ${relation.exitCode}`
|
|
793
|
+
};
|
|
794
|
+
}
|
|
795
|
+
async function readOrderedCommitRange(primaryDir, fromExclusive, toInclusive, description) {
|
|
796
|
+
const revList = await runGit([
|
|
797
|
+
"rev-list",
|
|
798
|
+
"--reverse",
|
|
799
|
+
"--topo-order",
|
|
800
|
+
`${fromExclusive}..${toInclusive}`
|
|
801
|
+
], primaryDir);
|
|
802
|
+
if (revList.exitCode !== 0) {
|
|
508
803
|
return {
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
804
|
+
error: revList.stderr.trim() || revList.stdout.trim() || `${description}: git rev-list exited ${revList.exitCode}`
|
|
805
|
+
};
|
|
806
|
+
}
|
|
807
|
+
const commits = revList.stdout.split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
|
|
808
|
+
if (!commits.every((commit) => GIT_OBJECT_ID_PATTERN.test(commit))) {
|
|
809
|
+
return {
|
|
810
|
+
error: `${description}: git rev-list returned a malformed object id`
|
|
811
|
+
};
|
|
812
|
+
}
|
|
813
|
+
return { commits };
|
|
814
|
+
}
|
|
815
|
+
async function recoverMergeBackFromImmutableCoordinates(primaryDir, coordinates) {
|
|
816
|
+
if (!GIT_OBJECT_ID_PATTERN.test(coordinates.sourceBaseOid) || !GIT_OBJECT_ID_PATTERN.test(coordinates.sourceHeadOid) || !GIT_OBJECT_ID_PATTERN.test(coordinates.targetHeadOid)) {
|
|
817
|
+
return {
|
|
818
|
+
error: "Malformed preserved lane recovery coordinates"
|
|
819
|
+
};
|
|
820
|
+
}
|
|
821
|
+
const laneAncestry = await requireAncestorRelation(primaryDir, coordinates.sourceBaseOid, coordinates.sourceHeadOid, "Preserved lane recovery base does not reach the preserved lane head");
|
|
822
|
+
if (!laneAncestry.ok) {
|
|
823
|
+
return { error: laneAncestry.error };
|
|
824
|
+
}
|
|
825
|
+
const targetBaseRelation = await requireAncestorRelation(primaryDir, coordinates.sourceBaseOid, coordinates.targetHeadOid, "Preserved lane recovery base does not reach the captured target head");
|
|
826
|
+
if (!targetBaseRelation.ok) {
|
|
827
|
+
return { error: targetBaseRelation.error };
|
|
828
|
+
}
|
|
829
|
+
const currentTargetRelation = await requireAncestorRelation(primaryDir, coordinates.targetHeadOid, "HEAD", "Current primary HEAD no longer descends from the captured recovery target");
|
|
830
|
+
if (!currentTargetRelation.ok) {
|
|
831
|
+
return { error: currentTargetRelation.error };
|
|
832
|
+
}
|
|
833
|
+
const initialOverlapSnapshot = await captureImmutableMergeOverlapSnapshot(primaryDir, coordinates);
|
|
834
|
+
if ("error" in initialOverlapSnapshot) {
|
|
835
|
+
return { error: initialOverlapSnapshot.error };
|
|
836
|
+
}
|
|
837
|
+
if (initialOverlapSnapshot.snapshot.overlapPaths.length > 0) {
|
|
838
|
+
return {
|
|
839
|
+
error: `Primary checkout has overlapping dirty paths with incoming preserved lane changes: ${initialOverlapSnapshot.snapshot.overlapPaths.join(", ")}`
|
|
840
|
+
};
|
|
841
|
+
}
|
|
842
|
+
const finalOverlapSnapshot = await captureImmutableMergeOverlapSnapshot(primaryDir, coordinates);
|
|
843
|
+
if ("error" in finalOverlapSnapshot) {
|
|
844
|
+
return { error: finalOverlapSnapshot.error };
|
|
845
|
+
}
|
|
846
|
+
if (!sameOverlapSnapshot(initialOverlapSnapshot.snapshot, finalOverlapSnapshot.snapshot)) {
|
|
847
|
+
return {
|
|
848
|
+
error: "Primary or preserved lane state changed during overlap preflight; refusing merge-back"
|
|
849
|
+
};
|
|
850
|
+
}
|
|
851
|
+
if (coordinates.strategy === "merge") {
|
|
852
|
+
return finalizeMergeStrategyResult(primaryDir, "merge", await runGit(["merge", "--no-edit", coordinates.sourceHeadOid], primaryDir), {});
|
|
853
|
+
}
|
|
854
|
+
if (coordinates.strategy === "rebase") {
|
|
855
|
+
return finalizeMergeStrategyResult(primaryDir, "rebase", await runGit([
|
|
856
|
+
"rebase",
|
|
857
|
+
"--onto",
|
|
858
|
+
coordinates.sourceHeadOid,
|
|
859
|
+
coordinates.sourceBaseOid
|
|
860
|
+
], primaryDir), {});
|
|
861
|
+
}
|
|
862
|
+
const sourceCommitOrder = await readOrderedCommitRange(primaryDir, coordinates.sourceBaseOid, coordinates.sourceHeadOid, "Malformed preserved lane recovery coordinates: exact cherry-pick order could not be reconstructed");
|
|
863
|
+
if ("error" in sourceCommitOrder) {
|
|
864
|
+
return { error: sourceCommitOrder.error };
|
|
865
|
+
}
|
|
866
|
+
if (sourceCommitOrder.commits.length === 0) {
|
|
867
|
+
return {
|
|
868
|
+
merged: true,
|
|
869
|
+
strategy: "cherry-pick",
|
|
870
|
+
sourceCommitOrder: []
|
|
871
|
+
};
|
|
872
|
+
}
|
|
873
|
+
const headBefore = await readVerifiedGitObjectId(primaryDir, "HEAD", "current primary HEAD before preserved cherry-pick recovery");
|
|
874
|
+
if ("error" in headBefore) {
|
|
875
|
+
return { error: headBefore.error };
|
|
876
|
+
}
|
|
877
|
+
const cherryPickResult = await finalizeMergeStrategyResult(primaryDir, "cherry-pick", await runGit(["cherry-pick", ...sourceCommitOrder.commits, "-x"], primaryDir), { sourceCommitOrder: sourceCommitOrder.commits });
|
|
878
|
+
if (!("merged" in cherryPickResult) || !cherryPickResult.merged) {
|
|
879
|
+
return cherryPickResult;
|
|
880
|
+
}
|
|
881
|
+
const rewrittenCommitOrder = await readOrderedCommitRange(primaryDir, headBefore.oid, "HEAD", "Unable to reconstruct rewritten preserved cherry-pick order");
|
|
882
|
+
if ("error" in rewrittenCommitOrder) {
|
|
883
|
+
return {
|
|
884
|
+
error: rewrittenCommitOrder.error,
|
|
885
|
+
sourceCommitOrder: sourceCommitOrder.commits
|
|
886
|
+
};
|
|
887
|
+
}
|
|
888
|
+
if (rewrittenCommitOrder.commits.length !== sourceCommitOrder.commits.length) {
|
|
889
|
+
return {
|
|
890
|
+
error: "Unable to reconstruct rewritten preserved cherry-pick order: rewritten commit count did not match the captured lane range",
|
|
891
|
+
sourceCommitOrder: sourceCommitOrder.commits
|
|
512
892
|
};
|
|
513
893
|
}
|
|
514
894
|
return {
|
|
515
|
-
|
|
895
|
+
...cherryPickResult,
|
|
896
|
+
rewrittenCommitOrder: rewrittenCommitOrder.commits
|
|
516
897
|
};
|
|
517
898
|
}
|
|
518
899
|
async function reconcileLandedMerge(primaryDir, provenance) {
|
|
@@ -703,6 +1084,15 @@ async function attemptMergeBackFromDirty(worktreePath, branchName, primaryDir, s
|
|
|
703
1084
|
};
|
|
704
1085
|
}
|
|
705
1086
|
}
|
|
1087
|
+
const initialOverlapSnapshot = await _internals.captureMergeOverlapSnapshot(primaryDir, branchName);
|
|
1088
|
+
if ("error" in initialOverlapSnapshot) {
|
|
1089
|
+
return {
|
|
1090
|
+
failed: true,
|
|
1091
|
+
stage: "pre-merge",
|
|
1092
|
+
message: initialOverlapSnapshot.error,
|
|
1093
|
+
...provenance ? { provenance } : {}
|
|
1094
|
+
};
|
|
1095
|
+
}
|
|
706
1096
|
if (!provenance && (options.operationId || options.onBeforeMerge)) {
|
|
707
1097
|
if (!options.operationId) {
|
|
708
1098
|
return {
|
|
@@ -711,26 +1101,10 @@ async function attemptMergeBackFromDirty(worktreePath, branchName, primaryDir, s
|
|
|
711
1101
|
message: "A pre-merge callback requires a stable operationId"
|
|
712
1102
|
};
|
|
713
1103
|
}
|
|
714
|
-
const source = await captureLaneSourceHead(worktreePath, branchName, primaryDir, sourceWorktreeMissing);
|
|
715
|
-
if (source.sourceWorktreeMissing && !sourceWorktreeMissing) {
|
|
716
|
-
const unrecoverable = await handleSourceWorktreeGone(source.result, worktreePath, branchName, primaryDir, provenance);
|
|
717
|
-
if (unrecoverable)
|
|
718
|
-
return unrecoverable;
|
|
719
|
-
sourceWorktreeMissing = true;
|
|
720
|
-
}
|
|
721
|
-
const sourceHead = source.result;
|
|
722
|
-
const targetHead = await runGit(["rev-parse", "HEAD"], primaryDir);
|
|
723
|
-
if (sourceHead.exitCode !== 0 || targetHead.exitCode !== 0 || !sourceHead.stdout.trim() || !targetHead.stdout.trim()) {
|
|
724
|
-
return {
|
|
725
|
-
failed: true,
|
|
726
|
-
stage: "pre-merge",
|
|
727
|
-
message: "Unable to capture source and target HEAD before merge-back"
|
|
728
|
-
};
|
|
729
|
-
}
|
|
730
1104
|
provenance = {
|
|
731
1105
|
operationId: options.operationId,
|
|
732
|
-
sourceHead:
|
|
733
|
-
targetHeadBefore:
|
|
1106
|
+
sourceHead: initialOverlapSnapshot.snapshot.laneHead,
|
|
1107
|
+
targetHeadBefore: initialOverlapSnapshot.snapshot.targetHead,
|
|
734
1108
|
branchName,
|
|
735
1109
|
strategy
|
|
736
1110
|
};
|
|
@@ -747,6 +1121,34 @@ async function attemptMergeBackFromDirty(worktreePath, branchName, primaryDir, s
|
|
|
747
1121
|
}
|
|
748
1122
|
}
|
|
749
1123
|
}
|
|
1124
|
+
const finalOverlapSnapshot = await _internals.captureMergeOverlapSnapshot(primaryDir, branchName);
|
|
1125
|
+
if ("error" in finalOverlapSnapshot) {
|
|
1126
|
+
return {
|
|
1127
|
+
failed: true,
|
|
1128
|
+
stage: "pre-merge",
|
|
1129
|
+
message: finalOverlapSnapshot.error,
|
|
1130
|
+
...provenance ? { provenance } : {}
|
|
1131
|
+
};
|
|
1132
|
+
}
|
|
1133
|
+
if (finalOverlapSnapshot.snapshot.overlapPaths.length > 0) {
|
|
1134
|
+
return {
|
|
1135
|
+
partial: true,
|
|
1136
|
+
stage: "pre-merge-overlap",
|
|
1137
|
+
autoCommitted,
|
|
1138
|
+
cleaned,
|
|
1139
|
+
message: `Primary checkout has overlapping dirty paths with incoming lane changes: ${finalOverlapSnapshot.snapshot.overlapPaths.join(", ")}`,
|
|
1140
|
+
conflictFiles: finalOverlapSnapshot.snapshot.overlapPaths,
|
|
1141
|
+
...provenance ? { provenance } : {}
|
|
1142
|
+
};
|
|
1143
|
+
}
|
|
1144
|
+
if (!sameOverlapSnapshot(initialOverlapSnapshot.snapshot, finalOverlapSnapshot.snapshot)) {
|
|
1145
|
+
return {
|
|
1146
|
+
failed: true,
|
|
1147
|
+
stage: "pre-merge",
|
|
1148
|
+
message: "Primary or lane state changed during overlap preflight; refusing merge-back",
|
|
1149
|
+
...provenance ? { provenance } : {}
|
|
1150
|
+
};
|
|
1151
|
+
}
|
|
750
1152
|
const mergeResult = await mergeLaneBranch(primaryDir, branchName, strategy);
|
|
751
1153
|
if ("merged" in mergeResult && mergeResult.merged) {
|
|
752
1154
|
return {
|
|
@@ -972,9 +1374,9 @@ var SMALL_WORKFLOW_WAL_MAX_BYTES = 1024 * 1024;
|
|
|
972
1374
|
var CHUNK_BYTES = 64 * 1024;
|
|
973
1375
|
var _internals2 = {
|
|
974
1376
|
openFile: open,
|
|
975
|
-
openFileSync:
|
|
976
|
-
readFileSync:
|
|
977
|
-
closeFileSync:
|
|
1377
|
+
openFileSync: fs4.openSync,
|
|
1378
|
+
readFileSync: fs4.readSync,
|
|
1379
|
+
closeFileSync: fs4.closeSync
|
|
978
1380
|
};
|
|
979
1381
|
function maxBytesFor(kind) {
|
|
980
1382
|
return kind === "coder-settlement" ? CODER_SETTLEMENT_MAX_BYTES : SMALL_WORKFLOW_WAL_MAX_BYTES;
|
|
@@ -1474,18 +1876,18 @@ function reduceTaskWorkflowSnapshot(current, event, context) {
|
|
|
1474
1876
|
}
|
|
1475
1877
|
}
|
|
1476
1878
|
function getEvidenceDir(directory) {
|
|
1477
|
-
const swarmDir =
|
|
1478
|
-
const evidenceDir =
|
|
1879
|
+
const swarmDir = path4.resolve(directory, ".swarm");
|
|
1880
|
+
const evidenceDir = path4.join(swarmDir, "evidence");
|
|
1479
1881
|
mkdirSync3(evidenceDir, { recursive: true });
|
|
1480
1882
|
let resolvedSwarmDir;
|
|
1481
1883
|
let resolvedEvidenceDir;
|
|
1482
1884
|
try {
|
|
1483
|
-
resolvedSwarmDir =
|
|
1484
|
-
resolvedEvidenceDir =
|
|
1885
|
+
resolvedSwarmDir = path4.normalize(realpathSync2(swarmDir));
|
|
1886
|
+
resolvedEvidenceDir = path4.normalize(realpathSync2(evidenceDir));
|
|
1485
1887
|
} catch (error) {
|
|
1486
1888
|
throw new Error(`Unable to resolve evidence directory: ${error.message}`);
|
|
1487
1889
|
}
|
|
1488
|
-
const swarmPrefix = `${resolvedSwarmDir}${
|
|
1890
|
+
const swarmPrefix = `${resolvedSwarmDir}${path4.sep}`;
|
|
1489
1891
|
const withinSwarmBoundary = process.platform === "win32" ? resolvedEvidenceDir.toLowerCase().startsWith(swarmPrefix.toLowerCase()) : resolvedEvidenceDir.startsWith(swarmPrefix);
|
|
1490
1892
|
if (!withinSwarmBoundary) {
|
|
1491
1893
|
throw new Error(`Evidence path escapes .swarm boundary: ${resolvedEvidenceDir}`);
|
|
@@ -1614,7 +2016,7 @@ async function withTaskEvidenceTransaction(directory, taskId, agent, callback) {
|
|
|
1614
2016
|
assertValidTaskId(taskId);
|
|
1615
2017
|
return withTaskEvidenceLock(directory, taskId, agent, async () => {
|
|
1616
2018
|
const resolvedEvidenceDir = getEvidenceDir(directory);
|
|
1617
|
-
const evidencePath =
|
|
2019
|
+
const evidencePath = path4.join(resolvedEvidenceDir, `${taskId}.json`);
|
|
1618
2020
|
let current = null;
|
|
1619
2021
|
try {
|
|
1620
2022
|
current = readExisting(evidencePath, taskId);
|
|
@@ -1719,4 +2121,4 @@ function compareTaskWorkflowStateRank(left, right) {
|
|
|
1719
2121
|
return WORKFLOW_STATE_RANK[left] - WORKFLOW_STATE_RANK[right];
|
|
1720
2122
|
}
|
|
1721
2123
|
|
|
1722
|
-
export { isStrictTaskId, sanitizeTaskId, listRecoveryRecords, GitBinaryMissingError, GitSpawnCwdError, isGitBinaryMissing, isSpawnCwdMissing, isSpawnCwdUnreadable, _internals, SOURCE_WORKTREE_GONE_STAGE, SOURCE_WORKTREE_UNCERTAIN_STAGE, getMergeStrategy, reconcileLandedMerge, postMergeCleanup, pruneStaleWorktreeMetadata, attemptMergeBackFromDirty, cleanupOrphanedBranches, startupOrphanRecovery, readWorkflowWalFile, writeWorkflowWalFile, TASK_WORKFLOW_SCHEMA_MARKER, assertTaskEvidenceWriteAllowed, parseTaskEvidence, DEFAULT_REQUIRED_GATES, isValidTaskId, getTaskWorkflowSnapshot, reduceTaskWorkflowSnapshot, deriveRequiredGates, expandRequiredGates, transitionTaskWorkflowEvidence, withTaskEvidenceTransaction, recordGateEvidence, recordAgentDispatch, readTaskEvidence, readTaskEvidenceRaw, hasPassedAllGates, compareTaskWorkflowStateRank };
|
|
2124
|
+
export { isStrictTaskId, sanitizeTaskId, listRecoveryRecords, GitBinaryMissingError, GitSpawnCwdError, isGitBinaryMissing, isSpawnCwdMissing, isSpawnCwdUnreadable, _internals, SOURCE_WORKTREE_GONE_STAGE, SOURCE_WORKTREE_UNCERTAIN_STAGE, getMergeStrategy, recoverMergeBackFromImmutableCoordinates, reconcileLandedMerge, postMergeCleanup, pruneStaleWorktreeMetadata, attemptMergeBackFromDirty, cleanupOrphanedBranches, startupOrphanRecovery, readWorkflowWalFile, writeWorkflowWalFile, TASK_WORKFLOW_SCHEMA_MARKER, assertTaskEvidenceWriteAllowed, parseTaskEvidence, DEFAULT_REQUIRED_GATES, isValidTaskId, getTaskWorkflowSnapshot, reduceTaskWorkflowSnapshot, deriveRequiredGates, expandRequiredGates, transitionTaskWorkflowEvidence, withTaskEvidenceTransaction, recordGateEvidence, recordAgentDispatch, readTaskEvidence, readTaskEvidenceRaw, hasPassedAllGates, compareTaskWorkflowStateRank };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
import {
|
|
3
|
+
loadDatabaseCtor
|
|
4
|
+
} from "./index-134d35c1.js";
|
|
2
5
|
import {
|
|
3
6
|
EvaluationRunV1Schema,
|
|
4
7
|
GateAuditResultV1Schema,
|
|
5
8
|
getProtectedEvaluationRunIds
|
|
6
|
-
} from "./index-
|
|
7
|
-
import {
|
|
8
|
-
loadDatabaseCtor
|
|
9
|
-
} from "./index-134d35c1.js";
|
|
9
|
+
} from "./index-1gzdnjg9.js";
|
|
10
10
|
import {
|
|
11
11
|
readEffectiveSpecSync
|
|
12
12
|
} from "./index-9ss2m4rs.js";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
readTaskEvidence,
|
|
24
24
|
readTaskEvidenceRaw,
|
|
25
25
|
sanitizeTaskId
|
|
26
|
-
} from "./index-
|
|
26
|
+
} from "./index-02rbfrab.js";
|
|
27
27
|
import {
|
|
28
28
|
LedgerStaleWriterError,
|
|
29
29
|
appendLedgerEvent,
|
|
@@ -43,10 +43,10 @@ import {
|
|
|
43
43
|
replayFromLedgerWithStatus,
|
|
44
44
|
takeSnapshotEvent,
|
|
45
45
|
takeSnapshotWithRetry
|
|
46
|
-
} from "./index-
|
|
46
|
+
} from "./index-ebshrg4x.js";
|
|
47
47
|
import {
|
|
48
48
|
appendCoreEventSync
|
|
49
|
-
} from "./index-
|
|
49
|
+
} from "./index-pk1gbqmq.js";
|
|
50
50
|
import {
|
|
51
51
|
init_executor,
|
|
52
52
|
isUntrustedEnvKey,
|
|
@@ -68,7 +68,7 @@ import {
|
|
|
68
68
|
} from "./index-r3mvsbtq.js";
|
|
69
69
|
import {
|
|
70
70
|
PlanSchema
|
|
71
|
-
} from "./index-
|
|
71
|
+
} from "./index-5zp4c36c.js";
|
|
72
72
|
import {
|
|
73
73
|
GIT_BINARY_ENV_VAR,
|
|
74
74
|
describeGitResolution,
|
|
@@ -79,18 +79,18 @@ import {
|
|
|
79
79
|
assertProjectRoot,
|
|
80
80
|
tryAcquireLock,
|
|
81
81
|
withEvidenceLock
|
|
82
|
-
} from "./index-
|
|
82
|
+
} from "./index-891g7hbf.js";
|
|
83
|
+
import {
|
|
84
|
+
invalidateCachedArtifact,
|
|
85
|
+
readCachedParsedFile
|
|
86
|
+
} from "./index-ed5ykebp.js";
|
|
83
87
|
import {
|
|
84
88
|
emit
|
|
85
|
-
} from "./index-
|
|
89
|
+
} from "./index-x8vw6ap1.js";
|
|
86
90
|
import {
|
|
87
91
|
ZodError,
|
|
88
92
|
init_zod
|
|
89
93
|
} from "./index-bpmtbmy9.js";
|
|
90
|
-
import {
|
|
91
|
-
invalidateCachedArtifact,
|
|
92
|
-
readCachedParsedFile
|
|
93
|
-
} from "./index-ed5ykebp.js";
|
|
94
94
|
import {
|
|
95
95
|
criticalWarn,
|
|
96
96
|
error,
|