@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":"smart.js","sourceRoot":"","sources":["../../src/tools/smart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport-agnostic tool definitions.
|
|
3
|
+
*
|
|
4
|
+
* Tools are defined once here and adapted to:
|
|
5
|
+
* - HTTP REST API (GET /tools, POST /execute/:name)
|
|
6
|
+
* - MCP protocol (stdio or SSE)
|
|
7
|
+
* - OpenAI function-calling format (GET /tools?format=openai)
|
|
8
|
+
*
|
|
9
|
+
* No MCP, no Zod, no framework dependency — just plain TypeScript.
|
|
10
|
+
*/
|
|
11
|
+
/** Parameter definition for a tool (maps to JSON Schema) */
|
|
12
|
+
export interface ParameterDef {
|
|
13
|
+
type: 'string' | 'number' | 'boolean' | 'array';
|
|
14
|
+
description: string;
|
|
15
|
+
required?: boolean;
|
|
16
|
+
enum?: string[];
|
|
17
|
+
minimum?: number;
|
|
18
|
+
maximum?: number;
|
|
19
|
+
default?: any;
|
|
20
|
+
/** For type:'array' — the JSON Schema each element must match. */
|
|
21
|
+
items?: Record<string, any>;
|
|
22
|
+
}
|
|
23
|
+
/** Result returned by a tool handler */
|
|
24
|
+
export interface ToolResult {
|
|
25
|
+
/** Text output */
|
|
26
|
+
text: string;
|
|
27
|
+
/** Optional image (base64 encoded) */
|
|
28
|
+
image?: {
|
|
29
|
+
data: string;
|
|
30
|
+
mimeType: string;
|
|
31
|
+
};
|
|
32
|
+
/** Whether this result represents an error */
|
|
33
|
+
isError?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Shared context passed to tool handlers — initialized subsystems */
|
|
36
|
+
export interface ToolContext {
|
|
37
|
+
/** NativeDesktop — mouse, keyboard, screenshot control */
|
|
38
|
+
desktop: any;
|
|
39
|
+
/** AccessibilityBridge — UI automation, windows, clipboard */
|
|
40
|
+
a11y: any;
|
|
41
|
+
/** CDPDriver — browser DOM interaction via Chrome DevTools Protocol */
|
|
42
|
+
cdp: any;
|
|
43
|
+
/**
|
|
44
|
+
* PlatformAdapter — OS-agnostic primitives added in Tranche 1A
|
|
45
|
+
* (mouseDown/Up, keyDown/Up, setWindowState, setWindowBounds,
|
|
46
|
+
* listDisplays, waitForElement, widened invokeElement).
|
|
47
|
+
* Lazy-loaded via `ensureInitialized` so tool handlers don't need
|
|
48
|
+
* async dance on every call.
|
|
49
|
+
*/
|
|
50
|
+
platform?: import('../platform/types').PlatformAdapter;
|
|
51
|
+
/**
|
|
52
|
+
* The autonomous Agent — present in `clawdcursor agent` (the daemon)
|
|
53
|
+
* and undefined when run via stdio MCP without a running agent.
|
|
54
|
+
* Used by submit_task / abort_task / agent_status / task_logs_*.
|
|
55
|
+
* v0.9 PR7.2: was previously implicit on `agent.x` accesses inside
|
|
56
|
+
* REST handlers; now it lives on ToolContext so MCP tools can use it.
|
|
57
|
+
*/
|
|
58
|
+
agent?: import('../core/agent').Agent;
|
|
59
|
+
/**
|
|
60
|
+
* Optional log buffer accessor — populated by the daemon's createServer.
|
|
61
|
+
* MCP `logs_recent` reads through this; null/missing means logs are not
|
|
62
|
+
* captured (e.g. stdio MCP).
|
|
63
|
+
*/
|
|
64
|
+
getLogBuffer?: () => Array<{
|
|
65
|
+
timestamp: number;
|
|
66
|
+
level: string;
|
|
67
|
+
message: string;
|
|
68
|
+
}>;
|
|
69
|
+
/** Session-scoped UIMap cache for safe el_NN element refs (Part 2). */
|
|
70
|
+
uiMaps?: import('../core/sense/ui-map-holder').UIMapHolder;
|
|
71
|
+
/** Image-space → logical (mouse) coords. mouseCoord = imageCoord * factor */
|
|
72
|
+
getMouseScaleFactor: () => number;
|
|
73
|
+
/** Image-space → physical pixel coords (for screenshot region crop) */
|
|
74
|
+
getScreenshotScaleFactor: () => number;
|
|
75
|
+
/** Ensure subsystems are initialized (lazy init gate) */
|
|
76
|
+
ensureInitialized: () => Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
/** The 6 compact compound tool names */
|
|
79
|
+
export type CompactGroup = 'computer' | 'accessibility' | 'window' | 'system' | 'browser' | 'task';
|
|
80
|
+
/**
|
|
81
|
+
* What kind of evidence a tool produces and how token-expensive its
|
|
82
|
+
* response typically is for the calling LLM. Distinct from `safetyTier`
|
|
83
|
+
* (which answers "is this destructive?") — `costClass` answers "how
|
|
84
|
+
* much will I pay in tokens when this returns?".
|
|
85
|
+
*
|
|
86
|
+
* Cheaper-first ordering: `act` < `inspect` < `perceive-text` < `perceive-image`.
|
|
87
|
+
*
|
|
88
|
+
* act — side-effect verb; caller already knows what + where.
|
|
89
|
+
* Response typically ≤200 tokens (a status line).
|
|
90
|
+
* Examples: mouse_click, key_press, type_text, mouse_drag.
|
|
91
|
+
*
|
|
92
|
+
* inspect — cheap structured read. Response ≤2K tokens.
|
|
93
|
+
* Examples: get_active_window, get_windows, find_element,
|
|
94
|
+
* cdp_list_tabs.
|
|
95
|
+
*
|
|
96
|
+
* perceive-text — a11y tree, OCR, or DOM dump. Response ≤10K tokens.
|
|
97
|
+
* Examples: read_screen, ocr_read_screen, cdp_page_context,
|
|
98
|
+
* smart_click (internally OCR+a11y), smart_type.
|
|
99
|
+
*
|
|
100
|
+
* perceive-image — screenshot with image bytes. Response ≤50K tokens
|
|
101
|
+
* including base64 image data; vision LLMs pay extra.
|
|
102
|
+
* Examples: desktop_screenshot, desktop_screenshot_region.
|
|
103
|
+
*
|
|
104
|
+
* Compound dispatcher tools (`computer`, `accessibility`, `window`, `system`,
|
|
105
|
+
* `browser`, `task`) leave this `undefined` — their cost depends on which
|
|
106
|
+
* delegate the `action` parameter routes to.
|
|
107
|
+
*/
|
|
108
|
+
export type ToolCostClass = 'act' | 'inspect' | 'perceive-text' | 'perceive-image';
|
|
109
|
+
/** A single tool definition — transport agnostic */
|
|
110
|
+
export interface ToolDefinition {
|
|
111
|
+
/** Unique tool name (e.g. "mouse_click", "read_screen") */
|
|
112
|
+
name: string;
|
|
113
|
+
/** Human-readable description of what the tool does */
|
|
114
|
+
description: string;
|
|
115
|
+
/** Parameter schema — empty object for no-param tools */
|
|
116
|
+
parameters: Record<string, ParameterDef>;
|
|
117
|
+
/** Tool category for organization */
|
|
118
|
+
category: 'perception' | 'mouse' | 'keyboard' | 'window' | 'clipboard' | 'browser' | 'orchestration';
|
|
119
|
+
/**
|
|
120
|
+
* The compact compound this granular tool belongs to.
|
|
121
|
+
* Derived by reverse-engineering the ACTION_MAP in compact.ts.
|
|
122
|
+
* Undefined for granular tools that are not exposed via any compound
|
|
123
|
+
* (e.g. smart_read, smart_click, smart_type, minimize_window).
|
|
124
|
+
*/
|
|
125
|
+
compactGroup?: CompactGroup;
|
|
126
|
+
/**
|
|
127
|
+
* Safety tier for the canonical safety gate.
|
|
128
|
+
*
|
|
129
|
+
* 0 — read-only (screenshot, a11y snapshot, clipboard read …)
|
|
130
|
+
* 1 — neutral input (click, type, scroll — reversible, no irreversible side-effect)
|
|
131
|
+
* 2 — mutation (close window, write clipboard, navigate …)
|
|
132
|
+
* 3 — destructive / system (cdp_evaluate arbitrary JS, relaunch_with_cdp …)
|
|
133
|
+
*
|
|
134
|
+
* When omitted the gate falls back to the `TOOL_TIER` name-lookup table in
|
|
135
|
+
* `pipeline/safety/layer.ts` for backward-compatibility.
|
|
136
|
+
*/
|
|
137
|
+
safetyTier?: 0 | 1 | 2 | 3;
|
|
138
|
+
/**
|
|
139
|
+
* Token-cost class — what kind of evidence this tool returns and how
|
|
140
|
+
* expensive its response is for the calling LLM. See `ToolCostClass`.
|
|
141
|
+
* `tools/list` exposes this so a tool-picking LLM can prefer cheaper
|
|
142
|
+
* alternatives first (e.g. `find_element` before `read_screen` before
|
|
143
|
+
* `desktop_screenshot`).
|
|
144
|
+
*
|
|
145
|
+
* Optional during the rollout. The coverage test in
|
|
146
|
+
* `src/__tests__/cost-class-coverage.test.ts` warns on missing values
|
|
147
|
+
* and will flip to required in a future minor.
|
|
148
|
+
*/
|
|
149
|
+
costClass?: ToolCostClass;
|
|
150
|
+
/**
|
|
151
|
+
* Other tools the caller should try BEFORE this one when they apply
|
|
152
|
+
* to the same job at a lower cost class. Names must reference real
|
|
153
|
+
* tools — validated at module load.
|
|
154
|
+
*
|
|
155
|
+
* Example: `read_screen.cheaperAlternatives = ['find_element']`.
|
|
156
|
+
*/
|
|
157
|
+
cheaperAlternatives?: string[];
|
|
158
|
+
/** The handler function */
|
|
159
|
+
handler: (params: Record<string, any>, ctx: ToolContext) => Promise<ToolResult>;
|
|
160
|
+
}
|
|
161
|
+
/** Convert tool parameters to JSON Schema (for REST API /tools endpoint) */
|
|
162
|
+
export declare function toJsonSchema(params: Record<string, ParameterDef>): object;
|
|
163
|
+
/** Convert tools to OpenAI function-calling format */
|
|
164
|
+
export declare function toOpenAiFunctions(tools: ToolDefinition[]): object[];
|
|
165
|
+
/**
|
|
166
|
+
* Convert a11y coordinate to mouseClick coordinate.
|
|
167
|
+
*
|
|
168
|
+
* NOTE: Empirical testing shows a11y bounds and nut-js mouseClick share the
|
|
169
|
+
* same coordinate system on most Windows configs (both use screen coords from
|
|
170
|
+
* the same DPI-awareness level). This function may divide unnecessarily on
|
|
171
|
+
* some setups. The smart tools (smart_click, invoke_element) pass coords
|
|
172
|
+
* directly for this reason. Only focus_window uses this helper as a fallback.
|
|
173
|
+
*/
|
|
174
|
+
export declare function a11yToMouse(physicalCoord: number, ctx: ToolContext): number;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Transport-agnostic tool definitions.
|
|
4
|
+
*
|
|
5
|
+
* Tools are defined once here and adapted to:
|
|
6
|
+
* - HTTP REST API (GET /tools, POST /execute/:name)
|
|
7
|
+
* - MCP protocol (stdio or SSE)
|
|
8
|
+
* - OpenAI function-calling format (GET /tools?format=openai)
|
|
9
|
+
*
|
|
10
|
+
* No MCP, no Zod, no framework dependency — just plain TypeScript.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.toJsonSchema = toJsonSchema;
|
|
14
|
+
exports.toOpenAiFunctions = toOpenAiFunctions;
|
|
15
|
+
exports.a11yToMouse = a11yToMouse;
|
|
16
|
+
// ── Schema Conversion Helpers ──
|
|
17
|
+
/** Convert tool parameters to JSON Schema (for REST API /tools endpoint) */
|
|
18
|
+
function toJsonSchema(params) {
|
|
19
|
+
const properties = {};
|
|
20
|
+
const required = [];
|
|
21
|
+
for (const [key, def] of Object.entries(params)) {
|
|
22
|
+
const prop = { type: def.type, description: def.description };
|
|
23
|
+
if (def.enum)
|
|
24
|
+
prop.enum = def.enum;
|
|
25
|
+
if (def.minimum !== undefined)
|
|
26
|
+
prop.minimum = def.minimum;
|
|
27
|
+
if (def.maximum !== undefined)
|
|
28
|
+
prop.maximum = def.maximum;
|
|
29
|
+
if (def.default !== undefined)
|
|
30
|
+
prop.default = def.default;
|
|
31
|
+
if (def.items !== undefined)
|
|
32
|
+
prop.items = def.items;
|
|
33
|
+
properties[key] = prop;
|
|
34
|
+
if (def.required !== false)
|
|
35
|
+
required.push(key);
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
type: 'object',
|
|
39
|
+
properties,
|
|
40
|
+
required: required.length > 0 ? required : undefined,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** Convert tools to OpenAI function-calling format */
|
|
44
|
+
function toOpenAiFunctions(tools) {
|
|
45
|
+
return tools.map(t => ({
|
|
46
|
+
type: 'function',
|
|
47
|
+
function: {
|
|
48
|
+
name: t.name,
|
|
49
|
+
description: t.description,
|
|
50
|
+
parameters: toJsonSchema(t.parameters),
|
|
51
|
+
},
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Convert a11y coordinate to mouseClick coordinate.
|
|
56
|
+
*
|
|
57
|
+
* NOTE: Empirical testing shows a11y bounds and nut-js mouseClick share the
|
|
58
|
+
* same coordinate system on most Windows configs (both use screen coords from
|
|
59
|
+
* the same DPI-awareness level). This function may divide unnecessarily on
|
|
60
|
+
* some setups. The smart tools (smart_click, invoke_element) pass coords
|
|
61
|
+
* directly for this reason. Only focus_window uses this helper as a fallback.
|
|
62
|
+
*/
|
|
63
|
+
function a11yToMouse(physicalCoord, ctx) {
|
|
64
|
+
const dpiRatio = ctx.getScreenshotScaleFactor() / ctx.getMouseScaleFactor();
|
|
65
|
+
return Math.round(physicalCoord / dpiRatio);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AA0JH,oCAoBC;AAGD,8CASC;AAWD,kCAGC;AAjDD,kCAAkC;AAElC,4EAA4E;AAC5E,SAAgB,YAAY,CAAC,MAAoC;IAC/D,MAAM,UAAU,GAAwB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACnE,IAAI,GAAG,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACnC,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC1D,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC1D,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC1D,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACpD,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU;QACV,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,SAAgB,iBAAiB,CAAC,KAAuB;IACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;SACvC;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,WAAW,CAAC,aAAqB,EAAE,GAAgB;IACjE,MAAM,QAAQ,GAAG,GAAG,CAAC,wBAAwB,EAAE,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC5E,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Window/title text normalization for substring matching.
|
|
3
|
+
*
|
|
4
|
+
* Real-world window titles contain invisible Unicode that breaks naive
|
|
5
|
+
* substring compares. Microsoft Edge inserts a NO-BREAK SPACE (U+00A0) between
|
|
6
|
+
* "Microsoft" and "Edge", so a guard like `expect:{window:"Microsoft Edge"}`
|
|
7
|
+
* against the live title "... - Microsoft Edge" silently fails even though the
|
|
8
|
+
* window IS Edge (session 2026-06-11). Normalize both sides before comparing:
|
|
9
|
+
* strip zero-width characters, fold every Unicode whitespace run to a single
|
|
10
|
+
* ASCII space, lower-case, trim.
|
|
11
|
+
*/
|
|
12
|
+
/** Normalize a title/window string for robust case-insensitive substring matching. */
|
|
13
|
+
export declare function normalizeWindowText(s: string | undefined | null): string;
|
|
14
|
+
/** True when `haystack` contains `needle` after both are window-normalized. */
|
|
15
|
+
export declare function windowTextIncludes(haystack: string | undefined | null, needle: string | undefined | null): boolean;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Window/title text normalization for substring matching.
|
|
4
|
+
*
|
|
5
|
+
* Real-world window titles contain invisible Unicode that breaks naive
|
|
6
|
+
* substring compares. Microsoft Edge inserts a NO-BREAK SPACE (U+00A0) between
|
|
7
|
+
* "Microsoft" and "Edge", so a guard like `expect:{window:"Microsoft Edge"}`
|
|
8
|
+
* against the live title "... - Microsoft Edge" silently fails even though the
|
|
9
|
+
* window IS Edge (session 2026-06-11). Normalize both sides before comparing:
|
|
10
|
+
* strip zero-width characters, fold every Unicode whitespace run to a single
|
|
11
|
+
* ASCII space, lower-case, trim.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.normalizeWindowText = normalizeWindowText;
|
|
15
|
+
exports.windowTextIncludes = windowTextIncludes;
|
|
16
|
+
// Zero-width / formatting characters that carry no visible meaning but defeat
|
|
17
|
+
// equality: ZWSP/ZWNJ/ZWJ + LTR/RTL marks (U+200B-U+200F), embedding/override
|
|
18
|
+
// controls (U+202A-U+202E), word joiner (U+2060), BOM/ZWNBSP (U+FEFF).
|
|
19
|
+
// (NBSP U+00A0, narrow-NBSP U+202F and the rest of the Zs category are matched
|
|
20
|
+
// by \s in JS regexes, so the whitespace fold below already handles them.)
|
|
21
|
+
const ZERO_WIDTH = new RegExp('[\u200B-\u200F\u202A-\u202E\u2060\uFEFF]', 'g');
|
|
22
|
+
/** Normalize a title/window string for robust case-insensitive substring matching. */
|
|
23
|
+
function normalizeWindowText(s) {
|
|
24
|
+
if (!s)
|
|
25
|
+
return '';
|
|
26
|
+
return s
|
|
27
|
+
.replace(ZERO_WIDTH, '')
|
|
28
|
+
.replace(/\s+/g, ' ') // folds NBSP/narrow-NBSP/tabs/newlines to one space
|
|
29
|
+
.trim()
|
|
30
|
+
.toLowerCase();
|
|
31
|
+
}
|
|
32
|
+
/** True when `haystack` contains `needle` after both are window-normalized. */
|
|
33
|
+
function windowTextIncludes(haystack, needle) {
|
|
34
|
+
const n = normalizeWindowText(needle);
|
|
35
|
+
if (!n)
|
|
36
|
+
return false;
|
|
37
|
+
return normalizeWindowText(haystack).includes(n);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=window-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"window-text.js","sourceRoot":"","sources":["../../src/tools/window-text.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAUH,kDAOC;AAGD,gDAOC;AAzBD,8EAA8E;AAC9E,8EAA8E;AAC9E,uEAAuE;AACvE,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;AAE/E,sFAAsF;AACtF,SAAgB,mBAAmB,CAAC,CAA4B;IAC9D,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,OAAO,CAAC;SACL,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAG,oDAAoD;SAC3E,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,SAAgB,kBAAkB,CAChC,QAAmC,EACnC,MAAiC;IAEjC,MAAM,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
export declare enum SafetyTier {
|
|
2
|
+
Auto = "auto",
|
|
3
|
+
Preview = "preview",
|
|
4
|
+
Confirm = "confirm"
|
|
5
|
+
}
|
|
6
|
+
export interface ScreenFrame {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
buffer: Buffer;
|
|
10
|
+
timestamp: number;
|
|
11
|
+
format: 'png' | 'jpeg' | 'raw';
|
|
12
|
+
}
|
|
13
|
+
export interface MouseAction {
|
|
14
|
+
kind: 'click' | 'double_click' | 'right_click' | 'move' | 'drag' | 'scroll';
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
endX?: number;
|
|
18
|
+
endY?: number;
|
|
19
|
+
scrollDelta?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface KeyboardAction {
|
|
22
|
+
kind: 'type' | 'key_press';
|
|
23
|
+
text?: string;
|
|
24
|
+
key?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface A11yAction {
|
|
27
|
+
kind: 'a11y_click' | 'a11y_set_value' | 'a11y_focus' | 'a11y_get_value';
|
|
28
|
+
name?: string;
|
|
29
|
+
automationId?: string;
|
|
30
|
+
controlType?: string;
|
|
31
|
+
value?: string;
|
|
32
|
+
}
|
|
33
|
+
export type InputAction = MouseAction | KeyboardAction | A11yAction;
|
|
34
|
+
export interface ActionSequence {
|
|
35
|
+
kind: 'sequence';
|
|
36
|
+
steps: Array<InputAction & {
|
|
37
|
+
description: string;
|
|
38
|
+
}>;
|
|
39
|
+
description: string;
|
|
40
|
+
}
|
|
41
|
+
export interface TaskRequest {
|
|
42
|
+
task: string;
|
|
43
|
+
safetyOverride?: SafetyTier;
|
|
44
|
+
}
|
|
45
|
+
export interface TaskResult {
|
|
46
|
+
success: boolean;
|
|
47
|
+
steps: StepResult[];
|
|
48
|
+
error?: string;
|
|
49
|
+
duration: number;
|
|
50
|
+
}
|
|
51
|
+
export interface StepResult {
|
|
52
|
+
action: string;
|
|
53
|
+
description: string;
|
|
54
|
+
success: boolean;
|
|
55
|
+
screenshot?: string;
|
|
56
|
+
error?: string;
|
|
57
|
+
timestamp: number;
|
|
58
|
+
layer?: 'browser' | 'router' | 'smart' | 'ocr' | 'a11y' | 'unified' | 'computer-use' | 'deterministic';
|
|
59
|
+
method?: string;
|
|
60
|
+
coordinates?: [number, number];
|
|
61
|
+
elementName?: string;
|
|
62
|
+
elementType?: string;
|
|
63
|
+
verified?: boolean;
|
|
64
|
+
latencyMs?: number;
|
|
65
|
+
}
|
|
66
|
+
export interface AgentState {
|
|
67
|
+
status: 'idle' | 'thinking' | 'acting' | 'waiting_confirm' | 'paused';
|
|
68
|
+
currentTask?: string;
|
|
69
|
+
currentStep?: string;
|
|
70
|
+
stepsCompleted: number;
|
|
71
|
+
stepsTotal: number;
|
|
72
|
+
/**
|
|
73
|
+
* Result of the most recent `executeTask()` call. Populated when status
|
|
74
|
+
* transitions back to `idle`; cleared at the start of the next task. Lets
|
|
75
|
+
* external pollers (e.g. the `delegate_to_agent` compact tool) read the
|
|
76
|
+
* outcome of a completed task without holding a reference to the
|
|
77
|
+
* `executeTask` promise.
|
|
78
|
+
*/
|
|
79
|
+
lastResult?: TaskResult;
|
|
80
|
+
}
|
|
81
|
+
export interface ClawdConfig {
|
|
82
|
+
server: {
|
|
83
|
+
port: number;
|
|
84
|
+
host: string;
|
|
85
|
+
};
|
|
86
|
+
ai: {
|
|
87
|
+
provider: string;
|
|
88
|
+
apiKey?: string;
|
|
89
|
+
/** Optional OpenAI-compatible endpoint override (skill-host supplied). */
|
|
90
|
+
baseUrl?: string;
|
|
91
|
+
/** Optional text-only endpoint/key for decomposition (can differ from vision). */
|
|
92
|
+
textBaseUrl?: string;
|
|
93
|
+
textApiKey?: string;
|
|
94
|
+
/** Optional vision endpoint/key for screenshot reasoning (can differ from text). */
|
|
95
|
+
visionBaseUrl?: string;
|
|
96
|
+
visionApiKey?: string;
|
|
97
|
+
model: string;
|
|
98
|
+
visionModel: string;
|
|
99
|
+
};
|
|
100
|
+
safety: {
|
|
101
|
+
defaultTier: SafetyTier;
|
|
102
|
+
confirmPatterns: string[];
|
|
103
|
+
blockedPatterns: string[];
|
|
104
|
+
};
|
|
105
|
+
capture: {
|
|
106
|
+
format: 'png' | 'jpeg';
|
|
107
|
+
quality: number;
|
|
108
|
+
};
|
|
109
|
+
/** Save screenshots to debug/ folder. Off by default for security. */
|
|
110
|
+
debug?: boolean;
|
|
111
|
+
browser?: {
|
|
112
|
+
/** Custom browser executable path (overrides auto-detection) */
|
|
113
|
+
executablePath?: string;
|
|
114
|
+
/** Process name for accessibility matching (e.g. 'comet', 'brave') */
|
|
115
|
+
processName?: string;
|
|
116
|
+
/** CDP debugging port (default: 9223) */
|
|
117
|
+
cdpPort?: number;
|
|
118
|
+
/** Additional command-line args for browser launch */
|
|
119
|
+
extraArgs?: string[];
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export declare const DEFAULT_CONFIG: ClawdConfig;
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================
|
|
3
|
+
// Clawd Cursor — Core Types
|
|
4
|
+
// ============================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_CONFIG = exports.SafetyTier = void 0;
|
|
7
|
+
var SafetyTier;
|
|
8
|
+
(function (SafetyTier) {
|
|
9
|
+
SafetyTier["Auto"] = "auto";
|
|
10
|
+
SafetyTier["Preview"] = "preview";
|
|
11
|
+
SafetyTier["Confirm"] = "confirm";
|
|
12
|
+
})(SafetyTier || (exports.SafetyTier = SafetyTier = {}));
|
|
13
|
+
exports.DEFAULT_CONFIG = {
|
|
14
|
+
server: {
|
|
15
|
+
port: 3847,
|
|
16
|
+
host: '127.0.0.1',
|
|
17
|
+
},
|
|
18
|
+
ai: {
|
|
19
|
+
provider: 'auto',
|
|
20
|
+
model: '',
|
|
21
|
+
visionModel: '',
|
|
22
|
+
},
|
|
23
|
+
safety: {
|
|
24
|
+
defaultTier: SafetyTier.Preview,
|
|
25
|
+
confirmPatterns: [
|
|
26
|
+
'send', 'delete', 'remove', 'purchase', 'buy', 'pay', 'submit',
|
|
27
|
+
'terminal', 'console', 'cmd\\.exe', 'powershell', 'bash', 'shell',
|
|
28
|
+
'sudo', 'del /[fq]', 'reboot', 'password', 'credential', 'secret',
|
|
29
|
+
'sign.?in', 'log.?in', 'authorize', 'transfer', 'wire',
|
|
30
|
+
],
|
|
31
|
+
blockedPatterns: [
|
|
32
|
+
'format.*disk', 'format c:', 'rm -rf /', 'shutdown', 'shutdown /s',
|
|
33
|
+
'reboot', 'mkfs', 'dd if=', 'diskpart', ':(){:|:&};:',
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
capture: {
|
|
37
|
+
format: 'jpeg',
|
|
38
|
+
quality: 50,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,4BAA4B;AAC5B,+CAA+C;;;AAE/C,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,iCAAmB,CAAA;AACrB,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAiIY,QAAA,cAAc,GAAgB;IACzC,MAAM,EAAE;QACN,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,WAAW;KAClB;IACD,EAAE,EAAE;QACF,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE;KAChB;IACD,MAAM,EAAE;QACN,WAAW,EAAE,UAAU,CAAC,OAAO;QAC/B,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ;YAC9D,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO;YACjE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ;YACjE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM;SACvD;QACD,eAAe,EAAE;YACf,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa;YAClE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa;SACtD;KACF;IACD,OAAO,EAAE;QACP,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE;KACZ;CACF,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// swift-tools-version: 5.9
|
|
2
|
+
import PackageDescription
|
|
3
|
+
|
|
4
|
+
let package = Package(
|
|
5
|
+
name: "ClawdCursorHelper",
|
|
6
|
+
platforms: [
|
|
7
|
+
.macOS(.v12)
|
|
8
|
+
],
|
|
9
|
+
products: [
|
|
10
|
+
.executable(name: "ClawdCursorHost", targets: ["ClawdCursorHost"]),
|
|
11
|
+
.executable(name: "clawdcursor-helper", targets: ["ClawdCursorHelper"]),
|
|
12
|
+
.executable(name: "screenshot-helper", targets: ["ScreenshotHelper"]),
|
|
13
|
+
.executable(name: "permission-check", targets: ["PermissionCheck"])
|
|
14
|
+
],
|
|
15
|
+
dependencies: [],
|
|
16
|
+
targets: [
|
|
17
|
+
.executableTarget(
|
|
18
|
+
name: "ClawdCursorHost",
|
|
19
|
+
dependencies: [],
|
|
20
|
+
path: "Sources/ClawdCursorHost"
|
|
21
|
+
),
|
|
22
|
+
.executableTarget(
|
|
23
|
+
name: "ClawdCursorHelper",
|
|
24
|
+
dependencies: [],
|
|
25
|
+
path: "Sources/ClawdCursorHelper"
|
|
26
|
+
),
|
|
27
|
+
.executableTarget(
|
|
28
|
+
name: "ScreenshotHelper",
|
|
29
|
+
dependencies: [],
|
|
30
|
+
path: "Sources/ScreenshotHelper"
|
|
31
|
+
),
|
|
32
|
+
.executableTarget(
|
|
33
|
+
name: "PermissionCheck",
|
|
34
|
+
dependencies: [],
|
|
35
|
+
path: "Sources/PermissionCheck"
|
|
36
|
+
)
|
|
37
|
+
]
|
|
38
|
+
)
|