@monoes/monomindcli 2.15.5 → 2.15.6

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 (69) hide show
  1. package/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +9 -19
  2. package/dist/src/commands/cleanup-plan.d.ts +57 -0
  3. package/dist/src/commands/cleanup-plan.d.ts.map +1 -0
  4. package/dist/src/commands/cleanup-plan.js +379 -0
  5. package/dist/src/commands/cleanup-plan.js.map +1 -0
  6. package/dist/src/commands/cleanup.d.ts.map +1 -1
  7. package/dist/src/commands/cleanup.js +87 -160
  8. package/dist/src/commands/cleanup.js.map +1 -1
  9. package/dist/src/commands/search-universal.d.ts +8 -0
  10. package/dist/src/commands/search-universal.d.ts.map +1 -1
  11. package/dist/src/commands/search-universal.js +14 -0
  12. package/dist/src/commands/search-universal.js.map +1 -1
  13. package/dist/src/index.d.ts.map +1 -1
  14. package/dist/src/index.js +11 -2
  15. package/dist/src/index.js.map +1 -1
  16. package/dist/src/orgrt/completion-gate.d.ts +25 -0
  17. package/dist/src/orgrt/completion-gate.d.ts.map +1 -1
  18. package/dist/src/orgrt/completion-gate.js +34 -9
  19. package/dist/src/orgrt/completion-gate.js.map +1 -1
  20. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  21. package/dist/src/orgrt/daemon.js +14 -2
  22. package/dist/src/orgrt/daemon.js.map +1 -1
  23. package/dist/src/orgrt/decisions.d.ts +7 -1
  24. package/dist/src/orgrt/decisions.d.ts.map +1 -1
  25. package/dist/src/orgrt/decisions.js +68 -8
  26. package/dist/src/orgrt/decisions.js.map +1 -1
  27. package/dist/src/orgrt/idle-deadline.d.ts +10 -0
  28. package/dist/src/orgrt/idle-deadline.d.ts.map +1 -1
  29. package/dist/src/orgrt/idle-deadline.js +8 -0
  30. package/dist/src/orgrt/idle-deadline.js.map +1 -1
  31. package/dist/src/orgrt/mailbox.d.ts +7 -0
  32. package/dist/src/orgrt/mailbox.d.ts.map +1 -1
  33. package/dist/src/orgrt/mailbox.js +14 -0
  34. package/dist/src/orgrt/mailbox.js.map +1 -1
  35. package/dist/src/orgrt/review-packet.d.ts.map +1 -1
  36. package/dist/src/orgrt/review-packet.js +2 -1
  37. package/dist/src/orgrt/review-packet.js.map +1 -1
  38. package/dist/src/orgrt/role-sandbox.d.ts +1 -0
  39. package/dist/src/orgrt/role-sandbox.d.ts.map +1 -1
  40. package/dist/src/orgrt/role-sandbox.js +6 -1
  41. package/dist/src/orgrt/role-sandbox.js.map +1 -1
  42. package/dist/src/orgrt/session.d.ts.map +1 -1
  43. package/dist/src/orgrt/session.js +3 -1
  44. package/dist/src/orgrt/session.js.map +1 -1
  45. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  46. package/dist/src/orgrt/task-dag.js +1 -0
  47. package/dist/src/orgrt/task-dag.js.map +1 -1
  48. package/dist/src/orgrt/types.d.ts +3 -0
  49. package/dist/src/orgrt/types.d.ts.map +1 -1
  50. package/dist/src/orgrt/types.js +6 -2
  51. package/dist/src/orgrt/types.js.map +1 -1
  52. package/dist/src/update/checker.d.ts +3 -1
  53. package/dist/src/update/checker.d.ts.map +1 -1
  54. package/dist/src/update/checker.js +7 -3
  55. package/dist/src/update/checker.js.map +1 -1
  56. package/dist/src/update/index.d.ts +16 -0
  57. package/dist/src/update/index.d.ts.map +1 -1
  58. package/dist/src/update/index.js +37 -1
  59. package/dist/src/update/index.js.map +1 -1
  60. package/dist/src/update/refresh-worker.d.ts +9 -0
  61. package/dist/src/update/refresh-worker.d.ts.map +1 -0
  62. package/dist/src/update/refresh-worker.js +17 -0
  63. package/dist/src/update/refresh-worker.js.map +1 -0
  64. package/dist/src/utils/resource-governor.d.ts +44 -2
  65. package/dist/src/utils/resource-governor.d.ts.map +1 -1
  66. package/dist/src/utils/resource-governor.js +157 -40
  67. package/dist/src/utils/resource-governor.js.map +1 -1
  68. package/dist/tsconfig.tsbuildinfo +1 -1
  69. package/package.json +3 -3
@@ -12,9 +12,11 @@ export { checkForUpdates, checkSinglePackage, DEFAULT_CONFIG, getInstalledVersio
12
12
  export { clearHistory, executeMultipleUpdates, executeUpdate, getUpdateHistory, loadHistory, rollbackUpdate, } from './executor.js';
13
13
  export { clearCache, getCachedVersions, loadState, recordCheck, shouldCheckForUpdates, } from './rate-limiter.js';
14
14
  export { validateBulkUpdate, validateUpdate } from './validator.js';
15
+ import { spawn } from 'node:child_process';
16
+ import { fileURLToPath } from 'node:url';
15
17
  // Re-export a convenience function for startup
16
18
  import { checkForUpdates, DEFAULT_CONFIG } from './checker.js';
17
- import { getCachedVersions } from './rate-limiter.js';
19
+ import { getCachedVersions, reserveCheck } from './rate-limiter.js';
18
20
  // Inline semver shim — avoids external dependency (semver is not listed in package.json)
19
21
  const semver = {
20
22
  valid: (v) => /^\d+\.\d+\.\d+/.test(v || '') ? v : null,
@@ -52,6 +54,40 @@ export function getUpdateTagline(currentVersion) {
52
54
  return '';
53
55
  }
54
56
  }
57
+ /**
58
+ * `--version` returns before the startup update check runs, so on its own it
59
+ * would never refresh the cache its tagline reads. When the cache is missing
60
+ * or stale, reserve a check slot and hand the fetch to a detached, unref'd,
61
+ * output-less child so the NEXT `--version` is accurate. Never blocks, never
62
+ * prints, never throws.
63
+ *
64
+ * The gate is the startup check's own reserveCheck(): CI /
65
+ * CONTINUOUS_INTEGRATION, MONOMIND_AUTO_UPDATE=false, the check interval and
66
+ * the daily cap. Reserving stamps `lastCheck` before spawning, so a refresh
67
+ * that is running (or just ran) blocks the next one.
68
+ *
69
+ * Returns true when a refresh was started.
70
+ */
71
+ export function refreshUpdateCacheInBackground(spawnFn = spawn) {
72
+ try {
73
+ if (!reserveCheck(DEFAULT_CONFIG.checkIntervalHours).allowed)
74
+ return false;
75
+ const worker = fileURLToPath(new URL('./refresh-worker.js', import.meta.url));
76
+ const child = spawnFn(process.execPath, [worker], {
77
+ detached: true,
78
+ stdio: 'ignore',
79
+ windowsHide: true,
80
+ });
81
+ child.on('error', () => {
82
+ /* silent — a failed spawn must not crash --version */
83
+ });
84
+ child.unref();
85
+ return true;
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ }
55
91
  /**
56
92
  * Run auto-update check on startup
57
93
  * This is the main entry point for the auto-update system
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/update/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/update/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Detached child spawned by refreshUpdateCacheInBackground() (`monomind
3
+ * --version`). The parent already reserved the rate-limit slot, so this only
4
+ * fetches the latest versions and rewrites the update cache. It prints
5
+ * nothing, and fails silently (offline, registry down) — the next check
6
+ * after the interval retries.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=refresh-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-worker.d.ts","sourceRoot":"","sources":["../../../src/update/refresh-worker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Detached child spawned by refreshUpdateCacheInBackground() (`monomind
3
+ * --version`). The parent already reserved the rate-limit slot, so this only
4
+ * fetches the latest versions and rewrites the update cache. It prints
5
+ * nothing, and fails silently (offline, registry down) — the next check
6
+ * after the interval retries.
7
+ */
8
+ import { checkForUpdates, DEFAULT_CONFIG } from './checker.js';
9
+ // Hard ceiling on the whole refresh: registry fetches time out at 5s each,
10
+ // but a hung resolver or `npm prefix -g` probe must not leave this lingering.
11
+ setTimeout(() => process.exit(0), 20_000).unref();
12
+ checkForUpdates(DEFAULT_CONFIG, { slotReserved: true })
13
+ .catch(() => {
14
+ /* silent */
15
+ })
16
+ .finally(() => process.exit(0));
17
+ //# sourceMappingURL=refresh-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-worker.js","sourceRoot":"","sources":["../../../src/update/refresh-worker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D,2EAA2E;AAC3E,8EAA8E;AAC9E,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;AAElD,eAAe,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KACpD,KAAK,CAAC,GAAG,EAAE;IACV,YAAY;AACd,CAAC,CAAC;KACD,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -24,10 +24,52 @@ export interface ResourceCheck {
24
24
  export declare function checkResources(): ResourceCheck;
25
25
  /** Wait until resources are available, with a timeout. Returns false if timed out. */
26
26
  export declare function waitForCapacity(timeoutMs?: number): Promise<ResourceCheck>;
27
+ /** One row of the process table: identity plus the ownership fields reaping needs. */
28
+ export interface ProcEntry {
29
+ pid: number;
30
+ ppid: number;
31
+ /** Process group id. */
32
+ pgrp?: number;
33
+ /** Session id. Only known from /proc (Linux). */
34
+ sid?: number;
35
+ /** Start time in clock ticks since boot (/proc stat field 22) — guards PID reuse. */
36
+ start?: number;
37
+ cmd: string;
38
+ }
39
+ /**
40
+ * Parse /proc/<pid>/stat. `comm` (field 2) may contain spaces and parens, so
41
+ * fields are counted from the LAST ')'.
42
+ */
43
+ export declare function parseProcStat(stat: string): Pick<ProcEntry, 'pid' | 'ppid' | 'pgrp' | 'sid' | 'start'> | null;
44
+ /**
45
+ * Decide which claude-agent-sdk processes are reapable. Pure — the process
46
+ * table and the invoking pid are inputs — so every ownership rule is testable.
47
+ *
48
+ * With `ownerPid`, only that owner's direct SDK children are selected (the
49
+ * org daemon reaping its own agents).
50
+ *
51
+ * Without it (`cleanup --force`), a process is an orphan only when ownership
52
+ * says so, never by the name of pid 1:
53
+ * - it is not the invoking process, one of its ancestors, or a descendant;
54
+ * - it shares neither the invoking process's session nor its process group
55
+ * (a dummy whose parent reads as pid 1 but which belongs to the invoking
56
+ * session is still the invoker's);
57
+ * - no process up its parent chain is a still-running claude/monomind
58
+ * session (Claude Code running as a container's pid 1 keeps its SDK
59
+ * children, whose ppid is 1);
60
+ * - it is not in its live parent's session: a spawned child stays in its
61
+ * parent's session, while an orphan adopted by init, systemd --user,
62
+ * tini, bwrap or any other subreaper does not. A parent that is not
63
+ * visible counts as adoption only for ppid 1 (the true init outside a
64
+ * PID namespace's view).
65
+ * Without session ids (macOS `ps`), the last rule falls back to "ppid is 1 or
66
+ * the parent is an init/systemd", as before.
67
+ */
68
+ export declare function selectOrphanedSdkPids(table: ProcEntry[], selfPid: number, protectedPids: Set<number>, ownerPid?: number): number[];
27
69
  /** Kill orphaned claude-agent-sdk processes.
28
70
  * @param protectedPids PIDs to never kill (e.g. sibling org agents).
29
71
  * @param ownerPid Only kill SDK processes whose parent is this PID.
30
- * When undefined, only kills genuinely orphaned processes (ppid === 1 or
31
- * parent is an init/subreaper like systemd --user). */
72
+ * When undefined, only kills processes `selectOrphanedSdkPids` proves
73
+ * orphaned by ownership (see there). */
32
74
  export declare function reapOrphanedSdkProcesses(protectedPids: Set<number>, ownerPid?: number): number;
33
75
  //# sourceMappingURL=resource-governor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-governor.d.ts","sourceRoot":"","sources":["../../../src/utils/resource-governor.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;CACxB;AAaD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAExE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED;;4EAE4E;AAC5E,wBAAgB,oBAAoB,IAAI,MAAM,CAwB7C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAkB1C;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,IAAI,aAAa,CA6B9C;AAED,sFAAsF;AACtF,wBAAsB,eAAe,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAWhF;AAED;;;;0DAI0D;AAC1D,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAsD9F"}
1
+ {"version":3,"file":"resource-governor.d.ts","sourceRoot":"","sources":["../../../src/utils/resource-governor.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;CACxB;AAaD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAExE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED;;4EAE4E;AAC5E,wBAAgB,oBAAoB,IAAI,MAAM,CAwB7C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAkB1C;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,IAAI,aAAa,CA6B9C;AAED,sFAAsF;AACtF,wBAAsB,eAAe,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAWhF;AAED,sFAAsF;AACtF,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAWD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,GACX,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,CASnE;AAkDD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAuCV;AAED;;;;2CAI2C;AAC3C,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB9F"}
@@ -1,6 +1,7 @@
1
1
  // packages/@monomind/cli/src/utils/resource-governor.ts
2
2
  // monolean: single-module resource gate — upgrade path = cgroup integration
3
3
  import { execSync } from 'node:child_process';
4
+ import { readdirSync, readFileSync } from 'node:fs';
4
5
  import { cpus, freemem, platform, totalmem } from 'node:os';
5
6
  const defaults = () => ({
6
7
  minFreeMemBytes: parseInt(process.env.MONOMIND_MIN_FREE_MEM_MB || '0', 10) * 1024 * 1024 ||
@@ -106,56 +107,172 @@ export async function waitForCapacity(timeoutMs = 60_000) {
106
107
  }
107
108
  return checkResources();
108
109
  }
110
+ const SDK_CMD_RE = /claude-agent-sdk[\s\S]*--output-format|--output-format[\s\S]*claude-agent-sdk/;
111
+ // A still-running claude/monomind session anywhere up a process's parent
112
+ // chain owns it: Claude Code itself, an SDK process, or a monomind daemon.
113
+ const LIVE_SESSION_RE = /\bclaude\b|monomind/i;
114
+ // Fallback-only (no session ids, e.g. macOS `ps`): a parent other than pid 1
115
+ // counts as a subreaper only if it is an init/systemd by name.
116
+ const INIT_SUBREAPER_RE = /(^|\/)systemd( --user)?$|\/sbin\/init|\/lib\/systemd\/systemd/;
117
+ const MAX_CHAIN = 64;
118
+ /**
119
+ * Parse /proc/<pid>/stat. `comm` (field 2) may contain spaces and parens, so
120
+ * fields are counted from the LAST ')'.
121
+ */
122
+ export function parseProcStat(stat) {
123
+ const close = stat.lastIndexOf(')');
124
+ if (close < 0)
125
+ return null;
126
+ const pid = parseInt(stat, 10);
127
+ // After ')': state(3) ppid(4) pgrp(5) session(6) ... starttime(22)
128
+ const f = stat.slice(close + 2).split(' ');
129
+ const [ppid, pgrp, sid, start] = [f[1], f[2], f[3], f[19]].map((v) => parseInt(v ?? '', 10));
130
+ if ([pid, ppid, pgrp, sid].some((n) => Number.isNaN(n)))
131
+ return null;
132
+ return { pid, ppid, pgrp, sid, start: Number.isNaN(start) ? undefined : start };
133
+ }
134
+ function readProcStat(pid) {
135
+ try {
136
+ return parseProcStat(readFileSync(`/proc/${pid}/stat`, 'utf8'));
137
+ }
138
+ catch {
139
+ return null;
140
+ }
141
+ }
142
+ /** Linux: the whole process table from /proc, with session ids. Null without /proc. */
143
+ function readProcTable() {
144
+ let names;
145
+ try {
146
+ names = readdirSync('/proc');
147
+ }
148
+ catch {
149
+ return null;
150
+ }
151
+ const out = [];
152
+ for (const name of names) {
153
+ if (!/^\d+$/.test(name))
154
+ continue;
155
+ const st = readProcStat(Number(name));
156
+ if (!st)
157
+ continue; // exited while we looked
158
+ let cmd = '';
159
+ try {
160
+ cmd = readFileSync(`/proc/${name}/cmdline`, 'utf8').replace(/\0+$/, '').replace(/\0/g, ' ');
161
+ }
162
+ catch {
163
+ /* exited */
164
+ }
165
+ out.push({ ...st, cmd });
166
+ }
167
+ return out.length > 0 ? out : null;
168
+ }
169
+ /** macOS / no-/proc fallback: `ps` gives pid, ppid and process group, not sessions. */
170
+ function readPsTable() {
171
+ const out = execSync('ps -eo pid,ppid,pgid,command', {
172
+ encoding: 'utf8',
173
+ timeout: 5000,
174
+ stdio: ['ignore', 'pipe', 'ignore'],
175
+ });
176
+ const rows = [];
177
+ for (const line of out.split('\n')) {
178
+ const m = /^\s*(\d+)\s+(\d+)\s+(\d+)\s+(.*)$/.exec(line);
179
+ if (m)
180
+ rows.push({ pid: Number(m[1]), ppid: Number(m[2]), pgrp: Number(m[3]), cmd: m[4] ?? '' });
181
+ }
182
+ return rows;
183
+ }
184
+ /**
185
+ * Decide which claude-agent-sdk processes are reapable. Pure — the process
186
+ * table and the invoking pid are inputs — so every ownership rule is testable.
187
+ *
188
+ * With `ownerPid`, only that owner's direct SDK children are selected (the
189
+ * org daemon reaping its own agents).
190
+ *
191
+ * Without it (`cleanup --force`), a process is an orphan only when ownership
192
+ * says so, never by the name of pid 1:
193
+ * - it is not the invoking process, one of its ancestors, or a descendant;
194
+ * - it shares neither the invoking process's session nor its process group
195
+ * (a dummy whose parent reads as pid 1 but which belongs to the invoking
196
+ * session is still the invoker's);
197
+ * - no process up its parent chain is a still-running claude/monomind
198
+ * session (Claude Code running as a container's pid 1 keeps its SDK
199
+ * children, whose ppid is 1);
200
+ * - it is not in its live parent's session: a spawned child stays in its
201
+ * parent's session, while an orphan adopted by init, systemd --user,
202
+ * tini, bwrap or any other subreaper does not. A parent that is not
203
+ * visible counts as adoption only for ppid 1 (the true init outside a
204
+ * PID namespace's view).
205
+ * Without session ids (macOS `ps`), the last rule falls back to "ppid is 1 or
206
+ * the parent is an init/systemd", as before.
207
+ */
208
+ export function selectOrphanedSdkPids(table, selfPid, protectedPids, ownerPid) {
209
+ const byPid = new Map(table.map((p) => [p.pid, p]));
210
+ const chainOf = (p) => {
211
+ const chain = [];
212
+ const seen = new Set([p.pid]);
213
+ for (let cur = byPid.get(p.ppid); cur && !seen.has(cur.pid) && chain.length < MAX_CHAIN;) {
214
+ chain.push(cur);
215
+ seen.add(cur.pid);
216
+ cur = byPid.get(cur.ppid);
217
+ }
218
+ return chain;
219
+ };
220
+ const self = byPid.get(selfPid);
221
+ const selfAncestors = new Set(self ? chainOf(self).map((a) => a.pid) : []);
222
+ const picked = [];
223
+ for (const c of table) {
224
+ if (!SDK_CMD_RE.test(c.cmd) || protectedPids.has(c.pid) || c.pid === selfPid)
225
+ continue;
226
+ if (ownerPid != null) {
227
+ if (c.ppid === ownerPid)
228
+ picked.push(c.pid);
229
+ continue;
230
+ }
231
+ if (!self || selfAncestors.has(c.pid))
232
+ continue; // cannot place ourselves: fail safe
233
+ const chain = chainOf(c);
234
+ if (chain.some((a) => a.pid === selfPid))
235
+ continue; // our own descendant
236
+ if (self.sid !== undefined && c.sid === self.sid)
237
+ continue;
238
+ if (self.pgrp !== undefined && c.pgrp === self.pgrp)
239
+ continue;
240
+ if (chain.some((a) => LIVE_SESSION_RE.test(a.cmd)))
241
+ continue;
242
+ const parent = byPid.get(c.ppid);
243
+ if (!parent) {
244
+ if (c.ppid !== 1)
245
+ continue;
246
+ }
247
+ else if (c.sid !== undefined && parent.sid !== undefined) {
248
+ if (parent.sid === c.sid)
249
+ continue;
250
+ }
251
+ else if (c.ppid !== 1 && !INIT_SUBREAPER_RE.test(parent.cmd)) {
252
+ continue;
253
+ }
254
+ picked.push(c.pid);
255
+ }
256
+ return picked;
257
+ }
109
258
  /** Kill orphaned claude-agent-sdk processes.
110
259
  * @param protectedPids PIDs to never kill (e.g. sibling org agents).
111
260
  * @param ownerPid Only kill SDK processes whose parent is this PID.
112
- * When undefined, only kills genuinely orphaned processes (ppid === 1 or
113
- * parent is an init/subreaper like systemd --user). */
261
+ * When undefined, only kills processes `selectOrphanedSdkPids` proves
262
+ * orphaned by ownership (see there). */
114
263
  export function reapOrphanedSdkProcesses(protectedPids, ownerPid) {
115
264
  // ps doesn't exist on native Windows — same rationale as countSdkProcesses above.
116
265
  if (platform() === 'win32')
117
266
  return 0;
118
267
  try {
119
- const out = execSync('ps -eo pid,ppid,command', {
120
- encoding: 'utf8',
121
- timeout: 5000,
122
- stdio: ['ignore', 'pipe', 'ignore'],
123
- });
124
- // Build pid→command map for parent lookup when detecting orphans
125
- const procMap = new Map();
126
- for (const line of out.split('\n')) {
127
- const parts = line.trim().split(/\s+/);
128
- const pid = parseInt(parts[0], 10);
129
- if (!Number.isNaN(pid) && parts.length >= 3) {
130
- procMap.set(pid, parts.slice(2).join(' '));
131
- }
132
- }
268
+ const table = (platform() === 'linux' ? readProcTable() : null) ?? readPsTable();
269
+ const starts = new Map(table.map((p) => [p.pid, p.start]));
133
270
  let reaped = 0;
134
- for (const line of out.split('\n')) {
135
- if (!line.includes('claude-agent-sdk') || !line.includes('--output-format'))
136
- continue;
137
- const parts = line.trim().split(/\s+/);
138
- const pid = parseInt(parts[0], 10);
139
- const ppid = parseInt(parts[1], 10);
140
- if (Number.isNaN(pid) || protectedPids.has(pid))
271
+ for (const pid of selectOrphanedSdkPids(table, process.pid, protectedPids, ownerPid)) {
272
+ // PID-reuse guard: the pid must still be the process that was judged.
273
+ const start = starts.get(pid);
274
+ if (start !== undefined && readProcStat(pid)?.start !== start)
141
275
  continue;
142
- // When ownerPid is specified, only kill children of that owner.
143
- if (ownerPid != null) {
144
- if (ppid !== ownerPid)
145
- continue;
146
- }
147
- else {
148
- // When ownerPid is undefined, only kill genuinely orphaned processes:
149
- // - ppid === 1 (adopted by init), OR
150
- // - parent is an init/subreaper (systemd, systemd --user, /sbin/init, etc.)
151
- if (ppid !== 1) {
152
- const parentCmd = procMap.get(ppid);
153
- const isInitSubreaper = parentCmd &&
154
- /(^|\/)systemd( --user)?$|\/sbin\/init|\/lib\/systemd\/systemd/.test(parentCmd);
155
- if (!isInitSubreaper)
156
- continue;
157
- }
158
- }
159
276
  try {
160
277
  process.kill(pid, 'SIGTERM');
161
278
  reaped++;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-governor.js","sourceRoot":"","sources":["../../../src/utils/resource-governor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-governor.js","sourceRoot":"","sources":["../../../src/utils/resource-governor.ts"],"names":[],"mappings":"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"}