@kritchoff/agent-browser 0.9.2

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 (88) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +903 -0
  3. package/README.sdk.md +77 -0
  4. package/bin/agent-browser-linux-x64 +0 -0
  5. package/bin/agent-browser.js +109 -0
  6. package/dist/actions.d.ts +17 -0
  7. package/dist/actions.d.ts.map +1 -0
  8. package/dist/actions.js +1427 -0
  9. package/dist/actions.js.map +1 -0
  10. package/dist/browser.d.ts +474 -0
  11. package/dist/browser.d.ts.map +1 -0
  12. package/dist/browser.js +1566 -0
  13. package/dist/browser.js.map +1 -0
  14. package/dist/cdp-client.d.ts +103 -0
  15. package/dist/cdp-client.d.ts.map +1 -0
  16. package/dist/cdp-client.js +223 -0
  17. package/dist/cdp-client.js.map +1 -0
  18. package/dist/daemon.d.ts +60 -0
  19. package/dist/daemon.d.ts.map +1 -0
  20. package/dist/daemon.js +401 -0
  21. package/dist/daemon.js.map +1 -0
  22. package/dist/dualmode-config.d.ts +37 -0
  23. package/dist/dualmode-config.d.ts.map +1 -0
  24. package/dist/dualmode-config.js +44 -0
  25. package/dist/dualmode-config.js.map +1 -0
  26. package/dist/dualmode-fetcher.d.ts +60 -0
  27. package/dist/dualmode-fetcher.d.ts.map +1 -0
  28. package/dist/dualmode-fetcher.js +449 -0
  29. package/dist/dualmode-fetcher.js.map +1 -0
  30. package/dist/dualmode-types.d.ts +183 -0
  31. package/dist/dualmode-types.d.ts.map +1 -0
  32. package/dist/dualmode-types.js +8 -0
  33. package/dist/dualmode-types.js.map +1 -0
  34. package/dist/ios-actions.d.ts +11 -0
  35. package/dist/ios-actions.d.ts.map +1 -0
  36. package/dist/ios-actions.js +228 -0
  37. package/dist/ios-actions.js.map +1 -0
  38. package/dist/ios-manager.d.ts +266 -0
  39. package/dist/ios-manager.d.ts.map +1 -0
  40. package/dist/ios-manager.js +1073 -0
  41. package/dist/ios-manager.js.map +1 -0
  42. package/dist/protocol.d.ts +26 -0
  43. package/dist/protocol.d.ts.map +1 -0
  44. package/dist/protocol.js +832 -0
  45. package/dist/protocol.js.map +1 -0
  46. package/dist/snapshot.d.ts +83 -0
  47. package/dist/snapshot.d.ts.map +1 -0
  48. package/dist/snapshot.js +653 -0
  49. package/dist/snapshot.js.map +1 -0
  50. package/dist/stream-server.d.ts +117 -0
  51. package/dist/stream-server.d.ts.map +1 -0
  52. package/dist/stream-server.js +305 -0
  53. package/dist/stream-server.js.map +1 -0
  54. package/dist/types.d.ts +742 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +2 -0
  57. package/dist/types.js.map +1 -0
  58. package/docker-compose.sdk.yml +45 -0
  59. package/package.json +85 -0
  60. package/scripts/benchmark.sh +80 -0
  61. package/scripts/build-all-platforms.sh +68 -0
  62. package/scripts/check-version-sync.js +39 -0
  63. package/scripts/copy-native.js +36 -0
  64. package/scripts/fast_reset.sh +108 -0
  65. package/scripts/postinstall.js +235 -0
  66. package/scripts/publish_images.sh +55 -0
  67. package/scripts/snapshot_manager.sh +293 -0
  68. package/scripts/start-android-agent.sh +49 -0
  69. package/scripts/sync-version.js +69 -0
  70. package/scripts/vaccine-run +26 -0
  71. package/sdk.sh +153 -0
  72. package/skills/agent-browser/SKILL.md +217 -0
  73. package/skills/agent-browser/references/authentication.md +202 -0
  74. package/skills/agent-browser/references/commands.md +259 -0
  75. package/skills/agent-browser/references/proxy-support.md +188 -0
  76. package/skills/agent-browser/references/session-management.md +193 -0
  77. package/skills/agent-browser/references/snapshot-refs.md +194 -0
  78. package/skills/agent-browser/references/video-recording.md +173 -0
  79. package/skills/agent-browser/templates/authenticated-session.sh +97 -0
  80. package/skills/agent-browser/templates/capture-workflow.sh +69 -0
  81. package/skills/agent-browser/templates/form-automation.sh +62 -0
  82. package/skills/skill-creator/LICENSE.txt +202 -0
  83. package/skills/skill-creator/SKILL.md +356 -0
  84. package/skills/skill-creator/references/output-patterns.md +82 -0
  85. package/skills/skill-creator/references/workflows.md +28 -0
  86. package/skills/skill-creator/scripts/init_skill.py +303 -0
  87. package/skills/skill-creator/scripts/package_skill.py +113 -0
  88. package/skills/skill-creator/scripts/quick_validate.py +95 -0
@@ -0,0 +1,11 @@
1
+ /**
2
+ * iOS command execution - mirrors actions.ts but for iOS Safari via Appium.
3
+ * Provides 1:1 command parity where possible.
4
+ */
5
+ import type { IOSManager } from './ios-manager.js';
6
+ import type { Command, Response } from './types.js';
7
+ /**
8
+ * Execute a command on the iOS manager
9
+ */
10
+ export declare function executeIOSCommand(command: Command, manager: IOSManager): Promise<Response>;
11
+ //# sourceMappingURL=ios-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios-actions.d.ts","sourceRoot":"","sources":["../src/ios-actions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAUpD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6PhG"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * iOS command execution - mirrors actions.ts but for iOS Safari via Appium.
3
+ * Provides 1:1 command parity where possible.
4
+ */
5
+ function successResponse(id, data) {
6
+ return { id, success: true, data };
7
+ }
8
+ function errorResponse(id, error) {
9
+ return { id, success: false, error };
10
+ }
11
+ /**
12
+ * Execute a command on the iOS manager
13
+ */
14
+ export async function executeIOSCommand(command, manager) {
15
+ const { id, action } = command;
16
+ try {
17
+ switch (action) {
18
+ case 'launch': {
19
+ const cmd = command;
20
+ await manager.launch({
21
+ device: cmd.device,
22
+ udid: cmd.udid,
23
+ });
24
+ const info = manager.getDeviceInfo();
25
+ return successResponse(id, {
26
+ launched: true,
27
+ device: info?.name ?? 'iOS Simulator',
28
+ udid: info?.udid,
29
+ });
30
+ }
31
+ case 'navigate': {
32
+ const cmd = command;
33
+ const result = await manager.navigate(cmd.url);
34
+ return successResponse(id, result);
35
+ }
36
+ case 'click': {
37
+ const cmd = command;
38
+ await manager.click(cmd.selector);
39
+ return successResponse(id, { clicked: true });
40
+ }
41
+ case 'tap': {
42
+ const cmd = command;
43
+ await manager.tap(cmd.selector);
44
+ return successResponse(id, { tapped: true });
45
+ }
46
+ case 'type': {
47
+ const cmd = command;
48
+ await manager.type(cmd.selector, cmd.text, {
49
+ delay: cmd.delay,
50
+ clear: cmd.clear,
51
+ });
52
+ return successResponse(id, { typed: true });
53
+ }
54
+ case 'fill': {
55
+ const cmd = command;
56
+ await manager.fill(cmd.selector, cmd.value);
57
+ return successResponse(id, { filled: true });
58
+ }
59
+ case 'screenshot': {
60
+ const cmd = command;
61
+ const result = await manager.screenshot({
62
+ path: cmd.path,
63
+ fullPage: cmd.fullPage,
64
+ });
65
+ return successResponse(id, result);
66
+ }
67
+ case 'snapshot': {
68
+ const cmd = command;
69
+ const result = await manager.getSnapshot({
70
+ interactive: cmd.interactive,
71
+ });
72
+ return successResponse(id, { snapshot: result.tree, refs: result.refs });
73
+ }
74
+ case 'scroll': {
75
+ const cmd = command;
76
+ await manager.scroll({
77
+ selector: cmd.selector,
78
+ x: cmd.x,
79
+ y: cmd.y,
80
+ direction: cmd.direction,
81
+ amount: cmd.amount,
82
+ });
83
+ return successResponse(id, { scrolled: true });
84
+ }
85
+ case 'swipe': {
86
+ const cmd = command;
87
+ await manager.swipe(cmd.direction, { distance: cmd.distance });
88
+ return successResponse(id, { swiped: true });
89
+ }
90
+ case 'evaluate': {
91
+ const cmd = command;
92
+ const result = await manager.evaluate(cmd.script, ...(cmd.args ?? []));
93
+ return successResponse(id, { result });
94
+ }
95
+ case 'wait': {
96
+ const cmd = command;
97
+ await manager.wait({
98
+ selector: cmd.selector,
99
+ timeout: cmd.timeout,
100
+ state: cmd.state,
101
+ });
102
+ return successResponse(id, { waited: true });
103
+ }
104
+ case 'press': {
105
+ const cmd = command;
106
+ await manager.press(cmd.key);
107
+ return successResponse(id, { pressed: true });
108
+ }
109
+ case 'hover': {
110
+ const cmd = command;
111
+ await manager.hover(cmd.selector);
112
+ return successResponse(id, { hovered: true });
113
+ }
114
+ case 'content': {
115
+ const cmd = command;
116
+ const html = await manager.getContent(cmd.selector);
117
+ return successResponse(id, { html });
118
+ }
119
+ case 'gettext': {
120
+ const cmd = command;
121
+ const text = await manager.getText(cmd.selector);
122
+ return successResponse(id, { text });
123
+ }
124
+ case 'getattribute': {
125
+ const cmd = command;
126
+ const value = await manager.getAttribute(cmd.selector, cmd.attribute);
127
+ return successResponse(id, { value });
128
+ }
129
+ case 'isvisible': {
130
+ const cmd = command;
131
+ const visible = await manager.isVisible(cmd.selector);
132
+ return successResponse(id, { visible });
133
+ }
134
+ case 'isenabled': {
135
+ const cmd = command;
136
+ const enabled = await manager.isEnabled(cmd.selector);
137
+ return successResponse(id, { enabled });
138
+ }
139
+ case 'url': {
140
+ const url = await manager.getUrl();
141
+ return successResponse(id, { url });
142
+ }
143
+ case 'title': {
144
+ const title = await manager.getTitle();
145
+ return successResponse(id, { title });
146
+ }
147
+ case 'back': {
148
+ await manager.goBack();
149
+ return successResponse(id, { navigated: 'back' });
150
+ }
151
+ case 'forward': {
152
+ await manager.goForward();
153
+ return successResponse(id, { navigated: 'forward' });
154
+ }
155
+ case 'reload': {
156
+ await manager.reload();
157
+ return successResponse(id, { reloaded: true });
158
+ }
159
+ case 'select': {
160
+ const cmd = command;
161
+ await manager.select(cmd.selector, cmd.values);
162
+ return successResponse(id, { selected: true });
163
+ }
164
+ case 'check': {
165
+ const cmd = command;
166
+ await manager.check(cmd.selector);
167
+ return successResponse(id, { checked: true });
168
+ }
169
+ case 'uncheck': {
170
+ const cmd = command;
171
+ await manager.uncheck(cmd.selector);
172
+ return successResponse(id, { unchecked: true });
173
+ }
174
+ case 'focus': {
175
+ const cmd = command;
176
+ await manager.focus(cmd.selector);
177
+ return successResponse(id, { focused: true });
178
+ }
179
+ case 'clear': {
180
+ const cmd = command;
181
+ await manager.clear(cmd.selector);
182
+ return successResponse(id, { cleared: true });
183
+ }
184
+ case 'count': {
185
+ const cmd = command;
186
+ const count = await manager.count(cmd.selector);
187
+ return successResponse(id, { count });
188
+ }
189
+ case 'boundingbox': {
190
+ const cmd = command;
191
+ const box = await manager.getBoundingBox(cmd.selector);
192
+ return successResponse(id, { box });
193
+ }
194
+ case 'close': {
195
+ await manager.close();
196
+ return successResponse(id, { closed: true });
197
+ }
198
+ // iOS-specific: device list
199
+ case 'device_list': {
200
+ const devices = await manager.listDevices();
201
+ return successResponse(id, { devices });
202
+ }
203
+ // Commands that don't apply to iOS Safari
204
+ case 'tab_new':
205
+ case 'tab_list':
206
+ case 'tab_switch':
207
+ case 'tab_close':
208
+ case 'window_new':
209
+ return errorResponse(id, `Command '${action}' is not supported on iOS Safari. Mobile Safari does not support programmatic tab management.`);
210
+ case 'pdf':
211
+ return errorResponse(id, 'PDF generation is not supported on iOS Safari.');
212
+ case 'screencast_start':
213
+ case 'screencast_stop':
214
+ return errorResponse(id, 'Screencast is not supported on iOS (requires CDP).');
215
+ case 'recording_start':
216
+ case 'recording_stop':
217
+ case 'recording_restart':
218
+ return errorResponse(id, 'Video recording is not yet supported on iOS.');
219
+ default:
220
+ return errorResponse(id, `Unknown or unsupported iOS command: ${action}`);
221
+ }
222
+ }
223
+ catch (error) {
224
+ const message = error instanceof Error ? error.message : String(error);
225
+ return errorResponse(id, message);
226
+ }
227
+ }
228
+ //# sourceMappingURL=ios-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios-actions.js","sourceRoot":"","sources":["../src/ios-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ /**
2
+ * iOS Simulator Manager - Manages iOS Simulator and Safari automation via Appium.
3
+ *
4
+ * This provides 1:1 command parity with BrowserManager for iOS Safari.
5
+ */
6
+ export interface IOSRefMap {
7
+ [ref: string]: {
8
+ selector: string;
9
+ role?: string;
10
+ name?: string;
11
+ xpath?: string;
12
+ };
13
+ }
14
+ export interface IOSEnhancedSnapshot {
15
+ tree: string;
16
+ refs: IOSRefMap;
17
+ }
18
+ interface IOSDeviceInfo {
19
+ name: string;
20
+ udid: string;
21
+ state: string;
22
+ runtime: string;
23
+ isAvailable: boolean;
24
+ isRealDevice?: boolean;
25
+ }
26
+ /**
27
+ * Manages iOS Simulator and Safari automation via Appium
28
+ */
29
+ export declare class IOSManager {
30
+ private simctl;
31
+ private browser;
32
+ private appiumProcess;
33
+ private deviceUdid;
34
+ private deviceName;
35
+ private consoleMessages;
36
+ private refMap;
37
+ private lastSnapshot;
38
+ private refCounter;
39
+ private static readonly APPIUM_PORT;
40
+ private static readonly APPIUM_HOST;
41
+ constructor();
42
+ /**
43
+ * Check if browser is launched
44
+ */
45
+ isLaunched(): boolean;
46
+ /**
47
+ * List connected real iOS devices
48
+ */
49
+ private listRealDevices;
50
+ /**
51
+ * List available iOS simulators
52
+ */
53
+ listDevices(): Promise<IOSDeviceInfo[]>;
54
+ /**
55
+ * List all devices (simulators + real devices)
56
+ */
57
+ listAllDevices(): Promise<IOSDeviceInfo[]>;
58
+ /**
59
+ * Find the best default device (most recent iPhone)
60
+ */
61
+ private findDefaultDevice;
62
+ /**
63
+ * Find device by name or UDID (searches both simulators and real devices)
64
+ */
65
+ private findDevice;
66
+ /**
67
+ * Check if Appium is installed
68
+ */
69
+ private checkAppiumInstalled;
70
+ /**
71
+ * Check if Appium server is already running
72
+ */
73
+ private isAppiumRunning;
74
+ /**
75
+ * Start Appium server if not already running
76
+ */
77
+ private startAppiumServer;
78
+ /**
79
+ * Boot the iOS simulator
80
+ */
81
+ private bootSimulator;
82
+ /**
83
+ * Launch iOS Safari via Appium
84
+ */
85
+ launch(options?: {
86
+ device?: string;
87
+ udid?: string;
88
+ headless?: boolean;
89
+ }): Promise<void>;
90
+ /**
91
+ * Navigate to URL
92
+ */
93
+ navigate(url: string): Promise<{
94
+ url: string;
95
+ title: string;
96
+ }>;
97
+ /**
98
+ * Get current URL
99
+ */
100
+ getUrl(): Promise<string>;
101
+ /**
102
+ * Get page title
103
+ */
104
+ getTitle(): Promise<string>;
105
+ /**
106
+ * Click/tap an element
107
+ */
108
+ click(selector: string): Promise<void>;
109
+ /**
110
+ * Alias for click (semantic clarity for touch)
111
+ */
112
+ tap(selector: string): Promise<void>;
113
+ /**
114
+ * Type text into an element
115
+ */
116
+ type(selector: string, text: string, options?: {
117
+ delay?: number;
118
+ clear?: boolean;
119
+ }): Promise<void>;
120
+ /**
121
+ * Fill an element (clear first, then type)
122
+ */
123
+ fill(selector: string, value: string): Promise<void>;
124
+ /**
125
+ * Get element by selector or ref
126
+ */
127
+ private getElement;
128
+ /**
129
+ * Get ref data from ref string
130
+ */
131
+ private getRefData;
132
+ /**
133
+ * Take a screenshot
134
+ */
135
+ screenshot(options?: {
136
+ path?: string;
137
+ fullPage?: boolean;
138
+ }): Promise<{
139
+ path?: string;
140
+ base64?: string;
141
+ }>;
142
+ /**
143
+ * Get page snapshot with refs
144
+ */
145
+ getSnapshot(options?: {
146
+ interactive?: boolean;
147
+ }): Promise<IOSEnhancedSnapshot>;
148
+ /**
149
+ * Get cached ref map
150
+ */
151
+ getRefMap(): IOSRefMap;
152
+ /**
153
+ * Scroll the page
154
+ */
155
+ scroll(options?: {
156
+ selector?: string;
157
+ x?: number;
158
+ y?: number;
159
+ direction?: 'up' | 'down' | 'left' | 'right';
160
+ amount?: number;
161
+ }): Promise<void>;
162
+ /**
163
+ * Swipe gesture (iOS-specific)
164
+ */
165
+ swipe(direction: 'up' | 'down' | 'left' | 'right', options?: {
166
+ distance?: number;
167
+ }): Promise<void>;
168
+ /**
169
+ * Execute JavaScript
170
+ */
171
+ evaluate<T = unknown>(script: string, ...args: unknown[]): Promise<T>;
172
+ /**
173
+ * Wait for element
174
+ */
175
+ wait(options: {
176
+ selector?: string;
177
+ timeout?: number;
178
+ state?: 'attached' | 'detached' | 'visible' | 'hidden';
179
+ }): Promise<void>;
180
+ /**
181
+ * Press a key
182
+ */
183
+ press(key: string): Promise<void>;
184
+ /**
185
+ * Hover over element (limited on touch - just scrolls into view)
186
+ */
187
+ hover(selector: string): Promise<void>;
188
+ /**
189
+ * Get page content (HTML)
190
+ */
191
+ getContent(selector?: string): Promise<string>;
192
+ /**
193
+ * Get text content of element
194
+ */
195
+ getText(selector: string): Promise<string>;
196
+ /**
197
+ * Get attribute value
198
+ */
199
+ getAttribute(selector: string, attribute: string): Promise<string | null>;
200
+ /**
201
+ * Check if element is visible
202
+ */
203
+ isVisible(selector: string): Promise<boolean>;
204
+ /**
205
+ * Check if element is enabled
206
+ */
207
+ isEnabled(selector: string): Promise<boolean>;
208
+ /**
209
+ * Navigate back
210
+ */
211
+ goBack(): Promise<void>;
212
+ /**
213
+ * Navigate forward
214
+ */
215
+ goForward(): Promise<void>;
216
+ /**
217
+ * Reload page
218
+ */
219
+ reload(): Promise<void>;
220
+ /**
221
+ * Select option(s) from dropdown
222
+ */
223
+ select(selector: string, values: string | string[]): Promise<void>;
224
+ /**
225
+ * Check a checkbox
226
+ */
227
+ check(selector: string): Promise<void>;
228
+ /**
229
+ * Uncheck a checkbox
230
+ */
231
+ uncheck(selector: string): Promise<void>;
232
+ /**
233
+ * Focus an element
234
+ */
235
+ focus(selector: string): Promise<void>;
236
+ /**
237
+ * Clear input field
238
+ */
239
+ clear(selector: string): Promise<void>;
240
+ /**
241
+ * Get element count
242
+ */
243
+ count(selector: string): Promise<number>;
244
+ /**
245
+ * Get bounding box
246
+ */
247
+ getBoundingBox(selector: string): Promise<{
248
+ x: number;
249
+ y: number;
250
+ width: number;
251
+ height: number;
252
+ } | null>;
253
+ /**
254
+ * Get device info
255
+ */
256
+ getDeviceInfo(): {
257
+ name: string;
258
+ udid: string;
259
+ } | null;
260
+ /**
261
+ * Close browser and cleanup
262
+ */
263
+ close(): Promise<void>;
264
+ }
265
+ export {};
266
+ //# sourceMappingURL=ios-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios-manager.d.ts","sourceRoot":"","sources":["../src/ios-manager.ts"],"names":[],"mappings":"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"}