instar 1.3.231 → 1.3.232

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 (36) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +29 -1
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +16 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/types.d.ts +16 -0
  8. package/dist/core/types.d.ts.map +1 -1
  9. package/dist/core/types.js.map +1 -1
  10. package/dist/monitoring/McpProcessReaper.d.ts +135 -0
  11. package/dist/monitoring/McpProcessReaper.d.ts.map +1 -0
  12. package/dist/monitoring/McpProcessReaper.js +229 -0
  13. package/dist/monitoring/McpProcessReaper.js.map +1 -0
  14. package/dist/monitoring/mcpProcessReaperDeps.d.ts +22 -0
  15. package/dist/monitoring/mcpProcessReaperDeps.d.ts.map +1 -0
  16. package/dist/monitoring/mcpProcessReaperDeps.js +125 -0
  17. package/dist/monitoring/mcpProcessReaperDeps.js.map +1 -0
  18. package/dist/monitoring/mcpProcessSignatures.d.ts +38 -0
  19. package/dist/monitoring/mcpProcessSignatures.d.ts.map +1 -0
  20. package/dist/monitoring/mcpProcessSignatures.js +55 -0
  21. package/dist/monitoring/mcpProcessSignatures.js.map +1 -0
  22. package/dist/server/AgentServer.d.ts +3 -0
  23. package/dist/server/AgentServer.d.ts.map +1 -1
  24. package/dist/server/AgentServer.js +1 -0
  25. package/dist/server/AgentServer.js.map +1 -1
  26. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  27. package/dist/server/CapabilityIndex.js +1 -0
  28. package/dist/server/CapabilityIndex.js.map +1 -1
  29. package/dist/server/routes.d.ts +3 -0
  30. package/dist/server/routes.d.ts.map +1 -1
  31. package/dist/server/routes.js +13 -0
  32. package/dist/server/routes.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/data/builtin-manifest.json +47 -47
  35. package/upgrades/1.3.232.md +47 -0
  36. package/upgrades/side-effects/mcp-process-reaper.md +58 -0
@@ -0,0 +1,229 @@
1
+ /**
2
+ * McpProcessReaper — Option B of the MCP-leak fix (Codey's design in
3
+ * `.instar/apprenticeship/codey-task-mcp-leak-reaper.md`).
4
+ *
5
+ * The problem: a session spawns MCP-server children (Playwright, mcp-remote,
6
+ * instar stdio). Killing the session's main pid does NOT cascade to those
7
+ * children — they re-parent (to PID 1 / launchd) or are held by an npm-exec
8
+ * wrapper and survive for days. The fleet accumulated ~80 such leaked procs,
9
+ * up to 5 days old, as a persistent load floor. `OrphanProcessReaper` reaps the
10
+ * session-level CLI proc but not these MCP *descendants*.
11
+ *
12
+ * This is a descendant-aware SWEEP (a sibling reaper, NOT a change to the
13
+ * shared OrphanProcessReaper / ReapGuard path — zero blast radius on the
14
+ * working reaper). For each allow-listed MCP proc it resolves the owning tmux
15
+ * session by walking the ppid chain, and reaps ONLY when the proc is old AND
16
+ * its owning session is a dead/stale *instar* session or fully orphaned. It
17
+ * NEVER touches a proc under a live/tracked session, nor under an external
18
+ * (non-instar) tmux session.
19
+ *
20
+ * Ships DARK + DRY-RUN by default (kills processes — same posture as
21
+ * SessionReaper / AgentWorktreeReaper). Every decision is audited.
22
+ */
23
+ import { EventEmitter } from 'node:events';
24
+ import { matchMcpSignature } from './mcpProcessSignatures.js';
25
+ export const DEFAULT_MCP_PROCESS_REAPER_CONFIG = {
26
+ enabled: false,
27
+ dryRun: true,
28
+ // Conservative: the leaked procs are hours-to-days old; 2h floor means a
29
+ // legitimately busy short-lived MCP child is never a candidate.
30
+ minAgeMs: 2 * 3600 * 1000,
31
+ reapIntervalMs: 30 * 60 * 1000,
32
+ maxReapsPerPass: 25,
33
+ maxAncestorHops: 30,
34
+ };
35
+ /**
36
+ * Walk the ppid chain from `startPid` until a pid is a tmux pane pid. Returns
37
+ * the owning tmux session name, or null when no tmux ancestor is found within
38
+ * `maxHops` (i.e. the proc is orphaned / re-parented — its session is dead).
39
+ * Pure — cycle-safe via a visited set.
40
+ */
41
+ export function resolveOwningSession(startPid, tree, tmuxPaneMap, maxHops) {
42
+ let pid = startPid;
43
+ const seen = new Set();
44
+ for (let hop = 0; hop <= maxHops && pid !== undefined && pid > 1; hop++) {
45
+ if (seen.has(pid))
46
+ break; // cycle guard
47
+ seen.add(pid);
48
+ const session = tmuxPaneMap.get(pid);
49
+ if (session)
50
+ return session;
51
+ pid = tree.get(pid);
52
+ }
53
+ return null;
54
+ }
55
+ /**
56
+ * Pure per-proc classifier. KEEP unless the proc is old AND its owning session
57
+ * is a dead/stale instar session or fully orphaned. Order matters: the sacred
58
+ * gates (live session, external session) short-circuit before age is consulted.
59
+ */
60
+ export function classifyMcpProcess(proc, owningSession, liveSessions, instarSessions, minAgeMs) {
61
+ const base = {
62
+ pid: proc.pid,
63
+ signatureId: proc.signatureId,
64
+ ageMs: proc.elapsedMs,
65
+ owningSession,
66
+ };
67
+ const keep = (reason) => ({ ...base, verdict: 'keep', reason });
68
+ const reap = (reason) => ({ ...base, verdict: 'reap-eligible', reason });
69
+ if (owningSession !== null) {
70
+ // SACRED: a live/tracked session owns it — keep regardless of age. A long-
71
+ // running autonomous session legitimately owns old MCP servers.
72
+ if (liveSessions.has(owningSession))
73
+ return keep('session-live');
74
+ // An external (non-instar) tmux session — never touch the user's processes.
75
+ if (!instarSessions.has(owningSession))
76
+ return keep('external-session');
77
+ // A stale/dead *instar* session still lingering in tmux: reapable when old.
78
+ if (proc.elapsedMs < minAgeMs)
79
+ return keep('stale-instar-too-young');
80
+ return reap(`stale-instar-session:${owningSession}`);
81
+ }
82
+ // No tmux ancestor — the owning session is dead and this proc re-parented.
83
+ // This is the dominant leak shape. Reapable only when old.
84
+ if (proc.elapsedMs < minAgeMs)
85
+ return keep('orphan-too-young');
86
+ return reap('orphaned-no-session');
87
+ }
88
+ export class McpProcessReaper extends EventEmitter {
89
+ cfg;
90
+ deps;
91
+ now;
92
+ timer;
93
+ running = false;
94
+ lastPassAt = 0;
95
+ reapedLastPass = 0;
96
+ constructor(deps, cfg) {
97
+ super();
98
+ this.deps = deps;
99
+ this.cfg = { ...DEFAULT_MCP_PROCESS_REAPER_CONFIG, ...(cfg ?? {}) };
100
+ this.now = deps.now ?? (() => Date.now());
101
+ }
102
+ start() {
103
+ if (this.timer || !this.cfg.enabled)
104
+ return;
105
+ this.timer = setInterval(() => { void this.reap(); }, this.cfg.reapIntervalMs);
106
+ if (typeof this.timer.unref === 'function')
107
+ this.timer.unref();
108
+ }
109
+ stop() {
110
+ if (this.timer) {
111
+ clearInterval(this.timer);
112
+ this.timer = undefined;
113
+ }
114
+ }
115
+ get killsEnabled() {
116
+ return this.cfg.enabled && !this.cfg.dryRun;
117
+ }
118
+ /** Resolve + classify one proc against the current process/tmux/session view. */
119
+ evaluate(proc, tree, tmuxPaneMap, liveSessions, instarSessions) {
120
+ const owningSession = resolveOwningSession(proc.pid, tree, tmuxPaneMap, this.cfg.maxAncestorHops);
121
+ return classifyMcpProcess(proc, owningSession, liveSessions, instarSessions, this.cfg.minAgeMs);
122
+ }
123
+ /** One reap pass. Returns the per-proc evaluations + what was reaped. */
124
+ async reap() {
125
+ if (this.running)
126
+ return { ts: this.now(), evaluations: [], reaped: [], dryRun: !this.killsEnabled };
127
+ this.running = true;
128
+ const reaped = [];
129
+ const evaluations = [];
130
+ try {
131
+ let procs;
132
+ let tree;
133
+ let tmuxPaneMap;
134
+ let liveSessions;
135
+ let instarSessions;
136
+ try {
137
+ procs = this.deps.listMcpProcesses();
138
+ tree = this.deps.getProcessTree();
139
+ tmuxPaneMap = this.deps.getTmuxPaneMap();
140
+ liveSessions = this.deps.getLiveSessions();
141
+ instarSessions = this.deps.getInstarSessions();
142
+ }
143
+ catch (err) {
144
+ this.emit('error', err);
145
+ return { ts: this.now(), evaluations: [], reaped: [], dryRun: !this.killsEnabled };
146
+ }
147
+ for (const proc of procs) {
148
+ let evaln;
149
+ try {
150
+ evaln = this.evaluate(proc, tree, tmuxPaneMap, liveSessions, instarSessions);
151
+ }
152
+ catch {
153
+ // A signal threw — cannot reason about it, so KEEP. Never reap on a
154
+ // failed evaluation.
155
+ evaln = {
156
+ pid: proc.pid, signatureId: proc.signatureId, ageMs: proc.elapsedMs,
157
+ owningSession: null, verdict: 'keep', reason: 'eval-error',
158
+ };
159
+ }
160
+ evaluations.push(evaln);
161
+ if (evaln.verdict !== 'reap-eligible') {
162
+ this.writeAudit({ ts: this.now(), type: 'kept', pid: proc.pid, signatureId: proc.signatureId, ageMs: proc.elapsedMs, owningSession: evaln.owningSession, reason: evaln.reason, dryRun: !this.killsEnabled });
163
+ continue;
164
+ }
165
+ if (reaped.length >= this.cfg.maxReapsPerPass)
166
+ continue; // blast-radius cap
167
+ if (!this.killsEnabled) {
168
+ // Dry-run: classify + audit what we WOULD kill, kill nothing.
169
+ this.writeAudit({ ts: this.now(), type: 'would-reap', pid: proc.pid, signatureId: proc.signatureId, ageMs: proc.elapsedMs, owningSession: evaln.owningSession, reason: evaln.reason, dryRun: true });
170
+ continue;
171
+ }
172
+ try {
173
+ this.deps.killProcess(proc.pid);
174
+ reaped.push(proc.pid);
175
+ this.writeAudit({ ts: this.now(), type: 'reaped', pid: proc.pid, signatureId: proc.signatureId, ageMs: proc.elapsedMs, owningSession: evaln.owningSession, reason: evaln.reason, dryRun: false });
176
+ this.emit('reaped', proc);
177
+ }
178
+ catch (err) {
179
+ this.emit('error', err);
180
+ }
181
+ }
182
+ this.lastPassAt = this.now();
183
+ this.reapedLastPass = reaped.length;
184
+ this.emit('pass', { evaluations, reaped });
185
+ }
186
+ finally {
187
+ this.running = false;
188
+ }
189
+ return { ts: this.now(), evaluations, reaped, dryRun: !this.killsEnabled };
190
+ }
191
+ writeAudit(entry) {
192
+ try {
193
+ this.deps.audit?.(entry);
194
+ }
195
+ catch { /* audit must never break the loop */ }
196
+ }
197
+ /** Observability snapshot for GET /processes/mcp-reaper (no side effects). */
198
+ snapshot() {
199
+ let processes = [];
200
+ try {
201
+ const procs = this.deps.listMcpProcesses();
202
+ const tree = this.deps.getProcessTree();
203
+ const tmuxPaneMap = this.deps.getTmuxPaneMap();
204
+ const liveSessions = this.deps.getLiveSessions();
205
+ const instarSessions = this.deps.getInstarSessions();
206
+ processes = procs.map((proc) => {
207
+ try {
208
+ return this.evaluate(proc, tree, tmuxPaneMap, liveSessions, instarSessions);
209
+ }
210
+ catch {
211
+ return { pid: proc.pid, signatureId: proc.signatureId, ageMs: proc.elapsedMs, owningSession: null, verdict: 'keep', reason: 'eval-error' };
212
+ }
213
+ });
214
+ }
215
+ catch { /* listing failed — report empty, never crash the route */ }
216
+ return {
217
+ enabled: this.cfg.enabled,
218
+ dryRun: this.cfg.dryRun,
219
+ minAgeMs: this.cfg.minAgeMs,
220
+ lastPassAt: this.lastPassAt,
221
+ reapedLastPass: this.reapedLastPass,
222
+ processes,
223
+ reapEligible: processes.filter((p) => p.verdict === 'reap-eligible').length,
224
+ };
225
+ }
226
+ }
227
+ /** Re-export for production wiring that builds McpProcessInfo from a ps line. */
228
+ export { matchMcpSignature };
229
+ //# sourceMappingURL=McpProcessReaper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpProcessReaper.js","sourceRoot":"","sources":["../../src/monitoring/McpProcessReaper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * mcpProcessReaperDeps — production signal sources for {@link McpProcessReaper}.
3
+ *
4
+ * Kept out of the reaper class so the classifier stays unit-testable without a
5
+ * real process table, tmux, or kill(2). This factory supplies the ps/tmux/
6
+ * SessionManager/kill/audit implementations.
7
+ */
8
+ import type { McpProcessReaperDeps } from './McpProcessReaper.js';
9
+ interface SessionLister {
10
+ listRunningSessions: () => Array<{
11
+ tmuxSession: string;
12
+ }>;
13
+ listKnownTmuxSessions: () => Set<string>;
14
+ }
15
+ export declare function makeMcpProcessReaperDeps(opts: {
16
+ sessionManager: SessionLister;
17
+ tmuxPath: string;
18
+ auditPath: string;
19
+ now?: () => number;
20
+ }): McpProcessReaperDeps;
21
+ export {};
22
+ //# sourceMappingURL=mcpProcessReaperDeps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpProcessReaperDeps.d.ts","sourceRoot":"","sources":["../../src/monitoring/mcpProcessReaperDeps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,uBAAuB,CAAC;AA4B/B,UAAU,aAAa;IACrB,mBAAmB,EAAE,MAAM,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,qBAAqB,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,cAAc,EAAE,aAAa,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,GAAG,oBAAoB,CAoFvB"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * mcpProcessReaperDeps — production signal sources for {@link McpProcessReaper}.
3
+ *
4
+ * Kept out of the reaper class so the classifier stays unit-testable without a
5
+ * real process table, tmux, or kill(2). This factory supplies the ps/tmux/
6
+ * SessionManager/kill/audit implementations.
7
+ */
8
+ import { execSync } from 'node:child_process';
9
+ import fs from 'node:fs';
10
+ import path from 'node:path';
11
+ import { mcpGrepAlternation, matchMcpSignature, } from './mcpProcessSignatures.js';
12
+ function shellExec(cmd, timeout = 8000) {
13
+ try {
14
+ return execSync(cmd, { encoding: 'utf8', timeout, stdio: ['ignore', 'pipe', 'ignore'] });
15
+ }
16
+ catch {
17
+ return '';
18
+ }
19
+ }
20
+ /** Parse an `etime` field (`[[dd-]hh:]mm:ss`) into milliseconds. */
21
+ function parseElapsedMs(etime) {
22
+ const s = etime.trim();
23
+ let days = 0;
24
+ let rest = s;
25
+ if (rest.includes('-')) {
26
+ const [d, r] = rest.split('-');
27
+ days = parseInt(d, 10) || 0;
28
+ rest = r;
29
+ }
30
+ const parts = rest.split(':').map((p) => parseInt(p, 10) || 0);
31
+ let h = 0, m = 0, sec = 0;
32
+ if (parts.length === 3)
33
+ [h, m, sec] = parts;
34
+ else if (parts.length === 2)
35
+ [m, sec] = parts;
36
+ else if (parts.length === 1)
37
+ [sec] = parts;
38
+ return (((days * 24 + h) * 60 + m) * 60 + sec) * 1000;
39
+ }
40
+ export function makeMcpProcessReaperDeps(opts) {
41
+ const { sessionManager, tmuxPath, auditPath } = opts;
42
+ return {
43
+ listMcpProcesses() {
44
+ const uid = process.getuid?.() ?? 0;
45
+ const out = shellExec(`ps -u ${uid} -o pid=,ppid=,etime=,command= 2>/dev/null | egrep -i '${mcpGrepAlternation()}' | grep -v egrep`).trim();
46
+ if (!out)
47
+ return [];
48
+ const procs = [];
49
+ for (const line of out.split('\n')) {
50
+ const m = line.trim().match(/^(\d+)\s+(\d+)\s+([\d:.-]+)\s+(.+)$/);
51
+ if (!m)
52
+ continue;
53
+ const command = m[4];
54
+ const sig = matchMcpSignature(command);
55
+ if (!sig)
56
+ continue; // second-stage precise match — never a broad node/npm hit
57
+ procs.push({
58
+ pid: parseInt(m[1], 10),
59
+ ppid: parseInt(m[2], 10),
60
+ elapsedMs: parseElapsedMs(m[3]),
61
+ command: command.slice(0, 300),
62
+ signatureId: sig.id,
63
+ });
64
+ }
65
+ return procs;
66
+ },
67
+ getProcessTree() {
68
+ const tree = new Map();
69
+ const out = shellExec(`ps -axo pid=,ppid= 2>/dev/null`).trim();
70
+ if (!out)
71
+ return tree;
72
+ for (const line of out.split('\n')) {
73
+ const m = line.trim().match(/^(\d+)\s+(\d+)$/);
74
+ if (m)
75
+ tree.set(parseInt(m[1], 10), parseInt(m[2], 10));
76
+ }
77
+ return tree;
78
+ },
79
+ getTmuxPaneMap() {
80
+ const map = new Map();
81
+ const out = shellExec(`${tmuxPath} list-panes -a -F "#{session_name}||#{pane_pid}" 2>/dev/null`).trim();
82
+ if (!out)
83
+ return map;
84
+ for (const line of out.split('\n')) {
85
+ const [session, pidStr] = line.split('||');
86
+ const pid = parseInt(pidStr, 10);
87
+ if (session && !isNaN(pid))
88
+ map.set(pid, session);
89
+ }
90
+ return map;
91
+ },
92
+ getLiveSessions() {
93
+ try {
94
+ return new Set(sessionManager.listRunningSessions().map((s) => s.tmuxSession).filter(Boolean));
95
+ }
96
+ catch {
97
+ return new Set();
98
+ }
99
+ },
100
+ getInstarSessions() {
101
+ try {
102
+ return sessionManager.listKnownTmuxSessions();
103
+ }
104
+ catch {
105
+ return new Set();
106
+ }
107
+ },
108
+ killProcess(pid) {
109
+ // SIGTERM (graceful). The proc's session is already dead/stale, so there is
110
+ // nothing to coordinate with — a clean terminate is sufficient.
111
+ process.kill(pid, 'SIGTERM');
112
+ },
113
+ audit(entry) {
114
+ try {
115
+ fs.mkdirSync(path.dirname(auditPath), { recursive: true });
116
+ fs.appendFileSync(auditPath, JSON.stringify(entry) + '\n');
117
+ }
118
+ catch {
119
+ // Audit must never break the reap loop.
120
+ }
121
+ },
122
+ now: opts.now,
123
+ };
124
+ }
125
+ //# sourceMappingURL=mcpProcessReaperDeps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpProcessReaperDeps.js","sourceRoot":"","sources":["../../src/monitoring/mcpProcessReaperDeps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * mcpProcessSignatures — the precise, allow-listed signatures for MCP-server
3
+ * processes that the {@link McpProcessReaper} is permitted to consider.
4
+ *
5
+ * These are NOT framework (claude/codex/gemini) processes — they are the
6
+ * long-lived MCP-server children a session spawns (Playwright, mcp-remote,
7
+ * instar's own stdio MCP) that survive their owning session's death and
8
+ * accumulate for days (see `.instar/apprenticeship/codey-task-mcp-leak-reaper.md`).
9
+ *
10
+ * The reaper matches ONLY these exact signatures — never a broad `node`/`npm`
11
+ * match — so an unrelated node process can never be a reap candidate. Each
12
+ * `psGrepNeedle` is bracket-escaped so the discovery `ps … | egrep` does not
13
+ * match its own argv.
14
+ */
15
+ export interface McpProcessSignature {
16
+ /** Stable id for audit trails + tests. */
17
+ readonly id: 'playwright-mcp' | 'mcp-remote' | 'instar-mcp-stdio';
18
+ /** Human-readable label. */
19
+ readonly label: string;
20
+ /**
21
+ * Substrings that must ALL appear in the process command for a match. A
22
+ * conjunction keeps the match tight (e.g. requires both `mcp-remote` AND
23
+ * the npm/exec shape rather than any line mentioning "mcp").
24
+ */
25
+ readonly commandIncludesAll: ReadonlyArray<string>;
26
+ /** Bracket-escaped needle for the first-stage `ps … | egrep` discovery. */
27
+ readonly psGrepNeedle: string;
28
+ }
29
+ export declare const MCP_PROCESS_SIGNATURES: ReadonlyArray<McpProcessSignature>;
30
+ /** The alternation passed to the discovery `egrep -i '<needle>'`. */
31
+ export declare function mcpGrepAlternation(): string;
32
+ /**
33
+ * Match a process command against the allow-list. Returns the matched
34
+ * signature, or null when the command is not a recognized MCP-server process.
35
+ * Pure — exported for unit tests of both the match and the non-match side.
36
+ */
37
+ export declare function matchMcpSignature(command: string, signatures?: ReadonlyArray<McpProcessSignature>): McpProcessSignature | null;
38
+ //# sourceMappingURL=mcpProcessSignatures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpProcessSignatures.d.ts","sourceRoot":"","sources":["../../src/monitoring/mcpProcessSignatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,EAAE,gBAAgB,GAAG,YAAY,GAAG,kBAAkB,CAAC;IAClE,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnD,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,mBAAmB,CAmBrE,CAAC;AAEF,qEAAqE;AACrE,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,aAAa,CAAC,mBAAmB,CAA0B,GACtE,mBAAmB,GAAG,IAAI,CAS5B"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * mcpProcessSignatures — the precise, allow-listed signatures for MCP-server
3
+ * processes that the {@link McpProcessReaper} is permitted to consider.
4
+ *
5
+ * These are NOT framework (claude/codex/gemini) processes — they are the
6
+ * long-lived MCP-server children a session spawns (Playwright, mcp-remote,
7
+ * instar's own stdio MCP) that survive their owning session's death and
8
+ * accumulate for days (see `.instar/apprenticeship/codey-task-mcp-leak-reaper.md`).
9
+ *
10
+ * The reaper matches ONLY these exact signatures — never a broad `node`/`npm`
11
+ * match — so an unrelated node process can never be a reap candidate. Each
12
+ * `psGrepNeedle` is bracket-escaped so the discovery `ps … | egrep` does not
13
+ * match its own argv.
14
+ */
15
+ export const MCP_PROCESS_SIGNATURES = [
16
+ {
17
+ id: 'playwright-mcp',
18
+ label: 'Playwright MCP server',
19
+ commandIncludesAll: ['playwright', 'mcp'],
20
+ psGrepNeedle: '[p]laywright.*mcp|[m]cp.*playwright',
21
+ },
22
+ {
23
+ id: 'mcp-remote',
24
+ label: 'mcp-remote bridge (e.g. Fathom)',
25
+ commandIncludesAll: ['mcp-remote'],
26
+ psGrepNeedle: '[m]cp-remote',
27
+ },
28
+ {
29
+ id: 'instar-mcp-stdio',
30
+ label: 'instar stdio MCP server',
31
+ commandIncludesAll: ['mcp-stdio-entry'],
32
+ psGrepNeedle: '[m]cp-stdio-entry',
33
+ },
34
+ ];
35
+ /** The alternation passed to the discovery `egrep -i '<needle>'`. */
36
+ export function mcpGrepAlternation() {
37
+ return MCP_PROCESS_SIGNATURES.map((s) => s.psGrepNeedle).join('|');
38
+ }
39
+ /**
40
+ * Match a process command against the allow-list. Returns the matched
41
+ * signature, or null when the command is not a recognized MCP-server process.
42
+ * Pure — exported for unit tests of both the match and the non-match side.
43
+ */
44
+ export function matchMcpSignature(command, signatures = MCP_PROCESS_SIGNATURES) {
45
+ if (!command)
46
+ return null;
47
+ const lower = command.toLowerCase();
48
+ for (const sig of signatures) {
49
+ if (sig.commandIncludesAll.every((needle) => lower.includes(needle.toLowerCase()))) {
50
+ return sig;
51
+ }
52
+ }
53
+ return null;
54
+ }
55
+ //# sourceMappingURL=mcpProcessSignatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpProcessSignatures.js","sourceRoot":"","sources":["../../src/monitoring/mcpProcessSignatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAiBH,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACxE;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,uBAAuB;QAC9B,kBAAkB,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC;QACzC,YAAY,EAAE,qCAAqC;KACpD;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,iCAAiC;QACxC,kBAAkB,EAAE,CAAC,YAAY,CAAC;QAClC,YAAY,EAAE,cAAc;KAC7B;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,yBAAyB;QAChC,kBAAkB,EAAE,CAAC,iBAAiB,CAAC;QACvC,YAAY,EAAE,mBAAmB;KAClC;CACF,CAAC;AAEF,qEAAqE;AACrE,MAAM,UAAU,kBAAkB;IAChC,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,aAAiD,sBAAsB;IAEvE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;YACnF,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -313,6 +313,9 @@ export declare class AgentServer {
313
313
  /** AgentWorktreeReaper — reclaims stale CLI worktrees. Powers
314
314
  * GET /worktrees/agent-reaper. */
315
315
  agentWorktreeReaper?: import('../monitoring/AgentWorktreeReaper.js').AgentWorktreeReaper;
316
+ /** McpProcessReaper — reclaims leaked MCP-server children of dead/stale
317
+ * sessions. Powers GET /processes/mcp-reaper. */
318
+ mcpProcessReaper?: import('../monitoring/McpProcessReaper.js').McpProcessReaper;
316
319
  /** SleepController — agent hard-sleep decision (Stage B). Powers GET /sleep. */
317
320
  sleepController?: import('../monitoring/SleepController.js').SleepController;
318
321
  /** AgentActivityState — shared idle signal bumped at the inbound chokepoint. */
@@ -1 +1 @@
1
- {"version":3,"file":"AgentServer.d.ts","sourceRoot":"","sources":["../../src/server/AgentServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentServer.d.ts","sourceRoot":"","sources":["../../src/server/AgentServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAgB,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;AAM7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAsBxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAelE,OAAO,EAA6E,KAAK,YAAY,EAAE,MAAM,wCAAwC,CAAC;AA8BtJ,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,YAAY,GACrB,YAAY,CAqBd;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,iBAAiB,CAAC,CAAiE;IAC3F,OAAO,CAAC,YAAY,CAAuF;IAC3G,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,QAAQ,CAAyE;IACzF,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,YAAY,CAAuC;IAC3D,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB,CAAK;IAC7B,2EAA2E;IAC3E,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,eAAe,CAAK;IAC5B;;yFAEqF;IACrF,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,qBAAqB,CAAuB;IACpD,8EAA8E;IAC9E,OAAO,CAAC,SAAS,CAAoC;IACrD,oFAAoF;IACpF,OAAO,CAAC,eAAe,CAAiC;IACxD,sEAAsE;IACtE,OAAO,CAAC,iBAAiB,CAAyC;IAClE,6EAA6E;IAC7E,OAAO,CAAC,oBAAoB,CAAuB;IACnD,2EAA2E;IAC3E,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,wBAAwB,CAAyC;IACzE,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,wBAAwB,CAAyC;IACzE,OAAO,CAAC,6BAA6B,CAA8C;IACnF,OAAO,CAAC,+BAA+B,CAAgD;IAKvF,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,YAAY,CAA6B;IAIjD,OAAO,CAAC,eAAe,CAAgC;gBAE3C,OAAO,EAAE;QACnB,MAAM,EAAE,YAAY,CAAC;QACrB,cAAc,EAAE,cAAc,CAAC;QAC/B,KAAK,EAAE,YAAY,CAAC;QACpB,SAAS,CAAC,EAAE,YAAY,CAAC;QACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,aAAa,CAAC,EAAE,mBAAmB,CAAC;QACpC,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,UAAU,CAAC,EAAE,eAAe,CAAC;QAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,WAAW,CAAC,EAAE,gBAAgB,CAAC;QAC/B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;QAClD,aAAa,CAAC,EAAE,OAAO,0BAA0B,EAAE,aAAa,CAAC;QACjE,aAAa,CAAC,EAAE,OAAO,0BAA0B,EAAE,aAAa,CAAC;QACjE,gBAAgB,CAAC,EAAE,OAAO,6BAA6B,EAAE,gBAAgB,CAAC;QAC1E,cAAc,CAAC,EAAE,OAAO,2BAA2B,EAAE,cAAc,CAAC;QACpE,aAAa,CAAC,EAAE,OAAO,kCAAkC,EAAE,qBAAqB,CAAC;QACjF,QAAQ,CAAC,EAAE,OAAO,4BAA4B,EAAE,eAAe,CAAC;QAChE,aAAa,CAAC,EAAE,OAAO,0BAA0B,EAAE,aAAa,CAAC;QACjE,aAAa,CAAC,EAAE,OAAO,wCAAwC,EAAE,qBAAqB,CAAC;QACvF,YAAY,CAAC,EAAE,OAAO,sCAAsC,EAAE,mBAAmB,CAAC;QAClF,gBAAgB,CAAC,EAAE,OAAO,mCAAmC,EAAE,gBAAgB,CAAC;QAChF,iBAAiB,CAAC,EAAE,OAAO,oCAAoC,EAAE,iBAAiB,CAAC;QACnF,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;QACtE,gBAAgB,CAAC,EAAE,OAAO,0CAA0C,EAAE,uBAAuB,CAAC;QAC9F,iBAAiB,CAAC,EAAE,OAAO,oCAAoC,EAAE,iBAAiB,CAAC;QACnF,wBAAwB,CAAC,EAAE,OAAO,2CAA2C,EAAE,wBAAwB,CAAC;QACxG,aAAa,CAAC,EAAE,OAAO,qCAAqC,EAAE,sBAAsB,CAAC;QACrF,YAAY,CAAC,EAAE,OAAO,+BAA+B,EAAE,YAAY,CAAC;QACpE,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,eAAe,CAAC,EAAE,OAAO,wCAAwC,EAAE,sBAAsB,CAAC;QAC1F,YAAY,CAAC,EAAE,OAAO,qCAAqC,EAAE,mBAAmB,CAAC;QACjF,cAAc,CAAC,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QAC1E,gBAAgB,CAAC,EAAE,OAAO,6BAA6B,EAAE,gBAAgB,CAAC;QAC1E,iBAAiB,CAAC,EAAE,OAAO,mCAAmC,EAAE,iBAAiB,CAAC;QAClF,eAAe,CAAC,EAAE,OAAO,iCAAiC,EAAE,eAAe,CAAC;QAC5E,cAAc,CAAC,EAAE,OAAO,2BAA2B,EAAE,cAAc,CAAC;QACpE,cAAc,CAAC,EAAE,OAAO,2BAA2B,EAAE,cAAc,CAAC;QACpE,eAAe,CAAC,EAAE,OAAO,mCAAmC,EAAE,sBAAsB,CAAC;QACrF,qBAAqB,CAAC,EAAE,OAAO,kCAAkC,EAAE,qBAAqB,CAAC;QACzF,mBAAmB,CAAC,EAAE,OAAO,gCAAgC,EAAE,mBAAmB,CAAC;QACnF,WAAW,CAAC,EAAE,uBAAuB,CAAC;QACtC,8FAA8F;QAC9F,mBAAmB,CAAC,EAAE,OAAO,gCAAgC,EAAE,mBAAmB,CAAC;QACnF,qEAAqE;QACrE,iBAAiB,CAAC,EAAE,OAAO,oBAAoB,EAAE,iBAAiB,CAAC;QACnE,4CAA4C;QAC5C,wBAAwB,CAAC,EAAE,OAAO,qCAAqC,EAAE,wBAAwB,CAAC;QAClG,wDAAwD;QACxD,yBAAyB,CAAC,EAAE,OAAO,sCAAsC,EAAE,yBAAyB,CAAC;QACrG,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,qFAAqF;QACrF,cAAc,CAAC,EAAE;YAAE,cAAc,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;SAAE,CAAC;QAC1D;;;;WAIG;QACH,kBAAkB,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC;QAC1C;;;;;;;WAOG;QACH,oBAAoB,CAAC,EAAE;YAAE,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;YAAC,WAAW,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;QAClF;;;;;WAKG;QACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;QACpE;;;;WAIG;QACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,oBAAoB,GAAG,QAAQ,CAAC,CAAC;QAClF;;;;WAIG;QACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;QAClC;;;;WAIG;QACH,aAAa,CAAC,EAAE,OAAO,yCAAyC,EAAE,uBAAuB,CAAC;QAC1F,0EAA0E;QAC1E,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C;;;;WAIG;QACH,oBAAoB,CAAC,EAAE,OAAO,iCAAiC,EAAE,oBAAoB,CAAC;QACtF,yGAAyG;QACzG,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;QACjE;;;WAGG;QACH,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,OAAO,CAAC;YAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;SAAE,EAC9E,aAAa,EAAE,MAAM,KAClB;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QACjD,QAAQ,CAAC,EAAE,OAAO,iCAAiC,EAAE,eAAe,CAAC;QACrE,KAAK,CAAC,EAAE,OAAO,oCAAoC,EAAE,YAAY,CAAC;QAClE,QAAQ,CAAC,EAAE,OAAO,0CAA0C,EAAE,eAAe,CAAC;QAC9E,uBAAuB,CAAC,EAAE,OAAO,6CAA6C,EAAE,kBAAkB,CAAC;QACnG,aAAa,CAAC,EAAE,OAAO,sCAAsC,EAAE,aAAa,CAAC;QAC7E,iBAAiB,CAAC,EAAE,OAAO,oCAAoC,EAAE,iBAAiB,CAAC;QACnF,eAAe,CAAC,EAAE,OAAO,kCAAkC,EAAE,eAAe,CAAC;QAC7E,eAAe,CAAC,EAAE,OAAO,kCAAkC,EAAE,eAAe,CAAC;QAC7E,oBAAoB,CAAC,EAAE,OAAO,uCAAuC,EAAE,oBAAoB,CAAC;QAC5F,gBAAgB,CAAC,EAAE,OAAO,mCAAmC,EAAE,gBAAgB,CAAC;QAChF;gFACwE;QACxE,iBAAiB,CAAC,EAAE,OAAO,oCAAoC,EAAE,iBAAiB,CAAC;QACnF,iBAAiB,CAAC,EAAE,OAAO,oCAAoC,EAAE,iBAAiB,CAAC;QACnF,qBAAqB,CAAC,EAAE,OAAO,wCAAwC,EAAE,qBAAqB,CAAC;QAC/F;gDACwC;QACxC,eAAe,CAAC,EAAE,OAAO,kCAAkC,EAAE,eAAe,CAAC;QAC7E,mFAAmF;QACnF,mBAAmB,CAAC,EAAE,OAAO,sCAAsC,EAAE,mBAAmB,CAAC;QACzF,gBAAgB,CAAC,EAAE,OAAO,mCAAmC,EAAE,gBAAgB,CAAC;QAChF,qBAAqB,CAAC,EAAE,OAAO,0CAA0C,EAAE,gBAAgB,CAAC;QAC5F,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;SAAE,CAAC,CAAC;QACxJ,eAAe,CAAC,EAAE,OAAO,yCAAyC,EAAE,sBAAsB,CAAC;QAC3F,kBAAkB,CAAC,EAAE,OAAO,0BAA0B,EAAE,aAAa,CAAC;QACtE,iBAAiB,CAAC,EAAE,OAAO,8BAA8B,EAAE,iBAAiB,CAAC;QAC7E,iBAAiB,CAAC,EAAE,OAAO,8BAA8B,EAAE,iBAAiB,CAAC;QAC7E,kBAAkB,CAAC,EAAE,OAAO,qCAAqC,EAAE,kBAAkB,CAAC;QACtF,YAAY,CAAC,EAAE,OAAO,0BAA0B,EAAE,YAAY,CAAC;QAC/D,WAAW,CAAC,EAAE,OAAO,wBAAwB,EAAE,WAAW,CAAC;QAC3D,eAAe,CAAC,EAAE,OAAO,4BAA4B,EAAE,eAAe,CAAC;QACvE,kBAAkB,CAAC,EAAE,OAAO,+BAA+B,EAAE,kBAAkB,CAAC;QAChF,mBAAmB,CAAC,EAAE,OAAO,gCAAgC,EAAE,mBAAmB,CAAC;QACnF,YAAY,CAAC,EAAE,OAAO,qCAAqC,EAAE,kBAAkB,CAAC;QAChF,UAAU,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;SAAE,CAAC;QACzD,mFAAmF;QACnF,gBAAgB,CAAC,EAAE,OAAO,mCAAmC,EAAE,gBAAgB,CAAC;QAChF,+EAA+E;QAC/E,iBAAiB,CAAC,EAAE,OAAO,8BAA8B,EAAE,iBAAiB,CAAC;QAC7E,wFAAwF;QACxF,qBAAqB,CAAC,EAAE,OAAO,kCAAkC,EAAE,qBAAqB,CAAC;QACzF,kFAAkF;QAClF,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,sGAAsG;QACtG,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC;sFAC8E;QAC9E,mBAAmB,CAAC,EAAE,OAAO,gCAAgC,EAAE,QAAQ,GAAG,IAAI,CAAC;QAC/E,gGAAgG;QAChG,YAAY,CAAC,EAAE,OAAO,kBAAkB,EAAE,oBAAoB,GAAG,IAAI,CAAC;QACtE,uFAAuF;QACvF,gBAAgB,CAAC,EAAE,OAAO,6BAA6B,EAAE,gBAAgB,GAAG,IAAI,CAAC;QACjF,uFAAuF;QACvF,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnG,mEAAmE;QACnE,iBAAiB,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3D,gEAAgE;QAChE,mBAAmB,CAAC,EAAE,OAAO,gCAAgC,EAAE,mBAAmB,CAAC;QACnF,0CAA0C;QAC1C,UAAU,CAAC,EAAE,OAAO,uBAAuB,EAAE,UAAU,CAAC;QACxD,0EAA0E;QAC1E,YAAY,CAAC,EAAE,OAAO,+BAA+B,EAAE,YAAY,GAAG,IAAI,CAAC;QAC3E,8EAA8E;QAC9E,iBAAiB,CAAC,EAAE,OAAO,8BAA8B,EAAE,iBAAiB,CAAC;QAC7E,kDAAkD;QAClD,kBAAkB,CAAC,EAAE,OAAO,+BAA+B,EAAE,kBAAkB,CAAC;QAChF;wEACgE;QAChE,mBAAmB,CAAC,EAAE,OAAO,gCAAgC,EAAE,mBAAmB,CAAC;QACnF,yEAAyE;QACzE,gBAAgB,CAAC,EAAE;YACjB,GAAG,EAAE,OAAO,6BAA6B,EAAE,gBAAgB,CAAC;YAC5D,MAAM,EAAE;gBAAE,SAAS,EAAE,MAAM,CAAA;aAAE,CAAC;SAC/B,CAAC;QACF;qDAC6C;QAC7C,aAAa,CAAC,EAAE,OAAO,gCAAgC,EAAE,aAAa,CAAC;QACvE;2CACmC;QACnC,mBAAmB,CAAC,EAAE,OAAO,sCAAsC,EAAE,mBAAmB,CAAC;QACzF;0DACkD;QAClD,gBAAgB,CAAC,EAAE,OAAO,mCAAmC,EAAE,gBAAgB,CAAC;QAChF,gFAAgF;QAChF,eAAe,CAAC,EAAE,OAAO,kCAAkC,EAAE,eAAe,CAAC;QAC7E,gFAAgF;QAChF,kBAAkB,CAAC,EAAE,OAAO,qCAAqC,EAAE,kBAAkB,CAAC;QACtF;mDAC2C;QAC3C,OAAO,CAAC,EAAE,OAAO,0BAA0B,EAAE,OAAO,CAAC;QACrD;gFACwE;QACxE,iBAAiB,CAAC,EAAE,OAAO,8BAA8B,EAAE,iBAAiB,CAAC;QAC7E,uEAAuE;QACvE,oBAAoB,CAAC,EAAE,OAAO,uCAAuC,EAAE,oBAAoB,CAAC;QAC5F,+EAA+E;QAC/E,cAAc,CAAC,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QAC1E,6EAA6E;QAC7E,uBAAuB,CAAC,EAAE,OAAO,0CAA0C,EAAE,uBAAuB,CAAC;QACrG,+EAA+E;QAC/E,SAAS,CAAC,EAAE,OAAO,wCAAwC,EAAE,SAAS,CAAC;QACvE,4EAA4E;QAC5E,gBAAgB,CAAC,EAAE,OAAO,8BAA8B,EAAE,gBAAgB,CAAC;QAC3E,4EAA4E;QAC5E,oBAAoB,CAAC,EAAE,OAAO,kCAAkC,EAAE,oBAAoB,CAAC;KACxF;IAguBD;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;;;;;OAMG;IACH;6EACyE;IACzE,OAAO,CAAC,sBAAsB;IA0B9B;;;;;;;;;;OAUG;YACW,gCAAgC;IAqE9C;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IA6B5B,mFAAmF;IACnF,OAAO,CAAC,oBAAoB;IAO5B,yFAAyF;IACzF,OAAO,CAAC,0BAA0B;IASlC,gFAAgF;IAChF,OAAO,CAAC,4BAA4B;IASpC;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;IAiDjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,OAAO,CAAC,wBAAwB;IAkLhC;;;;;;;;;OASG;YACW,iBAAiB;IAuG/B,mEAAmE;IACnE,OAAO,CAAC,uBAAuB;IAO/B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAQvB,gFAAgF;IAChF,OAAO,CAAC,uBAAuB;IAO/B;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,iBAAiB;IAgTzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwM5B;;;;;;;;;OASG;YACW,qBAAqB;IAiDnC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsI3B;;OAEG;IACH,MAAM,IAAI,OAAO;CAGlB"}
@@ -765,6 +765,7 @@ export class AgentServer {
765
765
  geminiCapacityEscalationMonitor: this.geminiCapacityEscalationMonitor,
766
766
  sessionReaper: options.sessionReaper ?? null,
767
767
  agentWorktreeReaper: options.agentWorktreeReaper ?? null,
768
+ mcpProcessReaper: options.mcpProcessReaper ?? null,
768
769
  sleepController: options.sleepController ?? null,
769
770
  agentActivityState: options.agentActivityState ?? null,
770
771
  reapLog: options.reapLog ?? null,