firecrawl-cli 1.3.1 → 1.4.1
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/README.md +115 -27
- package/dist/__tests__/commands/browser.test.d.ts +5 -0
- package/dist/__tests__/commands/browser.test.d.ts.map +1 -0
- package/dist/__tests__/commands/browser.test.js +158 -0
- package/dist/__tests__/commands/browser.test.js.map +1 -0
- package/dist/__tests__/commands/scrape.test.js +57 -0
- package/dist/__tests__/commands/scrape.test.js.map +1 -1
- package/dist/__tests__/utils/options.test.js +49 -0
- package/dist/__tests__/utils/options.test.js.map +1 -1
- package/dist/commands/browser.d.ts +77 -0
- package/dist/commands/browser.d.ts.map +1 -0
- package/dist/commands/browser.js +318 -0
- package/dist/commands/browser.js.map +1 -0
- package/dist/commands/scrape.d.ts.map +1 -1
- package/dist/commands/scrape.js +3 -0
- package/dist/commands/scrape.js.map +1 -1
- package/dist/index.js +215 -1
- package/dist/index.js.map +1 -1
- package/dist/types/scrape.d.ts +8 -0
- package/dist/types/scrape.d.ts.map +1 -1
- package/dist/utils/browser-session.d.ts +26 -0
- package/dist/utils/browser-session.d.ts.map +1 -0
- package/dist/utils/browser-session.js +127 -0
- package/dist/utils/browser-session.js.map +1 -0
- package/dist/utils/options.d.ts.map +1 -1
- package/dist/utils/options.js +14 -0
- package/dist/utils/options.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser command implementation
|
|
3
|
+
* Manages cloud browser sessions via the Firecrawl SDK
|
|
4
|
+
*/
|
|
5
|
+
export interface BrowserLaunchOptions {
|
|
6
|
+
ttl?: number;
|
|
7
|
+
ttlInactivity?: number;
|
|
8
|
+
stream?: boolean;
|
|
9
|
+
apiKey?: string;
|
|
10
|
+
apiUrl?: string;
|
|
11
|
+
output?: string;
|
|
12
|
+
json?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface BrowserExecuteOptions {
|
|
15
|
+
code: string;
|
|
16
|
+
language?: 'python' | 'node' | 'bash';
|
|
17
|
+
session?: string;
|
|
18
|
+
apiKey?: string;
|
|
19
|
+
apiUrl?: string;
|
|
20
|
+
output?: string;
|
|
21
|
+
json?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface BrowserListOptions {
|
|
24
|
+
status?: 'active' | 'destroyed';
|
|
25
|
+
apiKey?: string;
|
|
26
|
+
apiUrl?: string;
|
|
27
|
+
output?: string;
|
|
28
|
+
json?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface BrowserCloseOptions {
|
|
31
|
+
session?: string;
|
|
32
|
+
apiKey?: string;
|
|
33
|
+
apiUrl?: string;
|
|
34
|
+
output?: string;
|
|
35
|
+
json?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface BrowserQuickExecuteOptions {
|
|
38
|
+
code: string;
|
|
39
|
+
apiKey?: string;
|
|
40
|
+
apiUrl?: string;
|
|
41
|
+
output?: string;
|
|
42
|
+
json?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Launch a new browser session
|
|
46
|
+
*/
|
|
47
|
+
export declare function handleBrowserLaunch(options: BrowserLaunchOptions): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Execute a bash command locally with CDP_URL and SESSION_ID env vars.
|
|
50
|
+
* agent-browser reads CDP_URL from the environment automatically.
|
|
51
|
+
*/
|
|
52
|
+
export declare function executeBashLocally(command: string, session: {
|
|
53
|
+
id: string;
|
|
54
|
+
cdpUrl: string;
|
|
55
|
+
}): Promise<{
|
|
56
|
+
stdout: string;
|
|
57
|
+
stderr: string;
|
|
58
|
+
exitCode: number;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Execute code in a browser session
|
|
62
|
+
*/
|
|
63
|
+
export declare function handleBrowserExecute(options: BrowserExecuteOptions): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* List browser sessions
|
|
66
|
+
*/
|
|
67
|
+
export declare function handleBrowserList(options: BrowserListOptions): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Shorthand: auto-launch a session if needed, then execute an agent-browser command.
|
|
70
|
+
* Enables `firecrawl browser "open example.com"` without a separate launch step.
|
|
71
|
+
*/
|
|
72
|
+
export declare function handleBrowserQuickExecute(options: BrowserQuickExecuteOptions): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Close a browser session
|
|
75
|
+
*/
|
|
76
|
+
export declare function handleBrowserClose(options: BrowserCloseOptions): Promise<void>;
|
|
77
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/commands/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB/D;AAeD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA+Hf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser command implementation
|
|
4
|
+
* Manages cloud browser sessions via the Firecrawl SDK
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.handleBrowserLaunch = handleBrowserLaunch;
|
|
8
|
+
exports.executeBashLocally = executeBashLocally;
|
|
9
|
+
exports.handleBrowserExecute = handleBrowserExecute;
|
|
10
|
+
exports.handleBrowserList = handleBrowserList;
|
|
11
|
+
exports.handleBrowserQuickExecute = handleBrowserQuickExecute;
|
|
12
|
+
exports.handleBrowserClose = handleBrowserClose;
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
const client_1 = require("../utils/client");
|
|
15
|
+
const browser_session_1 = require("../utils/browser-session");
|
|
16
|
+
const output_1 = require("../utils/output");
|
|
17
|
+
/**
|
|
18
|
+
* Launch a new browser session
|
|
19
|
+
*/
|
|
20
|
+
async function handleBrowserLaunch(options) {
|
|
21
|
+
try {
|
|
22
|
+
const app = (0, client_1.getClient)({ apiKey: options.apiKey, apiUrl: options.apiUrl });
|
|
23
|
+
const args = {};
|
|
24
|
+
if (options.ttl !== undefined)
|
|
25
|
+
args.ttl = options.ttl;
|
|
26
|
+
if (options.ttlInactivity !== undefined)
|
|
27
|
+
args.activityTtl = options.ttlInactivity;
|
|
28
|
+
if (options.stream !== undefined)
|
|
29
|
+
args.streamWebView = options.stream;
|
|
30
|
+
const data = await app.browser(args);
|
|
31
|
+
if (!data.success) {
|
|
32
|
+
console.error('Error:', data.error || 'Unknown error');
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
// Save session for future commands
|
|
36
|
+
(0, browser_session_1.saveBrowserSession)({
|
|
37
|
+
id: data.id,
|
|
38
|
+
cdpUrl: data.cdpUrl,
|
|
39
|
+
createdAt: new Date().toISOString(),
|
|
40
|
+
});
|
|
41
|
+
if (options.json) {
|
|
42
|
+
const output = JSON.stringify(data, null, 2);
|
|
43
|
+
(0, output_1.writeOutput)(output, options.output, !!options.output);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const lines = [];
|
|
47
|
+
lines.push(`Session ID: ${data.id}`);
|
|
48
|
+
lines.push(`CDP URL: ${data.cdpUrl}`);
|
|
49
|
+
if (data.liveViewUrl) {
|
|
50
|
+
lines.push(`Live View URL: ${data.liveViewUrl}`);
|
|
51
|
+
}
|
|
52
|
+
(0, output_1.writeOutput)(lines.join('\n'), options.output, !!options.output);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
console.error('Error:', error instanceof Error ? error.message : 'Unknown error occurred');
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Execute a bash command locally with CDP_URL and SESSION_ID env vars.
|
|
62
|
+
* agent-browser reads CDP_URL from the environment automatically.
|
|
63
|
+
*/
|
|
64
|
+
function executeBashLocally(command, session) {
|
|
65
|
+
return new Promise((resolve) => {
|
|
66
|
+
const child = (0, child_process_1.spawn)('sh', ['-c', command], {
|
|
67
|
+
env: {
|
|
68
|
+
...process.env,
|
|
69
|
+
CDP_URL: session.cdpUrl,
|
|
70
|
+
SESSION_ID: session.id,
|
|
71
|
+
},
|
|
72
|
+
stdio: ['inherit', 'pipe', 'pipe'],
|
|
73
|
+
});
|
|
74
|
+
let stdout = '';
|
|
75
|
+
let stderr = '';
|
|
76
|
+
child.stdout.on('data', (data) => {
|
|
77
|
+
stdout += data.toString();
|
|
78
|
+
});
|
|
79
|
+
child.stderr.on('data', (data) => {
|
|
80
|
+
stderr += data.toString();
|
|
81
|
+
});
|
|
82
|
+
child.on('close', (code) => {
|
|
83
|
+
resolve({ stdout, stderr, exitCode: code ?? 1 });
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Detect if an error indicates an expired or destroyed browser session.
|
|
89
|
+
*/
|
|
90
|
+
function isSessionExpiredError(error) {
|
|
91
|
+
const msg = error instanceof Error
|
|
92
|
+
? error.message.toLowerCase()
|
|
93
|
+
: String(error).toLowerCase();
|
|
94
|
+
const status = error.status;
|
|
95
|
+
if (status === 410 || status === 404)
|
|
96
|
+
return true;
|
|
97
|
+
return /destroyed|expired|not found|gone|session.*closed/i.test(msg);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Execute code in a browser session
|
|
101
|
+
*/
|
|
102
|
+
async function handleBrowserExecute(options) {
|
|
103
|
+
// Bash execution runs locally — skip the API entirely
|
|
104
|
+
if (options.language === 'bash') {
|
|
105
|
+
try {
|
|
106
|
+
let session = null;
|
|
107
|
+
if (options.session) {
|
|
108
|
+
const stored = (0, browser_session_1.loadBrowserSession)();
|
|
109
|
+
if (stored && stored.id === options.session) {
|
|
110
|
+
session = stored;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// Fetch CDP URL from the API for the specified session
|
|
114
|
+
const app = (0, client_1.getClient)({
|
|
115
|
+
apiKey: options.apiKey,
|
|
116
|
+
apiUrl: options.apiUrl,
|
|
117
|
+
});
|
|
118
|
+
const list = await app.listBrowsers({ status: 'active' });
|
|
119
|
+
const match = list.sessions?.find((s) => s.id === options.session);
|
|
120
|
+
if (match && match.cdpUrl) {
|
|
121
|
+
session = { id: match.id, cdpUrl: match.cdpUrl };
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
console.error(`Error: Session ${options.session} not found or not active.`);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
session = (0, browser_session_1.loadBrowserSession)();
|
|
132
|
+
}
|
|
133
|
+
if (!session) {
|
|
134
|
+
console.error('Error: No active browser session. Run `firecrawl browser launch` first.');
|
|
135
|
+
process.exit(1);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const result = await executeBashLocally(options.code, session);
|
|
139
|
+
if (result.exitCode !== 0) {
|
|
140
|
+
if (result.stderr)
|
|
141
|
+
process.stderr.write(result.stderr);
|
|
142
|
+
if (result.stdout)
|
|
143
|
+
process.stdout.write(result.stdout);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
if (options.json) {
|
|
147
|
+
const data = {
|
|
148
|
+
success: true,
|
|
149
|
+
result: result.stdout.trimEnd(),
|
|
150
|
+
exitCode: result.exitCode,
|
|
151
|
+
};
|
|
152
|
+
const output = JSON.stringify(data, null, 2);
|
|
153
|
+
(0, output_1.writeOutput)(output, options.output, !!options.output);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
if (result.stdout) {
|
|
157
|
+
(0, output_1.writeOutput)(result.stdout.trimEnd(), options.output, !!options.output);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
console.error('Error:', error instanceof Error ? error.message : 'Unknown error occurred');
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
const sessionId = (0, browser_session_1.getSessionId)(options.session);
|
|
169
|
+
const app = (0, client_1.getClient)({ apiKey: options.apiKey, apiUrl: options.apiUrl });
|
|
170
|
+
const data = await app.browserExecute(sessionId, {
|
|
171
|
+
code: options.code,
|
|
172
|
+
language: options.language || 'python',
|
|
173
|
+
});
|
|
174
|
+
if (!data.success) {
|
|
175
|
+
console.error('Error:', data.error || 'Unknown error');
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
if (data.error) {
|
|
179
|
+
// Execution succeeded but code had an error
|
|
180
|
+
process.stderr.write(`Code error: ${data.error}\n`);
|
|
181
|
+
}
|
|
182
|
+
if (options.json) {
|
|
183
|
+
const output = JSON.stringify(data, null, 2);
|
|
184
|
+
(0, output_1.writeOutput)(output, options.output, !!options.output);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
if (data.result !== undefined && data.result !== '') {
|
|
188
|
+
(0, output_1.writeOutput)(data.result, options.output, !!options.output);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
if (isSessionExpiredError(error)) {
|
|
194
|
+
const sessionId = options.session || (0, browser_session_1.loadBrowserSession)()?.id || 'unknown';
|
|
195
|
+
console.error(`Error: Session ${sessionId} has expired or been destroyed.\n` +
|
|
196
|
+
'The session may have exceeded its TTL or been closed.\n' +
|
|
197
|
+
'Start a new session with: firecrawl browser launch');
|
|
198
|
+
// Clear stale stored session
|
|
199
|
+
const stored = (0, browser_session_1.loadBrowserSession)();
|
|
200
|
+
if (stored && !options.session) {
|
|
201
|
+
(0, browser_session_1.clearBrowserSession)();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
console.error('Error:', error instanceof Error ? error.message : 'Unknown error occurred');
|
|
206
|
+
}
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* List browser sessions
|
|
212
|
+
*/
|
|
213
|
+
async function handleBrowserList(options) {
|
|
214
|
+
try {
|
|
215
|
+
const app = (0, client_1.getClient)({ apiKey: options.apiKey, apiUrl: options.apiUrl });
|
|
216
|
+
const data = await app.listBrowsers(options.status ? { status: options.status } : undefined);
|
|
217
|
+
if (!data.success) {
|
|
218
|
+
console.error('Error:', data.error || 'Unknown error');
|
|
219
|
+
process.exit(1);
|
|
220
|
+
}
|
|
221
|
+
const sessions = data.sessions || [];
|
|
222
|
+
if (options.json) {
|
|
223
|
+
const output = JSON.stringify(data, null, 2);
|
|
224
|
+
(0, output_1.writeOutput)(output, options.output, !!options.output);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
if (sessions.length === 0) {
|
|
228
|
+
(0, output_1.writeOutput)('No active browser sessions.', options.output, !!options.output);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
const lines = [];
|
|
232
|
+
for (const s of sessions) {
|
|
233
|
+
const age = s.createdAt
|
|
234
|
+
? `created ${new Date(s.createdAt).toLocaleString()}`
|
|
235
|
+
: '';
|
|
236
|
+
lines.push(`${s.id} ${s.status} ${age}`);
|
|
237
|
+
}
|
|
238
|
+
(0, output_1.writeOutput)(lines.join('\n'), options.output, !!options.output);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
console.error('Error:', error instanceof Error ? error.message : 'Unknown error occurred');
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Shorthand: auto-launch a session if needed, then execute an agent-browser command.
|
|
249
|
+
* Enables `firecrawl browser "open example.com"` without a separate launch step.
|
|
250
|
+
*/
|
|
251
|
+
async function handleBrowserQuickExecute(options) {
|
|
252
|
+
// Auto-launch if no active session
|
|
253
|
+
const existing = (0, browser_session_1.loadBrowserSession)();
|
|
254
|
+
if (!existing) {
|
|
255
|
+
try {
|
|
256
|
+
const app = (0, client_1.getClient)({ apiKey: options.apiKey, apiUrl: options.apiUrl });
|
|
257
|
+
const data = await app.browser({});
|
|
258
|
+
if (!data.success) {
|
|
259
|
+
console.error('Error:', data.error || 'Failed to launch session');
|
|
260
|
+
process.exit(1);
|
|
261
|
+
}
|
|
262
|
+
(0, browser_session_1.saveBrowserSession)({
|
|
263
|
+
id: data.id,
|
|
264
|
+
cdpUrl: data.cdpUrl,
|
|
265
|
+
createdAt: new Date().toISOString(),
|
|
266
|
+
});
|
|
267
|
+
// Print session info to stderr so it doesn't mix with command output
|
|
268
|
+
console.error(`Session launched: ${data.id}`);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
console.error('Error:', error instanceof Error ? error.message : 'Failed to launch session');
|
|
272
|
+
process.exit(1);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Auto-prefix agent-browser if needed
|
|
276
|
+
let finalCode = options.code;
|
|
277
|
+
if (!finalCode.startsWith('agent-browser')) {
|
|
278
|
+
finalCode = `agent-browser ${finalCode}`;
|
|
279
|
+
}
|
|
280
|
+
// Execute via the standard handler
|
|
281
|
+
await handleBrowserExecute({
|
|
282
|
+
code: finalCode,
|
|
283
|
+
language: 'bash',
|
|
284
|
+
apiKey: options.apiKey,
|
|
285
|
+
apiUrl: options.apiUrl,
|
|
286
|
+
output: options.output,
|
|
287
|
+
json: options.json,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Close a browser session
|
|
292
|
+
*/
|
|
293
|
+
async function handleBrowserClose(options) {
|
|
294
|
+
try {
|
|
295
|
+
const sessionId = (0, browser_session_1.getSessionId)(options.session);
|
|
296
|
+
const app = (0, client_1.getClient)({ apiKey: options.apiKey, apiUrl: options.apiUrl });
|
|
297
|
+
const data = await app.deleteBrowser(sessionId);
|
|
298
|
+
if (!data.success) {
|
|
299
|
+
console.error('Error:', data.error || 'Unknown error');
|
|
300
|
+
process.exit(1);
|
|
301
|
+
}
|
|
302
|
+
// Clear stored session
|
|
303
|
+
const stored = (0, browser_session_1.loadBrowserSession)();
|
|
304
|
+
if (stored && stored.id === sessionId) {
|
|
305
|
+
(0, browser_session_1.clearBrowserSession)();
|
|
306
|
+
}
|
|
307
|
+
console.log(`Session closed (${sessionId})`);
|
|
308
|
+
if (options.json) {
|
|
309
|
+
const output = JSON.stringify({ success: true, id: sessionId }, null, 2);
|
|
310
|
+
(0, output_1.writeOutput)(output, options.output, !!options.output);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
console.error('Error:', error instanceof Error ? error.message : 'Unknown error occurred');
|
|
315
|
+
process.exit(1);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/commands/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrape.d.ts","sourceRoot":"","sources":["../../src/commands/scrape.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,
|
|
1
|
+
{"version":3,"file":"scrape.d.ts","sourceRoot":"","sources":["../../src/commands/scrape.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EAGb,MAAM,iBAAiB,CAAC;AAoCzB;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CA+EvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
package/dist/commands/scrape.js
CHANGED
|
@@ -63,6 +63,9 @@ async function executeScrape(options) {
|
|
|
63
63
|
if (options.maxAge !== undefined) {
|
|
64
64
|
scrapeParams.maxAge = options.maxAge;
|
|
65
65
|
}
|
|
66
|
+
if (options.location) {
|
|
67
|
+
scrapeParams.location = options.location;
|
|
68
|
+
}
|
|
66
69
|
// Execute scrape with timing - only wrap the scrape call in try-catch
|
|
67
70
|
const requestStartTime = Date.now();
|
|
68
71
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrape.js","sourceRoot":"","sources":["../../src/commands/scrape.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"scrape.js","sourceRoot":"","sources":["../../src/commands/scrape.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA+CH,sCAiFC;AAKD,kDAuBC;AAnJD,4CAA4C;AAC5C,4CAAqD;AAErD;;GAEG;AACH,SAAS,YAAY,CACnB,OAAsB,EACtB,gBAAwB,EACxB,cAAsB,EACtB,KAAuB;IAEvB,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO;IAE5B,MAAM,eAAe,GAAG,cAAc,GAAG,gBAAgB,CAAC;IAC1D,MAAM,UAAU,GAMZ;QACF,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,WAAW,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE;QACrD,QAAQ,EAAE,GAAG,eAAe,IAAI;QAChC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;KACpC,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,UAAU,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IAC9E,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CACjC,OAAsB;IAEtB,wEAAwE;IACxE,MAAM,GAAG,GAAG,IAAA,kBAAS,EAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1E,uBAAuB;IACvB,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,wBAAwB;IACxB,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,8DAA8D;IAC9D,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED,+CAA+C;IAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,YAAY,GAQd;QACF,OAAO;KACR,CAAC;IAEF,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC1C,YAAY,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IACzD,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACzC,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED,sEAAsE;IACtE,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAExD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;QAE/D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;SACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,OAAsB;IAEtB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAE5C,kDAAkD;IAClD,MAAM,gBAAgB,GACpB,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC3C,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QACtB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAEnB,qEAAqE;IACrE,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnE,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,IAAA,2BAAkB,EAChB,MAAM,EACN,gBAAgB,EAChB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,IAAI,CACb,CAAC;AACJ,CAAC"}
|