@claudexor/workspace 3.10.5 → 3.12.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.
@@ -0,0 +1,38 @@
1
+ import { WorkspaceFilesManifest, WorkspaceEnvelope, type AccessProfile } from "@claudexor/schema";
2
+ export declare function createDirectoryEnvelope(input: {
3
+ sourceRoot: string;
4
+ envelopeRoot: string;
5
+ envelopeId: string;
6
+ homeDir: string;
7
+ harnessConfigDirs: Record<string, string>;
8
+ taskId: string;
9
+ attemptId: string;
10
+ scopePaths?: string[];
11
+ inPlace?: boolean;
12
+ accessProfile?: AccessProfile;
13
+ }): Promise<WorkspaceEnvelope>;
14
+ /** Uses the existing envelope's baseline/tree directories, never another store. */
15
+ export declare function prepareDirectoryWorkspace(input: {
16
+ sourceRoot: string;
17
+ executionRoot: string;
18
+ envelopeRoot: string;
19
+ scopePaths: string[];
20
+ inPlace: boolean;
21
+ }): Promise<void>;
22
+ export interface CapturedWorkspaceFiles {
23
+ manifest: WorkspaceFilesManifest;
24
+ manifestPath: string;
25
+ manifestSha256: string;
26
+ changedPaths: string[];
27
+ noChanges: boolean | null;
28
+ }
29
+ /** Complete bytes live under the run artifact tree; a preview is never apply input. */
30
+ export declare function captureDirectoryWorkspace(input: {
31
+ executionRoot: string;
32
+ envelopeRoot: string;
33
+ runRoot: string;
34
+ observedPaths?: string[];
35
+ excludedPaths?: string[];
36
+ sourceRoot?: string;
37
+ }): Promise<CapturedWorkspaceFiles>;
38
+ //# sourceMappingURL=directory-workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-workspace.d.ts","sourceRoot":"","sources":["../src/directory-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,aAAa,EAGnB,MAAM,mBAAmB,CAAC;AAiB3B,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0B7B;AAED,mFAAmF;AACnF,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B;AAED,uFAAuF;AACvF,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA4FlC"}
@@ -0,0 +1,134 @@
1
+ import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { WorkspaceFilesManifest, WorkspaceEnvelope, } from "@claudexor/schema";
4
+ import { containsSecretLikeToken, nowIso, sha256 } from "@claudexor/util";
5
+ import { directoryInventory, materializeWorkspaceFile, readWorkspaceFile, sameWorkspaceFile, workspaceFilePath, } from "./files-io.js";
6
+ export async function createDirectoryEnvelope(input) {
7
+ const executionRoot = input.inPlace ? input.sourceRoot : join(input.envelopeRoot, "tree");
8
+ const scopePaths = input.scopePaths ?? [];
9
+ await prepareDirectoryWorkspace({
10
+ ...input,
11
+ executionRoot,
12
+ scopePaths,
13
+ inPlace: input.inPlace === true,
14
+ });
15
+ return WorkspaceEnvelope.parse({
16
+ id: input.envelopeId,
17
+ task_id: input.taskId,
18
+ attempt_id: input.attemptId,
19
+ repo_root: input.sourceRoot,
20
+ worktree_path: executionRoot,
21
+ base_ref: null,
22
+ base_sha: null,
23
+ branch_name: null,
24
+ workspace_kind: "directory",
25
+ scope_paths: scopePaths,
26
+ home_dir: input.homeDir,
27
+ harness_config_dirs: input.harnessConfigDirs,
28
+ policy_profile: input.accessProfile ?? "workspace_write",
29
+ dirty_policy: "snapshot",
30
+ created_at: nowIso(),
31
+ });
32
+ }
33
+ /** Uses the existing envelope's baseline/tree directories, never another store. */
34
+ export async function prepareDirectoryWorkspace(input) {
35
+ const { sourceRoot, executionRoot, envelopeRoot, scopePaths, inPlace } = input;
36
+ const content = join(envelopeRoot, "baseline", "content");
37
+ const entries = await directoryInventory(sourceRoot, scopePaths, inPlace ? undefined : content);
38
+ if (!inPlace) {
39
+ await mkdir(executionRoot, { recursive: true });
40
+ for (const [path, state] of entries) {
41
+ await materializeWorkspaceFile(await workspaceFilePath(executionRoot, path), state, state.kind === "file" ? join(content, state.sha256.slice(7)) : undefined);
42
+ }
43
+ const current = await directoryInventory(sourceRoot, scopePaths);
44
+ if (current.size !== entries.size ||
45
+ [...entries].some(([path, state]) => !sameWorkspaceFile(state, current.get(path) ?? null)))
46
+ throw new Error("Selected source footprint changed while the directory copy was prepared");
47
+ }
48
+ const baseline = {
49
+ sourceRoot,
50
+ scopePaths,
51
+ isolation: inPlace ? "live" : "envelope",
52
+ entries: [...entries].map(([path, state]) => ({ path, state })),
53
+ };
54
+ await writeFile(join(envelopeRoot, "directory-baseline.json"), JSON.stringify(baseline) + "\n");
55
+ }
56
+ /** Complete bytes live under the run artifact tree; a preview is never apply input. */
57
+ export async function captureDirectoryWorkspace(input) {
58
+ const baseline = JSON.parse(await readFile(join(input.envelopeRoot, "directory-baseline.json"), "utf8"));
59
+ const before = new Map(baseline.entries.map(({ path, state }) => [path, state]));
60
+ const contentPrefix = "final/files/content";
61
+ const content = join(input.runRoot, contentPrefix);
62
+ const paths = baseline.isolation === "envelope"
63
+ ? ["."]
64
+ : [...baseline.scopePaths, ...(input.observedPaths ?? [])];
65
+ const after = await directoryInventory(input.executionRoot, paths, content, input.excludedPaths);
66
+ const entries = [];
67
+ const excluded = (path) => (input.excludedPaths ?? []).some((prefix) => path === prefix || path.startsWith(prefix + "/"));
68
+ const observed = (input.observedPaths ?? []).filter((path) => path !== ".");
69
+ for (const path of [...new Set([...before.keys(), ...after.keys(), ...observed])].sort()) {
70
+ if (excluded(path))
71
+ continue;
72
+ const old = before.get(path);
73
+ if (old?.kind === "file" && baseline.isolation === "envelope") {
74
+ const saved = await readWorkspaceFile(join(input.envelopeRoot, "baseline", "content", old.sha256.slice(7)), content);
75
+ if (saved?.kind !== "file" ||
76
+ saved.sha256 !== old.sha256 ||
77
+ saved.sizeBytes !== old.sizeBytes)
78
+ throw new Error(`Baseline bytes no longer match: ${path}`);
79
+ }
80
+ const withRef = (state, retained) => state?.kind === "file" && retained
81
+ ? { ...state, artifactPath: `${contentPrefix}/${state.sha256.slice(7)}` }
82
+ : state;
83
+ let knownAbsent = baseline.scopePaths.some((scope) => scope === "." || path === scope || path.startsWith(scope + "/"));
84
+ // New output outside the input footprint may add an absent target, but
85
+ // an existing unselected file is not a captured baseline to overwrite.
86
+ if (!old && !knownAbsent && baseline.isolation === "envelope")
87
+ knownAbsent =
88
+ (await readWorkspaceFile(await workspaceFilePath(baseline.sourceRoot, path, true))) ===
89
+ null;
90
+ entries.push({
91
+ path,
92
+ before: old
93
+ ? withRef(old, baseline.isolation === "envelope")
94
+ : knownAbsent
95
+ ? null
96
+ : "unknown",
97
+ after: withRef(after.get(path) ?? null, true),
98
+ });
99
+ }
100
+ const manifest = WorkspaceFilesManifest.parse({
101
+ version: 1,
102
+ sourceRoot: input.sourceRoot ?? baseline.sourceRoot,
103
+ executionRoot: input.executionRoot,
104
+ isolation: baseline.isolation,
105
+ scopePaths: baseline.scopePaths,
106
+ complete: true,
107
+ entries,
108
+ });
109
+ const manifestPath = "final/files/manifest.json";
110
+ await mkdir(join(input.runRoot, "final/files"), { recursive: true });
111
+ const text = JSON.stringify(manifest) + "\n";
112
+ if (containsSecretLikeToken(text))
113
+ throw new Error("Manifest contains credential material; no result was published");
114
+ const path = join(input.runRoot, manifestPath);
115
+ await writeFile(`${path}.pending`, text);
116
+ await rename(`${path}.pending`, path);
117
+ const changedPaths = entries
118
+ .filter((entry) => !sameWorkspaceFile(entry.before, entry.after))
119
+ .map((entry) => entry.path);
120
+ return {
121
+ manifest,
122
+ manifestPath,
123
+ manifestSha256: sha256(text),
124
+ changedPaths,
125
+ noChanges: entries.some((entry) => entry.before !== "unknown" && !sameWorkspaceFile(entry.before, entry.after))
126
+ ? false
127
+ : changedPaths.length > 0
128
+ ? null
129
+ : baseline.isolation === "envelope" || baseline.scopePaths.includes(".")
130
+ ? true
131
+ : null,
132
+ };
133
+ }
134
+ //# sourceMappingURL=directory-workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-workspace.js","sourceRoot":"","sources":["../src/directory-workspace.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,13 @@
1
1
  export interface EnvelopeRecoveryRecord {
2
2
  envelopeId: string;
3
3
  workspaceMode: "in_place" | "isolated";
4
+ workspaceKind?: "git" | "directory";
4
5
  }
5
6
  /** Read only the identity needed to dispose a crashed envelope. The caller
6
7
  * decides whether missing legacy data is safe to fall back from. */
7
8
  export declare function readEnvelopeRecoveryRecord(base: string): EnvelopeRecoveryRecord | null;
9
+ /** `ps` start time for a pid, or null when unavailable. Pid+start-time
10
+ * equality is the recycling-proof liveness identity for envelope owners
11
+ * (command names/titles mutate; the kernel start time never does). */
12
+ export declare function processStartTime(pid: number): string | null;
8
13
  //# sourceMappingURL=envelope-recovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"envelope-recovery.d.ts","sourceRoot":"","sources":["../src/envelope-recovery.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,UAAU,GAAG,UAAU,CAAC;CACxC;AAED;oEACoE;AACpE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAgBtF"}
1
+ {"version":3,"file":"envelope-recovery.d.ts","sourceRoot":"","sources":["../src/envelope-recovery.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,UAAU,GAAG,UAAU,CAAC;IACvC,aAAa,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC;CACrC;AAED;oEACoE;AACpE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAqBtF;AAED;;sEAEsE;AACtE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS3D"}
@@ -1,3 +1,4 @@
1
+ import { execFileSync } from "node:child_process";
1
2
  import { readFileSync } from "node:fs";
2
3
  import { join } from "node:path";
3
4
  /** Read only the identity needed to dispose a crashed envelope. The caller
@@ -9,7 +10,25 @@ export function readEnvelopeRecoveryRecord(base) {
9
10
  (parsed.workspace_mode !== "in_place" && parsed.workspace_mode !== "isolated")) {
10
11
  return null;
11
12
  }
12
- return { envelopeId: parsed.envelope_id, workspaceMode: parsed.workspace_mode };
13
+ return {
14
+ envelopeId: parsed.envelope_id,
15
+ workspaceMode: parsed.workspace_mode,
16
+ ...(parsed.workspace_kind === "directory" ? { workspaceKind: "directory" } : {}),
17
+ };
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ }
23
+ /** `ps` start time for a pid, or null when unavailable. Pid+start-time
24
+ * equality is the recycling-proof liveness identity for envelope owners
25
+ * (command names/titles mutate; the kernel start time never does). */
26
+ export function processStartTime(pid) {
27
+ try {
28
+ const out = execFileSync("ps", ["-p", String(pid), "-o", "lstart="], {
29
+ encoding: "utf8",
30
+ }).trim();
31
+ return out.length > 0 ? out : null;
13
32
  }
14
33
  catch {
15
34
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"envelope-recovery.js","sourceRoot":"","sources":["../src/envelope-recovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC;oEACoE;AACpE,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAGvE,CAAC;QACF,IACE,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;YACtC,CAAC,MAAM,CAAC,cAAc,KAAK,UAAU,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU,CAAC,EAC9E,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"envelope-recovery.js","sourceRoot":"","sources":["../src/envelope-recovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC;oEACoE;AACpE,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAIvE,CAAC;QACF,IACE,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;YACtC,CAAC,MAAM,CAAC,cAAc,KAAK,UAAU,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU,CAAC,EAC9E,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,WAAW;YAC9B,aAAa,EAAE,MAAM,CAAC,cAAc;YACpC,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;sEAEsE;AACtE,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE;YACnE,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { WorkspaceFilesManifest, type WorkspaceFileChange } from "@claudexor/schema";
2
+ export declare function readWorkspaceFilesManifest(runRoot: string, path: string, expectedSha256: string): Promise<WorkspaceFilesManifest>;
3
+ export declare function verifyWorkspaceFiles(manifest: WorkspaceFilesManifest, artifactRoot: string): Promise<void>;
4
+ export declare function selectedWorkspaceChanges(manifest: WorkspaceFilesManifest, paths?: readonly string[]): WorkspaceFileChange[];
5
+ export declare function deliverableWorkspaceChanges(manifest: WorkspaceFilesManifest, paths?: readonly string[]): WorkspaceFileChange[];
6
+ export declare function materializeWorkspaceBaseline(root: string, manifest: WorkspaceFilesManifest, artifactRoot: string): Promise<void>;
7
+ export interface ApplyWorkspaceFilesResult {
8
+ applied: boolean;
9
+ alreadyApplied: boolean;
10
+ treeMutated: boolean;
11
+ appliedPaths: string[];
12
+ detail?: string;
13
+ }
14
+ /** Caller supplies the shared delivery mutation lease. Never reverse unrelated edits. */
15
+ export declare function applyWorkspaceFiles(targetRoot: string, manifest: WorkspaceFilesManifest, artifactRoot: string, paths?: readonly string[]): Promise<ApplyWorkspaceFilesResult>;
16
+ //# sourceMappingURL=files-apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files-apply.d.ts","sourceRoot":"","sources":["../src/files-apply.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAS3B,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,sBAAsB,CAAC,CAKjC;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,sBAAsB,EAChC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,sBAAsB,EAChC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GACxB,mBAAmB,EAAE,CAUvB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,sBAAsB,EAChC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GACxB,mBAAmB,EAAE,CAEvB;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,sBAAsB,EAChC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkBD,yFAAyF;AACzF,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,sBAAsB,EAChC,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GACxB,OAAO,CAAC,yBAAyB,CAAC,CAsHpC"}
@@ -0,0 +1,179 @@
1
+ import { chmod, lstat, mkdir, readFile, rename, rm, rmdir } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { WorkspaceFilesManifest, } from "@claudexor/schema";
4
+ import { newId, sha256 } from "@claudexor/util";
5
+ import { materializeWorkspaceFile, readWorkspaceFile, sameWorkspaceFile, workspaceFilePath, } from "./files-io.js";
6
+ export async function readWorkspaceFilesManifest(runRoot, path, expectedSha256) {
7
+ const text = await readFile(await workspaceFilePath(runRoot, path), "utf8");
8
+ if (sha256(text) !== expectedSha256)
9
+ throw new Error("Files manifest digest does not match the work product");
10
+ return WorkspaceFilesManifest.parse(JSON.parse(text));
11
+ }
12
+ export async function verifyWorkspaceFiles(manifest, artifactRoot) {
13
+ WorkspaceFilesManifest.parse(manifest);
14
+ for (const entry of manifest.entries) {
15
+ for (const state of [entry.before, entry.after]) {
16
+ if (state === "unknown" || state?.kind !== "file" || !state.artifactPath)
17
+ continue;
18
+ const actual = await readWorkspaceFile(await workspaceFilePath(artifactRoot, state.artifactPath));
19
+ if (actual?.kind !== "file" ||
20
+ actual.sha256 !== state.sha256 ||
21
+ actual.sizeBytes !== state.sizeBytes)
22
+ throw new Error(`Artifact bytes do not match the manifest: ${entry.path}`);
23
+ }
24
+ }
25
+ }
26
+ export function selectedWorkspaceChanges(manifest, paths) {
27
+ const changed = manifest.entries.filter((entry) => !sameWorkspaceFile(entry.before, entry.after));
28
+ if (paths === undefined)
29
+ return changed;
30
+ for (const path of paths) {
31
+ if (!changed.some((entry) => entry.path === path || entry.path.startsWith(path + "/")))
32
+ throw new Error(`Selected path has no recorded change: ${path}`);
33
+ }
34
+ return changed.filter((entry) => paths.some((path) => entry.path === path || entry.path.startsWith(path + "/")));
35
+ }
36
+ export function deliverableWorkspaceChanges(manifest, paths) {
37
+ return selectedWorkspaceChanges(manifest, paths).filter((entry) => entry.before !== "unknown");
38
+ }
39
+ export async function materializeWorkspaceBaseline(root, manifest, artifactRoot) {
40
+ for (const entry of manifest.entries) {
41
+ if (entry.before === "unknown")
42
+ continue;
43
+ if (entry.before === null)
44
+ continue;
45
+ await materializeWorkspaceFile(await workspaceFilePath(root, entry.path), entry.before, entry.before.kind === "file" && entry.before.artifactPath
46
+ ? await workspaceFilePath(artifactRoot, entry.before.artifactPath)
47
+ : undefined);
48
+ }
49
+ }
50
+ async function ensureTargetParents(root, relative, mutated) {
51
+ const parts = relative.split("/").slice(0, -1);
52
+ for (let count = 1; count <= parts.length; count += 1) {
53
+ const path = await workspaceFilePath(root, parts.slice(0, count).join("/"));
54
+ const state = await readWorkspaceFile(path);
55
+ if (state === null) {
56
+ await mkdir(path);
57
+ mutated();
58
+ }
59
+ else if (state.kind !== "directory")
60
+ throw new Error(`Target parent changed: ${path}`);
61
+ }
62
+ }
63
+ /** Caller supplies the shared delivery mutation lease. Never reverse unrelated edits. */
64
+ export async function applyWorkspaceFiles(targetRoot, manifest, artifactRoot, paths) {
65
+ const result = {
66
+ applied: false,
67
+ alreadyApplied: false,
68
+ treeMutated: false,
69
+ appliedPaths: [],
70
+ };
71
+ if (manifest.isolation === "live")
72
+ return {
73
+ ...result,
74
+ detail: "Direct results are already in place; no separate apply is available",
75
+ };
76
+ try {
77
+ await verifyWorkspaceFiles(manifest, artifactRoot);
78
+ // Entries with an unknown preimage are retained as custody/disclosure
79
+ // facts, but can never authorize overwriting an existing target. They are
80
+ // therefore excluded from the mutation set while safe selected entries
81
+ // remain deliverable.
82
+ const selected = selectedWorkspaceChanges(manifest, paths);
83
+ const refusedUnknown = selected.filter((entry) => entry.before === "unknown");
84
+ const entries = selected.filter((entry) => entry.before !== "unknown");
85
+ const current = new Map();
86
+ for (const entry of entries)
87
+ current.set(entry.path, await readWorkspaceFile(await workspaceFilePath(targetRoot, entry.path, true)));
88
+ const pendingEntries = entries.filter((entry) => !sameWorkspaceFile(entry.after, current.get(entry.path) ?? null));
89
+ if (pendingEntries.length === 0) {
90
+ const detail = refusedUnknown.length > 0
91
+ ? `Unknown preimage retains custody: ${refusedUnknown.map((entry) => entry.path).join(", ")}`
92
+ : undefined;
93
+ return entries.length === 0 && refusedUnknown.length > 0
94
+ ? { ...result, detail }
95
+ : { ...result, applied: true, alreadyApplied: true, detail };
96
+ }
97
+ for (const entry of pendingEntries) {
98
+ if (!sameWorkspaceFile(entry.before, current.get(entry.path) ?? null))
99
+ return { ...result, detail: `Target preimage changed: ${entry.path}` };
100
+ }
101
+ // Child removals precede directory replacement; creations establish parents first.
102
+ const ordered = [
103
+ ...pendingEntries
104
+ .filter((entry) => entry.after === null)
105
+ .sort((a, b) => b.path.split("/").length - a.path.split("/").length),
106
+ ...pendingEntries
107
+ .filter((entry) => entry.after !== null)
108
+ .sort((a, b) => a.path.split("/").length - b.path.split("/").length),
109
+ ];
110
+ for (const entry of ordered) {
111
+ const target = await workspaceFilePath(targetRoot, entry.path);
112
+ if (!sameWorkspaceFile(entry.before, await readWorkspaceFile(target)))
113
+ return { ...result, detail: `Target changed during delivery: ${entry.path}` };
114
+ const after = entry.after;
115
+ if (after === null) {
116
+ if (entry.before !== "unknown" && entry.before?.kind === "directory")
117
+ await rmdir(target);
118
+ else
119
+ await rm(target);
120
+ }
121
+ else if (after.kind === "directory") {
122
+ if (entry.before !== null &&
123
+ entry.before !== "unknown" &&
124
+ entry.before.kind !== "directory") {
125
+ await rm(target);
126
+ result.treeMutated = true;
127
+ }
128
+ await ensureTargetParents(targetRoot, entry.path, () => {
129
+ result.treeMutated = true;
130
+ });
131
+ await mkdir(target, { recursive: true, mode: after.mode });
132
+ if (entry.before === null)
133
+ result.treeMutated = true;
134
+ await chmod(target, after.mode);
135
+ }
136
+ else {
137
+ await ensureTargetParents(targetRoot, entry.path, () => {
138
+ result.treeMutated = true;
139
+ });
140
+ const temp = join(dirname(target), `.${newId("claudexor-file")}`);
141
+ try {
142
+ await materializeWorkspaceFile(temp, after, after.kind === "file" && after.artifactPath
143
+ ? await workspaceFilePath(artifactRoot, after.artifactPath)
144
+ : undefined);
145
+ if (!sameWorkspaceFile(entry.before, await readWorkspaceFile(target)))
146
+ return { ...result, detail: `Target changed while output was prepared: ${entry.path}` };
147
+ const existing = await lstat(target).catch((error) => {
148
+ if (error.code === "ENOENT")
149
+ return null;
150
+ throw error;
151
+ });
152
+ if (existing?.isDirectory()) {
153
+ await rmdir(target);
154
+ result.treeMutated = true;
155
+ }
156
+ await rename(temp, target);
157
+ }
158
+ finally {
159
+ await rm(temp, { force: true });
160
+ }
161
+ }
162
+ result.treeMutated = true;
163
+ result.appliedPaths.push(entry.path);
164
+ }
165
+ return {
166
+ ...result,
167
+ applied: true,
168
+ ...(refusedUnknown.length > 0
169
+ ? {
170
+ detail: `Unknown preimage retains custody: ${refusedUnknown.map((entry) => entry.path).join(", ")}`,
171
+ }
172
+ : {}),
173
+ };
174
+ }
175
+ catch (error) {
176
+ return { ...result, detail: error instanceof Error ? error.message : String(error) };
177
+ }
178
+ }
179
+ //# sourceMappingURL=files-apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files-apply.js","sourceRoot":"","sources":["../src/files-apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type WorkspaceFileState } from "@claudexor/schema";
2
+ /** Resolve relative entries without following an ancestor link into another tree. */
3
+ export declare function workspaceFilePath(root: string, relative: string, readingPreimage?: boolean): Promise<string>;
4
+ /** One streaming reader supplies both the digest and optional immutable bytes. */
5
+ export declare function readWorkspaceFile(path: string, contentDir?: string): Promise<WorkspaceFileState | null>;
6
+ export declare function sameWorkspaceFile(a: WorkspaceFileState | null | "unknown", b: WorkspaceFileState | null): boolean;
7
+ export declare function directoryInventory(root: string, paths: readonly string[], contentDir?: string, excluded?: readonly string[]): Promise<Map<string, WorkspaceFileState>>;
8
+ /** Materialize exactly one immutable state; callers own target preimage checks. */
9
+ export declare function materializeWorkspaceFile(path: string, state: WorkspaceFileState, contentPath?: string): Promise<void>;
10
+ //# sourceMappingURL=files-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files-io.d.ts","sourceRoot":"","sources":["../src/files-io.ts"],"names":[],"mappings":"AAcA,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGhF,qFAAqF;AACrF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,UAAQ,GACtB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,kFAAkF;AAClF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA+CpC;AAED,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EACxC,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAC3B,OAAO,CAQT;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAgC1C;AAED,mFAAmF;AACnF,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,kBAAkB,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
@@ -0,0 +1,165 @@
1
+ import { createHash } from "node:crypto";
2
+ import { constants } from "node:fs";
3
+ import { chmod, lstat, mkdir, open, readlink, readdir, rename, rm, symlink, } from "node:fs/promises";
4
+ import { dirname, join, resolve, sep } from "node:path";
5
+ import { WorkspaceScopePath } from "@claudexor/schema";
6
+ import { newId, sensitiveResourcePolicy } from "@claudexor/util";
7
+ /** Resolve relative entries without following an ancestor link into another tree. */
8
+ export async function workspaceFilePath(root, relative, readingPreimage = false) {
9
+ WorkspaceScopePath.parse(relative);
10
+ const base = resolve(root);
11
+ const path = resolve(base, relative);
12
+ if (path !== base && !path.startsWith(base + sep))
13
+ throw new Error("File path escapes its root");
14
+ let current = base;
15
+ for (const part of relative.split("/").slice(0, -1)) {
16
+ current = join(current, part);
17
+ const stat = await lstat(current).catch((error) => {
18
+ if (error.code === "ENOENT" || (readingPreimage && error.code === "ENOTDIR"))
19
+ return null;
20
+ throw error;
21
+ });
22
+ if (stat && (stat.isSymbolicLink() || (!stat.isDirectory() && !readingPreimage)))
23
+ throw new Error(`File ancestor is not a directory: ${current}`);
24
+ }
25
+ return path;
26
+ }
27
+ /** One streaming reader supplies both the digest and optional immutable bytes. */
28
+ export async function readWorkspaceFile(path, contentDir) {
29
+ const stat = await lstat(path).catch((error) => {
30
+ if (error.code === "ENOENT" || error.code === "ENOTDIR")
31
+ return null;
32
+ throw error;
33
+ });
34
+ if (!stat)
35
+ return null;
36
+ if (stat.isSymbolicLink())
37
+ return { kind: "symlink", target: await readlink(path) };
38
+ if (stat.isDirectory())
39
+ return { kind: "directory", mode: stat.mode & 0o777 };
40
+ if (!stat.isFile())
41
+ throw new Error(`Unsupported filesystem entry: ${path}`);
42
+ if (contentDir)
43
+ await mkdir(contentDir, { recursive: true });
44
+ const input = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
45
+ const temp = contentDir ? join(contentDir, newId("pending")) : null;
46
+ let output = null;
47
+ const hash = createHash("sha256");
48
+ const scanner = contentDir ? sensitiveResourcePolicy.createContentScanner() : null;
49
+ let sizeBytes = 0;
50
+ try {
51
+ output = temp ? await open(temp, "wx", 0o600) : null;
52
+ for await (const chunk of input.createReadStream({ autoClose: false })) {
53
+ hash.update(chunk);
54
+ scanner?.write(chunk.toString("latin1"));
55
+ sizeBytes += chunk.length;
56
+ if (output)
57
+ await output.writeFile(chunk);
58
+ }
59
+ const after = await lstat(path);
60
+ if (stat.dev !== after.dev ||
61
+ stat.ino !== after.ino ||
62
+ stat.size !== sizeBytes ||
63
+ stat.mtimeMs !== after.mtimeMs ||
64
+ stat.ctimeMs !== after.ctimeMs)
65
+ throw new Error(`File changed while being captured: ${path}`);
66
+ const digest = hash.digest("hex");
67
+ if (scanner?.finish())
68
+ throw new Error("File contains credential material; no artifact was published");
69
+ if (output && temp && contentDir) {
70
+ await output.sync();
71
+ await output.close();
72
+ await rename(temp, join(contentDir, digest));
73
+ }
74
+ return { kind: "file", sha256: `sha256:${digest}`, sizeBytes, mode: stat.mode & 0o777 };
75
+ }
76
+ finally {
77
+ await input.close();
78
+ await output?.close().catch(() => undefined);
79
+ if (temp)
80
+ await rm(temp, { force: true });
81
+ }
82
+ }
83
+ export function sameWorkspaceFile(a, b) {
84
+ if (a === "unknown")
85
+ return false;
86
+ if (a === null || b === null)
87
+ return a === b;
88
+ if (a.kind !== b.kind)
89
+ return false;
90
+ if (a.kind === "file" && b.kind === "file")
91
+ return a.sha256 === b.sha256 && a.sizeBytes === b.sizeBytes && a.mode === b.mode;
92
+ if (a.kind === "directory" && b.kind === "directory")
93
+ return a.mode === b.mode;
94
+ return a.kind === "symlink" && b.kind === "symlink" && a.target === b.target;
95
+ }
96
+ export async function directoryInventory(root, paths, contentDir, excluded = []) {
97
+ const entries = new Map();
98
+ const visited = new Set();
99
+ const walk = async (relative) => {
100
+ if (visited.has(relative) ||
101
+ excluded.some((prefix) => relative === prefix || relative.startsWith(prefix + "/")))
102
+ return;
103
+ visited.add(relative);
104
+ const path = await workspaceFilePath(root, relative);
105
+ if (contentDir && sensitiveResourcePolicy.classifyPath(relative).sensitive)
106
+ throw new Error("Selected file uses a credential-resource path; no artifact was published");
107
+ const state = await readWorkspaceFile(path, contentDir);
108
+ if (!state)
109
+ return;
110
+ if (relative !== ".")
111
+ entries.set(relative, state);
112
+ if (state.kind === "directory") {
113
+ for (const name of (await readdir(path)).sort())
114
+ await walk(relative === "." ? name : `${relative}/${name}`);
115
+ }
116
+ };
117
+ for (const relative of paths) {
118
+ WorkspaceScopePath.parse(relative);
119
+ const parts = relative.split("/");
120
+ for (let count = 1; count < parts.length; count += 1) {
121
+ const parent = parts.slice(0, count).join("/");
122
+ const state = await readWorkspaceFile(await workspaceFilePath(root, parent));
123
+ if (state?.kind === "directory")
124
+ entries.set(parent, state);
125
+ }
126
+ await walk(relative);
127
+ }
128
+ return entries;
129
+ }
130
+ /** Materialize exactly one immutable state; callers own target preimage checks. */
131
+ export async function materializeWorkspaceFile(path, state, contentPath) {
132
+ await mkdir(dirname(path), { recursive: true });
133
+ if (state.kind === "directory") {
134
+ await mkdir(path, { recursive: true, mode: state.mode });
135
+ await chmod(path, state.mode);
136
+ }
137
+ else if (state.kind === "symlink") {
138
+ await symlink(state.target, path);
139
+ }
140
+ else {
141
+ if (!contentPath)
142
+ throw new Error("File state has no immutable content");
143
+ const source = await open(contentPath, constants.O_RDONLY | constants.O_NOFOLLOW);
144
+ let target = null;
145
+ const hash = createHash("sha256");
146
+ let bytes = 0;
147
+ try {
148
+ target = await open(path, "wx", state.mode);
149
+ for await (const chunk of source.createReadStream({ autoClose: false })) {
150
+ hash.update(chunk);
151
+ bytes += chunk.length;
152
+ await target.writeFile(chunk);
153
+ }
154
+ if (`sha256:${hash.digest("hex")}` !== state.sha256 || bytes !== state.sizeBytes)
155
+ throw new Error("File artifact does not match its recorded hash and size");
156
+ await target.chmod(state.mode);
157
+ await target.sync();
158
+ }
159
+ finally {
160
+ await source.close();
161
+ await target?.close();
162
+ }
163
+ }
164
+ }
165
+ //# sourceMappingURL=files-io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files-io.js","sourceRoot":"","sources":["../src/files-io.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,4 +8,7 @@ export * from "./anchor-store.js";
8
8
  export * from "./manager.js";
9
9
  export * from "./lanes.js";
10
10
  export * from "./thread-tree.js";
11
+ export * from "./directory-workspace.js";
12
+ export * from "./files-io.js";
13
+ export * from "./files-apply.js";
11
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -8,4 +8,7 @@ export * from "./anchor-store.js";
8
8
  export * from "./manager.js";
9
9
  export * from "./lanes.js";
10
10
  export * from "./thread-tree.js";
11
+ export * from "./directory-workspace.js";
12
+ export * from "./files-io.js";
13
+ export * from "./files-apply.js";
11
14
  //# 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,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
package/dist/manager.d.ts CHANGED
@@ -1,11 +1,14 @@
1
- import type { AccessProfile, DirtyPolicy, WorkspaceEnvelope } from "@claudexor/schema";
1
+ import type { AccessProfile, DirtyPolicy, WorkspaceEnvelope, WorkspaceKind } from "@claudexor/schema";
2
2
  import { type LaneHomeEnv } from "./lanes.js";
3
+ import { type CapturedWorkspaceFiles } from "./directory-workspace.js";
3
4
  export interface CreateEnvelopeOptions {
4
5
  taskId: string;
5
6
  attemptId: string;
6
7
  baseRef?: string;
7
8
  accessProfile?: AccessProfile;
8
9
  dirtyPolicy?: DirtyPolicy;
10
+ workspaceKind?: WorkspaceKind;
11
+ scopePaths?: string[];
9
12
  /**
10
13
  * Run against the live `repoRoot` directly instead of an isolated git worktree.
11
14
  * Used for external stateful environments that may not be git repositories
@@ -20,26 +23,13 @@ export interface CreateEnvelopeOptions {
20
23
  * per-harness config dirs, and dirty-tree handling. Claudexor owns these
21
24
  * envelopes (it does not rely on a harness's native --worktree).
22
25
  */
23
- /** `ps` start time for a pid, or null when unavailable. Pid+start-time
24
- * equality is the recycling-proof liveness identity for envelope owners
25
- * (command names/titles mutate; the kernel start time never does). */
26
- export declare function processStartTime(pid: number): string | null;
26
+ export { processStartTime } from "./envelope-recovery.js";
27
27
  export declare class WorkspaceManager {
28
28
  private readonly repoRoot;
29
29
  private readonly runtimeRoot;
30
30
  private readonly artifactOwnership;
31
- /**
32
- * Envelope ids whose worktree bridge THIS manager's prep actually created
33
- * (`ensureClaudeBridge` returned `created: true`) during THIS run. The
34
- * diff-exclusion of the generated `CLAUDE.md` bridge is gated on this recorded
35
- * fact — not on content alone (A-3 residual): byte-equality cannot tell "we
36
- * wrote this bridge this run" from "a candidate rewrote a PRE-EXISTING
37
- * committed CLAUDE.md to exactly CLAUDE_BRIDGE_CONTENT", and excluding the
38
- * latter would silently drop the candidate's real edit. This state is
39
- * intentionally in-memory and per-manager: if a daemon upgrade recreates the
40
- * manager mid-run the fact is lost, and its ABSENCE fails toward CAPTURE
41
- * (exclude only on positive proof), matching the safe-direction doctrine.
42
- */
31
+ /** Current-prep bridge ownership, also persisted beside owner.json for recovery.
32
+ * Only a bridge created here and still byte-identical is excluded from capture. */
43
33
  private readonly bridgeCreatedEnvelopes;
44
34
  constructor(repoRoot: string, options?: {
45
35
  runtimeRoot?: string;
@@ -55,14 +45,6 @@ export declare class WorkspaceManager {
55
45
  ensureArtifactDirectory(env: WorkspaceEnvelope): string;
56
46
  ownedArtifactRelativeDirectory(env: WorkspaceEnvelope): string | null;
57
47
  create(opts: CreateEnvelopeOptions): Promise<WorkspaceEnvelope>;
58
- /**
59
- * Best-effort baseline copy of the live tree for in-place diff(). Copies each
60
- * top-level entry individually while skipping only VCS/heavy ephemeral dirs.
61
- * The baseline is external, so project `.claudexor/` content is ordinary user
62
- * state and is copied like every other project path. On any failure the
63
- * baseline is absent and diff() returns empty; reviewers still read the tree.
64
- */
65
- private snapshotBaseline;
66
48
  /** Env vars that scope a child harness to this envelope (HOME + per-harness config dirs). */
67
49
  envFor(env: WorkspaceEnvelope): Record<string, string>;
68
50
  /**
@@ -96,6 +78,11 @@ export declare class WorkspaceManager {
96
78
  binarySecretLike: boolean;
97
79
  }>;
98
80
  diff(env: WorkspaceEnvelope): Promise<string>;
81
+ /** Directory work products retain full files, independently of diff previews. */
82
+ captureFiles(env: WorkspaceEnvelope, runRoot: string, options?: {
83
+ observedPaths?: string[];
84
+ sourceRoot?: string;
85
+ }): Promise<CapturedWorkspaceFiles>;
99
86
  /** The created-this-run bridge fact for diff(): in-memory set first, else
100
87
  * the persisted envelope-id-bound marker (survives manager recreation). */
101
88
  private bridgeCreatedFact;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAUvF,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AA4BjE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH;;sEAEsE;AACtE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS3D;AAED,qBAAa,gBAAgB;IAmBzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAlB3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqB;IAE5D,YACmB,QAAQ,EAAE,MAAM,EACjC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,EAMvC;IAED,OAAO,CAAC,aAAa;IAIrB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAiBpB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAEtD;IAED,8BAA8B,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAEpE;IAEK,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6IpE;IAED;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAcxB,6FAA6F;IAC7F,MAAM,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrD;IAED;;;;;;;;;;;;OAYG;IACH,eAAe,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAyBtE;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAEtF;IAEK,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC;QACjD,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC,CAgGD;IAEK,IAAI,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAElD;IAED;gFAC4E;IAC5E,OAAO,CAAC,iBAAiB;IAKnB,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DnD;IAED;;;;;;;OAOG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCpE;CACF"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAC;AA4BlC,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,qBAAa,gBAAgB;IASzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD;uFACmF;IACnF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqB;IAE5D,YACmB,QAAQ,EAAE,MAAM,EACjC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,EAMvC;IAED,OAAO,CAAC,aAAa;IAIrB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAiBpB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAEtD;IAED,8BAA8B,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAEpE;IAEK,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyJpE;IAED,6FAA6F;IAC7F,MAAM,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrD;IAED;;;;;;;;;;;;OAYG;IACH,eAAe,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAyBtE;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAEtF;IAEK,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC;QACjD,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC,CAoGD;IAEK,IAAI,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAElD;IAED,iFAAiF;IAC3E,YAAY,CAChB,GAAG,EAAE,iBAAiB,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;KAChB,GACL,OAAO,CAAC,sBAAsB,CAAC,CAWjC;IAED;gFAC4E;IAC5E,OAAO,CAAC,iBAAiB;IAKnB,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DnD;IAED;;;;;;;OAOG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCpE;CACF"}
package/dist/manager.js CHANGED
@@ -1,5 +1,4 @@
1
- import { execFileSync } from "node:child_process";
2
- import { cpSync, existsSync, mkdtempSync, readdirSync, rmSync, writeFileSync } from "node:fs";
1
+ import { existsSync, mkdtempSync, readdirSync, rmSync, writeFileSync } from "node:fs";
3
2
  import { tmpdir } from "node:os";
4
3
  import { join, sep } from "node:path";
5
4
  import { WorkspaceEnvelope as WorkspaceEnvelopeSchema } from "@claudexor/schema";
@@ -7,8 +6,9 @@ import { runCaptureRaw, WorkspaceError } from "@claudexor/core";
7
6
  import { containsSecretLikeToken, ensureDir, newId, nowIso, projectRuntimeDir, } from "@claudexor/util";
8
7
  import { ensureLaneHomeEnv } from "./lanes.js";
9
8
  import { ArtifactOwnership } from "./artifact-ownership.js";
10
- import { readEnvelopeRecoveryRecord } from "./envelope-recovery.js";
11
- import { excludePlainDiffPathPrefix, plainDiffBinarySecretLike, relativizePlainDiffHeaders, } from "./plain-diff.js";
9
+ import { captureDirectoryWorkspace, createDirectoryEnvelope, } from "./directory-workspace.js";
10
+ import { processStartTime, readEnvelopeRecoveryRecord } from "./envelope-recovery.js";
11
+ import { excludePlainDiffPathPrefix, plainDiffBinarySecretLike, relativizePlainDiffHeaders, snapshotLegacyDirectoryBaseline, } from "./plain-diff.js";
12
12
  import { CLAUDE_BRIDGE_BASENAME, bridgeCreatedMarkerMatches, ensureClaudeBridge, isGeneratedClaudeBridge, writeBridgeCreatedMarker, } from "./claude-bridge.js";
13
13
  import { branchDelete, captureWorkingTreeTransient, isolatedCloneAdd, isGitRepo, revParse, snapshotTree, statusPorcelain, stashCreate, worktreePrune, worktreeRemove, } from "./git.js";
14
14
  /**
@@ -16,36 +16,13 @@ import { branchDelete, captureWorkingTreeTransient, isolatedCloneAdd, isGitRepo,
16
16
  * per-harness config dirs, and dirty-tree handling. Claudexor owns these
17
17
  * envelopes (it does not rely on a harness's native --worktree).
18
18
  */
19
- /** `ps` start time for a pid, or null when unavailable. Pid+start-time
20
- * equality is the recycling-proof liveness identity for envelope owners
21
- * (command names/titles mutate; the kernel start time never does). */
22
- export function processStartTime(pid) {
23
- try {
24
- const out = execFileSync("ps", ["-p", String(pid), "-o", "lstart="], {
25
- encoding: "utf8",
26
- }).trim();
27
- return out.length > 0 ? out : null;
28
- }
29
- catch {
30
- return null;
31
- }
32
- }
19
+ export { processStartTime } from "./envelope-recovery.js";
33
20
  export class WorkspaceManager {
34
21
  repoRoot;
35
22
  runtimeRoot;
36
23
  artifactOwnership;
37
- /**
38
- * Envelope ids whose worktree bridge THIS manager's prep actually created
39
- * (`ensureClaudeBridge` returned `created: true`) during THIS run. The
40
- * diff-exclusion of the generated `CLAUDE.md` bridge is gated on this recorded
41
- * fact — not on content alone (A-3 residual): byte-equality cannot tell "we
42
- * wrote this bridge this run" from "a candidate rewrote a PRE-EXISTING
43
- * committed CLAUDE.md to exactly CLAUDE_BRIDGE_CONTENT", and excluding the
44
- * latter would silently drop the candidate's real edit. This state is
45
- * intentionally in-memory and per-manager: if a daemon upgrade recreates the
46
- * manager mid-run the fact is lost, and its ABSENCE fails toward CAPTURE
47
- * (exclude only on positive proof), matching the safe-direction doctrine.
48
- */
24
+ /** Current-prep bridge ownership, also persisted beside owner.json for recovery.
25
+ * Only a bridge created here and still byte-identical is excluded from capture. */
49
26
  bridgeCreatedEnvelopes = new Set();
50
27
  constructor(repoRoot, options = {}) {
51
28
  this.repoRoot = repoRoot;
@@ -120,7 +97,18 @@ export class WorkspaceManager {
120
97
  created_at: nowIso(),
121
98
  envelope_id: envelopeId,
122
99
  workspace_mode: workspaceMode,
100
+ workspace_kind: opts.workspaceKind,
123
101
  }) + "\n");
102
+ if (opts.workspaceKind === "directory") {
103
+ return createDirectoryEnvelope({
104
+ ...opts,
105
+ sourceRoot: this.repoRoot,
106
+ envelopeRoot: base,
107
+ envelopeId,
108
+ homeDir,
109
+ harnessConfigDirs,
110
+ });
111
+ }
124
112
  // In-place mode: mutate the live repoRoot directly (no isolated checkout).
125
113
  // Used for thread turns (chat-first: the next turn sees this one's work) and
126
114
  // for stateful external environments where runtime state is the deliverable.
@@ -134,7 +122,7 @@ export class WorkspaceManager {
134
122
  const readOnly = opts.accessProfile === "readonly";
135
123
  const baseSha = !readOnly && gitRepo ? await snapshotTree(this.repoRoot) : null;
136
124
  if (!readOnly && !gitRepo)
137
- this.snapshotBaseline(base);
125
+ snapshotLegacyDirectoryBaseline(this.repoRoot, base);
138
126
  return WorkspaceEnvelopeSchema.parse({
139
127
  id: envelopeId,
140
128
  task_id: opts.taskId,
@@ -217,28 +205,6 @@ export class WorkspaceManager {
217
205
  }
218
206
  return envelope;
219
207
  }
220
- /**
221
- * Best-effort baseline copy of the live tree for in-place diff(). Copies each
222
- * top-level entry individually while skipping only VCS/heavy ephemeral dirs.
223
- * The baseline is external, so project `.claudexor/` content is ordinary user
224
- * state and is copied like every other project path. On any failure the
225
- * baseline is absent and diff() returns empty; reviewers still read the tree.
226
- */
227
- snapshotBaseline(base) {
228
- const baseline = join(base, "baseline");
229
- const skip = new Set([".git", "node_modules", "__pycache__", ".venv", "venv"]);
230
- try {
231
- ensureDir(baseline);
232
- for (const entry of readdirSync(this.repoRoot)) {
233
- if (skip.has(entry))
234
- continue;
235
- cpSync(join(this.repoRoot, entry), join(baseline, entry), { recursive: true });
236
- }
237
- }
238
- catch {
239
- /* baseline unavailable -> diff() falls back to empty */
240
- }
241
- }
242
208
  /** Env vars that scope a child harness to this envelope (HOME + per-harness config dirs). */
243
209
  envFor(env) {
244
210
  return {
@@ -304,6 +270,8 @@ export class WorkspaceManager {
304
270
  return ensureLaneHomeEnv(this.runtimeRoot, threadId, harnessId, profileId);
305
271
  }
306
272
  async captureDiff(env) {
273
+ if (env.workspace_kind === "directory")
274
+ throw new WorkspaceError("Directory results use captureFiles; a text diff is not their work product");
307
275
  if (env.policy_profile === "readonly") {
308
276
  return { diff: "", binarySecretLike: false };
309
277
  }
@@ -394,6 +362,19 @@ export class WorkspaceManager {
394
362
  async diff(env) {
395
363
  return (await this.captureDiff(env)).diff;
396
364
  }
365
+ /** Directory work products retain full files, independently of diff previews. */
366
+ async captureFiles(env, runRoot, options = {}) {
367
+ if (env.workspace_kind !== "directory")
368
+ throw new WorkspaceError("captureFiles requires a directory workspace");
369
+ const owned = this.ownedArtifactRelativeDirectory(env);
370
+ return captureDirectoryWorkspace({
371
+ executionRoot: env.worktree_path,
372
+ envelopeRoot: this.envelopeBase(env.task_id, env.attempt_id),
373
+ runRoot,
374
+ ...options,
375
+ excludedPaths: owned ? [owned] : [],
376
+ });
377
+ }
397
378
  /** The created-this-run bridge fact for diff(): in-memory set first, else
398
379
  * the persisted envelope-id-bound marker (survives manager recreation). */
399
380
  bridgeCreatedFact(env) {
@@ -410,7 +391,7 @@ export class WorkspaceManager {
410
391
  const inPlace = env.worktree_path === env.repo_root;
411
392
  if (inPlace)
412
393
  this.artifactOwnership.removeDirectory(env);
413
- if (!inPlace) {
394
+ if (!inPlace && env.workspace_kind !== "directory") {
414
395
  const privateClone = existsSync(join(this.envelopeBase(env.task_id, env.attempt_id), "private-clone-v1"));
415
396
  if (!privateClone) {
416
397
  try {
@@ -453,7 +434,7 @@ export class WorkspaceManager {
453
434
  catch {
454
435
  /* best-effort */
455
436
  }
456
- if (!inPlace) {
437
+ if (!inPlace && env.workspace_kind !== "directory") {
457
438
  try {
458
439
  await worktreePrune(this.repoRoot);
459
440
  }
@@ -478,15 +459,17 @@ export class WorkspaceManager {
478
459
  throw new WorkspaceError(`refusing to dispose orphan ${taskId}/${attemptId}: artifact ownership exists without valid recovery identity`);
479
460
  }
480
461
  const inPlace = recovery?.workspaceMode === "in_place";
462
+ const directory = recovery?.workspaceKind === "directory";
481
463
  const envelope = WorkspaceEnvelopeSchema.parse({
482
464
  id: recovery?.envelopeId ?? newId("env"),
483
465
  task_id: taskId,
484
466
  attempt_id: attemptId,
485
467
  repo_root: this.repoRoot,
486
- base_ref: "HEAD",
487
- base_sha: inPlace ? null : "0000000000000000000000000000000000000000",
468
+ base_ref: directory ? null : "HEAD",
469
+ base_sha: directory || inPlace ? null : "0000000000000000000000000000000000000000",
470
+ workspace_kind: recovery?.workspaceKind,
488
471
  worktree_path: inPlace ? this.repoRoot : join(base, "tree"),
489
- branch_name: inPlace ? "inplace" : `claudexor/${taskId}/${attemptId}`,
472
+ branch_name: directory ? null : inPlace ? "inplace" : `claudexor/${taskId}/${attemptId}`,
490
473
  home_dir: join(base, "home"),
491
474
  harness_config_dirs: {
492
475
  codex_home: join(base, "home", ".codex"),
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ /** Legacy live convergence capture only. Explicit directory workspaces use a selected footprint. */
2
+ export declare function snapshotLegacyDirectoryBaseline(repoRoot: string, base: string): void;
1
3
  /** Rewrite only structural GNU/BSD `diff -ruN` headers to git-style paths.
2
4
  * Missing-side headers become `/dev/null`, making added/deleted files exactly
3
5
  * reversible with `git apply --no-index`; hunk content is never rewritten. */
@@ -1 +1 @@
1
- {"version":3,"file":"plain-diff.d.ts","sourceRoot":"","sources":["../src/plain-diff.ts"],"names":[],"mappings":"AAOA;;8EAE8E;AAC9E,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAkDR;AAED;;;kFAGkF;AAClF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA6BpF;AAED;kFACkF;AAClF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CA0BjF"}
1
+ {"version":3,"file":"plain-diff.d.ts","sourceRoot":"","sources":["../src/plain-diff.ts"],"names":[],"mappings":"AAiBA,oGAAoG;AACpG,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAYpF;AAED;;8EAE8E;AAC9E,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAkDR;AAED;;;kFAGkF;AAClF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA6BpF;AAED;kFACkF;AAClF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CA0BjF"}
@@ -1,8 +1,23 @@
1
- import { closeSync, constants, existsSync, fstatSync, openSync, readFileSync } from "node:fs";
2
- import { resolve, sep } from "node:path";
1
+ import { closeSync, constants, cpSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readdirSync, } from "node:fs";
2
+ import { join, resolve, sep } from "node:path";
3
3
  import { parseUnifiedDiff } from "@claudexor/core";
4
4
  import { containsSecretLikeToken } from "@claudexor/util";
5
5
  const MAX_BINARY_SECRET_SCAN_BYTES = 32 * 1024 * 1024;
6
+ /** Legacy live convergence capture only. Explicit directory workspaces use a selected footprint. */
7
+ export function snapshotLegacyDirectoryBaseline(repoRoot, base) {
8
+ const baseline = join(base, "baseline");
9
+ const skip = new Set([".git", "node_modules", "__pycache__", ".venv", "venv"]);
10
+ try {
11
+ mkdirSync(baseline, { recursive: true });
12
+ for (const entry of readdirSync(repoRoot)) {
13
+ if (!skip.has(entry))
14
+ cpSync(join(repoRoot, entry), join(baseline, entry), { recursive: true });
15
+ }
16
+ }
17
+ catch {
18
+ /* Existing captureDiff reports unavailable legacy capture. */
19
+ }
20
+ }
6
21
  /** Rewrite only structural GNU/BSD `diff -ruN` headers to git-style paths.
7
22
  * Missing-side headers become `/dev/null`, making added/deleted files exactly
8
23
  * reversible with `git apply --no-index`; hunk content is never rewritten. */
@@ -1 +1 @@
1
- {"version":3,"file":"plain-diff.js","sourceRoot":"","sources":["../src/plain-diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plain-diff.js","sourceRoot":"","sources":["../src/plain-diff.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.10.5",
3
+ "version": "3.12.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/schema": "3.10.5",
20
- "@claudexor/core": "3.10.5",
21
- "@claudexor/util": "3.10.5"
19
+ "@claudexor/core": "3.12.0",
20
+ "@claudexor/schema": "3.12.0",
21
+ "@claudexor/util": "3.12.0"
22
22
  },
23
23
  "repository": {
24
24
  "type": "git",