@dyyz1993/agent-browser 0.24.0 → 0.26.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 (245) hide show
  1. package/bin/agent-browser-darwin-arm64 +0 -0
  2. package/dist/__tests__/e2e/utils/test-helpers.d.ts +2 -2
  3. package/dist/__tests__/e2e/utils/test-helpers.d.ts.map +1 -1
  4. package/dist/__tests__/e2e/utils/test-helpers.js +6 -4
  5. package/dist/__tests__/e2e/utils/test-helpers.js.map +1 -1
  6. package/dist/actions/advanced.d.ts +73 -0
  7. package/dist/actions/advanced.d.ts.map +1 -0
  8. package/dist/actions/advanced.js +390 -0
  9. package/dist/actions/advanced.js.map +1 -0
  10. package/dist/actions/context.d.ts +36 -0
  11. package/dist/actions/context.d.ts.map +1 -0
  12. package/dist/actions/context.js +164 -0
  13. package/dist/actions/context.js.map +1 -0
  14. package/dist/actions/crawl.d.ts +8 -0
  15. package/dist/actions/crawl.d.ts.map +1 -0
  16. package/dist/actions/crawl.js +290 -0
  17. package/dist/actions/crawl.js.map +1 -0
  18. package/dist/actions/elements.d.ts +11 -0
  19. package/dist/actions/elements.d.ts.map +1 -0
  20. package/dist/actions/elements.js +78 -0
  21. package/dist/actions/elements.js.map +1 -0
  22. package/dist/actions/flow.d.ts +4 -0
  23. package/dist/actions/flow.d.ts.map +1 -0
  24. package/dist/actions/flow.js +170 -0
  25. package/dist/actions/flow.js.map +1 -0
  26. package/dist/actions/index.d.ts +7 -0
  27. package/dist/actions/index.d.ts.map +1 -0
  28. package/dist/actions/index.js +323 -0
  29. package/dist/actions/index.js.map +1 -0
  30. package/dist/actions/interact.d.ts +4 -0
  31. package/dist/actions/interact.d.ts.map +1 -0
  32. package/dist/actions/interact.js +162 -0
  33. package/dist/actions/interact.js.map +1 -0
  34. package/dist/actions/interaction.d.ts +31 -0
  35. package/dist/actions/interaction.d.ts.map +1 -0
  36. package/dist/actions/interaction.js +477 -0
  37. package/dist/actions/interaction.js.map +1 -0
  38. package/dist/actions/locators.d.ts +14 -0
  39. package/dist/actions/locators.d.ts.map +1 -0
  40. package/dist/actions/locators.js +310 -0
  41. package/dist/actions/locators.js.map +1 -0
  42. package/dist/actions/map.d.ts +4 -0
  43. package/dist/actions/map.d.ts.map +1 -0
  44. package/dist/actions/map.js +79 -0
  45. package/dist/actions/map.js.map +1 -0
  46. package/dist/actions/meta.d.ts +44 -0
  47. package/dist/actions/meta.d.ts.map +1 -0
  48. package/dist/actions/meta.js +190 -0
  49. package/dist/actions/meta.js.map +1 -0
  50. package/dist/actions/mouse.d.ts +8 -0
  51. package/dist/actions/mouse.d.ts.map +1 -0
  52. package/dist/actions/mouse.js +52 -0
  53. package/dist/actions/mouse.js.map +1 -0
  54. package/dist/actions/recorder.d.ts +20 -0
  55. package/dist/actions/recorder.d.ts.map +1 -0
  56. package/dist/actions/recorder.js +231 -0
  57. package/dist/actions/recorder.js.map +1 -0
  58. package/dist/actions/recording.d.ts +6 -0
  59. package/dist/actions/recording.d.ts.map +1 -0
  60. package/dist/actions/recording.js +22 -0
  61. package/dist/actions/recording.js.map +1 -0
  62. package/dist/actions/scrape.d.ts +10 -0
  63. package/dist/actions/scrape.d.ts.map +1 -0
  64. package/dist/actions/scrape.js +39 -0
  65. package/dist/actions/scrape.js.map +1 -0
  66. package/dist/actions/screencast.d.ts +8 -0
  67. package/dist/actions/screencast.d.ts.map +1 -0
  68. package/dist/actions/screencast.js +56 -0
  69. package/dist/actions/screencast.js.map +1 -0
  70. package/dist/actions/search.d.ts +4 -0
  71. package/dist/actions/search.d.ts.map +1 -0
  72. package/dist/actions/search.js +129 -0
  73. package/dist/actions/search.js.map +1 -0
  74. package/dist/actions/storage.d.ts +14 -0
  75. package/dist/actions/storage.d.ts.map +1 -0
  76. package/dist/actions/storage.js +63 -0
  77. package/dist/actions/storage.js.map +1 -0
  78. package/dist/actions/tabs.d.ts +16 -0
  79. package/dist/actions/tabs.d.ts.map +1 -0
  80. package/dist/actions/tabs.js +47 -0
  81. package/dist/actions/tabs.js.map +1 -0
  82. package/dist/actions/utils.d.ts +15 -0
  83. package/dist/actions/utils.d.ts.map +1 -0
  84. package/dist/actions/utils.js +234 -0
  85. package/dist/actions/utils.js.map +1 -0
  86. package/dist/browser/browser-manager.d.ts +249 -0
  87. package/dist/browser/browser-manager.d.ts.map +1 -0
  88. package/dist/browser/browser-manager.js +1251 -0
  89. package/dist/browser/browser-manager.js.map +1 -0
  90. package/dist/browser/index.d.ts +3 -0
  91. package/dist/browser/index.d.ts.map +1 -0
  92. package/dist/browser/index.js +2 -0
  93. package/dist/browser/index.js.map +1 -0
  94. package/dist/browser/network-tracker.d.ts +39 -0
  95. package/dist/browser/network-tracker.d.ts.map +1 -0
  96. package/dist/browser/network-tracker.js +287 -0
  97. package/dist/browser/network-tracker.js.map +1 -0
  98. package/dist/browser/providers.d.ts +27 -0
  99. package/dist/browser/providers.d.ts.map +1 -0
  100. package/dist/browser/providers.js +293 -0
  101. package/dist/browser/providers.js.map +1 -0
  102. package/dist/browser/recorder-manager.d.ts +69 -0
  103. package/dist/browser/recorder-manager.d.ts.map +1 -0
  104. package/dist/browser/recorder-manager.js +755 -0
  105. package/dist/browser/recorder-manager.js.map +1 -0
  106. package/dist/browser/recording-manager.d.ts +46 -0
  107. package/dist/browser/recording-manager.d.ts.map +1 -0
  108. package/dist/browser/recording-manager.js +156 -0
  109. package/dist/browser/recording-manager.js.map +1 -0
  110. package/dist/browser/screencast-manager.d.ts +49 -0
  111. package/dist/browser/screencast-manager.d.ts.map +1 -0
  112. package/dist/browser/screencast-manager.js +131 -0
  113. package/dist/browser/screencast-manager.js.map +1 -0
  114. package/dist/browser/types.d.ts +101 -0
  115. package/dist/browser/types.d.ts.map +1 -0
  116. package/dist/browser/types.js +2 -0
  117. package/dist/browser/types.js.map +1 -0
  118. package/dist/browser-events.d.ts +25 -0
  119. package/dist/browser-events.d.ts.map +1 -0
  120. package/dist/browser-events.js +15 -0
  121. package/dist/browser-events.js.map +1 -0
  122. package/dist/cli/commands.d.ts.map +1 -1
  123. package/dist/cli/commands.js +145 -1
  124. package/dist/cli/commands.js.map +1 -1
  125. package/dist/cli/connection.d.ts.map +1 -1
  126. package/dist/cli/connection.js +15 -22
  127. package/dist/cli/connection.js.map +1 -1
  128. package/dist/cli/flags.d.ts +1 -0
  129. package/dist/cli/flags.d.ts.map +1 -1
  130. package/dist/cli/flags.js +8 -0
  131. package/dist/cli/flags.js.map +1 -1
  132. package/dist/cli/help.d.ts.map +1 -1
  133. package/dist/cli/help.js +204 -4
  134. package/dist/cli/help.js.map +1 -1
  135. package/dist/cli/output.d.ts.map +1 -1
  136. package/dist/cli/output.js +72 -0
  137. package/dist/cli/output.js.map +1 -1
  138. package/dist/cli.js +149 -14
  139. package/dist/cli.js.map +1 -1
  140. package/dist/daemon.d.ts +1 -1
  141. package/dist/daemon.d.ts.map +1 -1
  142. package/dist/daemon.js +12 -13
  143. package/dist/daemon.js.map +1 -1
  144. package/dist/flow/exporters/playwright.d.ts +23 -1
  145. package/dist/flow/exporters/playwright.d.ts.map +1 -1
  146. package/dist/flow/exporters/playwright.js +333 -85
  147. package/dist/flow/exporters/playwright.js.map +1 -1
  148. package/dist/flow/exporters/python.d.ts +22 -0
  149. package/dist/flow/exporters/python.d.ts.map +1 -1
  150. package/dist/flow/exporters/python.js +325 -74
  151. package/dist/flow/exporters/python.js.map +1 -1
  152. package/dist/flow/exporters/selenium.d.ts.map +1 -1
  153. package/dist/flow/exporters/selenium.js +0 -1
  154. package/dist/flow/exporters/selenium.js.map +1 -1
  155. package/dist/flow/flow-executor.d.ts +1 -1
  156. package/dist/flow/flow-executor.d.ts.map +1 -1
  157. package/dist/flow/flow-executor.js +11 -11
  158. package/dist/flow/flow-executor.js.map +1 -1
  159. package/dist/flow/output.js.map +1 -1
  160. package/dist/flow/plugin-system.d.ts +1 -1
  161. package/dist/flow/plugin-system.d.ts.map +1 -1
  162. package/dist/flow/plugin-system.js +2 -2
  163. package/dist/flow/plugin-system.js.map +1 -1
  164. package/dist/flow/plugins/logging-plugin.js +1 -1
  165. package/dist/flow/plugins/logging-plugin.js.map +1 -1
  166. package/dist/flow/presets/console-capture.js +50 -0
  167. package/dist/flow/presets/fetch-capture.js +107 -0
  168. package/dist/flow/presets/sse-stream.js +85 -0
  169. package/dist/flow/presets/xhr-only.js +44 -0
  170. package/dist/flow/recorder-to-flow.d.ts.map +1 -1
  171. package/dist/flow/recorder-to-flow.js +1 -3
  172. package/dist/flow/recorder-to-flow.js.map +1 -1
  173. package/dist/flow/site-manager.d.ts.map +1 -1
  174. package/dist/flow/site-manager.js +6 -2
  175. package/dist/flow/site-manager.js.map +1 -1
  176. package/dist/human-mouse.d.ts +1 -1
  177. package/dist/human-mouse.d.ts.map +1 -1
  178. package/dist/human-mouse.js +2 -2
  179. package/dist/human-mouse.js.map +1 -1
  180. package/dist/protocol.d.ts.map +1 -1
  181. package/dist/protocol.js +91 -1
  182. package/dist/protocol.js.map +1 -1
  183. package/dist/rc-config.js +4 -4
  184. package/dist/rc-config.js.map +1 -1
  185. package/dist/recorder/inject.js +31 -5
  186. package/dist/snapshot.d.ts.map +1 -1
  187. package/dist/snapshot.js +3 -4
  188. package/dist/snapshot.js.map +1 -1
  189. package/dist/stream-server-standalone.d.ts +1 -1
  190. package/dist/stream-server-standalone.d.ts.map +1 -1
  191. package/dist/stream-server-standalone.js +42 -23
  192. package/dist/stream-server-standalone.js.map +1 -1
  193. package/dist/stream-server.d.ts +1 -1
  194. package/dist/stream-server.d.ts.map +1 -1
  195. package/dist/stream-server.js +26 -21
  196. package/dist/stream-server.js.map +1 -1
  197. package/dist/test-live.js +9 -3
  198. package/dist/test-live.js.map +1 -1
  199. package/dist/types.d.ts +123 -2
  200. package/dist/types.d.ts.map +1 -1
  201. package/dist/types.js.map +1 -1
  202. package/package.json +4 -3
  203. package/scripts/README.md +66 -0
  204. package/scripts/check_goods_container.js +35 -0
  205. package/scripts/check_page_content.js +36 -0
  206. package/scripts/click_applause_rate.js +30 -0
  207. package/scripts/copy-flow-presets.js +25 -0
  208. package/scripts/douyin-flow-test.sh +72 -0
  209. package/scripts/douyin-test.sh +101 -0
  210. package/scripts/explore_jd_page.js +31 -0
  211. package/scripts/extract_all_jd_data.js +80 -0
  212. package/scripts/extract_jd_product_detail.js +62 -0
  213. package/scripts/extract_jd_products_correct_links.js +78 -0
  214. package/scripts/extract_jd_products_final.js +80 -0
  215. package/scripts/extract_jd_reviews.js +48 -0
  216. package/scripts/extract_jd_seafood_final.js +78 -0
  217. package/scripts/extract_multiple_products.js +77 -0
  218. package/scripts/extract_products_no_scroll.js +68 -0
  219. package/scripts/extract_products_simple.js +68 -0
  220. package/scripts/find_applause_rate.js +26 -0
  221. package/scripts/find_jd_links.js +28 -0
  222. package/scripts/find_main_content.js +20 -0
  223. package/scripts/find_product_cards.js +38 -0
  224. package/scripts/find_root_content.js +26 -0
  225. package/scripts/find_unique_products.js +55 -0
  226. package/scripts/get_jd_product_detail.js +16 -0
  227. package/scripts/get_jd_products.js +23 -0
  228. package/scripts/get_jd_seafood_products.js +44 -0
  229. package/scripts/get_product_details_from_images.js +54 -0
  230. package/scripts/verify-form.sh +67 -0
  231. package/scripts/verify-login.sh +65 -0
  232. package/scripts/verify-recording.sh +80 -0
  233. package/scripts/verify-upload.sh +41 -0
  234. package/bin/agent-browser-darwin-x64 +0 -0
  235. package/bin/agent-browser-linux-arm64 +0 -0
  236. package/bin/agent-browser-linux-x64 +0 -0
  237. package/bin/agent-browser-win32-x64.exe +0 -0
  238. package/dist/actions.d.ts +0 -51
  239. package/dist/actions.d.ts.map +0 -1
  240. package/dist/actions.js +0 -2662
  241. package/dist/actions.js.map +0 -1
  242. package/dist/browser.d.ts +0 -651
  243. package/dist/browser.d.ts.map +0 -1
  244. package/dist/browser.js +0 -3088
  245. package/dist/browser.js.map +0 -1
@@ -0,0 +1,293 @@
1
+ import { chromium } from 'playwright-core';
2
+ export async function closeBrowserbaseSession(sessionId, apiKey) {
3
+ await fetch(`https://api.browserbase.com/v1/sessions/${sessionId}`, {
4
+ method: 'DELETE',
5
+ headers: {
6
+ 'X-BB-API-Key': apiKey,
7
+ },
8
+ });
9
+ }
10
+ export async function closeBrowserUseSession(sessionId, apiKey) {
11
+ const response = await fetch(`https://api.browser-use.com/api/v2/browsers/${sessionId}`, {
12
+ method: 'PATCH',
13
+ headers: {
14
+ 'Content-Type': 'application/json',
15
+ 'X-Browser-Use-API-Key': apiKey,
16
+ },
17
+ body: JSON.stringify({ action: 'stop' }),
18
+ });
19
+ if (!response.ok) {
20
+ throw new Error(`Failed to close Browser Use session: ${response.statusText}`);
21
+ }
22
+ }
23
+ export async function closeKernelSession(sessionId, apiKey) {
24
+ const response = await fetch(`https://api.onkernel.com/browsers/${sessionId}`, {
25
+ method: 'DELETE',
26
+ headers: {
27
+ Authorization: `Bearer ${apiKey}`,
28
+ },
29
+ });
30
+ if (!response.ok) {
31
+ throw new Error(`Failed to close Kernel session: ${response.statusText}`);
32
+ }
33
+ }
34
+ export async function connectToBrowserbase() {
35
+ const browserbaseApiKey = process.env.BROWSERBASE_API_KEY;
36
+ const browserbaseProjectId = process.env.BROWSERBASE_PROJECT_ID;
37
+ if (!browserbaseApiKey || !browserbaseProjectId) {
38
+ throw new Error('BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID are required when using browserbase as a provider');
39
+ }
40
+ const response = await fetch('https://api.browserbase.com/v1/sessions', {
41
+ method: 'POST',
42
+ headers: {
43
+ 'Content-Type': 'application/json',
44
+ 'X-BB-API-Key': browserbaseApiKey,
45
+ },
46
+ body: JSON.stringify({
47
+ projectId: browserbaseProjectId,
48
+ }),
49
+ });
50
+ if (!response.ok) {
51
+ throw new Error(`Failed to create Browserbase session: ${response.statusText}`);
52
+ }
53
+ const session = (await response.json());
54
+ const browser = await chromium.connectOverCDP(session.connectUrl).catch(() => {
55
+ throw new Error('Failed to connect to Browserbase session via CDP');
56
+ });
57
+ try {
58
+ const contexts = browser.contexts();
59
+ if (contexts.length === 0) {
60
+ throw new Error('No browser context found in Browserbase session');
61
+ }
62
+ const context = contexts[0];
63
+ const pages = context.pages();
64
+ const page = pages[0] ?? (await context.newPage());
65
+ return {
66
+ browser,
67
+ context,
68
+ page,
69
+ sessionId: session.id,
70
+ apiKey: browserbaseApiKey,
71
+ };
72
+ }
73
+ catch (error) {
74
+ await closeBrowserbaseSession(session.id, browserbaseApiKey).catch((sessionError) => {
75
+ console.error('Failed to close Browserbase session during cleanup:', sessionError);
76
+ });
77
+ throw error;
78
+ }
79
+ }
80
+ export async function findOrCreateKernelProfile(profileName, apiKey) {
81
+ const getResponse = await fetch(`https://api.onkernel.com/profiles/${encodeURIComponent(profileName)}`, {
82
+ method: 'GET',
83
+ headers: {
84
+ Authorization: `Bearer ${apiKey}`,
85
+ },
86
+ });
87
+ if (getResponse.ok) {
88
+ return { name: profileName };
89
+ }
90
+ if (getResponse.status !== 404) {
91
+ throw new Error(`Failed to check Kernel profile: ${getResponse.statusText}`);
92
+ }
93
+ const createResponse = await fetch('https://api.onkernel.com/profiles', {
94
+ method: 'POST',
95
+ headers: {
96
+ 'Content-Type': 'application/json',
97
+ Authorization: `Bearer ${apiKey}`,
98
+ },
99
+ body: JSON.stringify({ name: profileName }),
100
+ });
101
+ if (!createResponse.ok) {
102
+ throw new Error(`Failed to create Kernel profile: ${createResponse.statusText}`);
103
+ }
104
+ return { name: profileName };
105
+ }
106
+ export async function connectToKernel() {
107
+ const kernelApiKey = process.env.KERNEL_API_KEY;
108
+ if (!kernelApiKey) {
109
+ throw new Error('KERNEL_API_KEY is required when using kernel as a provider');
110
+ }
111
+ const profileName = process.env.KERNEL_PROFILE_NAME;
112
+ let profileConfig;
113
+ if (profileName) {
114
+ await findOrCreateKernelProfile(profileName, kernelApiKey);
115
+ profileConfig = {
116
+ profile: {
117
+ name: profileName,
118
+ save_changes: true,
119
+ },
120
+ };
121
+ }
122
+ const response = await fetch('https://api.onkernel.com/browsers', {
123
+ method: 'POST',
124
+ headers: {
125
+ 'Content-Type': 'application/json',
126
+ Authorization: `Bearer ${kernelApiKey}`,
127
+ },
128
+ body: JSON.stringify({
129
+ headless: process.env.KERNEL_HEADLESS?.toLowerCase() === 'true',
130
+ stealth: process.env.KERNEL_STEALTH?.toLowerCase() !== 'false',
131
+ timeout_seconds: parseInt(process.env.KERNEL_TIMEOUT_SECONDS || '300', 10),
132
+ ...profileConfig,
133
+ }),
134
+ });
135
+ if (!response.ok) {
136
+ throw new Error(`Failed to create Kernel session: ${response.statusText}`);
137
+ }
138
+ let session;
139
+ try {
140
+ session = (await response.json());
141
+ }
142
+ catch (error) {
143
+ throw new Error(`Failed to parse Kernel session response: ${error instanceof Error ? error.message : String(error)}`);
144
+ }
145
+ if (!session.session_id || !session.cdp_ws_url) {
146
+ throw new Error(`Invalid Kernel session response: missing ${!session.session_id ? 'session_id' : 'cdp_ws_url'}`);
147
+ }
148
+ const browser = await chromium.connectOverCDP(session.cdp_ws_url).catch(() => {
149
+ throw new Error('Failed to connect to Kernel session via CDP');
150
+ });
151
+ try {
152
+ const contexts = browser.contexts();
153
+ let context;
154
+ let page;
155
+ if (contexts.length === 0) {
156
+ context = await browser.newContext();
157
+ page = await context.newPage();
158
+ }
159
+ else {
160
+ context = contexts[0];
161
+ const pages = context.pages();
162
+ page = pages[0] ?? (await context.newPage());
163
+ }
164
+ return {
165
+ browser,
166
+ context,
167
+ page,
168
+ sessionId: session.session_id,
169
+ apiKey: kernelApiKey,
170
+ };
171
+ }
172
+ catch (error) {
173
+ await closeKernelSession(session.session_id, kernelApiKey).catch((sessionError) => {
174
+ console.error('Failed to close Kernel session during cleanup:', sessionError);
175
+ });
176
+ throw error;
177
+ }
178
+ }
179
+ export async function connectToBrowserUse() {
180
+ const browserUseApiKey = process.env.BROWSER_USE_API_KEY;
181
+ if (!browserUseApiKey) {
182
+ throw new Error('BROWSER_USE_API_KEY is required when using browseruse as a provider');
183
+ }
184
+ const response = await fetch('https://api.browser-use.com/api/v2/browsers', {
185
+ method: 'POST',
186
+ headers: {
187
+ 'Content-Type': 'application/json',
188
+ 'X-Browser-Use-API-Key': browserUseApiKey,
189
+ },
190
+ body: JSON.stringify({}),
191
+ });
192
+ if (!response.ok) {
193
+ throw new Error(`Failed to create Browser Use session: ${response.statusText}`);
194
+ }
195
+ let session;
196
+ try {
197
+ session = (await response.json());
198
+ }
199
+ catch (error) {
200
+ throw new Error(`Failed to parse Browser Use session response: ${error instanceof Error ? error.message : String(error)}`);
201
+ }
202
+ if (!session.id || !session.cdpUrl) {
203
+ throw new Error(`Invalid Browser Use session response: missing ${!session.id ? 'id' : 'cdpUrl'}`);
204
+ }
205
+ const browser = await chromium.connectOverCDP(session.cdpUrl).catch(() => {
206
+ throw new Error('Failed to connect to Browser Use session via CDP');
207
+ });
208
+ try {
209
+ const contexts = browser.contexts();
210
+ let context;
211
+ let page;
212
+ if (contexts.length === 0) {
213
+ context = await browser.newContext();
214
+ page = await context.newPage();
215
+ }
216
+ else {
217
+ context = contexts[0];
218
+ const pages = context.pages();
219
+ page = pages[0] ?? (await context.newPage());
220
+ }
221
+ return {
222
+ browser,
223
+ context,
224
+ page,
225
+ sessionId: session.id,
226
+ apiKey: browserUseApiKey,
227
+ };
228
+ }
229
+ catch (error) {
230
+ await closeBrowserUseSession(session.id, browserUseApiKey).catch((sessionError) => {
231
+ console.error('Failed to close Browser Use session during cleanup:', sessionError);
232
+ });
233
+ throw error;
234
+ }
235
+ }
236
+ export async function connectViaCDP(cdpEndpoint, callbacks) {
237
+ if (!cdpEndpoint) {
238
+ throw new Error('CDP endpoint is required for CDP connection');
239
+ }
240
+ let cdpUrl;
241
+ if (cdpEndpoint.startsWith('ws://') ||
242
+ cdpEndpoint.startsWith('wss://') ||
243
+ cdpEndpoint.startsWith('http://') ||
244
+ cdpEndpoint.startsWith('https://')) {
245
+ cdpUrl = cdpEndpoint;
246
+ }
247
+ else if (/^\d+$/.test(cdpEndpoint)) {
248
+ cdpUrl = `http://localhost:${cdpEndpoint}`;
249
+ }
250
+ else {
251
+ cdpUrl = `http://localhost:${cdpEndpoint}`;
252
+ }
253
+ const CDP_CONNECT_TIMEOUT_MS = 15000;
254
+ function withTimeout(promise, msg) {
255
+ let timer;
256
+ const timeout = new Promise((_, reject) => {
257
+ timer = setTimeout(() => reject(new Error(msg)), CDP_CONNECT_TIMEOUT_MS);
258
+ });
259
+ return Promise.race([promise, timeout]).finally(() => clearTimeout(timer));
260
+ }
261
+ const browser = await withTimeout(chromium.connectOverCDP(cdpUrl), `CDP connection timed out after ${CDP_CONNECT_TIMEOUT_MS}ms. Remote endpoint at ${cdpUrl} did not respond.`).catch(() => {
262
+ throw new Error(`Failed to connect via CDP to ${cdpUrl}. ` +
263
+ (cdpUrl.includes('localhost')
264
+ ? `Make sure the app is running with --remote-debugging-port=${cdpEndpoint}`
265
+ : 'Make sure the remote browser is accessible and the URL is correct.'));
266
+ });
267
+ try {
268
+ const contexts = browser.contexts();
269
+ if (contexts.length === 0) {
270
+ throw new Error('No browser context found. Make sure the app has an open window.');
271
+ }
272
+ let allPages = contexts.flatMap((context) => context.pages()).filter((page) => page.url());
273
+ if (allPages.length === 0) {
274
+ const newPage = await contexts[0].newPage();
275
+ allPages = [newPage];
276
+ }
277
+ for (const context of contexts) {
278
+ context.setDefaultTimeout(30000);
279
+ callbacks.addContext(context);
280
+ await callbacks.setupContextTracking(context);
281
+ }
282
+ for (const page of allPages) {
283
+ callbacks.addPage(page);
284
+ callbacks.setupPageTracking(page);
285
+ }
286
+ return { browser, cdpEndpoint };
287
+ }
288
+ catch (error) {
289
+ await browser.close().catch(() => { });
290
+ throw error;
291
+ }
292
+ }
293
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/browser/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import type { Page } from 'playwright-core';
2
+ import type { RecorderStep } from './types.js';
3
+ export declare class RecorderManager {
4
+ private recorderSessionId;
5
+ private recorderBindingName;
6
+ private recorderStartTime;
7
+ private recorderSteps;
8
+ private recorderPages;
9
+ private recorderPageHandler;
10
+ private navigationHistory;
11
+ private navigationHistoryIndex;
12
+ private lastNavigationUrl;
13
+ private lastNavigationTime;
14
+ private recorderNavigatedHandler;
15
+ private recorderFrameAttachedHandler;
16
+ recorderPaused: boolean;
17
+ private getPage;
18
+ private getPages;
19
+ private getActivePageIndex;
20
+ private setActivePageIndex;
21
+ private getCDPSession;
22
+ private getCdpEndpoint;
23
+ constructor(deps: {
24
+ getPage: () => Page;
25
+ getPages: () => Page[];
26
+ getActivePageIndex: () => number;
27
+ setActivePageIndex: (index: number) => void;
28
+ getCDPSession: () => Promise<import('playwright-core').CDPSession>;
29
+ getCdpEndpoint: () => string | null;
30
+ });
31
+ isRecordingSession(): boolean;
32
+ pauseRecording(): void;
33
+ resumeRecording(): void;
34
+ recordStep(step: {
35
+ action: string;
36
+ index?: number;
37
+ key?: string;
38
+ code?: string;
39
+ ctrlKey?: boolean;
40
+ metaKey?: boolean;
41
+ altKey?: boolean;
42
+ shiftKey?: boolean;
43
+ selector?: string;
44
+ value?: string;
45
+ }): void;
46
+ addStep(step: RecorderStep): void;
47
+ getSteps(): RecorderStep[];
48
+ getSessionId(): string | null;
49
+ injectRecorderIfNeeded(): Promise<void>;
50
+ private getRecorderInjectScript;
51
+ startRecorder(url?: string, hide?: boolean): Promise<{
52
+ started: boolean;
53
+ sessionId: string;
54
+ }>;
55
+ stopRecorder(): Promise<{
56
+ yaml: string;
57
+ steps: number;
58
+ wasRecording?: boolean;
59
+ }>;
60
+ getRecorderStatus(): {
61
+ isRecording: boolean;
62
+ sessionId?: string;
63
+ steps: number;
64
+ };
65
+ private generateRecorderYaml;
66
+ private generateStepCliCommand;
67
+ cleanup(page: Page | null): void;
68
+ }
69
+ //# sourceMappingURL=recorder-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorder-manager.d.ts","sourceRoot":"","sources":["../../src/browser/recorder-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAS,MAAM,iBAAiB,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAI7D,qBAAa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,mBAAmB,CAAmD;IAC9E,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,sBAAsB,CAAM;IACpC,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,wBAAwB,CAAkD;IAClF,OAAO,CAAC,4BAA4B,CAAkD;IAEtF,cAAc,UAAS;IAEvB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,kBAAkB,CAA0B;IACpD,OAAO,CAAC,aAAa,CAAsD;IAC3E,OAAO,CAAC,cAAc,CAAsB;gBAEhC,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;QACvB,kBAAkB,EAAE,MAAM,MAAM,CAAC;QACjC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5C,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,iBAAiB,EAAE,UAAU,CAAC,CAAC;QACnE,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;KACrC;IASD,kBAAkB,IAAI,OAAO;IAI7B,cAAc,IAAI,IAAI;IAItB,eAAe,IAAI,IAAI;IAIvB,UAAU,CAAC,IAAI,EAAE;QACf,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI;IAmBR,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIjC,QAAQ,IAAI,YAAY,EAAE;IAI1B,YAAY,IAAI,MAAM,GAAG,IAAI;IAIvB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB7C,OAAO,CAAC,uBAAuB;IAYzB,aAAa,CACjB,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,GAAE,OAAe,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IA0U7C,YAAY,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAqFtF,iBAAiB,IAAI;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAQhF,OAAO,CAAC,oBAAoB;IA0I5B,OAAO,CAAC,sBAAsB;IA+J9B,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;CAuBjC"}