@cleocode/worktree 2026.11.1-canary.6 → 2026.11.1-canary.7

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.
@@ -6,8 +6,6 @@
6
6
  *
7
7
  * - Git-aware prune-plan construction (`napi.pruneWorktrees`) — read-only
8
8
  * discovery of merged-in worktrees + orphan branches.
9
- * - Recursive directory removal (`napi.removeDir`) — replaces the
10
- * `rmSync` + `git worktree remove` fallback that previously lived here.
11
9
  *
12
10
  * The TypeScript layer keeps three concerns that are explicitly outside the
13
11
  * SDK boundary per ADR-061:
@@ -24,14 +22,13 @@
24
22
  * @task T10204
25
23
  */
26
24
  import { execFileSync } from 'node:child_process';
27
- import { appendFileSync, existsSync, mkdirSync, readdirSync, statSync } from 'node:fs';
25
+ import { existsSync, readdirSync, statSync } from 'node:fs';
28
26
  import { join } from 'node:path';
29
27
  import { getGitRoot, gitSilent } from './git.js';
30
- import { destroyWorktree as napiDestroyWorktree, pruneWorktrees as napiPrune, removeDir as napiRemoveDir, } from './napi-binding.js';
28
+ import { pruneWorktrees as napiPrune } from './napi-binding.js';
31
29
  import { computeProjectHash, resolveWorktreeRootForHash } from './paths.js';
32
30
  import { appendWorktreeAuditLog, removeWorktreeFromSentinelIndex } from './worktree-audit.js';
33
- import { describeDisposalBlockers, guardWorktreeDisposal } from './worktree-dependents.js';
34
- import { releaseWorktreeTaskLock } from './worktree-lock.js';
31
+ import { disposeWorktree } from './worktree-dispose.js';
35
32
  /**
36
33
  * Prune orphaned agent worktrees for a project.
37
34
  *
@@ -42,7 +39,7 @@ import { releaseWorktreeTaskLock } from './worktree-lock.js';
42
39
  * — the SDK plan is currently advisory; the TS layer drives the actual
43
40
  * removal because audit + sentinel concerns are TS-owned per ADR-061.
44
41
  * 3. Scan the XDG worktree root, filtering by `preserveTaskIds`/`idleDays`.
45
- * 4. For each eligible entry: unlock via git → remove via napi → audit-log →
42
+ * 4. For each eligible entry: {@link disposeWorktree} (T13924) → audit-log →
46
43
  * sentinel-index cleanup.
47
44
  *
48
45
  * @param options - Prune options with project root and optional preserve list.
@@ -193,156 +190,12 @@ function classifyPruneCandidate(entry, preserveTaskIds, idleDays, worktreeRoot)
193
190
  return null;
194
191
  }
195
192
  /**
196
- * Check whether a worktree has uncommitted changes (dirty state).
193
+ * Dispose of a single worktree entry through {@link disposeWorktree} (T13924),
194
+ * then write audit + sentinel-index entries.
197
195
  *
198
- * Runs `git status --porcelain -uall` inside the worktree. `-uall` expands
199
- * untracked directories so no file (including .env, local artifacts, etc.) is
200
- * missed. Returns `false` when git is unavailable so we never block cleanup
201
- * on a git error.
202
- *
203
- * @param worktreePath - Absolute path to the worktree directory.
204
- * @returns `true` when uncommitted changes are present; `false` otherwise.
205
- *
206
- * @task T11996
207
- * @internal
208
- */
209
- function isWorktreeDirty(worktreePath) {
210
- try {
211
- const out = execFileSync('git', ['-C', worktreePath, 'status', '--porcelain', '-uall'], {
212
- encoding: 'utf-8',
213
- stdio: ['pipe', 'pipe', 'pipe'],
214
- timeout: 10_000,
215
- });
216
- return out.trim().length > 0;
217
- }
218
- catch {
219
- return false;
220
- }
221
- }
222
- /**
223
- * Check whether a worktree has commits not pushed to any remote ref.
224
- *
225
- * Two cases (T11996 Amendment 3):
226
- * (a) Branch with a configured upstream: commits ahead of `@{upstream}`.
227
- * (b) Branch with no upstream (never pushed): commits not reachable from any
228
- * remote-tracking ref.
229
- * (c) Detached HEAD: commits not reachable from any remote-tracking ref.
230
- *
231
- * Returns `false` when git is unavailable or the worktree has no commits.
232
- *
233
- * @param worktreePath - Absolute path to the worktree directory.
234
- * @returns `true` when unpushed commits exist; `false` otherwise.
235
- *
236
- * @task T11996
237
- * @internal
238
- */
239
- function hasUnpushedCommits(worktreePath) {
240
- // Case (a): branch has a tracking upstream — check ahead count.
241
- try {
242
- const aheadStr = execFileSync('git', ['-C', worktreePath, 'rev-list', '--count', '@{upstream}..HEAD'], {
243
- encoding: 'utf-8',
244
- stdio: ['pipe', 'pipe', 'pipe'],
245
- timeout: 10_000,
246
- }).trim();
247
- const aheadCount = Number.parseInt(aheadStr, 10);
248
- if (!Number.isNaN(aheadCount) && aheadCount > 0)
249
- return true;
250
- // Upstream exists and ahead count is 0 — no unpushed commits.
251
- return false;
252
- }
253
- catch {
254
- // No upstream configured — fall through to case (b)/(c).
255
- }
256
- // Case (b)/(c): no upstream configured — check whether HEAD is reachable
257
- // from the union of all remote-tracking refs.
258
- try {
259
- const remoteRefsOut = execFileSync('git', ['-C', worktreePath, 'for-each-ref', '--format=%(refname)', 'refs/remotes/'], {
260
- encoding: 'utf-8',
261
- stdio: ['pipe', 'pipe', 'pipe'],
262
- timeout: 10_000,
263
- }).trim();
264
- const remoteRefs = remoteRefsOut.split('\n').filter(Boolean);
265
- if (remoteRefs.length === 0) {
266
- // No remotes configured — any local commit is "unpushed".
267
- try {
268
- const headOut = execFileSync('git', ['-C', worktreePath, 'rev-parse', 'HEAD'], {
269
- encoding: 'utf-8',
270
- stdio: ['pipe', 'pipe', 'pipe'],
271
- timeout: 5_000,
272
- }).trim();
273
- return headOut.length > 0;
274
- }
275
- catch {
276
- return false;
277
- }
278
- }
279
- // Count commits reachable from HEAD but not from any remote ref.
280
- const args = ['-C', worktreePath, 'rev-list', '--count', 'HEAD', '--not', ...remoteRefs];
281
- const countOut = execFileSync('git', args, {
282
- encoding: 'utf-8',
283
- stdio: ['pipe', 'pipe', 'pipe'],
284
- timeout: 15_000,
285
- }).trim();
286
- const count = Number.parseInt(countOut, 10);
287
- return !Number.isNaN(count) && count > 0;
288
- }
289
- catch {
290
- return false;
291
- }
292
- }
293
- /**
294
- * Quarantine a dirty/unpushed worktree by packing it into a `.tar.gz` archive
295
- * in `<projectRoot>/.cleo/quarantine/worktrees/`. The original directory is
296
- * LEFT INTACT (never deleted). An audit JSONL entry is written.
297
- *
298
- * The archive is created with `tar -czf ... -C <parent> <taskId>` so the
299
- * archive root is `<taskId>/`. `--dereference` captures symlink targets.
300
- * No exclusions are applied — the archive captures ALL files including
301
- * `.env`, ignored artifacts, etc. (T11996 AC: untracked + ignored files).
302
- *
303
- * @returns Absolute path to the created archive, or `null` on failure.
304
- *
305
- * @task T11996
306
- * @internal
307
- */
308
- function quarantineWorktreeDir(worktreePath, taskId, projectRoot, reason) {
309
- try {
310
- const quarantineDir = join(projectRoot, '.cleo', 'quarantine', 'worktrees');
311
- mkdirSync(quarantineDir, { recursive: true });
312
- const ts = new Date().toISOString().replace(/[:.]/g, '-');
313
- const archiveName = `${taskId}-${ts}.tar.gz`;
314
- const archivePath = join(quarantineDir, archiveName);
315
- // Capture untracked AND ignored files by not excluding anything.
316
- execFileSync('tar', ['-czf', archivePath, '--dereference', '-C', join(worktreePath, '..'), taskId], {
317
- stdio: ['pipe', 'pipe', 'pipe'],
318
- timeout: 120_000,
319
- });
320
- // Write audit entry — ZERO desktop output (T11996 Amendment 6).
321
- const auditPath = join(quarantineDir, 'audit.jsonl');
322
- const entry = JSON.stringify({
323
- ts: new Date().toISOString(),
324
- action: 'quarantine',
325
- worktreePath,
326
- taskId,
327
- archivePath,
328
- reason,
329
- agentId: process.env['CLEO_AGENT_ID'] ?? 'cleo',
330
- });
331
- appendFileSync(auditPath, `${entry}\n`, { encoding: 'utf-8' });
332
- return archivePath;
333
- }
334
- catch {
335
- return null;
336
- }
337
- }
338
- /**
339
- * Remove a single worktree entry: check dirty/unpushed state first, then
340
- * either quarantine (if unsafe) or unlock+remove via napi-backed directory
341
- * removal, then write audit + sentinel-index entries.
342
- *
343
- * T11996: dirty or unpushed worktrees are QUARANTINED (tar archive in
344
- * `<projectRoot>/.cleo/quarantine/worktrees/`), never deleted. The original
345
- * directory is left on disk after quarantine.
196
+ * A worktree whose content or commits are not proven preserved is kept on
197
+ * disk untouched and reported in `quarantined`; one the dependents/evidence
198
+ * guard keeps, or whose removal failed, is reported in `errors`.
346
199
  *
347
200
  * Mutates `removed`, `quarantined`, and `errors` in place.
348
201
  *
@@ -350,85 +203,8 @@ function quarantineWorktreeDir(worktreePath, taskId, projectRoot, reason) {
350
203
  */
351
204
  function pruneSingleEntry(decision, gitRoot, projectRoot, removed, quarantined, errors) {
352
205
  const { taskId, path, reason } = decision;
353
- // T13696/T13700: never delete a worktree another checkout links into, or
354
- // one an earlier disposal kept (its marker's evidence is re-checked here).
355
- const kept = guardWorktreeDisposal(path, { taskId, reason, gitRoot, projectRoot });
356
- if (kept !== null) {
357
- errors.push({ path, reason: describeDisposalBlockers(path, kept) });
358
- return;
359
- }
360
- // T11996: Dirty/unpushed guard — quarantine instead of deleting.
361
- const dirty = isWorktreeDirty(path);
362
- const unpushed = dirty ? false : hasUnpushedCommits(path);
363
- const shouldQuarantine = dirty || unpushed;
364
- const quarantineReason = dirty ? 'dirty' : 'unpushed';
365
- if (shouldQuarantine) {
366
- const archivePath = quarantineWorktreeDir(path, taskId, projectRoot, quarantineReason);
367
- if (archivePath !== null) {
368
- quarantined.push(path);
369
- appendWorktreeAuditLog(projectRoot, {
370
- action: 'quarantine',
371
- xdgPath: path,
372
- taskId,
373
- reason: `${reason}+${quarantineReason}`,
374
- success: true,
375
- });
376
- }
377
- else {
378
- errors.push({
379
- path,
380
- reason: `quarantine tar failed — worktree preserved (T11996, was ${quarantineReason})`,
381
- });
382
- appendWorktreeAuditLog(projectRoot, {
383
- action: 'quarantine',
384
- xdgPath: path,
385
- taskId,
386
- reason: `${reason}+${quarantineReason}`,
387
- success: false,
388
- error: 'tar archive creation failed',
389
- });
390
- }
391
- return;
392
- }
393
- // T11123: Use NAPI destroyWorktree (Rust worktrunk-core) instead of raw
394
- // git worktree unlock + remove shell-outs. The NAPI binding handles
395
- // unlock + force-remove atomically in Rust.
396
- let pruneSuccess = false;
397
- let errorMessage = null;
398
- try {
399
- const result = napiDestroyWorktree({
400
- repoRoot: gitRoot,
401
- worktreePath: path,
402
- force: true,
403
- });
404
- pruneSuccess = result.removed;
405
- // T11033 — NAPI may report success even when untracked directories
406
- // survive inside the worktree. Verify on-disk reality.
407
- if (pruneSuccess && existsSync(path)) {
408
- pruneSuccess = false;
409
- }
410
- }
411
- catch (err) {
412
- errorMessage = err instanceof Error ? err.message : String(err);
413
- }
414
- if (!pruneSuccess) {
415
- try {
416
- // Delegate the recursive directory removal to worktrunk-core via napi
417
- // (T10203). The SDK is best-effort: read/unlink/rmdir errors are
418
- // silently skipped, so a non-zero file count signals success.
419
- napiRemoveDir({ path });
420
- pruneSuccess = true;
421
- // Also run git worktree prune to clean stale admin entries
422
- // left behind by the failed NAPI destroy.
423
- gitSilent(['worktree', 'prune'], gitRoot);
424
- }
425
- catch (err) {
426
- if (!errorMessage) {
427
- errorMessage = err instanceof Error ? err.message : String(err);
428
- }
429
- }
430
- }
431
- if (pruneSuccess) {
206
+ const disposal = disposeWorktree({ worktreePath: path, gitRoot, projectRoot, taskId, reason });
207
+ if (disposal.removed) {
432
208
  removed.push(path);
433
209
  appendWorktreeAuditLog(projectRoot, {
434
210
  action: 'prune',
@@ -438,19 +214,22 @@ function pruneSingleEntry(decision, gitRoot, projectRoot, removed, quarantined,
438
214
  success: true,
439
215
  });
440
216
  removeWorktreeFromSentinelIndex(gitRoot, taskId);
441
- // T12506: a pruned worktree's per-task lock guards nothing — free it.
442
- releaseWorktreeTaskLock(computeProjectHash(projectRoot), taskId);
443
217
  return;
444
218
  }
445
- const finalError = errorMessage ?? 'napi removeDir failed';
446
- errors.push({ path, reason: finalError });
219
+ const why = disposal.keptReason ?? 'kept';
220
+ if (disposal.unpreserved !== undefined && !disposal.kept && disposal.failed === undefined) {
221
+ quarantined.push(path);
222
+ }
223
+ else {
224
+ errors.push({ path, reason: why });
225
+ }
447
226
  appendWorktreeAuditLog(projectRoot, {
448
227
  action: 'prune',
449
228
  xdgPath: path,
450
229
  taskId,
451
- reason,
230
+ reason: `${reason}+kept`,
452
231
  success: false,
453
- error: finalError,
232
+ error: why,
454
233
  });
455
234
  }
456
235
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-prune.js","sourceRoot":"","sources":["../src/worktree-prune.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-prune.js","sourceRoot":"","sources":["../src/worktree-prune.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/worktree",
3
- "version": "2026.11.1-canary.6",
3
+ "version": "2026.11.1-canary.7",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Native CLEO worktree backend SDK",
@@ -40,14 +40,14 @@
40
40
  "author": "CLEO Code <hello@cleocode.dev>",
41
41
  "license": "MIT",
42
42
  "dependencies": {
43
- "@cleocode/contracts": "2026.11.1-canary.6",
44
- "@cleocode/paths": "2026.11.1-canary.6"
43
+ "@cleocode/contracts": "2026.11.1-canary.7",
44
+ "@cleocode/paths": "2026.11.1-canary.7"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "^24.3.0",
48
48
  "typescript": "^6.0.2",
49
49
  "vitest": "^4.1.4",
50
- "@cleocode/core": "2026.11.1-canary.6"
50
+ "@cleocode/core": "2026.11.1-canary.7"
51
51
  },
52
52
  "repository": {
53
53
  "type": "git",