@mseep/clawdcursor 1.5.5
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 +2264 -0
- package/LICENSE +21 -0
- package/README.md +385 -0
- package/SECURITY.md +44 -0
- package/SKILL.md +503 -0
- package/dist/core/agent-loop/agent.d.ts +42 -0
- package/dist/core/agent-loop/agent.js +1023 -0
- package/dist/core/agent-loop/agent.js.map +1 -0
- package/dist/core/agent-loop/batch-tool.d.ts +25 -0
- package/dist/core/agent-loop/batch-tool.js +218 -0
- package/dist/core/agent-loop/batch-tool.js.map +1 -0
- package/dist/core/agent-loop/coord-scale.d.ts +72 -0
- package/dist/core/agent-loop/coord-scale.js +89 -0
- package/dist/core/agent-loop/coord-scale.js.map +1 -0
- package/dist/core/agent-loop/focus-guard.d.ts +24 -0
- package/dist/core/agent-loop/focus-guard.js +29 -0
- package/dist/core/agent-loop/focus-guard.js.map +1 -0
- package/dist/core/agent-loop/project-mcp.d.ts +97 -0
- package/dist/core/agent-loop/project-mcp.js +253 -0
- package/dist/core/agent-loop/project-mcp.js.map +1 -0
- package/dist/core/agent-loop/prompt.d.ts +45 -0
- package/dist/core/agent-loop/prompt.js +426 -0
- package/dist/core/agent-loop/prompt.js.map +1 -0
- package/dist/core/agent-loop/tool-meta.d.ts +93 -0
- package/dist/core/agent-loop/tool-meta.js +651 -0
- package/dist/core/agent-loop/tool-meta.js.map +1 -0
- package/dist/core/agent-loop/tools.d.ts +38 -0
- package/dist/core/agent-loop/tools.js +2134 -0
- package/dist/core/agent-loop/tools.js.map +1 -0
- package/dist/core/agent-loop/types.d.ts +170 -0
- package/dist/core/agent-loop/types.js +12 -0
- package/dist/core/agent-loop/types.js.map +1 -0
- package/dist/core/agent.d.ts +51 -0
- package/dist/core/agent.js +245 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/app-categories.d.ts +67 -0
- package/dist/core/app-categories.js +108 -0
- package/dist/core/app-categories.js.map +1 -0
- package/dist/core/banner.d.ts +70 -0
- package/dist/core/banner.js +245 -0
- package/dist/core/banner.js.map +1 -0
- package/dist/core/classify/capability.d.ts +45 -0
- package/dist/core/classify/capability.js +78 -0
- package/dist/core/classify/capability.js.map +1 -0
- package/dist/core/decompose/llm-decomposer.d.ts +35 -0
- package/dist/core/decompose/llm-decomposer.js +156 -0
- package/dist/core/decompose/llm-decomposer.js.map +1 -0
- package/dist/core/decompose/parser.d.ts +27 -0
- package/dist/core/decompose/parser.js +101 -0
- package/dist/core/decompose/parser.js.map +1 -0
- package/dist/core/observability/correlation.d.ts +19 -0
- package/dist/core/observability/correlation.js +36 -0
- package/dist/core/observability/correlation.js.map +1 -0
- package/dist/core/observability/cost-meter.d.ts +51 -0
- package/dist/core/observability/cost-meter.js +134 -0
- package/dist/core/observability/cost-meter.js.map +1 -0
- package/dist/core/observability/logger.d.ts +61 -0
- package/dist/core/observability/logger.js +550 -0
- package/dist/core/observability/logger.js.map +1 -0
- package/dist/core/router/aliases.d.ts +50 -0
- package/dist/core/router/aliases.js +104 -0
- package/dist/core/router/aliases.js.map +1 -0
- package/dist/core/router/normalize.d.ts +41 -0
- package/dist/core/router/normalize.js +80 -0
- package/dist/core/router/normalize.js.map +1 -0
- package/dist/core/safety.d.ts +126 -0
- package/dist/core/safety.js +568 -0
- package/dist/core/safety.js.map +1 -0
- package/dist/core/sense/a11y-resolver.d.ts +73 -0
- package/dist/core/sense/a11y-resolver.js +76 -0
- package/dist/core/sense/a11y-resolver.js.map +1 -0
- package/dist/core/sense/fingerprint.d.ts +41 -0
- package/dist/core/sense/fingerprint.js +123 -0
- package/dist/core/sense/fingerprint.js.map +1 -0
- package/dist/core/sense/rank.d.ts +70 -0
- package/dist/core/sense/rank.js +192 -0
- package/dist/core/sense/rank.js.map +1 -0
- package/dist/core/sense/reactive-check.d.ts +40 -0
- package/dist/core/sense/reactive-check.js +48 -0
- package/dist/core/sense/reactive-check.js.map +1 -0
- package/dist/core/sense/snapshot.d.ts +19 -0
- package/dist/core/sense/snapshot.js +100 -0
- package/dist/core/sense/snapshot.js.map +1 -0
- package/dist/core/sense/types.d.ts +66 -0
- package/dist/core/sense/types.js +9 -0
- package/dist/core/sense/types.js.map +1 -0
- package/dist/core/sense/ui-map-anchors.d.ts +7 -0
- package/dist/core/sense/ui-map-anchors.js +24 -0
- package/dist/core/sense/ui-map-anchors.js.map +1 -0
- package/dist/core/sense/ui-map-elements.d.ts +5 -0
- package/dist/core/sense/ui-map-elements.js +33 -0
- package/dist/core/sense/ui-map-elements.js.map +1 -0
- package/dist/core/sense/ui-map-find.d.ts +56 -0
- package/dist/core/sense/ui-map-find.js +153 -0
- package/dist/core/sense/ui-map-find.js.map +1 -0
- package/dist/core/sense/ui-map-fuse.d.ts +4 -0
- package/dist/core/sense/ui-map-fuse.js +44 -0
- package/dist/core/sense/ui-map-fuse.js.map +1 -0
- package/dist/core/sense/ui-map-geom.d.ts +3 -0
- package/dist/core/sense/ui-map-geom.js +16 -0
- package/dist/core/sense/ui-map-geom.js.map +1 -0
- package/dist/core/sense/ui-map-holder.d.ts +58 -0
- package/dist/core/sense/ui-map-holder.js +87 -0
- package/dist/core/sense/ui-map-holder.js.map +1 -0
- package/dist/core/sense/ui-map-normalize.d.ts +19 -0
- package/dist/core/sense/ui-map-normalize.js +65 -0
- package/dist/core/sense/ui-map-normalize.js.map +1 -0
- package/dist/core/sense/ui-map-render.d.ts +4 -0
- package/dist/core/sense/ui-map-render.js +34 -0
- package/dist/core/sense/ui-map-render.js.map +1 -0
- package/dist/core/sense/ui-map-resolve.d.ts +41 -0
- package/dist/core/sense/ui-map-resolve.js +59 -0
- package/dist/core/sense/ui-map-resolve.js.map +1 -0
- package/dist/core/sense/ui-map-types.d.ts +66 -0
- package/dist/core/sense/ui-map-types.js +11 -0
- package/dist/core/sense/ui-map-types.js.map +1 -0
- package/dist/core/sense/ui-map.d.ts +29 -0
- package/dist/core/sense/ui-map.js +113 -0
- package/dist/core/sense/ui-map.js.map +1 -0
- package/dist/core/verify/assertions.d.ts +132 -0
- package/dist/core/verify/assertions.js +284 -0
- package/dist/core/verify/assertions.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/browser-config.d.ts +36 -0
- package/dist/llm/browser-config.js +83 -0
- package/dist/llm/browser-config.js.map +1 -0
- package/dist/llm/client.d.ts +268 -0
- package/dist/llm/client.js +1094 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/config.d.ts +79 -0
- package/dist/llm/config.js +375 -0
- package/dist/llm/config.js.map +1 -0
- package/dist/llm/credentials.d.ts +35 -0
- package/dist/llm/credentials.js +491 -0
- package/dist/llm/credentials.js.map +1 -0
- package/dist/llm/external-creds.d.ts +42 -0
- package/dist/llm/external-creds.js +169 -0
- package/dist/llm/external-creds.js.map +1 -0
- package/dist/llm/providers.d.ts +123 -0
- package/dist/llm/providers.js +717 -0
- package/dist/llm/providers.js.map +1 -0
- package/dist/paths.d.ts +31 -0
- package/dist/paths.js +147 -0
- package/dist/paths.js.map +1 -0
- package/dist/platform/accessibility.d.ts +139 -0
- package/dist/platform/accessibility.js +670 -0
- package/dist/platform/accessibility.js.map +1 -0
- package/dist/platform/cdp-driver.d.ts +318 -0
- package/dist/platform/cdp-driver.js +1179 -0
- package/dist/platform/cdp-driver.js.map +1 -0
- package/dist/platform/index.d.ts +11 -0
- package/dist/platform/index.js +69 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/keys.d.ts +17 -0
- package/dist/platform/keys.js +129 -0
- package/dist/platform/keys.js.map +1 -0
- package/dist/platform/launch-poll.d.ts +101 -0
- package/dist/platform/launch-poll.js +177 -0
- package/dist/platform/launch-poll.js.map +1 -0
- package/dist/platform/linux.d.ts +173 -0
- package/dist/platform/linux.js +1253 -0
- package/dist/platform/linux.js.map +1 -0
- package/dist/platform/macos.d.ts +136 -0
- package/dist/platform/macos.js +976 -0
- package/dist/platform/macos.js.map +1 -0
- package/dist/platform/native-desktop.d.ts +145 -0
- package/dist/platform/native-desktop.js +936 -0
- package/dist/platform/native-desktop.js.map +1 -0
- package/dist/platform/native-helper.d.ts +130 -0
- package/dist/platform/native-helper.js +592 -0
- package/dist/platform/native-helper.js.map +1 -0
- package/dist/platform/ocr-engine.d.ts +78 -0
- package/dist/platform/ocr-engine.js +363 -0
- package/dist/platform/ocr-engine.js.map +1 -0
- package/dist/platform/ps-runner.d.ts +28 -0
- package/dist/platform/ps-runner.js +228 -0
- package/dist/platform/ps-runner.js.map +1 -0
- package/dist/platform/types.d.ts +397 -0
- package/dist/platform/types.js +15 -0
- package/dist/platform/types.js.map +1 -0
- package/dist/platform/uri-handler.d.ts +75 -0
- package/dist/platform/uri-handler.js +273 -0
- package/dist/platform/uri-handler.js.map +1 -0
- package/dist/platform/wayland-backend.d.ts +53 -0
- package/dist/platform/wayland-backend.js +348 -0
- package/dist/platform/wayland-backend.js.map +1 -0
- package/dist/platform/windows.d.ts +232 -0
- package/dist/platform/windows.js +1210 -0
- package/dist/platform/windows.js.map +1 -0
- package/dist/postbuild.d.ts +10 -0
- package/dist/postbuild.js +98 -0
- package/dist/postbuild.js.map +1 -0
- package/dist/schema/snapshot.d.ts +33 -0
- package/dist/schema/snapshot.js +90 -0
- package/dist/schema/snapshot.js.map +1 -0
- package/dist/shortcuts.d.ts +30 -0
- package/dist/shortcuts.js +261 -0
- package/dist/shortcuts.js.map +1 -0
- package/dist/surface/cli.d.ts +7 -0
- package/dist/surface/cli.js +1556 -0
- package/dist/surface/cli.js.map +1 -0
- package/dist/surface/dashboard.d.ts +8 -0
- package/dist/surface/dashboard.js +1193 -0
- package/dist/surface/dashboard.js.map +1 -0
- package/dist/surface/doctor.d.ts +29 -0
- package/dist/surface/doctor.js +1514 -0
- package/dist/surface/doctor.js.map +1 -0
- package/dist/surface/format.d.ts +10 -0
- package/dist/surface/format.js +37 -0
- package/dist/surface/format.js.map +1 -0
- package/dist/surface/http-utility.d.ts +65 -0
- package/dist/surface/http-utility.js +336 -0
- package/dist/surface/http-utility.js.map +1 -0
- package/dist/surface/mcp-server.d.ts +91 -0
- package/dist/surface/mcp-server.js +280 -0
- package/dist/surface/mcp-server.js.map +1 -0
- package/dist/surface/onboarding.d.ts +15 -0
- package/dist/surface/onboarding.js +184 -0
- package/dist/surface/onboarding.js.map +1 -0
- package/dist/surface/pidfile.d.ts +79 -0
- package/dist/surface/pidfile.js +263 -0
- package/dist/surface/pidfile.js.map +1 -0
- package/dist/surface/readiness.d.ts +45 -0
- package/dist/surface/readiness.js +230 -0
- package/dist/surface/readiness.js.map +1 -0
- package/dist/surface/report.d.ts +68 -0
- package/dist/surface/report.js +341 -0
- package/dist/surface/report.js.map +1 -0
- package/dist/surface/skill-register.d.ts +14 -0
- package/dist/surface/skill-register.js +150 -0
- package/dist/surface/skill-register.js.map +1 -0
- package/dist/surface/version.d.ts +6 -0
- package/dist/surface/version.js +27 -0
- package/dist/surface/version.js.map +1 -0
- package/dist/tools/a11y.d.ts +8 -0
- package/dist/tools/a11y.js +545 -0
- package/dist/tools/a11y.js.map +1 -0
- package/dist/tools/a11y_depth.d.ts +19 -0
- package/dist/tools/a11y_depth.js +455 -0
- package/dist/tools/a11y_depth.js.map +1 -0
- package/dist/tools/agent.d.ts +15 -0
- package/dist/tools/agent.js +248 -0
- package/dist/tools/agent.js.map +1 -0
- package/dist/tools/batch.d.ts +46 -0
- package/dist/tools/batch.js +230 -0
- package/dist/tools/batch.js.map +1 -0
- package/dist/tools/cdp.d.ts +8 -0
- package/dist/tools/cdp.js +233 -0
- package/dist/tools/cdp.js.map +1 -0
- package/dist/tools/compact.d.ts +63 -0
- package/dist/tools/compact.js +418 -0
- package/dist/tools/compact.js.map +1 -0
- package/dist/tools/cost-class.d.ts +38 -0
- package/dist/tools/cost-class.js +117 -0
- package/dist/tools/cost-class.js.map +1 -0
- package/dist/tools/desktop.d.ts +9 -0
- package/dist/tools/desktop.js +346 -0
- package/dist/tools/desktop.js.map +1 -0
- package/dist/tools/electron_bridge.d.ts +41 -0
- package/dist/tools/electron_bridge.js +261 -0
- package/dist/tools/electron_bridge.js.map +1 -0
- package/dist/tools/extras.d.ts +22 -0
- package/dist/tools/extras.js +942 -0
- package/dist/tools/extras.js.map +1 -0
- package/dist/tools/favorites.d.ts +13 -0
- package/dist/tools/favorites.js +137 -0
- package/dist/tools/favorites.js.map +1 -0
- package/dist/tools/introspection.d.ts +13 -0
- package/dist/tools/introspection.js +55 -0
- package/dist/tools/introspection.js.map +1 -0
- package/dist/tools/ocr.d.ts +8 -0
- package/dist/tools/ocr.js +66 -0
- package/dist/tools/ocr.js.map +1 -0
- package/dist/tools/orchestration.d.ts +7 -0
- package/dist/tools/orchestration.js +377 -0
- package/dist/tools/orchestration.js.map +1 -0
- package/dist/tools/playbooks/extract-compose.d.ts +22 -0
- package/dist/tools/playbooks/extract-compose.js +85 -0
- package/dist/tools/playbooks/extract-compose.js.map +1 -0
- package/dist/tools/playbooks/find-replace.d.ts +11 -0
- package/dist/tools/playbooks/find-replace.js +56 -0
- package/dist/tools/playbooks/find-replace.js.map +1 -0
- package/dist/tools/playbooks/index.d.ts +63 -0
- package/dist/tools/playbooks/index.js +70 -0
- package/dist/tools/playbooks/index.js.map +1 -0
- package/dist/tools/playbooks/keys-blocklist.d.ts +24 -0
- package/dist/tools/playbooks/keys-blocklist.js +89 -0
- package/dist/tools/playbooks/keys-blocklist.js.map +1 -0
- package/dist/tools/registry.d.ts +40 -0
- package/dist/tools/registry.js +560 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/safety-gate.d.ts +16 -0
- package/dist/tools/safety-gate.js +70 -0
- package/dist/tools/safety-gate.js.map +1 -0
- package/dist/tools/scheduler.d.ts +76 -0
- package/dist/tools/scheduler.js +413 -0
- package/dist/tools/scheduler.js.map +1 -0
- package/dist/tools/shortcuts.d.ts +13 -0
- package/dist/tools/shortcuts.js +205 -0
- package/dist/tools/shortcuts.js.map +1 -0
- package/dist/tools/smart.d.ts +15 -0
- package/dist/tools/smart.js +785 -0
- package/dist/tools/smart.js.map +1 -0
- package/dist/tools/types.d.ts +174 -0
- package/dist/tools/types.js +67 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/window-text.d.ts +15 -0
- package/dist/tools/window-text.js +39 -0
- package/dist/tools/window-text.js.map +1 -0
- package/dist/types.d.ts +122 -0
- package/dist/types.js +41 -0
- package/dist/types.js.map +1 -0
- package/native/Package.swift +38 -0
- package/native/README.md +113 -0
- package/native/Sources/ClawdCursorHelper/main.swift +602 -0
- package/native/Sources/ClawdCursorHost/main.swift +182 -0
- package/native/Sources/PermissionCheck/main.swift +53 -0
- package/native/Sources/ScreenshotHelper/main.swift +219 -0
- package/native/build.sh +139 -0
- package/native/entitlements.plist +12 -0
- package/package.json +115 -0
- package/scripts/banner.ps1 +112 -0
- package/scripts/coord-accuracy.ps1 +140 -0
- package/scripts/coord-uwp.ps1 +80 -0
- package/scripts/edge-glow.ps1 +180 -0
- package/scripts/find-element.ps1 +198 -0
- package/scripts/get-foreground-window.ps1 +71 -0
- package/scripts/get-screen-context.ps1 +183 -0
- package/scripts/get-windows.ps1 +66 -0
- package/scripts/install-panic-hotkey.ps1 +46 -0
- package/scripts/interact-element.ps1 +431 -0
- package/scripts/invoke-element.ps1 +314 -0
- package/scripts/linux/atspi-bridge.py +356 -0
- package/scripts/linux/ocr-recognize.py +154 -0
- package/scripts/mac/_window-picker.jxa +163 -0
- package/scripts/mac/find-element.jxa +0 -0
- package/scripts/mac/find-element.sh +161 -0
- package/scripts/mac/focus-window.jxa +284 -0
- package/scripts/mac/get-focused-element.jxa +102 -0
- package/scripts/mac/get-foreground-window.jxa +173 -0
- package/scripts/mac/get-screen-context.jxa +197 -0
- package/scripts/mac/get-ui-tree.sh +141 -0
- package/scripts/mac/get-windows.jxa +117 -0
- package/scripts/mac/interact-element.sh +235 -0
- package/scripts/mac/invoke-element.jxa +408 -0
- package/scripts/mac/ocr-recognize.swift +124 -0
- package/scripts/ocr-recognize.ps1 +102 -0
- package/scripts/postinstall-native.js +48 -0
- package/scripts/ps-bridge.ps1 +830 -0
- package/scripts/smoke-mcp.ps1 +119 -0
- package/scripts/sync-version.ts +178 -0
- package/scripts/verify-install.js +81 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessibility.js","sourceRoot":"","sources":["../../src/platform/accessibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDPDriver — Chrome DevTools Protocol driver for browser DOM interaction.
|
|
3
|
+
*
|
|
4
|
+
* This solves the "Gmail compose problem" and similar web-app challenges:
|
|
5
|
+
* Windows UI Automation sees browser content as a monolithic "Document" or
|
|
6
|
+
* "Pane" element — it can't reach individual DOM elements like input fields,
|
|
7
|
+
* buttons, or content-editable divs inside web pages.
|
|
8
|
+
*
|
|
9
|
+
* CDPDriver connects to Chrome/Edge via the DevTools Protocol and provides:
|
|
10
|
+
* - DOM element queries by CSS selector, XPath, ARIA role, text content
|
|
11
|
+
* - Click, type, focus, select on DOM elements
|
|
12
|
+
* - Form filling by label text (finds the input associated with a label)
|
|
13
|
+
* - Page state queries (URL, title, ready state)
|
|
14
|
+
* - Script evaluation for custom interactions
|
|
15
|
+
*
|
|
16
|
+
* Architecture:
|
|
17
|
+
* ┌─────────────────────────────┐
|
|
18
|
+
* │ UIDriver (native UI) │ ← Windows UI Automation
|
|
19
|
+
* ├─────────────────────────────┤
|
|
20
|
+
* │ CDPDriver (browser DOM) │ ← This module (CDP)
|
|
21
|
+
* ├─────────────────────────────┤
|
|
22
|
+
* │ Browser tools (CDP) │ ← Pipeline browser MCP surface
|
|
23
|
+
* └─────────────────────────────┘
|
|
24
|
+
*
|
|
25
|
+
* Connection:
|
|
26
|
+
* Edge/Chrome must be launched with --remote-debugging-port=9223
|
|
27
|
+
* Or connect to an existing Playwright-managed browser's CDP endpoint.
|
|
28
|
+
*
|
|
29
|
+
* Usage:
|
|
30
|
+
* const cdp = new CDPDriver();
|
|
31
|
+
* await cdp.connect(); // connects to Edge/Chrome on port 9223
|
|
32
|
+
*
|
|
33
|
+
* // Click a button by text
|
|
34
|
+
* await cdp.clickByText('Compose');
|
|
35
|
+
*
|
|
36
|
+
* // Type into a Gmail field
|
|
37
|
+
* await cdp.typeInField('[aria-label="To"]', 'user@example.com');
|
|
38
|
+
*
|
|
39
|
+
* // Fill a form by label
|
|
40
|
+
* await cdp.fillFormByLabels({ 'Subject': 'Hello', 'To': 'user@example.com' });
|
|
41
|
+
*
|
|
42
|
+
* // Query elements
|
|
43
|
+
* const results = await cdp.querySelectorAll('button');
|
|
44
|
+
*/
|
|
45
|
+
import { type Page } from 'playwright';
|
|
46
|
+
/** Information about a DOM element */
|
|
47
|
+
export interface DOMElementInfo {
|
|
48
|
+
/** CSS selector that uniquely identifies this element */
|
|
49
|
+
selector: string;
|
|
50
|
+
/** Tag name (e.g. 'button', 'input', 'div') */
|
|
51
|
+
tagName: string;
|
|
52
|
+
/** Inner text content (truncated) */
|
|
53
|
+
text: string;
|
|
54
|
+
/** Element's id attribute */
|
|
55
|
+
id: string;
|
|
56
|
+
/** Element's class attribute */
|
|
57
|
+
className: string;
|
|
58
|
+
/** ARIA role */
|
|
59
|
+
role: string;
|
|
60
|
+
/** ARIA label */
|
|
61
|
+
ariaLabel: string;
|
|
62
|
+
/** Input type (for input elements) */
|
|
63
|
+
type: string;
|
|
64
|
+
/** Placeholder text */
|
|
65
|
+
placeholder: string;
|
|
66
|
+
/** Element's name attribute */
|
|
67
|
+
name: string;
|
|
68
|
+
/** Bounding rect in viewport coordinates */
|
|
69
|
+
bounds: {
|
|
70
|
+
x: number;
|
|
71
|
+
y: number;
|
|
72
|
+
width: number;
|
|
73
|
+
height: number;
|
|
74
|
+
};
|
|
75
|
+
/** Whether the element is visible */
|
|
76
|
+
isVisible: boolean;
|
|
77
|
+
/** Whether the element is enabled (not disabled) */
|
|
78
|
+
isEnabled: boolean;
|
|
79
|
+
}
|
|
80
|
+
/** Result of a CDP interaction */
|
|
81
|
+
export interface CDPInteractionResult {
|
|
82
|
+
success: boolean;
|
|
83
|
+
method?: string;
|
|
84
|
+
value?: string;
|
|
85
|
+
error?: string;
|
|
86
|
+
/** Number of elements matched (for queries) */
|
|
87
|
+
matchCount?: number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* CDPDriver — interact with web page DOM elements via Chrome DevTools Protocol.
|
|
91
|
+
*
|
|
92
|
+
* Uses Playwright's CDP connection under the hood, so it works with any
|
|
93
|
+
* Chromium-based browser launched with --remote-debugging-port. You can
|
|
94
|
+
* also share a Page object directly.
|
|
95
|
+
*/
|
|
96
|
+
export declare class CDPDriver {
|
|
97
|
+
private browser;
|
|
98
|
+
private activePage;
|
|
99
|
+
private connected;
|
|
100
|
+
private cdpPort;
|
|
101
|
+
private ownsBrowser;
|
|
102
|
+
private cursorInjected;
|
|
103
|
+
private connectionMode;
|
|
104
|
+
private agentTab;
|
|
105
|
+
/** How the live connection was established (see connectionMode). */
|
|
106
|
+
getConnectionMode(): 'dedicated' | 'attached' | 'unknown';
|
|
107
|
+
/**
|
|
108
|
+
* @param cdpPort CDP debugging port (default 9223)
|
|
109
|
+
*/
|
|
110
|
+
constructor(cdpPort?: number);
|
|
111
|
+
/**
|
|
112
|
+
* Connect to an existing Chrome/Edge instance via CDP.
|
|
113
|
+
*
|
|
114
|
+
* The browser must be launched with:
|
|
115
|
+
* msedge.exe --remote-debugging-port=9223
|
|
116
|
+
* chrome.exe --remote-debugging-port=9223
|
|
117
|
+
*
|
|
118
|
+
* @param port Override the port for this attempt (defaults to the
|
|
119
|
+
* constructor port). Ownership is encoded in the port: AGENT_CDP_PORT is
|
|
120
|
+
* only ever used by our own dedicated-profile launcher, so connecting
|
|
121
|
+
* there means 'dedicated'; any other port means we attached to a browser
|
|
122
|
+
* someone else put on the wire → 'attached'.
|
|
123
|
+
* @returns true if connected successfully
|
|
124
|
+
*/
|
|
125
|
+
connect(port?: number): Promise<boolean>;
|
|
126
|
+
/**
|
|
127
|
+
* Ensure a CDP connection exists WITHOUT disturbing the user's own browser.
|
|
128
|
+
*
|
|
129
|
+
* Ownership is encoded in the PORT (root-cause fix 2026-06-11 — a single
|
|
130
|
+
* shared port meant the driver could not tell its own dedicated instance
|
|
131
|
+
* from the user's browser, and a lingering agent instance the user had
|
|
132
|
+
* adopted got its tabs hijacked):
|
|
133
|
+
*
|
|
134
|
+
* 1. Already connected → done.
|
|
135
|
+
* 2. Attach on AGENT_CDP_PORT — only our own dedicated-profile launcher
|
|
136
|
+
* ever uses that port, so this is OUR instance → 'dedicated'.
|
|
137
|
+
* 3. Attach on the user port (constructor port, default 9223) — a browser
|
|
138
|
+
* the USER put on the wire (their own flags, relaunch_with_cdp, the
|
|
139
|
+
* relay) → 'attached'; navigation gets new-tab discipline.
|
|
140
|
+
* 4. If `launch` is allowed, spawn the SYSTEM browser on AGENT_CDP_PORT
|
|
141
|
+
* with a dedicated `--user-data-dir`. Chromium keys its single-instance
|
|
142
|
+
* lock on the profile directory, so this starts a SEPARATE process that
|
|
143
|
+
* never closes, reuses, or steals focus from the user's windows. The
|
|
144
|
+
* blank tab is labeled "ClawdCursor — agent browser" so the window is
|
|
145
|
+
* recognizable and doesn't get silently adopted as a personal browser.
|
|
146
|
+
*
|
|
147
|
+
* @param opts.launch Allow launching a dedicated instance (default false → attach-only).
|
|
148
|
+
* @param opts.exePaths Candidate browser executables, in priority order.
|
|
149
|
+
*/
|
|
150
|
+
ensureConnected(opts?: {
|
|
151
|
+
launch?: boolean;
|
|
152
|
+
exePaths?: string[];
|
|
153
|
+
}): Promise<boolean>;
|
|
154
|
+
/**
|
|
155
|
+
* Stamp the dedicated instance's blank tab so the WINDOW is identifiable in
|
|
156
|
+
* the taskbar / Alt-Tab as the agent's, not a second personal browser. The
|
|
157
|
+
* 2026-06-11 incident started exactly this way: an unlabeled agent instance
|
|
158
|
+
* lingered, the user adopted it for music, and a later attach drove their tab.
|
|
159
|
+
*/
|
|
160
|
+
private labelAgentBrowser;
|
|
161
|
+
/** Navigate the active page to a URL (waits for DOM content to load). */
|
|
162
|
+
navigate(url: string): Promise<CDPInteractionResult>;
|
|
163
|
+
/**
|
|
164
|
+
* Attach to an existing Playwright Page object.
|
|
165
|
+
* Use this when an outer caller already holds a CDP connection — avoid duplicate CDP connections.
|
|
166
|
+
*/
|
|
167
|
+
attachToPage(page: Page): void;
|
|
168
|
+
/**
|
|
169
|
+
* Switch to a tab whose URL contains the given substring.
|
|
170
|
+
* Useful after navigation when the agent needs to find a specific page.
|
|
171
|
+
*/
|
|
172
|
+
switchToTabByUrl(urlSubstring: string): Promise<boolean>;
|
|
173
|
+
/** Check if we're connected and the page is still alive */
|
|
174
|
+
isConnected(): Promise<boolean>;
|
|
175
|
+
/**
|
|
176
|
+
* Switch to a different tab by URL substring or title substring.
|
|
177
|
+
*/
|
|
178
|
+
switchTab(urlOrTitleSubstring: string): Promise<boolean>;
|
|
179
|
+
/**
|
|
180
|
+
* Query elements by CSS selector.
|
|
181
|
+
* Returns info about all matching elements.
|
|
182
|
+
*/
|
|
183
|
+
querySelectorAll(selector: string, maxResults?: number): Promise<DOMElementInfo[]>;
|
|
184
|
+
/**
|
|
185
|
+
* Find a single element by CSS selector.
|
|
186
|
+
*/
|
|
187
|
+
querySelector(selector: string): Promise<DOMElementInfo | null>;
|
|
188
|
+
/**
|
|
189
|
+
* Find elements by their visible text content.
|
|
190
|
+
* Useful for clicking buttons like "Compose", "Send", "Save Draft".
|
|
191
|
+
*
|
|
192
|
+
* @param text Text to search for (case-insensitive, partial match)
|
|
193
|
+
* @param tagFilter Optional tag name filter (e.g., 'button', 'a', 'div')
|
|
194
|
+
*/
|
|
195
|
+
findByText(text: string, tagFilter?: string): Promise<DOMElementInfo[]>;
|
|
196
|
+
/**
|
|
197
|
+
* Find form fields by their associated label text.
|
|
198
|
+
* Handles both <label for="..."> and label wrapping the input.
|
|
199
|
+
*/
|
|
200
|
+
findFieldByLabel(labelText: string): Promise<DOMElementInfo | null>;
|
|
201
|
+
/**
|
|
202
|
+
* Click an element by CSS selector.
|
|
203
|
+
* Uses JS dispatchEvent (reliable on background CDP tabs with 0x0 viewport).
|
|
204
|
+
* Falls back to Playwright click if JS dispatch doesn't work.
|
|
205
|
+
*/
|
|
206
|
+
click(selector: string): Promise<CDPInteractionResult>;
|
|
207
|
+
/**
|
|
208
|
+
* Click an element by its visible text content.
|
|
209
|
+
*
|
|
210
|
+
* This is the most natural way to interact with web UIs:
|
|
211
|
+
* await cdp.clickByText('Compose');
|
|
212
|
+
* await cdp.clickByText('Send');
|
|
213
|
+
* await cdp.clickByText('Discard');
|
|
214
|
+
*/
|
|
215
|
+
clickByText(text: string): Promise<CDPInteractionResult>;
|
|
216
|
+
/**
|
|
217
|
+
* Type text into a field identified by CSS selector.
|
|
218
|
+
*
|
|
219
|
+
* Clears the field first (select all + delete), then types.
|
|
220
|
+
* For content-editable divs (like Gmail compose body), uses fill() which
|
|
221
|
+
* works better than type() for non-input elements.
|
|
222
|
+
*/
|
|
223
|
+
typeInField(selector: string, text: string): Promise<CDPInteractionResult>;
|
|
224
|
+
/**
|
|
225
|
+
* Type into a field found by its label or aria-label.
|
|
226
|
+
*
|
|
227
|
+
* This is the most user-friendly way to fill forms:
|
|
228
|
+
* await cdp.typeByLabel('To', 'user@example.com');
|
|
229
|
+
* await cdp.typeByLabel('Subject', 'Meeting notes');
|
|
230
|
+
*/
|
|
231
|
+
typeByLabel(label: string, text: string): Promise<CDPInteractionResult>;
|
|
232
|
+
/**
|
|
233
|
+
* Fill a form by mapping label text → value.
|
|
234
|
+
*
|
|
235
|
+
* Example (Gmail compose):
|
|
236
|
+
* await cdp.fillFormByLabels({
|
|
237
|
+
* 'To': 'friend@gmail.com',
|
|
238
|
+
* 'Subject': 'Hello!',
|
|
239
|
+
* 'Message Body': 'How are you doing?'
|
|
240
|
+
* });
|
|
241
|
+
*/
|
|
242
|
+
fillFormByLabels(fields: Record<string, string>): Promise<{
|
|
243
|
+
success: boolean;
|
|
244
|
+
results: Record<string, CDPInteractionResult>;
|
|
245
|
+
}>;
|
|
246
|
+
/**
|
|
247
|
+
* Focus an element by CSS selector.
|
|
248
|
+
*/
|
|
249
|
+
focus(selector: string): Promise<CDPInteractionResult>;
|
|
250
|
+
/**
|
|
251
|
+
* Select an option in a <select> dropdown.
|
|
252
|
+
*
|
|
253
|
+
* @param selector CSS selector for the <select> element
|
|
254
|
+
* @param valueOrLabel Option value or visible text to select
|
|
255
|
+
*/
|
|
256
|
+
selectOption(selector: string, valueOrLabel: string): Promise<CDPInteractionResult>;
|
|
257
|
+
/**
|
|
258
|
+
* Press a keyboard key (while the page has focus).
|
|
259
|
+
*/
|
|
260
|
+
pressKey(key: string): Promise<CDPInteractionResult>;
|
|
261
|
+
/** Get current page URL */
|
|
262
|
+
getUrl(): Promise<string | null>;
|
|
263
|
+
/** Get current page title */
|
|
264
|
+
getTitle(): Promise<string | null>;
|
|
265
|
+
/**
|
|
266
|
+
* Get a text summary of the visible, interactive elements on the page.
|
|
267
|
+
* Useful for building context for an LLM without screenshots.
|
|
268
|
+
*/
|
|
269
|
+
getInteractiveElements(): Promise<DOMElementInfo[]>;
|
|
270
|
+
/**
|
|
271
|
+
* Get a text representation of the page's interactive elements.
|
|
272
|
+
* Formatted for LLM consumption — compact, informative.
|
|
273
|
+
*/
|
|
274
|
+
getPageContext(): Promise<string>;
|
|
275
|
+
/**
|
|
276
|
+
* Read text content from a DOM element (safe, parameterized — no CSS injection risk).
|
|
277
|
+
* @param selector CSS selector for the target element (default: 'body')
|
|
278
|
+
* @param maxLength Maximum characters to return (default: 3000)
|
|
279
|
+
*/
|
|
280
|
+
readText(selector?: string, maxLength?: number): Promise<string>;
|
|
281
|
+
/**
|
|
282
|
+
* Read the current value of a form field (safe, parameterized — no CSS injection risk).
|
|
283
|
+
* @param selector CSS selector for the input/textarea element
|
|
284
|
+
*/
|
|
285
|
+
readFieldValue(selector: string): Promise<string>;
|
|
286
|
+
/**
|
|
287
|
+
* Evaluate arbitrary JavaScript in the page context.
|
|
288
|
+
* Use this for custom interactions not covered by the standard methods.
|
|
289
|
+
*
|
|
290
|
+
* @param script JavaScript code to evaluate
|
|
291
|
+
* @returns The return value of the script, serialized
|
|
292
|
+
*/
|
|
293
|
+
evaluate<T = any>(script: string): Promise<T>;
|
|
294
|
+
/**
|
|
295
|
+
* Wait for a selector to appear on the page.
|
|
296
|
+
*/
|
|
297
|
+
waitForSelector(selector: string, timeoutMs?: number): Promise<CDPInteractionResult>;
|
|
298
|
+
/**
|
|
299
|
+
* Wait for navigation to complete (e.g., after clicking a link).
|
|
300
|
+
*/
|
|
301
|
+
waitForNavigation(timeoutMs?: number): Promise<CDPInteractionResult>;
|
|
302
|
+
/**
|
|
303
|
+
* Disconnect from the browser.
|
|
304
|
+
* Only closes the CDP connection if we own it — doesn't close the user's browser.
|
|
305
|
+
*/
|
|
306
|
+
disconnect(): Promise<void>;
|
|
307
|
+
/** Get the underlying Playwright Page (for advanced usage) */
|
|
308
|
+
getPage(): Page | null;
|
|
309
|
+
/** Ensure a virtual cursor overlay exists in the page */
|
|
310
|
+
private ensureCursorOverlay;
|
|
311
|
+
private moveVirtualCursor;
|
|
312
|
+
private moveCursorToSelector;
|
|
313
|
+
/**
|
|
314
|
+
* Guard: ensure we have an active page and return it.
|
|
315
|
+
* Throws if not connected.
|
|
316
|
+
*/
|
|
317
|
+
private requirePage;
|
|
318
|
+
}
|