@ticktockbent/charlotte 0.6.1 → 0.6.3
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/CHANGELOG.md +36 -0
- package/README.md +2 -4
- package/dist/browser/browser-manager.d.ts +6 -1
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/browser-manager.js +69 -4
- package/dist/browser/browser-manager.js.map +1 -1
- package/dist/browser/cdp-session.d.ts +15 -0
- package/dist/browser/cdp-session.d.ts.map +1 -1
- package/dist/browser/cdp-session.js +62 -4
- package/dist/browser/cdp-session.js.map +1 -1
- package/dist/browser/page-manager.d.ts +9 -2
- package/dist/browser/page-manager.d.ts.map +1 -1
- package/dist/browser/page-manager.js +52 -1
- package/dist/browser/page-manager.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +16 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.js.map +1 -1
- package/dist/renderer/interactive-extractor.d.ts.map +1 -1
- package/dist/renderer/interactive-extractor.js.map +1 -1
- package/dist/renderer/structural-tree-extractor.d.ts.map +1 -1
- package/dist/renderer/structural-tree-extractor.js +5 -22
- package/dist/renderer/structural-tree-extractor.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/dialog.d.ts.map +1 -1
- package/dist/tools/dialog.js +1 -1
- package/dist/tools/dialog.js.map +1 -1
- package/dist/tools/interaction-helpers.d.ts +24 -9
- package/dist/tools/interaction-helpers.d.ts.map +1 -1
- package/dist/tools/interaction-helpers.js +79 -82
- package/dist/tools/interaction-helpers.js.map +1 -1
- package/dist/tools/interaction.d.ts.map +1 -1
- package/dist/tools/interaction.js +66 -46
- package/dist/tools/interaction.js.map +1 -1
- package/dist/tools/meta-tool.d.ts.map +1 -1
- package/dist/tools/meta-tool.js +12 -2
- package/dist/tools/meta-tool.js.map +1 -1
- package/dist/tools/monitoring.d.ts.map +1 -1
- package/dist/tools/monitoring.js +1 -1
- package/dist/tools/monitoring.js.map +1 -1
- package/dist/tools/navigation.d.ts.map +1 -1
- package/dist/tools/navigation.js +72 -32
- package/dist/tools/navigation.js.map +1 -1
- package/dist/tools/observation.d.ts.map +1 -1
- package/dist/tools/observation.js +83 -74
- package/dist/tools/observation.js.map +1 -1
- package/dist/tools/session.d.ts.map +1 -1
- package/dist/tools/session.js +161 -116
- package/dist/tools/session.js.map +1 -1
- package/dist/tools/tool-groups.d.ts +3 -3
- package/dist/tools/tool-groups.d.ts.map +1 -1
- package/dist/tools/tool-groups.js +51 -19
- package/dist/tools/tool-groups.js.map +1 -1
- package/dist/tools/tool-helpers.d.ts.map +1 -1
- package/dist/tools/tool-helpers.js +1 -3
- package/dist/tools/tool-helpers.js.map +1 -1
- package/dist/tools/wait-for.js.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,42 @@ All notable changes to Charlotte will be documented in this file.
|
|
|
6
6
|
|
|
7
7
|
<!-- Nothing yet -->
|
|
8
8
|
|
|
9
|
+
## [0.6.3] - 2026-04-17
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **Republished with correct `dist/` artifacts** — The v0.6.2 tarball on npm was packaged from a stale `dist/` directory and did not actually include the `--cdp-endpoint` CLI option, iframe interaction, or other v0.6.2 source changes, despite those features being present at the v0.6.2 git tag. v0.6.3 ships the same intended feature set with the correct compiled output. No source-level changes versus v0.6.2. Fixes #164.
|
|
14
|
+
|
|
15
|
+
### Internal
|
|
16
|
+
|
|
17
|
+
- Added `prepublishOnly` script (`npm run build && npm test`) so `npm publish` rebuilds and re-tests before packaging, preventing stale-dist publishes.
|
|
18
|
+
|
|
19
|
+
## [0.6.2] - 2026-04-16
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- **`--cdp-endpoint` CLI option** — Connect to a running Chrome/Chromium instance via its DevTools Protocol endpoint instead of launching a new browser. Supports raw `ws://` URLs and a `channel:chrome` shorthand that auto-discovers the endpoint. `BrowserManager` gains a connected mode that uses `puppeteer.connect()`, and `PageManager.adoptExistingPages()` picks up pre-existing tabs. Closes GAP-33. (#153)
|
|
24
|
+
- **Iframe interaction** — Interaction tools (click, type, select, toggle, submit, scroll, hover, key, wait_for, upload, fill_form) now work against elements inside child frames. Complements the iframe content extraction added in v0.5.0, so agents can both see and act on iframe contents. Closes #66. (#160)
|
|
25
|
+
- **CI workflow** — GitHub Actions workflow runs lint, typecheck, and full test suite on push and PR. Closes #56, #58. (#154)
|
|
26
|
+
- **End-to-end MCP protocol tests** — New test suite exercises the server over an in-memory MCP transport to catch protocol-level regressions. Closes #60. (#156)
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **Reduced CDP session churn** — Interaction helpers no longer repeatedly attach/detach CDP sessions. Sessions are reused across calls, cutting per-action overhead. Closes #113. (#159)
|
|
31
|
+
- Applied Prettier formatting across all source and test files.
|
|
32
|
+
- Dependency updates: hono (#161), next (#152), basic-ftp (#151).
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- **Cross-frame drag validation** — `charlotte_drag` now validates that source and target elements belong to the same frame and surfaces a `CharlotteError` instead of producing undefined mouse behavior. (#160)
|
|
37
|
+
- **Stale frame sessions in `CDPSessionManager`** — Frame sessions are now cleaned up when frames detach, and empty reverse-index entries are pruned. Prevents leaks when navigating pages with many iframes. Closes #67. (#155)
|
|
38
|
+
- **Batched startup `tool.disable()`** — Disabling tools at startup based on profile no longer floods the client with a `sendToolListChanged()` notification per tool. Mirrors the batching fix for runtime enable/disable in v0.6.1. (#158)
|
|
39
|
+
- **Viewport preserved on CDP connect** — When connecting via `--cdp-endpoint`, Charlotte no longer overrides the viewport of pages already open in the target browser.
|
|
40
|
+
|
|
41
|
+
### Internal
|
|
42
|
+
|
|
43
|
+
- Mixed-state group enable/disable tests added to cover partial-enable scenarios in the meta-tool. Closes #149. (#157)
|
|
44
|
+
|
|
9
45
|
## [0.6.1] - 2026-04-09
|
|
10
46
|
|
|
11
47
|
### Fixed
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Charlotte decomposes each page into a typed, structured representation — landm
|
|
|
18
18
|
|
|
19
19
|
### Benchmarks
|
|
20
20
|
|
|
21
|
-
Charlotte v0.6.
|
|
21
|
+
Charlotte v0.6.2 vs Playwright MCP, measured by characters returned per tool call on real websites:
|
|
22
22
|
|
|
23
23
|
**Navigation** (first contact with a page):
|
|
24
24
|
|
|
@@ -71,7 +71,7 @@ Agents receive landmarks, headings, interactive elements with typed metadata, bo
|
|
|
71
71
|
|
|
72
72
|
**Observation** — `observe` (3 detail levels, structural tree view), `find` (spatial + semantic search, CSS selector mode), `screenshot` (with persistent artifact management), `screenshots`, `screenshot_get`, `screenshot_delete`, `diff` (structural comparison against snapshots)
|
|
73
73
|
|
|
74
|
-
**Interaction** — `click`, `click_at` (coordinate-based), `type` (with slow typing support), `select`, `toggle`, `submit`, `scroll`, `hover`, `drag`, `key` (single/sequence with element targeting), `wait_for` (async condition polling), `upload` (file input), `fill_form` (batch form fill), `dialog` (accept/dismiss JS dialogs)
|
|
74
|
+
**Interaction** (iframe-aware) — `click`, `click_at` (coordinate-based), `type` (with slow typing support), `select`, `toggle`, `submit`, `scroll`, `hover`, `drag`, `key` (single/sequence with element targeting), `wait_for` (async condition polling), `upload` (file input), `fill_form` (batch form fill), `dialog` (accept/dismiss JS dialogs)
|
|
75
75
|
|
|
76
76
|
**Monitoring** — `console` (all severity levels, filtering, timestamps), `requests` (full HTTP history, method/status/resource type filtering)
|
|
77
77
|
|
|
@@ -449,8 +449,6 @@ Five pages cover navigation, forms, interactive elements, popups, delayed conten
|
|
|
449
449
|
|
|
450
450
|
### Session & Configuration
|
|
451
451
|
|
|
452
|
-
**Connect to Existing Browser** — Add a `--cdp-endpoint` CLI argument so Charlotte can attach to an already-running browser via `puppeteer.connect()` instead of always launching a new instance. Enables working with logged-in sessions and browser extensions.
|
|
453
|
-
|
|
454
452
|
**Persistent Init Scripts** — Add a `--init-script` CLI argument to inject JavaScript on every page load via `page.evaluateOnNewDocument()`. Charlotte's `dev_inject` currently applies CSS/JS once and does not persist across navigations.
|
|
455
453
|
|
|
456
454
|
**Configuration File** — Support a `--config` CLI argument to load settings from a JSON file, simplifying repeatable setups and CI/CD integration.
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { type Browser, type Page, type LaunchOptions } from "puppeteer";
|
|
2
2
|
import type { CharlotteConfig } from "../types/config.js";
|
|
3
|
+
export type OnFirstConnect = (browser: Browser) => Promise<void> | void;
|
|
3
4
|
export declare class BrowserManager {
|
|
4
5
|
private browser;
|
|
5
6
|
private launchOptions;
|
|
6
7
|
private launching;
|
|
7
8
|
private config;
|
|
8
|
-
|
|
9
|
+
private cdpEndpoint;
|
|
10
|
+
private onFirstConnect;
|
|
11
|
+
private firstConnectDone;
|
|
12
|
+
constructor(config?: CharlotteConfig, launchOptions?: LaunchOptions, cdpEndpoint?: string, onFirstConnect?: OnFirstConnect);
|
|
9
13
|
launch(options?: LaunchOptions): Promise<void>;
|
|
10
14
|
private doLaunch;
|
|
15
|
+
private doConnect;
|
|
11
16
|
ensureConnected(): Promise<void>;
|
|
12
17
|
close(): Promise<void>;
|
|
13
18
|
getBrowser(): Promise<Browser>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-manager.d.ts","sourceRoot":"","sources":["../../src/browser/browser-manager.ts"],"names":[],"mappings":"AAAA,OAAkB,
|
|
1
|
+
{"version":3,"file":"browser-manager.d.ts","sourceRoot":"","sources":["../../src/browser/browser-manager.ts"],"names":[],"mappings":"AAAA,OAAkB,EAChB,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,aAAa,EAEnB,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAExE,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,gBAAgB,CAAS;gBAG/B,MAAM,CAAC,EAAE,eAAe,EACxB,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,cAAc;IAoB3B,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAWtC,QAAQ;YAcR,SAAS;IAgCjB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAsDhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAW9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,WAAW,IAAI,OAAO;CAGvB"}
|
|
@@ -7,9 +7,14 @@ export class BrowserManager {
|
|
|
7
7
|
launchOptions = {};
|
|
8
8
|
launching = null;
|
|
9
9
|
config;
|
|
10
|
-
|
|
10
|
+
cdpEndpoint;
|
|
11
|
+
onFirstConnect;
|
|
12
|
+
firstConnectDone = false;
|
|
13
|
+
constructor(config, launchOptions, cdpEndpoint, onFirstConnect) {
|
|
11
14
|
// Accept optional config; callers without config get a permissive default
|
|
12
15
|
this.config = config ?? createDefaultConfig();
|
|
16
|
+
this.cdpEndpoint = cdpEndpoint;
|
|
17
|
+
this.onFirstConnect = onFirstConnect;
|
|
13
18
|
// Set launch defaults once — ensureConnected() and launch() both use these.
|
|
14
19
|
this.launchOptions = {
|
|
15
20
|
headless: true,
|
|
@@ -27,7 +32,12 @@ export class BrowserManager {
|
|
|
27
32
|
if (options) {
|
|
28
33
|
this.launchOptions = { ...this.launchOptions, ...options };
|
|
29
34
|
}
|
|
30
|
-
|
|
35
|
+
if (this.cdpEndpoint) {
|
|
36
|
+
await this.doConnect();
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
await this.doLaunch();
|
|
40
|
+
}
|
|
31
41
|
}
|
|
32
42
|
async doLaunch() {
|
|
33
43
|
logger.info("Launching Chromium");
|
|
@@ -40,10 +50,59 @@ export class BrowserManager {
|
|
|
40
50
|
pid: this.browser.process()?.pid,
|
|
41
51
|
});
|
|
42
52
|
}
|
|
53
|
+
async doConnect() {
|
|
54
|
+
const endpoint = this.cdpEndpoint;
|
|
55
|
+
const isWebSocket = endpoint.startsWith("ws://") || endpoint.startsWith("wss://");
|
|
56
|
+
const isChannel = endpoint.startsWith("channel:");
|
|
57
|
+
logger.info("Connecting to existing browser via CDP", { endpoint, isWebSocket, isChannel });
|
|
58
|
+
// defaultViewport: null tells Puppeteer not to override the browser's viewport —
|
|
59
|
+
// the user's existing Chrome already has its own window size.
|
|
60
|
+
let connectOptions;
|
|
61
|
+
if (isChannel) {
|
|
62
|
+
// Note: the `channel` connect option is marked @experimental in Puppeteer's types.
|
|
63
|
+
// It may change or be removed in future Puppeteer releases.
|
|
64
|
+
const channel = endpoint.slice("channel:".length);
|
|
65
|
+
connectOptions = { channel, defaultViewport: null };
|
|
66
|
+
}
|
|
67
|
+
else if (isWebSocket) {
|
|
68
|
+
connectOptions = { browserWSEndpoint: endpoint, defaultViewport: null };
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
connectOptions = { browserURL: endpoint, defaultViewport: null };
|
|
72
|
+
}
|
|
73
|
+
this.browser = await puppeteer.connect(connectOptions);
|
|
74
|
+
this.firstConnectDone = true;
|
|
75
|
+
this.browser.on("disconnected", () => {
|
|
76
|
+
logger.warn("Remote browser disconnected");
|
|
77
|
+
this.browser = null;
|
|
78
|
+
});
|
|
79
|
+
logger.info("Connected to existing browser via CDP", { endpoint });
|
|
80
|
+
}
|
|
43
81
|
async ensureConnected() {
|
|
44
82
|
if (this.browser && this.browser.connected) {
|
|
45
83
|
return;
|
|
46
84
|
}
|
|
85
|
+
if (this.cdpEndpoint) {
|
|
86
|
+
// First connect is lazy; subsequent disconnects cannot be recovered in CDP mode.
|
|
87
|
+
if (this.firstConnectDone) {
|
|
88
|
+
throw new CharlotteError(CharlotteErrorCode.SESSION_ERROR, "Remote browser disconnected. Cannot reconnect in CDP mode — restart the remote browser and Charlotte.");
|
|
89
|
+
}
|
|
90
|
+
if (this.launching) {
|
|
91
|
+
await this.launching;
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this.launching = this.doConnect();
|
|
95
|
+
try {
|
|
96
|
+
await this.launching;
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
this.launching = null;
|
|
100
|
+
}
|
|
101
|
+
if (this.onFirstConnect && this.browser) {
|
|
102
|
+
await this.onFirstConnect(this.browser);
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
47
106
|
// Prevent concurrent relaunch attempts
|
|
48
107
|
if (this.launching) {
|
|
49
108
|
await this.launching;
|
|
@@ -64,8 +123,14 @@ export class BrowserManager {
|
|
|
64
123
|
}
|
|
65
124
|
async close() {
|
|
66
125
|
if (this.browser) {
|
|
67
|
-
|
|
68
|
-
|
|
126
|
+
if (this.cdpEndpoint) {
|
|
127
|
+
logger.info("Disconnecting from remote browser");
|
|
128
|
+
this.browser.disconnect();
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
logger.info("Closing Chromium");
|
|
132
|
+
await this.browser.close();
|
|
133
|
+
}
|
|
69
134
|
this.browser = null;
|
|
70
135
|
}
|
|
71
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-manager.js","sourceRoot":"","sources":["../../src/browser/browser-manager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"browser-manager.js","sourceRoot":"","sources":["../../src/browser/browser-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,10 @@ import type { Page, CDPSession, Frame } from "puppeteer";
|
|
|
2
2
|
export declare class CDPSessionManager {
|
|
3
3
|
private sessions;
|
|
4
4
|
private frameSessions;
|
|
5
|
+
/** Reverse index: page → set of frameIds cached for that page. */
|
|
6
|
+
private pageFrameIds;
|
|
7
|
+
/** Number of cached frame sessions (for diagnostics/testing). */
|
|
8
|
+
get frameSessionCount(): number;
|
|
5
9
|
getSession(page: Page): Promise<CDPSession>;
|
|
6
10
|
/**
|
|
7
11
|
* Get or create a CDP session for a child frame.
|
|
@@ -10,6 +14,17 @@ export declare class CDPSessionManager {
|
|
|
10
14
|
getFrameSession(frame: Frame): Promise<CDPSession>;
|
|
11
15
|
/** Extract the CDP frame ID from a Puppeteer Frame. */
|
|
12
16
|
getFrameId(frame: Frame): string;
|
|
17
|
+
/**
|
|
18
|
+
* Remove a single frame session entry. Called when a frame detaches.
|
|
19
|
+
* The CDP session itself is owned by Puppeteer and detaches automatically
|
|
20
|
+
* when the frame target is destroyed — we only drop our cache entry.
|
|
21
|
+
*/
|
|
22
|
+
removeFrameSession(frameId: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Remove all frame sessions associated with a page.
|
|
25
|
+
* Called on page close for bulk cleanup.
|
|
26
|
+
*/
|
|
27
|
+
clearPageFrameSessions(page: Page): void;
|
|
13
28
|
private enableDomains;
|
|
14
29
|
}
|
|
15
30
|
//# sourceMappingURL=cdp-session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp-session.d.ts","sourceRoot":"","sources":["../../src/browser/cdp-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAQzD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,aAAa,CAAiC;
|
|
1
|
+
{"version":3,"file":"cdp-session.d.ts","sourceRoot":"","sources":["../../src/browser/cdp-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAQzD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,aAAa,CAAiC;IACtD,kEAAkE;IAClE,OAAO,CAAC,YAAY,CAAgC;IAEpD,iEAAiE;IACjE,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAEK,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;IAajD;;;OAGG;IACG,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAkCxD,uDAAuD;IACvD,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAahC;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAczC;;;OAGG;IACH,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;YAa1B,aAAa;CAW5B"}
|
|
@@ -5,6 +5,12 @@ const FRAME_DOMAINS = ["Accessibility", "DOM", "CSS"];
|
|
|
5
5
|
export class CDPSessionManager {
|
|
6
6
|
sessions = new WeakMap();
|
|
7
7
|
frameSessions = new Map();
|
|
8
|
+
/** Reverse index: page → set of frameIds cached for that page. */
|
|
9
|
+
pageFrameIds = new Map();
|
|
10
|
+
/** Number of cached frame sessions (for diagnostics/testing). */
|
|
11
|
+
get frameSessionCount() {
|
|
12
|
+
return this.frameSessions.size;
|
|
13
|
+
}
|
|
8
14
|
async getSession(page) {
|
|
9
15
|
const existing = this.sessions.get(page);
|
|
10
16
|
if (existing) {
|
|
@@ -29,17 +35,69 @@ export class CDPSessionManager {
|
|
|
29
35
|
logger.debug("Creating CDP session for frame", { frameId, url: frame.url() });
|
|
30
36
|
// CdpFrame exposes .client which is the CDP session for that frame's target.
|
|
31
37
|
// This is a Puppeteer internal (tested with puppeteer 24.x). If Puppeteer
|
|
32
|
-
// changes the internal API, this will need updating.
|
|
33
|
-
const
|
|
38
|
+
// changes the internal API, this will need updating. See issue #84.
|
|
39
|
+
const client = frame.client;
|
|
40
|
+
if (!client || typeof client.send !== "function") {
|
|
41
|
+
throw new Error(`Puppeteer Frame.client is unavailable or not a CDPSession. ` +
|
|
42
|
+
`This Puppeteer version may have changed internal APIs. See issue #84.`);
|
|
43
|
+
}
|
|
44
|
+
const session = client;
|
|
34
45
|
await this.enableDomains(session, FRAME_DOMAINS);
|
|
35
46
|
this.frameSessions.set(frameId, session);
|
|
47
|
+
// Track page → frameId association for bulk cleanup on page close
|
|
48
|
+
const page = frame.page();
|
|
49
|
+
let ids = this.pageFrameIds.get(page);
|
|
50
|
+
if (!ids) {
|
|
51
|
+
ids = new Set();
|
|
52
|
+
this.pageFrameIds.set(page, ids);
|
|
53
|
+
}
|
|
54
|
+
ids.add(frameId);
|
|
36
55
|
return session;
|
|
37
56
|
}
|
|
38
57
|
/** Extract the CDP frame ID from a Puppeteer Frame. */
|
|
39
58
|
getFrameId(frame) {
|
|
40
59
|
// Puppeteer Frame exposes _id as the CDP frame ID.
|
|
41
|
-
// This is a Puppeteer internal (tested with puppeteer 24.x).
|
|
42
|
-
|
|
60
|
+
// This is a Puppeteer internal (tested with puppeteer 24.x). See issue #84.
|
|
61
|
+
const id = frame._id;
|
|
62
|
+
if (typeof id !== "string" || id.length === 0) {
|
|
63
|
+
throw new Error(`Puppeteer Frame._id is unavailable or empty. ` +
|
|
64
|
+
`This Puppeteer version may have changed internal APIs. See issue #84.`);
|
|
65
|
+
}
|
|
66
|
+
return id;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Remove a single frame session entry. Called when a frame detaches.
|
|
70
|
+
* The CDP session itself is owned by Puppeteer and detaches automatically
|
|
71
|
+
* when the frame target is destroyed — we only drop our cache entry.
|
|
72
|
+
*/
|
|
73
|
+
removeFrameSession(frameId) {
|
|
74
|
+
const removed = this.frameSessions.delete(frameId);
|
|
75
|
+
if (removed) {
|
|
76
|
+
// Also remove from reverse index; drop empty Sets to avoid dangling Page refs
|
|
77
|
+
for (const [page, ids] of this.pageFrameIds.entries()) {
|
|
78
|
+
ids.delete(frameId);
|
|
79
|
+
if (ids.size === 0) {
|
|
80
|
+
this.pageFrameIds.delete(page);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
logger.debug("Removed stale frame session", { frameId });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Remove all frame sessions associated with a page.
|
|
88
|
+
* Called on page close for bulk cleanup.
|
|
89
|
+
*/
|
|
90
|
+
clearPageFrameSessions(page) {
|
|
91
|
+
const ids = this.pageFrameIds.get(page);
|
|
92
|
+
if (!ids || ids.size === 0) {
|
|
93
|
+
this.pageFrameIds.delete(page);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
for (const frameId of ids) {
|
|
97
|
+
this.frameSessions.delete(frameId);
|
|
98
|
+
}
|
|
99
|
+
logger.debug(`Cleared ${ids.size} frame session(s) for closed page`);
|
|
100
|
+
this.pageFrameIds.delete(page);
|
|
43
101
|
}
|
|
44
102
|
async enableDomains(session, domains) {
|
|
45
103
|
for (const domain of domains) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp-session.js","sourceRoot":"","sources":["../../src/browser/cdp-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,gBAAgB,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;AAErF,2EAA2E;AAC3E,MAAM,aAAa,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAE/D,MAAM,OAAO,iBAAiB;IACpB,QAAQ,GAA8B,IAAI,OAAO,EAAE,CAAC;IACpD,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"cdp-session.js","sourceRoot":"","sources":["../../src/browser/cdp-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { Page, Dialog } from "puppeteer";
|
|
1
|
+
import type { Page, Dialog, Browser } from "puppeteer";
|
|
2
2
|
import type { BrowserManager } from "./browser-manager.js";
|
|
3
|
+
import type { CDPSessionManager } from "./cdp-session.js";
|
|
3
4
|
import type { PendingDialog } from "../types/page-representation.js";
|
|
4
5
|
import type { CharlotteConfig } from "../types/config.js";
|
|
5
6
|
export interface TabInfo {
|
|
@@ -27,7 +28,8 @@ export declare class PageManager {
|
|
|
27
28
|
private config;
|
|
28
29
|
/** Tab IDs of pages opened by popups since the last drain. */
|
|
29
30
|
private newTabQueue;
|
|
30
|
-
|
|
31
|
+
private cdpSessionManager?;
|
|
32
|
+
constructor(config?: CharlotteConfig, cdpSessionManager?: CDPSessionManager);
|
|
31
33
|
/**
|
|
32
34
|
* Wire up event listeners on a managed page: console, network, dialog,
|
|
33
35
|
* framenavigated, popup, and close. Shared by openTab() and the popup handler.
|
|
@@ -43,6 +45,11 @@ export declare class PageManager {
|
|
|
43
45
|
*/
|
|
44
46
|
consumeNewTabs(): string[];
|
|
45
47
|
openTab(browserManager: BrowserManager, url?: string): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Adopt pages already open in a connected browser.
|
|
50
|
+
* Called once after puppeteer.connect() in CDP mode.
|
|
51
|
+
*/
|
|
52
|
+
adoptExistingPages(browser: Browser): Promise<void>;
|
|
46
53
|
switchTab(tabId: string): Promise<Page>;
|
|
47
54
|
closeTab(tabId: string): Promise<void>;
|
|
48
55
|
listTabs(): Promise<TabInfo[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-manager.d.ts","sourceRoot":"","sources":["../../src/browser/page-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"page-manager.d.ts","sourceRoot":"","sources":["../../src/browser/page-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAoBD,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,MAAM,CAAkB;IAChC,8DAA8D;IAC9D,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAElC,MAAM,CAAC,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAM3E;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA6GzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;;OAGG;IACH,cAAc,IAAI,MAAM,EAAE;IAOpB,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B5E;;;OAGG;IACG,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BnD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAapC,aAAa,IAAI,IAAI;IAmBrB,cAAc,IAAI,MAAM;IAOxB,+EAA+E;IAC/E,gBAAgB,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAS1D,uFAAuF;IACvF,gBAAgB,IAAI,KAAK,CAAC;QACxB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IASF,iEAAiE;IACjE,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE;IAUpD,wDAAwD;IACxD,kBAAkB,IAAI,cAAc,EAAE;IAOtC,oBAAoB,IAAI,IAAI;IAQ5B,oBAAoB,IAAI,IAAI;IAQ5B,WAAW,IAAI,IAAI;IASnB,oBAAoB,IAAI,aAAa,GAAG,IAAI;IAM5C,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAMjC,kBAAkB,IAAI,IAAI;IAS1B,QAAQ,IAAI,OAAO;CAGpB"}
|
|
@@ -13,9 +13,11 @@ export class PageManager {
|
|
|
13
13
|
config;
|
|
14
14
|
/** Tab IDs of pages opened by popups since the last drain. */
|
|
15
15
|
newTabQueue = [];
|
|
16
|
-
|
|
16
|
+
cdpSessionManager;
|
|
17
|
+
constructor(config, cdpSessionManager) {
|
|
17
18
|
// Accept optional config; callers without config get a permissive default
|
|
18
19
|
this.config = config ?? createDefaultConfig();
|
|
20
|
+
this.cdpSessionManager = cdpSessionManager;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Wire up event listeners on a managed page: console, network, dialog,
|
|
@@ -85,6 +87,19 @@ export class PageManager {
|
|
|
85
87
|
managedPage.pendingDialogInfo = null;
|
|
86
88
|
}
|
|
87
89
|
});
|
|
90
|
+
// Clean up stale frame session cache entries when a frame detaches.
|
|
91
|
+
// Fires for individual iframe removal AND for all child frames on full-page navigation.
|
|
92
|
+
if (this.cdpSessionManager) {
|
|
93
|
+
page.on("framedetached", (frame) => {
|
|
94
|
+
try {
|
|
95
|
+
const frameId = this.cdpSessionManager.getFrameId(frame);
|
|
96
|
+
this.cdpSessionManager.removeFrameSession(frameId);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Frame may already be destroyed — ignore errors in cleanup
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
88
103
|
// Capture popups (target="_blank" links, window.open()) as managed tabs
|
|
89
104
|
page.on("popup", (popupPage) => {
|
|
90
105
|
if (popupPage) {
|
|
@@ -93,6 +108,9 @@ export class PageManager {
|
|
|
93
108
|
});
|
|
94
109
|
// Auto-clean when a page closes itself (window.close(), site-initiated)
|
|
95
110
|
page.on("close", () => {
|
|
111
|
+
if (this.cdpSessionManager) {
|
|
112
|
+
this.cdpSessionManager.clearPageFrameSessions(page);
|
|
113
|
+
}
|
|
96
114
|
if (this.pages.has(tabId)) {
|
|
97
115
|
this.pages.delete(tabId);
|
|
98
116
|
logger.info(`Tab ${tabId} closed by page`);
|
|
@@ -152,6 +170,35 @@ export class PageManager {
|
|
|
152
170
|
logger.info(`Opened tab ${tabId}`, { url });
|
|
153
171
|
return tabId;
|
|
154
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Adopt pages already open in a connected browser.
|
|
175
|
+
* Called once after puppeteer.connect() in CDP mode.
|
|
176
|
+
*/
|
|
177
|
+
async adoptExistingPages(browser) {
|
|
178
|
+
const existingPages = await browser.pages();
|
|
179
|
+
if (existingPages.length === 0) {
|
|
180
|
+
logger.info("No existing pages to adopt");
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
for (const page of existingPages) {
|
|
184
|
+
const tabId = generateTabId();
|
|
185
|
+
const managedPage = {
|
|
186
|
+
id: tabId,
|
|
187
|
+
page,
|
|
188
|
+
consoleMessages: [],
|
|
189
|
+
networkRequests: [],
|
|
190
|
+
pendingDialog: null,
|
|
191
|
+
pendingDialogInfo: null,
|
|
192
|
+
};
|
|
193
|
+
this.wirePageListeners(managedPage);
|
|
194
|
+
this.pages.set(tabId, managedPage);
|
|
195
|
+
// First adopted page becomes active
|
|
196
|
+
if (!this.activeTabId) {
|
|
197
|
+
this.activeTabId = tabId;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
logger.info(`Adopted ${existingPages.length} existing page(s)`);
|
|
201
|
+
}
|
|
155
202
|
async switchTab(tabId) {
|
|
156
203
|
const managedPage = this.pages.get(tabId);
|
|
157
204
|
if (!managedPage) {
|
|
@@ -166,10 +213,14 @@ export class PageManager {
|
|
|
166
213
|
if (!managedPage) {
|
|
167
214
|
throw new CharlotteError(CharlotteErrorCode.SESSION_ERROR, `Tab '${tabId}' not found`);
|
|
168
215
|
}
|
|
216
|
+
if (this.cdpSessionManager) {
|
|
217
|
+
this.cdpSessionManager.clearPageFrameSessions(managedPage.page);
|
|
218
|
+
}
|
|
169
219
|
managedPage.page.removeAllListeners("console");
|
|
170
220
|
managedPage.page.removeAllListeners("response");
|
|
171
221
|
managedPage.page.removeAllListeners("dialog");
|
|
172
222
|
managedPage.page.removeAllListeners("framenavigated");
|
|
223
|
+
managedPage.page.removeAllListeners("framedetached");
|
|
173
224
|
managedPage.page.removeAllListeners("popup");
|
|
174
225
|
managedPage.page.removeAllListeners("close");
|
|
175
226
|
await managedPage.page.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-manager.js","sourceRoot":"","sources":["../../src/browser/page-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"page-manager.js","sourceRoot":"","sources":["../../src/browser/page-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA+BzE,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG;IACpE,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAgEA"}
|
package/dist/cli.js
CHANGED
|
@@ -28,6 +28,8 @@ Options:
|
|
|
28
28
|
Groups: ${VALID_GROUPS.join(", ")}
|
|
29
29
|
--output-dir <path> Directory for output files (screenshots, logs)
|
|
30
30
|
--no-headless Show the browser window (default: headless)
|
|
31
|
+
--cdp-endpoint <url> Connect to an existing Chrome via CDP endpoint
|
|
32
|
+
(http://..., ws://..., or channel:chrome)
|
|
31
33
|
--help Show this help message
|
|
32
34
|
`;
|
|
33
35
|
export function parseCliArgs(argv = process.argv.slice(2)) {
|
|
@@ -38,6 +40,7 @@ export function parseCliArgs(argv = process.argv.slice(2)) {
|
|
|
38
40
|
tools: { type: "string" },
|
|
39
41
|
"output-dir": { type: "string" },
|
|
40
42
|
"no-headless": { type: "boolean", default: false },
|
|
43
|
+
"cdp-endpoint": { type: "string" },
|
|
41
44
|
help: { type: "boolean", default: false },
|
|
42
45
|
},
|
|
43
46
|
strict: false,
|
|
@@ -50,6 +53,16 @@ export function parseCliArgs(argv = process.argv.slice(2)) {
|
|
|
50
53
|
const toolsValue = values.tools;
|
|
51
54
|
const outputDir = values["output-dir"];
|
|
52
55
|
const headless = !values["no-headless"];
|
|
56
|
+
const cdpEndpoint = values["cdp-endpoint"];
|
|
57
|
+
if (cdpEndpoint !== undefined) {
|
|
58
|
+
const validPrefixes = ["http://", "https://", "ws://", "wss://", "channel:"];
|
|
59
|
+
if (!validPrefixes.some((p) => cdpEndpoint.startsWith(p))) {
|
|
60
|
+
throw new Error(`Invalid --cdp-endpoint: ${cdpEndpoint}. Must start with one of: ${validPrefixes.join(", ")}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (cdpEndpoint && values["no-headless"]) {
|
|
64
|
+
logger.warn("--no-headless has no effect in CDP mode; the remote browser controls its own display");
|
|
65
|
+
}
|
|
53
66
|
if (profileValue && toolsValue) {
|
|
54
67
|
logger.warn("Both --profile and --tools provided; --profile takes precedence");
|
|
55
68
|
}
|
|
@@ -58,7 +71,7 @@ export function parseCliArgs(argv = process.argv.slice(2)) {
|
|
|
58
71
|
if (!VALID_PROFILES.includes(profile)) {
|
|
59
72
|
throw new Error(`Invalid profile: ${profile}. Valid profiles: ${VALID_PROFILES.join(", ")}`);
|
|
60
73
|
}
|
|
61
|
-
return { profile, outputDir, headless };
|
|
74
|
+
return { profile, outputDir, headless, cdpEndpoint };
|
|
62
75
|
}
|
|
63
76
|
if (toolsValue) {
|
|
64
77
|
const groups = toolsValue.split(",");
|
|
@@ -67,9 +80,9 @@ export function parseCliArgs(argv = process.argv.slice(2)) {
|
|
|
67
80
|
throw new Error(`Invalid tool group: ${group}. Valid groups: ${VALID_GROUPS.join(", ")}`);
|
|
68
81
|
}
|
|
69
82
|
}
|
|
70
|
-
return { toolGroups: groups, outputDir, headless };
|
|
83
|
+
return { toolGroups: groups, outputDir, headless, cdpEndpoint };
|
|
71
84
|
}
|
|
72
85
|
// Default: no profile or groups specified — createServer defaults to browse
|
|
73
|
-
return { outputDir, headless };
|
|
86
|
+
return { outputDir, headless, cdpEndpoint };
|
|
74
87
|
}
|
|
75
88
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,MAAM,cAAc,GAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEjG,MAAM,YAAY,GAAoB;IACpC,YAAY;IACZ,aAAa;IACb,aAAa;IACb,SAAS;IACT,UAAU;IACV,QAAQ;IACR,UAAU;IACV,YAAY;CACb,CAAC;AAEF,MAAM,SAAS,GAAG;;;;;;qCAMmB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;mCAE3B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|