@peekdev/mcp 0.1.0-alpha.2 → 0.1.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +178 -0
- package/dist/db/open.d.ts +19 -1
- package/dist/db/open.d.ts.map +1 -1
- package/dist/db/open.js +25 -1
- package/dist/db/open.js.map +1 -1
- package/dist/entrypoint.d.ts +8 -0
- package/dist/entrypoint.d.ts.map +1 -0
- package/dist/entrypoint.js +33 -0
- package/dist/entrypoint.js.map +1 -0
- package/dist/mcp/action-schema.d.ts +156 -0
- package/dist/mcp/action-schema.d.ts.map +1 -1
- package/dist/mcp/action-schema.js +69 -0
- package/dist/mcp/action-schema.js.map +1 -1
- package/dist/mcp/event-blobs.d.ts +12 -2
- package/dist/mcp/event-blobs.d.ts.map +1 -1
- package/dist/mcp/event-blobs.js +55 -6
- package/dist/mcp/event-blobs.js.map +1 -1
- package/dist/mcp/event-walker.d.ts +30 -0
- package/dist/mcp/event-walker.d.ts.map +1 -1
- package/dist/mcp/event-walker.js +67 -1
- package/dist/mcp/event-walker.js.map +1 -1
- package/dist/mcp/host-bridge.d.ts +50 -1
- package/dist/mcp/host-bridge.d.ts.map +1 -1
- package/dist/mcp/host-bridge.js +133 -0
- package/dist/mcp/host-bridge.js.map +1 -1
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +11 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/playwright-repro.d.ts.map +1 -1
- package/dist/mcp/playwright-repro.js +58 -9
- package/dist/mcp/playwright-repro.js.map +1 -1
- package/dist/mcp/server.d.ts +3 -2
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +301 -63
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/summary.d.ts +7 -0
- package/dist/mcp/summary.d.ts.map +1 -1
- package/dist/mcp/summary.js +7 -1
- package/dist/mcp/summary.js.map +1 -1
- package/dist/native-host/action-protocol.d.ts +15 -2
- package/dist/native-host/action-protocol.d.ts.map +1 -1
- package/dist/native-host/audit.d.ts +1 -1
- package/dist/native-host/audit.d.ts.map +1 -1
- package/dist/native-host/audit.js +1 -1
- package/dist/native-host/audit.js.map +1 -1
- package/dist/native-host/host-socket.d.ts +137 -0
- package/dist/native-host/host-socket.d.ts.map +1 -0
- package/dist/native-host/host-socket.js +369 -0
- package/dist/native-host/host-socket.js.map +1 -0
- package/dist/native-host/host.d.ts +11 -0
- package/dist/native-host/host.d.ts.map +1 -1
- package/dist/native-host/host.js +54 -0
- package/dist/native-host/host.js.map +1 -1
- package/dist/native-host/ingest.js +4 -4
- package/dist/native-host/ingest.js.map +1 -1
- package/dist/native-host/installer.d.ts +21 -0
- package/dist/native-host/installer.d.ts.map +1 -1
- package/dist/native-host/installer.js +64 -2
- package/dist/native-host/installer.js.map +1 -1
- package/dist/native-host/manifest.d.ts +7 -2
- package/dist/native-host/manifest.d.ts.map +1 -1
- package/dist/native-host/manifest.js +29 -15
- package/dist/native-host/manifest.js.map +1 -1
- package/dist/native-host/socket-path.d.ts +10 -0
- package/dist/native-host/socket-path.d.ts.map +1 -0
- package/dist/native-host/socket-path.js +31 -0
- package/dist/native-host/socket-path.js.map +1 -0
- package/dist/postinstall.d.ts.map +1 -1
- package/dist/postinstall.js +15 -15
- package/dist/postinstall.js.map +1 -1
- package/package.json +34 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-blobs.d.ts","sourceRoot":"","sources":["../../src/mcp/event-blobs.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGtE;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED,uEAAuE;AACvE,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED
|
|
1
|
+
{"version":3,"file":"event-blobs.d.ts","sourceRoot":"","sources":["../../src/mcp/event-blobs.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGtE;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED,uEAAuE;AACvE,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,MAAM,CAO5F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,OAAO,GAAE,MAAyB,GACjC,aAAa,EAAE,CAajB"}
|
package/dist/mcp/event-blobs.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// (get_user_action_before_error, get_dom_snapshot, query_dom_history,
|
|
6
6
|
// generate_playwright_repro) read the blob through here and walk the decoded
|
|
7
7
|
// stream — the console/network tools read the structured SQL tables directly.
|
|
8
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
8
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
9
9
|
import { isAbsolute, join } from 'node:path';
|
|
10
10
|
import { decompress } from '@cubenest/rrweb-core';
|
|
11
11
|
import { peekHomeDir } from '../db/open.js';
|
|
@@ -30,15 +30,30 @@ export function rrwebEventsDir() {
|
|
|
30
30
|
* Resolve a `sessions.events_blob_path` value to an absolute path. The column
|
|
31
31
|
* stores a path relative to {@link rrwebEventsDir}; an absolute value (older
|
|
32
32
|
* rows / tests) is honored as-is.
|
|
33
|
+
*
|
|
34
|
+
* Pre-alpha.10 rows store the path as `rrweb-events/<sessionId>` (a duplicated
|
|
35
|
+
* prefix relative to {@link peekHomeDir} instead of {@link rrwebEventsDir}).
|
|
36
|
+
* Strip that one specific leading segment so the legacy and current layouts
|
|
37
|
+
* resolve to the same on-disk directory.
|
|
33
38
|
*/
|
|
34
39
|
export function resolveBlobPath(blobPath, baseDir = rrwebEventsDir()) {
|
|
35
|
-
|
|
40
|
+
if (isAbsolute(blobPath))
|
|
41
|
+
return blobPath;
|
|
42
|
+
const trimmed = blobPath.startsWith('rrweb-events/') || blobPath.startsWith('rrweb-events\\')
|
|
43
|
+
? blobPath.slice('rrweb-events/'.length)
|
|
44
|
+
: blobPath;
|
|
45
|
+
return join(baseDir, trimmed);
|
|
36
46
|
}
|
|
37
47
|
/**
|
|
38
48
|
* Read + gunzip + JSON-parse a session's event blob into the rrweb event array.
|
|
39
49
|
* Returns an empty array when the session has no blob path recorded or the
|
|
40
|
-
* blob file is missing (e.g. an active session before its first flush, or
|
|
41
|
-
* blob pruned by retention) — callers degrade to "no events" rather than throw.
|
|
50
|
+
* blob file/dir is missing (e.g. an active session before its first flush, or
|
|
51
|
+
* a blob pruned by retention) — callers degrade to "no events" rather than throw.
|
|
52
|
+
*
|
|
53
|
+
* The native host writes one gzipped chunk per `session.append` batch at
|
|
54
|
+
* `<events-dir>/<sessionId>/<seq>.json.gz`, and stores `<events-dir>/<sessionId>`
|
|
55
|
+
* (a directory) in `sessions.events_blob_path`. Older rows / tests may instead
|
|
56
|
+
* point at a single `.gz` file — both layouts are honored here.
|
|
42
57
|
*
|
|
43
58
|
* @param blobPath the `sessions.events_blob_path` value (relative or absolute)
|
|
44
59
|
* @param baseDir override the ~/.peek/rrweb-events base (tests)
|
|
@@ -51,7 +66,18 @@ export function loadSessionEvents(blobPath, baseDir = rrwebEventsDir()) {
|
|
|
51
66
|
if (!existsSync(abs)) {
|
|
52
67
|
return [];
|
|
53
68
|
}
|
|
54
|
-
const
|
|
69
|
+
const stats = statSync(abs);
|
|
70
|
+
if (stats.isDirectory()) {
|
|
71
|
+
return loadChunkedDir(abs, blobPath);
|
|
72
|
+
}
|
|
73
|
+
return decodeOne(abs, blobPath);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Decode a single gzipped chunk file into its event array. Shared by both the
|
|
77
|
+
* legacy single-file blob layout and the per-chunk reads from {@link loadChunkedDir}.
|
|
78
|
+
*/
|
|
79
|
+
function decodeOne(absPath, displayPath) {
|
|
80
|
+
const bytes = readFileSync(absPath);
|
|
55
81
|
try {
|
|
56
82
|
// readFileSync returns a Node Buffer; decompress wants a Uint8Array view.
|
|
57
83
|
// decompress throws (fflate gzip error / non-array payload) on a corrupt or
|
|
@@ -59,7 +85,30 @@ export function loadSessionEvents(blobPath, baseDir = rrwebEventsDir()) {
|
|
|
59
85
|
return decompress(new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength));
|
|
60
86
|
}
|
|
61
87
|
catch (err) {
|
|
62
|
-
throw new SessionEventsError(`Failed to decode the event blob at '${
|
|
88
|
+
throw new SessionEventsError(`Failed to decode the event blob at '${displayPath}' (corrupt or truncated recording).`, { cause: err });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Walk `<dir>/<seq>.json.gz` chunk files in numeric seq order, decode each, and
|
|
93
|
+
* concatenate their event arrays. An empty directory (no chunks flushed yet) is
|
|
94
|
+
* a normal empty result, not an error.
|
|
95
|
+
*/
|
|
96
|
+
function loadChunkedDir(absDir, displayPath) {
|
|
97
|
+
const entries = readdirSync(absDir);
|
|
98
|
+
const seqs = [];
|
|
99
|
+
for (const name of entries) {
|
|
100
|
+
const match = name.match(/^(\d+)\.json\.gz$/);
|
|
101
|
+
if (match?.[1] === undefined)
|
|
102
|
+
continue;
|
|
103
|
+
seqs.push({ seq: Number(match[1]), file: name });
|
|
104
|
+
}
|
|
105
|
+
seqs.sort((a, b) => a.seq - b.seq);
|
|
106
|
+
const events = [];
|
|
107
|
+
for (const { file } of seqs) {
|
|
108
|
+
const chunk = decodeOne(join(absDir, file), `${displayPath}/${file}`);
|
|
109
|
+
for (const e of chunk)
|
|
110
|
+
events.push(e);
|
|
63
111
|
}
|
|
112
|
+
return events;
|
|
64
113
|
}
|
|
65
114
|
//# sourceMappingURL=event-blobs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-blobs.js","sourceRoot":"","sources":["../../src/mcp/event-blobs.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,+EAA+E;AAC/E,2EAA2E;AAC3E,yDAAyD;AACzD,sEAAsE;AACtE,6EAA6E;AAC7E,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"event-blobs.js","sourceRoot":"","sources":["../../src/mcp/event-blobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,12 @@ export interface UserAction {
|
|
|
9
9
|
readonly selector?: string;
|
|
10
10
|
/** For input actions: the (already-masked-by-capture) value typed. */
|
|
11
11
|
readonly value?: string;
|
|
12
|
+
/** For input actions: the lowercase HTML tag name of the target element (e.g. 'select', 'input', 'textarea'). */
|
|
13
|
+
readonly elementTag?: string;
|
|
14
|
+
/** For input elements: the lowercased `type` attribute (e.g. 'checkbox', 'radio', 'hidden', 'text') when present. */
|
|
15
|
+
readonly inputType?: string;
|
|
16
|
+
/** For input elements: the checked state at the time of the input event (checkbox/radio). */
|
|
17
|
+
readonly checked?: boolean;
|
|
12
18
|
/** For navigations: the destination URL (Meta event href). */
|
|
13
19
|
readonly url?: string;
|
|
14
20
|
/** A short human description, e.g. `click button.submit`. */
|
|
@@ -25,6 +31,30 @@ export interface UserAction {
|
|
|
25
31
|
* — they're noise for repro/explanation and blow the token budget.
|
|
26
32
|
*/
|
|
27
33
|
export declare function extractUserActions(events: eventWithTime[]): UserAction[];
|
|
34
|
+
/**
|
|
35
|
+
* Max gap (ms) between two same-selector clicks for them to be treated as one
|
|
36
|
+
* (a pointer double-fire / double-click). Clicks spaced wider are intentional
|
|
37
|
+
* repeats and kept.
|
|
38
|
+
*/
|
|
39
|
+
export declare const COALESCE_CLICK_WINDOW_MS = 700;
|
|
40
|
+
/**
|
|
41
|
+
* Collapse recording artifacts into the actions a human would describe, in a
|
|
42
|
+
* single left-to-right pass comparing each action to the previously-KEPT one:
|
|
43
|
+
*
|
|
44
|
+
* • navigate dedup — drop a navigate whose url matches the immediately
|
|
45
|
+
* preceding kept navigate (the duplicate goto rrweb often emits). A
|
|
46
|
+
* re-navigation separated by other actions is a real one and kept.
|
|
47
|
+
* • click dedup — drop a click whose selector matches the immediately
|
|
48
|
+
* preceding kept click within {@link COALESCE_CLICK_WINDOW_MS} (double-fire
|
|
49
|
+
* / double-click). Same-selector clicks spaced wider, or with another
|
|
50
|
+
* action between, are kept.
|
|
51
|
+
* • input coalesce — replace the preceding kept input on the same selector
|
|
52
|
+
* with the current one, collapsing a typing burst to its final value/checked
|
|
53
|
+
* state.
|
|
54
|
+
*
|
|
55
|
+
* Returns a new array; inputs are not mutated and order is preserved.
|
|
56
|
+
*/
|
|
57
|
+
export declare function coalesceActions(actions: UserAction[]): UserAction[];
|
|
28
58
|
/** The user actions strictly before `errorTs`, most-recent-last, capped to `window`. */
|
|
29
59
|
export declare function userActionsBeforeError(events: eventWithTime[], errorTs: number, window?: number): UserAction[];
|
|
30
60
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-walker.d.ts","sourceRoot":"","sources":["../../src/mcp/event-walker.ts"],"names":[],"mappings":"AAoBA,OAAO,EAOL,KAAK,aAAa,EAKlB,KAAK,oBAAoB,EAE1B,MAAM,kBAAkB,CAAC;AAS1B,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IAC9C,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"event-walker.d.ts","sourceRoot":"","sources":["../../src/mcp/event-walker.ts"],"names":[],"mappings":"AAoBA,OAAO,EAOL,KAAK,aAAa,EAKlB,KAAK,oBAAoB,EAE1B,MAAM,kBAAkB,CAAC;AAS1B,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IAC9C,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,iHAAiH;IACjH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,qHAAqH;IACrH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,CA6ExE;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAuCnE;AAkBD,wFAAwF;AACxF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,SAAK,GACV,UAAU,EAAE,CAGd;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EAAE,EACvB,EAAE,EAAE,MAAM,EACV,QAAQ,CAAC,EAAE,MAAM,GAChB,WAAW,GAAG,SAAS,CAkDzB;AAkGD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,SAAI,GAAG,MAAM,CAoC3E;AAiCD,+DAA+D;AAC/D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAAC;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,GACnC,SAAS,EAAE,CAmDb"}
|
package/dist/mcp/event-walker.js
CHANGED
|
@@ -81,18 +81,84 @@ export function extractUserActions(events) {
|
|
|
81
81
|
const selector = resolveSelector(input.id);
|
|
82
82
|
// rrweb already masks values per the recorder config; we surface as-is.
|
|
83
83
|
const value = typeof input.text === 'string' ? input.text : '';
|
|
84
|
+
const nodeEntry = index?.get(input.id);
|
|
85
|
+
const isElement = nodeEntry?.node?.type === NodeType.Element;
|
|
86
|
+
const elementTag = isElement
|
|
87
|
+
? nodeEntry.node.tagName.toLowerCase()
|
|
88
|
+
: undefined;
|
|
89
|
+
const rawType = isElement
|
|
90
|
+
? nodeEntry.node.attributes?.type
|
|
91
|
+
: undefined;
|
|
92
|
+
const inputType = typeof rawType === 'string' ? rawType.toLowerCase() : undefined;
|
|
93
|
+
const checked = typeof input.isChecked === 'boolean' ? input.isChecked : undefined;
|
|
84
94
|
actions.push({
|
|
85
95
|
type: 'input',
|
|
86
96
|
ts: e.timestamp,
|
|
87
97
|
...(selector !== undefined ? { selector } : {}),
|
|
88
98
|
value,
|
|
99
|
+
...(elementTag !== undefined ? { elementTag } : {}),
|
|
100
|
+
...(inputType !== undefined ? { inputType } : {}),
|
|
101
|
+
...(checked !== undefined ? { checked } : {}),
|
|
89
102
|
summary: selector !== undefined
|
|
90
103
|
? `input ${selector} = ${truncate(value, 40)}`
|
|
91
104
|
: `input node#${input.id} = ${truncate(value, 40)}`,
|
|
92
105
|
});
|
|
93
106
|
}
|
|
94
107
|
}
|
|
95
|
-
return actions;
|
|
108
|
+
return coalesceActions(actions);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Max gap (ms) between two same-selector clicks for them to be treated as one
|
|
112
|
+
* (a pointer double-fire / double-click). Clicks spaced wider are intentional
|
|
113
|
+
* repeats and kept.
|
|
114
|
+
*/
|
|
115
|
+
export const COALESCE_CLICK_WINDOW_MS = 700;
|
|
116
|
+
/**
|
|
117
|
+
* Collapse recording artifacts into the actions a human would describe, in a
|
|
118
|
+
* single left-to-right pass comparing each action to the previously-KEPT one:
|
|
119
|
+
*
|
|
120
|
+
* • navigate dedup — drop a navigate whose url matches the immediately
|
|
121
|
+
* preceding kept navigate (the duplicate goto rrweb often emits). A
|
|
122
|
+
* re-navigation separated by other actions is a real one and kept.
|
|
123
|
+
* • click dedup — drop a click whose selector matches the immediately
|
|
124
|
+
* preceding kept click within {@link COALESCE_CLICK_WINDOW_MS} (double-fire
|
|
125
|
+
* / double-click). Same-selector clicks spaced wider, or with another
|
|
126
|
+
* action between, are kept.
|
|
127
|
+
* • input coalesce — replace the preceding kept input on the same selector
|
|
128
|
+
* with the current one, collapsing a typing burst to its final value/checked
|
|
129
|
+
* state.
|
|
130
|
+
*
|
|
131
|
+
* Returns a new array; inputs are not mutated and order is preserved.
|
|
132
|
+
*/
|
|
133
|
+
export function coalesceActions(actions) {
|
|
134
|
+
const kept = [];
|
|
135
|
+
for (const action of actions) {
|
|
136
|
+
const prev = kept[kept.length - 1];
|
|
137
|
+
if (prev) {
|
|
138
|
+
if (action.type === 'navigate' &&
|
|
139
|
+
prev.type === 'navigate' &&
|
|
140
|
+
action.url !== undefined &&
|
|
141
|
+
action.url === prev.url) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
if (action.type === 'click' &&
|
|
145
|
+
prev.type === 'click' &&
|
|
146
|
+
action.selector !== undefined &&
|
|
147
|
+
action.selector === prev.selector &&
|
|
148
|
+
action.ts - prev.ts <= COALESCE_CLICK_WINDOW_MS) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (action.type === 'input' &&
|
|
152
|
+
prev.type === 'input' &&
|
|
153
|
+
action.selector !== undefined &&
|
|
154
|
+
action.selector === prev.selector) {
|
|
155
|
+
kept[kept.length - 1] = action;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
kept.push(action);
|
|
160
|
+
}
|
|
161
|
+
return kept;
|
|
96
162
|
}
|
|
97
163
|
/** Fold a mutation's added nodes into the live index (best-effort, recursive). */
|
|
98
164
|
function foldAddsIntoIndex(index, adds) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-walker.js","sourceRoot":"","sources":["../../src/mcp/event-walker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"event-walker.js","sourceRoot":"","sources":["../../src/mcp/event-walker.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ export interface HostActionResponse {
|
|
|
26
26
|
/** verdict + result from the SW (see action-protocol.ts ActionResultMessage). */
|
|
27
27
|
readonly verdict: 'allow' | 'deny';
|
|
28
28
|
readonly result: 'ok' | 'denied' | 'error';
|
|
29
|
-
readonly approver: 'user' | 'allow-list-match' | 'level-4-auto';
|
|
29
|
+
readonly approver: 'user' | 'allow-list-match' | 'level-4-auto' | 'level-2-suggest';
|
|
30
30
|
readonly approvalMs?: number;
|
|
31
31
|
readonly destructiveTerm?: string;
|
|
32
32
|
readonly details?: unknown;
|
|
@@ -77,4 +77,53 @@ export declare class RegistryBackedHostBridge implements HostBridge {
|
|
|
77
77
|
/** Test helper: reject the first pending request. */
|
|
78
78
|
rejectNext(reason: unknown): boolean;
|
|
79
79
|
}
|
|
80
|
+
/** The minimal duplex surface the bridge needs — injectable for tests. */
|
|
81
|
+
interface SocketLike {
|
|
82
|
+
write(data: string): void;
|
|
83
|
+
on(ev: string, h: (...a: unknown[]) => void): void;
|
|
84
|
+
end(): void;
|
|
85
|
+
/** Optional: decode inbound bytes as UTF-8 (real net.Socket has it). */
|
|
86
|
+
setEncoding?(encoding: string): void;
|
|
87
|
+
/**
|
|
88
|
+
* Optional: forcibly close the underlying socket (item G). Real net.Socket
|
|
89
|
+
* has it. `#reset` calls this so the orphaned socket doesn't stay open.
|
|
90
|
+
*/
|
|
91
|
+
destroy?(): void;
|
|
92
|
+
/**
|
|
93
|
+
* Optional: detach the data/error/close listeners (item G) so a dropped
|
|
94
|
+
* socket doesn't leak its handlers. Real net.Socket (EventEmitter) has it.
|
|
95
|
+
*/
|
|
96
|
+
removeAllListeners?(): void;
|
|
97
|
+
}
|
|
98
|
+
export interface LocalSocketHostBridgeDeps {
|
|
99
|
+
/** Override the socket / named-pipe path (tests + alternate PEEK_HOME). */
|
|
100
|
+
socketPath?: string;
|
|
101
|
+
/** Injectable connection factory; defaults to `net.connect(path)`. */
|
|
102
|
+
connect?: (path: string) => SocketLike;
|
|
103
|
+
/** Injectable correlation registry (tests). */
|
|
104
|
+
registry?: RequestRegistry;
|
|
105
|
+
/** Max bytes for a single inbound line before the connection is dropped. */
|
|
106
|
+
maxLineBytes?: number;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The production bridge: a newline-delimited-JSON client over the local
|
|
110
|
+
* `~/.peek/host.sock` (Unix domain socket) / `\\.\pipe\peek-host` (Windows).
|
|
111
|
+
*
|
|
112
|
+
* Wire frame (both directions): one JSON object per line, `\n`-terminated.
|
|
113
|
+
* client → host: { kind: 'act.request', id, payload: HostActionRequest }
|
|
114
|
+
* host → client: { kind: 'act.response', id, payload: HostActionResponse }
|
|
115
|
+
*
|
|
116
|
+
* Correlation reuses {@link RequestRegistry} (id ↔ pending promise) exactly like
|
|
117
|
+
* {@link RegistryBackedHostBridge}; only the transport differs. The connection
|
|
118
|
+
* is opened lazily on the first request and reused. A connect throw, a socket
|
|
119
|
+
* `error`, or a timeout all resolve to a structured `deny`/`error` response —
|
|
120
|
+
* fail-closed — so the MCP tool handler never sees a raw throw and the audit
|
|
121
|
+
* log still records the attempt.
|
|
122
|
+
*/
|
|
123
|
+
export declare class LocalSocketHostBridge implements HostBridge {
|
|
124
|
+
#private;
|
|
125
|
+
constructor(deps?: LocalSocketHostBridgeDeps);
|
|
126
|
+
request(req: HostActionRequest): Promise<HostActionResponse>;
|
|
127
|
+
}
|
|
128
|
+
export {};
|
|
80
129
|
//# sourceMappingURL=host-bridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-bridge.d.ts","sourceRoot":"","sources":["../../src/mcp/host-bridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"host-bridge.d.ts","sourceRoot":"","sources":["../../src/mcp/host-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/host-bridge.js
CHANGED
|
@@ -27,7 +27,9 @@
|
|
|
27
27
|
//
|
|
28
28
|
// When the IPC layer lands (3d-4 or 3e) we add a concrete
|
|
29
29
|
// `LocalSocketHostBridge` here; nothing else changes.
|
|
30
|
+
import * as net from 'node:net';
|
|
30
31
|
import { RequestRegistry } from '../native-host/request-registry.js';
|
|
32
|
+
import { hostSocketPath } from '../native-host/socket-path.js';
|
|
31
33
|
// 5 minutes — longer than any plausible Level-3 banner-decision window.
|
|
32
34
|
const DEFAULT_BRIDGE_TIMEOUT_MS = 5 * 60_000;
|
|
33
35
|
/**
|
|
@@ -85,4 +87,135 @@ export class RegistryBackedHostBridge {
|
|
|
85
87
|
return this.#registry.reject(entry.id, reason);
|
|
86
88
|
}
|
|
87
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Cap for a single newline-delimited frame on the bridge's read side. A
|
|
92
|
+
* well-behaved native host never sends a frame near this; the cap is a
|
|
93
|
+
* local-DoS guard so a malformed / hostile peer can't make the bridge buffer
|
|
94
|
+
* unbounded. 1 MiB mirrors the native-messaging host→ext frame cap.
|
|
95
|
+
*/
|
|
96
|
+
const DEFAULT_MAX_LINE_BYTES = 1024 * 1024;
|
|
97
|
+
/**
|
|
98
|
+
* The production bridge: a newline-delimited-JSON client over the local
|
|
99
|
+
* `~/.peek/host.sock` (Unix domain socket) / `\\.\pipe\peek-host` (Windows).
|
|
100
|
+
*
|
|
101
|
+
* Wire frame (both directions): one JSON object per line, `\n`-terminated.
|
|
102
|
+
* client → host: { kind: 'act.request', id, payload: HostActionRequest }
|
|
103
|
+
* host → client: { kind: 'act.response', id, payload: HostActionResponse }
|
|
104
|
+
*
|
|
105
|
+
* Correlation reuses {@link RequestRegistry} (id ↔ pending promise) exactly like
|
|
106
|
+
* {@link RegistryBackedHostBridge}; only the transport differs. The connection
|
|
107
|
+
* is opened lazily on the first request and reused. A connect throw, a socket
|
|
108
|
+
* `error`, or a timeout all resolve to a structured `deny`/`error` response —
|
|
109
|
+
* fail-closed — so the MCP tool handler never sees a raw throw and the audit
|
|
110
|
+
* log still records the attempt.
|
|
111
|
+
*/
|
|
112
|
+
export class LocalSocketHostBridge {
|
|
113
|
+
#registry;
|
|
114
|
+
#path;
|
|
115
|
+
#connect;
|
|
116
|
+
#maxLineBytes;
|
|
117
|
+
#sock;
|
|
118
|
+
#buf = '';
|
|
119
|
+
constructor(deps = {}) {
|
|
120
|
+
this.#registry = deps.registry ?? new RequestRegistry();
|
|
121
|
+
this.#path = deps.socketPath ?? hostSocketPath();
|
|
122
|
+
this.#connect = deps.connect ?? ((p) => net.connect(p));
|
|
123
|
+
this.#maxLineBytes = deps.maxLineBytes ?? DEFAULT_MAX_LINE_BYTES;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Drop the cached socket + clear the read buffer (reconnect on next request).
|
|
127
|
+
*
|
|
128
|
+
* Item G: DESTROY the live socket + remove its listeners BEFORE nulling the
|
|
129
|
+
* reference — otherwise the orphaned socket stays open with its
|
|
130
|
+
* data/error/close listeners attached (a socket + listener leak on every
|
|
131
|
+
* reconnect, and a late event from the dead socket could still mutate state).
|
|
132
|
+
* Item H: fail every in-flight request with a structured error so a closed /
|
|
133
|
+
* errored transport rejects awaiting tool calls PROMPTLY rather than leaving
|
|
134
|
+
* them hanging until the 5-minute registry timeout.
|
|
135
|
+
*/
|
|
136
|
+
#reset(reason) {
|
|
137
|
+
const sock = this.#sock;
|
|
138
|
+
this.#sock = undefined;
|
|
139
|
+
this.#buf = '';
|
|
140
|
+
if (sock) {
|
|
141
|
+
try {
|
|
142
|
+
sock.removeAllListeners?.();
|
|
143
|
+
sock.destroy?.();
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// A destroy/removeListeners throw must not mask the reset.
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Item H: reject all pending requests now (fail-closed) instead of waiting
|
|
150
|
+
// out the per-request timeout.
|
|
151
|
+
this.#registry.rejectAll(new Error(reason ?? 'peek: host socket connection closed'));
|
|
152
|
+
}
|
|
153
|
+
/** Open (once) + wire the framing reader. Throws if the connect throws. */
|
|
154
|
+
#ensure() {
|
|
155
|
+
if (this.#sock)
|
|
156
|
+
return this.#sock;
|
|
157
|
+
const s = this.#connect(this.#path);
|
|
158
|
+
// Item F: decode inbound bytes as UTF-8 (matches the server side) so a
|
|
159
|
+
// multibyte char split across two reads can't corrupt a frame. Real
|
|
160
|
+
// net.Socket has setEncoding; injected fakes may not.
|
|
161
|
+
s.setEncoding?.('utf8');
|
|
162
|
+
s.on('data', (chunk) => {
|
|
163
|
+
this.#buf += String(chunk);
|
|
164
|
+
// Item F: local-DoS guard. If the buffer grows past the cap WITHOUT a
|
|
165
|
+
// frame delimiter, a hostile/malformed peer is trying to make us buffer
|
|
166
|
+
// unbounded — drop the connection + clear the buffer (in-flight requests
|
|
167
|
+
// time out via the registry → fail-closed).
|
|
168
|
+
if (this.#buf.length > this.#maxLineBytes && this.#buf.indexOf('\n') < 0) {
|
|
169
|
+
this.#reset('peek: host socket frame exceeded the line cap');
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
let nl;
|
|
173
|
+
// biome-ignore lint/suspicious/noAssignInExpressions: idiomatic frame-drain loop
|
|
174
|
+
while ((nl = this.#buf.indexOf('\n')) >= 0) {
|
|
175
|
+
const line = this.#buf.slice(0, nl);
|
|
176
|
+
this.#buf = this.#buf.slice(nl + 1);
|
|
177
|
+
if (!line.trim())
|
|
178
|
+
continue;
|
|
179
|
+
if (line.length > this.#maxLineBytes)
|
|
180
|
+
continue; // oversized frame — drop it
|
|
181
|
+
try {
|
|
182
|
+
const m = JSON.parse(line);
|
|
183
|
+
if (m.kind === 'act.response' && typeof m.id === 'string') {
|
|
184
|
+
this.#registry.resolve(m.id, m.payload);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
// Drop a malformed frame; a single bad line must not wedge the bridge.
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
s.on('error', (err) => {
|
|
193
|
+
// Item H: drop the cached socket so the next request reconnects AND fail
|
|
194
|
+
// every in-flight request now (via #reset → registry.rejectAll), instead
|
|
195
|
+
// of letting them hang until the 5-minute per-request timeout.
|
|
196
|
+
this.#reset(`peek: host socket error — ${err instanceof Error ? err.message : 'connection error'}`);
|
|
197
|
+
});
|
|
198
|
+
s.on('close', () => {
|
|
199
|
+
this.#reset('peek: host socket closed');
|
|
200
|
+
});
|
|
201
|
+
this.#sock = s;
|
|
202
|
+
return s;
|
|
203
|
+
}
|
|
204
|
+
async request(req) {
|
|
205
|
+
try {
|
|
206
|
+
const sock = this.#ensure();
|
|
207
|
+
const { id, response } = this.#registry.create(req.timeoutMs ?? DEFAULT_BRIDGE_TIMEOUT_MS);
|
|
208
|
+
sock.write(`${JSON.stringify({ kind: 'act.request', id, payload: req })}\n`);
|
|
209
|
+
return await response;
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
return {
|
|
213
|
+
verdict: 'deny',
|
|
214
|
+
result: 'error',
|
|
215
|
+
approver: 'user',
|
|
216
|
+
error: err instanceof Error ? err.message : String(err),
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
88
221
|
//# sourceMappingURL=host-bridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-bridge.js","sourceRoot":"","sources":["../../src/mcp/host-bridge.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,qDAAqD;AACrD,EAAE;AACF,oEAAoE;AACpE,2EAA2E;AAC3E,yEAAyE;AACzE,+DAA+D;AAC/D,yEAAyE;AACzE,2DAA2D;AAC3D,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,8CAA8C;AAC9C,EAAE;AACF,yBAAyB;AACzB,uEAAuE;AACvE,gEAAgE;AAChE,6EAA6E;AAC7E,yEAAyE;AACzE,0EAA0E;AAC1E,iBAAiB;AACjB,yEAAyE;AACzE,wEAAwE;AACxE,gCAAgC;AAChC,EAAE;AACF,4DAA4D;AAC5D,wDAAwD;AAExD,OAAO,EAAE,eAAe,EAA4B,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"host-bridge.js","sourceRoot":"","sources":["../../src/mcp/host-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/index.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import { type CreatePeekMcpServerOptions } from './server.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* Start the peek MCP stdio server and resolve when the transport closes (the
|
|
4
4
|
* client disconnected — stdin EOF). The DB handle is released on close.
|
|
5
|
+
*
|
|
6
|
+
* In MCP mode we wire the {@link LocalSocketHostBridge} so act-tool calls reach
|
|
7
|
+
* the co-running native host over ~/.peek/host.sock (replacing the
|
|
8
|
+
* MissingHostBridge default that returns "bridge not wired"). The bridge
|
|
9
|
+
* fail-closes when the socket is unavailable — every act-tool call still goes
|
|
10
|
+
* through the audit log. A caller-supplied `hostBridge` (tests) wins.
|
|
5
11
|
*/
|
|
6
12
|
export declare function runMcpServer(options?: CreatePeekMcpServerOptions): Promise<void>;
|
|
7
13
|
export { createPeekMcpServer, PEEK_MCP_TOOLS, SERVER_NAME, type CreatePeekMcpServerOptions, type PeekMcpServer, } from './server.js';
|
package/dist/mcp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,0BAA0B,EAAuB,MAAM,aAAa,CAAC;AAEnF;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,0BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB1F;AAED,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,KAAK,0BAA0B,EAC/B,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -3,13 +3,23 @@
|
|
|
3
3
|
// exposes in v1. Invoked from src/index.ts when `peek-mcp` runs without
|
|
4
4
|
// --native-host and without a chrome-extension:// origin arg.
|
|
5
5
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
6
|
+
import { LocalSocketHostBridge } from './host-bridge.js';
|
|
6
7
|
import { createPeekMcpServer } from './server.js';
|
|
7
8
|
/**
|
|
8
9
|
* Start the peek MCP stdio server and resolve when the transport closes (the
|
|
9
10
|
* client disconnected — stdin EOF). The DB handle is released on close.
|
|
11
|
+
*
|
|
12
|
+
* In MCP mode we wire the {@link LocalSocketHostBridge} so act-tool calls reach
|
|
13
|
+
* the co-running native host over ~/.peek/host.sock (replacing the
|
|
14
|
+
* MissingHostBridge default that returns "bridge not wired"). The bridge
|
|
15
|
+
* fail-closes when the socket is unavailable — every act-tool call still goes
|
|
16
|
+
* through the audit log. A caller-supplied `hostBridge` (tests) wins.
|
|
10
17
|
*/
|
|
11
18
|
export async function runMcpServer(options = {}) {
|
|
12
|
-
const peek = createPeekMcpServer(
|
|
19
|
+
const peek = createPeekMcpServer({
|
|
20
|
+
hostBridge: new LocalSocketHostBridge(),
|
|
21
|
+
...options,
|
|
22
|
+
});
|
|
13
23
|
const transport = new StdioServerTransport();
|
|
14
24
|
// Resolve when the client disconnects (stdin EOF). McpServer.connect
|
|
15
25
|
// (Protocol.connect) PRESERVES and chains a pre-existing transport.onclose:
|
package/dist/mcp/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0EAA0E;AAC1E,wEAAwE;AACxE,8DAA8D;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAmC,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnF
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0EAA0E;AAC1E,wEAAwE;AACxE,8DAA8D;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAmC,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAsC,EAAE;IACzE,MAAM,IAAI,GAAG,mBAAmB,CAAC;QAC/B,UAAU,EAAE,IAAI,qBAAqB,EAAE;QACvC,GAAG,OAAO;KACX,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,qEAAqE;IACrE,4EAA4E;IAC5E,yEAAyE;IACzE,4EAA4E;IAC5E,8EAA8E;IAC9E,iCAAiC;IACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC3C,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAErC,8EAA8E;IAC9E,uEAAuE;IACvE,MAAM,MAAM,CAAC;AACf,CAAC;AAED,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,WAAW,GAGZ,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-repro.d.ts","sourceRoot":"","sources":["../../src/mcp/playwright-repro.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playwright-repro.d.ts","sourceRoot":"","sources":["../../src/mcp/playwright-repro.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAgED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAgDR"}
|