@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.
@@ -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
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKvF;;;;;;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;CACrE;AAuBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CA8DtE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,CAY9E"}
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" || input.operatorDecision.action === "override_needs_human") &&
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":"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"}
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"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"}
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 { revertWorkingTreeTo as revertInPlace, type RevertResult } from "@claudexor/workspace";
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAK1B,OAAO,EAAE,mBAAmB,IAAI,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAO/F,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;AAGD,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;AACjF,eAAO,MAAM,aAAa,kBAA6E,CAAC;AAExG,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;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAsH3G"}
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 { rmSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { parseUnifiedDiff, runCapture, runCaptureRaw } from "@claudexor/core";
4
- import { applyPatchProtected, stageAllExcludingArtifacts, statusPorcelainMeaningful } from "@claudexor/workspace";
5
- import { newId } from "@claudexor/util";
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
- // Server-owned in-place revert (restore the live tree to a run's pre-turn
8
- // snapshot, refusing if the tree diverged). Co-located with apply; control-api
9
- // calls it for the revert_run operator decision.
10
- export { revertWorkingTreeTo as revertInPlace } from "@claudexor/workspace";
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(["artifact_only", "apply", "branch", "commit", "pr"]);
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 { mode: "artifact_only", applied: false, detail: `unsupported delivery mode: ${opts.mode}` };
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 { mode: "artifact_only", applied: false, detail: "patch emitted; working tree untouched" };
132
+ return {
133
+ mode: "artifact_only",
134
+ applied: false,
135
+ detail: "patch emitted; working tree untouched",
136
+ };
33
137
  }
34
- // Claudexor's own run/workspace artifacts are not user working-tree state
35
- // (single owner: workspace artifact-paths — the `:(exclude)` pathspec used
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 { mode: opts.mode, applied: false, detail: "working tree is dirty; refusing delivery mutation" };
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 = await applyPatchProtected(repoRoot, patch);
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
- /** Post-apply failure: the patch IS in the tree — restore before reporting. */
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
- const residue = await statusPorcelainMeaningful(repoRoot).catch(() => ["status failed"]);
105
- const treeMutated = residue.length > 0 || cleanupIssue !== null;
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: [why, cleanupIssue, treeMutated ? "RESTORE INCOMPLETE — inspect the tree manually" : "tree restored"].filter(Boolean).join("; "),
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
- try {
115
- await stageAllExcludingArtifacts(repoRoot);
116
- }
117
- catch (err) {
118
- return restoreAppliedTree(`staging failed: ${err instanceof Error ? err.message : String(err)}`);
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
- "-m",
128
- message,
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, ["push", "-u", "origin", branch]);
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 { mode: "pr", applied: false, branch, commit, treeMutated: true, detail: `push failed: ${push.stderr.trim()}; the local branch keeps the committed work` };
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 { mode: "pr", applied: Boolean(prUrl), branch, commit, prUrl, detail: prUrl ? undefined : "gh pr create unavailable" };
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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAClH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,cAAc,WAAW,CAAC;AAE1B,0EAA0E;AAC1E,+EAA+E;AAC/E,iDAAiD;AACjD,OAAO,EAAE,mBAAmB,IAAI,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAE/F,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,IAAc,EAAE,KAAc;IAC7D,0EAA0E;IAC1E,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACnF,CAAC;AAQD,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,KAAa;IAC9D,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAChE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9D,CAAC;AAID,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAc,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAqBxG;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,KAAa,EAAE,IAAoB;IACjF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IACvI,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IACpG,CAAC;IACD,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,+EAA+E;IAC/E,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC7E,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IAClH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;IAE9H,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9F,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3E,MAAM,UAAU,GAAG,UAAU,IAAI,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9E,MAAM,eAAe,GAAG,CAAC,UAAU,IAAI,UAAU,KAAK,MAAM,CAAC;IAE7D,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACjD,MAAM,GAAG,MAAM,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;QAC5G,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,2EAA2E;IAC3E,MAAM,aAAa,GAAG,KAAK,IAA4B,EAAE;QACvD,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,IAAI,GAAG,eAAe;YAC1B,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAC3D,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,0BAA0B,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACtF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1D,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,2BAA2B,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACrF,WAAW,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,MAAM,YAAY,GAAG,MAAM,aAAa,EAAE,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,KAAK;YACd,MAAM;YACN,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,YAAY,KAAK,IAAI;YACpD,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,cAAc,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/E,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEnE,+EAA+E;IAC/E,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAA0B,EAAE;QACvE,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;aAClC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAiB,CAAC,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB;YACtB,CAAC;QACH,CAAC;QACD,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,aAAa,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QACzF,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,KAAK,IAAI,CAAC;QAChE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,KAAK;YACd,MAAM;YACN,WAAW;YACX,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SACzI,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,kBAAkB,CAAC,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,+BAA+B,CAAC;IAChE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE;QACpC,IAAI;QACJ,4BAA4B;QAC5B,IAAI;QACJ,qBAAqB;QACrB,QAAQ;QACR,IAAI;QACJ,OAAO;KACR,CAAC,CAAC;IACH,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,kBAAkB,CAAC,kBAAkB,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAE1E,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5D,CAAC;IAED,KAAK;IACL,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAgB,CAAC,CAAC,CAAC;IAC7E,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,6CAA6C,EAAE,CAAC;IACpK,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChF,IAAI,IAAI,CAAC,UAAU;QAAE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;QAC5D,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC;AAChI,CAAC"}
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.0.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/core": "1.0.1",
20
- "@claudexor/util": "1.0.1",
21
- "@claudexor/policy": "1.0.1",
22
- "@claudexor/schema": "1.0.1",
23
- "@claudexor/workspace": "1.0.1"
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",