agent-browser-stealth 0.17.0-fork.2 → 0.24.0-fork.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 (122) hide show
  1. package/README.md +1256 -240
  2. package/bin/agent-browser-darwin-arm64 +0 -0
  3. package/bin/agent-browser-darwin-x64 +0 -0
  4. package/bin/agent-browser-linux-arm64 +0 -0
  5. package/bin/agent-browser-linux-x64 +0 -0
  6. package/bin/agent-browser-win32-x64.exe +0 -0
  7. package/bin/agent-browser.js +13 -2
  8. package/extensions/tab-group-cdp/content-script.js +425 -0
  9. package/extensions/tab-group-cdp/icons/icon.svg +7 -0
  10. package/extensions/tab-group-cdp/manifest.json +34 -0
  11. package/extensions/tab-group-cdp/page-bridge.js +133 -0
  12. package/extensions/tab-group-cdp/service-worker.js +2249 -0
  13. package/extensions/tab-group-cdp/sidepanel.css +258 -0
  14. package/extensions/tab-group-cdp/sidepanel.html +28 -0
  15. package/extensions/tab-group-cdp/sidepanel.js +1225 -0
  16. package/package.json +17 -69
  17. package/scripts/build-all-platforms.sh +6 -0
  18. package/scripts/check-version-sync.js +14 -2
  19. package/scripts/copy-native.js +8 -50
  20. package/scripts/postinstall.js +149 -165
  21. package/scripts/windows-debug/provision.sh +220 -0
  22. package/scripts/windows-debug/run.sh +92 -0
  23. package/scripts/windows-debug/start.sh +43 -0
  24. package/scripts/windows-debug/stop.sh +28 -0
  25. package/scripts/windows-debug/sync.sh +27 -0
  26. package/skills/agent-browser/SKILL.md +256 -159
  27. package/skills/agent-browser/references/authentication.md +101 -0
  28. package/skills/agent-browser/references/commands.md +34 -2
  29. package/skills/agent-browser/references/snapshot-refs.md +25 -0
  30. package/skills/agentcore/SKILL.md +115 -0
  31. package/skills/dogfood/SKILL.md +4 -2
  32. package/skills/electron/SKILL.md +26 -2
  33. package/skills/slack/SKILL.md +0 -9
  34. package/skills/slack/references/slack-tasks.md +2 -8
  35. package/skills/vercel-sandbox/SKILL.md +280 -0
  36. package/bin/agent-browser-local +0 -0
  37. package/bin/agent-browser-stealth +0 -0
  38. package/bin/agent-browser-stealth.d +0 -1
  39. package/dist/action-policy.d.ts +0 -14
  40. package/dist/action-policy.d.ts.map +0 -1
  41. package/dist/action-policy.js +0 -253
  42. package/dist/action-policy.js.map +0 -1
  43. package/dist/actions.d.ts +0 -21
  44. package/dist/actions.d.ts.map +0 -1
  45. package/dist/actions.js +0 -2139
  46. package/dist/actions.js.map +0 -1
  47. package/dist/auth-cli.d.ts +0 -2
  48. package/dist/auth-cli.d.ts.map +0 -1
  49. package/dist/auth-cli.js +0 -97
  50. package/dist/auth-cli.js.map +0 -1
  51. package/dist/auth-vault.d.ts +0 -36
  52. package/dist/auth-vault.d.ts.map +0 -1
  53. package/dist/auth-vault.js +0 -125
  54. package/dist/auth-vault.js.map +0 -1
  55. package/dist/browser.d.ts +0 -665
  56. package/dist/browser.d.ts.map +0 -1
  57. package/dist/browser.js +0 -3210
  58. package/dist/browser.js.map +0 -1
  59. package/dist/confirmation.d.ts +0 -8
  60. package/dist/confirmation.d.ts.map +0 -1
  61. package/dist/confirmation.js +0 -30
  62. package/dist/confirmation.js.map +0 -1
  63. package/dist/daemon.d.ts +0 -78
  64. package/dist/daemon.d.ts.map +0 -1
  65. package/dist/daemon.js +0 -744
  66. package/dist/daemon.js.map +0 -1
  67. package/dist/diff.d.ts +0 -18
  68. package/dist/diff.d.ts.map +0 -1
  69. package/dist/diff.js +0 -271
  70. package/dist/diff.js.map +0 -1
  71. package/dist/domain-filter.d.ts +0 -28
  72. package/dist/domain-filter.d.ts.map +0 -1
  73. package/dist/domain-filter.js +0 -149
  74. package/dist/domain-filter.js.map +0 -1
  75. package/dist/encryption.d.ts +0 -73
  76. package/dist/encryption.d.ts.map +0 -1
  77. package/dist/encryption.js +0 -171
  78. package/dist/encryption.js.map +0 -1
  79. package/dist/ios-actions.d.ts +0 -11
  80. package/dist/ios-actions.d.ts.map +0 -1
  81. package/dist/ios-actions.js +0 -228
  82. package/dist/ios-actions.js.map +0 -1
  83. package/dist/ios-manager.d.ts +0 -266
  84. package/dist/ios-manager.d.ts.map +0 -1
  85. package/dist/ios-manager.js +0 -1073
  86. package/dist/ios-manager.js.map +0 -1
  87. package/dist/protocol.d.ts +0 -26
  88. package/dist/protocol.d.ts.map +0 -1
  89. package/dist/protocol.js +0 -990
  90. package/dist/protocol.js.map +0 -1
  91. package/dist/snapshot.d.ts +0 -67
  92. package/dist/snapshot.d.ts.map +0 -1
  93. package/dist/snapshot.js +0 -514
  94. package/dist/snapshot.js.map +0 -1
  95. package/dist/state-utils.d.ts +0 -77
  96. package/dist/state-utils.d.ts.map +0 -1
  97. package/dist/state-utils.js +0 -178
  98. package/dist/state-utils.js.map +0 -1
  99. package/dist/stealth.d.ts +0 -41
  100. package/dist/stealth.d.ts.map +0 -1
  101. package/dist/stealth.js +0 -1743
  102. package/dist/stealth.js.map +0 -1
  103. package/dist/stream-server.d.ts +0 -117
  104. package/dist/stream-server.d.ts.map +0 -1
  105. package/dist/stream-server.js +0 -309
  106. package/dist/stream-server.js.map +0 -1
  107. package/dist/types.d.ts +0 -973
  108. package/dist/types.d.ts.map +0 -1
  109. package/dist/types.js +0 -2
  110. package/dist/types.js.map +0 -1
  111. package/scripts/check-creepjs-headless.js +0 -137
  112. package/scripts/check-daemon-pid-recovery.js +0 -148
  113. package/scripts/check-sannysoft-webdriver.js +0 -112
  114. package/scripts/check-stealth-regression.js +0 -199
  115. package/scripts/check-turnstile-testkey.ts +0 -125
  116. package/scripts/clawhub-sync.sh +0 -27
  117. package/scripts/sync-upstream.sh +0 -142
  118. package/scripts/verify-bundled-binaries.js +0 -71
  119. package/scripts/verify-native-version.js +0 -48
  120. package/scripts/verify-packed-host-binary.js +0 -88
  121. package/scripts/verify-registry-host-binary.js +0 -120
  122. package/skills/agent-browser-stealth/SKILL.md +0 -127
@@ -1,266 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"ios-manager.d.ts","sourceRoot":"","sources":["../src/ios-manager.ts"],"names":[],"mappings":"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"}