@monoes/monobrowse 1.0.1 → 1.0.3

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 (277) hide show
  1. package/dist/src/__tests__/output.test.d.ts +2 -0
  2. package/dist/src/__tests__/output.test.d.ts.map +1 -0
  3. package/dist/src/__tests__/output.test.js +54 -0
  4. package/dist/src/__tests__/output.test.js.map +1 -0
  5. package/dist/src/__tests__/ref-cache.test.d.ts +2 -0
  6. package/dist/src/__tests__/ref-cache.test.d.ts.map +1 -0
  7. package/dist/src/__tests__/ref-cache.test.js +109 -0
  8. package/dist/src/__tests__/ref-cache.test.js.map +1 -0
  9. package/dist/src/browser/action-builder/analyzer.d.ts +0 -1
  10. package/dist/src/browser/action-builder/analyzer.d.ts.map +1 -1
  11. package/dist/src/browser/action-builder/analyzer.js +43 -21
  12. package/dist/src/browser/action-builder/analyzer.js.map +1 -1
  13. package/dist/src/browser/action-builder/types.d.ts +0 -0
  14. package/dist/src/browser/action-builder/types.d.ts.map +0 -0
  15. package/dist/src/browser/action-builder/types.js +0 -0
  16. package/dist/src/browser/action-builder/types.js.map +0 -0
  17. package/dist/src/browser/actions.d.ts +0 -0
  18. package/dist/src/browser/actions.d.ts.map +0 -0
  19. package/dist/src/browser/actions.js +0 -0
  20. package/dist/src/browser/actions.js.map +0 -0
  21. package/dist/src/browser/adapters/gemini.d.ts +0 -0
  22. package/dist/src/browser/adapters/gemini.d.ts.map +0 -0
  23. package/dist/src/browser/adapters/gemini.js +0 -0
  24. package/dist/src/browser/adapters/gemini.js.map +0 -0
  25. package/dist/src/browser/adapters/google.d.ts +0 -0
  26. package/dist/src/browser/adapters/google.d.ts.map +0 -0
  27. package/dist/src/browser/adapters/google.js +0 -0
  28. package/dist/src/browser/adapters/google.js.map +0 -0
  29. package/dist/src/browser/adapters/index.d.ts +0 -0
  30. package/dist/src/browser/adapters/index.d.ts.map +0 -0
  31. package/dist/src/browser/adapters/index.js +0 -0
  32. package/dist/src/browser/adapters/index.js.map +0 -0
  33. package/dist/src/browser/adapters/instagram.d.ts +0 -0
  34. package/dist/src/browser/adapters/instagram.d.ts.map +0 -0
  35. package/dist/src/browser/adapters/instagram.js +0 -0
  36. package/dist/src/browser/adapters/instagram.js.map +0 -0
  37. package/dist/src/browser/adapters/linkedin.d.ts +0 -0
  38. package/dist/src/browser/adapters/linkedin.d.ts.map +0 -0
  39. package/dist/src/browser/adapters/linkedin.js +0 -0
  40. package/dist/src/browser/adapters/linkedin.js.map +0 -0
  41. package/dist/src/browser/adapters/microsoft.d.ts +0 -0
  42. package/dist/src/browser/adapters/microsoft.d.ts.map +0 -0
  43. package/dist/src/browser/adapters/microsoft.js +0 -0
  44. package/dist/src/browser/adapters/microsoft.js.map +0 -0
  45. package/dist/src/browser/adapters/x.d.ts +0 -0
  46. package/dist/src/browser/adapters/x.d.ts.map +0 -0
  47. package/dist/src/browser/adapters/x.js +0 -0
  48. package/dist/src/browser/adapters/x.js.map +0 -0
  49. package/dist/src/browser/batch.d.ts +0 -0
  50. package/dist/src/browser/batch.d.ts.map +0 -0
  51. package/dist/src/browser/batch.js +0 -0
  52. package/dist/src/browser/batch.js.map +0 -0
  53. package/dist/src/browser/browser.d.ts +0 -0
  54. package/dist/src/browser/browser.d.ts.map +0 -0
  55. package/dist/src/browser/browser.js +0 -0
  56. package/dist/src/browser/browser.js.map +0 -0
  57. package/dist/src/browser/cdp.d.ts +0 -0
  58. package/dist/src/browser/cdp.d.ts.map +0 -0
  59. package/dist/src/browser/cdp.js +0 -0
  60. package/dist/src/browser/cdp.js.map +0 -0
  61. package/dist/src/browser/console-log.d.ts +0 -0
  62. package/dist/src/browser/console-log.d.ts.map +0 -0
  63. package/dist/src/browser/console-log.js +0 -0
  64. package/dist/src/browser/console-log.js.map +0 -0
  65. package/dist/src/browser/dashboard/api-types.d.ts +0 -0
  66. package/dist/src/browser/dashboard/api-types.d.ts.map +0 -0
  67. package/dist/src/browser/dashboard/api-types.js +0 -0
  68. package/dist/src/browser/dashboard/api-types.js.map +0 -0
  69. package/dist/src/browser/dashboard/server.d.ts +12 -1
  70. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  71. package/dist/src/browser/dashboard/server.js +4 -198
  72. package/dist/src/browser/dashboard/server.js.map +1 -1
  73. package/dist/src/browser/dashboard/ui.html +0 -0
  74. package/dist/src/browser/dialog.d.ts +0 -0
  75. package/dist/src/browser/dialog.d.ts.map +0 -0
  76. package/dist/src/browser/dialog.js +0 -0
  77. package/dist/src/browser/dialog.js.map +0 -0
  78. package/dist/src/browser/emulation.d.ts +0 -0
  79. package/dist/src/browser/emulation.d.ts.map +0 -0
  80. package/dist/src/browser/emulation.js +0 -0
  81. package/dist/src/browser/emulation.js.map +0 -0
  82. package/dist/src/browser/find.d.ts +0 -0
  83. package/dist/src/browser/find.d.ts.map +0 -0
  84. package/dist/src/browser/find.js +0 -0
  85. package/dist/src/browser/find.js.map +0 -0
  86. package/dist/src/browser/har.d.ts +0 -0
  87. package/dist/src/browser/har.d.ts.map +0 -0
  88. package/dist/src/browser/har.js +0 -0
  89. package/dist/src/browser/har.js.map +0 -0
  90. package/dist/src/browser/index.d.ts +1 -0
  91. package/dist/src/browser/index.d.ts.map +1 -1
  92. package/dist/src/browser/index.js +1 -0
  93. package/dist/src/browser/index.js.map +1 -1
  94. package/dist/src/browser/network.d.ts +0 -0
  95. package/dist/src/browser/network.d.ts.map +0 -0
  96. package/dist/src/browser/network.js +0 -0
  97. package/dist/src/browser/network.js.map +0 -0
  98. package/dist/src/browser/pdf.d.ts +0 -0
  99. package/dist/src/browser/pdf.d.ts.map +0 -0
  100. package/dist/src/browser/pdf.js +0 -0
  101. package/dist/src/browser/pdf.js.map +0 -0
  102. package/dist/src/browser/profiler.d.ts +0 -0
  103. package/dist/src/browser/profiler.d.ts.map +0 -0
  104. package/dist/src/browser/profiler.js +0 -0
  105. package/dist/src/browser/profiler.js.map +0 -0
  106. package/dist/src/browser/record.d.ts +0 -0
  107. package/dist/src/browser/record.d.ts.map +0 -0
  108. package/dist/src/browser/record.js +0 -0
  109. package/dist/src/browser/record.js.map +0 -0
  110. package/dist/src/browser/ref-cache.d.ts +21 -0
  111. package/dist/src/browser/ref-cache.d.ts.map +1 -0
  112. package/dist/src/browser/ref-cache.js +70 -0
  113. package/dist/src/browser/ref-cache.js.map +1 -0
  114. package/dist/src/browser/screenshot.d.ts +0 -0
  115. package/dist/src/browser/screenshot.d.ts.map +0 -0
  116. package/dist/src/browser/screenshot.js +0 -0
  117. package/dist/src/browser/screenshot.js.map +0 -0
  118. package/dist/src/browser/session.d.ts +0 -0
  119. package/dist/src/browser/session.d.ts.map +0 -0
  120. package/dist/src/browser/session.js +0 -0
  121. package/dist/src/browser/session.js.map +0 -0
  122. package/dist/src/browser/snapshot.d.ts +0 -0
  123. package/dist/src/browser/snapshot.d.ts.map +0 -0
  124. package/dist/src/browser/snapshot.js +0 -0
  125. package/dist/src/browser/snapshot.js.map +0 -0
  126. package/dist/src/browser/storage.d.ts +0 -0
  127. package/dist/src/browser/storage.d.ts.map +0 -0
  128. package/dist/src/browser/storage.js +0 -0
  129. package/dist/src/browser/storage.js.map +0 -0
  130. package/dist/src/browser/tabs.d.ts +1 -1
  131. package/dist/src/browser/tabs.d.ts.map +1 -1
  132. package/dist/src/browser/tabs.js +20 -4
  133. package/dist/src/browser/tabs.js.map +1 -1
  134. package/dist/src/browser/trace.d.ts +0 -0
  135. package/dist/src/browser/trace.d.ts.map +0 -0
  136. package/dist/src/browser/trace.js +0 -0
  137. package/dist/src/browser/trace.js.map +0 -0
  138. package/dist/src/browser/types.d.ts +0 -0
  139. package/dist/src/browser/types.d.ts.map +0 -0
  140. package/dist/src/browser/types.js +0 -0
  141. package/dist/src/browser/types.js.map +0 -0
  142. package/dist/src/browser/vitals.d.ts +0 -0
  143. package/dist/src/browser/vitals.d.ts.map +0 -0
  144. package/dist/src/browser/vitals.js +0 -0
  145. package/dist/src/browser/vitals.js.map +0 -0
  146. package/dist/src/browser/wait.d.ts +0 -0
  147. package/dist/src/browser/wait.d.ts.map +0 -0
  148. package/dist/src/browser/wait.js +0 -0
  149. package/dist/src/browser/wait.js.map +0 -0
  150. package/dist/src/cli/action.d.ts +0 -0
  151. package/dist/src/cli/action.d.ts.map +1 -1
  152. package/dist/src/cli/action.js +92 -4
  153. package/dist/src/cli/action.js.map +1 -1
  154. package/dist/src/cli/commands.d.ts +0 -0
  155. package/dist/src/cli/commands.d.ts.map +1 -1
  156. package/dist/src/cli/commands.js +32 -6
  157. package/dist/src/cli/commands.js.map +1 -1
  158. package/dist/src/cli/output.d.ts +0 -0
  159. package/dist/src/cli/output.d.ts.map +0 -0
  160. package/dist/src/cli/output.js +0 -0
  161. package/dist/src/cli/output.js.map +0 -0
  162. package/dist/src/cli/platform.d.ts +0 -0
  163. package/dist/src/cli/platform.d.ts.map +0 -0
  164. package/dist/src/cli/platform.js +0 -0
  165. package/dist/src/cli/platform.js.map +0 -0
  166. package/dist/src/cli/types.d.ts +0 -0
  167. package/dist/src/cli/types.d.ts.map +0 -0
  168. package/dist/src/cli/types.js +0 -0
  169. package/dist/src/cli/types.js.map +0 -0
  170. package/dist/src/cli.d.ts +0 -0
  171. package/dist/src/cli.d.ts.map +0 -0
  172. package/dist/src/cli.js.map +0 -0
  173. package/dist/src/index.d.ts +0 -5
  174. package/dist/src/index.d.ts.map +1 -1
  175. package/dist/src/index.js +0 -16
  176. package/dist/src/index.js.map +1 -1
  177. package/dist/tsconfig.tsbuildinfo +1 -1
  178. package/package.json +6 -15
  179. package/src/__tests__/output.test.ts +62 -0
  180. package/src/__tests__/ref-cache.test.ts +134 -0
  181. package/src/browser/action-builder/analyzer.ts +41 -23
  182. package/src/browser/action-builder/types.ts +0 -0
  183. package/src/browser/actions.ts +0 -0
  184. package/src/browser/adapters/gemini.ts +0 -0
  185. package/src/browser/adapters/google.ts +0 -0
  186. package/src/browser/adapters/index.ts +0 -0
  187. package/src/browser/adapters/instagram.ts +0 -0
  188. package/src/browser/adapters/linkedin.ts +0 -0
  189. package/src/browser/adapters/microsoft.ts +0 -0
  190. package/src/browser/adapters/x.ts +0 -0
  191. package/src/browser/batch.ts +0 -0
  192. package/src/browser/browser.ts +0 -0
  193. package/src/browser/cdp.ts +0 -0
  194. package/src/browser/console-log.ts +0 -0
  195. package/src/browser/dashboard/api-types.ts +0 -0
  196. package/src/browser/dashboard/server.ts +16 -198
  197. package/src/browser/dashboard/ui.html +0 -0
  198. package/src/browser/dialog.ts +0 -0
  199. package/src/browser/emulation.ts +0 -0
  200. package/src/browser/find.ts +0 -0
  201. package/src/browser/har.ts +0 -0
  202. package/src/browser/index.ts +1 -0
  203. package/src/browser/network.ts +0 -0
  204. package/src/browser/pdf.ts +0 -0
  205. package/src/browser/profiler.ts +0 -0
  206. package/src/browser/record.ts +0 -0
  207. package/src/browser/ref-cache.ts +90 -0
  208. package/src/browser/screenshot.ts +0 -0
  209. package/src/browser/session.ts +0 -0
  210. package/src/browser/snapshot.ts +0 -0
  211. package/src/browser/storage.ts +0 -0
  212. package/src/browser/tabs.ts +36 -7
  213. package/src/browser/trace.ts +0 -0
  214. package/src/browser/types.ts +0 -0
  215. package/src/browser/vitals.ts +0 -0
  216. package/src/browser/wait.ts +0 -0
  217. package/src/cli/action.ts +91 -5
  218. package/src/cli/commands.ts +35 -6
  219. package/src/cli/output.ts +0 -0
  220. package/src/cli/platform.ts +0 -0
  221. package/src/cli/types.ts +0 -0
  222. package/src/cli.ts +0 -0
  223. package/src/index.ts +0 -20
  224. package/dist/package.json +0 -75
  225. package/dist/src/browser/playbook/browser-handlers.d.ts +0 -3
  226. package/dist/src/browser/playbook/browser-handlers.d.ts.map +0 -1
  227. package/dist/src/browser/playbook/browser-handlers.js +0 -377
  228. package/dist/src/browser/playbook/browser-handlers.js.map +0 -1
  229. package/dist/src/browser/playbook/builtin-handlers.d.ts +0 -3
  230. package/dist/src/browser/playbook/builtin-handlers.d.ts.map +0 -1
  231. package/dist/src/browser/playbook/builtin-handlers.js +0 -364
  232. package/dist/src/browser/playbook/builtin-handlers.js.map +0 -1
  233. package/dist/src/browser/playbook/index.d.ts +0 -3
  234. package/dist/src/browser/playbook/index.d.ts.map +0 -1
  235. package/dist/src/browser/playbook/index.js +0 -3
  236. package/dist/src/browser/playbook/index.js.map +0 -1
  237. package/dist/src/browser/playbook/store.d.ts +0 -8
  238. package/dist/src/browser/playbook/store.d.ts.map +0 -1
  239. package/dist/src/browser/playbook/store.js +0 -87
  240. package/dist/src/browser/playbook/store.js.map +0 -1
  241. package/dist/src/browser/workflow/builtin-handlers.d.ts +0 -3
  242. package/dist/src/browser/workflow/builtin-handlers.d.ts.map +0 -1
  243. package/dist/src/browser/workflow/builtin-handlers.js +0 -343
  244. package/dist/src/browser/workflow/builtin-handlers.js.map +0 -1
  245. package/dist/src/browser/workflow/engine.d.ts +0 -10
  246. package/dist/src/browser/workflow/engine.d.ts.map +0 -1
  247. package/dist/src/browser/workflow/engine.js +0 -174
  248. package/dist/src/browser/workflow/engine.js.map +0 -1
  249. package/dist/src/browser/workflow/expression.d.ts +0 -4
  250. package/dist/src/browser/workflow/expression.d.ts.map +0 -1
  251. package/dist/src/browser/workflow/expression.js +0 -89
  252. package/dist/src/browser/workflow/expression.js.map +0 -1
  253. package/dist/src/browser/workflow/index.d.ts +0 -6
  254. package/dist/src/browser/workflow/index.d.ts.map +0 -1
  255. package/dist/src/browser/workflow/index.js +0 -6
  256. package/dist/src/browser/workflow/index.js.map +0 -1
  257. package/dist/src/browser/workflow/store.d.ts +0 -8
  258. package/dist/src/browser/workflow/store.d.ts.map +0 -1
  259. package/dist/src/browser/workflow/store.js +0 -87
  260. package/dist/src/browser/workflow/store.js.map +0 -1
  261. package/dist/src/browser/workflow/types.d.ts +0 -62
  262. package/dist/src/browser/workflow/types.d.ts.map +0 -1
  263. package/dist/src/browser/workflow/types.js +0 -2
  264. package/dist/src/browser/workflow/types.js.map +0 -1
  265. package/dist/src/cli/playbook.d.ts +0 -3
  266. package/dist/src/cli/playbook.d.ts.map +0 -1
  267. package/dist/src/cli/playbook.js +0 -265
  268. package/dist/src/cli/playbook.js.map +0 -1
  269. package/dist/src/cli/workflow.d.ts +0 -2
  270. package/dist/src/cli/workflow.d.ts.map +0 -1
  271. package/dist/src/cli/workflow.js +0 -3
  272. package/dist/src/cli/workflow.js.map +0 -1
  273. package/src/browser/playbook/browser-handlers.ts +0 -449
  274. package/src/browser/playbook/builtin-handlers.ts +0 -400
  275. package/src/browser/playbook/index.ts +0 -2
  276. package/src/browser/playbook/store.ts +0 -87
  277. package/src/cli/playbook.ts +0 -280
@@ -17,9 +17,25 @@ export async function activateTab(client, oldSessionId, targetId) {
17
17
  const result = await client.send('Target.attachToTarget', { targetId, flatten: true });
18
18
  return result.sessionId;
19
19
  }
20
- export async function switchToFrame(_client, _sessionId, _frameSelector) {
21
- throw new Error('switchToFrame is not yet implemented. ' +
22
- 'For same-origin frames, CDP commands already apply to the whole page. ' +
23
- 'For cross-origin (OOPIF) frames, call Target.attachToTarget with the frame target ID.');
20
+ export async function switchToFrame(client, sessionId, frameSelector) {
21
+ const { result } = await client.send('Runtime.evaluate', {
22
+ expression: `(() => {
23
+ const el = document.querySelector(${JSON.stringify(frameSelector)});
24
+ if (!el || el.tagName !== 'IFRAME') return null;
25
+ return el.src || null;
26
+ })()`,
27
+ returnByValue: true,
28
+ }, sessionId);
29
+ const frameSrc = result?.result?.value ?? null;
30
+ const { frameTree } = await client.send('Page.getFrameTree', {}, sessionId);
31
+ const match = frameTree.childFrames?.find((cf) => cf.frame.url === frameSrc || cf.frame.id === frameSelector);
32
+ if (!match)
33
+ return frameSrc;
34
+ const targets = await client.send('Target.getTargets', {});
35
+ const oopif = targets.targetInfos.find((t) => t.type === 'iframe' && t.url === match.frame.url);
36
+ if (oopif) {
37
+ await client.send('Target.attachToTarget', { targetId: oopif.targetId, flatten: true });
38
+ }
39
+ return frameSrc;
24
40
  }
25
41
  //# sourceMappingURL=tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/browser/tabs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,GAAG,GAAG,aAAa;IAC5D,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAiB,EAAE,UAAkB,EAAE,QAAgB;IACpF,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAiB,EAAE,YAAoB,EAAE,QAAgB;IACzF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAwB,uBAAuB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9G,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAkB,EAClB,UAAkB,EAClB,cAAsB;IAEtB,MAAM,IAAI,KAAK,CACb,wCAAwC;QACxC,wEAAwE;QACxE,uFAAuF,CACxF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/browser/tabs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,GAAG,GAAG,aAAa;IAC5D,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAiB,EAAE,UAAkB,EAAE,QAAgB;IACpF,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAiB,EAAE,YAAoB,EAAE,QAAgB;IACzF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAwB,uBAAuB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9G,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAiB,EACjB,SAAiB,EACjB,aAAqB;IAErB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAClC,kBAAkB,EAClB;QACE,UAAU,EAAE;4CAC0B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;;;WAG9D;QACL,aAAa,EAAE,IAAI;KACpB,EACD,SAAS,CACV,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC;IAE/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAEpC,mBAAmB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,IAAI,CACvC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,aAAa,CACnE,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAE5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAC/B,mBAAmB,EAAE,EAAE,CACxB,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CACxD,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/cli/action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,mBAAmB,IAAI,OAAO,CAoG7C"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/cli/action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+CpC,wBAAgB,mBAAmB,IAAI,OAAO,CAsL7C"}
@@ -1,9 +1,12 @@
1
1
  // src/commands/browse-action.ts
2
2
  import { Command } from 'commander';
3
- import { readdir, writeFile, mkdir } from 'node:fs/promises';
3
+ import { readdir, readFile, writeFile, mkdir } from 'node:fs/promises';
4
4
  import { existsSync } from 'node:fs';
5
5
  import { join } from 'node:path';
6
- import { analyzePageForAction, readAction } from '../index.js';
6
+ import { analyzePageForAction } from '../index.js';
7
+ async function readAction(filePath) {
8
+ return JSON.parse(await readFile(filePath, 'utf8'));
9
+ }
7
10
  // Built-in actions (shipped with the CLI) — actual step definitions live in adapters/
8
11
  const BUILTIN_ACTIONS = [
9
12
  { id: 'linkedin:comment_post', platform: 'linkedin', name: 'Comment on Post' },
@@ -88,8 +91,93 @@ export function createActionCommand() {
88
91
  params[pair.slice(0, eq)] = pair.slice(eq + 1);
89
92
  }
90
93
  console.log(`Running action: ${actionId} with account: ${opts.account}`);
91
- console.log('Params:', params);
92
- console.log('(Action runner not yet implemented use browse playbook run for full execution)');
94
+ const custom = await getCustomActions();
95
+ const def = custom.find(a => a.id === actionId);
96
+ if (!def) {
97
+ console.error(`Action not found in custom actions: ${actionId}`);
98
+ console.error('Built-in actions require adapter step definitions — use "action build" to create a custom action.');
99
+ process.exit(1);
100
+ }
101
+ const { connectToTarget } = await import('../browser/browser.js');
102
+ const { openUrl } = await import('../browser/browser.js');
103
+ const { clickElement, fillElement, evaluateJs } = await import('../browser/actions.js');
104
+ const { findBySelector } = await import('../browser/find.js');
105
+ const { waitFor } = await import('../browser/wait.js');
106
+ const port = parseInt(process.env.MONOBROWSE_PORT ?? '9222', 10);
107
+ const { client, sessionId } = await connectToTarget(port);
108
+ const refs = new Map();
109
+ const interpolate = (s) => s.replace(/\{\{(\w+)\}\}/g, (_, k) => params[k] ?? `{{${k}}}`);
110
+ async function runSteps(steps) {
111
+ for (const step of steps) {
112
+ switch (step.type) {
113
+ case 'navigate':
114
+ await openUrl(client, sessionId, interpolate(step.url));
115
+ console.log(` navigate → ${step.url}`);
116
+ break;
117
+ case 'find': {
118
+ for (const sel of step.selectors) {
119
+ const found = await findBySelector(client, sessionId, refs, interpolate(sel)).catch(() => null);
120
+ if (found) {
121
+ refs.set(step.as, found);
122
+ break;
123
+ }
124
+ }
125
+ console.log(` find → ${step.as}`);
126
+ break;
127
+ }
128
+ case 'click': {
129
+ const ref = refs.get(step.target);
130
+ if (!ref)
131
+ throw new Error(`Element "${step.target}" not found`);
132
+ await clickElement(client, sessionId, ref);
133
+ console.log(` click → ${step.target}`);
134
+ break;
135
+ }
136
+ case 'type': {
137
+ const ref = refs.get(step.target);
138
+ if (!ref)
139
+ throw new Error(`Element "${step.target}" not found`);
140
+ await fillElement(client, sessionId, ref, interpolate(step.text));
141
+ console.log(` type → ${step.target}`);
142
+ break;
143
+ }
144
+ case 'wait':
145
+ if (step.condition === 'network_idle') {
146
+ await waitFor(client, sessionId, { load: 'networkidle', timeout: step.timeout });
147
+ }
148
+ else if (step.condition === 'selector' && step.selector) {
149
+ await waitFor(client, sessionId, { selector: step.selector, timeout: step.timeout });
150
+ }
151
+ else if (step.condition === 'duration') {
152
+ await new Promise(r => setTimeout(r, step.timeout ?? 1000));
153
+ }
154
+ console.log(` wait → ${step.condition}`);
155
+ break;
156
+ case 'extract': {
157
+ const ref = refs.get(step.target);
158
+ if (!ref)
159
+ throw new Error(`Element "${step.target}" not found`);
160
+ const val = step.attribute
161
+ ? await evaluateJs(client, sessionId, `document.querySelector('[data-ref="${ref.ref}"]')?.getAttribute('${step.attribute}')`)
162
+ : await evaluateJs(client, sessionId, `document.querySelector('[data-ref="${ref.ref}"]')?.textContent`);
163
+ console.log(` extract → ${step.as}: ${val}`);
164
+ break;
165
+ }
166
+ case 'condition': {
167
+ const result = await evaluateJs(client, sessionId, step.expression);
168
+ if (result) {
169
+ await runSteps(step.then);
170
+ }
171
+ else if (step.else) {
172
+ await runSteps(step.else);
173
+ }
174
+ break;
175
+ }
176
+ }
177
+ }
178
+ }
179
+ await runSteps(def.steps);
180
+ console.log(`\nAction ${actionId} completed successfully.`);
93
181
  });
94
182
  cmd
95
183
  .command('list')
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/cli/action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/cli/action.ts"],"names":[],"mappings":"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"}
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,YAAY,CAAC;AAmrFzE,QAAA,MAAM,aAAa,EAAE,OAoJpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,YAAY,CAAC;AAitFzE,QAAA,MAAM,aAAa,EAAE,OAmJpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -3,7 +3,6 @@
3
3
  * Provides ref-based element model and token-efficient accessibility snapshots
4
4
  */
5
5
  import { output } from './output.js';
6
- import { createPlaybookCommand } from './playbook.js';
7
6
  import { createActionCommand } from './action.js';
8
7
  import { createPlatformCommand } from './platform.js';
9
8
  // Runtime state (single session per CLI process)
@@ -31,9 +30,24 @@ async function ensureConnected(port, targetId) {
31
30
  _sessionId = conn.sessionId;
32
31
  _targetId = conn.target.id;
33
32
  _refs = new Map();
33
+ await hydrateRefsFromCache(browser, _targetId);
34
34
  }
35
35
  return { client: _client, sessionId: _sessionId, targetId: _targetId };
36
36
  }
37
+ // Each CLI invocation is a fresh process, so the in-memory _refs Map built by
38
+ // a prior `snapshot` command is gone by the time a later `find`/`click`/etc.
39
+ // command runs. Rehydrate it from the on-disk ref cache (written by
40
+ // captureSnapshot call sites below) so refs resolved by a previous process
41
+ // remain usable. Falls back silently to an empty Map if no cache exists.
42
+ async function hydrateRefsFromCache(browser, targetId) {
43
+ const cached = await browser.loadRefCache(targetId);
44
+ if (!cached)
45
+ return;
46
+ _refs = cached.refs;
47
+ if (cached.stale) {
48
+ output.printWarning(`AX ref cache is ${Math.round(cached.ageMs / 1000)}s old — page may have changed since the last snapshot; re-run snapshot if refs don't resolve as expected`);
49
+ }
50
+ }
37
51
  // URL patterns that signal an unambiguous login/auth wall.
38
52
  // Excludes 'auth', 'oauth', 'sso', 'saml' — their callback/ACS/token paths
39
53
  // (/auth/callback, /sso/callback, /saml/acs) are completion endpoints, not walls.
@@ -152,6 +166,17 @@ async function switchToHeaded(url, port) {
152
166
  catch { /* ignore */ }
153
167
  }
154
168
  }
169
+ /**
170
+ * Sanitize an image-format flag. The host CLI (monomind) defines a GLOBAL
171
+ * --format flag for output shaping (text|json|table, default 'text') that
172
+ * leaks into subcommand flags — so ctx.flags.format arrives as 'text' even
173
+ * when the user never passed it, and Chrome rejects it with
174
+ * "CDP error -32602: Invalid image format". Only trust values that are real
175
+ * image formats; otherwise fall back to the subcommand's own default.
176
+ */
177
+ function imageFormat(value, allowed, fallback) {
178
+ return allowed.includes(value) ? value : fallback;
179
+ }
155
180
  function print(msg) {
156
181
  process.stdout.write(msg + '\n');
157
182
  }
@@ -262,6 +287,7 @@ const snapshotCommand = {
262
287
  selector: ctx.flags.selector,
263
288
  });
264
289
  _refs = result.refs;
290
+ await browser.saveRefCache(_targetId, result.url, _refs);
265
291
  const applyOutputLimits = (text) => {
266
292
  let out = text;
267
293
  const maxOutput = ctx.flags['max-output'];
@@ -537,7 +563,7 @@ const screenshotCommand = {
537
563
  result = await browser.captureScreenshot(client, sessionId, {
538
564
  path: ctx.args[0],
539
565
  fullPage: ctx.flags.full,
540
- format: ctx.flags.format,
566
+ format: imageFormat(ctx.flags.format, ['png', 'jpeg', 'webp'], 'png'),
541
567
  quality: ctx.flags.quality,
542
568
  annotate,
543
569
  refs: annotate ? _refs : undefined,
@@ -936,6 +962,7 @@ const stateCommand = {
936
962
  await browser.clearLocalStorage(c, sid);
937
963
  await browser.clearSessionStorage(c, sid);
938
964
  _refs = new Map();
965
+ await browser.clearRefCache();
939
966
  output.printSuccess('Browser state cleared (cookies, localStorage, sessionStorage, refs)');
940
967
  return { success: true };
941
968
  }
@@ -2319,6 +2346,7 @@ const diffCommand = {
2319
2346
  await browser.waitFor(client, sessionId, { load: 'load', timeout: 15000 });
2320
2347
  const snap2 = await browser.captureSnapshot(client, sessionId, { interactiveOnly: ctx.flags.interactive });
2321
2348
  _refs = snap2.refs;
2349
+ await browser.saveRefCache(_targetId, snap2.url, _refs);
2322
2350
  // Text diff
2323
2351
  const lines1 = snap1.text.split('\n');
2324
2352
  const lines2 = snap2.text.split('\n');
@@ -2612,7 +2640,7 @@ const recordCommand = {
2612
2640
  switch (action) {
2613
2641
  case 'start':
2614
2642
  await browser.startRecording(client, sessionId, {
2615
- format: ctx.flags.format,
2643
+ format: imageFormat(ctx.flags.format, ['jpeg', 'png'], 'jpeg'),
2616
2644
  quality: ctx.flags.quality,
2617
2645
  });
2618
2646
  output.printSuccess('Recording started');
@@ -2633,7 +2661,7 @@ const recordCommand = {
2633
2661
  output.printInfo(`Previous recording saved: ${prevPath}`);
2634
2662
  }
2635
2663
  await browser.startRecording(client, sessionId, {
2636
- format: ctx.flags.format,
2664
+ format: imageFormat(ctx.flags.format, ['jpeg', 'png'], 'jpeg'),
2637
2665
  quality: ctx.flags.quality,
2638
2666
  });
2639
2667
  output.printSuccess('Recording restarted');
@@ -2862,7 +2890,6 @@ function wrapCommanderCommand(factory) {
2862
2890
  },
2863
2891
  };
2864
2892
  }
2865
- const playbookSubcommand = wrapCommanderCommand(createPlaybookCommand);
2866
2893
  const actionSubcommand = wrapCommanderCommand(createActionCommand);
2867
2894
  const platformSubcommand = wrapCommanderCommand(createPlatformCommand);
2868
2895
  // ---------------------------------------------------------------------------
@@ -2932,7 +2959,6 @@ const browseCommand = {
2932
2959
  harCommand,
2933
2960
  resizeCommand,
2934
2961
  closeCommand,
2935
- playbookSubcommand,
2936
2962
  actionSubcommand,
2937
2963
  platformSubcommand,
2938
2964
  ],