@claudexor/workspace 4.8.2 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/anchor-store.d.ts +20 -9
  2. package/dist/anchor-store.d.ts.map +1 -1
  3. package/dist/anchor-store.js +89 -14
  4. package/dist/anchor-store.js.map +1 -1
  5. package/dist/capture-failure.d.ts.map +1 -1
  6. package/dist/capture-failure.js +7 -2
  7. package/dist/capture-failure.js.map +1 -1
  8. package/dist/capture-inventory.d.ts +10 -0
  9. package/dist/capture-inventory.d.ts.map +1 -0
  10. package/dist/capture-inventory.js +63 -0
  11. package/dist/capture-inventory.js.map +1 -0
  12. package/dist/capture-objects.d.ts +32 -0
  13. package/dist/capture-objects.d.ts.map +1 -0
  14. package/dist/capture-objects.js +129 -0
  15. package/dist/capture-objects.js.map +1 -0
  16. package/dist/cleanup-fault.d.ts +18 -0
  17. package/dist/cleanup-fault.d.ts.map +1 -0
  18. package/dist/cleanup-fault.js +45 -0
  19. package/dist/cleanup-fault.js.map +1 -0
  20. package/dist/continuation-evidence.d.ts +61 -15
  21. package/dist/continuation-evidence.d.ts.map +1 -1
  22. package/dist/continuation-evidence.js +151 -36
  23. package/dist/continuation-evidence.js.map +1 -1
  24. package/dist/continuation-facts.d.ts +93 -0
  25. package/dist/continuation-facts.d.ts.map +1 -0
  26. package/dist/continuation-facts.js +162 -0
  27. package/dist/continuation-facts.js.map +1 -0
  28. package/dist/directory-workspace.d.ts +6 -1
  29. package/dist/directory-workspace.d.ts.map +1 -1
  30. package/dist/directory-workspace.js +21 -3
  31. package/dist/directory-workspace.js.map +1 -1
  32. package/dist/files-io.d.ts.map +1 -1
  33. package/dist/files-io.js +1 -7
  34. package/dist/files-io.js.map +1 -1
  35. package/dist/fs-presence.d.ts +12 -0
  36. package/dist/fs-presence.d.ts.map +1 -0
  37. package/dist/fs-presence.js +35 -0
  38. package/dist/fs-presence.js.map +1 -0
  39. package/dist/git-nested-repositories.d.ts.map +1 -1
  40. package/dist/git-nested-repositories.js +11 -2
  41. package/dist/git-nested-repositories.js.map +1 -1
  42. package/dist/git-observed.d.ts +75 -0
  43. package/dist/git-observed.d.ts.map +1 -0
  44. package/dist/git-observed.js +172 -0
  45. package/dist/git-observed.js.map +1 -0
  46. package/dist/git-result.d.ts +36 -0
  47. package/dist/git-result.d.ts.map +1 -0
  48. package/dist/git-result.js +96 -0
  49. package/dist/git-result.js.map +1 -0
  50. package/dist/git-run.d.ts +11 -0
  51. package/dist/git-run.d.ts.map +1 -1
  52. package/dist/git-run.js +24 -0
  53. package/dist/git-run.js.map +1 -1
  54. package/dist/git-snapshot.d.ts +40 -0
  55. package/dist/git-snapshot.d.ts.map +1 -0
  56. package/dist/git-snapshot.js +238 -0
  57. package/dist/git-snapshot.js.map +1 -0
  58. package/dist/git-transient-capture.d.ts +63 -16
  59. package/dist/git-transient-capture.d.ts.map +1 -1
  60. package/dist/git-transient-capture.js +170 -57
  61. package/dist/git-transient-capture.js.map +1 -1
  62. package/dist/git.d.ts +46 -21
  63. package/dist/git.d.ts.map +1 -1
  64. package/dist/git.js +164 -103
  65. package/dist/git.js.map +1 -1
  66. package/dist/index.d.ts +9 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +9 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/lanes.d.ts +2 -1
  71. package/dist/lanes.d.ts.map +1 -1
  72. package/dist/lanes.js +7 -6
  73. package/dist/lanes.js.map +1 -1
  74. package/dist/manager.d.ts +21 -7
  75. package/dist/manager.d.ts.map +1 -1
  76. package/dist/manager.js +30 -17
  77. package/dist/manager.js.map +1 -1
  78. package/dist/object-compose.d.ts +58 -0
  79. package/dist/object-compose.d.ts.map +1 -0
  80. package/dist/object-compose.js +444 -0
  81. package/dist/object-compose.js.map +1 -0
  82. package/dist/object-materialize.d.ts +52 -0
  83. package/dist/object-materialize.d.ts.map +1 -0
  84. package/dist/object-materialize.js +467 -0
  85. package/dist/object-materialize.js.map +1 -0
  86. package/dist/object-occupied.d.ts +27 -0
  87. package/dist/object-occupied.d.ts.map +1 -0
  88. package/dist/object-occupied.js +131 -0
  89. package/dist/object-occupied.js.map +1 -0
  90. package/dist/object-revert.d.ts +45 -0
  91. package/dist/object-revert.d.ts.map +1 -0
  92. package/dist/object-revert.js +265 -0
  93. package/dist/object-revert.js.map +1 -0
  94. package/dist/object-saved-files.d.ts +50 -0
  95. package/dist/object-saved-files.d.ts.map +1 -0
  96. package/dist/object-saved-files.js +176 -0
  97. package/dist/object-saved-files.js.map +1 -0
  98. package/dist/object-sparse.d.ts +22 -0
  99. package/dist/object-sparse.d.ts.map +1 -0
  100. package/dist/object-sparse.js +72 -0
  101. package/dist/object-sparse.js.map +1 -0
  102. package/dist/object-store-leases.d.ts +41 -0
  103. package/dist/object-store-leases.d.ts.map +1 -0
  104. package/dist/object-store-leases.js +277 -0
  105. package/dist/object-store-leases.js.map +1 -0
  106. package/dist/object-store-roots.d.ts +25 -0
  107. package/dist/object-store-roots.d.ts.map +1 -0
  108. package/dist/object-store-roots.js +114 -0
  109. package/dist/object-store-roots.js.map +1 -0
  110. package/dist/object-store.d.ts +110 -0
  111. package/dist/object-store.d.ts.map +1 -0
  112. package/dist/object-store.js +404 -0
  113. package/dist/object-store.js.map +1 -0
  114. package/dist/object-transfer.d.ts +41 -0
  115. package/dist/object-transfer.d.ts.map +1 -0
  116. package/dist/object-transfer.js +267 -0
  117. package/dist/object-transfer.js.map +1 -0
  118. package/dist/plain-diff-capture.d.ts +1 -2
  119. package/dist/plain-diff-capture.d.ts.map +1 -1
  120. package/dist/plain-diff-capture.js +2 -7
  121. package/dist/plain-diff-capture.js.map +1 -1
  122. package/dist/plain-diff.d.ts +0 -4
  123. package/dist/plain-diff.d.ts.map +1 -1
  124. package/dist/plain-diff.js +2 -44
  125. package/dist/plain-diff.js.map +1 -1
  126. package/dist/raw-patch.d.ts.map +1 -1
  127. package/dist/raw-patch.js +5 -8
  128. package/dist/raw-patch.js.map +1 -1
  129. package/dist/run-expiry.d.ts +3 -0
  130. package/dist/run-expiry.d.ts.map +1 -0
  131. package/dist/run-expiry.js +15 -0
  132. package/dist/run-expiry.js.map +1 -0
  133. package/dist/thread-tree.d.ts +36 -2
  134. package/dist/thread-tree.d.ts.map +1 -1
  135. package/dist/thread-tree.js +87 -11
  136. package/dist/thread-tree.js.map +1 -1
  137. package/package.json +5 -5
@@ -1,91 +1,171 @@
1
- import { mkdirSync, mkdtempSync, rmSync } from "node:fs";
1
+ import { existsSync, mkdirSync, mkdtempSync, rmSync } from "node:fs";
2
2
  import { tmpdir } from "node:os";
3
- import { join } from "node:path";
4
- import { CaptureOutputExceeded, parseUnifiedDiff, WorkspaceError } from "@claudexor/core";
5
- import { containsSecretLikeToken } from "@claudexor/util";
3
+ import { delimiter, join } from "node:path";
4
+ import { CAPTURE_BUFFER_BUDGET_BYTES, CaptureOutputExceeded, WorkspaceError, } from "@claudexor/core";
5
+ import { changedFileInventory } from "./capture-inventory.js";
6
+ import { noteCleanupFault } from "./cleanup-fault.js";
7
+ import { estimatePatchViewBytes, objectDirectoryProgress, preflightCaptureSpace, } from "./capture-objects.js";
6
8
  import { nestedRepositoryExcludes, untrackedNestedRepositories, } from "./git-nested-repositories.js";
7
- import { assertNoBinaryStubs, git, gitEnv } from "./git-run.js";
8
- export async function captureWorkingTreeTransient(repo, baseSha, pathExcludes = []) {
9
+ import { gitObserved, GitOperationError, proofStallMs, treeBlobBytes } from "./git-observed.js";
10
+ import { makeGitObjectResult, repositoryObjectFormat, storeBoundaryCommit, treeOf, } from "./git-result.js";
11
+ import { assertNoBinaryStubs, gitEnv, SCRATCH_INDEX_CONFIG } from "./git-run.js";
12
+ import { PINNED_DIFF_CONFIG, PINNED_DIFF_FLAGS } from "./object-compose.js";
13
+ import { assertProjectObjectFormat, beginPendingRoots, endPendingRoots, objectStorePath, retainInObjectStore, } from "./object-store.js";
14
+ function alternates(paths) {
15
+ // Git parses this as a path-list; C-style quoting keeps a legal `:` in a
16
+ // macOS path from becoming a separator (and escapes quotes/backslashes).
17
+ return paths.map((path) => JSON.stringify(path)).join(delimiter);
18
+ }
19
+ export async function captureWorkingTreeTransient(repo, baseSha, pathExcludes = [], options = {}) {
20
+ const projectRoot = options.projectRoot ?? repo;
21
+ const viewLimit = options.viewLimitBytes ?? CAPTURE_BUFFER_BUDGET_BYTES;
9
22
  const scratchDir = mkdtempSync(join(tmpdir(), "claudexor-transient-diff-"));
10
23
  const objectDir = join(scratchDir, "objects");
11
24
  const indexPath = join(scratchDir, "index");
12
25
  mkdirSync(objectDir, { recursive: true, mode: 0o700 });
13
26
  let primaryError;
27
+ // The written candidate tree, for the refusal's own non-exact inventory pass.
28
+ let candidate;
29
+ let lease = null;
14
30
  try {
15
- const actualObjects = await git(repo, [
16
- "rev-parse",
17
- "--path-format=absolute",
18
- "--git-path",
19
- "objects",
20
- ]);
31
+ // One project keeps one object format: refused before anything is written or mounted.
32
+ await assertProjectObjectFormat(projectRoot, await repositoryObjectFormat(repo));
33
+ const actualObjects = await gitObserved(repo, ["rev-parse", "--path-format=absolute", "--git-path", "objects"], { label: "rev-parse objects", allowFailure: true });
21
34
  if (actualObjects.code !== 0 || !actualObjects.stdout.trim()) {
22
35
  throw new WorkspaceError(`transient diff could not resolve Git objects: ${actualObjects.stderr.trim()}`);
23
36
  }
37
+ await preflightCaptureSpace(repo, scratchDir, { GIT_OPTIONAL_LOCKS: "0" });
38
+ // The lease comes first: a prune then either finished before or yields until
39
+ // the capture's own custody is recorded. No store yet: nothing to mount.
40
+ const store = objectStorePath(projectRoot);
41
+ if (existsSync(join(store, "objects")))
42
+ lease = await beginPendingRoots(store, []);
24
43
  const env = {
25
44
  GIT_INDEX_FILE: indexPath,
26
45
  GIT_OBJECT_DIRECTORY: objectDir,
27
- // Git parses this as a path-list. C-style quoting keeps a legal `:` in a
28
- // macOS path from becoming a separator (and escapes quotes/backslashes).
29
- GIT_ALTERNATE_OBJECT_DIRECTORIES: JSON.stringify(actualObjects.stdout.trim()),
46
+ GIT_ALTERNATE_OBJECT_DIRECTORIES: alternates([
47
+ actualObjects.stdout.trim(),
48
+ ...(lease ? [join(store, "objects")] : []),
49
+ ]),
30
50
  GIT_OPTIONAL_LOCKS: "0",
31
51
  };
32
- const read = await gitEnv(repo, ["read-tree", baseSha], env);
52
+ const progress = objectDirectoryProgress(objectDir);
53
+ const read = await gitObserved(repo, [...SCRATCH_INDEX_CONFIG, "read-tree", baseSha], {
54
+ env,
55
+ label: "read-tree (capture base)",
56
+ allowFailure: true,
57
+ });
33
58
  if (read.code !== 0) {
34
59
  throw new WorkspaceError(`transient diff read-tree failed: ${read.stderr.trim()}`);
35
60
  }
36
61
  const nested = await untrackedNestedRepositories(repo, env, [".", ...pathExcludes], "transient diff");
37
- const add = await gitEnv(repo, ["add", "-A", "--", ".", ...pathExcludes, ...nestedRepositoryExcludes(nested)], env);
38
- if (add.code !== 0) {
39
- throw new WorkspaceError(`transient diff add failed: ${add.stderr.trim()}`);
40
- }
41
- const writeTree = await gitEnv(repo, ["write-tree"], env);
42
- if (writeTree.code !== 0 || !writeTree.stdout.trim()) {
43
- throw new WorkspaceError(`transient diff write-tree failed: ${writeTree.stderr.trim()}`);
62
+ await gitObserved(repo, [
63
+ ...SCRATCH_INDEX_CONFIG,
64
+ "add",
65
+ "-A",
66
+ "--",
67
+ ".",
68
+ ...pathExcludes,
69
+ ...nestedRepositoryExcludes(nested),
70
+ ],
71
+ // A tracked file whose blob the base already holds is re-hashed without a sign
72
+ // (no output, no new object), so the silent read is bounded by the base's bytes.
73
+ {
74
+ env,
75
+ label: "add -A (capture)",
76
+ progress,
77
+ stallMs: proofStallMs(await treeBlobBytes(repo, baseSha, env)),
78
+ });
79
+ const tree = (await gitObserved(repo, [...SCRATCH_INDEX_CONFIG, "write-tree"], {
80
+ env,
81
+ label: "write-tree",
82
+ progress,
83
+ })).stdout.trim();
84
+ if (!tree)
85
+ throw new WorkspaceError("transient diff write-tree returned no tree");
86
+ candidate = { tree, env };
87
+ const baseCommit = (await gitObserved(repo, ["rev-parse", "--verify", "--quiet", `${baseSha}^{commit}`], {
88
+ env,
89
+ label: "rev-parse base commit",
90
+ allowFailure: true,
91
+ })).stdout.trim();
92
+ const baseTree = await treeOf(repo, baseSha, env);
93
+ const objectFormat = await repositoryObjectFormat(repo, env);
94
+ const commit = /^[0-9a-f]{40,64}$/.test(baseCommit) ? baseCommit : null;
95
+ const boundaryCommit = await storeBoundaryCommit(repo, commit, env);
96
+ const result = makeGitObjectResult({
97
+ object_format: objectFormat,
98
+ base_tree: baseTree,
99
+ candidate_tree: tree,
100
+ base_commit: commit,
101
+ store_boundary_commit: boundaryCommit,
102
+ });
103
+ const nestedFacts = nested.length ? { excludedNestedRepositories: nested } : {};
104
+ if (baseTree === tree) {
105
+ return { patch: "", captureIncomplete: false, result, ...nestedFacts };
44
106
  }
45
- const diff = await gitEnv(repo, ["diff", "--binary", baseSha, writeTree.stdout.trim()], env);
46
- if (diff.code !== 0) {
47
- throw new WorkspaceError(`transient diff failed: ${diff.stderr.trim()}`);
48
- }
49
- assertNoBinaryStubs(diff.stdout, `transient git diff ${baseSha}`);
50
- const flagged = new Set();
51
- for (const file of parseUnifiedDiff(diff.stdout).files.filter((entry) => entry.binary)) {
52
- const blobs = [
53
- ...(!file.added && file.oldPath ? [{ tree: baseSha, path: file.oldPath }] : []),
54
- ...(!file.deleted && file.newPath
55
- ? [{ tree: writeTree.stdout.trim(), path: file.newPath }]
56
- : []),
57
- ];
58
- for (const blob of blobs) {
59
- try {
60
- const content = await gitEnv(repo, ["show", `${blob.tree}:${blob.path}`], env);
61
- // An unreadable blob is unprovable, so its payload is withheld too.
62
- if (content.code === 0 && !containsSecretLikeToken(content.stdout))
63
- continue;
64
- }
65
- catch (error) {
66
- // A complete compressed patch may carry a much larger blob. Failed
67
- // inspection withholds that payload, not the already complete patch.
68
- if (!(error instanceof CaptureOutputExceeded))
69
- throw error;
70
- }
71
- flagged.add(file.newPath ?? file.oldPath ?? blob.path);
72
- break;
73
- }
107
+ // Custody: the candidate tree, plus a dirty base snapshot's own closure.
108
+ const roots = [tree, ...(commit && boundaryCommit !== commit ? [commit] : [])];
109
+ await retainInObjectStore({
110
+ projectRoot,
111
+ source: { cwd: repo, env, objectsDir: objectDir },
112
+ roots,
113
+ boundary: boundaryCommit
114
+ ? { commit: boundaryCommit, tree: await treeOf(repo, boundaryCommit, env) }
115
+ : null,
116
+ objectFormat,
117
+ owner: options.owner ?? projectRoot,
118
+ });
119
+ const estimate = await estimatePatchViewBytes(repo, baseSha, tree, env);
120
+ const view = estimate.bytes <= viewLimit
121
+ ? await renderPatchView(repo, baseSha, tree, env)
122
+ : "exceeds_view_limit";
123
+ if (view === "exceeds_view_limit" || view === "render_failed") {
124
+ const inventory = await changedFileInventory(repo, baseSha, tree, env);
125
+ return {
126
+ patch: "",
127
+ captureIncomplete: false,
128
+ result,
129
+ patchViewUnavailable: {
130
+ reason: view,
131
+ limitBytes: viewLimit,
132
+ // A render that overflowed proves more than an estimate that fit; one
133
+ // that failed for another reason proves nothing about its size.
134
+ estimatedBytes: view === "render_failed" ? estimate.bytes : Math.max(estimate.bytes, viewLimit + 1),
135
+ },
136
+ ...(inventory ? { inventory } : {}),
137
+ changedPaths: estimate.paths,
138
+ existingPaths: estimate.existingPaths,
139
+ ...nestedFacts,
140
+ };
74
141
  }
75
142
  return {
76
- patch: diff.stdout,
77
- binarySecretPaths: [...flagged],
143
+ patch: view,
78
144
  captureIncomplete: false,
79
- ...(nested.length ? { excludedNestedRepositories: nested } : {}),
145
+ result,
146
+ ...nestedFacts,
80
147
  };
81
148
  }
82
149
  catch (error) {
83
150
  primaryError = error;
84
- if (error instanceof CaptureOutputExceeded)
85
- return { patch: "", binarySecretPaths: [], captureIncomplete: true, captureFailure: error };
151
+ // Before the scratch goes, a separate bounded pass over the same candidate
152
+ // tree names its largest changed files: diagnostic evidence only.
153
+ if (candidate && error instanceof Error && !Object.isFrozen(error)) {
154
+ const inventory = await changedFileInventory(repo, baseSha, candidate.tree, candidate.env);
155
+ if (inventory)
156
+ Object.defineProperty(error, "captureInventory", { value: inventory });
157
+ }
158
+ // Typed packaging failures (an overflow of a bounded read, no space, a
159
+ // stalled or signalled Git, a read error, a missing object) are an honest
160
+ // capture refusal; anything else stays a thrown workspace fault.
161
+ if (error instanceof CaptureOutputExceeded || error instanceof GitOperationError)
162
+ return { patch: "", captureIncomplete: true, captureFailure: error };
86
163
  throw error;
87
164
  }
88
165
  finally {
166
+ // Never throws: a pending record that stays only delays a prune, and the
167
+ // scratch below is still removed under its own terminal rule.
168
+ const leaseFault = endPendingRoots(lease);
89
169
  // Unlike ordinary best-effort scratch cleanup, this directory may contain
90
170
  // a candidate token blob. A cleanup failure is therefore terminal and must
91
171
  // never be hidden behind the original capture result.
@@ -119,6 +199,24 @@ export async function captureWorkingTreeTransient(repo, baseSha, pathExcludes =
119
199
  }
120
200
  }
121
201
  }
202
+ // A failed capture's evidence also names a lease record that stayed, unless the
203
+ // scratch fault was recorded first.
204
+ noteCleanupFault(primaryError, leaseFault);
205
+ }
206
+ }
207
+ /** Today's patch of B..C, rendered under the view limit, else why there is none. A
208
+ * failed render costs only the view (the exact objects are already kept), never
209
+ * the capture: a timeout, a Git failure or a binary stub is a typed absence. */
210
+ async function renderPatchView(repo, base, tree, env) {
211
+ try {
212
+ const diff = await gitEnv(repo, [...PINNED_DIFF_CONFIG, "diff", "--binary", ...PINNED_DIFF_FLAGS, base, tree], env);
213
+ if (diff.code !== 0)
214
+ return "render_failed";
215
+ assertNoBinaryStubs(diff.stdout, `transient git diff ${base}`);
216
+ return diff.stdout;
217
+ }
218
+ catch (error) {
219
+ return error instanceof CaptureOutputExceeded ? "exceeds_view_limit" : "render_failed";
122
220
  }
123
221
  }
124
222
  export async function diffWorkingTreeTransient(repo, baseSha, pathExcludes = []) {
@@ -127,4 +225,19 @@ export async function diffWorkingTreeTransient(repo, baseSha, pathExcludes = [])
127
225
  throw captured.captureFailure;
128
226
  return captured.patch;
129
227
  }
228
+ /** The capture's object-backed facts, carried unchanged to its consumers. */
229
+ export function captureObjectFacts(captured) {
230
+ return {
231
+ ...(captured.result ? { result: captured.result } : {}),
232
+ ...(captured.patchViewUnavailable
233
+ ? { patchViewUnavailable: captured.patchViewUnavailable }
234
+ : {}),
235
+ ...(captured.inventory ? { inventory: captured.inventory } : {}),
236
+ ...(captured.changedPaths ? { changedPaths: captured.changedPaths } : {}),
237
+ ...(captured.existingPaths ? { existingPaths: captured.existingPaths } : {}),
238
+ ...(captured.excludedNestedRepositories
239
+ ? { excludedNestedRepositories: captured.excludedNestedRepositories }
240
+ : {}),
241
+ };
242
+ }
130
243
  //# sourceMappingURL=git-transient-capture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-transient-capture.js","sourceRoot":"","sources":["../src/git-transient-capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-transient-capture.js","sourceRoot":"","sources":["../src/git-transient-capture.ts"],"names":[],"mappings":"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"}
package/dist/git.d.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  import { type EnsureGitRepositoryDependencies, type EnsureGitRepositoryResult } from "./git-initialization.js";
2
- export { git } from "./git-run.js";
2
+ export { git, revParse } from "./git-run.js";
3
3
  export { captureWorkingTreeTransient, diffWorkingTreeTransient } from "./git-transient-capture.js";
4
4
  export { GitBoundaryRootRefusedError, GitInitializationError, type EnsureGitRepositoryDependencies, type EnsureGitRepositoryResult, } from "./git-initialization.js";
5
5
  export declare function isGitRepo(repo: string): Promise<boolean>;
6
- export declare function revParse(repo: string, ref: string): Promise<string>;
7
6
  /**
8
7
  * Make a project folder usable as a git boundary for write-mode runs.
9
8
  *
@@ -19,23 +18,7 @@ export declare function revParse(repo: string, ref: string): Promise<string>;
19
18
  */
20
19
  export declare function ensureGitRepository(repo: string, dependencies?: EnsureGitRepositoryDependencies): Promise<EnsureGitRepositoryResult>;
21
20
  export declare function statusPorcelain(repo: string): Promise<string>;
22
- /**
23
- * Capture the full dirty working tree (tracked AND untracked) as a dangling
24
- * commit; null if clean. Plain `git stash create` captures only TRACKED
25
- * changes, silently dropping the user's new-but-unstaged files from the run's
26
- * base. We instead seed a scratch index from HEAD, `add -A` into it (which
27
- * respects .gitignore, so run artifacts stay out), and commit-tree the result.
28
- */
29
- export declare function stashCreate(repo: string): Promise<string | null>;
30
- /**
31
- * Capture the CURRENT working-tree state (tracked + untracked, minus `.claudexor`)
32
- * as a commit sha — always returns one. Dirty trees become a dangling snapshot
33
- * commit (via `stashCreate`); a clean tree resolves to HEAD. This is the per-turn
34
- * diff base for in-place threads: snapshot at turn start, snapshot at turn end,
35
- * `diffTrees(base, end)` yields exactly that turn's net change (pre-existing dirty
36
- * state is folded into `base`, so the reviewer never sees prior turns' edits).
37
- */
38
- export declare function snapshotTree(repo: string): Promise<string>;
21
+ export { snapshotTree, stashCreate } from "./git-snapshot.js";
39
22
  /** Net diff between two tree-ish shas (used for in-place per-turn diffs).
40
23
  * `--binary`: binary changes carry an APPLYABLE payload instead of
41
24
  * degrading to a "Binary files differ" stub that silently loses the work. */
@@ -50,11 +33,45 @@ export declare function materializePatchTree(repo: string, baseSha: string, diff
50
33
  export declare function worktreeAdd(repo: string, path: string, branch: string, baseSha: string): Promise<void>;
51
34
  /** Disposable candidate checkout with private refs/index/objects. The source
52
35
  * repository is only an object alternate, so harness `git add`/`commit` cannot
53
- * write candidate blobs or refs into the user's repository. */
54
- export declare function isolatedCloneAdd(repo: string, path: string, branch: string, baseSha: string): Promise<void>;
36
+ * write candidate blobs or refs into the user's repository. Claudexor's own
37
+ * clone lists the project object store as a SECOND alternate (#535 D2): a
38
+ * dirty base resolves after the user's prune; the user repo never gets it. */
39
+ export declare function isolatedCloneAdd(repo: string, path: string, branch: string, baseSha: string, storeObjects?: string): Promise<void>;
55
40
  /** Recreate a worktree for an EXISTING branch (recovery: dir lost, branch survived). */
56
41
  export declare function worktreeAddExisting(repo: string, path: string, branch: string): Promise<void>;
42
+ /** Best-effort: Git's exit status is ignored. An owner that must not report a
43
+ * refused removal as done uses `worktreeRemoveRegistered`. */
57
44
  export declare function worktreeRemove(repo: string, path: string): Promise<void>;
45
+ /**
46
+ * Deregister the linked worktree Git records at `path`; Git deletes its
47
+ * directory too. A path Git does not register is already removed. A refusal
48
+ * (a locked worktree, an unreadable registration) throws and leaves the
49
+ * registration and the directory as they were. A directory Git cannot delete
50
+ * (a permission error) throws after Git deleted the registration: the
51
+ * directory stays, its `.git` file naming what is gone. The registration is
52
+ * found by `samePlace` and removed in Git's own spelling, so a stale one whose
53
+ * directory is gone still goes. Git prints porcelain paths unquoted, one per
54
+ * line, so a path holding a line break cannot be read back and is refused
55
+ * rather than reported absent. `beforeRemove` runs once Git is known to
56
+ * register the path, right before the removal.
57
+ */
58
+ export declare function worktreeRemoveRegistered(repo: string, path: string, beforeRemove?: () => Promise<void>): Promise<void>;
59
+ /**
60
+ * The common Git directory of the repository that registered the linked
61
+ * worktree at `path`, from Git's own records: the worktree's `.git` file names
62
+ * its registration, which must still exist and name this worktree back. Null
63
+ * when `path` holds no such file. A registration that is gone or names another
64
+ * worktree is what a moved or deleted repository leaves, and also a removal
65
+ * that deleted the registration but not the directory
66
+ * (`worktreeRemoveRegistered`; a later worktree can take the freed name).
67
+ * `recorded`, called only then, tells them apart: the common Git directory a
68
+ * caller kept from before its removal is returned when the registration was
69
+ * in it. Otherwise this throws, since whatever a moved repository still
70
+ * records cannot be proven gone.
71
+ */
72
+ export declare function worktreeRepository(path: string, recorded?: () => string | null): string | null;
73
+ /** The common Git directory of the repository `dir` is in; throws when Git cannot tell. */
74
+ export declare function gitCommonDir(dir: string): Promise<string>;
58
75
  /**
59
76
  * Apply a unified diff to a tree with a 3-way merge (race-winner adoption into
60
77
  * the live in-place tree). Throws loudly on conflict so the caller can disclose
@@ -110,4 +127,12 @@ export declare function reversePatchAndIndexProtected(repo: string, diff: string
110
127
  export declare function worktreePrune(repo: string): Promise<void>;
111
128
  /** Delete a local branch (best-effort GC of per-attempt claudexor/* branches). */
112
129
  export declare function branchDelete(repo: string, branch: string): Promise<void>;
130
+ /**
131
+ * Delete a local branch, or throw when Git refuses (a held ref lock, a
132
+ * worktree that still uses it). An absent branch is already deleted. Presence
133
+ * is read first because `branch -D` reports "not found" and a refusal with the
134
+ * same exit code. `beforeDelete` runs only for a present branch, right before
135
+ * the deletion.
136
+ */
137
+ export declare function branchDeleteIfPresent(repo: string, branch: string, beforeDelete?: () => Promise<void>): Promise<void>;
113
138
  //# sourceMappingURL=git.d.ts.map
package/dist/git.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}