@sparkleideas/browser 3.0.0-alpha.2-patch.17 → 3.0.0-alpha.2-patch.19

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 (53) hide show
  1. package/package.json +2 -2
  2. package/dist/agent/index.d.ts +0 -25
  3. package/dist/agent/index.d.ts.map +0 -1
  4. package/dist/agent/index.js +0 -33
  5. package/dist/agent/index.js.map +0 -1
  6. package/dist/application/browser-service.d.ts +0 -228
  7. package/dist/application/browser-service.d.ts.map +0 -1
  8. package/dist/application/browser-service.js +0 -470
  9. package/dist/application/browser-service.js.map +0 -1
  10. package/dist/domain/types.d.ts +0 -428
  11. package/dist/domain/types.d.ts.map +0 -1
  12. package/dist/domain/types.js +0 -95
  13. package/dist/domain/types.js.map +0 -1
  14. package/dist/index.d.ts +0 -131
  15. package/dist/index.d.ts.map +0 -1
  16. package/dist/index.js +0 -84
  17. package/dist/index.js.map +0 -1
  18. package/dist/infrastructure/agent-browser-adapter.d.ts +0 -134
  19. package/dist/infrastructure/agent-browser-adapter.d.ts.map +0 -1
  20. package/dist/infrastructure/agent-browser-adapter.js +0 -551
  21. package/dist/infrastructure/agent-browser-adapter.js.map +0 -1
  22. package/dist/infrastructure/hooks-integration.d.ts +0 -109
  23. package/dist/infrastructure/hooks-integration.d.ts.map +0 -1
  24. package/dist/infrastructure/hooks-integration.js +0 -111
  25. package/dist/infrastructure/hooks-integration.js.map +0 -1
  26. package/dist/infrastructure/memory-integration.d.ts +0 -149
  27. package/dist/infrastructure/memory-integration.d.ts.map +0 -1
  28. package/dist/infrastructure/memory-integration.js +0 -335
  29. package/dist/infrastructure/memory-integration.js.map +0 -1
  30. package/dist/infrastructure/reasoningbank-adapter.d.ts +0 -90
  31. package/dist/infrastructure/reasoningbank-adapter.d.ts.map +0 -1
  32. package/dist/infrastructure/reasoningbank-adapter.js +0 -224
  33. package/dist/infrastructure/reasoningbank-adapter.js.map +0 -1
  34. package/dist/infrastructure/security-integration.d.ts +0 -80
  35. package/dist/infrastructure/security-integration.d.ts.map +0 -1
  36. package/dist/infrastructure/security-integration.js +0 -404
  37. package/dist/infrastructure/security-integration.js.map +0 -1
  38. package/dist/infrastructure/workflow-templates.d.ts +0 -95
  39. package/dist/infrastructure/workflow-templates.d.ts.map +0 -1
  40. package/dist/infrastructure/workflow-templates.js +0 -366
  41. package/dist/infrastructure/workflow-templates.js.map +0 -1
  42. package/dist/mcp-tools/browser-tools.d.ts +0 -18
  43. package/dist/mcp-tools/browser-tools.d.ts.map +0 -1
  44. package/dist/mcp-tools/browser-tools.js +0 -1163
  45. package/dist/mcp-tools/browser-tools.js.map +0 -1
  46. package/dist/mcp-tools/index.d.ts +0 -6
  47. package/dist/mcp-tools/index.d.ts.map +0 -1
  48. package/dist/mcp-tools/index.js +0 -6
  49. package/dist/mcp-tools/index.js.map +0 -1
  50. package/dist/skill/index.d.ts +0 -15
  51. package/dist/skill/index.d.ts.map +0 -1
  52. package/dist/skill/index.js +0 -23
  53. package/dist/skill/index.js.map +0 -1
@@ -1,551 +0,0 @@
1
- /**
2
- * @sparkleideas/browser - Agent Browser Adapter
3
- * Wraps agent-browser CLI for programmatic access
4
- */
5
- import { execSync } from 'child_process';
6
- export class AgentBrowserAdapter {
7
- session;
8
- timeout;
9
- headless;
10
- executablePath;
11
- proxy;
12
- viewport;
13
- debug;
14
- constructor(options = {}) {
15
- this.session = options.session || 'default';
16
- this.timeout = options.timeout || 30000;
17
- this.headless = options.headless !== false;
18
- this.executablePath = options.executablePath;
19
- this.proxy = options.proxy;
20
- this.viewport = options.viewport;
21
- this.debug = options.debug || false;
22
- }
23
- // ===========================================================================
24
- // Core Command Execution
25
- // ===========================================================================
26
- async exec(args, jsonOutput = true) {
27
- const startTime = Date.now();
28
- const fullArgs = [
29
- '--session', this.session,
30
- ...(this.timeout ? ['--timeout', String(this.timeout)] : []),
31
- ...(!this.headless ? ['--headed'] : []),
32
- ...(this.executablePath ? ['--executable-path', this.executablePath] : []),
33
- ...(this.proxy ? ['--proxy-server', this.proxy] : []),
34
- ...(jsonOutput ? ['--json'] : []),
35
- ...args,
36
- ];
37
- if (this.debug) {
38
- console.log(`[agent-browser] ${fullArgs.join(' ')}`);
39
- }
40
- return new Promise((resolve) => {
41
- try {
42
- const result = execSync(`agent-browser ${fullArgs.join(' ')}`, {
43
- encoding: 'utf-8',
44
- timeout: this.timeout + 5000,
45
- stdio: ['pipe', 'pipe', 'pipe'],
46
- });
47
- const duration = Date.now() - startTime;
48
- if (jsonOutput) {
49
- try {
50
- const parsed = JSON.parse(result);
51
- resolve({
52
- success: parsed.success !== false,
53
- data: (parsed.data || parsed),
54
- duration,
55
- });
56
- }
57
- catch {
58
- resolve({ success: true, data: result.trim(), duration });
59
- }
60
- }
61
- else {
62
- resolve({ success: true, data: result.trim(), duration });
63
- }
64
- }
65
- catch (error) {
66
- const duration = Date.now() - startTime;
67
- const message = error instanceof Error ? error.message : String(error);
68
- resolve({ success: false, error: message, duration });
69
- }
70
- });
71
- }
72
- // ===========================================================================
73
- // Navigation Commands
74
- // ===========================================================================
75
- async open(input) {
76
- const args = ['open', input.url];
77
- if (input.waitUntil)
78
- args.push('--wait', input.waitUntil);
79
- if (input.headers)
80
- args.push('--headers', JSON.stringify(input.headers));
81
- return this.exec(args);
82
- }
83
- async back() {
84
- return this.exec(['back']);
85
- }
86
- async forward() {
87
- return this.exec(['forward']);
88
- }
89
- async reload() {
90
- return this.exec(['reload']);
91
- }
92
- async close() {
93
- return this.exec(['close']);
94
- }
95
- // ===========================================================================
96
- // Interaction Commands
97
- // ===========================================================================
98
- async click(input) {
99
- const args = ['click', input.target];
100
- if (input.button)
101
- args.push('--button', input.button);
102
- if (input.clickCount)
103
- args.push('--click-count', String(input.clickCount));
104
- if (input.force)
105
- args.push('--force');
106
- return this.exec(args);
107
- }
108
- async dblclick(target) {
109
- return this.exec(['dblclick', target]);
110
- }
111
- async fill(input) {
112
- return this.exec(['fill', input.target, input.value]);
113
- }
114
- async type(input) {
115
- const args = ['type', input.target, input.text];
116
- if (input.delay)
117
- args.push('--delay', String(input.delay));
118
- return this.exec(args);
119
- }
120
- async press(key, delay) {
121
- const args = ['press', key];
122
- if (delay)
123
- args.push('--delay', String(delay));
124
- return this.exec(args);
125
- }
126
- async hover(target) {
127
- return this.exec(['hover', target]);
128
- }
129
- async focus(target) {
130
- return this.exec(['focus', target]);
131
- }
132
- async select(target, value) {
133
- return this.exec(['select', target, value]);
134
- }
135
- async check(target) {
136
- return this.exec(['check', target]);
137
- }
138
- async uncheck(target) {
139
- return this.exec(['uncheck', target]);
140
- }
141
- async scroll(direction, pixels) {
142
- const args = ['scroll', direction];
143
- if (pixels)
144
- args.push(String(pixels));
145
- return this.exec(args);
146
- }
147
- async scrollIntoView(target) {
148
- return this.exec(['scrollintoview', target]);
149
- }
150
- async drag(source, target) {
151
- return this.exec(['drag', source, target]);
152
- }
153
- async upload(target, files) {
154
- return this.exec(['upload', target, ...files]);
155
- }
156
- // ===========================================================================
157
- // Information Retrieval
158
- // ===========================================================================
159
- async get(input) {
160
- const args = ['get', input.type];
161
- if (input.target)
162
- args.push(input.target);
163
- if (input.attribute && input.type === 'attr')
164
- args.push(input.attribute);
165
- return this.exec(args);
166
- }
167
- async getText(target) {
168
- return this.exec(['get', 'text', target]);
169
- }
170
- async getHtml(target) {
171
- return this.exec(['get', 'html', target]);
172
- }
173
- async getValue(target) {
174
- return this.exec(['get', 'value', target]);
175
- }
176
- async getAttr(target, attribute) {
177
- return this.exec(['get', 'attr', target, attribute]);
178
- }
179
- async getTitle() {
180
- return this.exec(['get', 'title']);
181
- }
182
- async getUrl() {
183
- return this.exec(['get', 'url']);
184
- }
185
- async getCount(selector) {
186
- return this.exec(['get', 'count', selector]);
187
- }
188
- async getBox(target) {
189
- return this.exec(['get', 'box', target]);
190
- }
191
- // ===========================================================================
192
- // State Checks
193
- // ===========================================================================
194
- async isVisible(target) {
195
- return this.exec(['is', 'visible', target]);
196
- }
197
- async isEnabled(target) {
198
- return this.exec(['is', 'enabled', target]);
199
- }
200
- async isChecked(target) {
201
- return this.exec(['is', 'checked', target]);
202
- }
203
- // ===========================================================================
204
- // Snapshot & Screenshot
205
- // ===========================================================================
206
- async snapshot(options = {}) {
207
- const args = ['snapshot'];
208
- if (options.interactive)
209
- args.push('-i');
210
- if (options.compact)
211
- args.push('-c');
212
- if (options.depth)
213
- args.push('-d', String(options.depth));
214
- if (options.selector)
215
- args.push('-s', options.selector);
216
- return this.exec(args);
217
- }
218
- async screenshot(input = {}) {
219
- const args = ['screenshot'];
220
- if (input.path)
221
- args.push(input.path);
222
- if (input.fullPage)
223
- args.push('--full');
224
- return this.exec(args);
225
- }
226
- async pdf(path) {
227
- return this.exec(['pdf', path]);
228
- }
229
- // ===========================================================================
230
- // Wait Commands
231
- // ===========================================================================
232
- async wait(input) {
233
- if (input.selector) {
234
- return this.exec(['wait', input.selector]);
235
- }
236
- if (typeof input.timeout === 'number' && !input.text && !input.url && !input.load && !input.fn) {
237
- return this.exec(['wait', String(input.timeout)]);
238
- }
239
- const args = ['wait'];
240
- if (input.text)
241
- args.push('--text', input.text);
242
- if (input.url)
243
- args.push('--url', input.url);
244
- if (input.load)
245
- args.push('--load', input.load);
246
- if (input.fn)
247
- args.push('--fn', input.fn);
248
- return this.exec(args);
249
- }
250
- async waitForSelector(selector, timeout) {
251
- const args = ['wait', selector];
252
- if (timeout)
253
- args.push('--timeout', String(timeout));
254
- return this.exec(args);
255
- }
256
- async waitForText(text) {
257
- return this.exec(['wait', '--text', text]);
258
- }
259
- async waitForUrl(pattern) {
260
- return this.exec(['wait', '--url', pattern]);
261
- }
262
- async waitForLoad(state) {
263
- return this.exec(['wait', '--load', state]);
264
- }
265
- async waitForFunction(fn) {
266
- return this.exec(['wait', '--fn', fn]);
267
- }
268
- // ===========================================================================
269
- // JavaScript Execution
270
- // ===========================================================================
271
- async eval(input) {
272
- return this.exec(['eval', input.script]);
273
- }
274
- // ===========================================================================
275
- // Mouse Control
276
- // ===========================================================================
277
- async mouseMove(x, y) {
278
- return this.exec(['mouse', 'move', String(x), String(y)]);
279
- }
280
- async mouseDown(button = 'left') {
281
- return this.exec(['mouse', 'down', button]);
282
- }
283
- async mouseUp(button = 'left') {
284
- return this.exec(['mouse', 'up', button]);
285
- }
286
- async mouseWheel(deltaY, deltaX = 0) {
287
- return this.exec(['mouse', 'wheel', String(deltaY), String(deltaX)]);
288
- }
289
- // ===========================================================================
290
- // Browser Settings
291
- // ===========================================================================
292
- async setViewport(width, height) {
293
- return this.exec(['set', 'viewport', String(width), String(height)]);
294
- }
295
- async setDevice(device) {
296
- return this.exec(['set', 'device', device]);
297
- }
298
- async setGeolocation(lat, lng) {
299
- return this.exec(['set', 'geo', String(lat), String(lng)]);
300
- }
301
- async setOffline(enabled) {
302
- return this.exec(['set', 'offline', enabled ? 'on' : 'off']);
303
- }
304
- async setHeaders(headers) {
305
- return this.exec(['set', 'headers', JSON.stringify(headers)]);
306
- }
307
- async setCredentials(username, password) {
308
- return this.exec(['set', 'credentials', username, password]);
309
- }
310
- async setMedia(scheme) {
311
- return this.exec(['set', 'media', scheme]);
312
- }
313
- // ===========================================================================
314
- // Cookies & Storage
315
- // ===========================================================================
316
- async getCookies() {
317
- return this.exec(['cookies']);
318
- }
319
- async setCookie(name, value) {
320
- return this.exec(['cookies', 'set', name, value]);
321
- }
322
- async clearCookies() {
323
- return this.exec(['cookies', 'clear']);
324
- }
325
- async getLocalStorage(key) {
326
- const args = ['storage', 'local'];
327
- if (key)
328
- args.push(key);
329
- return this.exec(args);
330
- }
331
- async setLocalStorage(key, value) {
332
- return this.exec(['storage', 'local', 'set', key, value]);
333
- }
334
- async clearLocalStorage() {
335
- return this.exec(['storage', 'local', 'clear']);
336
- }
337
- async getSessionStorage(key) {
338
- const args = ['storage', 'session'];
339
- if (key)
340
- args.push(key);
341
- return this.exec(args);
342
- }
343
- async setSessionStorage(key, value) {
344
- return this.exec(['storage', 'session', 'set', key, value]);
345
- }
346
- async clearSessionStorage() {
347
- return this.exec(['storage', 'session', 'clear']);
348
- }
349
- // ===========================================================================
350
- // Network
351
- // ===========================================================================
352
- async networkRoute(input) {
353
- const args = ['network', 'route', input.urlPattern];
354
- if (input.abort)
355
- args.push('--abort');
356
- if (input.body)
357
- args.push('--body', typeof input.body === 'string' ? input.body : JSON.stringify(input.body));
358
- if (input.status)
359
- args.push('--status', String(input.status));
360
- if (input.headers)
361
- args.push('--headers', JSON.stringify(input.headers));
362
- return this.exec(args);
363
- }
364
- async networkUnroute(urlPattern) {
365
- const args = ['network', 'unroute'];
366
- if (urlPattern)
367
- args.push(urlPattern);
368
- return this.exec(args);
369
- }
370
- async networkRequests(filter) {
371
- const args = ['network', 'requests'];
372
- if (filter)
373
- args.push('--filter', filter);
374
- return this.exec(args);
375
- }
376
- // ===========================================================================
377
- // Tabs & Windows
378
- // ===========================================================================
379
- async listTabs() {
380
- return this.exec(['tab']);
381
- }
382
- async newTab(url) {
383
- const args = ['tab', 'new'];
384
- if (url)
385
- args.push(url);
386
- return this.exec(args);
387
- }
388
- async switchTab(index) {
389
- return this.exec(['tab', String(index)]);
390
- }
391
- async closeTab(index) {
392
- const args = ['tab', 'close'];
393
- if (index !== undefined)
394
- args.push(String(index));
395
- return this.exec(args);
396
- }
397
- async newWindow() {
398
- return this.exec(['window', 'new']);
399
- }
400
- // ===========================================================================
401
- // Frames
402
- // ===========================================================================
403
- async switchFrame(selector) {
404
- return this.exec(['frame', selector]);
405
- }
406
- async switchToMainFrame() {
407
- return this.exec(['frame', 'main']);
408
- }
409
- // ===========================================================================
410
- // Dialogs
411
- // ===========================================================================
412
- async dialogAccept(text) {
413
- const args = ['dialog', 'accept'];
414
- if (text)
415
- args.push(text);
416
- return this.exec(args);
417
- }
418
- async dialogDismiss() {
419
- return this.exec(['dialog', 'dismiss']);
420
- }
421
- // ===========================================================================
422
- // Debug & Trace
423
- // ===========================================================================
424
- async traceStart(path) {
425
- const args = ['trace', 'start'];
426
- if (path)
427
- args.push(path);
428
- return this.exec(args);
429
- }
430
- async traceStop(path) {
431
- const args = ['trace', 'stop'];
432
- if (path)
433
- args.push(path);
434
- return this.exec(args);
435
- }
436
- async getConsole() {
437
- return this.exec(['console']);
438
- }
439
- async clearConsole() {
440
- return this.exec(['console', '--clear']);
441
- }
442
- async getErrors() {
443
- return this.exec(['errors']);
444
- }
445
- async clearErrors() {
446
- return this.exec(['errors', '--clear']);
447
- }
448
- async highlight(selector) {
449
- return this.exec(['highlight', selector]);
450
- }
451
- async saveState(path) {
452
- return this.exec(['state', 'save', path]);
453
- }
454
- async loadState(path) {
455
- return this.exec(['state', 'load', path]);
456
- }
457
- // ===========================================================================
458
- // Find Commands (Semantic Locators)
459
- // ===========================================================================
460
- async findByRole(role, action, options) {
461
- const args = ['find', 'role', role, action];
462
- if (options?.name)
463
- args.push('--name', options.name);
464
- if (options?.exact)
465
- args.push('--exact');
466
- return this.exec(args);
467
- }
468
- async findByText(text, action) {
469
- return this.exec(['find', 'text', text, action]);
470
- }
471
- async findByLabel(label, action, value) {
472
- const args = ['find', 'label', label, action];
473
- if (value)
474
- args.push(value);
475
- return this.exec(args);
476
- }
477
- async findByPlaceholder(placeholder, action, value) {
478
- const args = ['find', 'placeholder', placeholder, action];
479
- if (value)
480
- args.push(value);
481
- return this.exec(args);
482
- }
483
- async findByTestId(testId, action, value) {
484
- const args = ['find', 'testid', testId, action];
485
- if (value)
486
- args.push(value);
487
- return this.exec(args);
488
- }
489
- async findFirst(selector, action, value) {
490
- const args = ['find', 'first', selector, action];
491
- if (value)
492
- args.push(value);
493
- return this.exec(args);
494
- }
495
- async findLast(selector, action, value) {
496
- const args = ['find', 'last', selector, action];
497
- if (value)
498
- args.push(value);
499
- return this.exec(args);
500
- }
501
- async findNth(n, selector, action, value) {
502
- const args = ['find', 'nth', String(n), selector, action];
503
- if (value)
504
- args.push(value);
505
- return this.exec(args);
506
- }
507
- // ===========================================================================
508
- // Session Management
509
- // ===========================================================================
510
- async listSessions() {
511
- return this.exec(['session', 'list']);
512
- }
513
- async getCurrentSession() {
514
- return this.exec(['session']);
515
- }
516
- setSession(sessionId) {
517
- this.session = sessionId;
518
- }
519
- getSession() {
520
- return this.session;
521
- }
522
- // ===========================================================================
523
- // CDP Connection
524
- // ===========================================================================
525
- async connect(port) {
526
- return this.exec(['connect', String(port)]);
527
- }
528
- // ===========================================================================
529
- // Setup
530
- // ===========================================================================
531
- static async install(withDeps = false) {
532
- const args = ['install'];
533
- if (withDeps)
534
- args.push('--with-deps');
535
- return new Promise((resolve) => {
536
- try {
537
- const result = execSync(`agent-browser ${args.join(' ')}`, {
538
- encoding: 'utf-8',
539
- timeout: 300000, // 5 minutes for download
540
- });
541
- resolve({ success: true, data: result });
542
- }
543
- catch (error) {
544
- const message = error instanceof Error ? error.message : String(error);
545
- resolve({ success: false, error: message });
546
- }
547
- });
548
- }
549
- }
550
- export default AgentBrowserAdapter;
551
- //# sourceMappingURL=agent-browser-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-browser-adapter.js","sourceRoot":"","sources":["../../src/infrastructure/agent-browser-adapter.ts"],"names":[],"mappings":"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"}