devharness 0.9.7 → 0.9.8
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/network-monitor.d.ts.map +1 -1
- package/build/network-monitor.js +16 -21
- package/build/network-monitor.js.map +1 -1
- package/build/network-monitor.test.d.ts +11 -0
- package/build/network-monitor.test.d.ts.map +1 -0
- package/build/network-monitor.test.js +101 -0
- package/build/network-monitor.test.js.map +1 -0
- package/package.json +2 -1
- package/plugin/skills/devharness/SKILL.md +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-monitor.d.ts","sourceRoot":"","sources":["../src/network-monitor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAA6B,MAAM,gBAAgB,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA2C;IAC1D;;;;;OAKG;IACH,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,QAAQ,CAAa;IAC7B,mFAAmF;IACnF,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAgD;IAChE,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAsB;IAE9C;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IA0BjC;;;;;;;;;;;;;OAaG;YACW,qBAAqB;
|
|
1
|
+
{"version":3,"file":"network-monitor.d.ts","sourceRoot":"","sources":["../src/network-monitor.ts"],"names":[],"mappings":"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"}
|
package/build/network-monitor.js
CHANGED
|
@@ -86,28 +86,23 @@ export class NetworkMonitor {
|
|
|
86
86
|
// emits nothing on the page session, so each worker needs its own session
|
|
87
87
|
// with Network enabled. waitForDebuggerOnStart holds the worker before its
|
|
88
88
|
// first line runs - otherwise a socket opened at worker boot is missed.
|
|
89
|
-
client.on('Target.attachedToTarget',
|
|
89
|
+
client.on('Target.attachedToTarget', (e) => {
|
|
90
|
+
// The child session is created before this event is dispatched, so no
|
|
91
|
+
// session here means the connection is gone and nothing can be sent.
|
|
90
92
|
const child = client.connection?.()?.session(e.sessionId);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
// monitoring - it stops the worker existing, and an app whose sync
|
|
105
|
-
// lives in that worker simply never starts.
|
|
106
|
-
if (e.waitingForDebugger) {
|
|
107
|
-
const resume = child ?? client;
|
|
108
|
-
await resume.send('Runtime.runIfWaitingForDebugger', child ? undefined : { sessionId: e.sessionId })
|
|
109
|
-
.catch(() => { });
|
|
110
|
-
}
|
|
93
|
+
if (!child)
|
|
94
|
+
return;
|
|
95
|
+
// Listeners bind before either command below, both of which only
|
|
96
|
+
// register handlers. An event landing between enable and bind is lost.
|
|
97
|
+
this.liveSessions.add(e.sessionId);
|
|
98
|
+
this.bindSocketEvents(child, String(e.targetInfo?.type || 'worker'), e.sessionId);
|
|
99
|
+
// Both commands go out in one turn. CDP holds per-session order, so
|
|
100
|
+
// Network is on before the target's first line runs. Awaiting the enable
|
|
101
|
+
// deadlocks a service worker: its response arrives only once the target
|
|
102
|
+
// runs, and the target runs only on the resume below.
|
|
103
|
+
void child.send('Network.enable').catch(() => { });
|
|
104
|
+
if (e.waitingForDebugger) {
|
|
105
|
+
void child.send('Runtime.runIfWaitingForDebugger').catch(() => { });
|
|
111
106
|
}
|
|
112
107
|
});
|
|
113
108
|
// A target that goes away takes its sockets with it and delivers no
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-monitor.js","sourceRoot":"","sources":["../src/network-monitor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoEH,MAAM,OAAO,cAAc;IACjB,OAAO,GAAiC,IAAI,GAAG,EAAE,CAAC;IAC1D;;;;;OAKG;IACK,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;IACtC,QAAQ,GAAQ,IAAI,CAAC;IAC7B,mFAAmF;IAC3E,MAAM,GAAQ,IAAI,CAAC;IACnB,QAAQ,GAAsC,IAAI,GAAG,EAAE,CAAC;IACxD,gBAAgB,GAAG,CAAC,CAAC;IACrB,WAAW,GAAG,IAAI,CAAC;IACnB,YAAY,GAAG,KAAK,CAAC;IACrB,gBAAgB,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAE9C;;OAEG;IACH,eAAe,CAAC,IAAU;QACxB,0DAA0D;QAC1D,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAEzC,2BAA2B;QAC3B,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAoB,EAAE,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,QAAsB,EAAE,EAAE;YACnD,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,OAAoB,EAAE,EAAE;YAChD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,2EAA2E;QAC3E,uEAAuE;QACvE,KAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,KAAK,CAAC,qBAAqB,CAAC,IAAU;QAC5C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO;QAClD,0EAA0E;QAC1E,gBAAgB;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;YAC7E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzF,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,MAAM,GAAQ,MAAO,IAAY,CAAC,gBAAgB,EAAE,CAAC;YAC3D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YACvB,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpC,uEAAuE;YACvE,8DAA8D;YAC9D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAE9C,0EAA0E;YAC1E,0EAA0E;YAC1E,2EAA2E;YAC3E,wEAAwE;YACxE,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"network-monitor.js","sourceRoot":"","sources":["../src/network-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-attach holds every target related to the page before its first line, so
|
|
3
|
+
* the resume decides whether the target ever runs. On a service worker target
|
|
4
|
+
* `Network.enable` responds only once the target runs, and the target runs only
|
|
5
|
+
* on `Runtime.runIfWaitingForDebugger` - awaiting the enable before sending the
|
|
6
|
+
* resume deadlocks the registration that started the worker. These pin the
|
|
7
|
+
* resume to the same turn as the attach, and pin it to the child session: sent
|
|
8
|
+
* on the page session it lands on the page and leaves the child held.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=network-monitor.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-monitor.test.d.ts","sourceRoot":"","sources":["../src/network-monitor.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-attach holds every target related to the page before its first line, so
|
|
3
|
+
* the resume decides whether the target ever runs. On a service worker target
|
|
4
|
+
* `Network.enable` responds only once the target runs, and the target runs only
|
|
5
|
+
* on `Runtime.runIfWaitingForDebugger` - awaiting the enable before sending the
|
|
6
|
+
* resume deadlocks the registration that started the worker. These pin the
|
|
7
|
+
* resume to the same turn as the attach, and pin it to the child session: sent
|
|
8
|
+
* on the page session it lands on the page and leaves the child held.
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, expect } from 'vitest';
|
|
11
|
+
import { NetworkMonitor } from './network-monitor.js';
|
|
12
|
+
/** `hangOn` never settles, standing in for a held target's Network.enable. */
|
|
13
|
+
function fakeSession(hangOn) {
|
|
14
|
+
const session = {
|
|
15
|
+
sent: [],
|
|
16
|
+
handlers: new Map(),
|
|
17
|
+
emit(event, payload) {
|
|
18
|
+
session.handlers.get(event)?.(payload);
|
|
19
|
+
},
|
|
20
|
+
send(method, params) {
|
|
21
|
+
session.sent.push({ method, params });
|
|
22
|
+
if (method === hangOn)
|
|
23
|
+
return new Promise(() => { });
|
|
24
|
+
return Promise.resolve({});
|
|
25
|
+
},
|
|
26
|
+
on(event, handler) {
|
|
27
|
+
session.handlers.set(event, handler);
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
return session;
|
|
31
|
+
}
|
|
32
|
+
function fakePage(pageSession, children) {
|
|
33
|
+
// `connection()` and `session()` are read as a synchronous chain by the
|
|
34
|
+
// handler under test, so neither may return a promise.
|
|
35
|
+
pageSession.connection = () => ({
|
|
36
|
+
session: (id) => children.get(id) ?? null,
|
|
37
|
+
});
|
|
38
|
+
return {
|
|
39
|
+
on() { },
|
|
40
|
+
removeAllListeners() { },
|
|
41
|
+
async createCDPSession() { return pageSession; },
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** startSocketMonitoring registers the attach handler behind two awaits. */
|
|
45
|
+
async function flush() {
|
|
46
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
47
|
+
}
|
|
48
|
+
function attachEvent(sessionId, type, waitingForDebugger) {
|
|
49
|
+
return {
|
|
50
|
+
sessionId,
|
|
51
|
+
waitingForDebugger,
|
|
52
|
+
targetInfo: { type, targetId: `t-${sessionId}`, url: `http://localhost/${type}.js` },
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
describe('NetworkMonitor auto-attach resume', () => {
|
|
56
|
+
it('resumes a held target whose Network.enable never responds', async () => {
|
|
57
|
+
const pageSession = fakeSession();
|
|
58
|
+
const child = fakeSession('Network.enable');
|
|
59
|
+
const children = new Map([['sw-1', child]]);
|
|
60
|
+
const monitor = new NetworkMonitor();
|
|
61
|
+
monitor.startMonitoring(fakePage(pageSession, children));
|
|
62
|
+
await flush();
|
|
63
|
+
pageSession.emit('Target.attachedToTarget', attachEvent('sw-1', 'service_worker', true));
|
|
64
|
+
expect(child.sent.map((c) => c.method)).toContain('Runtime.runIfWaitingForDebugger');
|
|
65
|
+
});
|
|
66
|
+
it('sends the resume on the child session, never on the page session', async () => {
|
|
67
|
+
const pageSession = fakeSession();
|
|
68
|
+
const child = fakeSession('Network.enable');
|
|
69
|
+
const monitor = new NetworkMonitor();
|
|
70
|
+
monitor.startMonitoring(fakePage(pageSession, new Map([['sw-1', child]])));
|
|
71
|
+
await flush();
|
|
72
|
+
pageSession.emit('Target.attachedToTarget', attachEvent('sw-1', 'service_worker', true));
|
|
73
|
+
const resume = child.sent.find((c) => c.method === 'Runtime.runIfWaitingForDebugger');
|
|
74
|
+
expect(resume).toBeDefined();
|
|
75
|
+
expect(resume?.params).toBeUndefined();
|
|
76
|
+
expect(pageSession.sent.map((c) => c.method)).not.toContain('Runtime.runIfWaitingForDebugger');
|
|
77
|
+
});
|
|
78
|
+
it('records a socket opened on a held target', async () => {
|
|
79
|
+
const pageSession = fakeSession();
|
|
80
|
+
const child = fakeSession('Network.enable');
|
|
81
|
+
const monitor = new NetworkMonitor();
|
|
82
|
+
monitor.startMonitoring(fakePage(pageSession, new Map([['sw-1', child]])));
|
|
83
|
+
await flush();
|
|
84
|
+
pageSession.emit('Target.attachedToTarget', attachEvent('sw-1', 'service_worker', true));
|
|
85
|
+
child.emit('Network.webSocketCreated', { requestId: '1', url: 'wss://example.test/sync' });
|
|
86
|
+
const sockets = monitor.getSockets();
|
|
87
|
+
expect(sockets).toHaveLength(1);
|
|
88
|
+
expect(sockets[0].target).toBe('service_worker');
|
|
89
|
+
expect(sockets[0].sessionId).toBe('sw-1');
|
|
90
|
+
});
|
|
91
|
+
it('sends no resume for a target that is not held', async () => {
|
|
92
|
+
const pageSession = fakeSession();
|
|
93
|
+
const child = fakeSession();
|
|
94
|
+
const monitor = new NetworkMonitor();
|
|
95
|
+
monitor.startMonitoring(fakePage(pageSession, new Map([['w-1', child]])));
|
|
96
|
+
await flush();
|
|
97
|
+
pageSession.emit('Target.attachedToTarget', attachEvent('w-1', 'worker', false));
|
|
98
|
+
expect(child.sent.map((c) => c.method)).toEqual(['Network.enable']);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=network-monitor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-monitor.test.js","sourceRoot":"","sources":["../src/network-monitor.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devharness",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.8",
|
|
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",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"test:run": "vitest run",
|
|
22
22
|
"test:coverage": "vitest run --coverage",
|
|
23
23
|
"stress:suspend": "node scripts/stress-suspend.mjs",
|
|
24
|
+
"check:targets": "node scripts/check-target-resume.mjs",
|
|
24
25
|
"prepublishOnly": "npm run test:run && npm run build:verify",
|
|
25
26
|
"version": "node scripts/sync-skill-version.mjs",
|
|
26
27
|
"postversion": "git push && git push --tags"
|
|
@@ -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). Previously published as cdp-tools-mcp.
|
|
5
|
-
version: 0.9.
|
|
5
|
+
version: 0.9.8
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# devharness
|