devharness 0.9.14 → 0.9.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.
- package/build/mcp-supervisor.js +60 -2
- package/build/mcp-supervisor.js.map +1 -1
- package/build/supervisor/client-watcher.d.ts +13 -2
- package/build/supervisor/client-watcher.d.ts.map +1 -1
- package/build/supervisor/client-watcher.js +60 -16
- package/build/supervisor/client-watcher.js.map +1 -1
- package/build/supervisor/client-watcher.test.js +110 -3
- package/build/supervisor/client-watcher.test.js.map +1 -1
- package/build/supervisor/stderr-log.d.ts +29 -0
- package/build/supervisor/stderr-log.d.ts.map +1 -0
- package/build/supervisor/stderr-log.js +52 -0
- package/build/supervisor/stderr-log.js.map +1 -0
- package/build/supervisor/stderr-log.test.d.ts +9 -0
- package/build/supervisor/stderr-log.test.d.ts.map +1 -0
- package/build/supervisor/stderr-log.test.js +80 -0
- package/build/supervisor/stderr-log.test.js.map +1 -0
- package/build/tools/issues-tools.d.ts.map +1 -1
- package/build/tools/issues-tools.js +29 -3
- package/build/tools/issues-tools.js.map +1 -1
- package/build/tools/issues-tools.test.js +86 -0
- package/build/tools/issues-tools.test.js.map +1 -1
- package/docs/instructions.md +1 -0
- package/docs/messages.md +3 -2
- package/package.json +1 -1
- package/plugin/skills/devharness/SKILL.md +1 -1
- package/plugin/skills/devharness/references/tool-categories.md +1 -0
package/build/mcp-supervisor.js
CHANGED
|
@@ -40,11 +40,43 @@ import { NdjsonReader } from './supervisor/ndjson-reader.js';
|
|
|
40
40
|
import { recordOwnSupervisor, removeOwnPidFile } from './supervisor/pidfile.js';
|
|
41
41
|
import { ClientWatcher } from './supervisor/client-watcher.js';
|
|
42
42
|
import { readSupervisorSessionConfig, idleCheckIntervalMs } from './supervisor/idle-config.js';
|
|
43
|
+
import { createStderrLog } from './supervisor/stderr-log.js';
|
|
43
44
|
import { runCli, isCliCommand, isVersionFlag, readPackageVersion, CLI_COMMANDS } from './cli/index.js';
|
|
44
45
|
const __filename = fileURLToPath(import.meta.url);
|
|
45
46
|
const __dirname = path.dirname(__filename);
|
|
47
|
+
// Set once main() has a shutdown to run. A write that fails on either host
|
|
48
|
+
// pipe means the host's end closed, which is the client being gone.
|
|
49
|
+
let onHostPipeBroken;
|
|
50
|
+
const stderrLog = createStderrLog('[mcp-supervisor]', process.stderr, () => {
|
|
51
|
+
if (onHostPipeBroken)
|
|
52
|
+
onHostPipeBroken();
|
|
53
|
+
});
|
|
54
|
+
// The host holds the read end of stdout. Its exit closes that end and the next
|
|
55
|
+
// frame write returns EPIPE, which without a listener reaches the
|
|
56
|
+
// uncaughtException handler - the same loop the stderr latch closes. This
|
|
57
|
+
// listener takes it off that path; the latch bounds the writes that follow.
|
|
58
|
+
let hostStdoutBroken = false;
|
|
59
|
+
process.stdout.on('error', () => {
|
|
60
|
+
if (hostStdoutBroken)
|
|
61
|
+
return;
|
|
62
|
+
hostStdoutBroken = true;
|
|
63
|
+
if (onHostPipeBroken)
|
|
64
|
+
onHostPipeBroken();
|
|
65
|
+
});
|
|
66
|
+
function writeToHostStdout(line) {
|
|
67
|
+
if (hostStdoutBroken)
|
|
68
|
+
return;
|
|
69
|
+
try {
|
|
70
|
+
process.stdout.write(line.endsWith('\n') ? line : line + '\n');
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
hostStdoutBroken = true;
|
|
74
|
+
if (onHostPipeBroken)
|
|
75
|
+
onHostPipeBroken();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
46
78
|
function logStderr(message) {
|
|
47
|
-
|
|
79
|
+
stderrLog.write(message);
|
|
48
80
|
}
|
|
49
81
|
async function main() {
|
|
50
82
|
// A CLI command runs here, in this process, and exits. Supervising a child
|
|
@@ -125,7 +157,7 @@ async function main() {
|
|
|
125
157
|
// call that runs longer than the idle threshold isn't suspended the
|
|
126
158
|
// moment it finally answers.
|
|
127
159
|
lastActivityAt = Date.now();
|
|
128
|
-
|
|
160
|
+
writeToHostStdout(line);
|
|
129
161
|
},
|
|
130
162
|
killChild: () => childManager.kill(),
|
|
131
163
|
suspendChild: () => childManager.suspend(),
|
|
@@ -238,7 +270,33 @@ async function main() {
|
|
|
238
270
|
// Claude Code exiting without sending a signal still closes its end of stdin.
|
|
239
271
|
process.stdin.on('end', () => void shutdown('host stdin ended'));
|
|
240
272
|
process.stdin.on('close', () => void shutdown('host stdin closed'));
|
|
273
|
+
// A closed host pipe - stderr or stdout - means the session that launched
|
|
274
|
+
// this supervisor is gone. Shutdown from here releases the child and its
|
|
275
|
+
// dev servers and removes the pidfile entry, in place of running on
|
|
276
|
+
// unattached: 12 such
|
|
277
|
+
// supervisors were found alive on one machine, the oldest 5 days 16 hours
|
|
278
|
+
// past its session's exit, each holding a pidfile slot and a child slot.
|
|
279
|
+
onHostPipeBroken = () => void shutdown('host pipe closed');
|
|
280
|
+
// Repeats of one exception are counted and capped. The stderr latch already
|
|
281
|
+
// bounds the EPIPE loop this handler used to feed, so a storm reaching this
|
|
282
|
+
// count originates elsewhere; the exit stops it holding a core either way.
|
|
283
|
+
// Same shape as the child's handler in index.ts (issue #74).
|
|
284
|
+
let lastUncaughtMessage = '';
|
|
285
|
+
let lastUncaughtAt = 0;
|
|
286
|
+
let repeatCount = 0;
|
|
241
287
|
process.on('uncaughtException', (error) => {
|
|
288
|
+
const now = Date.now();
|
|
289
|
+
const message = error?.message ?? String(error);
|
|
290
|
+
if (message === lastUncaughtMessage && now - lastUncaughtAt < 1000) {
|
|
291
|
+
if (++repeatCount > 50) {
|
|
292
|
+
logStderr('Same uncaught exception >50x in <1s, exiting to break the loop');
|
|
293
|
+
process.exit(1);
|
|
294
|
+
}
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
lastUncaughtMessage = message;
|
|
298
|
+
lastUncaughtAt = now;
|
|
299
|
+
repeatCount = 0;
|
|
242
300
|
logStderr(`Uncaught exception: ${error?.stack || error}`);
|
|
243
301
|
});
|
|
244
302
|
process.on('unhandledRejection', (reason) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-supervisor.js","sourceRoot":"","sources":["../src/mcp-supervisor.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEvG,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,SAAS,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp-supervisor.js","sourceRoot":"","sources":["../src/mcp-supervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,15 +5,24 @@ export interface ProcessInfo {
|
|
|
5
5
|
export interface ProcessProbe {
|
|
6
6
|
/** Parent pid + command for a pid, or null if the pid is gone/unreadable. */
|
|
7
7
|
info(pid: number): ProcessInfo | null;
|
|
8
|
-
/** Whether the pid still exists. */
|
|
9
|
-
isAlive(pid: number): boolean;
|
|
10
8
|
}
|
|
11
9
|
export interface ClientIdentity {
|
|
12
10
|
pid: number;
|
|
13
11
|
command: string;
|
|
14
12
|
}
|
|
13
|
+
export declare function parseProcessLine(line: string): ProcessInfo | null;
|
|
15
14
|
/** Reads process info via `ps`. Unavailable on Windows, which has no `ps`. */
|
|
16
15
|
export declare const systemProcessProbe: ProcessProbe;
|
|
16
|
+
/** Consecutive polls that must miss the client before the tree comes down. */
|
|
17
|
+
export declare const MISSES_BEFORE_SHUTDOWN = 3;
|
|
18
|
+
/**
|
|
19
|
+
* True while a fresh walk from `startPid` lands on the same client.
|
|
20
|
+
*
|
|
21
|
+
* The client's exit reparents the tree onto init, so the walk stops at ppid 1
|
|
22
|
+
* and returns null however the pid is reused afterwards. A different pid, or
|
|
23
|
+
* the same pid carrying a different command, is the same reading.
|
|
24
|
+
*/
|
|
25
|
+
export declare function clientStillPresent(startPid: number, client: ClientIdentity, probe: ProcessProbe): boolean;
|
|
17
26
|
/**
|
|
18
27
|
* Walk up from `startPid`'s parent and return the first ancestor that isn't
|
|
19
28
|
* launch plumbing, or null if there is none.
|
|
@@ -36,6 +45,8 @@ export declare class ClientWatcher {
|
|
|
36
45
|
private readonly pollIntervalMs;
|
|
37
46
|
private readonly logStderr;
|
|
38
47
|
private client;
|
|
48
|
+
/** Consecutive polls that have not found the client. */
|
|
49
|
+
private misses;
|
|
39
50
|
constructor(options?: ClientWatcherOptions);
|
|
40
51
|
getClient(): ClientIdentity | null;
|
|
41
52
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-watcher.d.ts","sourceRoot":"","sources":["../../src/supervisor/client-watcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client-watcher.d.ts","sourceRoot":"","sources":["../../src/supervisor/client-watcher.ts"],"names":[],"mappings":"AAiDA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAuED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAIjE;AAED,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,EAAE,YAahC,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,YAAY,GAClB,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EACnB,QAAQ,SAAK,GACZ,cAAc,GAAG,IAAI,CAYvB;AAED,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;GAGG;AACH,qBAAa,aAAa;IASZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IARpC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,MAAM,CAA+B;IAC7C,wDAAwD;IACxD,OAAO,CAAC,MAAM,CAAK;gBAEU,OAAO,GAAE,oBAAyB;IAM/D,SAAS,IAAI,cAAc,GAAG,IAAI;IAIlC;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAAG,cAAc,GAAG,IAAI;IAmC9F,IAAI,IAAI,IAAI;CAMb"}
|
|
@@ -26,6 +26,24 @@
|
|
|
26
26
|
* If the walk finds nothing but plumbing all the way to pid 1, there is no
|
|
27
27
|
* client to watch and reaping is disabled - better to leak than to kill a tree
|
|
28
28
|
* that is still serving someone.
|
|
29
|
+
*
|
|
30
|
+
* IDENTIFYING THE CLIENT ACROSS DAYS
|
|
31
|
+
* A pid alone does not identify a process for the length of a session. The
|
|
32
|
+
* client exits, the OS recycles its pid onto an unrelated process, and a
|
|
33
|
+
* liveness check on that number reports alive forever. Twelve supervisors were
|
|
34
|
+
* found in exactly that state, the oldest 5 days 16 hours past its session,
|
|
35
|
+
* each consuming CPU linear in its age at about 1.4 ms per 60-second poll -
|
|
36
|
+
* that poll and nothing else.
|
|
37
|
+
*
|
|
38
|
+
* So each poll re-walks the ancestry instead of testing a number. The client's
|
|
39
|
+
* death reparents everything below it onto init, so the walk hits ppid 1 and
|
|
40
|
+
* yields null - a reading that holds however the pid is later reused. A walk
|
|
41
|
+
* that lands on a different pid, or the same pid running a different command,
|
|
42
|
+
* reads as gone for the same reason.
|
|
43
|
+
*
|
|
44
|
+
* `ps` failing is indistinguishable from an exit in a single reading, so the
|
|
45
|
+
* tree comes down on the third consecutive miss. A transient probe failure
|
|
46
|
+
* costs two poll intervals; a real exit costs the same delay.
|
|
29
47
|
*/
|
|
30
48
|
import { execFileSync } from 'child_process';
|
|
31
49
|
/**
|
|
@@ -81,6 +99,22 @@ function isPlumbing(command) {
|
|
|
81
99
|
}
|
|
82
100
|
return false;
|
|
83
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Parses one `ps -o ppid=,command=` line: leading spaces, the numeric ppid,
|
|
104
|
+
* then the command as the rest of the line.
|
|
105
|
+
*
|
|
106
|
+
* `ps` prints start times in a locale-shaped form - this machine gives
|
|
107
|
+
* `Sat 5 Sep 11:04:52 2026`, where another gives `Sat Sep 5 11:04:52 2026` -
|
|
108
|
+
* so no start-time column is requested. A mis-parsed date would land inside
|
|
109
|
+
* the command string and defeat the plumbing check that finds the client.
|
|
110
|
+
*/
|
|
111
|
+
const PS_LINE = /^\s*(\d+)\s+(.*)$/;
|
|
112
|
+
export function parseProcessLine(line) {
|
|
113
|
+
const match = line.match(PS_LINE);
|
|
114
|
+
if (!match)
|
|
115
|
+
return null;
|
|
116
|
+
return { ppid: Number(match[1]), command: match[2] };
|
|
117
|
+
}
|
|
84
118
|
/** Reads process info via `ps`. Unavailable on Windows, which has no `ps`. */
|
|
85
119
|
export const systemProcessProbe = {
|
|
86
120
|
info(pid) {
|
|
@@ -91,26 +125,28 @@ export const systemProcessProbe = {
|
|
|
91
125
|
}).trim();
|
|
92
126
|
if (!out)
|
|
93
127
|
return null;
|
|
94
|
-
|
|
95
|
-
if (!match)
|
|
96
|
-
return null;
|
|
97
|
-
return { ppid: Number(match[1]), command: match[2] };
|
|
128
|
+
return parseProcessLine(out);
|
|
98
129
|
}
|
|
99
130
|
catch {
|
|
100
131
|
return null;
|
|
101
132
|
}
|
|
102
133
|
},
|
|
103
|
-
isAlive(pid) {
|
|
104
|
-
try {
|
|
105
|
-
process.kill(pid, 0);
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
catch (err) {
|
|
109
|
-
// EPERM means it exists but belongs to another user - still alive.
|
|
110
|
-
return err?.code === 'EPERM';
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
134
|
};
|
|
135
|
+
/** Consecutive polls that must miss the client before the tree comes down. */
|
|
136
|
+
export const MISSES_BEFORE_SHUTDOWN = 3;
|
|
137
|
+
/**
|
|
138
|
+
* True while a fresh walk from `startPid` lands on the same client.
|
|
139
|
+
*
|
|
140
|
+
* The client's exit reparents the tree onto init, so the walk stops at ppid 1
|
|
141
|
+
* and returns null however the pid is reused afterwards. A different pid, or
|
|
142
|
+
* the same pid carrying a different command, is the same reading.
|
|
143
|
+
*/
|
|
144
|
+
export function clientStillPresent(startPid, client, probe) {
|
|
145
|
+
const current = resolveClientIdentity(startPid, probe);
|
|
146
|
+
if (!current)
|
|
147
|
+
return false;
|
|
148
|
+
return current.pid === client.pid && current.command === client.command;
|
|
149
|
+
}
|
|
114
150
|
/**
|
|
115
151
|
* Walk up from `startPid`'s parent and return the first ancestor that isn't
|
|
116
152
|
* launch plumbing, or null if there is none.
|
|
@@ -126,7 +162,7 @@ export function resolveClientIdentity(startPid, probe, maxDepth = 12) {
|
|
|
126
162
|
if (!isPlumbing(parent.command)) {
|
|
127
163
|
return { pid: current.ppid, command: parent.command };
|
|
128
164
|
}
|
|
129
|
-
current =
|
|
165
|
+
current = parent;
|
|
130
166
|
}
|
|
131
167
|
return null;
|
|
132
168
|
}
|
|
@@ -141,6 +177,8 @@ export class ClientWatcher {
|
|
|
141
177
|
pollIntervalMs;
|
|
142
178
|
logStderr;
|
|
143
179
|
client = null;
|
|
180
|
+
/** Consecutive polls that have not found the client. */
|
|
181
|
+
misses = 0;
|
|
144
182
|
constructor(options = {}) {
|
|
145
183
|
this.options = options;
|
|
146
184
|
this.probe = options.probe ?? systemProcessProbe;
|
|
@@ -167,8 +205,14 @@ export class ClientWatcher {
|
|
|
167
205
|
const client = this.client;
|
|
168
206
|
this.logStderr(`Watching client PID ${client.pid} (${client.command.slice(0, 80)})`);
|
|
169
207
|
this.timer = setInterval(() => {
|
|
170
|
-
if (this.probe
|
|
208
|
+
if (clientStillPresent(startPid, client, this.probe)) {
|
|
209
|
+
this.misses = 0;
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (++this.misses < MISSES_BEFORE_SHUTDOWN) {
|
|
213
|
+
this.logStderr(`Client PID ${client.pid} not found (${this.misses}/${MISSES_BEFORE_SHUTDOWN})`);
|
|
171
214
|
return;
|
|
215
|
+
}
|
|
172
216
|
this.stop();
|
|
173
217
|
this.logStderr(`Client PID ${client.pid} is gone; shutting down`);
|
|
174
218
|
onClientGone(client);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-watcher.js","sourceRoot":"","sources":["../../src/supervisor/client-watcher.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client-watcher.js","sourceRoot":"","sources":["../../src/supervisor/client-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { ClientWatcher, resolveClientIdentity } from './client-watcher.js';
|
|
2
|
+
import { ClientWatcher, clientStillPresent, MISSES_BEFORE_SHUTDOWN, parseProcessLine, resolveClientIdentity, } from './client-watcher.js';
|
|
3
3
|
/** Builds a probe over a fake process table: pid -> { ppid, command }. */
|
|
4
4
|
function makeProbe(table, dead = new Set()) {
|
|
5
5
|
return {
|
|
6
6
|
info: (pid) => (dead.has(pid) ? null : table[pid] ?? null),
|
|
7
|
-
isAlive: (pid) => !dead.has(pid) && pid in table,
|
|
8
7
|
};
|
|
9
8
|
}
|
|
10
9
|
describe('resolveClientIdentity', () => {
|
|
@@ -93,7 +92,7 @@ describe('ClientWatcher', () => {
|
|
|
93
92
|
vi.advanceTimersByTime(3000);
|
|
94
93
|
expect(onGone).not.toHaveBeenCalled();
|
|
95
94
|
dead.add(300);
|
|
96
|
-
vi.advanceTimersByTime(1000);
|
|
95
|
+
vi.advanceTimersByTime(1000 * MISSES_BEFORE_SHUTDOWN);
|
|
97
96
|
expect(onGone).toHaveBeenCalledTimes(1);
|
|
98
97
|
expect(onGone).toHaveBeenCalledWith({ pid: 300, command: 'claude' });
|
|
99
98
|
// Stops polling after firing - one shutdown is enough.
|
|
@@ -118,4 +117,112 @@ describe('ClientWatcher', () => {
|
|
|
118
117
|
expect(onGone).not.toHaveBeenCalled();
|
|
119
118
|
});
|
|
120
119
|
});
|
|
120
|
+
/**
|
|
121
|
+
* Twelve supervisors were found alive with their sessions days gone, each
|
|
122
|
+
* burning CPU linear in its age at about 1.4 ms per 60-second poll - that poll
|
|
123
|
+
* and nothing else. A pid-only liveness check on a recycled pid reads alive
|
|
124
|
+
* forever, so the reaper never fired.
|
|
125
|
+
*/
|
|
126
|
+
describe('clientStillPresent', () => {
|
|
127
|
+
const TREE = {
|
|
128
|
+
100: { ppid: 200, command: 'node .bin/devharness' },
|
|
129
|
+
200: { ppid: 300, command: 'npm exec devharness@0.9.14' },
|
|
130
|
+
300: { ppid: 1, command: 'claude' },
|
|
131
|
+
};
|
|
132
|
+
const CLIENT = { pid: 300, command: 'claude' };
|
|
133
|
+
it('holds while the whole ancestry is intact', () => {
|
|
134
|
+
expect(clientStillPresent(100, CLIENT, makeProbe(TREE))).toBe(true);
|
|
135
|
+
});
|
|
136
|
+
it('fails once the client exits and the wrapper reparents onto init', () => {
|
|
137
|
+
// What `npm exec` surviving its client actually looks like: the wrapper
|
|
138
|
+
// lives on with ppid 1, so the walk stops there instead of finding a client.
|
|
139
|
+
const orphaned = {
|
|
140
|
+
100: { ppid: 200, command: 'node .bin/devharness' },
|
|
141
|
+
200: { ppid: 1, command: 'npm exec devharness@0.9.14' },
|
|
142
|
+
};
|
|
143
|
+
expect(clientStillPresent(100, CLIENT, makeProbe(orphaned))).toBe(false);
|
|
144
|
+
});
|
|
145
|
+
it('fails when the client pid was recycled onto another process', () => {
|
|
146
|
+
// The pid is alive and would pass a kill(pid, 0) check; the ancestry no
|
|
147
|
+
// longer runs through it, which is what the twelve orphans missed.
|
|
148
|
+
const recycled = {
|
|
149
|
+
100: { ppid: 200, command: 'node .bin/devharness' },
|
|
150
|
+
200: { ppid: 1, command: 'npm exec devharness@0.9.14' },
|
|
151
|
+
300: { ppid: 1, command: '/usr/sbin/cupsd' },
|
|
152
|
+
};
|
|
153
|
+
expect(clientStillPresent(100, CLIENT, makeProbe(recycled))).toBe(false);
|
|
154
|
+
});
|
|
155
|
+
it('fails when the walk lands on a different pid', () => {
|
|
156
|
+
const moved = {
|
|
157
|
+
100: { ppid: 200, command: 'node .bin/devharness' },
|
|
158
|
+
200: { ppid: 999, command: 'npm exec devharness@0.9.14' },
|
|
159
|
+
999: { ppid: 1, command: 'claude' },
|
|
160
|
+
};
|
|
161
|
+
expect(clientStillPresent(100, CLIENT, makeProbe(moved))).toBe(false);
|
|
162
|
+
});
|
|
163
|
+
it('fails when the pid carries a different command', () => {
|
|
164
|
+
const swapped = {
|
|
165
|
+
...TREE,
|
|
166
|
+
300: { ppid: 1, command: 'code helper' },
|
|
167
|
+
};
|
|
168
|
+
expect(clientStillPresent(100, CLIENT, makeProbe(swapped))).toBe(false);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
describe('ClientWatcher miss tolerance', () => {
|
|
172
|
+
beforeEach(() => vi.useFakeTimers());
|
|
173
|
+
afterEach(() => vi.useRealTimers());
|
|
174
|
+
const TREE = {
|
|
175
|
+
100: { ppid: 200, command: 'node .bin/devharness' },
|
|
176
|
+
200: { ppid: 300, command: 'npm exec devharness@0.9.14' },
|
|
177
|
+
300: { ppid: 1, command: 'claude' },
|
|
178
|
+
};
|
|
179
|
+
it('waits for three consecutive misses before shutting the tree down', () => {
|
|
180
|
+
const dead = new Set();
|
|
181
|
+
const watcher = new ClientWatcher({ pollIntervalMs: 1000, probe: makeProbe(TREE, dead) });
|
|
182
|
+
const onGone = vi.fn();
|
|
183
|
+
watcher.start(100, onGone);
|
|
184
|
+
dead.add(300);
|
|
185
|
+
for (let poll = 1; poll < MISSES_BEFORE_SHUTDOWN; poll++) {
|
|
186
|
+
vi.advanceTimersByTime(1000);
|
|
187
|
+
expect(onGone).not.toHaveBeenCalled();
|
|
188
|
+
}
|
|
189
|
+
vi.advanceTimersByTime(1000);
|
|
190
|
+
expect(onGone).toHaveBeenCalledTimes(1);
|
|
191
|
+
});
|
|
192
|
+
it('forgets earlier misses once the client is found again', () => {
|
|
193
|
+
// A `ps` that times out reads exactly like an exit. Without the reset, two
|
|
194
|
+
// unrelated timeouts days apart would add up to a shutdown.
|
|
195
|
+
const dead = new Set();
|
|
196
|
+
const watcher = new ClientWatcher({ pollIntervalMs: 1000, probe: makeProbe(TREE, dead) });
|
|
197
|
+
const onGone = vi.fn();
|
|
198
|
+
watcher.start(100, onGone);
|
|
199
|
+
dead.add(300);
|
|
200
|
+
vi.advanceTimersByTime(2000);
|
|
201
|
+
dead.delete(300);
|
|
202
|
+
vi.advanceTimersByTime(1000);
|
|
203
|
+
dead.add(300);
|
|
204
|
+
vi.advanceTimersByTime(2000);
|
|
205
|
+
expect(onGone).not.toHaveBeenCalled();
|
|
206
|
+
vi.advanceTimersByTime(1000);
|
|
207
|
+
expect(onGone).toHaveBeenCalledTimes(1);
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
describe('parseProcessLine', () => {
|
|
211
|
+
it('reads ppid and command from a ps line', () => {
|
|
212
|
+
expect(parseProcessLine(' 40544 node /opt/homebrew/bin/devharness')).toEqual({
|
|
213
|
+
ppid: 40544,
|
|
214
|
+
command: 'node /opt/homebrew/bin/devharness',
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
it('keeps the whole command including its arguments', () => {
|
|
218
|
+
expect(parseProcessLine('81785 claude --resume d100b5ed-ecf8')).toEqual({
|
|
219
|
+
ppid: 81785,
|
|
220
|
+
command: 'claude --resume d100b5ed-ecf8',
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
it('returns null for a line carrying no pid', () => {
|
|
224
|
+
expect(parseProcessLine('')).toBeNull();
|
|
225
|
+
expect(parseProcessLine('no numbers here')).toBeNull();
|
|
226
|
+
});
|
|
227
|
+
});
|
|
121
228
|
//# sourceMappingURL=client-watcher.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-watcher.test.js","sourceRoot":"","sources":["../../src/supervisor/client-watcher.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client-watcher.test.js","sourceRoot":"","sources":["../../src/supervisor/client-watcher.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guarded stderr writer for the supervisor.
|
|
3
|
+
*
|
|
4
|
+
* The supervisor's stderr is a pipe held by the Claude Code host. The host
|
|
5
|
+
* exits and closes its end; the supervisor's next write to fd 2 returns
|
|
6
|
+
* errno 32, EPIPE. Node delivers that as an `error` event on the stream, and a
|
|
7
|
+
* stream with no `error` listener raises it as an `uncaughtException`. The
|
|
8
|
+
* supervisor's `uncaughtException` handler logs the exception, which writes to
|
|
9
|
+
* the same closed pipe, which raises the same EPIPE: a write loop with no pause
|
|
10
|
+
* that holds a core until the process is killed. Two such supervisors were
|
|
11
|
+
* measured at about 89,000 write calls a second each, every call returning
|
|
12
|
+
* errno 32, five days after their sessions ended.
|
|
13
|
+
*
|
|
14
|
+
* Two guards break that chain. An `error` listener on the stream takes the
|
|
15
|
+
* EPIPE off the `uncaughtException` path, so a failed write raises nothing. A
|
|
16
|
+
* `broken` latch turns every later write into a no-op, so the count of writes
|
|
17
|
+
* to a closed pipe is bounded at one.
|
|
18
|
+
*
|
|
19
|
+
* `isBroken()` reports the latch. A closed host pipe means the host is gone,
|
|
20
|
+
* which is the supervisor's signal to shut down rather than run on unattached.
|
|
21
|
+
*/
|
|
22
|
+
export interface StderrLog {
|
|
23
|
+
/** Writes one prefixed line. A latched-broken stream consumes nothing. */
|
|
24
|
+
write(message: string): void;
|
|
25
|
+
/** True once a write to the stream has failed. */
|
|
26
|
+
isBroken(): boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare function createStderrLog(prefix: string, stream?: NodeJS.WriteStream | NodeJS.WritableStream, onBroken?: () => void): StderrLog;
|
|
29
|
+
//# sourceMappingURL=stderr-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stderr-log.d.ts","sourceRoot":"","sources":["../../src/supervisor/stderr-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,SAAS;IACxB,0EAA0E;IAC1E,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,IAAI,OAAO,CAAC;CACrB;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,cAA+B,EACnE,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,SAAS,CA4BX"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guarded stderr writer for the supervisor.
|
|
3
|
+
*
|
|
4
|
+
* The supervisor's stderr is a pipe held by the Claude Code host. The host
|
|
5
|
+
* exits and closes its end; the supervisor's next write to fd 2 returns
|
|
6
|
+
* errno 32, EPIPE. Node delivers that as an `error` event on the stream, and a
|
|
7
|
+
* stream with no `error` listener raises it as an `uncaughtException`. The
|
|
8
|
+
* supervisor's `uncaughtException` handler logs the exception, which writes to
|
|
9
|
+
* the same closed pipe, which raises the same EPIPE: a write loop with no pause
|
|
10
|
+
* that holds a core until the process is killed. Two such supervisors were
|
|
11
|
+
* measured at about 89,000 write calls a second each, every call returning
|
|
12
|
+
* errno 32, five days after their sessions ended.
|
|
13
|
+
*
|
|
14
|
+
* Two guards break that chain. An `error` listener on the stream takes the
|
|
15
|
+
* EPIPE off the `uncaughtException` path, so a failed write raises nothing. A
|
|
16
|
+
* `broken` latch turns every later write into a no-op, so the count of writes
|
|
17
|
+
* to a closed pipe is bounded at one.
|
|
18
|
+
*
|
|
19
|
+
* `isBroken()` reports the latch. A closed host pipe means the host is gone,
|
|
20
|
+
* which is the supervisor's signal to shut down rather than run on unattached.
|
|
21
|
+
*/
|
|
22
|
+
export function createStderrLog(prefix, stream = process.stderr, onBroken) {
|
|
23
|
+
let broken = false;
|
|
24
|
+
const latch = () => {
|
|
25
|
+
if (broken)
|
|
26
|
+
return;
|
|
27
|
+
broken = true;
|
|
28
|
+
if (onBroken)
|
|
29
|
+
onBroken();
|
|
30
|
+
};
|
|
31
|
+
// Attached once, for the lifetime of the process: an EPIPE that arrives
|
|
32
|
+
// asynchronously lands here instead of on the uncaughtException path.
|
|
33
|
+
stream.on('error', latch);
|
|
34
|
+
return {
|
|
35
|
+
write(message) {
|
|
36
|
+
if (broken)
|
|
37
|
+
return;
|
|
38
|
+
try {
|
|
39
|
+
stream.write(`${prefix} ${message}\n`);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// A synchronous throw covers the case where the write fails inline
|
|
43
|
+
// rather than through the stream's error event.
|
|
44
|
+
latch();
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
isBroken() {
|
|
48
|
+
return broken;
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=stderr-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stderr-log.js","sourceRoot":"","sources":["../../src/supervisor/stderr-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,SAAqD,OAAO,CAAC,MAAM,EACnE,QAAqB;IAErB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,IAAI,QAAQ;YAAE,QAAQ,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE1B,OAAO;QACL,KAAK,CAAC,OAAe;YACnB,IAAI,MAAM;gBAAE,OAAO;YACnB,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,OAAO,IAAI,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,mEAAmE;gBACnE,gDAAgD;gBAChD,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,QAAQ;YACN,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observed for real: two supervisors from sessions that had ended days earlier
|
|
3
|
+
* were each issuing about 89,000 write calls a second to fd 2, every call
|
|
4
|
+
* returning errno 32 (EPIPE), together accounting for 96.8% of the machine's
|
|
5
|
+
* filesystem syscalls. The loop is the supervisor's uncaughtException handler
|
|
6
|
+
* logging to the closed host pipe, which raises the next uncaughtException.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=stderr-log.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stderr-log.test.d.ts","sourceRoot":"","sources":["../../src/supervisor/stderr-log.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observed for real: two supervisors from sessions that had ended days earlier
|
|
3
|
+
* were each issuing about 89,000 write calls a second to fd 2, every call
|
|
4
|
+
* returning errno 32 (EPIPE), together accounting for 96.8% of the machine's
|
|
5
|
+
* filesystem syscalls. The loop is the supervisor's uncaughtException handler
|
|
6
|
+
* logging to the closed host pipe, which raises the next uncaughtException.
|
|
7
|
+
*/
|
|
8
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
9
|
+
import { EventEmitter } from 'events';
|
|
10
|
+
import { createStderrLog } from './stderr-log.js';
|
|
11
|
+
/** A stream whose write throws inline, the synchronous EPIPE shape. */
|
|
12
|
+
function throwingStream() {
|
|
13
|
+
const stream = new EventEmitter();
|
|
14
|
+
stream.write = (() => {
|
|
15
|
+
const err = new Error('write EPIPE');
|
|
16
|
+
err.code = 'EPIPE';
|
|
17
|
+
throw err;
|
|
18
|
+
});
|
|
19
|
+
return stream;
|
|
20
|
+
}
|
|
21
|
+
/** A stream that accepts writes and emits errors on demand, the async shape. */
|
|
22
|
+
function emittingStream() {
|
|
23
|
+
const lines = [];
|
|
24
|
+
const stream = new EventEmitter();
|
|
25
|
+
stream.write = ((chunk) => {
|
|
26
|
+
lines.push(String(chunk));
|
|
27
|
+
return true;
|
|
28
|
+
});
|
|
29
|
+
return { stream, lines };
|
|
30
|
+
}
|
|
31
|
+
describe('createStderrLog', () => {
|
|
32
|
+
it('writes prefixed lines while the stream accepts them', () => {
|
|
33
|
+
const { stream, lines } = emittingStream();
|
|
34
|
+
const log = createStderrLog('[mcp-supervisor]', stream);
|
|
35
|
+
log.write('Starting (PID: 1)');
|
|
36
|
+
log.write('Shutting down (host stdin closed)');
|
|
37
|
+
expect(lines).toEqual([
|
|
38
|
+
'[mcp-supervisor] Starting (PID: 1)\n',
|
|
39
|
+
'[mcp-supervisor] Shutting down (host stdin closed)\n',
|
|
40
|
+
]);
|
|
41
|
+
expect(log.isBroken()).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
it('writes to a synchronously failing stream exactly once', () => {
|
|
44
|
+
const stream = throwingStream();
|
|
45
|
+
const write = vi.spyOn(stream, 'write');
|
|
46
|
+
const log = createStderrLog('[mcp-supervisor]', stream);
|
|
47
|
+
for (let i = 0; i < 1000; i++)
|
|
48
|
+
log.write('Uncaught exception: write EPIPE');
|
|
49
|
+
expect(write).toHaveBeenCalledTimes(1);
|
|
50
|
+
expect(log.isBroken()).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
it('stops writing after the stream emits an error', () => {
|
|
53
|
+
const { stream, lines } = emittingStream();
|
|
54
|
+
const log = createStderrLog('[mcp-supervisor]', stream);
|
|
55
|
+
log.write('before');
|
|
56
|
+
stream.emit('error', Object.assign(new Error('write EPIPE'), { code: 'EPIPE' }));
|
|
57
|
+
for (let i = 0; i < 1000; i++)
|
|
58
|
+
log.write('after');
|
|
59
|
+
expect(lines).toEqual(['[mcp-supervisor] before\n']);
|
|
60
|
+
expect(log.isBroken()).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
it('keeps an emitted error off the uncaughtException path', () => {
|
|
63
|
+
const { stream } = emittingStream();
|
|
64
|
+
createStderrLog('[mcp-supervisor]', stream);
|
|
65
|
+
// An EventEmitter with no 'error' listener throws on emit; the listener the
|
|
66
|
+
// log attaches is what makes this emit return instead of throwing.
|
|
67
|
+
expect(() => stream.emit('error', new Error('write EPIPE'))).not.toThrow();
|
|
68
|
+
});
|
|
69
|
+
it('calls onBroken once, on the first failure', () => {
|
|
70
|
+
const stream = throwingStream();
|
|
71
|
+
const onBroken = vi.fn();
|
|
72
|
+
const log = createStderrLog('[mcp-supervisor]', stream, onBroken);
|
|
73
|
+
log.write('one');
|
|
74
|
+
log.write('two');
|
|
75
|
+
log.write('three');
|
|
76
|
+
expect(onBroken).toHaveBeenCalledTimes(1);
|
|
77
|
+
expect(log.isBroken()).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=stderr-log.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stderr-log.test.js","sourceRoot":"","sources":["../../src/supervisor/stderr-log.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues-tools.d.ts","sourceRoot":"","sources":["../../src/tools/issues-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgGnD;;;;;;;;GAQG;AACH,eAAO,MAAM,uCAAuC,SAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"issues-tools.d.ts","sourceRoot":"","sources":["../../src/tools/issues-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgGnD;;;;;;;;GAQG;AACH,eAAO,MAAM,uCAAuC,SAAU,CAAC;AAqI/D,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,eAAe,EAChC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EAC1D,oBAAoB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,EACjE,iBAAiB,CAAC,EAAE,MAAM,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkwBnC"}
|
|
@@ -27,9 +27,9 @@ function isGithubEnabled() {
|
|
|
27
27
|
const issuesSchema = z.object({
|
|
28
28
|
action: z.enum(['list', 'create', 'workOn', 'resolve', 'acknowledge', 'comment',
|
|
29
29
|
'publish', 'sync', 'import', 'link', 'pullSequence'])
|
|
30
|
-
.describe('Issue action: list (list all issues), create (create new issue), workOn (start working on issue), resolve (opens an interactive browser verification flow and waits for a PERSON to click Fixed/Not Fixed - a human must physically confirm before the issue is marked fixed/implemented, so an agent cannot close an issue this way and should use `comment` to record findings instead), acknowledge (acknowledge pending bugs), comment (append a comment to an issue)'),
|
|
30
|
+
.describe('Issue action: list (list all issues, or one issue in full by id), create (create new issue), workOn (start working on issue), resolve (opens an interactive browser verification flow and waits for a PERSON to click Fixed/Not Fixed - a human must physically confirm before the issue is marked fixed/implemented, so an agent cannot close an issue this way and should use `comment` to record findings instead), acknowledge (acknowledge pending bugs), comment (append a comment to an issue)'),
|
|
31
31
|
id: z.number().optional()
|
|
32
|
-
.describe('Issue ID (
|
|
32
|
+
.describe('Issue ID (list, workOn, resolve, comment, publish, link, pullSequence). On list it returns that one issue in full and the other filters do not apply.'),
|
|
33
33
|
type: z.enum(['bug', 'feature']).optional()
|
|
34
34
|
.describe('Issue type (required for create, optional filter for list)'),
|
|
35
35
|
status: z.enum(['pending', 'acknowledged', 'in_progress', 'fixed', 'implemented']).optional()
|
|
@@ -146,6 +146,8 @@ function getStatusIcon(status) {
|
|
|
146
146
|
default: return '•';
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
+
/** A listing renders bodies when it holds this many issues or fewer; above it, titles only. */
|
|
150
|
+
const DETAIL_RENDER_LIMIT = 1;
|
|
149
151
|
function formatIssueDetails(issue) {
|
|
150
152
|
const typeIcon = issue.type === 'bug' ? '🐛' : '✨';
|
|
151
153
|
const statusIcon = getStatusIcon(issue.status);
|
|
@@ -191,11 +193,32 @@ function formatCommentTimeline(issue) {
|
|
|
191
193
|
// =============================================================================
|
|
192
194
|
export function createIssuesTools(executeToolCall, getSequencePath, getPageForConnection, getKnownToolNames) {
|
|
193
195
|
return {
|
|
194
|
-
issues: createTool('Track and manage bugs and features as Markdown issues (title, Markdown body, labels, comments). Actions: list (show all issues with optional filters), create (create new issue with title/body/labels, optionally linking a sequence), workOn (start working on issue with auto-replay), resolve (HUMAN-ONLY interactive verification: opens a browser overlay and waits for a person to confirm the fix before marking fixed/implemented - agents are refused immediately, use `comment` instead), acknowledge (acknowledge pending bugs to unblock tools), comment (append a Markdown comment to an issue), publish/sync/import/link/pullSequence (GitHub, via the gh CLI; only publish and sync use the network)', issuesSchema, async (args, abortSignal) => {
|
|
196
|
+
issues: createTool('Track and manage bugs and features as Markdown issues (title, Markdown body, labels, comments). Actions: list (show all issues with optional filters, or one issue in full by id), create (create new issue with title/body/labels, optionally linking a sequence), workOn (start working on issue with auto-replay), resolve (HUMAN-ONLY interactive verification: opens a browser overlay and waits for a person to confirm the fix before marking fixed/implemented - agents are refused immediately, use `comment` instead), acknowledge (acknowledge pending bugs to unblock tools), comment (append a Markdown comment to an issue), publish/sync/import/link/pullSequence (GitHub, via the gh CLI; only publish and sync use the network)', issuesSchema, async (args, abortSignal) => {
|
|
195
197
|
// Initialize tracker on first use
|
|
196
198
|
await initializeTracker();
|
|
197
199
|
switch (args.action) {
|
|
198
200
|
case 'list': {
|
|
201
|
+
// An id names one issue: it returns in full, and the other filters do not apply.
|
|
202
|
+
if (args.id !== undefined) {
|
|
203
|
+
const issue = (await getIssues({ includeCompleted: true })).find(i => i.id === args.id);
|
|
204
|
+
if (!issue) {
|
|
205
|
+
return createErrorResponse('ISSUES_NOT_FOUND', {
|
|
206
|
+
id: args.id,
|
|
207
|
+
message: 'No issue carries that ID.',
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return createSuccessResponse('ISSUES_LIST', {
|
|
211
|
+
count: 1,
|
|
212
|
+
bugCount: issue.type === 'bug' ? 1 : 0,
|
|
213
|
+
featureCount: issue.type === 'feature' ? 1 : 0,
|
|
214
|
+
pendingCount: issue.status === 'pending' ? 1 : 0,
|
|
215
|
+
issuesList: formatIssuesList([issue]),
|
|
216
|
+
details: formatIssueDetails(issue),
|
|
217
|
+
bodiesOmitted: false,
|
|
218
|
+
search: null,
|
|
219
|
+
includeCompleted: true,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
199
222
|
const filter = {};
|
|
200
223
|
if (args.type)
|
|
201
224
|
filter.type = args.type;
|
|
@@ -219,12 +242,15 @@ export function createIssuesTools(executeToolCall, getSequencePath, getPageForCo
|
|
|
219
242
|
const bugCount = issues.filter(i => i.type === 'bug').length;
|
|
220
243
|
const featureCount = issues.filter(i => i.type === 'feature').length;
|
|
221
244
|
const pendingCount = issues.filter(i => i.status === 'pending').length;
|
|
245
|
+
const rendersDetails = issues.length > 0 && issues.length <= DETAIL_RENDER_LIMIT;
|
|
222
246
|
return createSuccessResponse('ISSUES_LIST', {
|
|
223
247
|
count: issues.length,
|
|
224
248
|
bugCount,
|
|
225
249
|
featureCount,
|
|
226
250
|
pendingCount,
|
|
227
251
|
issuesList: formatIssuesList(issues),
|
|
252
|
+
details: rendersDetails ? issues.map(formatIssueDetails).join('\n\n---\n\n') : null,
|
|
253
|
+
bodiesOmitted: !rendersDetails && issues.length > 0,
|
|
228
254
|
search: args.search || null,
|
|
229
255
|
includeCompleted: args.includeCompleted || false,
|
|
230
256
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues-tools.js","sourceRoot":"","sources":["../../src/tools/issues-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"issues-tools.js","sourceRoot":"","sources":["../../src/tools/issues-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -181,4 +181,90 @@ describe('issues resolve - verification outcome comes from _meta', () => {
|
|
|
181
181
|
expect(result.isError).toBeUndefined();
|
|
182
182
|
});
|
|
183
183
|
});
|
|
184
|
+
/**
|
|
185
|
+
* A body used to be reachable only through workOn, which writes in_progress and
|
|
186
|
+
* opens a browser - so reading what an issue says cost a state change and a
|
|
187
|
+
* Chrome launch that the read itself does not need.
|
|
188
|
+
*/
|
|
189
|
+
describe('issues list - reading a body', () => {
|
|
190
|
+
it('returns the named issue in full, changing no state and opening no browser', async () => {
|
|
191
|
+
const issue = await addIssue({
|
|
192
|
+
type: 'bug',
|
|
193
|
+
title: 'ServerFileWatcher can silently miss a change',
|
|
194
|
+
body: 'fs.watch delivery is not guaranteed.',
|
|
195
|
+
initialStatus: 'acknowledged',
|
|
196
|
+
});
|
|
197
|
+
const { tools, executeToolCall, getPageForConnection } = buildTools();
|
|
198
|
+
const result = await tools.issues.handler({ action: 'list', id: issue.id }, undefined);
|
|
199
|
+
expect(result.content[0].text).toContain('fs.watch delivery is not guaranteed.');
|
|
200
|
+
expect(executeToolCall).not.toHaveBeenCalled();
|
|
201
|
+
expect(getPageForConnection).not.toHaveBeenCalled();
|
|
202
|
+
const reloaded = await getIssue(issue.id);
|
|
203
|
+
expect(reloaded.status).toBe('acknowledged');
|
|
204
|
+
expect(reloaded.startedAt).toBeUndefined();
|
|
205
|
+
});
|
|
206
|
+
it('reaches an issue the default filter drops, so an id needs no includeCompleted', async () => {
|
|
207
|
+
const issue = await addIssue({
|
|
208
|
+
type: 'feature',
|
|
209
|
+
title: 'GitHub issue sync via the gh CLI',
|
|
210
|
+
body: 'Body of an issue already implemented.',
|
|
211
|
+
initialStatus: 'implemented',
|
|
212
|
+
});
|
|
213
|
+
const { tools } = buildTools();
|
|
214
|
+
const result = await tools.issues.handler({ action: 'list', id: issue.id }, undefined);
|
|
215
|
+
expect(result.content[0].text).toContain('Body of an issue already implemented.');
|
|
216
|
+
});
|
|
217
|
+
it('returns ISSUES_NOT_FOUND for an id no issue carries', async () => {
|
|
218
|
+
const { tools } = buildTools();
|
|
219
|
+
const result = await tools.issues.handler({ action: 'list', id: 4242 }, undefined);
|
|
220
|
+
expect(result.isError).toBe(true);
|
|
221
|
+
expect(result._errorId).toBe('ISSUES_NOT_FOUND');
|
|
222
|
+
expect(result.content[0].text).toContain('4242');
|
|
223
|
+
});
|
|
224
|
+
it('renders the body when a search narrows the listing to one issue', async () => {
|
|
225
|
+
await addIssue({ type: 'bug', title: 'relocateRoot has no reentrancy guard', body: 'A rebind that throws leaves no rollback.' });
|
|
226
|
+
await addIssue({ type: 'bug', title: 'Unrelated watcher bug', body: 'Nothing to do with rebinding.' });
|
|
227
|
+
const { tools } = buildTools();
|
|
228
|
+
const result = await tools.issues.handler({ action: 'list', search: 'reentrancy' }, undefined);
|
|
229
|
+
expect(result.content[0].text).toContain('A rebind that throws leaves no rollback.');
|
|
230
|
+
});
|
|
231
|
+
it('omits bodies above the cap and names the call that reads one', async () => {
|
|
232
|
+
await addIssue({ type: 'bug', title: 'First routing bug', body: 'BODY MARKER ONE' });
|
|
233
|
+
await addIssue({ type: 'bug', title: 'Second routing bug', body: 'BODY MARKER TWO' });
|
|
234
|
+
const { tools } = buildTools();
|
|
235
|
+
const result = await tools.issues.handler({ action: 'list', search: 'routing' }, undefined);
|
|
236
|
+
const text = result.content[0].text;
|
|
237
|
+
expect(text).not.toContain('BODY MARKER ONE');
|
|
238
|
+
expect(text).not.toContain('BODY MARKER TWO');
|
|
239
|
+
expect(text).toContain("action: 'list', id:");
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
/**
|
|
243
|
+
* A body is arbitrary Markdown written by users and agents, and it now reaches
|
|
244
|
+
* the response through a template variable. Variable values enter in one final
|
|
245
|
+
* replace pass and are never rescanned, so template syntax inside a body is
|
|
246
|
+
* inert - these pin that, because a rewrite of the substitution loop would
|
|
247
|
+
* otherwise silently mangle or hide what a body says.
|
|
248
|
+
*/
|
|
249
|
+
describe('issues list - a body is data, not template', () => {
|
|
250
|
+
it('renders template syntax inside a body verbatim', async () => {
|
|
251
|
+
const hostile = 'Counts {{count}} and {{^details}}HIDDEN{{/details}} and {{#each x}}L{{/each}} and a bare {{ brace.';
|
|
252
|
+
const issue = await addIssue({ type: 'bug', title: 'Body carries braces', body: hostile });
|
|
253
|
+
const { tools } = buildTools();
|
|
254
|
+
const result = await tools.issues.handler({ action: 'list', id: issue.id }, undefined);
|
|
255
|
+
expect(result.content[0].text).toContain(hostile);
|
|
256
|
+
});
|
|
257
|
+
it('omits the read-one pointer when nothing matched', async () => {
|
|
258
|
+
await addIssue({ type: 'bug', title: 'Present but unmatched', body: 'x' });
|
|
259
|
+
const { tools } = buildTools();
|
|
260
|
+
const result = await tools.issues.handler({ action: 'list', search: 'nothing-matches-this' }, undefined);
|
|
261
|
+
expect(result.content[0].text).not.toContain("action: 'list', id:");
|
|
262
|
+
});
|
|
263
|
+
it('returns the named issue when the other filters contradict it', async () => {
|
|
264
|
+
const issue = await addIssue({ type: 'bug', title: 'Contradicted', body: 'BODY OF THE NAMED ISSUE', initialStatus: 'acknowledged' });
|
|
265
|
+
const { tools } = buildTools();
|
|
266
|
+
const result = await tools.issues.handler({ action: 'list', id: issue.id, type: 'feature', status: 'pending', search: 'no-such-text', labels: ['absent'] }, undefined);
|
|
267
|
+
expect(result.content[0].text).toContain('BODY OF THE NAMED ISSUE');
|
|
268
|
+
});
|
|
269
|
+
});
|
|
184
270
|
//# sourceMappingURL=issues-tools.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues-tools.test.js","sourceRoot":"","sources":["../../src/tools/issues-tools.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"issues-tools.test.js","sourceRoot":"","sources":["../../src/tools/issues-tools.test.ts"],"names":[],"mappings":"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"}
|
package/docs/instructions.md
CHANGED
|
@@ -218,6 +218,7 @@ runs against (see Quick Start).
|
|
|
218
218
|
|
|
219
219
|
**Issues**: `issues` (actions: list, create, workOn, resolve, acknowledge, comment, publish, sync, import, link, pullSequence)
|
|
220
220
|
- `create`/`comment`: track bugs and features as Markdown issues, optionally linked to a replay sequence
|
|
221
|
+
- `list`: `search` matches body and comment text. A listing holding one issue renders it in full, so `issues({ action: 'list', id: N })` returns body, labels, comments and timestamps and leaves the issue's own status and timestamps untouched - reading an issue does not need `workOn`
|
|
221
222
|
- `workOn`: start on an issue, auto-replaying its linked sequence
|
|
222
223
|
- `resolve` is **human-gated**: it opens a browser overlay and only a person clicking Fixed/Not Fixed can close the issue. Don't call it unattended - it will wait ~150s and then fail with `ISSUES_RESOLVE_TIMEOUT`. Record what you found with `comment` and ask the user to run `resolve` themselves
|
|
223
224
|
- `acknowledge`: acknowledge pending bugs to unblock other tools
|
package/docs/messages.md
CHANGED
|
@@ -2421,9 +2421,10 @@ Use `issues({ action: 'acknowledge' })` to acknowledge.
|
|
|
2421
2421
|
**Type:** success
|
|
2422
2422
|
**Summary:** Issues list
|
|
2423
2423
|
|
|
2424
|
-
{{issuesList}}
|
|
2424
|
+
{{#details}}{{details}}{{/details}}{{^details}}{{issuesList}}{{/details}}
|
|
2425
2425
|
|
|
2426
|
-
{{count}} issues: {{bugCount}} bugs, {{featureCount}} features{{#pendingCount}}, {{pendingCount}} pending{{/pendingCount}}
|
|
2426
|
+
{{count}} issues: {{bugCount}} bugs, {{featureCount}} features{{#pendingCount}}, {{pendingCount}} pending{{/pendingCount}}{{#bodiesOmitted}}
|
|
2427
|
+
A listing this wide omits bodies. Narrow the filters, or read one issue in full with `issues({ action: 'list', id: <ID> })`.{{/bodiesOmitted}}
|
|
2427
2428
|
|
|
2428
2429
|
---
|
|
2429
2430
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devharness",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.15",
|
|
4
4
|
"description": "MCP server that connects AI assistants to Chrome DevTools Protocol for runtime debugging - set breakpoints, inspect variables, monitor network traffic, and automate browser interactions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: devharness
|
|
3
3
|
description: Drive and debug a running app via the devharness MCP server - launch or attach to Chrome and Node.js, set breakpoints and logpoints, inspect call stacks and variables, watch console and network, manage dev servers, replay any earlier tool call by its history index, and record reproduction sequences that verify a fix. Use whenever a task involves running or debugging a live app, reproducing or verifying a bug, re-driving setup you already did (relaunching, re-logging in, refilling a form), or the user mentions breakpoints, Chrome DevTools, CDP, replay sequences, or devharness tools (launchChrome, navigate, breakpoint, inspect, replay, server, issues, etc.).
|
|
4
4
|
compatibility: Requires the devharness MCP server to be connected (tools such as launchChrome, breakpoint, inspect, replay, server, issues). The shell commands need `devharness` on PATH (`npm i -g devharness`); without it use `npx -y devharness@<version> <command>`. Previously published as cdp-tools-mcp.
|
|
5
|
-
version: 0.9.
|
|
5
|
+
version: 0.9.15
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# devharness
|
|
@@ -65,6 +65,7 @@ runs against (see the skill's Quick Start).
|
|
|
65
65
|
|
|
66
66
|
**Issues**: `issues` (actions: list, create, workOn, resolve, acknowledge, comment, publish, sync, import, link, pullSequence)
|
|
67
67
|
- `create`/`comment`: track bugs and features as Markdown issues, optionally linked to a replay sequence
|
|
68
|
+
- `list`: `search` matches body and comment text. A listing holding one issue renders it in full, so `issues({ action: 'list', id: N })` returns body, labels, comments and timestamps and leaves the issue's own status and timestamps untouched - reading an issue does not need `workOn`
|
|
68
69
|
- `workOn`: start on an issue, auto-replaying its linked sequence
|
|
69
70
|
- **Comment as you go.** When working an issue, `comment` on it at the start (what you're about to change and why) and again when done (what you actually changed, files touched, tests added, and anything you found that contradicts the issue as written). The issue becomes the durable record - someone reviewing later reads the timeline, not your diff. Comment on surprises too: a repro that doesn't reproduce, a root cause elsewhere, or a fix you rejected and why
|
|
70
71
|
- `resolve` is **human-gated**: it opens a browser overlay and only a person clicking Fixed/Not Fixed can close the issue. Don't call it unattended - it will wait ~150s and then fail with `ISSUES_RESOLVE_TIMEOUT`. Record what you found with `comment` and ask the user to run `resolve` themselves
|