@cleocode/worktree 2026.6.13 → 2026.6.15

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.
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-prune.d.ts","sourceRoot":"","sources":["../src/worktree-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAEL,cAAc,IAAI,SAAS,EAE5B,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CAiBnF;AAiMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,GACxB,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,IAAI,CAMrC"}
1
+ {"version":3,"file":"worktree-prune.d.ts","sourceRoot":"","sources":["../src/worktree-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAEL,cAAc,IAAI,SAAS,EAE5B,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CA4DnF;AAmZD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,GACxB,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,IAAI,CAMrC"}
@@ -24,7 +24,7 @@
24
24
  * @task T10204
25
25
  */
26
26
  import { execFileSync } from 'node:child_process';
27
- import { existsSync, readdirSync } from 'node:fs';
27
+ import { appendFileSync, existsSync, mkdirSync, readdirSync } from 'node:fs';
28
28
  import { join } from 'node:path';
29
29
  import { getGitRoot, gitSilent } from './git.js';
30
30
  import { destroyWorktree as napiDestroyWorktree, pruneWorktrees as napiPrune, removeDir as napiRemoveDir, } from './napi-binding.js';
@@ -56,18 +56,57 @@ export function pruneWorktrees(options) {
56
56
  const worktreeRoot = resolveWorktreeRootForHash(projectHash);
57
57
  const gitRoot = resolveGitRootOrFallback(projectRoot);
58
58
  const removed = [];
59
+ const quarantined = [];
59
60
  const errors = [];
60
61
  const gitPruneRan = gitPrune ? runGitPruneAdminCleanup(gitRoot) : false;
61
62
  if ((preserveTaskIds === undefined && idleDays === undefined) || !existsSync(worktreeRoot)) {
62
- return { removed: 0, removedPaths: [], errors, gitPruneRan };
63
+ return {
64
+ removed: 0,
65
+ removedPaths: [],
66
+ quarantined: 0,
67
+ quarantinedPaths: [],
68
+ errors,
69
+ gitPruneRan,
70
+ };
63
71
  }
64
- for (const entry of safeReaddir(worktreeRoot)) {
72
+ const entries = safeReaddir(worktreeRoot);
73
+ // T11996 Amendment 2 — fail-closed: if the preserve set is empty AND
74
+ // worktree directories exist, skip pruning entirely to prevent mass-deletion
75
+ // (e.g. fresh/post-exodus DB). Write a structured audit warning.
76
+ if (preserveTaskIds !== undefined && preserveTaskIds.size === 0 && entries.length > 0) {
77
+ const existingDirs = entries.filter((e) => existsSync(join(worktreeRoot, e)));
78
+ if (existingDirs.length > 0) {
79
+ appendWorktreeAuditLog(projectRoot, {
80
+ action: 'prune-skip',
81
+ xdgPath: worktreeRoot,
82
+ reason: 'preserve set empty while worktrees exist — skipping to prevent mass-deletion (T11996 fail-closed)',
83
+ success: false,
84
+ });
85
+ return {
86
+ removed: 0,
87
+ removedPaths: [],
88
+ quarantined: 0,
89
+ quarantinedPaths: [],
90
+ errors,
91
+ gitPruneRan,
92
+ skippedFailClosed: true,
93
+ };
94
+ }
95
+ }
96
+ for (const entry of entries) {
65
97
  const decision = classifyPruneCandidate(entry, preserveTaskIds, idleDays, worktreeRoot);
66
98
  if (decision === null)
67
99
  continue;
68
- pruneSingleEntry(decision, gitRoot, projectRoot, removed, errors);
100
+ pruneSingleEntry(decision, gitRoot, projectRoot, removed, quarantined, errors);
69
101
  }
70
- return { removed: removed.length, removedPaths: removed, errors, gitPruneRan };
102
+ return {
103
+ removed: removed.length,
104
+ removedPaths: removed,
105
+ quarantined: quarantined.length,
106
+ quarantinedPaths: quarantined,
107
+ errors,
108
+ gitPruneRan,
109
+ };
71
110
  }
72
111
  /**
73
112
  * Resolve the git root for `projectRoot`, falling back to `projectRoot` when
@@ -115,18 +154,28 @@ function safeReaddir(dir) {
115
154
  * `preserveTaskIds`/`idleDays` business logic that lives outside the
116
155
  * worktrunk-core SDK by design (ADR-061).
117
156
  *
157
+ * T11996 Amendment 1 (PREDICATE BLOCKER): if `preserveTaskIds` is provided and
158
+ * the entry IS in the set, it is ALWAYS preserved — idle age NEVER overrides
159
+ * the preserve list. Only entries NOT in the preserve set are eligible for
160
+ * idle-age pruning when `idleDays` is set.
161
+ *
118
162
  * @internal
119
163
  */
120
164
  function classifyPruneCandidate(entry, preserveTaskIds, idleDays, worktreeRoot) {
121
165
  const path = join(worktreeRoot, entry);
122
166
  if (preserveTaskIds !== undefined) {
123
- if (!preserveTaskIds.has(entry)) {
124
- return { taskId: entry, path, reason: 'orphan' };
167
+ // T11996: entries in the preserve set are NEVER eligible for pruning,
168
+ // regardless of idle age. Idle-age is only applied to orphan entries
169
+ // (entries not in the preserve set).
170
+ if (preserveTaskIds.has(entry)) {
171
+ return null;
125
172
  }
126
- if (idleDays !== undefined && isWorktreeIdle(path, idleDays)) {
127
- return { taskId: entry, path, reason: `idle-${idleDays}d` };
173
+ // Entry is not in the preserve set — it is an orphan.
174
+ // Check idle age only when idleDays is specified; otherwise remove immediately.
175
+ if (idleDays !== undefined && !isWorktreeIdle(path, idleDays)) {
176
+ return null; // orphan but not yet idle — wait longer
128
177
  }
129
- return null;
178
+ return { taskId: entry, path, reason: idleDays !== undefined ? `idle-${idleDays}d` : 'orphan' };
130
179
  }
131
180
  if (idleDays !== undefined && isWorktreeIdle(path, idleDays)) {
132
181
  return { taskId: entry, path, reason: `idle-${idleDays}d` };
@@ -134,17 +183,196 @@ function classifyPruneCandidate(entry, preserveTaskIds, idleDays, worktreeRoot)
134
183
  return null;
135
184
  }
136
185
  /**
137
- * Remove a single worktree entry: unlock via git, remove via napi-backed
138
- * directory removal, then write audit + sentinel-index entries.
186
+ * Check whether a worktree has uncommitted changes (dirty state).
187
+ *
188
+ * Runs `git status --porcelain -uall` inside the worktree. `-uall` expands
189
+ * untracked directories so no file (including .env, local artifacts, etc.) is
190
+ * missed. Returns `false` when git is unavailable so we never block cleanup
191
+ * on a git error.
192
+ *
193
+ * @param worktreePath - Absolute path to the worktree directory.
194
+ * @returns `true` when uncommitted changes are present; `false` otherwise.
195
+ *
196
+ * @task T11996
197
+ * @internal
198
+ */
199
+ function isWorktreeDirty(worktreePath) {
200
+ try {
201
+ const out = execFileSync('git', ['-C', worktreePath, 'status', '--porcelain', '-uall'], {
202
+ encoding: 'utf-8',
203
+ stdio: ['pipe', 'pipe', 'pipe'],
204
+ timeout: 10_000,
205
+ });
206
+ return out.trim().length > 0;
207
+ }
208
+ catch {
209
+ return false;
210
+ }
211
+ }
212
+ /**
213
+ * Check whether a worktree has commits not pushed to any remote ref.
214
+ *
215
+ * Two cases (T11996 Amendment 3):
216
+ * (a) Branch with a configured upstream: commits ahead of `@{upstream}`.
217
+ * (b) Branch with no upstream (never pushed): commits not reachable from any
218
+ * remote-tracking ref.
219
+ * (c) Detached HEAD: commits not reachable from any remote-tracking ref.
220
+ *
221
+ * Returns `false` when git is unavailable or the worktree has no commits.
222
+ *
223
+ * @param worktreePath - Absolute path to the worktree directory.
224
+ * @returns `true` when unpushed commits exist; `false` otherwise.
225
+ *
226
+ * @task T11996
227
+ * @internal
228
+ */
229
+ function hasUnpushedCommits(worktreePath) {
230
+ // Case (a): branch has a tracking upstream — check ahead count.
231
+ try {
232
+ const aheadStr = execFileSync('git', ['-C', worktreePath, 'rev-list', '--count', '@{upstream}..HEAD'], {
233
+ encoding: 'utf-8',
234
+ stdio: ['pipe', 'pipe', 'pipe'],
235
+ timeout: 10_000,
236
+ }).trim();
237
+ const aheadCount = Number.parseInt(aheadStr, 10);
238
+ if (!Number.isNaN(aheadCount) && aheadCount > 0)
239
+ return true;
240
+ // Upstream exists and ahead count is 0 — no unpushed commits.
241
+ return false;
242
+ }
243
+ catch {
244
+ // No upstream configured — fall through to case (b)/(c).
245
+ }
246
+ // Case (b)/(c): no upstream configured — check whether HEAD is reachable
247
+ // from the union of all remote-tracking refs.
248
+ try {
249
+ const remoteRefsOut = execFileSync('git', ['-C', worktreePath, 'for-each-ref', '--format=%(refname)', 'refs/remotes/'], {
250
+ encoding: 'utf-8',
251
+ stdio: ['pipe', 'pipe', 'pipe'],
252
+ timeout: 10_000,
253
+ }).trim();
254
+ const remoteRefs = remoteRefsOut.split('\n').filter(Boolean);
255
+ if (remoteRefs.length === 0) {
256
+ // No remotes configured — any local commit is "unpushed".
257
+ try {
258
+ const headOut = execFileSync('git', ['-C', worktreePath, 'rev-parse', 'HEAD'], {
259
+ encoding: 'utf-8',
260
+ stdio: ['pipe', 'pipe', 'pipe'],
261
+ timeout: 5_000,
262
+ }).trim();
263
+ return headOut.length > 0;
264
+ }
265
+ catch {
266
+ return false;
267
+ }
268
+ }
269
+ // Count commits reachable from HEAD but not from any remote ref.
270
+ const args = ['-C', worktreePath, 'rev-list', '--count', 'HEAD', '--not', ...remoteRefs];
271
+ const countOut = execFileSync('git', args, {
272
+ encoding: 'utf-8',
273
+ stdio: ['pipe', 'pipe', 'pipe'],
274
+ timeout: 15_000,
275
+ }).trim();
276
+ const count = Number.parseInt(countOut, 10);
277
+ return !Number.isNaN(count) && count > 0;
278
+ }
279
+ catch {
280
+ return false;
281
+ }
282
+ }
283
+ /**
284
+ * Quarantine a dirty/unpushed worktree by packing it into a `.tar.gz` archive
285
+ * in `<projectRoot>/.cleo/quarantine/worktrees/`. The original directory is
286
+ * LEFT INTACT (never deleted). An audit JSONL entry is written.
287
+ *
288
+ * The archive is created with `tar -czf ... -C <parent> <taskId>` so the
289
+ * archive root is `<taskId>/`. `--dereference` captures symlink targets.
290
+ * No exclusions are applied — the archive captures ALL files including
291
+ * `.env`, ignored artifacts, etc. (T11996 AC: untracked + ignored files).
292
+ *
293
+ * @returns Absolute path to the created archive, or `null` on failure.
294
+ *
295
+ * @task T11996
296
+ * @internal
297
+ */
298
+ function quarantineWorktreeDir(worktreePath, taskId, projectRoot, reason) {
299
+ try {
300
+ const quarantineDir = join(projectRoot, '.cleo', 'quarantine', 'worktrees');
301
+ mkdirSync(quarantineDir, { recursive: true });
302
+ const ts = new Date().toISOString().replace(/[:.]/g, '-');
303
+ const archiveName = `${taskId}-${ts}.tar.gz`;
304
+ const archivePath = join(quarantineDir, archiveName);
305
+ // Capture untracked AND ignored files by not excluding anything.
306
+ execFileSync('tar', ['-czf', archivePath, '--dereference', '-C', join(worktreePath, '..'), taskId], {
307
+ stdio: ['pipe', 'pipe', 'pipe'],
308
+ timeout: 120_000,
309
+ });
310
+ // Write audit entry — ZERO desktop output (T11996 Amendment 6).
311
+ const auditPath = join(quarantineDir, 'audit.jsonl');
312
+ const entry = JSON.stringify({
313
+ ts: new Date().toISOString(),
314
+ action: 'quarantine',
315
+ worktreePath,
316
+ taskId,
317
+ archivePath,
318
+ reason,
319
+ agentId: process.env['CLEO_AGENT_ID'] ?? 'cleo',
320
+ });
321
+ appendFileSync(auditPath, `${entry}\n`, { encoding: 'utf-8' });
322
+ return archivePath;
323
+ }
324
+ catch {
325
+ return null;
326
+ }
327
+ }
328
+ /**
329
+ * Remove a single worktree entry: check dirty/unpushed state first, then
330
+ * either quarantine (if unsafe) or unlock+remove via napi-backed directory
331
+ * removal, then write audit + sentinel-index entries.
332
+ *
333
+ * T11996: dirty or unpushed worktrees are QUARANTINED (tar archive in
334
+ * `<projectRoot>/.cleo/quarantine/worktrees/`), never deleted. The original
335
+ * directory is left on disk after quarantine.
139
336
  *
140
- * Mutates `removed` and `errors` in place to keep the orchestrator function
141
- * thin. Both audit-log and sentinel-index updates are best-effort and never
142
- * block successful removal.
337
+ * Mutates `removed`, `quarantined`, and `errors` in place.
143
338
  *
144
339
  * @internal
145
340
  */
146
- function pruneSingleEntry(decision, gitRoot, projectRoot, removed, errors) {
341
+ function pruneSingleEntry(decision, gitRoot, projectRoot, removed, quarantined, errors) {
147
342
  const { taskId, path, reason } = decision;
343
+ // T11996: Dirty/unpushed guard — quarantine instead of deleting.
344
+ const dirty = isWorktreeDirty(path);
345
+ const unpushed = dirty ? false : hasUnpushedCommits(path);
346
+ const shouldQuarantine = dirty || unpushed;
347
+ const quarantineReason = dirty ? 'dirty' : 'unpushed';
348
+ if (shouldQuarantine) {
349
+ const archivePath = quarantineWorktreeDir(path, taskId, projectRoot, quarantineReason);
350
+ if (archivePath !== null) {
351
+ quarantined.push(path);
352
+ appendWorktreeAuditLog(projectRoot, {
353
+ action: 'quarantine',
354
+ xdgPath: path,
355
+ taskId,
356
+ reason: `${reason}+${quarantineReason}`,
357
+ success: true,
358
+ });
359
+ }
360
+ else {
361
+ errors.push({
362
+ path,
363
+ reason: `quarantine tar failed — worktree preserved (T11996, was ${quarantineReason})`,
364
+ });
365
+ appendWorktreeAuditLog(projectRoot, {
366
+ action: 'quarantine',
367
+ xdgPath: path,
368
+ taskId,
369
+ reason: `${reason}+${quarantineReason}`,
370
+ success: false,
371
+ error: 'tar archive creation failed',
372
+ });
373
+ }
374
+ return;
375
+ }
148
376
  // T11123: Use NAPI destroyWorktree (Rust worktrunk-core) instead of raw
149
377
  // git worktree unlock + remove shell-outs. The NAPI binding handles
150
378
  // unlock + force-remove atomically in Rust.
@@ -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.6.13",
3
+ "version": "2026.6.15",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Native CLEO worktree backend SDK",
@@ -25,14 +25,14 @@
25
25
  "author": "CLEO Code <hello@cleocode.dev>",
26
26
  "license": "MIT",
27
27
  "dependencies": {
28
- "@cleocode/contracts": "2026.6.13",
29
- "@cleocode/paths": "2026.6.13"
28
+ "@cleocode/paths": "2026.6.15",
29
+ "@cleocode/contracts": "2026.6.15"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "^24.3.0",
33
33
  "typescript": "^6.0.2",
34
34
  "vitest": "^4.1.4",
35
- "@cleocode/core": "2026.6.13"
35
+ "@cleocode/core": "2026.6.15"
36
36
  },
37
37
  "repository": {
38
38
  "type": "git",