@dyyz1993/agent-browser 0.9.2 → 0.11.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.
Files changed (110) hide show
  1. package/dist/__tests__/utils/parseCli.d.ts +1 -0
  2. package/dist/__tests__/utils/parseCli.d.ts.map +1 -1
  3. package/dist/__tests__/utils/parseCli.js +18 -10
  4. package/dist/__tests__/utils/parseCli.js.map +1 -1
  5. package/dist/actions.d.ts.map +1 -1
  6. package/dist/actions.js +63 -3
  7. package/dist/actions.js.map +1 -1
  8. package/dist/browser.d.ts +46 -2
  9. package/dist/browser.d.ts.map +1 -1
  10. package/dist/browser.js +343 -13
  11. package/dist/browser.js.map +1 -1
  12. package/dist/cli/commands.d.ts.map +1 -1
  13. package/dist/cli/commands.js +8 -3
  14. package/dist/cli/commands.js.map +1 -1
  15. package/dist/cli/connection.d.ts.map +1 -1
  16. package/dist/cli/connection.js +39 -1
  17. package/dist/cli/connection.js.map +1 -1
  18. package/dist/cli/help.d.ts.map +1 -1
  19. package/dist/cli/help.js +27 -20
  20. package/dist/cli/help.js.map +1 -1
  21. package/dist/cli/output.d.ts.map +1 -1
  22. package/dist/cli/output.js +5 -0
  23. package/dist/cli/output.js.map +1 -1
  24. package/dist/cli.js +20 -0
  25. package/dist/cli.js.map +1 -1
  26. package/dist/daemon.d.ts.map +1 -1
  27. package/dist/daemon.js +147 -1
  28. package/dist/daemon.js.map +1 -1
  29. package/dist/message-bridge.d.ts.map +1 -1
  30. package/dist/message-bridge.js +22 -4
  31. package/dist/message-bridge.js.map +1 -1
  32. package/dist/openapi.d.ts +22 -0
  33. package/dist/openapi.d.ts.map +1 -0
  34. package/dist/openapi.js +382 -0
  35. package/dist/openapi.js.map +1 -0
  36. package/dist/protocol.d.ts.map +1 -1
  37. package/dist/protocol.js +18 -0
  38. package/dist/protocol.js.map +1 -1
  39. package/dist/recorder/inject.js +61 -134
  40. package/dist/stream-server-standalone.d.ts +10 -0
  41. package/dist/stream-server-standalone.d.ts.map +1 -1
  42. package/dist/stream-server-standalone.js +594 -74
  43. package/dist/stream-server-standalone.js.map +1 -1
  44. package/dist/stream-server.d.ts +67 -2
  45. package/dist/stream-server.d.ts.map +1 -1
  46. package/dist/stream-server.js +371 -51
  47. package/dist/stream-server.js.map +1 -1
  48. package/dist/swagger-ui.d.ts +6 -0
  49. package/dist/swagger-ui.d.ts.map +1 -0
  50. package/dist/swagger-ui.js +51 -0
  51. package/dist/swagger-ui.js.map +1 -0
  52. package/dist/test-live.d.ts +2 -0
  53. package/dist/test-live.d.ts.map +1 -0
  54. package/dist/test-live.js +333 -0
  55. package/dist/test-live.js.map +1 -0
  56. package/dist/types.d.ts +7 -1
  57. package/dist/types.d.ts.map +1 -1
  58. package/dist/types.js.map +1 -1
  59. package/dist/viewer-html.d.ts.map +1 -1
  60. package/dist/viewer-html.js +270 -58
  61. package/dist/viewer-html.js.map +1 -1
  62. package/dist/viewer-script.d.ts +20 -2
  63. package/dist/viewer-script.d.ts.map +1 -1
  64. package/dist/viewer-script.js +858 -102
  65. package/dist/viewer-script.js.map +1 -1
  66. package/package.json +1 -1
  67. package/scripts/postinstall.js +6 -32
  68. package/scripts/test-cli-help.sh +51 -0
  69. package/scripts/verify-form.sh +67 -0
  70. package/scripts/verify-login.sh +65 -0
  71. package/scripts/verify-recording.sh +80 -0
  72. package/scripts/verify-upload.sh +41 -0
  73. package/skills/agent-browser/SKILL.md +88 -1
  74. package/skills/agent-browser/references/commands.md +3 -0
  75. package/skills/agent-browser/references/network-monitoring.md +232 -0
  76. package/skills/agent-browser/references/profiling.md +120 -0
  77. package/skills/agent-browser/references/recorder.md +319 -0
  78. package/skills/agent-browser/templates/network-intercept-crawl.sh +255 -0
  79. package/dist/__tests__/test-iframe.d.ts +0 -2
  80. package/dist/__tests__/test-iframe.d.ts.map +0 -1
  81. package/dist/__tests__/test-iframe.js +0 -52
  82. package/dist/__tests__/test-iframe.js.map +0 -1
  83. package/dist/cli-new.d.ts +0 -3
  84. package/dist/cli-new.d.ts.map +0 -1
  85. package/dist/cli-new.js +0 -308
  86. package/dist/cli-new.js.map +0 -1
  87. package/dist/cli-old.d.ts +0 -3
  88. package/dist/cli-old.d.ts.map +0 -1
  89. package/dist/cli-old.js +0 -1101
  90. package/dist/cli-old.js.map +0 -1
  91. package/dist/recorder/binding.d.ts +0 -24
  92. package/dist/recorder/binding.d.ts.map +0 -1
  93. package/dist/recorder/binding.js +0 -215
  94. package/dist/recorder/binding.js.map +0 -1
  95. package/dist/recorder/index.d.ts +0 -4
  96. package/dist/recorder/index.d.ts.map +0 -1
  97. package/dist/recorder/index.js +0 -4
  98. package/dist/recorder/index.js.map +0 -1
  99. package/dist/recorder/recorder.d.ts +0 -19
  100. package/dist/recorder/recorder.d.ts.map +0 -1
  101. package/dist/recorder/recorder.js +0 -101
  102. package/dist/recorder/recorder.js.map +0 -1
  103. package/dist/recorder/store.d.ts +0 -22
  104. package/dist/recorder/store.d.ts.map +0 -1
  105. package/dist/recorder/store.js +0 -150
  106. package/dist/recorder/store.js.map +0 -1
  107. package/dist/recorder/types.d.ts +0 -73
  108. package/dist/recorder/types.d.ts.map +0 -1
  109. package/dist/recorder/types.js +0 -5
  110. package/dist/recorder/types.js.map +0 -1
@@ -0,0 +1,255 @@
1
+ #!/bin/bash
2
+ # Network Interception Data Collection Template
3
+ # Usage: ./network-intercept-crawl.sh <url> <output-dir> [max-scrolls]
4
+ #
5
+ # This script demonstrates how to capture API data using network interception.
6
+ # It handles infinite scroll pages that load data via AJAX/fetch calls.
7
+ #
8
+ # Prerequisites:
9
+ # - agent-browser installed and in PATH
10
+ # - jq for JSON processing
11
+ #
12
+ # Environment Variables:
13
+ # SCROLL_CONTAINER - CSS selector for scroll container (default: auto-detect)
14
+ # SCROLL_DELAY - Seconds to wait after scroll (default: 2)
15
+ # MAX_NO_NEW - Stop after N scrolls with no new data (default: 3)
16
+ #
17
+ # Examples:
18
+ # ./network-intercept-crawl.sh https://example.com/feed ./output 20
19
+ # SCROLL_CONTAINER=".feed-list" ./network-intercept-crawl.sh https://example.com/products ./data
20
+
21
+ set -e
22
+
23
+ # Configuration
24
+ TARGET_URL="${1:-https://example.com}"
25
+ OUTPUT_DIR="${2:-./collected-data}"
26
+ MAX_SCROLLS="${3:-20}"
27
+ SCROLL_CONTAINER="${SCROLL_CONTAINER:-}" # CSS selector for scroll container (empty = auto-detect)
28
+ SCROLL_DELAY="${SCROLL_DELAY:-2}" # Seconds to wait after scroll
29
+ MAX_NO_NEW="${MAX_NO_NEW:-3}" # Stop after N scrolls with no new data
30
+
31
+ mkdir -p "$OUTPUT_DIR"
32
+
33
+ echo "=========================================="
34
+ echo " Network Interception Data Collection"
35
+ echo "=========================================="
36
+ echo " URL: $TARGET_URL"
37
+ echo " Output: $OUTPUT_DIR"
38
+ echo " Max scrolls: $MAX_SCROLLS"
39
+ echo "=========================================="
40
+
41
+ # Cleanup function
42
+ cleanup() {
43
+ echo ""
44
+ echo "[Cleanup] Closing browser..."
45
+ agent-browser kill 2>/dev/null || true
46
+ }
47
+ trap cleanup EXIT
48
+
49
+ # Step 1: Start fresh
50
+ echo ""
51
+ echo "[Step 1] Starting browser session..."
52
+ agent-browser kill 2>/dev/null || true
53
+ sleep 1
54
+
55
+ # Step 2: Enable network interception
56
+ echo "[Step 2] Enabling network request capture..."
57
+ agent-browser network requests --capture-response
58
+
59
+ # Step 3: Navigate to target page
60
+ echo "[Step 3] Opening target URL..."
61
+ agent-browser open "$TARGET_URL"
62
+ agent-browser wait --load networkidle
63
+ sleep 2
64
+
65
+ # Step 4: Auto-detect scroll container if not specified
66
+ if [ -z "$SCROLL_CONTAINER" ]; then
67
+ echo "[Step 4] Auto-detecting scroll container..."
68
+ DETECTED_CONTAINER=$(agent-browser eval --stdin <<'EOF'
69
+ (() => {
70
+ // Check for common scroll container patterns
71
+ const selectors = [
72
+ '.simulation-area',
73
+ '.feed-container',
74
+ '.scroll-container',
75
+ '[class*="scroll"]',
76
+ '[class*="feed"]',
77
+ '[class*="list"]',
78
+ '.content',
79
+ 'main'
80
+ ];
81
+
82
+ for (const sel of selectors) {
83
+ const el = document.querySelector(sel);
84
+ if (el && el.scrollHeight > el.clientHeight) {
85
+ return sel;
86
+ }
87
+ }
88
+ return ''; // Use window scroll
89
+ })()
90
+ EOF
91
+ )
92
+ # Extract container from JSON response
93
+ SCROLL_CONTAINER=$(echo "$DETECTED_CONTAINER" | jq -r '.' 2>/dev/null || echo "")
94
+
95
+ if [ -n "$SCROLL_CONTAINER" ] && [ "$SCROLL_CONTAINER" != "null" ] && [ "$SCROLL_CONTAINER" != "" ]; then
96
+ echo " Detected container: $SCROLL_CONTAINER"
97
+ else
98
+ echo " No container detected, using window scroll"
99
+ SCROLL_CONTAINER=""
100
+ fi
101
+ else
102
+ echo "[Step 4] Using specified container: $SCROLL_CONTAINER"
103
+ fi
104
+
105
+ # Step 5: Extract initial data
106
+ echo "[Step 5] Extracting initial captured requests..."
107
+
108
+ # Function to get all captured requests
109
+ get_all_requests() {
110
+ agent-browser network requests --capture-response --type json --json 2>/dev/null
111
+ }
112
+
113
+ # Function to count requests with response bodies
114
+ count_valid_requests() {
115
+ local json_data="$1"
116
+ echo "$json_data" | jq '.data.requests | map(select(.responseBody != null)) | length' 2>/dev/null || echo "0"
117
+ }
118
+
119
+ # Function to count unique IDs in data
120
+ count_unique_ids() {
121
+ local json_data="$1"
122
+ local id_field="${2:-id}"
123
+ echo "$json_data" | jq -c "[.data.requests[].responseBody | select(. != null) | .[]?.${id_field}] | unique | length" 2>/dev/null || echo "0"
124
+ }
125
+
126
+ # Initialize tracking - cumulative approach (no clearing!)
127
+ ALL_DATA_FILE="$OUTPUT_DIR/all-captures.json"
128
+ PROCESSED_COUNT=0 # Track how many requests we've already processed
129
+
130
+ # Get initial data
131
+ get_all_requests > "$ALL_DATA_FILE"
132
+ TOTAL_REQUESTS=$(count_valid_requests "$(cat "$ALL_DATA_FILE")")
133
+ INITIAL_IDS=$(count_unique_ids "$(cat "$ALL_DATA_FILE")")
134
+ PROCESSED_COUNT=$TOTAL_REQUESTS
135
+
136
+ echo " Initial capture: $TOTAL_REQUESTS requests, ~$INITIAL_IDS unique items"
137
+ echo " Using cumulative mode (no data loss from clearing)"
138
+
139
+ # Step 6: Scroll to load more data
140
+ echo ""
141
+ echo "[Step 6] Scrolling to load more data..."
142
+
143
+ NO_NEW_COUNT=0
144
+ SCROLL_COUNT=0
145
+
146
+ while [ $SCROLL_COUNT -lt $MAX_SCROLLS ]; do
147
+ SCROLL_COUNT=$((SCROLL_COUNT + 1))
148
+
149
+ # Perform scroll
150
+ if [ -n "$SCROLL_CONTAINER" ]; then
151
+ # Scroll within specific container
152
+ agent-browser eval --stdin <<EOF
153
+ (() => {
154
+ const container = document.querySelector('$SCROLL_CONTAINER');
155
+ if (container) {
156
+ container.scrollTop = container.scrollHeight;
157
+ return { scrolled: true, scrollTop: container.scrollTop };
158
+ }
159
+ return { scrolled: false, error: 'Container not found' };
160
+ })()
161
+ EOF
162
+ else
163
+ # Scroll the page
164
+ agent-browser scroll down 1000
165
+ fi
166
+
167
+ # Wait for new requests
168
+ sleep "$SCROLL_DELAY"
169
+
170
+ # Get ALL requests (cumulative, no clearing!)
171
+ get_all_requests > "$ALL_DATA_FILE"
172
+
173
+ # Count total requests now
174
+ NEW_TOTAL=$(count_valid_requests "$(cat "$ALL_DATA_FILE")")
175
+
176
+ # Calculate how many new requests we got (offset from last processed)
177
+ NEW_COUNT=$((NEW_TOTAL - PROCESSED_COUNT))
178
+
179
+ if [ "$NEW_COUNT" -le 0 ]; then
180
+ echo " Scroll $SCROLL_COUNT: No new requests captured (total: $NEW_TOTAL)"
181
+ NO_NEW_COUNT=$((NO_NEW_COUNT + 1))
182
+
183
+ if [ $NO_NEW_COUNT -ge $MAX_NO_NEW ]; then
184
+ echo ""
185
+ echo " [Stop] Consecutive $MAX_NO_NEW scrolls with no new data"
186
+ break
187
+ fi
188
+ else
189
+ echo " Scroll $SCROLL_COUNT: Captured $NEW_COUNT new requests (total: $NEW_TOTAL)"
190
+
191
+ # Extract only NEW requests using offset
192
+ if [ $PROCESSED_COUNT -gt 0 ]; then
193
+ jq ".data.requests[$PROCESSED_COUNT:]" "$ALL_DATA_FILE" > "$OUTPUT_DIR/scroll-${SCROLL_COUNT}-new.json" 2>/dev/null || true
194
+ else
195
+ jq '.data.requests' "$ALL_DATA_FILE" > "$OUTPUT_DIR/scroll-${SCROLL_COUNT}-new.json" 2>/dev/null || true
196
+ fi
197
+
198
+ # Update processed count
199
+ PROCESSED_COUNT=$NEW_TOTAL
200
+ NO_NEW_COUNT=0
201
+ fi
202
+ done
203
+
204
+ # Step 7: Extract and save final data
205
+ echo ""
206
+ echo "[Step 7] Processing collected data..."
207
+
208
+ # Extract response bodies from all captured requests
209
+ OUTPUT_DATA="$OUTPUT_DIR/collected-data.json"
210
+ jq '
211
+ .data.requests |
212
+ map(select(.responseBody != null)) |
213
+ map({
214
+ url: .url,
215
+ method: .method,
216
+ status: .status,
217
+ contentType: .contentType,
218
+ timestamp: .timestamp,
219
+ data: .responseBody
220
+ })
221
+ ' "$ALL_DATA_FILE" > "$OUTPUT_DATA" 2>/dev/null || echo "[]" > "$OUTPUT_DATA"
222
+
223
+ TOTAL_ITEMS=$(jq 'map(select(.data != null and .data != [])) | length' "$OUTPUT_DATA")
224
+ UNIQUE_IDS=$(count_unique_ids "$(cat "$ALL_DATA_FILE")")
225
+
226
+ echo " Total API responses captured: $TOTAL_ITEMS"
227
+ echo " Unique items identified: $UNIQUE_IDS"
228
+
229
+ # Save summary
230
+ SUMMARY_FILE="$OUTPUT_DIR/summary.json"
231
+ jq -n "
232
+ {
233
+ collectedAt: \"$(date -Iseconds)\",
234
+ targetUrl: \"$TARGET_URL\",
235
+ scrollContainer: \"$SCROLL_CONTAINER\",
236
+ totalScrolls: $SCROLL_COUNT,
237
+ totalRequests: $TOTAL_ITEMS,
238
+ uniqueItems: $UNIQUE_IDS,
239
+ mode: \"cumulative-no-clear\",
240
+ outputFiles: [
241
+ \"collected-data.json\",
242
+ \"all-captures.json\"
243
+ ]
244
+ }
245
+ " > "$SUMMARY_FILE"
246
+
247
+ echo ""
248
+ echo "=========================================="
249
+ echo " Collection Complete"
250
+ echo "=========================================="
251
+ echo " Output directory: $OUTPUT_DIR"
252
+ echo " Total responses: $TOTAL_ITEMS"
253
+ echo " Files created:"
254
+ ls -la "$OUTPUT_DIR"
255
+ echo "=========================================="
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-iframe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-iframe.d.ts","sourceRoot":"","sources":["../../src/__tests__/test-iframe.ts"],"names":[],"mappings":""}
@@ -1,52 +0,0 @@
1
- import { chromium } from 'playwright-core';
2
- async function test() {
3
- const browser = await chromium.launch({ headless: true });
4
- const context = await browser.newContext();
5
- const page = await context.newPage();
6
- // Listen for frame navigated events
7
- page.on('framenavigated', (frame) => {
8
- console.log('Frame navigated:', frame.url());
9
- });
10
- // Listen for console events
11
- page.on('console', (msg) => {
12
- console.log('Console:', msg.type(), msg.text());
13
- });
14
- // Listen for page errors
15
- page.on('pageerror', (error) => {
16
- console.log('Page error:', error.message);
17
- });
18
- // Listen for request failed
19
- page.on('requestfailed', (request) => {
20
- console.log('Request failed:', request.url(), request.failure()?.errorText);
21
- });
22
- await page.goto('https://www.example.com');
23
- // Check CSP headers
24
- const response = await page.evaluate(() => {
25
- return {
26
- csp: document.querySelector('meta[http-equiv="Content-Security-Policy"]')?.getAttribute('content'),
27
- xFrameOptions: document.querySelector('meta[http-equiv="X-Frame-Options"]')?.getAttribute('content'),
28
- };
29
- });
30
- console.log('CSP info:', response);
31
- // Create iframe using DOM methods
32
- await page.evaluate(() => {
33
- const iframe = document.createElement('iframe');
34
- iframe.id = 'cross-frame';
35
- iframe.src = 'https://www.iana.org/domains/example';
36
- iframe.width = '800';
37
- iframe.height = '400';
38
- document.body.appendChild(iframe);
39
- });
40
- // Wait for frame to be attached
41
- await page.waitForSelector('#cross-frame');
42
- // Wait longer
43
- await page.waitForTimeout(5000);
44
- // Check all frames
45
- console.log('\n=== All frames ===');
46
- const mainFrame = page.mainFrame();
47
- console.log('Main frame URL:', mainFrame.url());
48
- console.log('Child frames:', mainFrame.childFrames().map(f => ({ url: f.url(), name: f.name() })));
49
- await browser.close();
50
- }
51
- test().catch(console.error);
52
- //# sourceMappingURL=test-iframe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-iframe.js","sourceRoot":"","sources":["../../src/__tests__/test-iframe.ts"],"names":[],"mappings":"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"}
package/dist/cli-new.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- export {};
3
- //# sourceMappingURL=cli-new.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-new.d.ts","sourceRoot":"","sources":["../src/cli-new.ts"],"names":[],"mappings":""}
package/dist/cli-new.js DELETED
@@ -1,308 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- import { parseFlags, cleanArgs } from './cli/flags.js';
3
- import { ensureDaemon, sendCommand, listSessions, genId } from './cli/connection.js';
4
- import { parseCommand, CliError } from './cli/commands.js';
5
- import { printHelp, printCommandHelp, printVersion } from './cli/help.js';
6
- import { printResponse, printSession, printError, printWarning, } from './cli/output.js';
7
- import { spawn } from 'child_process';
8
- function parseProxy(proxyStr) {
9
- const protocolEnd = proxyStr.indexOf('://');
10
- if (protocolEnd === -1) {
11
- return { server: proxyStr };
12
- }
13
- const protocol = proxyStr.substring(0, protocolEnd + 3);
14
- const rest = proxyStr.substring(protocolEnd + 3);
15
- const atPos = rest.lastIndexOf('@');
16
- if (atPos === -1) {
17
- return { server: proxyStr };
18
- }
19
- const creds = rest.substring(0, atPos);
20
- const serverPart = rest.substring(atPos + 1);
21
- const server = protocol + serverPart;
22
- const colonPos = creds.indexOf(':');
23
- if (colonPos === -1) {
24
- return { server, username: creds, password: '' };
25
- }
26
- return {
27
- server,
28
- username: creds.substring(0, colonPos),
29
- password: creds.substring(colonPos + 1),
30
- };
31
- }
32
- async function runInstall(withDeps) {
33
- const args = ['playwright', 'install', 'chromium'];
34
- if (withDeps) {
35
- args.push('--with-deps');
36
- }
37
- const child = spawn('npx', args, {
38
- stdio: 'inherit',
39
- shell: true,
40
- });
41
- return new Promise((resolve, reject) => {
42
- child.on('close', (code) => {
43
- if (code === 0) {
44
- resolve();
45
- }
46
- else {
47
- reject(new Error(`Install failed with code ${code}`));
48
- }
49
- });
50
- child.on('error', reject);
51
- });
52
- }
53
- async function runSession(flags) {
54
- const sessions = await listSessions();
55
- if (flags.json) {
56
- console.log(JSON.stringify({
57
- success: true,
58
- data: { session: flags.session, sessions },
59
- }));
60
- return;
61
- }
62
- printSession(flags.session, sessions, flags.json);
63
- }
64
- async function launchWithFlags(flags) {
65
- const launchCmd = {
66
- id: genId(),
67
- action: 'launch',
68
- headless: !flags.headed,
69
- };
70
- if (flags.profile) {
71
- launchCmd.profile = flags.profile;
72
- }
73
- if (flags.state) {
74
- launchCmd.storageState = flags.state;
75
- }
76
- if (flags.proxy) {
77
- const proxyObj = parseProxy(flags.proxy);
78
- if (flags.proxyBypass) {
79
- proxyObj.bypass = flags.proxyBypass;
80
- }
81
- launchCmd.proxy = proxyObj;
82
- }
83
- if (flags.userAgent) {
84
- launchCmd.userAgent = flags.userAgent;
85
- }
86
- if (flags.args) {
87
- launchCmd.args = flags.args.split(/[,\n]/).map((a) => a.trim()).filter((a) => a);
88
- }
89
- if (flags.ignoreHttpsErrors) {
90
- launchCmd.ignoreHTTPSErrors = true;
91
- }
92
- if (flags.allowFileAccess) {
93
- launchCmd.allowFileAccess = true;
94
- }
95
- const resp = await sendCommand(launchCmd, flags.session);
96
- if (!resp.success) {
97
- throw new Error(resp.error || 'Browser launch failed');
98
- }
99
- }
100
- async function main() {
101
- const rawArgs = process.argv.slice(2);
102
- const flags = parseFlags(rawArgs);
103
- const args = cleanArgs(rawArgs);
104
- if (rawArgs.includes('--help') || rawArgs.includes('-h')) {
105
- if (args[0]) {
106
- if (printCommandHelp(args[0])) {
107
- return;
108
- }
109
- }
110
- printHelp();
111
- return;
112
- }
113
- if (rawArgs.includes('--version') || rawArgs.includes('-V')) {
114
- printVersion();
115
- return;
116
- }
117
- if (args.length === 0) {
118
- printHelp();
119
- return;
120
- }
121
- if (args[0] === 'install') {
122
- const withDeps = rawArgs.includes('--with-deps') || rawArgs.includes('-d');
123
- try {
124
- await runInstall(withDeps);
125
- }
126
- catch (e) {
127
- printError(e instanceof Error ? e.message : String(e), flags.json);
128
- process.exit(1);
129
- }
130
- return;
131
- }
132
- if (args[0] === 'session') {
133
- try {
134
- await runSession(flags);
135
- }
136
- catch (e) {
137
- printError(e instanceof Error ? e.message : String(e), flags.json);
138
- process.exit(1);
139
- }
140
- return;
141
- }
142
- let cmd;
143
- try {
144
- cmd = parseCommand(args, flags);
145
- }
146
- catch (e) {
147
- if (e instanceof CliError) {
148
- printError(e.message, flags.json);
149
- if (e.usage && !flags.json) {
150
- console.error(`Usage: ${e.usage}`);
151
- }
152
- }
153
- else {
154
- printError(e instanceof Error ? e.message : String(e), flags.json);
155
- }
156
- process.exit(1);
157
- return;
158
- }
159
- try {
160
- const daemonResult = await ensureDaemon({
161
- session: flags.session,
162
- headed: flags.headed,
163
- executablePath: flags.executablePath,
164
- extensions: flags.extensions,
165
- args: flags.args,
166
- userAgent: flags.userAgent,
167
- proxy: flags.proxy,
168
- proxyBypass: flags.proxyBypass,
169
- ignoreHttpsErrors: flags.ignoreHttpsErrors,
170
- allowFileAccess: flags.allowFileAccess,
171
- profile: flags.profile,
172
- state: flags.state,
173
- provider: flags.provider,
174
- device: flags.device,
175
- });
176
- if (daemonResult.alreadyRunning) {
177
- const ignoredFlags = [];
178
- if (flags.cliExecutablePath)
179
- ignoredFlags.push('--executable-path');
180
- if (flags.cliExtensions)
181
- ignoredFlags.push('--extension');
182
- if (flags.cliProfile)
183
- ignoredFlags.push('--profile');
184
- if (flags.cliState)
185
- ignoredFlags.push('--state');
186
- if (flags.cliArgs)
187
- ignoredFlags.push('--args');
188
- if (flags.cliUserAgent)
189
- ignoredFlags.push('--user-agent');
190
- if (flags.cliProxy)
191
- ignoredFlags.push('--proxy');
192
- if (flags.cliProxyBypass)
193
- ignoredFlags.push('--proxy-bypass');
194
- if (flags.ignoreHttpsErrors)
195
- ignoredFlags.push('--ignore-https-errors');
196
- if (flags.cliAllowFileAccess)
197
- ignoredFlags.push('--allow-file-access');
198
- if (ignoredFlags.length > 0 && !flags.json) {
199
- printWarning(`${ignoredFlags.join(', ')} ignored: daemon already running. Use 'agent-browser close' first to restart with new options.`);
200
- }
201
- }
202
- }
203
- catch (e) {
204
- printError(e instanceof Error ? e.message : String(e), flags.json);
205
- process.exit(1);
206
- return;
207
- }
208
- if (flags.cdp && flags.provider) {
209
- printError('Cannot use --cdp and -p/--provider together', flags.json);
210
- process.exit(1);
211
- return;
212
- }
213
- if (flags.provider && flags.extensions.length > 0) {
214
- printError('Cannot use --extension with -p/--provider (extensions require local browser)', flags.json);
215
- process.exit(1);
216
- return;
217
- }
218
- if (flags.cdp) {
219
- const cdpValue = flags.cdp;
220
- let launchCmd;
221
- if (cdpValue.startsWith('ws://') ||
222
- cdpValue.startsWith('wss://') ||
223
- cdpValue.startsWith('http://') ||
224
- cdpValue.startsWith('https://')) {
225
- launchCmd = { id: genId(), action: 'launch', cdpUrl: cdpValue };
226
- }
227
- else {
228
- const port = parseInt(cdpValue, 10);
229
- if (isNaN(port) || port <= 0 || port > 65535) {
230
- printError(`Invalid CDP port: ${cdpValue}`, flags.json);
231
- process.exit(1);
232
- return;
233
- }
234
- launchCmd = { id: genId(), action: 'launch', cdpPort: port };
235
- }
236
- if (flags.ignoreHttpsErrors) {
237
- launchCmd.ignoreHTTPSErrors = true;
238
- }
239
- try {
240
- const resp = await sendCommand(launchCmd, flags.session);
241
- if (!resp.success) {
242
- printError(resp.error || 'CDP connection failed', flags.json);
243
- process.exit(1);
244
- return;
245
- }
246
- }
247
- catch (e) {
248
- printError(e instanceof Error ? e.message : String(e), flags.json);
249
- process.exit(1);
250
- return;
251
- }
252
- }
253
- if (flags.provider) {
254
- const launchCmd = {
255
- id: genId(),
256
- action: 'launch',
257
- provider: flags.provider,
258
- };
259
- try {
260
- const resp = await sendCommand(launchCmd, flags.session);
261
- if (!resp.success) {
262
- printError(resp.error || 'Provider connection failed', flags.json);
263
- process.exit(1);
264
- return;
265
- }
266
- }
267
- catch (e) {
268
- printError(e instanceof Error ? e.message : String(e), flags.json);
269
- process.exit(1);
270
- return;
271
- }
272
- }
273
- if ((flags.headed ||
274
- flags.profile ||
275
- flags.state ||
276
- flags.proxy ||
277
- flags.args ||
278
- flags.userAgent ||
279
- flags.allowFileAccess) &&
280
- !flags.cdp &&
281
- !flags.provider) {
282
- try {
283
- await launchWithFlags(flags);
284
- }
285
- catch (e) {
286
- printError(e instanceof Error ? e.message : String(e), flags.json);
287
- process.exit(1);
288
- return;
289
- }
290
- }
291
- try {
292
- const resp = await sendCommand(cmd, flags.session);
293
- const action = cmd.action;
294
- printResponse(resp, flags.json, action);
295
- if (!resp.success) {
296
- process.exit(1);
297
- }
298
- }
299
- catch (e) {
300
- printError(e instanceof Error ? e.message : String(e), flags.json);
301
- process.exit(1);
302
- }
303
- }
304
- main().catch((e) => {
305
- printError(e instanceof Error ? e.message : String(e), false);
306
- process.exit(1);
307
- });
308
- //# sourceMappingURL=cli-new.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-new.js","sourceRoot":"","sources":["../src/cli-new.ts"],"names":[],"mappings":"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"}
package/dist/cli-old.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- export {};
3
- //# sourceMappingURL=cli-old.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-old.d.ts","sourceRoot":"","sources":["../src/cli-old.ts"],"names":[],"mappings":""}