@claudexor/delivery 1.0.1 → 2.1.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/final-verifier.d.ts +18 -0
- package/dist/final-verifier.d.ts.map +1 -0
- package/dist/final-verifier.js +101 -0
- package/dist/final-verifier.js.map +1 -0
- package/dist/gate.d.ts +4 -1
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +6 -3
- package/dist/gate.js.map +1 -1
- package/dist/index.d.ts +18 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +239 -53
- package/dist/index.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FinalVerifyRecord } from "@claudexor/schema";
|
|
2
|
+
import { type GateSpec } from "@claudexor/review";
|
|
3
|
+
export interface VerifiablePatch {
|
|
4
|
+
baseSha?: string;
|
|
5
|
+
diff: string;
|
|
6
|
+
}
|
|
7
|
+
export interface VerifyEventLog {
|
|
8
|
+
emit(type: "gate.completed", payload: Record<string, unknown>): unknown;
|
|
9
|
+
}
|
|
10
|
+
export declare function finalVerifyBlocks(finalVerify: FinalVerifyRecord | null): boolean;
|
|
11
|
+
export declare function blockedDecisionOverride(evidenceFacts: string[], finalVerify: FinalVerifyRecord | null): {
|
|
12
|
+
status: "blocked";
|
|
13
|
+
outcome: "blocked";
|
|
14
|
+
apply_recommendation: "human_review";
|
|
15
|
+
evidence_facts: string[];
|
|
16
|
+
};
|
|
17
|
+
export declare function finalVerifyPatch(execRoot: string, candidate: VerifiablePatch, specs: GateSpec[], log: VerifyEventLog): Promise<FinalVerifyRecord>;
|
|
18
|
+
//# sourceMappingURL=final-verifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"final-verifier.d.ts","sourceRoot":"","sources":["../src/final-verifier.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,KAAK,QAAQ,EAAyB,MAAM,mBAAmB,CAAC;AASzE,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CACzE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAMhF;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,EAAE,iBAAiB,GAAG,IAAI,GACpC;IACD,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;IACnB,oBAAoB,EAAE,cAAc,CAAC;IACrC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAYA;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,QAAQ,EAAE,EACjB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAsE5B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/** Delivery-owned FinalVerifier (INV-115). */
|
|
2
|
+
import { mkdtempSync, rmSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { FinalVerifyRecord } from "@claudexor/schema";
|
|
6
|
+
import { gatesPassed, runGates } from "@claudexor/review";
|
|
7
|
+
import { applyPatchProtected, branchDelete, worktreeAdd, worktreeRemove, } from "@claudexor/workspace";
|
|
8
|
+
import { newId, redactSecrets } from "@claudexor/util";
|
|
9
|
+
export function finalVerifyBlocks(finalVerify) {
|
|
10
|
+
return (finalVerify !== null &&
|
|
11
|
+
finalVerify.attempted &&
|
|
12
|
+
(finalVerify.applied_cleanly !== true || finalVerify.gates_passed === false));
|
|
13
|
+
}
|
|
14
|
+
export function blockedDecisionOverride(evidenceFacts, finalVerify) {
|
|
15
|
+
const fact = finalVerifyBlocks(finalVerify)
|
|
16
|
+
? finalVerify?.applied_cleanly !== true
|
|
17
|
+
? `final verify failed: ${finalVerify?.reason ?? "patch did not survive a fresh tree at its base"}`
|
|
18
|
+
: "final verify failed: deterministic gates failed on the fresh verify tree"
|
|
19
|
+
: "reviewer escalated blocking NEEDS_HUMAN findings; a typed operator decision is required";
|
|
20
|
+
return {
|
|
21
|
+
status: "blocked",
|
|
22
|
+
outcome: "blocked",
|
|
23
|
+
apply_recommendation: "human_review",
|
|
24
|
+
evidence_facts: [...evidenceFacts, fact],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export async function finalVerifyPatch(execRoot, candidate, specs, log) {
|
|
28
|
+
const started = Date.now();
|
|
29
|
+
const done = (fields) => FinalVerifyRecord.parse({
|
|
30
|
+
attempted: true,
|
|
31
|
+
base_sha: candidate.baseSha ?? null,
|
|
32
|
+
duration_ms: Date.now() - started,
|
|
33
|
+
...fields,
|
|
34
|
+
});
|
|
35
|
+
if (!candidate.baseSha) {
|
|
36
|
+
return FinalVerifyRecord.parse({
|
|
37
|
+
attempted: true,
|
|
38
|
+
applied_cleanly: null,
|
|
39
|
+
reason: "no base sha recorded for the patch; cannot verify against a clean base",
|
|
40
|
+
duration_ms: Date.now() - started,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const verifyBase = mkdtempSync(join(tmpdir(), "claudexor-verify-"));
|
|
44
|
+
const verifyTree = join(verifyBase, "tree");
|
|
45
|
+
const branch = `claudexor/verify-${newId("fv").slice(3)}`;
|
|
46
|
+
try {
|
|
47
|
+
await worktreeAdd(execRoot, verifyTree, branch, candidate.baseSha);
|
|
48
|
+
const applied = await applyPatchProtected(verifyTree, candidate.diff);
|
|
49
|
+
if (!applied.ok) {
|
|
50
|
+
return done({
|
|
51
|
+
applied_cleanly: false,
|
|
52
|
+
reason: applied.detail ?? "apply failed on the verify tree",
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (specs.length === 0) {
|
|
56
|
+
return done({
|
|
57
|
+
applied_cleanly: true,
|
|
58
|
+
gates_passed: null,
|
|
59
|
+
reason: "no deterministic gates configured",
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const gates = await runGates(specs, { cwd: verifyTree });
|
|
63
|
+
log.emit("gate.completed", {
|
|
64
|
+
attempt_id: "final-verify",
|
|
65
|
+
gates: gates.map((gate) => ({
|
|
66
|
+
id: gate.id,
|
|
67
|
+
status: gate.status,
|
|
68
|
+
exit_code: gate.exit_code,
|
|
69
|
+
duration_ms: gate.duration_ms,
|
|
70
|
+
})),
|
|
71
|
+
passed: gatesPassed(gates),
|
|
72
|
+
});
|
|
73
|
+
return done({
|
|
74
|
+
applied_cleanly: true,
|
|
75
|
+
gates_passed: gatesPassed(gates),
|
|
76
|
+
gates: gates.map((gate) => ({ id: gate.id, status: gate.status })),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
return done({
|
|
81
|
+
applied_cleanly: null,
|
|
82
|
+
reason: redactSecrets(error instanceof Error ? error.message : String(error)),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
try {
|
|
87
|
+
await worktreeRemove(execRoot, verifyTree);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Best-effort cleanup; startup GC owns crash debris.
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
await branchDelete(execRoot, branch);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Best-effort cleanup; startup GC owns crash debris.
|
|
97
|
+
}
|
|
98
|
+
rmSync(verifyBase, { recursive: true, force: true });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=final-verifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"final-verifier.js","sourceRoot":"","sources":["../src/final-verifier.ts"],"names":[],"mappings":"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"}
|
package/dist/gate.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ApplyEligibility, DecisionRecord, WorkProduct } from "@claudexor/schema";
|
|
1
|
+
import type { ApplyEligibility, DecisionRecord, FinalVerifyRecord, WorkProduct } from "@claudexor/schema";
|
|
2
2
|
/**
|
|
3
3
|
* Single owner of the apply gate (CLAUDEXOR_BIBLE §11): apply is allowed only
|
|
4
4
|
* for successful runs with a successful decision record and a patch
|
|
@@ -26,6 +26,9 @@ export interface ApplyGateInput {
|
|
|
26
26
|
action: string;
|
|
27
27
|
patch_sha256?: string;
|
|
28
28
|
} | null;
|
|
29
|
+
/** Fresh verifier result for this delivery attempt. When omitted, the
|
|
30
|
+
* persisted decision result is used for read-only eligibility projection. */
|
|
31
|
+
finalVerify?: FinalVerifyRecord | null;
|
|
29
32
|
}
|
|
30
33
|
export declare function validateApplyGate(input: ApplyGateInput): string | null;
|
|
31
34
|
/**
|
package/dist/gate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAK3B;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpE;iFAC6E;IAC7E,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACxC;AAuBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAmEtE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,CAY9E"}
|
package/dist/gate.js
CHANGED
|
@@ -33,7 +33,8 @@ export function validateApplyGate(input) {
|
|
|
33
33
|
const blockedEvidence = input.state === "blocked" || (input.state == null && input.decision?.status === "blocked");
|
|
34
34
|
const override = blockedEvidence &&
|
|
35
35
|
input.operatorDecision &&
|
|
36
|
-
(input.operatorDecision.action === "accept_risk" ||
|
|
36
|
+
(input.operatorDecision.action === "accept_risk" ||
|
|
37
|
+
input.operatorDecision.action === "override_needs_human") &&
|
|
37
38
|
typeof input.operatorDecision.patch_sha256 === "string" &&
|
|
38
39
|
input.operatorDecision.patch_sha256 === sha256(input.patch);
|
|
39
40
|
if (input.state && input.state !== "succeeded" && !override) {
|
|
@@ -48,8 +49,10 @@ export function validateApplyGate(input) {
|
|
|
48
49
|
// fresh tree at its own base is factually undeliverable — no operator
|
|
49
50
|
// override can change that. Failed verify GATES may be overridden through
|
|
50
51
|
// the same accept_risk path as any blocked run.
|
|
51
|
-
const fv = input.decision.final_verify;
|
|
52
|
-
if (fv?.attempted)
|
|
52
|
+
const fv = input.finalVerify !== undefined ? input.finalVerify : input.decision.final_verify;
|
|
53
|
+
if (!fv?.attempted)
|
|
54
|
+
return "fresh final verify is required before apply";
|
|
55
|
+
if (fv.attempted) {
|
|
53
56
|
if (fv.applied_cleanly === false) {
|
|
54
57
|
return `final verify: the patch did not apply onto a fresh tree at its base (${fv.reason ?? "conflict"}); re-run the task`;
|
|
55
58
|
}
|
package/dist/gate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA+BzC;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,kHAAkH,CAAC;QAC5H,KAAK,SAAS,CAAC;QACf,KAAK,gBAAgB;YACnB,OAAO,2IAA2I,CAAC;QACrJ,KAAK,OAAO;YACV,OAAO,2CAA2C,CAAC;QACrD;YACE,OAAO,gDAAgD,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,0EAA0E;IAC1E,sEAAsE;IACtE,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,2EAA2E;IAC3E,sDAAsD;IACtD,MAAM,eAAe,GACnB,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;IAC7F,MAAM,QAAQ,GACZ,eAAe;QACf,KAAK,CAAC,gBAAgB;QACtB,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,aAAa;YAC9C,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,sBAAsB,CAAC;QAC3D,OAAO,KAAK,CAAC,gBAAgB,CAAC,YAAY,KAAK,QAAQ;QACvD,KAAK,CAAC,gBAAgB,CAAC,YAAY,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5D,OAAO,uCAAuC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,0CAA0C,CAAC;IACvE,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrD,OAAO,sBAAsB,KAAK,CAAC,QAAQ,CAAC,MAAM,qBAAqB,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7G,CAAC;IACD,wEAAwE;IACxE,sEAAsE;IACtE,0EAA0E;IAC1E,gDAAgD;IAChD,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC7F,IAAI,CAAC,EAAE,EAAE,SAAS;QAAE,OAAO,6CAA6C,CAAC;IACzE,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,EAAE,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;YACjC,OAAO,wEAAwE,EAAE,CAAC,MAAM,IAAI,UAAU,oBAAoB,CAAC;QAC7H,CAAC;QACD,yEAAyE;QACzE,yEAAyE;QACzE,iDAAiD;QACjD,IAAI,EAAE,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7C,OAAO,qFAAqF,EAAE,CAAC,MAAM,IAAI,6BAA6B,mEAAmE,CAAC;QAC5M,CAAC;QACD,IAAI,EAAE,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,mIAAmI,CAAC;QAC7I,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,WAAW;QAAE,OAAO,uCAAuC,CAAC;IACvE,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO;QACpC,OAAO,qBAAqB,KAAK,CAAC,WAAW,CAAC,IAAI,8BAA8B,CAAC;IACnF,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QACvD,OAAO,kDAAkD,CAAC;IAC5D,IAAI,QAAQ,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,OAAO,8DAA8D,CAAC;IACxE,IAAI,CAAC,KAAK,CAAC,gBAAgB;QAAE,OAAO,iDAAiD,CAAC;IACtF,IAAI,CAAC;QACH,IAAI,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YAChF,OAAO,uEAAuE,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,yDAAyD,CAAC;IACnE,CAAC;IACD,wEAAwE;IACxE,yDAAyD;IACzD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO,uCAAuC,KAAK,CAAC,MAAM,EAAE,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAqB;IAC1D,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC;IAC5D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IACvE,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,KAAK;QACL,MAAM;QACN,cAAc,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,SAAS,UAAU,CAAC,KAAa;IAC/B,6DAA6D;IAC7D,yEAAyE;IACzE,oEAAoE;IACpE,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC,CAAC,OAAO;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,CAAC,OAAO;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import type { FinalVerifyRecord } from "@claudexor/schema";
|
|
2
|
+
import type { GateSpec } from "@claudexor/review";
|
|
3
|
+
import { type VerifyEventLog } from "./final-verifier.js";
|
|
1
4
|
export * from "./gate.js";
|
|
2
|
-
export
|
|
5
|
+
export * from "./final-verifier.js";
|
|
6
|
+
/** GC-independent in-place revert from the external immutable anchor. */
|
|
7
|
+
export declare function revertInPlaceFromAnchor(repo: string, anchorId: string): Promise<import("@claudexor/workspace").RevertResult>;
|
|
3
8
|
export interface ApplyResult {
|
|
4
9
|
ok: boolean;
|
|
5
10
|
code: number | null;
|
|
@@ -26,6 +31,18 @@ export interface DeliverResult {
|
|
|
26
31
|
* `applied:false, treeMutated:false` guarantees the tree is untouched. */
|
|
27
32
|
treeMutated?: boolean;
|
|
28
33
|
}
|
|
34
|
+
export interface VerifiedDeliverResult extends DeliverResult {
|
|
35
|
+
finalVerify: FinalVerifyRecord;
|
|
36
|
+
targetPreimageSha: string;
|
|
37
|
+
refused?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** One mutation entry point for manual/thread/race delivery. It verifies the
|
|
40
|
+
* patch on a fresh worktree bound to the current target preimage, lets the
|
|
41
|
+
* caller project its semantic apply policy, rechecks the preimage, then
|
|
42
|
+
* performs exactly one protected mutation. */
|
|
43
|
+
export declare function verifyAndDeliver(repoRoot: string, patch: string, options: DeliverOptions & {
|
|
44
|
+
protectedApply?: boolean;
|
|
45
|
+
}, gates?: GateSpec[], authorize?: (finalVerify: FinalVerifyRecord) => string | null, log?: VerifyEventLog): Promise<VerifiedDeliverResult>;
|
|
29
46
|
/**
|
|
30
47
|
* Deliver a WorkProduct patch according to a mutation mode. `pr` requires `gh`
|
|
31
48
|
* and a configured remote. Commit identity is set per-command (no global config
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE/F,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AAyBpC,yEAAyE;AACzE,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wDAI3E;AAOD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kEAAkE;AAClE,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAGtF;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;AACjF,eAAO,MAAM,aAAa,kBAMxB,CAAC;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;8EAC0E;IAC1E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,WAAW,EAAE,iBAAiB,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;8CAG8C;AAC9C,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,GAAG;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,EACtD,KAAK,GAAE,QAAQ,EAAO,EACtB,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,MAAM,GAAG,IAAI,EAC7D,GAAG,GAAE,cAA0C,GAC9C,OAAO,CAAC,qBAAqB,CAAC,CAIhC;AAuED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,CAAC,CAExB"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { runCapture, runCaptureRaw } from "@claudexor/core";
|
|
2
|
+
import { realpath } from "node:fs/promises";
|
|
3
|
+
import { applyPatchAndIndexProtected, applyPatchProtected, materializePatchTree, readRevertAnchor, revertWorkingTreePatch, reversePatchAndIndexProtected, revParse, snapshotTree, statusPorcelainMeaningful, } from "@claudexor/workspace";
|
|
4
|
+
import { newId, redactSecrets } from "@claudexor/util";
|
|
5
|
+
import { finalVerifyBlocks, finalVerifyPatch } from "./final-verifier.js";
|
|
6
6
|
export * from "./gate.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export * from "./final-verifier.js";
|
|
8
|
+
const repositoryMutationTails = new Map();
|
|
9
|
+
async function withRepositoryMutationLease(repoRoot, work) {
|
|
10
|
+
const key = await realpath(repoRoot);
|
|
11
|
+
const previous = repositoryMutationTails.get(key) ?? Promise.resolve();
|
|
12
|
+
let release;
|
|
13
|
+
const held = new Promise((resolve) => {
|
|
14
|
+
release = resolve;
|
|
15
|
+
});
|
|
16
|
+
const tail = previous.catch(() => undefined).then(() => held);
|
|
17
|
+
repositoryMutationTails.set(key, tail);
|
|
18
|
+
await previous.catch(() => undefined);
|
|
19
|
+
try {
|
|
20
|
+
return await work();
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
release();
|
|
24
|
+
if (repositoryMutationTails.get(key) === tail)
|
|
25
|
+
repositoryMutationTails.delete(key);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** GC-independent in-place revert from the external immutable anchor. */
|
|
29
|
+
export async function revertInPlaceFromAnchor(repo, anchorId) {
|
|
30
|
+
return withRepositoryMutationLease(repo, () => revertWorkingTreePatch(repo, readRevertAnchor(repo, anchorId)));
|
|
31
|
+
}
|
|
11
32
|
async function git(repo, args, input) {
|
|
12
33
|
// Raw capture: the patch rides stdin already; stdout may carry diffs too.
|
|
13
34
|
return runCaptureRaw("git", ["-C", repo, ...args], { timeoutMs: 60_000, input });
|
|
@@ -17,7 +38,79 @@ export async function checkPatch(repoRoot, patch) {
|
|
|
17
38
|
const r = await git(repoRoot, ["apply", "--check", "-"], patch);
|
|
18
39
|
return { ok: r.code === 0, code: r.code, stderr: r.stderr };
|
|
19
40
|
}
|
|
20
|
-
export const DELIVER_MODES = new Set([
|
|
41
|
+
export const DELIVER_MODES = new Set([
|
|
42
|
+
"artifact_only",
|
|
43
|
+
"apply",
|
|
44
|
+
"branch",
|
|
45
|
+
"commit",
|
|
46
|
+
"pr",
|
|
47
|
+
]);
|
|
48
|
+
/** One mutation entry point for manual/thread/race delivery. It verifies the
|
|
49
|
+
* patch on a fresh worktree bound to the current target preimage, lets the
|
|
50
|
+
* caller project its semantic apply policy, rechecks the preimage, then
|
|
51
|
+
* performs exactly one protected mutation. */
|
|
52
|
+
export async function verifyAndDeliver(repoRoot, patch, options, gates = [], authorize, log = { emit: () => undefined }) {
|
|
53
|
+
return withRepositoryMutationLease(repoRoot, () => verifyAndDeliverUnlocked(repoRoot, patch, options, gates, authorize, log));
|
|
54
|
+
}
|
|
55
|
+
async function verifyAndDeliverUnlocked(repoRoot, patch, options, gates, authorize, log) {
|
|
56
|
+
const targetPreimageSha = await snapshotTree(repoRoot);
|
|
57
|
+
const targetPreimageTree = await revParse(repoRoot, `${targetPreimageSha}^{tree}`);
|
|
58
|
+
const finalVerify = await finalVerifyPatch(repoRoot, { baseSha: targetPreimageSha, diff: patch }, gates, log);
|
|
59
|
+
let refusal;
|
|
60
|
+
if (finalVerify.applied_cleanly === false) {
|
|
61
|
+
// Mechanical applicability is never waivable, even when a caller owns the
|
|
62
|
+
// semantic risk decision for failed gates or verifier infrastructure.
|
|
63
|
+
refusal = finalVerify.reason ?? "final verify failed: patch did not apply cleanly";
|
|
64
|
+
}
|
|
65
|
+
else if (authorize) {
|
|
66
|
+
// A supplied policy owns the semantic verdict. In particular, null is an
|
|
67
|
+
// affirmative allow after a hash-bound accept_risk decision; do not replace
|
|
68
|
+
// it via nullish coalescing with the default refusal.
|
|
69
|
+
refusal = authorize(finalVerify);
|
|
70
|
+
if (refusal === "")
|
|
71
|
+
refusal = "delivery authorization returned an empty refusal";
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
refusal = finalVerifyBlocks(finalVerify) ? "final verify failed" : null;
|
|
75
|
+
}
|
|
76
|
+
if (refusal) {
|
|
77
|
+
return {
|
|
78
|
+
mode: options.mode,
|
|
79
|
+
applied: false,
|
|
80
|
+
treeMutated: false,
|
|
81
|
+
detail: refusal,
|
|
82
|
+
finalVerify,
|
|
83
|
+
targetPreimageSha,
|
|
84
|
+
refused: true,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const observedSha = await snapshotTree(repoRoot);
|
|
88
|
+
const observedTree = await revParse(repoRoot, `${observedSha}^{tree}`);
|
|
89
|
+
if (observedTree !== targetPreimageTree) {
|
|
90
|
+
return {
|
|
91
|
+
mode: options.mode,
|
|
92
|
+
applied: false,
|
|
93
|
+
treeMutated: false,
|
|
94
|
+
detail: "target changed after final verify; refusing stale delivery",
|
|
95
|
+
finalVerify,
|
|
96
|
+
targetPreimageSha,
|
|
97
|
+
refused: true,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (options.protectedApply) {
|
|
101
|
+
const applied = await applyPatchProtected(repoRoot, patch);
|
|
102
|
+
return {
|
|
103
|
+
mode: "apply",
|
|
104
|
+
applied: applied.ok,
|
|
105
|
+
treeMutated: applied.treeMutated,
|
|
106
|
+
detail: applied.detail,
|
|
107
|
+
finalVerify,
|
|
108
|
+
targetPreimageSha,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const delivered = await deliverUnlocked(repoRoot, patch, options);
|
|
112
|
+
return { ...delivered, finalVerify, targetPreimageSha };
|
|
113
|
+
}
|
|
21
114
|
/**
|
|
22
115
|
* Deliver a WorkProduct patch according to a mutation mode. `pr` requires `gh`
|
|
23
116
|
* and a configured remote. Commit identity is set per-command (no global config
|
|
@@ -26,33 +119,58 @@ export const DELIVER_MODES = new Set(["artifact_only", "apply", "branch", "commi
|
|
|
26
119
|
* itself fails — never a clean-looking result over a conflicted tree.
|
|
27
120
|
*/
|
|
28
121
|
export async function deliver(repoRoot, patch, opts) {
|
|
122
|
+
return withRepositoryMutationLease(repoRoot, () => deliverUnlocked(repoRoot, patch, opts));
|
|
123
|
+
}
|
|
124
|
+
async function deliverUnlocked(repoRoot, patch, opts) {
|
|
29
125
|
if (!DELIVER_MODES.has(opts.mode))
|
|
30
|
-
return {
|
|
126
|
+
return {
|
|
127
|
+
mode: "artifact_only",
|
|
128
|
+
applied: false,
|
|
129
|
+
detail: `unsupported delivery mode: ${opts.mode}`,
|
|
130
|
+
};
|
|
31
131
|
if (opts.mode === "artifact_only") {
|
|
32
|
-
return {
|
|
132
|
+
return {
|
|
133
|
+
mode: "artifact_only",
|
|
134
|
+
applied: false,
|
|
135
|
+
detail: "patch emitted; working tree untouched",
|
|
136
|
+
};
|
|
33
137
|
}
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
// here before HARD-ERRORS when the project gitignores `.claudexor`, which
|
|
37
|
-
// Claudexor-initialized repos DO, and it missed `.claudexor-review-evidence`).
|
|
138
|
+
// Runtime is external in v2. Every path reported by the repository,
|
|
139
|
+
// including `.claudexor*`, is user state and blocks a clean-tree mutation.
|
|
38
140
|
const dirty = await statusPorcelainMeaningful(repoRoot).catch((err) => {
|
|
39
141
|
return err instanceof Error ? err : new Error(String(err));
|
|
40
142
|
});
|
|
41
143
|
if (dirty instanceof Error)
|
|
42
144
|
return { mode: opts.mode, applied: false, detail: `status failed: ${dirty.message}` };
|
|
43
145
|
if (dirty.length > 0)
|
|
44
|
-
return {
|
|
146
|
+
return {
|
|
147
|
+
mode: opts.mode,
|
|
148
|
+
applied: false,
|
|
149
|
+
detail: "working tree is dirty; refusing delivery mutation",
|
|
150
|
+
};
|
|
45
151
|
// Detached-HEAD safe restore point: `--abbrev-ref HEAD` on a detached head
|
|
46
152
|
// yields the literal "HEAD" (useless for checkout-restore); capture the sha.
|
|
47
153
|
const branchName = (await git(repoRoot, ["rev-parse", "--abbrev-ref", "HEAD"])).stdout.trim();
|
|
48
154
|
const headSha = (await git(repoRoot, ["rev-parse", "HEAD"])).stdout.trim();
|
|
49
155
|
const restoreRef = branchName && branchName !== "HEAD" ? branchName : headSha;
|
|
50
156
|
const restoreDetached = !branchName || branchName === "HEAD";
|
|
157
|
+
let expectedTree;
|
|
158
|
+
try {
|
|
159
|
+
expectedTree = await materializePatchTree(repoRoot, headSha, patch);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
return {
|
|
163
|
+
mode: opts.mode,
|
|
164
|
+
applied: false,
|
|
165
|
+
treeMutated: false,
|
|
166
|
+
detail: `candidate materialization failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
51
169
|
let branch = opts.branch;
|
|
52
170
|
let onNewBranch = false;
|
|
53
171
|
if (opts.mode === "branch" || opts.mode === "pr") {
|
|
54
172
|
branch = branch ?? `claudexor/${newId("wp")}`;
|
|
55
|
-
const cb = await git(repoRoot, ["checkout", "-b", branch]);
|
|
173
|
+
const cb = await git(repoRoot, ["-c", "core.hooksPath=/dev/null", "checkout", "-b", branch]);
|
|
56
174
|
if (cb.code !== 0)
|
|
57
175
|
return { mode: opts.mode, applied: false, detail: `branch failed: ${cb.stderr.trim()}` };
|
|
58
176
|
onNewBranch = true;
|
|
@@ -62,8 +180,8 @@ export async function deliver(repoRoot, patch, opts) {
|
|
|
62
180
|
if (!onNewBranch || !branch)
|
|
63
181
|
return null;
|
|
64
182
|
const back = restoreDetached
|
|
65
|
-
? await git(repoRoot, ["checkout", "--detach", restoreRef])
|
|
66
|
-
: await git(repoRoot, ["checkout", restoreRef]);
|
|
183
|
+
? await git(repoRoot, ["-c", "core.hooksPath=/dev/null", "checkout", "--detach", restoreRef])
|
|
184
|
+
: await git(repoRoot, ["-c", "core.hooksPath=/dev/null", "checkout", restoreRef]);
|
|
67
185
|
if (back.code !== 0)
|
|
68
186
|
return `failed to leave branch ${branch}: ${back.stderr.trim()}`;
|
|
69
187
|
const del = await git(repoRoot, ["branch", "-D", branch]);
|
|
@@ -72,7 +190,9 @@ export async function deliver(repoRoot, patch, opts) {
|
|
|
72
190
|
onNewBranch = false;
|
|
73
191
|
return null;
|
|
74
192
|
};
|
|
75
|
-
const ap =
|
|
193
|
+
const ap = opts.mode === "apply"
|
|
194
|
+
? await applyPatchProtected(repoRoot, patch)
|
|
195
|
+
: await applyPatchAndIndexProtected(repoRoot, patch);
|
|
76
196
|
if (!ap.ok) {
|
|
77
197
|
const cleanupIssue = await cleanupBranch();
|
|
78
198
|
return {
|
|
@@ -85,37 +205,47 @@ export async function deliver(repoRoot, patch, opts) {
|
|
|
85
205
|
}
|
|
86
206
|
if (opts.mode === "apply")
|
|
87
207
|
return { mode: "apply", applied: true };
|
|
88
|
-
|
|
89
|
-
const restoreAppliedTree = async (why) => {
|
|
90
|
-
const added = parseUnifiedDiff(patch)
|
|
91
|
-
.files.filter((f) => f.added && f.newPath)
|
|
92
|
-
.map((f) => f.newPath);
|
|
93
|
-
for (const rel of added) {
|
|
94
|
-
try {
|
|
95
|
-
rmSync(join(repoRoot, rel), { force: true });
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
/* verified below */
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
await git(repoRoot, ["reset", "--quiet"]);
|
|
102
|
-
await git(repoRoot, ["checkout", "--", "."]);
|
|
208
|
+
if (!patch.trim()) {
|
|
103
209
|
const cleanupIssue = await cleanupBranch();
|
|
104
|
-
|
|
105
|
-
|
|
210
|
+
return {
|
|
211
|
+
mode: opts.mode,
|
|
212
|
+
applied: false,
|
|
213
|
+
branch,
|
|
214
|
+
treeMutated: cleanupIssue !== null,
|
|
215
|
+
detail: ["empty patch; no commit created", cleanupIssue].filter(Boolean).join("; "),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Post-apply failure: compensate only by reverse-applying the exact patch to
|
|
220
|
+
* worktree+index. A concurrent overlapping edit blocks compensation and is
|
|
221
|
+
* left intact with `treeMutated:true`; broad reset/checkout rollback is
|
|
222
|
+
* forbidden because it can erase user state.
|
|
223
|
+
*/
|
|
224
|
+
const restoreAppliedTree = async (why) => {
|
|
225
|
+
const reverse = await reversePatchAndIndexProtected(repoRoot, patch);
|
|
226
|
+
const cleanupIssue = reverse.ok ? await cleanupBranch() : null;
|
|
227
|
+
const treeMutated = !reverse.ok || cleanupIssue !== null;
|
|
106
228
|
return {
|
|
107
229
|
mode: opts.mode,
|
|
108
230
|
applied: false,
|
|
109
231
|
branch,
|
|
110
232
|
treeMutated,
|
|
111
|
-
detail: [
|
|
233
|
+
detail: [
|
|
234
|
+
why,
|
|
235
|
+
reverse.ok ? "exact patch postimage removed" : reverse.detail,
|
|
236
|
+
cleanupIssue,
|
|
237
|
+
treeMutated ? "RECOVERY REQUIRED — user state was not overwritten" : null,
|
|
238
|
+
]
|
|
239
|
+
.filter(Boolean)
|
|
240
|
+
.join("; "),
|
|
112
241
|
};
|
|
113
242
|
};
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
243
|
+
const stagedTree = (await git(repoRoot, ["write-tree"])).stdout.trim();
|
|
244
|
+
const observedHeadBeforeCommit = (await git(repoRoot, ["rev-parse", "HEAD"])).stdout.trim();
|
|
245
|
+
if (stagedTree !== expectedTree || observedHeadBeforeCommit !== headSha) {
|
|
246
|
+
return restoreAppliedTree(stagedTree !== expectedTree
|
|
247
|
+
? "live index contains state outside the exact candidate tree"
|
|
248
|
+
: "target HEAD changed before commit");
|
|
119
249
|
}
|
|
120
250
|
const message = opts.message ?? "claudexor: apply work product";
|
|
121
251
|
const commitRes = await git(repoRoot, [
|
|
@@ -123,21 +253,65 @@ export async function deliver(repoRoot, patch, opts) {
|
|
|
123
253
|
"user.email=claudexor@local",
|
|
124
254
|
"-c",
|
|
125
255
|
"user.name=claudexor",
|
|
126
|
-
"commit",
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
256
|
+
"commit-tree",
|
|
257
|
+
expectedTree,
|
|
258
|
+
"-p",
|
|
259
|
+
headSha,
|
|
260
|
+
"-F",
|
|
261
|
+
"-",
|
|
262
|
+
], `${message}\n`);
|
|
130
263
|
if (commitRes.code !== 0) {
|
|
131
|
-
return restoreAppliedTree(`commit failed: ${commitRes.stderr.trim()}`);
|
|
264
|
+
return restoreAppliedTree(`commit object creation failed: ${commitRes.stderr.trim()}`);
|
|
265
|
+
}
|
|
266
|
+
const commit = commitRes.stdout.trim();
|
|
267
|
+
if (!/^[0-9a-f]{40,64}$/.test(commit)) {
|
|
268
|
+
return restoreAppliedTree("commit object creation returned an invalid object id");
|
|
269
|
+
}
|
|
270
|
+
const symbolicRef = await git(repoRoot, ["symbolic-ref", "-q", "HEAD"]);
|
|
271
|
+
const targetRef = symbolicRef.code === 0 ? symbolicRef.stdout.trim() : "HEAD";
|
|
272
|
+
const updateArgs = targetRef === "HEAD"
|
|
273
|
+
? ["update-ref", "--no-deref", "HEAD", commit, headSha]
|
|
274
|
+
: ["update-ref", targetRef, commit, headSha];
|
|
275
|
+
const update = await git(repoRoot, updateArgs);
|
|
276
|
+
if (update.code !== 0) {
|
|
277
|
+
return restoreAppliedTree(`target ref changed before commit: ${update.stderr.trim()}`);
|
|
278
|
+
}
|
|
279
|
+
const committedHead = (await git(repoRoot, ["rev-parse", "HEAD"])).stdout.trim();
|
|
280
|
+
const committedTree = (await git(repoRoot, ["rev-parse", `${commit}^{tree}`])).stdout.trim();
|
|
281
|
+
if (committedHead !== commit || committedTree !== expectedTree) {
|
|
282
|
+
// The CAS update itself succeeded, so reversing the index/worktree would
|
|
283
|
+
// create a false clean state over an authoritative commit. Surface the
|
|
284
|
+
// divergence for recovery and leave every byte intact.
|
|
285
|
+
return {
|
|
286
|
+
mode: opts.mode,
|
|
287
|
+
applied: false,
|
|
288
|
+
branch,
|
|
289
|
+
commit,
|
|
290
|
+
treeMutated: true,
|
|
291
|
+
detail: "commit ref advanced but current HEAD no longer identifies the exact candidate; recovery required",
|
|
292
|
+
};
|
|
132
293
|
}
|
|
133
|
-
const commit = (await git(repoRoot, ["rev-parse", "HEAD"])).stdout.trim();
|
|
134
294
|
if (opts.mode === "commit" || opts.mode === "branch") {
|
|
135
295
|
return { mode: opts.mode, applied: true, branch, commit };
|
|
136
296
|
}
|
|
137
297
|
// pr
|
|
138
|
-
const push = await git(repoRoot, [
|
|
298
|
+
const push = await git(repoRoot, [
|
|
299
|
+
"-c",
|
|
300
|
+
"core.hooksPath=/dev/null",
|
|
301
|
+
"push",
|
|
302
|
+
"-u",
|
|
303
|
+
"origin",
|
|
304
|
+
branch,
|
|
305
|
+
]);
|
|
139
306
|
if (push.code !== 0) {
|
|
140
|
-
return {
|
|
307
|
+
return {
|
|
308
|
+
mode: "pr",
|
|
309
|
+
applied: false,
|
|
310
|
+
branch,
|
|
311
|
+
commit,
|
|
312
|
+
treeMutated: true,
|
|
313
|
+
detail: `push failed: ${push.stderr.trim()}; the local branch keeps the committed work`,
|
|
314
|
+
};
|
|
141
315
|
}
|
|
142
316
|
const ghArgs = ["pr", "create", "--head", branch, "--title", message];
|
|
143
317
|
if (opts.prBodyFile)
|
|
@@ -146,6 +320,18 @@ export async function deliver(repoRoot, patch, opts) {
|
|
|
146
320
|
ghArgs.push("--body", "Created by Claudexor.");
|
|
147
321
|
const pr = await runCapture("gh", ghArgs, { cwd: repoRoot, timeoutMs: 60_000 }).catch(() => null);
|
|
148
322
|
const prUrl = pr && pr.code === 0 ? pr.stdout.trim() : undefined;
|
|
149
|
-
return {
|
|
323
|
+
return {
|
|
324
|
+
mode: "pr",
|
|
325
|
+
// The commit and remote branch are already durable at this point. A PR
|
|
326
|
+
// creation failure is a partial delivery, not a clean refusal that callers
|
|
327
|
+
// may safely retry as if nothing happened.
|
|
328
|
+
applied: true,
|
|
329
|
+
branch,
|
|
330
|
+
commit,
|
|
331
|
+
prUrl,
|
|
332
|
+
detail: prUrl
|
|
333
|
+
? undefined
|
|
334
|
+
: `branch pushed; PR was not opened${pr ? `: ${redactSecrets(pr.stderr.trim()) || `gh exited ${pr.code}`}` : ": gh unavailable"}`,
|
|
335
|
+
};
|
|
150
336
|
}
|
|
151
337
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudexor/delivery",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Apply a WorkProduct patch: dry-run / apply / branch / commit / pr.",
|
|
6
6
|
"type": "module",
|
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@claudexor/
|
|
20
|
-
"@claudexor/
|
|
21
|
-
"@claudexor/policy": "1.
|
|
22
|
-
"@claudexor/schema": "1.
|
|
23
|
-
"@claudexor/
|
|
19
|
+
"@claudexor/util": "2.1.2",
|
|
20
|
+
"@claudexor/core": "2.1.2",
|
|
21
|
+
"@claudexor/policy": "2.1.2",
|
|
22
|
+
"@claudexor/schema": "2.1.2",
|
|
23
|
+
"@claudexor/review": "2.1.2",
|
|
24
|
+
"@claudexor/workspace": "2.1.2"
|
|
24
25
|
},
|
|
25
26
|
"repository": {
|
|
26
27
|
"type": "git",
|