@ai-dossier/worktree-pool 0.6.1 → 0.7.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.
package/README.md CHANGED
@@ -29,9 +29,10 @@ Requires Node.js >= 20.0.0.
29
29
  | `worktree-pool status [--json]` | Show pool inventory (warm/assigned/broken counts); `--json` prints the whole inventory, including per-entry `status`, for callers |
30
30
  | `worktree-pool replenish [--count N]` | Pre-warm spares up to target count |
31
31
  | `worktree-pool claim --issue N --branch B` | Claim a warm worktree, print path |
32
- | `worktree-pool return --path P [--json]` | Return worktree to pool for reuse; self-checks on success, and on failure marks the entry `broken` and exits non-zero naming the step |
32
+ | `worktree-pool return --path P [--json]` | Return worktree to pool for reuse; kills any process still running out of it first, self-checks on success, and on failure marks the entry `broken` and exits non-zero naming the step |
33
33
  | `worktree-pool refresh` | Fetch origin + rebuild in all warm worktrees |
34
- | `worktree-pool gc [--dry-run] [--yes]` | Remove stale/orphaned pool worktrees (never anything else) |
34
+ | `worktree-pool gc [--dry-run] [--yes]` | Remove stale/orphaned pool worktrees (never anything else), killing any process still running out of one first |
35
+ | `worktree-pool reap [--older-than H] [--dry-run] [--yes]` | Kill processes orphaned by a removed or non-assigned worktree, at least `H` hours old (default 24) — the sweep for what `return`/`gc` already missed |
35
36
  | `worktree-pool init` | Configure pool directory for this project |
36
37
  | `worktree-pool detect [dir]` | Print the detected package-manager env as JSON |
37
38
 
@@ -57,6 +58,11 @@ worktree-pool return --path "$WORKTREE_PATH"
57
58
  # Clean up stale worktrees (prints the plan first, then asks)
58
59
  worktree-pool gc --dry-run # show what would go
59
60
  worktree-pool gc --yes # remove it, no prompt (required when stdin is not a TTY)
61
+
62
+ # Sweep processes orphaned by worktrees return/gc already lost track of —
63
+ # run this on a schedule (a host cron/timer), not per-issue
64
+ worktree-pool reap --older-than 24 --dry-run
65
+ worktree-pool reap --older-than 24 --yes
60
66
  ```
61
67
 
62
68
  ## How It Works
@@ -72,11 +78,28 @@ replenish claim return
72
78
 
73
79
  1. **Replenish** creates worktrees from `base_ref` (default `origin/main`) on temp branches, then runs the warm commands (install + build)
74
80
  2. **Claim** renames a warm worktree, switches to your feature branch — instant setup (~2s)
75
- 3. **Return** recycles the worktree back to pool on a fresh temp branch, then verifies the result against reality — the entry really reads `warm`, no tracked file is dirty, and the new `pool/spare-*` branch is really checked out — before reporting success. A failure at any step leaves the entry `broken` (never `assigned`, never a falsely-`warm` spare), leaves the directory on disk, and exits non-zero naming the step
76
- 4. **GC** removes broken entries and stale entries (>72h) and reconciles disk state vs pool state — only for worktrees the pool created (see [Sharing the pool directory](#sharing-the-pool-directory))
81
+ 3. **Return** first kills any process still running out of the worktree (see [Process cleanup](#process-cleanup) below), then recycles it back to pool on a fresh temp branch, then verifies the result against reality — the entry really reads `warm`, no tracked file is dirty, and the new `pool/spare-*` branch is really checked out — before reporting success. A failure at any step leaves the entry `broken` (never `assigned`, never a falsely-`warm` spare), leaves the directory on disk, and exits non-zero naming the step
82
+ 4. **GC** kills any process still running out of a worktree it is about to touch, then removes broken entries and stale entries (>72h) and reconciles disk state vs pool state — only for worktrees the pool created (see [Sharing the pool directory](#sharing-the-pool-directory))
77
83
 
78
84
  Claim and return only re-run the warm commands when the project's lockfile changed between the worktree's base commit and `base_ref` — otherwise the existing `node_modules` and build output are reused.
79
85
 
86
+ ## Process cleanup
87
+
88
+ A dev server, jest run, or vite server started inside a worktree by a verification step does not stop on its own when the worktree it was started in is recycled or removed. Left unaddressed, these outlive the worktree, the branch and the issue that spawned them — a real sweep on hcc found 13 such processes across four merged worktrees, one holding open connections to a shared test database for 10 days.
89
+
90
+ - **`return` and `gc` kill first.** Before recycling or removing a worktree, both send SIGTERM to every process whose cwd or command line is rooted under that exact worktree path, wait up to 5 seconds, then SIGKILL anything still alive. The kill is scoped to that one worktree — a sibling worktree sharing the same pool directory is never touched — and the killed pids are printed and included in `return --json`'s `killedProcesses` / `gc`'s `killedProcesses` field.
91
+ - **`reap` is the sweep for what got away** — a process from a worktree that was removed by something other than this tool, or that is otherwise no longer `assigned`:
92
+
93
+ ```bash
94
+ $ worktree-pool reap --older-than 24 --dry-run
95
+ Found 1 orphaned process(es):
96
+ pid 48213 age 11.4h worktree bug-701-fix-something
97
+ node /repo/../worktrees/bug-701-fix-something/node_modules/.bin/vite
98
+ ```
99
+
100
+ `reap` never touches a worktree the pool did not create (the same [ownership rule](#sharing-the-pool-directory) `gc` uses), and never a currently-registered worktree in an active pool status (`assigned`, `recycling`, `creating`, `warming`) — that is active work, not an orphan, and includes a `return` that is mid-flight but has not reached its own kill step yet. Run it on a schedule (a host cron/timer calling `reap --older-than 24 --yes`), not per-issue; `return`/`gc` already handle the common case at the moment a worktree changes hands.
101
+ - The Linux discovery path (`/proc/*/cwd` + `/proc/*/cmdline`) always excludes the invoking process and its whole parent chain, so running `return --path <wt>` from a shell whose own cwd is inside `<wt>` cannot kill its own invoker. The `ps`-based fallback (non-Linux) can only exclude the invoking process itself — an ancestor's cwd/ppid is not determinable without `/proc`.
102
+
80
103
  ### Pool State
81
104
 
82
105
  Pool state is stored in `worktrees/.pool-state.json` (automatically gitignored). Each worktree transitions through:
@@ -208,21 +231,27 @@ Note the two distinct fields, matching the two sections above: the top-level
208
231
  "dirty_entries": [],
209
232
  "checked_out_branch": "pool/spare-pool-1787468026330-1079658",
210
233
  "expected_branch": "pool/spare-pool-1787468026330-1079658"
211
- }
234
+ },
235
+ "killedProcesses": [
236
+ { "pid": 48213, "command": "node .../vite", "signal": "SIGTERM" }
237
+ ]
212
238
  }
213
239
  ```
214
240
 
215
241
  ### Programmatic use
216
242
 
243
+ `returnWorktree` is `async` (it kills processes before recycling — see
244
+ [Process cleanup](#process-cleanup)):
245
+
217
246
  ```ts
218
247
  import { returnWorktree, ReturnFailure } from '@ai-dossier/worktree-pool';
219
248
 
220
249
  try {
221
- const result = returnWorktree(worktreePath);
222
- // result.id, result.path, result.verification
250
+ const result = await returnWorktree(worktreePath);
251
+ // result.id, result.path, result.verification, result.killedProcesses, result.killErrors
223
252
  } catch (err) {
224
253
  if (err instanceof ReturnFailure) {
225
- // err.step (a ReturnStep), err.entryId, err.worktreePath
254
+ // err.step (a ReturnStep), err.entryId, err.worktreePath, err.killedProcesses, err.killErrors
226
255
  // The entry is 'broken' and the directory was NOT destroyed — unless
227
256
  // err.markError is non-null, which means the marking write itself failed
228
257
  // and pool state should be re-checked before the next claim.
@@ -230,6 +259,18 @@ try {
230
259
  }
231
260
  ```
232
261
 
262
+ `reap` is the same shape, without the try/catch — it never throws:
263
+
264
+ ```ts
265
+ import { reap } from '@ai-dossier/worktree-pool';
266
+
267
+ const result = await reap({ olderThanHours: 24, dryRun: true });
268
+ // result.candidates (what matched the age threshold), result.killed (empty on a dry run),
269
+ // result.aborted (confirmation missing / declined), result.errors
270
+ ```
271
+
272
+ The lower-level primitives `return`/`gc`/`reap` are built on — `findWorktreeProcesses`, `killProcesses`, `killWorktreeProcesses` — are also exported, for a caller that wants process discovery/kill on its own terms.
273
+
233
274
  ## Configuration
234
275
 
235
276
  ### Pool sizing — `.pool-state.json`
package/dist/cli.js CHANGED
@@ -2,6 +2,25 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const pool_actions_1 = require("./pool-actions");
5
+ /**
6
+ * Print the processes a `return`/`gc` kill step killed, and any non-fatal
7
+ * kill failures alongside them — the one block `return`, `gc`, and a failed
8
+ * `return`'s error handler all need (imboard-ai/ai-dossier#760).
9
+ */
10
+ function printKilledProcesses(killed, killErrors, headerIndent = '', itemIndent = ' ') {
11
+ if (killed.length > 0) {
12
+ console.error(`${headerIndent}Killed ${killed.length} process(es):`);
13
+ for (const p of killed) {
14
+ console.error(`${itemIndent}pid ${p.pid} (${p.signal}) ${p.command.slice(0, 80)}`);
15
+ }
16
+ }
17
+ if (killErrors.length > 0) {
18
+ console.error(`${headerIndent}Kill failures (${killErrors.length}) — process may still be running:`);
19
+ for (const e of killErrors) {
20
+ console.error(`${itemIndent}${e}`);
21
+ }
22
+ }
23
+ }
5
24
  /**
6
25
  * Print corrupted pool directories (#443) — a directory on disk whose git
7
26
  * admin dir is gone. Distinct from a #453 `broken` *entry*, which is a pool
@@ -25,21 +44,33 @@ Commands:
25
44
  status [--json] Show pool inventory (--json for callers)
26
45
  replenish [--count N] Pre-warm spares up to target
27
46
  claim --issue N --branch B Claim a warm worktree, print path
28
- return --path P [--json] Return worktree to pool
47
+ return --path P [--json] Return worktree to pool (kills its processes first)
29
48
  refresh Fetch + rebuild all warm worktrees
30
- gc [--dry-run] [--yes] Remove stale/orphaned worktrees
49
+ gc [--dry-run] [--yes] Remove stale/orphaned worktrees (kills their processes first)
50
+ reap [--older-than H] [--dry-run] [--yes]
51
+ Kill processes orphaned by removed/non-assigned
52
+ worktrees, older than H hours (default 24)
31
53
  init Configure pool directory for this project
32
54
  detect [dir] Print detected package manager env as JSON
33
55
 
34
56
  The pool only ever removes worktrees it created. Worktrees sharing the pool
35
57
  directory that the pool did not create are reported as "foreign, skipped" and
36
- are never touched. gc requires --yes when stdin is not a TTY.
58
+ are never touched. gc and reap require --yes when stdin is not a TTY.
37
59
 
38
60
  A failed 'return' leaves its pool entry marked 'broken' (never 'assigned' or
39
61
  'warm') and exits non-zero naming the step that failed — except for a path that
40
62
  is not in the pool at all, which fails before there is any entry to mark. The
41
63
  worktree directory is left on disk for inspection; 'status --json' carries the
42
- failed step, and gc clears the entry.`);
64
+ failed step, and gc clears the entry.
65
+
66
+ 'return' and 'gc' kill any process still running out of a worktree before
67
+ recycling/removing it (a dev server, jest run, or vite server a verification
68
+ step started and never stopped — imboard-ai/ai-dossier#760). 'reap' is the
69
+ sweep for what escaped that: processes rooted in worktrees that are already
70
+ gone, or in pool entries that are not actively assigned/recycling/creating/
71
+ warming, regardless of when they were last touched by return/gc. It never
72
+ touches a worktree the pool did not create, and never a currently-registered
73
+ worktree in an active pool status — that is active work, not an orphan.`);
43
74
  }
44
75
  /** A flag is set when present as `--x` or given the literal string 'true'. */
45
76
  function boolFlag(value) {
@@ -163,11 +194,12 @@ async function main() {
163
194
  }
164
195
  // Failures fall through to the outer catch, which prints the step and
165
196
  // exits 1 (#453). The entry is left `broken`, never `assigned`.
166
- const returned = (0, pool_actions_1.returnWorktree)(wtPath);
197
+ const returned = await (0, pool_actions_1.returnWorktree)(wtPath);
167
198
  if (boolFlag(flags.json)) {
168
199
  console.log(JSON.stringify(returned, null, 2));
169
200
  break;
170
201
  }
202
+ printKilledProcesses(returned.killedProcesses, returned.killErrors, '', ' ');
171
203
  const v = returned.verification;
172
204
  console.error('Worktree returned to pool');
173
205
  console.error('Self-check:');
@@ -209,6 +241,36 @@ async function main() {
209
241
  if (result.orphanIds.length > 0) {
210
242
  console.error(` Orphans: ${result.orphanIds.join(', ')}`);
211
243
  }
244
+ printKilledProcesses(result.killedProcesses, [], ' ', ' ');
245
+ }
246
+ if (result.errors.length > 0) {
247
+ for (const err of result.errors) {
248
+ console.error(` Error: ${err}`);
249
+ }
250
+ }
251
+ if (result.aborted) {
252
+ process.exit(1);
253
+ }
254
+ break;
255
+ }
256
+ case 'reap': {
257
+ const dryRun = boolFlag(flags['dry-run']);
258
+ const yes = boolFlag(flags.yes) || flags.force === true;
259
+ let olderThanHours;
260
+ if (flags['older-than'] !== undefined) {
261
+ olderThanHours = Number.parseFloat(String(flags['older-than']));
262
+ if (!Number.isFinite(olderThanHours) || olderThanHours < 0) {
263
+ console.error(`Error: --older-than must be a non-negative number of hours, got "${flags['older-than']}"`);
264
+ process.exit(1);
265
+ }
266
+ }
267
+ const result = await (0, pool_actions_1.reap)({ dryRun, yes, olderThanHours });
268
+ if (!result.dryRun && !result.aborted && result.candidates.length > 0) {
269
+ console.error(`Killed ${result.killed.length}/${result.candidates.length} process(es):`);
270
+ for (const c of result.candidates) {
271
+ const label = result.killed.some((k) => k.pid === c.pid) ? 'killed' : 'FAILED';
272
+ console.error(` pid ${c.pid} age ${(0, pool_actions_1.formatAge)(c.ageMs)} worktree ${c.worktree} [${label}] ${c.command.slice(0, 80)}`);
273
+ }
212
274
  }
213
275
  if (result.errors.length > 0) {
214
276
  for (const err of result.errors) {
@@ -242,6 +304,7 @@ async function main() {
242
304
  // Say plainly what state the pool is in, so a caller cannot read a
243
305
  // non-zero exit as "nothing happened" (#453). Never assert the entry was
244
306
  // marked without knowing it was — that claim being false is the bug.
307
+ printKilledProcesses(err.killedProcesses, err.killErrors, '', ' ');
245
308
  if (err.entryId === null) {
246
309
  console.error('No pool entry was modified.');
247
310
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- export { claim, detect, gc, init, ReturnFailure, type ReturnResult, type ReturnVerification, readPoolFileConfig, refresh, replenish, resolvePoolDir, returnWorktree, status, WARM_COMMAND_TIMEOUT_MS, } from './pool-actions';
1
+ export { claim, detect, formatAge, type GcResult, gc, init, type ReapCandidate, type ReapOptions, type ReapResult, ReturnFailure, type ReturnResult, type ReturnVerification, readPoolFileConfig, reap, refresh, replenish, resolvePoolDir, returnWorktree, status, WARM_COMMAND_TIMEOUT_MS, } from './pool-actions';
2
2
  export * from './pool-state';
3
+ export * from './process-scan';
3
4
  export * from './project-env';
4
5
  export * from './types';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,MAAM,EACN,EAAE,EACF,IAAI,EACJ,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,cAAc,EACd,cAAc,EACd,MAAM,EACN,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,QAAQ,EACb,EAAE,EACF,IAAI,EACJ,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,IAAI,EACJ,OAAO,EACP,SAAS,EACT,cAAc,EACd,cAAc,EACd,MAAM,EACN,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -14,14 +14,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.WARM_COMMAND_TIMEOUT_MS = exports.status = exports.returnWorktree = exports.resolvePoolDir = exports.replenish = exports.refresh = exports.readPoolFileConfig = exports.ReturnFailure = exports.init = exports.gc = exports.detect = exports.claim = void 0;
17
+ exports.WARM_COMMAND_TIMEOUT_MS = exports.status = exports.returnWorktree = exports.resolvePoolDir = exports.replenish = exports.refresh = exports.reap = exports.readPoolFileConfig = exports.ReturnFailure = exports.init = exports.gc = exports.formatAge = exports.detect = exports.claim = void 0;
18
18
  var pool_actions_1 = require("./pool-actions");
19
19
  Object.defineProperty(exports, "claim", { enumerable: true, get: function () { return pool_actions_1.claim; } });
20
20
  Object.defineProperty(exports, "detect", { enumerable: true, get: function () { return pool_actions_1.detect; } });
21
+ Object.defineProperty(exports, "formatAge", { enumerable: true, get: function () { return pool_actions_1.formatAge; } });
21
22
  Object.defineProperty(exports, "gc", { enumerable: true, get: function () { return pool_actions_1.gc; } });
22
23
  Object.defineProperty(exports, "init", { enumerable: true, get: function () { return pool_actions_1.init; } });
23
24
  Object.defineProperty(exports, "ReturnFailure", { enumerable: true, get: function () { return pool_actions_1.ReturnFailure; } });
24
25
  Object.defineProperty(exports, "readPoolFileConfig", { enumerable: true, get: function () { return pool_actions_1.readPoolFileConfig; } });
26
+ Object.defineProperty(exports, "reap", { enumerable: true, get: function () { return pool_actions_1.reap; } });
25
27
  Object.defineProperty(exports, "refresh", { enumerable: true, get: function () { return pool_actions_1.refresh; } });
26
28
  Object.defineProperty(exports, "replenish", { enumerable: true, get: function () { return pool_actions_1.replenish; } });
27
29
  Object.defineProperty(exports, "resolvePoolDir", { enumerable: true, get: function () { return pool_actions_1.resolvePoolDir; } });
@@ -29,6 +31,7 @@ Object.defineProperty(exports, "returnWorktree", { enumerable: true, get: functi
29
31
  Object.defineProperty(exports, "status", { enumerable: true, get: function () { return pool_actions_1.status; } });
30
32
  Object.defineProperty(exports, "WARM_COMMAND_TIMEOUT_MS", { enumerable: true, get: function () { return pool_actions_1.WARM_COMMAND_TIMEOUT_MS; } });
31
33
  __exportStar(require("./pool-state"), exports);
34
+ __exportStar(require("./process-scan"), exports);
32
35
  __exportStar(require("./project-env"), exports);
33
36
  __exportStar(require("./types"), exports);
34
37
  //# 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,+CAewB;AAdtB,qGAAA,KAAK,OAAA;AACL,sGAAA,MAAM,OAAA;AACN,kGAAA,EAAE,OAAA;AACF,oGAAA,IAAI,OAAA;AACJ,6GAAA,aAAa,OAAA;AAGb,kHAAA,kBAAkB,OAAA;AAClB,uGAAA,OAAO,OAAA;AACP,yGAAA,SAAS,OAAA;AACT,8GAAA,cAAc,OAAA;AACd,8GAAA,cAAc,OAAA;AACd,sGAAA,MAAM,OAAA;AACN,uHAAA,uBAAuB,OAAA;AAEzB,+CAA6B;AAC7B,gDAA8B;AAC9B,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAqBwB;AApBtB,qGAAA,KAAK,OAAA;AACL,sGAAA,MAAM,OAAA;AACN,yGAAA,SAAS,OAAA;AAET,kGAAA,EAAE,OAAA;AACF,oGAAA,IAAI,OAAA;AAIJ,6GAAA,aAAa,OAAA;AAGb,kHAAA,kBAAkB,OAAA;AAClB,oGAAA,IAAI,OAAA;AACJ,uGAAA,OAAO,OAAA;AACP,yGAAA,SAAS,OAAA;AACT,8GAAA,cAAc,OAAA;AACd,8GAAA,cAAc,OAAA;AACd,sGAAA,MAAM,OAAA;AACN,uHAAA,uBAAuB,OAAA;AAEzB,+CAA6B;AAC7B,iDAA+B;AAC/B,gDAA8B;AAC9B,0CAAwB"}
@@ -1,4 +1,5 @@
1
1
  import { getPoolStatus, type PoolDirClassification } from './pool-state';
2
+ import { type KilledProcess } from './process-scan';
2
3
  import { type PoolFileConfig, type ProjectEnv, type ReturnStep, type WorktreeStatus } from './types';
3
4
  /** Per-command budget for a warm-up install/build (#561: also the floor `packages/sched`'s batch-setup warm step should give its own exec). */
4
5
  export declare const WARM_COMMAND_TIMEOUT_MS = 300000;
@@ -70,6 +71,21 @@ export interface ReturnResult {
70
71
  path: string;
71
72
  /** The self-check that ran before this result was returned. */
72
73
  verification: ReturnVerification;
74
+ /**
75
+ * Processes killed before the recycle (imboard-ai/ai-dossier#760) — a dev
76
+ * server, jest run, or vite server started inside the worktree by a
77
+ * verification step, which would otherwise outlive it. Empty when nothing
78
+ * was found running.
79
+ */
80
+ killedProcesses: KilledProcess[];
81
+ /**
82
+ * Non-fatal kill failures (e.g. EPERM sending a signal) — a process that
83
+ * could not be confirmed dead. Empty on a clean kill or when nothing was
84
+ * found running; never throws the return over this, but an operator
85
+ * reading only `killedProcesses` would otherwise see `[]` and read a
86
+ * refused kill as "nothing was running."
87
+ */
88
+ killErrors: string[];
73
89
  }
74
90
  /**
75
91
  * A `return` that failed, tagged with the step that failed (#453 AC1). The
@@ -87,7 +103,11 @@ export declare class ReturnFailure extends Error {
87
103
  readonly worktreePath: string;
88
104
  /** Why the entry could NOT be marked broken, or `null` when it was marked. */
89
105
  readonly markError: string | null;
90
- constructor(step: ReturnStep, worktreePath: string, entryId: string | null, cause: unknown, markError?: string | null);
106
+ /** Processes killed before the failure (imboard-ai/ai-dossier#760), if any. */
107
+ readonly killedProcesses: KilledProcess[];
108
+ /** Non-fatal kill failures before the failure, if any — see `ReturnResult.killErrors`. */
109
+ readonly killErrors: string[];
110
+ constructor(step: ReturnStep, worktreePath: string, entryId: string | null, cause: unknown, markError?: string | null, killedProcesses?: KilledProcess[], killErrors?: string[]);
91
111
  }
92
112
  /**
93
113
  * Recycle an assigned worktree back to `warm`.
@@ -100,7 +120,7 @@ export declare class ReturnFailure extends Error {
100
120
  * (recorded id, actual on-disk path, a pool-owned temp branch) so `status`
101
121
  * shows it and `gc` can remove it.
102
122
  */
103
- export declare function returnWorktree(worktreePath: string): ReturnResult;
123
+ export declare function returnWorktree(worktreePath: string): Promise<ReturnResult>;
104
124
  export interface RefreshResult {
105
125
  refreshed: number;
106
126
  /** Worktrees left untouched because provenance could not be confirmed. */
@@ -149,8 +169,60 @@ export interface GcResult {
149
169
  /** `true` when confirmation was missing and nothing was removed. */
150
170
  aborted: boolean;
151
171
  errors: string[];
172
+ /**
173
+ * Processes killed before their worktree was destroyed (#760), across all
174
+ * removed candidates. Empty on a dry run — nothing is killed until the
175
+ * removal actually happens.
176
+ */
177
+ killedProcesses: KilledProcess[];
152
178
  }
153
179
  export declare function gc(opts?: GcOptions): Promise<GcResult>;
180
+ export interface ReapOptions {
181
+ /** Only kill processes at least this many hours old. Default 24. */
182
+ olderThanHours?: number;
183
+ /** Report what would be killed and exit without touching anything. */
184
+ dryRun?: boolean;
185
+ /** Approve the kill list without prompting. */
186
+ yes?: boolean;
187
+ /** Override TTY detection for the confirmation prompt. */
188
+ interactive?: boolean;
189
+ }
190
+ export interface ReapCandidate {
191
+ pid: number;
192
+ /** Directory name directly inside the pool directory this process is rooted in. */
193
+ worktree: string;
194
+ /** Best-effort command line. */
195
+ command: string;
196
+ /** Milliseconds since process start, or `null` when it could not be determined. */
197
+ ageMs: number | null;
198
+ }
199
+ export interface ReapResult {
200
+ /** Orphaned processes meeting the `--older-than` age threshold — what a real run would kill. */
201
+ candidates: ReapCandidate[];
202
+ /** The subset actually killed (empty on a dry run or an aborted run). */
203
+ killed: ReapCandidate[];
204
+ dryRun: boolean;
205
+ /** `true` when confirmation was missing and nothing was killed. */
206
+ aborted: boolean;
207
+ errors: string[];
208
+ }
209
+ /** Human-readable age for CLI/plan output — hours to one decimal, or 'unknown'. */
210
+ export declare function formatAge(ageMs: number | null): string;
211
+ /**
212
+ * Collect processes rooted in worktrees the pool owns that are no longer
213
+ * legitimately running — a removed worktree (no longer a registered git
214
+ * worktree), or a pool entry that is not `assigned` (imboard-ai/ai-dossier#760).
215
+ * A currently-assigned, still-registered worktree is active work and is
216
+ * always out of scope here — `return`'s kill-on-recycle covers it once it is
217
+ * actually returned. A worktree the pool does not own (a developer's own
218
+ * checkout sharing the pool directory) is never touched, matching every
219
+ * other command's ownership rule (#438).
220
+ *
221
+ * This is what a host timer calls (`reap --older-than 24`, cron-driven) to
222
+ * collect processes that outlived the worktree, branch, and issue that
223
+ * spawned them.
224
+ */
225
+ export declare function reap(opts?: ReapOptions): Promise<ReapResult>;
154
226
  export declare function status(): ReturnType<typeof getPoolStatus> & {
155
227
  pool_dir: string;
156
228
  /** Worktrees sharing the pool directory that the pool did not create. */
@@ -1 +1 @@
1
- {"version":3,"file":"pool-actions.d.ts","sourceRoot":"","sources":["../src/pool-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool-actions.d.ts","sourceRoot":"","sources":["../src/pool-actions.ts"],"names":[],"mappings":"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"}