@everydaydevopsio/pilot 0.5.0
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/.ai-agent-bridge.yaml +10 -0
- package/.dockerignore +9 -0
- package/CLAUDE.md +61 -0
- package/LICENSE +21 -0
- package/README.md +252 -0
- package/dist/browser.d.ts +100 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +654 -0
- package/dist/browser.js.map +1 -0
- package/dist/cli/init.d.ts +4 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +56 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/skill-template.d.ts +2 -0
- package/dist/cli/skill-template.d.ts.map +1 -0
- package/dist/cli/skill-template.js +114 -0
- package/dist/cli/skill-template.js.map +1 -0
- package/dist/commands/click.d.ts +21 -0
- package/dist/commands/click.d.ts.map +1 -0
- package/dist/commands/click.js +64 -0
- package/dist/commands/click.js.map +1 -0
- package/dist/commands/evaluate.d.ts +14 -0
- package/dist/commands/evaluate.d.ts.map +1 -0
- package/dist/commands/evaluate.js +28 -0
- package/dist/commands/evaluate.js.map +1 -0
- package/dist/commands/navigate.d.ts +19 -0
- package/dist/commands/navigate.d.ts.map +1 -0
- package/dist/commands/navigate.js +78 -0
- package/dist/commands/navigate.js.map +1 -0
- package/dist/commands/page_info.d.ts +8 -0
- package/dist/commands/page_info.d.ts.map +1 -0
- package/dist/commands/page_info.js +13 -0
- package/dist/commands/page_info.js.map +1 -0
- package/dist/commands/screenshot.d.ts +18 -0
- package/dist/commands/screenshot.d.ts.map +1 -0
- package/dist/commands/screenshot.js +37 -0
- package/dist/commands/screenshot.js.map +1 -0
- package/dist/commands/tabs.d.ts +10 -0
- package/dist/commands/tabs.d.ts.map +1 -0
- package/dist/commands/tabs.js +15 -0
- package/dist/commands/tabs.js.map +1 -0
- package/dist/commands/type.d.ts +14 -0
- package/dist/commands/type.d.ts.map +1 -0
- package/dist/commands/type.js +61 -0
- package/dist/commands/type.js.map +1 -0
- package/dist/commands/wait.d.ts +17 -0
- package/dist/commands/wait.d.ts.map +1 -0
- package/dist/commands/wait.js +61 -0
- package/dist/commands/wait.js.map +1 -0
- package/dist/mcp/console-buffer.d.ts +28 -0
- package/dist/mcp/console-buffer.d.ts.map +1 -0
- package/dist/mcp/console-buffer.js +68 -0
- package/dist/mcp/console-buffer.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +74 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +18 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +46 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/browser.d.ts +5 -0
- package/dist/mcp/tools/browser.d.ts.map +1 -0
- package/dist/mcp/tools/browser.js +435 -0
- package/dist/mcp/tools/browser.js.map +1 -0
- package/dist/mcp/tools/errors.d.ts +4 -0
- package/dist/mcp/tools/errors.d.ts.map +1 -0
- package/dist/mcp/tools/errors.js +117 -0
- package/dist/mcp/tools/errors.js.map +1 -0
- package/dist/mcp/tools/names.d.ts +7 -0
- package/dist/mcp/tools/names.d.ts.map +1 -0
- package/dist/mcp/tools/names.js +24 -0
- package/dist/mcp/tools/names.js.map +1 -0
- package/dist/util/config.d.ts +34 -0
- package/dist/util/config.d.ts.map +1 -0
- package/dist/util/config.js +53 -0
- package/dist/util/config.js.map +1 -0
- package/dist/util/logger.d.ts +4 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +16 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/viewport.d.ts +105 -0
- package/dist/viewport.d.ts.map +1 -0
- package/dist/viewport.js +145 -0
- package/dist/viewport.js.map +1 -0
- package/package.json +74 -0
- package/smoke/mcp-smoke.ts +161 -0
- package/src/browser.ts +798 -0
- package/src/cli/init.ts +62 -0
- package/src/cli/skill-template.ts +113 -0
- package/src/commands/click.ts +93 -0
- package/src/commands/evaluate.ts +45 -0
- package/src/commands/navigate.ts +105 -0
- package/src/commands/page_info.ts +21 -0
- package/src/commands/screenshot.ts +72 -0
- package/src/commands/tabs.ts +35 -0
- package/src/commands/type.ts +77 -0
- package/src/commands/wait.ts +90 -0
- package/src/mcp/console-buffer.ts +94 -0
- package/src/mcp/index.ts +107 -0
- package/src/mcp/server.ts +67 -0
- package/src/mcp/tools/browser.ts +605 -0
- package/src/mcp/tools/errors.ts +158 -0
- package/src/mcp/tools/names.ts +25 -0
- package/src/util/config.ts +71 -0
- package/src/util/logger.ts +18 -0
- package/src/viewport.ts +204 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAOA,wBAAsB,OAAO,CAC3B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAChC,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
package/dist/cli/init.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { mkdir, writeFile, stat } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { SKILL_CONTENT } from './skill-template.js';
|
|
4
|
+
const SKILL_DIR = '.claude/skills/debug-browser';
|
|
5
|
+
const SKILL_FILE = 'SKILL.md';
|
|
6
|
+
export async function runInit(options = {}) {
|
|
7
|
+
const cwd = process.cwd();
|
|
8
|
+
const skillDir = join(cwd, SKILL_DIR);
|
|
9
|
+
const skillPath = join(skillDir, SKILL_FILE);
|
|
10
|
+
// Check if skill already exists
|
|
11
|
+
try {
|
|
12
|
+
await stat(skillPath);
|
|
13
|
+
if (!options.force) {
|
|
14
|
+
console.log(`\x1b[33mSkill already exists:\x1b[0m ${skillPath}`);
|
|
15
|
+
console.log('Use --force to overwrite.');
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// File doesn't exist, continue
|
|
21
|
+
}
|
|
22
|
+
// Create directory structure
|
|
23
|
+
try {
|
|
24
|
+
await mkdir(skillDir, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
console.error(`\x1b[31mFailed to create directory:\x1b[0m ${skillDir}`);
|
|
28
|
+
console.error(err);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
// Write SKILL.md
|
|
32
|
+
try {
|
|
33
|
+
await writeFile(skillPath, SKILL_CONTENT, 'utf-8');
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
console.error(`\x1b[31mFailed to write skill file:\x1b[0m ${skillPath}`);
|
|
37
|
+
console.error(err);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
// Success message
|
|
41
|
+
console.log(`\x1b[32m✓ Created Claude Code skill:\x1b[0m ${skillPath}`);
|
|
42
|
+
console.log('');
|
|
43
|
+
console.log('\x1b[1mUsage:\x1b[0m');
|
|
44
|
+
console.log(' In Claude Code, say "debug in browser" or use /debug-browser');
|
|
45
|
+
console.log('');
|
|
46
|
+
console.log('\x1b[1mThe skill will:\x1b[0m');
|
|
47
|
+
console.log(' 1. Start Chrome with remote debugging');
|
|
48
|
+
console.log(' 2. Launch the pilot browser service');
|
|
49
|
+
console.log(' 3. Add the MCP server to your session');
|
|
50
|
+
console.log(' 4. Spawn an error-watching sub-agent');
|
|
51
|
+
console.log('');
|
|
52
|
+
console.log('\x1b[1mPrerequisites:\x1b[0m');
|
|
53
|
+
console.log(' - Google Chrome installed');
|
|
54
|
+
console.log(' - pilot (install with: npm install -g @everydaydevopsio/pilot)');
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,SAAS,GAAG,8BAA8B,CAAC;AACjD,MAAM,UAAU,GAAG,UAAU,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,UAA+B,EAAE;IAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE7C,gCAAgC;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,8CAA8C,QAAQ,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,8CAA8C,SAAS,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,+CAA+C,SAAS,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CACT,kEAAkE,CACnE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const SKILL_CONTENT = "---\nname: debug-browser\ndescription: Add the pilot MCP server and watch for console errors. Use this skill when the user wants to debug a web application, watch for JavaScript errors, or test their app with AI assistance.\ntools:\n - Bash\n - Task\n---\n\n# Debug Browser Skill\n\nThis skill sets up a browser debugging environment for AI-assisted development using the pilot MCP server. The MCP server manages the Chrome lifecycle automatically via `browser_start`.\n\n## What This Skill Does\n\n1. Adds the pilot MCP server to your Claude Code session\n2. Starts the browser via `browser_start`\n3. Spawns a sub-agent to watch for console errors\n\n## Instructions\n\nFollow these steps in order.\n\n### Step 1: Add MCP Server to Claude Code Session\n\nAdd the pilot MCP server to the current Claude Code session:\n\n```bash\nclaude mcp add pilot --scope session -- npx @everydaydevopsio/pilot\n```\n\nThis gives you access to browser control tools like:\n- `browser_start` - Launch Chrome\n- `browser_stop` - Stop Chrome\n- `browser_screenshot` - Capture screenshots\n- `browser_navigate` - Navigate to URLs\n- `browser_click` - Click elements\n- `browser_type` - Type text\n- `browser_evaluate` - Run JavaScript\n- `browser_get_errors` - Get console errors\n- `browser_clear_errors` - Clear error buffer\n\n### Step 2: Start the Browser\n\nUse the `browser_start` MCP tool to launch Chrome:\n\n```\nCall browser_start with headless: false to open a visible Chrome window.\n```\n\n### Step 3: Spawn Error-Watching Sub-Agent\n\nUse the Task tool to spawn a background sub-agent that monitors for console errors:\n\n```\nSpawn a sub-agent with subagent_type \"general-purpose\" and run_in_background: true with this prompt:\n\n\"You are an error-watching agent monitoring the browser for console errors.\n\nYour job:\n1. First, call browser_clear_errors to start with a clean slate\n2. Report back that monitoring has started\n3. Every 15-20 seconds, call browser_get_errors with includeWarnings: true\n4. If you find errors, report them with:\n - The error message\n - The source file and line number\n - A brief analysis of what might be wrong\n5. Continue monitoring until the main conversation ends\n\nBe concise but informative when reporting errors.\"\n```\n\n### Step 4: Inform the User\n\nTell the user:\n- The browser debugging environment is ready\n- They can navigate to their app using `browser_navigate`\n- You will be notified of any console errors automatically\n- They can ask you to take screenshots, click elements, or run JavaScript\n\n## Cleanup\n\nWhen done debugging, call `browser_stop` to shut down Chrome cleanly.\n\n## Troubleshooting\n\n### browser_start fails\n- Check if Chrome is installed: the MCP server auto-detects common paths\n- Set `PILOT_CHROME_PATH` env var to the Chrome executable if auto-detect fails\n\n### No errors detected\n- Errors are only captured while connected\n- Try `browser_get_errors` with `includeWarnings: true` to see all console output\n- Verify the page has loaded: `browser_page_info`\n\n## Example Session\n\nUser: \"debug in browser\"\n\nClaude executes:\n1. Adds MCP server to session\n2. Calls `browser_start` (headless: false)\n3. Spawns error-watching sub-agent\n4. Reports: \"Browser debugging environment ready! Navigate to your app and I'll watch for errors.\"\n\nUser: \"go to localhost:3000\"\nClaude: Uses `browser_navigate` to go to http://localhost:3000\n\n[User interacts with the app, an error occurs]\n\nSub-agent reports: \"Error detected: TypeError: Cannot read property 'map' of undefined at App.tsx:42\"\n\nClaude: Reads App.tsx, identifies the bug, suggests a fix.\n";
|
|
2
|
+
//# sourceMappingURL=skill-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-template.d.ts","sourceRoot":"","sources":["../../src/cli/skill-template.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,klHAgHzB,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export const SKILL_CONTENT = `---
|
|
2
|
+
name: debug-browser
|
|
3
|
+
description: Add the pilot MCP server and watch for console errors. Use this skill when the user wants to debug a web application, watch for JavaScript errors, or test their app with AI assistance.
|
|
4
|
+
tools:
|
|
5
|
+
- Bash
|
|
6
|
+
- Task
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Debug Browser Skill
|
|
10
|
+
|
|
11
|
+
This skill sets up a browser debugging environment for AI-assisted development using the pilot MCP server. The MCP server manages the Chrome lifecycle automatically via \`browser_start\`.
|
|
12
|
+
|
|
13
|
+
## What This Skill Does
|
|
14
|
+
|
|
15
|
+
1. Adds the pilot MCP server to your Claude Code session
|
|
16
|
+
2. Starts the browser via \`browser_start\`
|
|
17
|
+
3. Spawns a sub-agent to watch for console errors
|
|
18
|
+
|
|
19
|
+
## Instructions
|
|
20
|
+
|
|
21
|
+
Follow these steps in order.
|
|
22
|
+
|
|
23
|
+
### Step 1: Add MCP Server to Claude Code Session
|
|
24
|
+
|
|
25
|
+
Add the pilot MCP server to the current Claude Code session:
|
|
26
|
+
|
|
27
|
+
\`\`\`bash
|
|
28
|
+
claude mcp add pilot --scope session -- npx @everydaydevopsio/pilot
|
|
29
|
+
\`\`\`
|
|
30
|
+
|
|
31
|
+
This gives you access to browser control tools like:
|
|
32
|
+
- \`browser_start\` - Launch Chrome
|
|
33
|
+
- \`browser_stop\` - Stop Chrome
|
|
34
|
+
- \`browser_screenshot\` - Capture screenshots
|
|
35
|
+
- \`browser_navigate\` - Navigate to URLs
|
|
36
|
+
- \`browser_click\` - Click elements
|
|
37
|
+
- \`browser_type\` - Type text
|
|
38
|
+
- \`browser_evaluate\` - Run JavaScript
|
|
39
|
+
- \`browser_get_errors\` - Get console errors
|
|
40
|
+
- \`browser_clear_errors\` - Clear error buffer
|
|
41
|
+
|
|
42
|
+
### Step 2: Start the Browser
|
|
43
|
+
|
|
44
|
+
Use the \`browser_start\` MCP tool to launch Chrome:
|
|
45
|
+
|
|
46
|
+
\`\`\`
|
|
47
|
+
Call browser_start with headless: false to open a visible Chrome window.
|
|
48
|
+
\`\`\`
|
|
49
|
+
|
|
50
|
+
### Step 3: Spawn Error-Watching Sub-Agent
|
|
51
|
+
|
|
52
|
+
Use the Task tool to spawn a background sub-agent that monitors for console errors:
|
|
53
|
+
|
|
54
|
+
\`\`\`
|
|
55
|
+
Spawn a sub-agent with subagent_type "general-purpose" and run_in_background: true with this prompt:
|
|
56
|
+
|
|
57
|
+
"You are an error-watching agent monitoring the browser for console errors.
|
|
58
|
+
|
|
59
|
+
Your job:
|
|
60
|
+
1. First, call browser_clear_errors to start with a clean slate
|
|
61
|
+
2. Report back that monitoring has started
|
|
62
|
+
3. Every 15-20 seconds, call browser_get_errors with includeWarnings: true
|
|
63
|
+
4. If you find errors, report them with:
|
|
64
|
+
- The error message
|
|
65
|
+
- The source file and line number
|
|
66
|
+
- A brief analysis of what might be wrong
|
|
67
|
+
5. Continue monitoring until the main conversation ends
|
|
68
|
+
|
|
69
|
+
Be concise but informative when reporting errors."
|
|
70
|
+
\`\`\`
|
|
71
|
+
|
|
72
|
+
### Step 4: Inform the User
|
|
73
|
+
|
|
74
|
+
Tell the user:
|
|
75
|
+
- The browser debugging environment is ready
|
|
76
|
+
- They can navigate to their app using \`browser_navigate\`
|
|
77
|
+
- You will be notified of any console errors automatically
|
|
78
|
+
- They can ask you to take screenshots, click elements, or run JavaScript
|
|
79
|
+
|
|
80
|
+
## Cleanup
|
|
81
|
+
|
|
82
|
+
When done debugging, call \`browser_stop\` to shut down Chrome cleanly.
|
|
83
|
+
|
|
84
|
+
## Troubleshooting
|
|
85
|
+
|
|
86
|
+
### browser_start fails
|
|
87
|
+
- Check if Chrome is installed: the MCP server auto-detects common paths
|
|
88
|
+
- Set \`PILOT_CHROME_PATH\` env var to the Chrome executable if auto-detect fails
|
|
89
|
+
|
|
90
|
+
### No errors detected
|
|
91
|
+
- Errors are only captured while connected
|
|
92
|
+
- Try \`browser_get_errors\` with \`includeWarnings: true\` to see all console output
|
|
93
|
+
- Verify the page has loaded: \`browser_page_info\`
|
|
94
|
+
|
|
95
|
+
## Example Session
|
|
96
|
+
|
|
97
|
+
User: "debug in browser"
|
|
98
|
+
|
|
99
|
+
Claude executes:
|
|
100
|
+
1. Adds MCP server to session
|
|
101
|
+
2. Calls \`browser_start\` (headless: false)
|
|
102
|
+
3. Spawns error-watching sub-agent
|
|
103
|
+
4. Reports: "Browser debugging environment ready! Navigate to your app and I'll watch for errors."
|
|
104
|
+
|
|
105
|
+
User: "go to localhost:3000"
|
|
106
|
+
Claude: Uses \`browser_navigate\` to go to http://localhost:3000
|
|
107
|
+
|
|
108
|
+
[User interacts with the app, an error occurs]
|
|
109
|
+
|
|
110
|
+
Sub-agent reports: "Error detected: TypeError: Cannot read property 'map' of undefined at App.tsx:42"
|
|
111
|
+
|
|
112
|
+
Claude: Reads App.tsx, identifies the bug, suggests a fix.
|
|
113
|
+
`;
|
|
114
|
+
//# sourceMappingURL=skill-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-template.js","sourceRoot":"","sources":["../../src/cli/skill-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgH5B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Client } from 'chrome-remote-interface';
|
|
3
|
+
export declare const ClickParamsSchema: z.ZodObject<{
|
|
4
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
5
|
+
x: z.ZodOptional<z.ZodNumber>;
|
|
6
|
+
y: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
button: z.ZodDefault<z.ZodEnum<{
|
|
8
|
+
left: "left";
|
|
9
|
+
right: "right";
|
|
10
|
+
middle: "middle";
|
|
11
|
+
}>>;
|
|
12
|
+
clickCount: z.ZodDefault<z.ZodNumber>;
|
|
13
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export type ClickParams = z.infer<typeof ClickParamsSchema>;
|
|
16
|
+
export interface ClickResult {
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function executeClick(client: Client, params: ClickParams): Promise<ClickResult>;
|
|
21
|
+
//# sourceMappingURL=click.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../src/commands/click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,eAAO,MAAM,iBAAiB;;;;;;;;;;;iBAc3B,CAAC;AAEJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AA4BD,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,CAAC,CAqCtB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const ClickParamsSchema = z
|
|
3
|
+
.object({
|
|
4
|
+
selector: z.string().optional(),
|
|
5
|
+
x: z.number().optional(),
|
|
6
|
+
y: z.number().optional(),
|
|
7
|
+
button: z.enum(['left', 'right', 'middle']).default('left'),
|
|
8
|
+
clickCount: z.number().int().positive().default(1),
|
|
9
|
+
timeoutMs: z.number().int().positive().default(5000)
|
|
10
|
+
})
|
|
11
|
+
.refine((v) => v.selector !== undefined || (v.x !== undefined && v.y !== undefined), {
|
|
12
|
+
message: 'Either selector or x/y coordinates are required'
|
|
13
|
+
});
|
|
14
|
+
async function waitForSelector(client, selector, timeoutMs) {
|
|
15
|
+
const start = Date.now();
|
|
16
|
+
while (Date.now() - start < timeoutMs) {
|
|
17
|
+
const result = await client.Runtime.evaluate({
|
|
18
|
+
expression: `(function() {
|
|
19
|
+
const el = document.querySelector(${JSON.stringify(selector)});
|
|
20
|
+
if (!el) return null;
|
|
21
|
+
const rect = el.getBoundingClientRect();
|
|
22
|
+
return { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 };
|
|
23
|
+
})()`,
|
|
24
|
+
returnByValue: true
|
|
25
|
+
});
|
|
26
|
+
if (result.result.value !== null && result.result.value !== undefined) {
|
|
27
|
+
return result.result.value;
|
|
28
|
+
}
|
|
29
|
+
await new Promise((r) => setTimeout(r, 100));
|
|
30
|
+
}
|
|
31
|
+
throw new Error(`timeout waiting for selector: ${selector}`);
|
|
32
|
+
}
|
|
33
|
+
export async function executeClick(client, params) {
|
|
34
|
+
let x;
|
|
35
|
+
let y;
|
|
36
|
+
if (params.selector !== undefined) {
|
|
37
|
+
const pos = await waitForSelector(client, params.selector, params.timeoutMs);
|
|
38
|
+
x = pos.x;
|
|
39
|
+
y = pos.y;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
x = params.x;
|
|
43
|
+
y = params.y;
|
|
44
|
+
}
|
|
45
|
+
const button = params.button;
|
|
46
|
+
for (let i = 0; i < params.clickCount; i++) {
|
|
47
|
+
await client.Input.dispatchMouseEvent({
|
|
48
|
+
type: 'mousePressed',
|
|
49
|
+
x,
|
|
50
|
+
y,
|
|
51
|
+
button,
|
|
52
|
+
clickCount: 1
|
|
53
|
+
});
|
|
54
|
+
await client.Input.dispatchMouseEvent({
|
|
55
|
+
type: 'mouseReleased',
|
|
56
|
+
x,
|
|
57
|
+
y,
|
|
58
|
+
button,
|
|
59
|
+
clickCount: 1
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return { x, y };
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=click.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"click.js","sourceRoot":"","sources":["../../src/commands/click.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Client } from 'chrome-remote-interface';
|
|
3
|
+
export declare const EvaluateParamsSchema: z.ZodObject<{
|
|
4
|
+
expression: z.ZodString;
|
|
5
|
+
awaitPromise: z.ZodDefault<z.ZodBoolean>;
|
|
6
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type EvaluateParams = z.infer<typeof EvaluateParamsSchema>;
|
|
9
|
+
export interface EvaluateResult {
|
|
10
|
+
value: unknown;
|
|
11
|
+
type: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function executeEvaluate(client: Client, params: EvaluateParams): Promise<EvaluateResult>;
|
|
14
|
+
//# sourceMappingURL=evaluate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/commands/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CAyBzB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const EvaluateParamsSchema = z.object({
|
|
3
|
+
expression: z.string(),
|
|
4
|
+
awaitPromise: z.boolean().default(true),
|
|
5
|
+
timeoutMs: z.number().int().positive().default(10000)
|
|
6
|
+
});
|
|
7
|
+
export async function executeEvaluate(client, params) {
|
|
8
|
+
const result = await Promise.race([
|
|
9
|
+
client.Runtime.evaluate({
|
|
10
|
+
expression: params.expression,
|
|
11
|
+
awaitPromise: params.awaitPromise,
|
|
12
|
+
returnByValue: true,
|
|
13
|
+
userGesture: true
|
|
14
|
+
}),
|
|
15
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), params.timeoutMs))
|
|
16
|
+
]);
|
|
17
|
+
if (result.exceptionDetails) {
|
|
18
|
+
const msg = result.exceptionDetails.exception?.description ??
|
|
19
|
+
result.exceptionDetails.text ??
|
|
20
|
+
'evaluation error';
|
|
21
|
+
throw new Error(msg);
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
value: result.result.value,
|
|
25
|
+
type: result.result.type
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=evaluate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/commands/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACtD,CAAC,CAAC;AASH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,MAAsB;IAEtB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;YACtB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI;SAClB,CAAC;QACF,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CACjE;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,MAAM,GAAG,GACP,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW;YAC9C,MAAM,CAAC,gBAAgB,CAAC,IAAI;YAC5B,kBAAkB,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;QAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Client } from 'chrome-remote-interface';
|
|
3
|
+
import type { BrowserManager } from '../browser.js';
|
|
4
|
+
export declare const NavigateParamsSchema: z.ZodObject<{
|
|
5
|
+
url: z.ZodString;
|
|
6
|
+
waitUntil: z.ZodDefault<z.ZodEnum<{
|
|
7
|
+
load: "load";
|
|
8
|
+
domcontentloaded: "domcontentloaded";
|
|
9
|
+
networkidle: "networkidle";
|
|
10
|
+
}>>;
|
|
11
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type NavigateParams = z.infer<typeof NavigateParamsSchema>;
|
|
14
|
+
export interface NavigateResult {
|
|
15
|
+
url: string;
|
|
16
|
+
status: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function executeNavigate(client: Client, manager: BrowserManager, params: NavigateParams): Promise<NavigateResult>;
|
|
19
|
+
//# sourceMappingURL=navigate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/commands/navigate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,oBAAoB;;;;;;;;iBAM/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CAiFzB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const NavigateParamsSchema = z.object({
|
|
3
|
+
url: z.string().url(),
|
|
4
|
+
waitUntil: z
|
|
5
|
+
.enum(['load', 'domcontentloaded', 'networkidle'])
|
|
6
|
+
.default('load'),
|
|
7
|
+
timeoutMs: z.number().int().positive().default(30000)
|
|
8
|
+
});
|
|
9
|
+
export async function executeNavigate(client, manager, params) {
|
|
10
|
+
let finalStatus = 200;
|
|
11
|
+
const navigationPromise = new Promise((resolve, reject) => {
|
|
12
|
+
const timeout = setTimeout(() => {
|
|
13
|
+
reject(new Error('timeout'));
|
|
14
|
+
}, params.timeoutMs);
|
|
15
|
+
const cleanup = () => clearTimeout(timeout);
|
|
16
|
+
if (params.waitUntil === 'load') {
|
|
17
|
+
client.Page.loadEventFired(() => {
|
|
18
|
+
cleanup();
|
|
19
|
+
client.Runtime.evaluate({ expression: 'window.location.href' }).then((r) => {
|
|
20
|
+
resolve({
|
|
21
|
+
url: r.result.value ?? params.url,
|
|
22
|
+
status: finalStatus
|
|
23
|
+
});
|
|
24
|
+
}, reject);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
else if (params.waitUntil === 'domcontentloaded') {
|
|
28
|
+
client.Page.domContentEventFired(() => {
|
|
29
|
+
cleanup();
|
|
30
|
+
client.Runtime.evaluate({ expression: 'window.location.href' }).then((r) => {
|
|
31
|
+
resolve({
|
|
32
|
+
url: r.result.value ?? params.url,
|
|
33
|
+
status: finalStatus
|
|
34
|
+
});
|
|
35
|
+
}, reject);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// networkidle
|
|
40
|
+
manager
|
|
41
|
+
.waitForNetworkIdle(params.timeoutMs)
|
|
42
|
+
.then(() => {
|
|
43
|
+
cleanup();
|
|
44
|
+
return client.Runtime.evaluate({
|
|
45
|
+
expression: 'window.location.href'
|
|
46
|
+
});
|
|
47
|
+
})
|
|
48
|
+
.then((r) => {
|
|
49
|
+
resolve({
|
|
50
|
+
url: r.result.value ?? params.url,
|
|
51
|
+
status: finalStatus
|
|
52
|
+
});
|
|
53
|
+
})
|
|
54
|
+
.catch((err) => {
|
|
55
|
+
cleanup();
|
|
56
|
+
reject(err);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
// Capture the response status
|
|
61
|
+
const responseHandler = (params) => {
|
|
62
|
+
if (params.response.url === params.response.url && params.response.status) {
|
|
63
|
+
finalStatus = params.response.status;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
client.Network.responseReceived(responseHandler);
|
|
67
|
+
const { frameId } = await client.Page.navigate({ url: params.url });
|
|
68
|
+
void frameId; // used implicitly
|
|
69
|
+
try {
|
|
70
|
+
const result = await navigationPromise;
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
// Event listeners are auto-removed when client disconnects;
|
|
75
|
+
// for long-lived clients this is acceptable for v0.1
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=navigate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../src/commands/navigate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Client } from 'chrome-remote-interface';
|
|
2
|
+
export interface PageInfoResult {
|
|
3
|
+
url: string;
|
|
4
|
+
title: string;
|
|
5
|
+
readyState: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function executePageInfo(client: Client): Promise<PageInfoResult>;
|
|
8
|
+
//# sourceMappingURL=page_info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page_info.d.ts","sourceRoot":"","sources":["../../src/commands/page_info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAY7E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export async function executePageInfo(client) {
|
|
2
|
+
const result = await client.Runtime.evaluate({
|
|
3
|
+
expression: `JSON.stringify({
|
|
4
|
+
url: window.location.href,
|
|
5
|
+
title: document.title,
|
|
6
|
+
readyState: document.readyState
|
|
7
|
+
})`,
|
|
8
|
+
returnByValue: true
|
|
9
|
+
});
|
|
10
|
+
const value = result.result.value;
|
|
11
|
+
return JSON.parse(value);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=page_info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page_info.js","sourceRoot":"","sources":["../../src/commands/page_info.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc;IAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC3C,UAAU,EAAE;;;;OAIT;QACH,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAe,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAmB,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Client } from 'chrome-remote-interface';
|
|
3
|
+
export declare const ScreenshotParamsSchema: z.ZodObject<{
|
|
4
|
+
format: z.ZodDefault<z.ZodEnum<{
|
|
5
|
+
png: "png";
|
|
6
|
+
jpeg: "jpeg";
|
|
7
|
+
}>>;
|
|
8
|
+
quality: z.ZodDefault<z.ZodNumber>;
|
|
9
|
+
fullPage: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type ScreenshotParams = z.infer<typeof ScreenshotParamsSchema>;
|
|
12
|
+
export interface ScreenshotResult {
|
|
13
|
+
dataUrl: string;
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function executeScreenshot(client: Client, params: ScreenshotParams): Promise<ScreenshotResult>;
|
|
18
|
+
//# sourceMappingURL=screenshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/commands/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,eAAO,MAAM,sBAAsB;;;;;;;iBAIjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAmD3B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const ScreenshotParamsSchema = z.object({
|
|
3
|
+
format: z.enum(['png', 'jpeg']).default('png'),
|
|
4
|
+
quality: z.number().int().min(1).max(100).default(80),
|
|
5
|
+
fullPage: z.boolean().default(false)
|
|
6
|
+
});
|
|
7
|
+
export async function executeScreenshot(client, params) {
|
|
8
|
+
let clip;
|
|
9
|
+
if (params.fullPage) {
|
|
10
|
+
const layoutResult = await client.Page.getLayoutMetrics();
|
|
11
|
+
const { width, height } = layoutResult.contentSize;
|
|
12
|
+
clip = { x: 0, y: 0, width, height, scale: 1 };
|
|
13
|
+
}
|
|
14
|
+
const captureParams = {
|
|
15
|
+
format: params.format,
|
|
16
|
+
captureBeyondViewport: params.fullPage
|
|
17
|
+
};
|
|
18
|
+
if (params.format === 'jpeg') {
|
|
19
|
+
captureParams.quality = params.quality;
|
|
20
|
+
}
|
|
21
|
+
if (clip) {
|
|
22
|
+
captureParams.clip = clip;
|
|
23
|
+
}
|
|
24
|
+
const { data } = await client.Page.captureScreenshot(captureParams);
|
|
25
|
+
const mime = params.format === 'jpeg' ? 'image/jpeg' : 'image/png';
|
|
26
|
+
const dataUrl = `data:${mime};base64,${data}`;
|
|
27
|
+
// Decode dimensions from base64
|
|
28
|
+
const buf = Buffer.from(data, 'base64');
|
|
29
|
+
let width = 0;
|
|
30
|
+
let height = 0;
|
|
31
|
+
if (params.format === 'png' && buf.length > 24) {
|
|
32
|
+
width = buf.readUInt32BE(16);
|
|
33
|
+
height = buf.readUInt32BE(20);
|
|
34
|
+
}
|
|
35
|
+
return { dataUrl, width, height };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=screenshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/commands/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACrC,CAAC,CAAC;AAUH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,MAAwB;IAExB,IAAI,IAQS,CAAC;IAEd,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,WAAW,CAAC;QACnD,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,aAAa,GAKf;QACF,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,qBAAqB,EAAE,MAAM,CAAC,QAAQ;KACvC,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACzC,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAEpE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;IACnE,MAAM,OAAO,GAAG,QAAQ,IAAI,WAAW,IAAI,EAAE,CAAC;IAE9C,gCAAgC;IAChC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC/C,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BrowserManager, TabInfo } from '../browser.js';
|
|
2
|
+
export declare function executeListTabs(manager: BrowserManager): Promise<TabInfo[]>;
|
|
3
|
+
export interface NewTabResult {
|
|
4
|
+
targetId: string;
|
|
5
|
+
url: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function executeNewTab(manager: BrowserManager, url?: string): Promise<NewTabResult>;
|
|
8
|
+
export declare function executeCloseTab(manager: BrowserManager, targetId: string): Promise<void>;
|
|
9
|
+
export declare function executeSwitchTab(manager: BrowserManager, targetId: string): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/commands/tabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7D,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC,CAEpB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,CAIvB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAEf"}
|