@claudexor/workspace 3.19.0 → 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 (48) hide show
  1. package/dist/anchor-store.d.ts +27 -0
  2. package/dist/anchor-store.d.ts.map +1 -1
  3. package/dist/anchor-store.js +38 -0
  4. package/dist/anchor-store.js.map +1 -1
  5. package/dist/continuation-sources.d.ts +30 -0
  6. package/dist/continuation-sources.d.ts.map +1 -0
  7. package/dist/continuation-sources.js +28 -0
  8. package/dist/continuation-sources.js.map +1 -0
  9. package/dist/envelope-custody.d.ts +39 -0
  10. package/dist/envelope-custody.d.ts.map +1 -0
  11. package/dist/envelope-custody.js +148 -0
  12. package/dist/envelope-custody.js.map +1 -0
  13. package/dist/git.d.ts +4 -1
  14. package/dist/git.d.ts.map +1 -1
  15. package/dist/git.js +4 -5
  16. package/dist/git.js.map +1 -1
  17. package/dist/harness-home.d.ts +4 -0
  18. package/dist/harness-home.d.ts.map +1 -0
  19. package/dist/harness-home.js +25 -0
  20. package/dist/harness-home.js.map +1 -0
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +3 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/lanes.d.ts +3 -0
  26. package/dist/lanes.d.ts.map +1 -1
  27. package/dist/lanes.js +7 -12
  28. package/dist/lanes.js.map +1 -1
  29. package/dist/manager.d.ts +22 -4
  30. package/dist/manager.d.ts.map +1 -1
  31. package/dist/manager.js +46 -54
  32. package/dist/manager.js.map +1 -1
  33. package/dist/plain-diff.d.ts +3 -2
  34. package/dist/plain-diff.d.ts.map +1 -1
  35. package/dist/plain-diff.js +18 -16
  36. package/dist/plain-diff.js.map +1 -1
  37. package/dist/raw-patch.d.ts.map +1 -1
  38. package/dist/raw-patch.js +4 -3
  39. package/dist/raw-patch.js.map +1 -1
  40. package/dist/retained-envelopes.d.ts +35 -0
  41. package/dist/retained-envelopes.d.ts.map +1 -0
  42. package/dist/retained-envelopes.js +118 -0
  43. package/dist/retained-envelopes.js.map +1 -0
  44. package/dist/thread-tree.d.ts +3 -0
  45. package/dist/thread-tree.d.ts.map +1 -1
  46. package/dist/thread-tree.js +5 -0
  47. package/dist/thread-tree.js.map +1 -1
  48. package/package.json +4 -4
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Run-level view of retained envelopes: the pointer a holder run keeps to its
3
+ * retained envelope, retention, adoption by a `continueFrom` successor, and
4
+ * release (discard, apply, or the successor finishing). The custody record in
5
+ * the envelope base is the authority (`envelope-custody.ts`); the run-dir
6
+ * pointer is only its address, so a stale pointer reads as "nothing retained".
7
+ */
8
+ import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync, } from "node:fs";
9
+ import { dirname, join } from "node:path";
10
+ import { SessionCapsule, } from "@claudexor/schema";
11
+ import { nowIso } from "@claudexor/util";
12
+ import { envelopeBaseOf, envelopeTreeChanged, liveEnvelopeCustody, readEnvelopeCustody, releaseEnvelopeCustody, retainEnvelopeCustody, stripRouteScopedAuth, writeEnvelopeCustody, } from "./envelope-custody.js";
13
+ import { processStartTime } from "./envelope-recovery.js";
14
+ import { WorkspaceManager } from "./manager.js";
15
+ /** Run-dir pointer to the run's retained envelope (address only). */
16
+ export const RETAINED_ENVELOPE_POINTER = "final/retained-envelope.json";
17
+ function pointerPath(runDir) {
18
+ return join(runDir, RETAINED_ENVELOPE_POINTER);
19
+ }
20
+ function writePointer(runDir, base) {
21
+ const path = pointerPath(runDir);
22
+ mkdirSync(dirname(path), { recursive: true });
23
+ const tmp = `${path}.${process.pid}.tmp`;
24
+ writeFileSync(tmp, JSON.stringify({ envelope_base: base }) + "\n");
25
+ renameSync(tmp, path);
26
+ }
27
+ /** The envelope `runId` holds in retained custody, or null. */
28
+ export function retainedEnvelopeOfRun(runDir, runId) {
29
+ try {
30
+ const pointer = JSON.parse(readFileSync(pointerPath(runDir), "utf8"));
31
+ if (typeof pointer.envelope_base !== "string")
32
+ return null;
33
+ const custody = readEnvelopeCustody(pointer.envelope_base);
34
+ return custody?.state === "retained" && custody.holder_run_id === runId ? custody : null;
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ /** Keep `env` for continuation under `holder` (custody first, then the
41
+ * pointer: a crash in between leaves a retained envelope the sweeper keeps). */
42
+ export function retainForContinuation(env, holder, cause) {
43
+ const custody = retainEnvelopeCustody(env, holder, cause);
44
+ writePointer(holder.runDir, envelopeBaseOf(env));
45
+ return custody;
46
+ }
47
+ /**
48
+ * Hand a retained envelope to its `continueFrom` successor: the same envelope
49
+ * (same path, base and files) now `live` under the successor, the crash-GC
50
+ * owner marker re-stamped to this process, and the predecessor's pointer
51
+ * dropped (its terminal facts stay; custody moved on). The caller verified
52
+ * that the record's holder is the successor's predecessor.
53
+ */
54
+ export function adoptRetainedEnvelope(custody, successor) {
55
+ const env = custody.envelope;
56
+ const base = envelopeBaseOf(env);
57
+ writeFileSync(join(base, "owner.json"), JSON.stringify({
58
+ pid: process.pid,
59
+ started: processStartTime(process.pid),
60
+ created_at: env.created_at,
61
+ envelope_id: env.id,
62
+ workspace_mode: "isolated",
63
+ workspace_kind: env.workspace_kind,
64
+ adopted_at: nowIso(),
65
+ }) + "\n");
66
+ writeEnvelopeCustody(base, liveEnvelopeCustody(env, successor));
67
+ rmSync(pointerPath(custody.holder_run_dir), { force: true });
68
+ return env;
69
+ }
70
+ /** Explicit disposition of a retained envelope (discard, apply): custody and
71
+ * pointer end first, so the run stops reporting it; disk cleanup follows. */
72
+ export async function releaseRetainedEnvelope(custody) {
73
+ rmSync(pointerPath(custody.holder_run_dir), { force: true });
74
+ releaseEnvelopeCustody(envelopeBaseOf(custody.envelope));
75
+ await new WorkspaceManager(custody.envelope.repo_root).dispose(custody.envelope);
76
+ }
77
+ /**
78
+ * Crash recovery of an ownerless envelope (the startup sweeper, before any new
79
+ * work is accepted). `retained`: kept, its route-scoped auth stripped again.
80
+ * `live` with a dead owner: the holder run was interrupted mid-attempt; a tree
81
+ * that differs from its base, or has a session capsule, is retained (`host_restart`) when the
82
+ * holder run's directory still exists. Anything else (`null`) is an ordinary
83
+ * orphan the sweeper disposes as before.
84
+ */
85
+ export async function recoverOrphanCustody(base) {
86
+ const custody = readEnvelopeCustody(base);
87
+ if (!custody)
88
+ return null;
89
+ if (custody.state === "retained") {
90
+ stripRouteScopedAuth(custody.envelope);
91
+ writePointer(custody.holder_run_dir, base);
92
+ return "kept";
93
+ }
94
+ if (!existsSync(custody.holder_run_dir))
95
+ return null;
96
+ if (!holderHasSession(custody.holder_run_dir) &&
97
+ (await envelopeTreeChanged(custody.envelope)) !== true)
98
+ return null;
99
+ retainForContinuation(custody.envelope, { runId: custody.holder_run_id, runDir: custody.holder_run_dir }, "host_restart");
100
+ return "retained";
101
+ }
102
+ function holderHasSession(runDir) {
103
+ const attempts = join(runDir, "attempts");
104
+ try {
105
+ return readdirSync(attempts).some((attempt) => {
106
+ try {
107
+ return SessionCapsule.safeParse(JSON.parse(readFileSync(join(attempts, attempt, "session-capsule.json"), "utf8"))).success;
108
+ }
109
+ catch {
110
+ return false;
111
+ }
112
+ });
113
+ }
114
+ catch {
115
+ return false;
116
+ }
117
+ }
118
+ //# sourceMappingURL=retained-envelopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retained-envelopes.js","sourceRoot":"","sources":["../src/retained-envelopes.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,9 @@ export declare function ensureThreadWorktree(projectRoot: string, threadId: stri
24
24
  * then realign its daemon-owned worktree. The branch ref makes snapshot
25
25
  * commits survive aggressive Git GC; the returned SHA is the journal base. */
26
26
  export declare function advanceThreadWorktree(projectRoot: string, threadId: string, worktreePath: string, targetSha: string): Promise<string>;
27
+ /** Whether an isolated thread's directory is still on disk: its purge failed
28
+ * after the journal commit, and the next retention pass retries it. */
29
+ export declare function threadWorktreeDirExists(projectRoot: string, threadId: string): boolean;
27
30
  /** Explicit purge of daemon-owned isolated-thread resources. Lifecycle
28
31
  * authority lives in the journal; the generic orphan sweeper never guesses. */
29
32
  export declare function purgeThreadWorktree(projectRoot: string, threadId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"thread-tree.d.ts","sourceRoot":"","sources":["../src/thread-tree.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,wBAAwB,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAC7D;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CA2D/B;AAED;;8EAE8E;AAC9E,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED;+EAC+E;AAC/E,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9F"}
1
+ {"version":3,"file":"thread-tree.d.ts","sourceRoot":"","sources":["../src/thread-tree.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,wBAAwB,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAC7D;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CA2D/B;AAED;;8EAE8E;AAC9E,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED;uEACuE;AACvE,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtF;AAED;+EAC+E;AAC/E,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9F"}
@@ -104,6 +104,11 @@ export async function advanceThreadWorktree(projectRoot, threadId, worktreePath,
104
104
  }
105
105
  return targetSha;
106
106
  }
107
+ /** Whether an isolated thread's directory is still on disk: its purge failed
108
+ * after the journal commit, and the next retention pass retries it. */
109
+ export function threadWorktreeDirExists(projectRoot, threadId) {
110
+ return existsSync(join(projectRuntimeDir(projectRoot), "threads", threadId));
111
+ }
107
112
  /** Explicit purge of daemon-owned isolated-thread resources. Lifecycle
108
113
  * authority lives in the journal; the generic orphan sweeper never guesses. */
109
114
  export async function purgeThreadWorktree(projectRoot, threadId) {
@@ -1 +1 @@
1
- {"version":3,"file":"thread-tree.js","sourceRoot":"","sources":["../src/thread-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread-tree.js","sourceRoot":"","sources":["../src/thread-tree.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudexor/workspace",
3
- "version": "3.19.0",
3
+ "version": "3.22.0",
4
4
  "license": "MIT",
5
5
  "description": "WorkspaceEnvelope manager: git worktree + scoped HOME/harness-config isolation + dirty policy.",
6
6
  "type": "module",
@@ -16,9 +16,9 @@
16
16
  "dist"
17
17
  ],
18
18
  "dependencies": {
19
- "@claudexor/core": "3.19.0",
20
- "@claudexor/schema": "3.19.0",
21
- "@claudexor/util": "3.19.0"
19
+ "@claudexor/schema": "3.22.0",
20
+ "@claudexor/core": "3.22.0",
21
+ "@claudexor/util": "3.22.0"
22
22
  },
23
23
  "repository": {
24
24
  "type": "git",