@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,336 @@
1
+ /**
2
+ * Cloud API adapter - connects to thinkbrowse.io API
3
+ */
4
+ import { ApiError, SessionError } from '../errors.js';
5
+ import { config } from '../config/store.js';
6
+ export class CloudAdapter {
7
+ baseUrl;
8
+ apiKey;
9
+ defaultTimeout = 60000; // 60 seconds
10
+ constructor(apiKey, baseUrl) {
11
+ this.apiKey = apiKey || config.get('apiKey') || '';
12
+ this.baseUrl = baseUrl || config.get('apiUrl') || 'https://api.thinkbrowse.io';
13
+ if (!this.apiKey) {
14
+ throw new ApiError('API key not configured', 401, 'Run: thinkbrowse config set-key <your-api-key>');
15
+ }
16
+ }
17
+ async request(path, options = {}, retries = 3) {
18
+ const url = `${this.baseUrl}${path}`;
19
+ const headers = {
20
+ 'Content-Type': 'application/json',
21
+ 'x-api-key': this.apiKey,
22
+ ...options.headers,
23
+ };
24
+ try {
25
+ const response = await fetch(url, {
26
+ method: options.method || 'GET',
27
+ headers,
28
+ body: options.body,
29
+ signal: AbortSignal.timeout(this.defaultTimeout),
30
+ });
31
+ const data = await response.json();
32
+ if (!response.ok) {
33
+ if (response.status === 401) {
34
+ throw new ApiError('Invalid API key', 401, 'Check your API key with: thinkbrowse config show');
35
+ }
36
+ if (response.status === 404) {
37
+ throw new SessionError(data.error || 'Session not found', 'The session may have expired. Create a new one with: thinkbrowse cloud start');
38
+ }
39
+ throw new ApiError(data.error || data.message || 'API request failed', response.status);
40
+ }
41
+ return data;
42
+ }
43
+ catch (error) {
44
+ // Retry on transient errors
45
+ if (retries > 0 && (error.code === 'ECONNRESET' || error.code === 'ETIMEDOUT' || error.status === 502 || error.status === 503)) {
46
+ await this.sleep(Math.pow(2, 3 - retries) * 1000);
47
+ return this.request(path, options, retries - 1);
48
+ }
49
+ // Re-throw our custom errors
50
+ if (error instanceof ApiError || error instanceof SessionError) {
51
+ throw error;
52
+ }
53
+ // Wrap unknown errors
54
+ throw new ApiError(error.message || 'Network request failed', undefined, 'Check your internet connection');
55
+ }
56
+ }
57
+ sleep(ms) {
58
+ return new Promise(resolve => setTimeout(resolve, ms));
59
+ }
60
+ getActiveSessionId() {
61
+ const sessionId = config.get('activeSessionId');
62
+ if (!sessionId) {
63
+ throw new SessionError('No active session', 'Start a session with: thinkbrowse cloud start');
64
+ }
65
+ return sessionId;
66
+ }
67
+ // --- Session Management ---
68
+ async startSession(options = {}) {
69
+ const response = await this.request('/api/sessions', {
70
+ method: 'POST',
71
+ body: JSON.stringify({
72
+ browser: options.browser || config.get('defaultBrowser') || 'chromium',
73
+ proxyRotation: options.proxy ? { enabled: true } : undefined,
74
+ stealth: options.stealth,
75
+ headless: options.headless !== false,
76
+ }),
77
+ });
78
+ const session = {
79
+ sessionId: response.sessionId,
80
+ status: response.status,
81
+ createdAt: new Date().toISOString(),
82
+ };
83
+ config.set('activeSessionId', session.sessionId);
84
+ return session;
85
+ }
86
+ async waitForSessionReady(sessionId, timeout = 90000) {
87
+ const pollInterval = 2000;
88
+ const startTime = Date.now();
89
+ const terminalStatuses = ['active', 'ready', 'running', 'error', 'failed', 'terminated', 'closed'];
90
+ while (Date.now() - startTime < timeout) {
91
+ const session = await this.getSession(sessionId);
92
+ if (terminalStatuses.includes(session.status)) {
93
+ if (['error', 'failed', 'terminated', 'closed'].includes(session.status)) {
94
+ throw new SessionError(`Session entered ${session.status} state during provisioning`, 'Try creating a new session with: thinkbrowse cloud start');
95
+ }
96
+ return session;
97
+ }
98
+ await this.sleep(pollInterval);
99
+ }
100
+ throw new SessionError('Session provisioning timed out', 'The session may still be starting. Check with: thinkbrowse cloud status');
101
+ }
102
+ async stopSession(sessionId) {
103
+ const id = sessionId || this.getActiveSessionId();
104
+ await this.request(`/api/sessions/${id}`, {
105
+ method: 'DELETE',
106
+ });
107
+ if (id === config.get('activeSessionId')) {
108
+ config.delete('activeSessionId');
109
+ }
110
+ }
111
+ async getSession(sessionId) {
112
+ return this.request(`/api/sessions/${sessionId}`);
113
+ }
114
+ async listSessions() {
115
+ const response = await this.request('/api/sessions?includeTerminated=false');
116
+ // Handle both array and { sessions: [] } response shapes
117
+ if (Array.isArray(response))
118
+ return response;
119
+ return response.sessions || [];
120
+ }
121
+ // --- Navigation ---
122
+ async navigate(url, options = {}) {
123
+ const sessionId = this.getActiveSessionId();
124
+ const response = await this.request(`/api/sessions/${sessionId}/navigate`, {
125
+ method: 'POST',
126
+ body: JSON.stringify({
127
+ url,
128
+ waitUntil: options.waitUntil || 'load',
129
+ timeout: options.timeout,
130
+ }),
131
+ });
132
+ return {
133
+ success: response.success,
134
+ data: {
135
+ url: response.url,
136
+ title: response.title,
137
+ },
138
+ };
139
+ }
140
+ async goBack() {
141
+ const sessionId = this.getActiveSessionId();
142
+ return this.request(`/api/sessions/${sessionId}/go-back`, {
143
+ method: 'POST',
144
+ });
145
+ }
146
+ async goForward() {
147
+ const sessionId = this.getActiveSessionId();
148
+ return this.request(`/api/sessions/${sessionId}/go-forward`, {
149
+ method: 'POST',
150
+ });
151
+ }
152
+ // --- Interaction ---
153
+ async click(selector, options = {}) {
154
+ const sessionId = this.getActiveSessionId();
155
+ const response = await this.request(`/api/sessions/${sessionId}/click`, {
156
+ method: 'POST',
157
+ body: JSON.stringify({
158
+ selector,
159
+ button: options.button || 'left',
160
+ clickCount: options.count || 1,
161
+ delay: options.delay,
162
+ timeout: options.timeout || 15000,
163
+ }),
164
+ });
165
+ return { success: response.success };
166
+ }
167
+ async type(selector, text, options = {}) {
168
+ const sessionId = this.getActiveSessionId();
169
+ const response = await this.request(`/api/sessions/${sessionId}/type`, {
170
+ method: 'POST',
171
+ body: JSON.stringify({
172
+ selector,
173
+ text,
174
+ delay: options.delay,
175
+ }),
176
+ });
177
+ return { success: response.success };
178
+ }
179
+ async fill(selector, value) {
180
+ const sessionId = this.getActiveSessionId();
181
+ const response = await this.request(`/api/sessions/${sessionId}/fill`, {
182
+ method: 'POST',
183
+ body: JSON.stringify({ selector, value }),
184
+ });
185
+ return { success: response.success };
186
+ }
187
+ async press(key) {
188
+ const sessionId = this.getActiveSessionId();
189
+ const response = await this.request(`/api/sessions/${sessionId}/press`, {
190
+ method: 'POST',
191
+ body: JSON.stringify({ key }),
192
+ });
193
+ return { success: response.success };
194
+ }
195
+ async scroll(options) {
196
+ const sessionId = this.getActiveSessionId();
197
+ const response = await this.request(`/api/sessions/${sessionId}/scroll`, {
198
+ method: 'POST',
199
+ body: JSON.stringify(options),
200
+ });
201
+ return { success: response.success };
202
+ }
203
+ async hover(selector) {
204
+ const sessionId = this.getActiveSessionId();
205
+ const response = await this.request(`/api/sessions/${sessionId}/hover`, {
206
+ method: 'POST',
207
+ body: JSON.stringify({ selector }),
208
+ });
209
+ return { success: response.success };
210
+ }
211
+ async select(selector, value) {
212
+ const sessionId = this.getActiveSessionId();
213
+ const response = await this.request(`/api/sessions/${sessionId}/select`, {
214
+ method: 'POST',
215
+ body: JSON.stringify({ selector, value }),
216
+ });
217
+ return { success: response.success };
218
+ }
219
+ // --- Waiting ---
220
+ async wait(condition, options = {}) {
221
+ // If condition is a number, it's a timeout in ms
222
+ if (typeof condition === 'number') {
223
+ await this.sleep(condition);
224
+ return { success: true };
225
+ }
226
+ // Use the dedicated wait endpoint
227
+ const sessionId = this.getActiveSessionId();
228
+ const state = options.hidden ? 'hidden' : options.visible ? 'visible' : 'visible';
229
+ return this.request(`/api/sessions/${sessionId}/wait`, {
230
+ method: 'POST',
231
+ body: JSON.stringify({
232
+ selector: condition,
233
+ state,
234
+ timeout: options.timeout || 30000,
235
+ }),
236
+ });
237
+ }
238
+ async waitForText(text, options = {}) {
239
+ const sessionId = this.getActiveSessionId();
240
+ return this.request(`/api/sessions/${sessionId}/wait-for-text`, {
241
+ method: 'POST',
242
+ body: JSON.stringify({
243
+ text,
244
+ timeout: options.timeout || 30000,
245
+ }),
246
+ });
247
+ }
248
+ // --- Observation ---
249
+ async snapshot() {
250
+ const sessionId = this.getActiveSessionId();
251
+ const response = await this.request(`/api/sessions/${sessionId}/snapshot`, { method: 'POST' });
252
+ return {
253
+ success: response.success,
254
+ data: response.snapshot,
255
+ };
256
+ }
257
+ async screenshot(options = {}) {
258
+ const sessionId = this.getActiveSessionId();
259
+ const response = await this.request(`/api/sessions/${sessionId}/screenshot`, {
260
+ method: 'POST',
261
+ body: JSON.stringify({
262
+ fullPage: options.fullPage,
263
+ selector: options.selector,
264
+ type: options.format || 'png',
265
+ quality: options.quality,
266
+ upload: true,
267
+ }),
268
+ });
269
+ return {
270
+ success: response.success,
271
+ data: {
272
+ url: response.publicUrl,
273
+ artifactId: response.artifactId,
274
+ },
275
+ };
276
+ }
277
+ async extract(selector, options = {}) {
278
+ const sessionId = this.getActiveSessionId();
279
+ const response = await this.request(`/api/sessions/${sessionId}/extract`, {
280
+ method: 'POST',
281
+ body: JSON.stringify({
282
+ selector,
283
+ type: options.attr ? 'attribute' : options.format || 'text',
284
+ attribute: options.attr,
285
+ multiple: options.all,
286
+ }),
287
+ });
288
+ return {
289
+ success: response.success,
290
+ data: response.data,
291
+ };
292
+ }
293
+ async evaluate(script, args = []) {
294
+ const sessionId = this.getActiveSessionId();
295
+ const response = await this.request(`/api/sessions/${sessionId}/evaluate`, {
296
+ method: 'POST',
297
+ body: JSON.stringify({ script, args }),
298
+ });
299
+ return {
300
+ success: response.success,
301
+ data: response.result,
302
+ };
303
+ }
304
+ // --- Dialog Handling ---
305
+ async getDialog() {
306
+ const sessionId = this.getActiveSessionId();
307
+ return this.request(`/api/sessions/${sessionId}/dialog`);
308
+ }
309
+ async handleDialog(action, promptText) {
310
+ const sessionId = this.getActiveSessionId();
311
+ return this.request(`/api/sessions/${sessionId}/dialog`, {
312
+ method: 'POST',
313
+ body: JSON.stringify({ accept: action === 'accept', promptText }),
314
+ });
315
+ }
316
+ // --- Monitoring ---
317
+ async getConsoleMessages() {
318
+ const sessionId = this.getActiveSessionId();
319
+ const result = await this.request(`/api/sessions/${sessionId}/console`);
320
+ return {
321
+ success: result.success,
322
+ logs: result.data?.logs || [],
323
+ count: result.data?.count || 0,
324
+ };
325
+ }
326
+ async getNetworkRequests() {
327
+ const sessionId = this.getActiveSessionId();
328
+ const result = await this.request(`/api/sessions/${sessionId}/network`);
329
+ return {
330
+ success: result.success,
331
+ requests: result.data?.requests || [],
332
+ count: result.data?.count || 0,
333
+ };
334
+ }
335
+ }
336
+ //# sourceMappingURL=cloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../../src/adapters/cloud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Browser adapter interface
3
+ * Defines the contract for all browser backends (cloud, local, extension)
4
+ */
5
+ import type { Session, SessionOptions, ActionResult, NavigateOptions, ClickOptions, TypeOptions, ScreenshotOptions, ExtractOptions, WaitOptions, DialogResult, ConsoleResult, NetworkResult } from '../types.js';
6
+ export interface BrowserAdapter {
7
+ startSession(options?: SessionOptions): Promise<Session>;
8
+ stopSession(sessionId?: string): Promise<void>;
9
+ getSession(sessionId: string): Promise<Session>;
10
+ listSessions(): Promise<Session[]>;
11
+ waitForSessionReady(sessionId: string, timeout?: number): Promise<Session>;
12
+ navigate(url: string, options?: NavigateOptions): Promise<ActionResult>;
13
+ goBack(): Promise<ActionResult>;
14
+ goForward(): Promise<ActionResult>;
15
+ click(selector: string, options?: ClickOptions): Promise<ActionResult>;
16
+ type(selector: string, text: string, options?: TypeOptions): Promise<ActionResult>;
17
+ fill(selector: string, value: string): Promise<ActionResult>;
18
+ press(key: string): Promise<ActionResult>;
19
+ scroll(options: {
20
+ selector?: string;
21
+ x?: number;
22
+ y?: number;
23
+ }): Promise<ActionResult>;
24
+ hover(selector: string): Promise<ActionResult>;
25
+ select(selector: string, value: string): Promise<ActionResult>;
26
+ wait(condition: string | number, options?: WaitOptions): Promise<ActionResult>;
27
+ waitForText(text: string, options?: {
28
+ timeout?: number;
29
+ }): Promise<ActionResult>;
30
+ snapshot(): Promise<ActionResult>;
31
+ screenshot(options?: ScreenshotOptions): Promise<ActionResult>;
32
+ extract(selector: string, options?: ExtractOptions): Promise<ActionResult>;
33
+ evaluate(script: string, args?: any[]): Promise<ActionResult>;
34
+ getDialog(): Promise<DialogResult>;
35
+ handleDialog(action: 'accept' | 'dismiss', promptText?: string): Promise<ActionResult>;
36
+ getConsoleMessages(): Promise<ConsoleResult>;
37
+ getNetworkRequests(): Promise<NetworkResult>;
38
+ }
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Browser adapter interface
3
+ * Defines the contract for all browser backends (cloud, local, extension)
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,26 @@
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
+ export declare function createNavigateCommand(): Command;
8
+ export declare function createClickCommand(): Command;
9
+ export declare function createTypeCommand(): Command;
10
+ export declare function createFillCommand(): Command;
11
+ export declare function createScrollCommand(): Command;
12
+ export declare function createWaitCommand(): Command;
13
+ export declare function createWaitForTextCommand(): Command;
14
+ export declare function createHoverCommand(): Command;
15
+ export declare function createSelectCommand(): Command;
16
+ export declare function createPressCommand(): Command;
17
+ export declare function createBackCommand(): Command;
18
+ export declare function createForwardCommand(): Command;
19
+ export declare function createSnapshotCommand(): Command;
20
+ export declare function createScreenshotCommand(): Command;
21
+ export declare function createExtractCommand(): Command;
22
+ export declare function createEvaluateCommand(): Command;
23
+ export declare function createDialogCommand(): Command;
24
+ export declare function createConsoleCommand(): Command;
25
+ export declare function createNetworkCommand(): Command;
26
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/commands/actions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,qBAAqB,IAAI,OAAO,CAkC/C;AAGD,wBAAgB,kBAAkB,IAAI,OAAO,CA0B5C;AAGD,wBAAgB,iBAAiB,IAAI,OAAO,CA0B3C;AAGD,wBAAgB,iBAAiB,IAAI,OAAO,CAiB3C;AAGD,wBAAgB,mBAAmB,IAAI,OAAO,CA+B7C;AAGD,wBAAgB,iBAAiB,IAAI,OAAO,CAmC3C;AAGD,wBAAgB,wBAAwB,IAAI,OAAO,CAoBlD;AAGD,wBAAgB,kBAAkB,IAAI,OAAO,CAgB5C;AAGD,wBAAgB,mBAAmB,IAAI,OAAO,CAiB7C;AAGD,wBAAgB,kBAAkB,IAAI,OAAO,CAgB5C;AAGD,wBAAgB,iBAAiB,IAAI,OAAO,CAe3C;AAGD,wBAAgB,oBAAoB,IAAI,OAAO,CAe9C;AAGD,wBAAgB,qBAAqB,IAAI,OAAO,CAiB/C;AAGD,wBAAgB,uBAAuB,IAAI,OAAO,CAoCjD;AAGD,wBAAgB,oBAAoB,IAAI,OAAO,CA8B9C;AAGD,wBAAgB,qBAAqB,IAAI,OAAO,CA4B/C;AAGD,wBAAgB,mBAAmB,IAAI,OAAO,CAqE7C;AAGD,wBAAgB,oBAAoB,IAAI,OAAO,CAiC9C;AAGD,wBAAgB,oBAAoB,IAAI,OAAO,CAqC9C"}