@claudexor/control-api 3.20.1 → 3.22.0

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.
Files changed (44) hide show
  1. package/dist/artifact-serve-routes.d.ts.map +1 -1
  2. package/dist/artifact-serve-routes.js +12 -1
  3. package/dist/artifact-serve-routes.js.map +1 -1
  4. package/dist/daemon-server.d.ts.map +1 -1
  5. package/dist/daemon-server.js +32 -53
  6. package/dist/daemon-server.js.map +1 -1
  7. package/dist/retention.d.ts.map +1 -1
  8. package/dist/retention.js +4 -1
  9. package/dist/retention.js.map +1 -1
  10. package/dist/run-apply-routes.d.ts.map +1 -1
  11. package/dist/run-apply-routes.js +6 -10
  12. package/dist/run-apply-routes.js.map +1 -1
  13. package/dist/run-audit.d.ts +5 -0
  14. package/dist/run-audit.d.ts.map +1 -0
  15. package/dist/run-audit.js +18 -0
  16. package/dist/run-audit.js.map +1 -0
  17. package/dist/run-continuation-projection.d.ts +7 -0
  18. package/dist/run-continuation-projection.d.ts.map +1 -0
  19. package/dist/run-continuation-projection.js +135 -0
  20. package/dist/run-continuation-projection.js.map +1 -0
  21. package/dist/run-continuation-start.d.ts +13 -0
  22. package/dist/run-continuation-start.d.ts.map +1 -0
  23. package/dist/run-continuation-start.js +61 -0
  24. package/dist/run-continuation-start.js.map +1 -0
  25. package/dist/run-delivery-state.d.ts.map +1 -1
  26. package/dist/run-delivery-state.js +6 -0
  27. package/dist/run-delivery-state.js.map +1 -1
  28. package/dist/run-discard.d.ts +10 -0
  29. package/dist/run-discard.d.ts.map +1 -0
  30. package/dist/run-discard.js +47 -0
  31. package/dist/run-discard.js.map +1 -0
  32. package/dist/run-exact-patch.d.ts +25 -0
  33. package/dist/run-exact-patch.d.ts.map +1 -0
  34. package/dist/run-exact-patch.js +55 -0
  35. package/dist/run-exact-patch.js.map +1 -0
  36. package/dist/run-list-fingerprint.d.ts.map +1 -1
  37. package/dist/run-list-fingerprint.js +7 -0
  38. package/dist/run-list-fingerprint.js.map +1 -1
  39. package/dist/run-retry-routes.js +10 -1
  40. package/dist/run-retry-routes.js.map +1 -1
  41. package/dist/run-start.d.ts.map +1 -1
  42. package/dist/run-start.js +14 -3
  43. package/dist/run-start.js.map +1 -1
  44. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"run-apply-routes.js","sourceRoot":"","sources":["../src/run-apply-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-apply-routes.js","sourceRoot":"","sources":["../src/run-apply-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { RunEventType } from "@claudexor/schema";
2
+ import type { DaemonRunRecord } from "./run-record.js";
3
+ /** Append a control-verb audit event to a run's own event log (best-effort). */
4
+ export declare function appendRunAuditEvent(rec: DaemonRunRecord, type: RunEventType, payload: Record<string, unknown>): void;
5
+ //# sourceMappingURL=run-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-audit.d.ts","sourceRoot":"","sources":["../src/run-audit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAiBN"}
@@ -0,0 +1,18 @@
1
+ import { join } from "node:path";
2
+ import { appendRunEvent } from "@claudexor/event-log";
3
+ /** Append a control-verb audit event to a run's own event log (best-effort). */
4
+ export function appendRunAuditEvent(rec, type, payload) {
5
+ if (!rec.runDir)
6
+ return;
7
+ try {
8
+ // Single-counter invariant: while the run is active its EventLog owns the
9
+ // seq space, so audit records MUST route through it (appendRunEvent does;
10
+ // file-tail stamping only applies once the run is terminal). A tail-read
11
+ // here would duplicate ids and break SSE Last-Event-ID resume.
12
+ appendRunEvent(join(rec.runDir, "events.jsonl"), rec.runId ?? rec.id, rec.taskId ?? "unknown", type, payload);
13
+ }
14
+ catch {
15
+ /* audit append must not change control behavior */
16
+ }
17
+ }
18
+ //# sourceMappingURL=run-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-audit.js","sourceRoot":"","sources":["../src/run-audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,gFAAgF;AAChF,MAAM,UAAU,mBAAmB,CACjC,GAAoB,EACpB,IAAkB,EAClB,OAAgC;IAEhC,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO;IACxB,IAAI,CAAC;QACH,0EAA0E;QAC1E,0EAA0E;QAC1E,yEAAyE;QACzE,+DAA+D;QAC/D,cAAc,CACZ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAChC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,EACnB,GAAG,CAAC,MAAM,IAAI,SAAS,EACvB,IAAI,EACJ,OAAO,CACR,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;IACrD,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type ControlRunSummary } from "@claudexor/schema";
2
+ import { type DaemonRunRecord } from "./run-record.js";
3
+ type Continuation = Pick<ControlRunSummary, "continueFrom" | "resumable" | "retainedEnvelope" | "continuity">;
4
+ /** The chain facts of one run; `events` (run detail) adds the per-try receipts. */
5
+ export declare function continuationSummary(rec: DaemonRunRecord, events?: readonly Record<string, unknown>[]): Continuation;
6
+ export {};
7
+ //# sourceMappingURL=run-continuation-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-continuation-projection.d.ts","sourceRoot":"","sources":["../src/run-continuation-projection.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAgCrE,KAAK,YAAY,GAAG,IAAI,CACtB,iBAAiB,EACjB,cAAc,GAAG,WAAW,GAAG,kBAAkB,GAAG,YAAY,CACjE,CAAC;AAEF,mFAAmF;AACnF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,MAAM,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC1C,YAAY,CA0Fd"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Run-status projection of the `continueFrom` chain: the terminal `resumable`
3
+ * block (INTERFACES §2), the per-try `continuity` receipts (§3), the
4
+ * predecessor link and a kept envelope's disk use. Projected verbatim from
5
+ * engine artifacts; surfaces never re-derive these facts.
6
+ *
7
+ * `resumable` comes from `final/resumable.yaml` (written by the engine at its
8
+ * terminal) with the CURRENT workspace overlaid: the envelope a run keeps
9
+ * (custody `retained`) or, once a successor adopted it or the run was
10
+ * discarded, none. A run the daemon found running at its restart never reached
11
+ * an engine terminal: its block is derived here from the durable session
12
+ * capsule and custody record (cause `host_restart`), so it can be continued.
13
+ */
14
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
15
+ import { join } from "node:path";
16
+ import { readRunEvents } from "@claudexor/event-log";
17
+ import { RunContinuityReceipt, RunResumable, SessionCapsule, } from "@claudexor/schema";
18
+ import { readContinuationSources, retainedEnvelopeInChain, retainedEnvelopeOfRun, } from "@claudexor/workspace";
19
+ import { safeReadStructuredArtifact } from "./run-artifact-read.js";
20
+ import { paramsRecord } from "./run-record.js";
21
+ import { TERMINAL_STATES } from "./sse-shared.js";
22
+ /** Per-attempt capsule file the engine writes when a native session starts (orchestrator `session-capsule.ts`). */
23
+ const SESSION_CAPSULE_FILE = "session-capsule.json";
24
+ function newestCapsule(runDir) {
25
+ const attemptsDir = join(runDir, "attempts");
26
+ if (!existsSync(attemptsDir))
27
+ return null;
28
+ let newest = null;
29
+ for (const attempt of readdirSync(attemptsDir)) {
30
+ try {
31
+ const parsed = SessionCapsule.safeParse(JSON.parse(readFileSync(join(attemptsDir, attempt, SESSION_CAPSULE_FILE), "utf8")));
32
+ if (parsed.success && (parsed.data.mtimeMs ?? 0) >= (newest?.mtimeMs ?? 0))
33
+ newest = parsed.data;
34
+ }
35
+ catch {
36
+ // No capsule in this attempt (or a torn one): nothing to resume there.
37
+ }
38
+ }
39
+ return newest;
40
+ }
41
+ function inPlaceRoot(params) {
42
+ const execution = params["execution"];
43
+ if (execution?.["isolation"] !== "live")
44
+ return null;
45
+ const scope = params["scope"];
46
+ const root = execution["workspaceRoot"] ?? scope?.["root"];
47
+ return typeof root === "string" ? root : null;
48
+ }
49
+ /** The chain facts of one run; `events` (run detail) adds the per-try receipts. */
50
+ export function continuationSummary(rec, events) {
51
+ const params = paramsRecord(rec);
52
+ const continueFrom = typeof params["continueFrom"] === "string" ? params["continueFrom"] : null;
53
+ const continuity = events?.flatMap((event) => {
54
+ if (event["type"] !== "run.continuity")
55
+ return [];
56
+ const payload = event["payload"];
57
+ const receipt = RunContinuityReceipt.safeParse(payload?.["receipt"]);
58
+ return receipt.success ? [receipt.data] : [];
59
+ });
60
+ const base = { continueFrom, ...(continuity ? { continuity } : {}) };
61
+ if (!rec.runDir || !TERMINAL_STATES.has(rec.state)) {
62
+ return { ...base, resumable: null, retainedEnvelope: null };
63
+ }
64
+ const kept = retainedEnvelopeOfRun(rec.runDir, rec.runId ?? rec.id);
65
+ const retainedEnvelope = kept
66
+ ? {
67
+ root: kept.envelope.worktree_path,
68
+ bytes: kept.bytes,
69
+ retainedAt: kept.retained_at ?? "",
70
+ cause: kept.cause,
71
+ }
72
+ : null;
73
+ const sources = readContinuationSources(rec.runDir);
74
+ const available = kept ?? retainedEnvelopeInChain(sources);
75
+ const keptWorkspace = available
76
+ ? { kind: "retained_envelope", root: available.envelope.worktree_path }
77
+ : null;
78
+ let written = safeReadStructuredArtifact(rec, "final/resumable.yaml", RunResumable);
79
+ let capsule = newestCapsule(rec.runDir);
80
+ let inherited = false;
81
+ let inheritedState = null;
82
+ if (!written && !capsule && rec.state !== "succeeded") {
83
+ for (const source of sources) {
84
+ const ancestor = { ...source, id: source.runId };
85
+ written = safeReadStructuredArtifact(ancestor, "final/resumable.yaml", RunResumable);
86
+ capsule = newestCapsule(source.runDir);
87
+ inherited =
88
+ !!written ||
89
+ !!capsule ||
90
+ ["answer.md", "retained-output.md", "patch.diff"].some((file) => existsSync(join(source.runDir, "final", file))) ||
91
+ readRunEvents(join(source.runDir, "events.jsonl")).events.some((event) => event.type === "harness.event" &&
92
+ ["tool_call", "file_change", "message"].includes(String(event.payload["type"])));
93
+ if (inherited) {
94
+ inheritedState = source.state;
95
+ break;
96
+ }
97
+ }
98
+ }
99
+ if (written) {
100
+ const workspace = keptWorkspace ??
101
+ (written.workspace.kind === "retained_envelope"
102
+ ? { kind: "none", root: null }
103
+ : written.workspace);
104
+ return { ...base, resumable: { ...written, workspace }, retainedEnvelope };
105
+ }
106
+ const restarted = rec.state === "interrupted" && !existsSync(join(rec.runDir, "final", "run_facts.yaml"));
107
+ if (!restarted && !kept && !inherited)
108
+ return { ...base, resumable: null, retainedEnvelope };
109
+ const root = inPlaceRoot(params);
110
+ return {
111
+ ...base,
112
+ retainedEnvelope,
113
+ resumable: {
114
+ cause: restarted
115
+ ? "host_restart"
116
+ : (available?.cause ?? (inheritedState === "interrupted" ? "host_restart" : "other")),
117
+ resetsAt: null,
118
+ limitWindow: null,
119
+ limitEvidence: null,
120
+ // A fresh session briefed by the evidence index is always available; the
121
+ // native session when its capsule survived.
122
+ carriers: capsule ? ["native", "packet"] : ["packet"],
123
+ limitCode: null,
124
+ session: capsule
125
+ ? {
126
+ harness: capsule.harness,
127
+ nativeSessionId: capsule.nativeSessionId,
128
+ holderProfileId: capsule.holderProfileId,
129
+ }
130
+ : null,
131
+ workspace: keptWorkspace ?? (root ? { kind: "in_place", root } : { kind: "none", root: null }),
132
+ },
133
+ };
134
+ }
135
+ //# sourceMappingURL=run-continuation-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-continuation-projection.js","sourceRoot":"","sources":["../src/run-continuation-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type DaemonFacadeClient } from "./run-record.js";
2
+ /**
3
+ * Fill the omitted inheritable keys of a raw `continueFrom` body from the
4
+ * predecessor's accepted request, and name the predecessor by its run id
5
+ * (a job id is accepted too). Runs on the RAW body, before the request schema
6
+ * injects defaults — an omitted scope must not become "no project". An
7
+ * unknown predecessor is left untouched: admission refuses it typed.
8
+ */
9
+ export declare function resolveContinuationBody(daemon: Pick<DaemonFacadeClient, "list">, body: unknown): Promise<unknown>;
10
+ /** Throw the typed admission refusal (with its context) for a continuation
11
+ * that may not start now; ordinary requests pass untouched. */
12
+ export declare function assertContinuationAdmissible(daemon: Pick<DaemonFacadeClient, "list">, request: unknown): Promise<void>;
13
+ //# sourceMappingURL=run-continuation-start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-continuation-start.d.ts","sourceRoot":"","sources":["../src/run-continuation-start.ts"],"names":[],"mappings":"AAaA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAaxE;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,EACxC,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED;+DAC+D;AAC/D,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,EACxC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * `continueFrom` on POST /v2/runs (INTERFACES §1): the HTTP half of the run
3
+ * chain. The daemon's enqueue RPC owns the atomic one-successor claim; this
4
+ * module resolves what a continuation inherits BEFORE ordinary request
5
+ * defaults fill it, and answers the same admission verdict with its typed
6
+ * context (the chain `head`), which the daemon socket does not carry.
7
+ */
8
+ import { continuationPredecessor, continuationRefusal, continuationRefusalError, continuedRunOf, } from "@claudexor/schema";
9
+ import { paramsRecord } from "./run-record.js";
10
+ /** What a continuation needs to find its carrier and workspace: the work's
11
+ * kind, project and execution tree, harness and model. Nothing else is
12
+ * inherited implicitly. Either explicit key replaces its whole related group. */
13
+ const INHERITED_GROUPS = [
14
+ ["mode"],
15
+ ["scope"],
16
+ ["execution"],
17
+ ["harnesses", "primaryHarness"],
18
+ ["model", "models"],
19
+ ];
20
+ /**
21
+ * Fill the omitted inheritable keys of a raw `continueFrom` body from the
22
+ * predecessor's accepted request, and name the predecessor by its run id
23
+ * (a job id is accepted too). Runs on the RAW body, before the request schema
24
+ * injects defaults — an omitted scope must not become "no project". An
25
+ * unknown predecessor is left untouched: admission refuses it typed.
26
+ */
27
+ export async function resolveContinuationBody(daemon, body) {
28
+ if (body && typeof body === "object" && "continueModelInherited" in body) {
29
+ throw Object.assign(new Error("continueModelInherited is server-owned"), { status: 400 });
30
+ }
31
+ const from = continuedRunOf(body);
32
+ if (from === null || !body || typeof body !== "object" || Array.isArray(body))
33
+ return body;
34
+ const predecessor = continuationPredecessor(from, await daemon.list({ id: from }));
35
+ if (!predecessor?.runId)
36
+ return body;
37
+ const raw = body;
38
+ const inherited = paramsRecord(predecessor);
39
+ const resolved = { ...raw, continueFrom: predecessor.runId };
40
+ for (const group of INHERITED_GROUPS) {
41
+ if (group.some((key) => key in raw))
42
+ continue;
43
+ for (const key of group) {
44
+ if (inherited[key] !== undefined)
45
+ resolved[key] = inherited[key];
46
+ }
47
+ }
48
+ // Preserve caller intent through durable request normalization and settings defaults.
49
+ resolved["continueModelInherited"] = !("model" in raw || "models" in raw);
50
+ return resolved;
51
+ }
52
+ /** Throw the typed admission refusal (with its context) for a continuation
53
+ * that may not start now; ordinary requests pass untouched. */
54
+ export async function assertContinuationAdmissible(daemon, request) {
55
+ if (continuedRunOf(request) === null)
56
+ return;
57
+ const refusal = continuationRefusal(request, await daemon.list());
58
+ if (refusal)
59
+ throw continuationRefusalError(refusal);
60
+ }
61
+ //# sourceMappingURL=run-continuation-start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-continuation-start.js","sourceRoot":"","sources":["../src/run-continuation-start.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAA2B,MAAM,iBAAiB,CAAC;AAExE;;iFAEiF;AACjF,MAAM,gBAAgB,GAAG;IACvB,CAAC,MAAM,CAAC;IACR,CAAC,OAAO,CAAC;IACT,CAAC,WAAW,CAAC;IACb,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,OAAO,EAAE,QAAQ,CAAC;CACX,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAwC,EACxC,IAAa;IAEb,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,wBAAwB,IAAI,IAAI,EAAE,CAAC;QACzE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3F,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,WAAW,EAAE,KAAK;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAA4B,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IACtF,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;YAAE,SAAS;QAC9C,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,sFAAsF;IACtF,QAAQ,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,CAAC;IAC1E,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;+DAC+D;AAC/D,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAwC,EACxC,OAAgB;IAEhB,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI;QAAE,OAAO;IAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,OAAO;QAAE,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-delivery-state.d.ts","sourceRoot":"","sources":["../src/run-delivery-state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAe,MAAM,mBAAmB,CAAC;AAIpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAGzE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB,CAwDvE;AAED;;6BAE6B;AAC7B,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB,GAAG,IAAI,CAE/E;AAED;;;;;;2EAM2E;AAC3E,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,EAC3D,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,QAAQ,UAAQ,GACf,IAAI,CAiCN"}
1
+ {"version":3,"file":"run-delivery-state.d.ts","sourceRoot":"","sources":["../src/run-delivery-state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAe,MAAM,mBAAmB,CAAC;AAKpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAGzE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB,CAwDvE;AAED;;6BAE6B;AAC7B,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB,GAAG,IAAI,CAE/E;AAED;;;;;;2EAM2E;AAC3E,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,EAC3D,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,QAAQ,UAAQ,GACf,IAAI,CAqCN"}
@@ -3,6 +3,7 @@ import { join } from "node:path";
3
3
  import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
4
4
  import { ControlRunResult, RunDeliveryState, WorkProduct } from "@claudexor/schema";
5
5
  import { nowIso } from "@claudexor/util";
6
+ import { releaseRetainedEnvelope, retainedEnvelopeOfRun } from "@claudexor/workspace";
6
7
  import { safeArtifactRoot } from "./artifact-paths.js";
7
8
  import { safeReadStructuredArtifact } from "./run-artifact-read.js";
8
9
  /** Revert targets the tree recorded at execution, even if its thread moved later. */
@@ -102,6 +103,11 @@ export function markRunApplyState(rec, state, appliedPaths, required = false) {
102
103
  const tmp = `${dsPath}.tmp-${process.pid}`;
103
104
  writeFileSync(tmp, stringifyYaml(next), "utf8");
104
105
  renameSync(tmp, dsPath);
106
+ // Applying a kept stopped run's result is its disposition (A9): the
107
+ // envelope retained for continueFrom is released, never kept twice.
108
+ const kept = state === "applied" && rec.runId ? retainedEnvelopeOfRun(root, rec.runId) : null;
109
+ if (kept)
110
+ void releaseRetainedEnvelope(kept).catch(() => { });
105
111
  }
106
112
  catch (error) {
107
113
  if (required)
@@ -1 +1 @@
1
- {"version":3,"file":"run-delivery-state.js","sourceRoot":"","sources":["../src/run-delivery-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-delivery-state.js","sourceRoot":"","sources":["../src/run-delivery-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The `discard` decision (POST /v2/runs/:id/decision): explicitly give up a
3
+ * terminal run's result that is still held for the operator — a pending
4
+ * copied-files result (INV-111) or a stopped run's isolated envelope retained
5
+ * for `continueFrom` (A9). Direct effects already in place are never undone.
6
+ */
7
+ import { ControlRunDecisionResponse } from "@claudexor/schema";
8
+ import type { DaemonRunRecord } from "./run-record.js";
9
+ export declare function discardRunResult(rec: DaemonRunRecord): Promise<ControlRunDecisionResponse>;
10
+ //# sourceMappingURL=run-discard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-discard.d.ts","sourceRoot":"","sources":["../src/run-discard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAK/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,0BAA0B,CAAC,CA0ChG"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The `discard` decision (POST /v2/runs/:id/decision): explicitly give up a
3
+ * terminal run's result that is still held for the operator — a pending
4
+ * copied-files result (INV-111) or a stopped run's isolated envelope retained
5
+ * for `continueFrom` (A9). Direct effects already in place are never undone.
6
+ */
7
+ import { ControlRunDecisionResponse } from "@claudexor/schema";
8
+ import { releaseRetainedEnvelope, retainedEnvelopeOfRun } from "@claudexor/workspace";
9
+ import { readFilesWorkProduct } from "./files-work-product.js";
10
+ import { appendRunAuditEvent } from "./run-audit.js";
11
+ import { controlRunResult, markRunApplyState } from "./run-delivery-state.js";
12
+ import { TERMINAL_STATES } from "./sse-shared.js";
13
+ export async function discardRunResult(rec) {
14
+ const retained = TERMINAL_STATES.has(rec.state) && rec.runDir && rec.runId
15
+ ? retainedEnvelopeOfRun(rec.runDir, rec.runId)
16
+ : null;
17
+ if (retained) {
18
+ await releaseRetainedEnvelope(retained);
19
+ appendRunAuditEvent(rec, "control.applied", {
20
+ decision: "discard",
21
+ retained_envelope: retained.envelope.worktree_path,
22
+ });
23
+ return ControlRunDecisionResponse.parse({
24
+ accepted: true,
25
+ status: "discarded",
26
+ message: "Stopped work discarded; its kept envelope was removed. A continuation starts from the project base.",
27
+ });
28
+ }
29
+ const files = readFilesWorkProduct(rec);
30
+ const state = controlRunResult(rec).applyState;
31
+ if (!TERMINAL_STATES.has(rec.state) ||
32
+ !files ||
33
+ files.manifest.isolation !== "envelope" ||
34
+ (state !== "not_applied" && state !== "discarded"))
35
+ throw Object.assign(new Error("Only an unapplied copied files result or a kept stopped run can be discarded; direct effects remain in place"), { status: 409 });
36
+ markRunApplyState(rec, "discarded", undefined, true);
37
+ appendRunAuditEvent(rec, "control.applied", {
38
+ decision: "discard",
39
+ manifest_sha256: files.manifestSha256,
40
+ });
41
+ return ControlRunDecisionResponse.parse({
42
+ accepted: true,
43
+ status: "discarded",
44
+ message: "Pending file application discarded; retained result follows normal retention.",
45
+ });
46
+ }
47
+ //# sourceMappingURL=run-discard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-discard.js","sourceRoot":"","sources":["../src/run-discard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAoB;IACzD,MAAM,QAAQ,GACZ,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK;QACvD,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACxC,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,EAAE;YAC1C,QAAQ,EAAE,SAAS;YACnB,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa;SACnD,CAAC,CAAC;QACH,OAAO,0BAA0B,CAAC,KAAK,CAAC;YACtC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,WAAW;YACnB,OAAO,EACL,qGAAqG;SACxG,CAAC,CAAC;IACL,CAAC;IACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;IAC/C,IACE,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,CAAC,KAAK;QACN,KAAK,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU;QACvC,CAAC,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,WAAW,CAAC;QAElD,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,8GAA8G,CAC/G,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;IACJ,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACrD,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,EAAE;QAC1C,QAAQ,EAAE,SAAS;QACnB,eAAe,EAAE,KAAK,CAAC,cAAc;KACtC,CAAC,CAAC;IACH,OAAO,0BAA0B,CAAC,KAAK,CAAC;QACtC,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,+EAA+E;KACzF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { DaemonRunRecord } from "./run-record.js";
2
+ /**
3
+ * The ONE interpretation point for a run's saved patch (INV-062).
4
+ *
5
+ * `final/patch.diff` is byte-exact unless the work product says
6
+ * `persisted_patch: redacted`; then it is a display-only copy with secret-like
7
+ * strings hidden and every consumer that applies, checks, hashes or binds a
8
+ * decision to "the patch" must read the private exact patch object instead.
9
+ * `unavailable` means that object is missing or corrupt: `patch` then still
10
+ * holds the saved copy for display, and nothing may be applied from it.
11
+ */
12
+ export declare function resolveRunPatch(rec: DaemonRunRecord, projectRoot: string | null): {
13
+ patch: string | null;
14
+ unavailable: boolean;
15
+ };
16
+ /** Exact patch for a mutating or digest-binding route. An unavailable exact
17
+ * object is a typed 409 raised before any tree is touched. */
18
+ export declare function readExactRunPatch(rec: DaemonRunRecord, projectRoot: string | null): string | null;
19
+ /** Digest a recorded operator decision must equal; null when there is no exact
20
+ * patch to bind to (no artifact, or its exact bytes are unavailable). */
21
+ export declare function runPatchDigest(rec: DaemonRunRecord, projectRoot: string | null): string | null;
22
+ /** A blob-only finding is invisible to a text scan of the patch, so the `pr`
23
+ * publishing refusal reads the run's own disclosure for it. */
24
+ export declare function runPatchHasSecretLikeBinary(rec: DaemonRunRecord): boolean;
25
+ //# sourceMappingURL=run-exact-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-exact-patch.d.ts","sourceRoot":"","sources":["../src/run-exact-patch.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAWhD;AAED;8DAC8D;AAC9D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CASjG;AAED;yEACyE;AACzE,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAG9F;AAED;+DAC+D;AAC/D,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAIzE"}
@@ -0,0 +1,55 @@
1
+ import { EXACT_PATCH_UNAVAILABLE_MESSAGE } from "@claudexor/delivery";
2
+ import { WorkProduct } from "@claudexor/schema";
3
+ import { sha256 } from "@claudexor/util";
4
+ import { PATCH_EXACT_BYTES_UNAVAILABLE, resolveExactPatch } from "@claudexor/workspace";
5
+ import { readRawTextArtifact, safeReadStructuredArtifact } from "./run-artifact-read.js";
6
+ import { recordedExecutionRoot } from "./run-delivery-state.js";
7
+ /**
8
+ * The ONE interpretation point for a run's saved patch (INV-062).
9
+ *
10
+ * `final/patch.diff` is byte-exact unless the work product says
11
+ * `persisted_patch: redacted`; then it is a display-only copy with secret-like
12
+ * strings hidden and every consumer that applies, checks, hashes or binds a
13
+ * decision to "the patch" must read the private exact patch object instead.
14
+ * `unavailable` means that object is missing or corrupt: `patch` then still
15
+ * holds the saved copy for display, and nothing may be applied from it.
16
+ */
17
+ export function resolveRunPatch(rec, projectRoot) {
18
+ const saved = readRawTextArtifact(rec, "final/patch.diff");
19
+ if (saved === null)
20
+ return { patch: null, unavailable: false };
21
+ const exact = resolveExactPatch({
22
+ savedCopy: saved,
23
+ meta: safeReadStructuredArtifact(rec, "final/work_product.yaml", WorkProduct)?.meta,
24
+ roots: [projectRoot, recordedExecutionRoot(rec)],
25
+ });
26
+ return exact.ok
27
+ ? { patch: exact.patch, unavailable: false }
28
+ : { patch: saved, unavailable: true };
29
+ }
30
+ /** Exact patch for a mutating or digest-binding route. An unavailable exact
31
+ * object is a typed 409 raised before any tree is touched. */
32
+ export function readExactRunPatch(rec, projectRoot) {
33
+ const resolved = resolveRunPatch(rec, projectRoot);
34
+ if (resolved.unavailable) {
35
+ throw Object.assign(new Error(EXACT_PATCH_UNAVAILABLE_MESSAGE), {
36
+ status: 409,
37
+ code: PATCH_EXACT_BYTES_UNAVAILABLE,
38
+ });
39
+ }
40
+ return resolved.patch;
41
+ }
42
+ /** Digest a recorded operator decision must equal; null when there is no exact
43
+ * patch to bind to (no artifact, or its exact bytes are unavailable). */
44
+ export function runPatchDigest(rec, projectRoot) {
45
+ const resolved = resolveRunPatch(rec, projectRoot);
46
+ return resolved.patch !== null && !resolved.unavailable ? sha256(resolved.patch) : null;
47
+ }
48
+ /** A blob-only finding is invisible to a text scan of the patch, so the `pr`
49
+ * publishing refusal reads the run's own disclosure for it. */
50
+ export function runPatchHasSecretLikeBinary(rec) {
51
+ const meta = safeReadStructuredArtifact(rec, "final/work_product.yaml", WorkProduct)?.meta;
52
+ const finding = meta?.["secret_like"];
53
+ return Array.isArray(finding?.binary_paths) && finding.binary_paths.length > 0;
54
+ }
55
+ //# sourceMappingURL=run-exact-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-exact-patch.js","sourceRoot":"","sources":["../src/run-exact-patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAoB,EACpB,WAA0B;IAE1B,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAC3D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,iBAAiB,CAAC;QAC9B,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,0BAA0B,CAAC,GAAG,EAAE,yBAAyB,EAAE,WAAW,CAAC,EAAE,IAAI;QACnF,KAAK,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;KACjD,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,EAAE;QACb,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;QAC5C,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED;8DAC8D;AAC9D,MAAM,UAAU,iBAAiB,CAAC,GAAoB,EAAE,WAA0B;IAChF,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,EAAE;YAC9D,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,6BAA6B;SACpC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC;AAED;yEACyE;AACzE,MAAM,UAAU,cAAc,CAAC,GAAoB,EAAE,WAA0B;IAC7E,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1F,CAAC;AAED;+DAC+D;AAC/D,MAAM,UAAU,2BAA2B,CAAC,GAAoB;IAC9D,MAAM,IAAI,GAAG,0BAA0B,CAAC,GAAG,EAAE,yBAAyB,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC;IAC3F,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,aAAa,CAA2C,CAAC;IAChF,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACjF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-list-fingerprint.d.ts","sourceRoot":"","sources":["../src/run-list-fingerprint.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMvD,wBAAgB,oCAAoC,IAAI,MAAM,CAE7D;AAED,wBAAgB,yCAAyC,IAAI,IAAI,CAEhE;AAED;4EAC4E;AAC5E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAyC/D"}
1
+ {"version":3,"file":"run-list-fingerprint.d.ts","sourceRoot":"","sources":["../src/run-list-fingerprint.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMvD,wBAAgB,oCAAoC,IAAI,MAAM,CAE7D;AAED,wBAAgB,yCAAyC,IAAI,IAAI,CAEhE;AAED;4EAC4E;AAC5E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA+C/D"}
@@ -1,5 +1,6 @@
1
1
  import { statSync } from "node:fs";
2
2
  import { sha256 } from "@claudexor/util";
3
+ import { RETAINED_ENVELOPE_POINTER, readContinuationSources, retainedEnvelopeInChain, } from "@claudexor/workspace";
3
4
  import { safeArtifactPath } from "./artifact-paths.js";
4
5
  import { TERMINAL_STATES } from "./sse-shared.js";
5
6
  /** Number of artifact-path probes performed by the run-list fingerprinter. */
@@ -38,6 +39,12 @@ export function summaryFingerprint(rec) {
38
39
  ...identity,
39
40
  fileIdentity("final/delivery_state.yaml"),
40
41
  fileIdentity("tombstone.yaml"),
42
+ // A9 custody: retention, adoption and release move this pointer.
43
+ fileIdentity(RETAINED_ENVELOPE_POINTER),
44
+ // An unadopted ancestor can be released after this head reached terminal.
45
+ rec.runDir
46
+ ? (retainedEnvelopeInChain(readContinuationSources(rec.runDir))?.envelope.id ?? "")
47
+ : "",
41
48
  ].join("|");
42
49
  }
43
50
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"run-list-fingerprint.js","sourceRoot":"","sources":["../src/run-list-fingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,8EAA8E;AAC9E,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAE9B,MAAM,UAAU,oCAAoC;IAClD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,yCAAyC;IACvD,qBAAqB,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;4EAC4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,GAAoB;IACrD,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE;QAC3C,qBAAqB,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,GAAG,CAAC;QAC5B,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI;YAAE,OAAO,GAAG,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5F,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,2EAA2E;QAC3E,yEAAyE;QACzE,0EAA0E;QAC1E,uEAAuE;QACvE,OAAO;YACL,GAAG,QAAQ;YACX,YAAY,CAAC,2BAA2B,CAAC;YACzC,YAAY,CAAC,gBAAgB,CAAC;SAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IACD,OAAO;QACL,GAAG,QAAQ;QACX,YAAY,CAAC,cAAc,CAAC;QAC5B,YAAY,CAAC,2BAA2B,CAAC;QACzC,YAAY,CAAC,sBAAsB,CAAC;QACpC,YAAY,CAAC,sBAAsB,CAAC;QACpC,YAAY,CAAC,oBAAoB,CAAC;QAClC,YAAY,CAAC,kBAAkB,CAAC;QAChC,YAAY,CAAC,iBAAiB,CAAC;QAC/B,YAAY,CAAC,eAAe,CAAC;QAC7B,YAAY,CAAC,kBAAkB,CAAC;QAChC,YAAY,CAAC,iBAAiB,CAAC;QAC/B,YAAY,CAAC,kBAAkB,CAAC;QAChC,YAAY,CAAC,yBAAyB,CAAC;QACvC,YAAY,CAAC,2BAA2B,CAAC;KAC1C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAoB;IAC7C,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,uBAAuB,CAAC;IACjC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"run-list-fingerprint.js","sourceRoot":"","sources":["../src/run-list-fingerprint.ts"],"names":[],"mappings":"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"}
@@ -212,8 +212,17 @@ async function runAgain(ctx, id, res) {
212
212
  // belong to the turn pipeline) — surviving here would make the draft
213
213
  // unpostable, and a replayed planRef would smuggle the frozen-plan
214
214
  // reference past the boundary (INV-081). Same set as decision-rerun.
215
- const { turnId, retryOf, planRunId, planRef, threadId, parentRunId, delegatedFromRunId, ...request } = parsed;
215
+ const { turnId, retryOf, planRunId, planRef, threadId, parentRunId, delegatedFromRunId, continueModelInherited, ...request } = parsed;
216
216
  const differences = [
217
+ ...(continueModelInherited !== undefined
218
+ ? [
219
+ {
220
+ field: "continueModelInherited",
221
+ change: "omitted",
222
+ reason: "model intent is resolved from the edited request",
223
+ },
224
+ ]
225
+ : []),
217
226
  ...(turnId
218
227
  ? [{ field: "turnId", change: "omitted", reason: "server-owned turn binding" }]
219
228
  : []),