@thinkbrowse/cli 0.1.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 (46) hide show
  1. package/README.md +246 -0
  2. package/dist/bin/thinkbrowse.d.ts +6 -0
  3. package/dist/bin/thinkbrowse.d.ts.map +1 -0
  4. package/dist/bin/thinkbrowse.js +58 -0
  5. package/dist/bin/thinkbrowse.js.map +1 -0
  6. package/dist/src/adapters/cloud.d.ts +46 -0
  7. package/dist/src/adapters/cloud.d.ts.map +1 -0
  8. package/dist/src/adapters/cloud.js +336 -0
  9. package/dist/src/adapters/cloud.js.map +1 -0
  10. package/dist/src/adapters/types.d.ts +39 -0
  11. package/dist/src/adapters/types.d.ts.map +1 -0
  12. package/dist/src/adapters/types.js +6 -0
  13. package/dist/src/adapters/types.js.map +1 -0
  14. package/dist/src/commands/actions.d.ts +26 -0
  15. package/dist/src/commands/actions.d.ts.map +1 -0
  16. package/dist/src/commands/actions.js +540 -0
  17. package/dist/src/commands/actions.js.map +1 -0
  18. package/dist/src/commands/cloud.d.ts +6 -0
  19. package/dist/src/commands/cloud.d.ts.map +1 -0
  20. package/dist/src/commands/cloud.js +212 -0
  21. package/dist/src/commands/cloud.js.map +1 -0
  22. package/dist/src/commands/config.d.ts +6 -0
  23. package/dist/src/commands/config.d.ts.map +1 -0
  24. package/dist/src/commands/config.js +123 -0
  25. package/dist/src/commands/config.js.map +1 -0
  26. package/dist/src/config/store.d.ts +22 -0
  27. package/dist/src/config/store.d.ts.map +1 -0
  28. package/dist/src/config/store.js +80 -0
  29. package/dist/src/config/store.js.map +1 -0
  30. package/dist/src/errors.d.ts +22 -0
  31. package/dist/src/errors.d.ts.map +1 -0
  32. package/dist/src/errors.js +40 -0
  33. package/dist/src/errors.js.map +1 -0
  34. package/dist/src/output/formatter.d.ts +18 -0
  35. package/dist/src/output/formatter.d.ts.map +1 -0
  36. package/dist/src/output/formatter.js +28 -0
  37. package/dist/src/output/formatter.js.map +1 -0
  38. package/dist/src/types.d.ts +108 -0
  39. package/dist/src/types.d.ts.map +1 -0
  40. package/dist/src/types.js +5 -0
  41. package/dist/src/types.js.map +1 -0
  42. package/dist/src/utils.d.ts +5 -0
  43. package/dist/src/utils.d.ts.map +1 -0
  44. package/dist/src/utils.js +18 -0
  45. package/dist/src/utils.js.map +1 -0
  46. package/package.json +53 -0
@@ -0,0 +1,540 @@
1
+ /**
2
+ * Browser action commands
3
+ * Includes: navigate, click, type, scroll, wait, hover, select, screenshot, extract, evaluate,
4
+ * back, forward, press, fill, snapshot, wait-for-text, dialog, console, network
5
+ */
6
+ import { Command } from 'commander';
7
+ import chalk from 'chalk';
8
+ import ora from 'ora';
9
+ import { writeFileSync } from 'fs';
10
+ import { CloudAdapter } from '../adapters/cloud.js';
11
+ import { handleError } from '../utils.js';
12
+ // Navigate
13
+ export function createNavigateCommand() {
14
+ return new Command('navigate')
15
+ .argument('<url>', 'URL to navigate to')
16
+ .option('--wait-until <condition>', 'Wait condition: load|domcontentloaded|networkidle', 'load')
17
+ .option('--timeout <ms>', 'Navigation timeout in milliseconds', '30000')
18
+ .option('--wait-for <selector>', 'Wait for selector after navigation')
19
+ .description('Navigate to a URL')
20
+ .action(async (url, options) => {
21
+ const spinner = ora(`Navigating to ${url}...`).start();
22
+ try {
23
+ const adapter = new CloudAdapter();
24
+ // Prepend https:// if no protocol
25
+ if (!url.startsWith('http://') && !url.startsWith('https://')) {
26
+ url = 'https://' + url;
27
+ }
28
+ const result = await adapter.navigate(url, {
29
+ waitUntil: options.waitUntil,
30
+ timeout: parseInt(options.timeout),
31
+ waitFor: options.waitFor,
32
+ });
33
+ spinner.succeed('Navigation complete');
34
+ if (result.data?.title) {
35
+ console.log(' Title:', chalk.cyan(result.data.title));
36
+ }
37
+ console.log(' URL: ', chalk.cyan(result.data?.url || url));
38
+ }
39
+ catch (error) {
40
+ spinner.fail('Navigation failed');
41
+ handleError(error);
42
+ }
43
+ });
44
+ }
45
+ // Click
46
+ export function createClickCommand() {
47
+ return new Command('click')
48
+ .argument('<selector>', 'CSS selector of element to click')
49
+ .option('--button <type>', 'Mouse button: left|right|middle', 'left')
50
+ .option('--count <n>', 'Click count (for double-click)', '1')
51
+ .option('--delay <ms>', 'Delay between mouse down and up', '0')
52
+ .option('--timeout <ms>', 'Timeout waiting for selector', '15000')
53
+ .description('Click an element')
54
+ .action(async (selector, options) => {
55
+ const spinner = ora(`Clicking ${selector}...`).start();
56
+ try {
57
+ const adapter = new CloudAdapter();
58
+ await adapter.click(selector, {
59
+ button: options.button,
60
+ count: parseInt(options.count),
61
+ delay: parseInt(options.delay),
62
+ timeout: parseInt(options.timeout),
63
+ });
64
+ spinner.succeed(`Clicked ${selector}`);
65
+ }
66
+ catch (error) {
67
+ spinner.fail('Click failed');
68
+ handleError(error);
69
+ }
70
+ });
71
+ }
72
+ // Type
73
+ export function createTypeCommand() {
74
+ return new Command('type')
75
+ .argument('<selector>', 'CSS selector of input element')
76
+ .argument('<text>', 'Text to type')
77
+ .option('--delay <ms>', 'Delay between keystrokes', '0')
78
+ .option('--clear', 'Clear field before typing')
79
+ .option('--mask', 'Mask text in output (for passwords)')
80
+ .description('Type text into an element')
81
+ .action(async (selector, text, options) => {
82
+ const displayText = options.mask ? '***' : text;
83
+ const spinner = ora(`Typing into ${selector}...`).start();
84
+ try {
85
+ const adapter = new CloudAdapter();
86
+ await adapter.type(selector, text, {
87
+ delay: parseInt(options.delay),
88
+ clear: options.clear,
89
+ mask: options.mask,
90
+ });
91
+ spinner.succeed(`Typed "${displayText}" into ${selector}`);
92
+ }
93
+ catch (error) {
94
+ spinner.fail('Type failed');
95
+ handleError(error);
96
+ }
97
+ });
98
+ }
99
+ // Fill (clears field first, then sets value)
100
+ export function createFillCommand() {
101
+ return new Command('fill')
102
+ .argument('<selector>', 'CSS selector of input element')
103
+ .argument('<value>', 'Value to fill')
104
+ .description('Fill a form field (clears existing value first)')
105
+ .action(async (selector, value) => {
106
+ const spinner = ora(`Filling ${selector}...`).start();
107
+ try {
108
+ const adapter = new CloudAdapter();
109
+ await adapter.fill(selector, value);
110
+ spinner.succeed(`Filled ${selector}`);
111
+ }
112
+ catch (error) {
113
+ spinner.fail('Fill failed');
114
+ handleError(error);
115
+ }
116
+ });
117
+ }
118
+ // Scroll
119
+ export function createScrollCommand() {
120
+ return new Command('scroll')
121
+ .option('--down <px>', 'Scroll down by pixels')
122
+ .option('--up <px>', 'Scroll up by pixels')
123
+ .option('--to <selector>', 'Scroll element into view')
124
+ .description('Scroll the page')
125
+ .action(async (options) => {
126
+ const spinner = ora('Scrolling...').start();
127
+ try {
128
+ const adapter = new CloudAdapter();
129
+ let scrollOptions = {};
130
+ if (options.to) {
131
+ scrollOptions.selector = options.to;
132
+ }
133
+ else if (options.down) {
134
+ scrollOptions.y = parseInt(options.down);
135
+ }
136
+ else if (options.up) {
137
+ scrollOptions.y = -parseInt(options.up);
138
+ }
139
+ else {
140
+ spinner.fail('Specify --down, --up, or --to');
141
+ process.exit(1);
142
+ }
143
+ await adapter.scroll(scrollOptions);
144
+ spinner.succeed('Scrolled');
145
+ }
146
+ catch (error) {
147
+ spinner.fail('Scroll failed');
148
+ handleError(error);
149
+ }
150
+ });
151
+ }
152
+ // Wait
153
+ export function createWaitCommand() {
154
+ return new Command('wait')
155
+ .argument('<condition>', 'Selector to wait for, or milliseconds to wait')
156
+ .option('--visible', 'Wait for element to be visible')
157
+ .option('--hidden', 'Wait for element to be hidden')
158
+ .option('--timeout <ms>', 'Timeout in milliseconds', '30000')
159
+ .description('Wait for element or time')
160
+ .action(async (condition, options) => {
161
+ try {
162
+ const adapter = new CloudAdapter();
163
+ // Check if condition is a number (milliseconds)
164
+ const ms = parseInt(condition);
165
+ if (!isNaN(ms)) {
166
+ const spinner = ora(`Waiting ${ms}ms...`).start();
167
+ await adapter.wait(ms);
168
+ spinner.succeed(`Waited ${ms}ms`);
169
+ return;
170
+ }
171
+ // Otherwise it's a selector
172
+ const action = options.hidden ? 'hide' : 'appear';
173
+ const spinner = ora(`Waiting for ${condition} to ${action}...`).start();
174
+ await adapter.wait(condition, {
175
+ visible: !options.hidden,
176
+ hidden: options.hidden,
177
+ timeout: parseInt(options.timeout),
178
+ });
179
+ spinner.succeed(`Element ${condition} ${action}ed`);
180
+ }
181
+ catch (error) {
182
+ handleError(error);
183
+ }
184
+ });
185
+ }
186
+ // Wait for text
187
+ export function createWaitForTextCommand() {
188
+ return new Command('wait-for-text')
189
+ .argument('<text>', 'Text to wait for on the page')
190
+ .option('--timeout <ms>', 'Timeout in milliseconds', '30000')
191
+ .description('Wait for text to appear on the page')
192
+ .action(async (text, options) => {
193
+ const spinner = ora(`Waiting for "${text}"...`).start();
194
+ try {
195
+ const adapter = new CloudAdapter();
196
+ await adapter.waitForText(text, {
197
+ timeout: parseInt(options.timeout),
198
+ });
199
+ spinner.succeed(`Text "${text}" found`);
200
+ }
201
+ catch (error) {
202
+ spinner.fail(`Text "${text}" not found`);
203
+ handleError(error);
204
+ }
205
+ });
206
+ }
207
+ // Hover
208
+ export function createHoverCommand() {
209
+ return new Command('hover')
210
+ .argument('<selector>', 'CSS selector of element to hover')
211
+ .description('Hover over an element')
212
+ .action(async (selector) => {
213
+ const spinner = ora(`Hovering over ${selector}...`).start();
214
+ try {
215
+ const adapter = new CloudAdapter();
216
+ await adapter.hover(selector);
217
+ spinner.succeed(`Hovered over ${selector}`);
218
+ }
219
+ catch (error) {
220
+ spinner.fail('Hover failed');
221
+ handleError(error);
222
+ }
223
+ });
224
+ }
225
+ // Select
226
+ export function createSelectCommand() {
227
+ return new Command('select')
228
+ .argument('<selector>', 'CSS selector of select element')
229
+ .argument('<value>', 'Value to select')
230
+ .description('Select option in dropdown')
231
+ .action(async (selector, value) => {
232
+ const spinner = ora(`Selecting "${value}" in ${selector}...`).start();
233
+ try {
234
+ const adapter = new CloudAdapter();
235
+ await adapter.select(selector, value);
236
+ spinner.succeed(`Selected "${value}" in ${selector}`);
237
+ }
238
+ catch (error) {
239
+ spinner.fail('Select failed');
240
+ handleError(error);
241
+ }
242
+ });
243
+ }
244
+ // Press key
245
+ export function createPressCommand() {
246
+ return new Command('press')
247
+ .argument('<key>', 'Key to press (e.g. Enter, Tab, Escape, ArrowDown)')
248
+ .description('Press a keyboard key')
249
+ .action(async (key) => {
250
+ const spinner = ora(`Pressing ${key}...`).start();
251
+ try {
252
+ const adapter = new CloudAdapter();
253
+ await adapter.press(key);
254
+ spinner.succeed(`Pressed ${key}`);
255
+ }
256
+ catch (error) {
257
+ spinner.fail('Press failed');
258
+ handleError(error);
259
+ }
260
+ });
261
+ }
262
+ // Back
263
+ export function createBackCommand() {
264
+ return new Command('back')
265
+ .description('Navigate back in browser history')
266
+ .action(async () => {
267
+ const spinner = ora('Going back...').start();
268
+ try {
269
+ const adapter = new CloudAdapter();
270
+ await adapter.goBack();
271
+ spinner.succeed('Navigated back');
272
+ }
273
+ catch (error) {
274
+ spinner.fail('Back failed');
275
+ handleError(error);
276
+ }
277
+ });
278
+ }
279
+ // Forward
280
+ export function createForwardCommand() {
281
+ return new Command('forward')
282
+ .description('Navigate forward in browser history')
283
+ .action(async () => {
284
+ const spinner = ora('Going forward...').start();
285
+ try {
286
+ const adapter = new CloudAdapter();
287
+ await adapter.goForward();
288
+ spinner.succeed('Navigated forward');
289
+ }
290
+ catch (error) {
291
+ spinner.fail('Forward failed');
292
+ handleError(error);
293
+ }
294
+ });
295
+ }
296
+ // Snapshot (accessibility tree)
297
+ export function createSnapshotCommand() {
298
+ return new Command('snapshot')
299
+ .description('Get accessibility snapshot of the page')
300
+ .action(async () => {
301
+ const spinner = ora('Taking snapshot...').start();
302
+ try {
303
+ const adapter = new CloudAdapter();
304
+ const result = await adapter.snapshot();
305
+ spinner.succeed('Snapshot captured');
306
+ console.log(result.data);
307
+ }
308
+ catch (error) {
309
+ spinner.fail('Snapshot failed');
310
+ handleError(error);
311
+ }
312
+ });
313
+ }
314
+ // Screenshot
315
+ export function createScreenshotCommand() {
316
+ return new Command('screenshot')
317
+ .option('--output <path>', 'Save screenshot to file')
318
+ .option('--full-page', 'Capture full scrollable page')
319
+ .option('--selector <selector>', 'Capture specific element')
320
+ .option('--format <type>', 'Image format: png|jpeg|webp', 'png')
321
+ .option('--quality <n>', 'JPEG/WebP quality (0-100)', '80')
322
+ .description('Capture screenshot')
323
+ .action(async (options) => {
324
+ const spinner = ora('Capturing screenshot...').start();
325
+ try {
326
+ const adapter = new CloudAdapter();
327
+ const result = await adapter.screenshot({
328
+ output: options.output,
329
+ fullPage: options.fullPage,
330
+ selector: options.selector,
331
+ format: options.format,
332
+ quality: parseInt(options.quality),
333
+ });
334
+ if (options.output && result.data?.url) {
335
+ // Download screenshot to file
336
+ const response = await fetch(result.data.url);
337
+ const buffer = Buffer.from(await response.arrayBuffer());
338
+ writeFileSync(options.output, buffer);
339
+ spinner.succeed(`Screenshot saved to ${options.output}`);
340
+ }
341
+ else {
342
+ spinner.succeed('Screenshot captured');
343
+ console.log(' URL:', chalk.cyan(result.data?.url));
344
+ }
345
+ }
346
+ catch (error) {
347
+ spinner.fail('Screenshot failed');
348
+ handleError(error);
349
+ }
350
+ });
351
+ }
352
+ // Extract
353
+ export function createExtractCommand() {
354
+ return new Command('extract')
355
+ .argument('<selector>', 'CSS selector of element(s) to extract')
356
+ .option('--all', 'Extract all matching elements')
357
+ .option('--attr <name>', 'Extract attribute instead of text')
358
+ .option('--format <type>', 'Output format: text|json|html', 'text')
359
+ .description('Extract content from elements')
360
+ .action(async (selector, options) => {
361
+ const spinner = ora(`Extracting from ${selector}...`).start();
362
+ try {
363
+ const adapter = new CloudAdapter();
364
+ const result = await adapter.extract(selector, {
365
+ all: options.all,
366
+ attr: options.attr,
367
+ format: options.format,
368
+ });
369
+ spinner.succeed('Extracted');
370
+ if (options.format === 'json') {
371
+ console.log(JSON.stringify(result.data, null, 2));
372
+ }
373
+ else {
374
+ console.log(result.data);
375
+ }
376
+ }
377
+ catch (error) {
378
+ spinner.fail('Extract failed');
379
+ handleError(error);
380
+ }
381
+ });
382
+ }
383
+ // Evaluate
384
+ export function createEvaluateCommand() {
385
+ return new Command('evaluate')
386
+ .argument('[script]', 'JavaScript to execute')
387
+ .option('--file <path>', 'Read script from file')
388
+ .description('Execute JavaScript in page context')
389
+ .action(async (script, options) => {
390
+ try {
391
+ const adapter = new CloudAdapter();
392
+ if (options.file) {
393
+ const { readFileSync } = await import('fs');
394
+ script = readFileSync(options.file, 'utf-8');
395
+ }
396
+ if (!script) {
397
+ console.error(chalk.red('Error:'), 'Provide script as argument or use --file');
398
+ process.exit(1);
399
+ }
400
+ const spinner = ora('Executing script...').start();
401
+ const result = await adapter.evaluate(script);
402
+ spinner.succeed('Script executed');
403
+ console.log(result.data);
404
+ }
405
+ catch (error) {
406
+ handleError(error);
407
+ }
408
+ });
409
+ }
410
+ // Dialog
411
+ export function createDialogCommand() {
412
+ const dialogCmd = new Command('dialog')
413
+ .description('Handle browser dialogs (alert, confirm, prompt)');
414
+ dialogCmd
415
+ .command('get')
416
+ .description('Check for pending dialog')
417
+ .action(async () => {
418
+ try {
419
+ const adapter = new CloudAdapter();
420
+ const result = await adapter.getDialog();
421
+ if (result.dialog) {
422
+ console.log(chalk.bold('Dialog:'));
423
+ console.log(' Type: ', chalk.cyan(result.dialog.type));
424
+ console.log(' Message:', result.dialog.message);
425
+ if (result.dialog.defaultValue) {
426
+ console.log(' Default:', result.dialog.defaultValue);
427
+ }
428
+ }
429
+ else {
430
+ console.log(chalk.gray('No pending dialog'));
431
+ }
432
+ if (result.history && result.history.length > 0) {
433
+ console.log('');
434
+ console.log(chalk.bold(`Dialog History (${result.history.length}):`));
435
+ for (const entry of result.history) {
436
+ console.log(` ${chalk.gray(entry.timestamp)} ${entry.type}: "${entry.message}" → ${entry.action}`);
437
+ }
438
+ }
439
+ }
440
+ catch (error) {
441
+ handleError(error);
442
+ }
443
+ });
444
+ dialogCmd
445
+ .command('accept')
446
+ .argument('[text]', 'Text for prompt dialogs')
447
+ .description('Accept the pending dialog')
448
+ .action(async (text) => {
449
+ const spinner = ora('Accepting dialog...').start();
450
+ try {
451
+ const adapter = new CloudAdapter();
452
+ await adapter.handleDialog('accept', text);
453
+ spinner.succeed('Dialog accepted');
454
+ }
455
+ catch (error) {
456
+ spinner.fail('Failed to accept dialog');
457
+ handleError(error);
458
+ }
459
+ });
460
+ dialogCmd
461
+ .command('dismiss')
462
+ .description('Dismiss the pending dialog')
463
+ .action(async () => {
464
+ const spinner = ora('Dismissing dialog...').start();
465
+ try {
466
+ const adapter = new CloudAdapter();
467
+ await adapter.handleDialog('dismiss');
468
+ spinner.succeed('Dialog dismissed');
469
+ }
470
+ catch (error) {
471
+ spinner.fail('Failed to dismiss dialog');
472
+ handleError(error);
473
+ }
474
+ });
475
+ return dialogCmd;
476
+ }
477
+ // Console
478
+ export function createConsoleCommand() {
479
+ return new Command('console')
480
+ .description('Get browser console messages')
481
+ .action(async () => {
482
+ const spinner = ora('Fetching console messages...').start();
483
+ try {
484
+ const adapter = new CloudAdapter();
485
+ const result = await adapter.getConsoleMessages();
486
+ spinner.stop();
487
+ if (!result.logs || result.logs.length === 0) {
488
+ console.log(chalk.gray('No console messages'));
489
+ return;
490
+ }
491
+ console.log(chalk.bold(`Console Messages (${result.count}):`));
492
+ console.log('');
493
+ for (const log of result.logs) {
494
+ const levelColor = log.level === 'error' ? chalk.red
495
+ : log.level === 'warning' ? chalk.yellow
496
+ : log.level === 'info' ? chalk.blue
497
+ : chalk.gray;
498
+ console.log(` ${levelColor(`[${log.level}]`)} ${log.text}`);
499
+ }
500
+ }
501
+ catch (error) {
502
+ spinner.fail('Failed to fetch console messages');
503
+ handleError(error);
504
+ }
505
+ });
506
+ }
507
+ // Network
508
+ export function createNetworkCommand() {
509
+ return new Command('network')
510
+ .description('Get network requests')
511
+ .action(async () => {
512
+ const spinner = ora('Fetching network requests...').start();
513
+ try {
514
+ const adapter = new CloudAdapter();
515
+ const result = await adapter.getNetworkRequests();
516
+ spinner.stop();
517
+ if (!result.requests || result.requests.length === 0) {
518
+ console.log(chalk.gray('No network requests'));
519
+ return;
520
+ }
521
+ console.log(chalk.bold(`Network Requests (${result.count}):`));
522
+ console.log('');
523
+ for (const req of result.requests) {
524
+ const statusColor = req.status && req.status < 300 ? chalk.green
525
+ : req.status && req.status < 400 ? chalk.cyan
526
+ : req.status && req.status < 500 ? chalk.yellow
527
+ : chalk.red;
528
+ const status = req.status ? statusColor(req.status.toString()) : chalk.gray('---');
529
+ const method = chalk.bold(req.method.padEnd(6));
530
+ const size = req.size ? chalk.gray(`${(req.size / 1024).toFixed(1)}KB`) : '';
531
+ console.log(` ${status} ${method} ${req.url} ${size}`);
532
+ }
533
+ }
534
+ catch (error) {
535
+ spinner.fail('Failed to fetch network requests');
536
+ handleError(error);
537
+ }
538
+ });
539
+ }
540
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/commands/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Cloud browser session management commands
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function createCloudCommand(): Command;
6
+ //# sourceMappingURL=cloud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../../src/commands/cloud.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,kBAAkB,IAAI,OAAO,CA+L5C"}