opendevbrowser 0.0.15 → 0.0.16

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 (568) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +229 -34
  3. package/dist/annotate/direct-annotator.d.ts +22 -0
  4. package/dist/annotate/direct-annotator.d.ts.map +1 -0
  5. package/dist/annotate/output.d.ts +10 -0
  6. package/dist/annotate/output.d.ts.map +1 -0
  7. package/dist/browser/annotation-manager.d.ts +30 -0
  8. package/dist/browser/annotation-manager.d.ts.map +1 -0
  9. package/dist/browser/browser-manager.d.ts +397 -0
  10. package/dist/browser/browser-manager.d.ts.map +1 -0
  11. package/dist/browser/fingerprint/adapters.d.ts +26 -0
  12. package/dist/browser/fingerprint/adapters.d.ts.map +1 -0
  13. package/dist/browser/fingerprint/canary.d.ts +25 -0
  14. package/dist/browser/fingerprint/canary.d.ts.map +1 -0
  15. package/dist/browser/fingerprint/profiles.d.ts +16 -0
  16. package/dist/browser/fingerprint/profiles.d.ts.map +1 -0
  17. package/dist/browser/fingerprint/tier1-coherence.d.ts +36 -0
  18. package/dist/browser/fingerprint/tier1-coherence.d.ts.map +1 -0
  19. package/dist/browser/fingerprint/tier2-runtime.d.ts +40 -0
  20. package/dist/browser/fingerprint/tier2-runtime.d.ts.map +1 -0
  21. package/dist/browser/fingerprint/tier3-adaptive.d.ts +30 -0
  22. package/dist/browser/fingerprint/tier3-adaptive.d.ts.map +1 -0
  23. package/dist/browser/manager-types.d.ts +3 -0
  24. package/dist/browser/manager-types.d.ts.map +1 -0
  25. package/dist/browser/ops-browser-manager.d.ts +131 -0
  26. package/dist/browser/ops-browser-manager.d.ts.map +1 -0
  27. package/dist/browser/ops-client.d.ts +56 -0
  28. package/dist/browser/ops-client.d.ts.map +1 -0
  29. package/dist/browser/parallelism-governor.d.ts +31 -0
  30. package/dist/browser/parallelism-governor.d.ts.map +1 -0
  31. package/dist/browser/script-runner.d.ts +23 -0
  32. package/dist/browser/script-runner.d.ts.map +1 -0
  33. package/dist/browser/session-store.d.ts +63 -0
  34. package/dist/browser/session-store.d.ts.map +1 -0
  35. package/dist/browser/target-manager.d.ts +36 -0
  36. package/dist/browser/target-manager.d.ts.map +1 -0
  37. package/dist/cache/chrome-locator.d.ts +2 -0
  38. package/dist/cache/chrome-locator.d.ts.map +1 -0
  39. package/dist/cache/downloader.d.ts +6 -0
  40. package/dist/cache/downloader.d.ts.map +1 -0
  41. package/dist/cache/paths.d.ts +9 -0
  42. package/dist/cache/paths.d.ts.map +1 -0
  43. package/dist/chunk-7W3SPXIB.js +166 -0
  44. package/dist/chunk-7W3SPXIB.js.map +1 -0
  45. package/dist/chunk-ST7CO5FA.js +18668 -0
  46. package/dist/chunk-ST7CO5FA.js.map +1 -0
  47. package/dist/cli/args.d.ts +25 -0
  48. package/dist/cli/args.d.ts.map +1 -0
  49. package/dist/cli/client.d.ts +2 -0
  50. package/dist/cli/client.d.ts.map +1 -0
  51. package/dist/cli/commands/annotate.d.ts +27 -0
  52. package/dist/cli/commands/annotate.d.ts.map +1 -0
  53. package/dist/cli/commands/artifacts.d.ts +24 -0
  54. package/dist/cli/commands/artifacts.d.ts.map +1 -0
  55. package/dist/cli/commands/daemon.d.ts +35 -0
  56. package/dist/cli/commands/daemon.d.ts.map +1 -0
  57. package/dist/cli/commands/devtools/console-poll.d.ts +7 -0
  58. package/dist/cli/commands/devtools/console-poll.d.ts.map +1 -0
  59. package/dist/cli/commands/devtools/debug-trace-snapshot.d.ts +20 -0
  60. package/dist/cli/commands/devtools/debug-trace-snapshot.d.ts.map +1 -0
  61. package/dist/cli/commands/devtools/network-poll.d.ts +7 -0
  62. package/dist/cli/commands/devtools/network-poll.d.ts.map +1 -0
  63. package/dist/cli/commands/devtools/perf.d.ts +7 -0
  64. package/dist/cli/commands/devtools/perf.d.ts.map +1 -0
  65. package/dist/cli/commands/devtools/screenshot.d.ts +17 -0
  66. package/dist/cli/commands/devtools/screenshot.d.ts.map +1 -0
  67. package/dist/cli/commands/dom/attr.d.ts +7 -0
  68. package/dist/cli/commands/dom/attr.d.ts.map +1 -0
  69. package/dist/cli/commands/dom/checked.d.ts +7 -0
  70. package/dist/cli/commands/dom/checked.d.ts.map +1 -0
  71. package/dist/cli/commands/dom/enabled.d.ts +7 -0
  72. package/dist/cli/commands/dom/enabled.d.ts.map +1 -0
  73. package/dist/cli/commands/dom/html.d.ts +7 -0
  74. package/dist/cli/commands/dom/html.d.ts.map +1 -0
  75. package/dist/cli/commands/dom/text.d.ts +7 -0
  76. package/dist/cli/commands/dom/text.d.ts.map +1 -0
  77. package/dist/cli/commands/dom/value.d.ts +7 -0
  78. package/dist/cli/commands/dom/value.d.ts.map +1 -0
  79. package/dist/cli/commands/dom/visible.d.ts +7 -0
  80. package/dist/cli/commands/dom/visible.d.ts.map +1 -0
  81. package/dist/cli/commands/export/clone-component.d.ts +7 -0
  82. package/dist/cli/commands/export/clone-component.d.ts.map +1 -0
  83. package/dist/cli/commands/export/clone-page.d.ts +7 -0
  84. package/dist/cli/commands/export/clone-page.d.ts.map +1 -0
  85. package/dist/cli/commands/interact/check.d.ts +7 -0
  86. package/dist/cli/commands/interact/check.d.ts.map +1 -0
  87. package/dist/cli/commands/interact/click.d.ts +7 -0
  88. package/dist/cli/commands/interact/click.d.ts.map +1 -0
  89. package/dist/cli/commands/interact/hover.d.ts +7 -0
  90. package/dist/cli/commands/interact/hover.d.ts.map +1 -0
  91. package/dist/cli/commands/interact/press.d.ts +7 -0
  92. package/dist/cli/commands/interact/press.d.ts.map +1 -0
  93. package/dist/cli/commands/interact/scroll-into-view.d.ts +7 -0
  94. package/dist/cli/commands/interact/scroll-into-view.d.ts.map +1 -0
  95. package/dist/cli/commands/interact/scroll.d.ts +7 -0
  96. package/dist/cli/commands/interact/scroll.d.ts.map +1 -0
  97. package/dist/cli/commands/interact/select.d.ts +7 -0
  98. package/dist/cli/commands/interact/select.d.ts.map +1 -0
  99. package/dist/cli/commands/interact/type.d.ts +7 -0
  100. package/dist/cli/commands/interact/type.d.ts.map +1 -0
  101. package/dist/cli/commands/interact/uncheck.d.ts +7 -0
  102. package/dist/cli/commands/interact/uncheck.d.ts.map +1 -0
  103. package/dist/cli/commands/macro-resolve.d.ts +18 -0
  104. package/dist/cli/commands/macro-resolve.d.ts.map +1 -0
  105. package/dist/cli/commands/native.d.ts +82 -0
  106. package/dist/cli/commands/native.d.ts.map +1 -0
  107. package/dist/cli/commands/nav/goto.d.ts +7 -0
  108. package/dist/cli/commands/nav/goto.d.ts.map +1 -0
  109. package/dist/cli/commands/nav/snapshot.d.ts +7 -0
  110. package/dist/cli/commands/nav/snapshot.d.ts.map +1 -0
  111. package/dist/cli/commands/nav/wait.d.ts +7 -0
  112. package/dist/cli/commands/nav/wait.d.ts.map +1 -0
  113. package/dist/cli/commands/pages/close.d.ts +6 -0
  114. package/dist/cli/commands/pages/close.d.ts.map +1 -0
  115. package/dist/cli/commands/pages/list.d.ts +7 -0
  116. package/dist/cli/commands/pages/list.d.ts.map +1 -0
  117. package/dist/cli/commands/pages/open.d.ts +7 -0
  118. package/dist/cli/commands/pages/open.d.ts.map +1 -0
  119. package/dist/cli/commands/product-video.d.ts +25 -0
  120. package/dist/cli/commands/product-video.d.ts.map +1 -0
  121. package/dist/cli/commands/registry.d.ts +5 -0
  122. package/dist/cli/commands/registry.d.ts.map +1 -0
  123. package/dist/cli/commands/research.d.ts +27 -0
  124. package/dist/cli/commands/research.d.ts.map +1 -0
  125. package/dist/cli/commands/rpc.d.ts +28 -0
  126. package/dist/cli/commands/rpc.d.ts.map +1 -0
  127. package/dist/cli/commands/run.d.ts +17 -0
  128. package/dist/cli/commands/run.d.ts.map +1 -0
  129. package/dist/cli/commands/serve.d.ts +59 -0
  130. package/dist/cli/commands/serve.d.ts.map +1 -0
  131. package/dist/cli/commands/session/connect.d.ts +9 -0
  132. package/dist/cli/commands/session/connect.d.ts.map +1 -0
  133. package/dist/cli/commands/session/cookie-import.d.ts +31 -0
  134. package/dist/cli/commands/session/cookie-import.d.ts.map +1 -0
  135. package/dist/cli/commands/session/cookie-list.d.ts +17 -0
  136. package/dist/cli/commands/session/cookie-list.d.ts.map +1 -0
  137. package/dist/cli/commands/session/disconnect.d.ts +6 -0
  138. package/dist/cli/commands/session/disconnect.d.ts.map +1 -0
  139. package/dist/cli/commands/session/launch.d.ts +29 -0
  140. package/dist/cli/commands/session/launch.d.ts.map +1 -0
  141. package/dist/cli/commands/session/status.d.ts +7 -0
  142. package/dist/cli/commands/session/status.d.ts.map +1 -0
  143. package/dist/cli/commands/shopping.d.ts +25 -0
  144. package/dist/cli/commands/shopping.d.ts.map +1 -0
  145. package/dist/cli/commands/status.d.ts +19 -0
  146. package/dist/cli/commands/status.d.ts.map +1 -0
  147. package/dist/cli/commands/targets/close.d.ts +6 -0
  148. package/dist/cli/commands/targets/close.d.ts.map +1 -0
  149. package/dist/cli/commands/targets/list.d.ts +7 -0
  150. package/dist/cli/commands/targets/list.d.ts.map +1 -0
  151. package/dist/cli/commands/targets/new.d.ts +7 -0
  152. package/dist/cli/commands/targets/new.d.ts.map +1 -0
  153. package/dist/cli/commands/targets/use.d.ts +7 -0
  154. package/dist/cli/commands/targets/use.d.ts.map +1 -0
  155. package/dist/cli/commands/types.d.ts +13 -0
  156. package/dist/cli/commands/types.d.ts.map +1 -0
  157. package/dist/cli/commands/uninstall.d.ts +14 -0
  158. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  159. package/dist/cli/commands/update.d.ts +7 -0
  160. package/dist/cli/commands/update.d.ts.map +1 -0
  161. package/dist/cli/daemon-autostart.d.ts +46 -0
  162. package/dist/cli/daemon-autostart.d.ts.map +1 -0
  163. package/dist/cli/daemon-client.d.ts +33 -0
  164. package/dist/cli/daemon-client.d.ts.map +1 -0
  165. package/dist/cli/daemon-commands.d.ts +7 -0
  166. package/dist/cli/daemon-commands.d.ts.map +1 -0
  167. package/dist/cli/daemon-state.d.ts +56 -0
  168. package/dist/cli/daemon-state.d.ts.map +1 -0
  169. package/dist/cli/daemon-status.d.ts +19 -0
  170. package/dist/cli/daemon-status.d.ts.map +1 -0
  171. package/dist/cli/daemon.d.ts +29 -0
  172. package/dist/cli/daemon.d.ts.map +1 -0
  173. package/dist/cli/errors.d.ts +20 -0
  174. package/dist/cli/errors.d.ts.map +1 -0
  175. package/dist/cli/help.d.ts +28 -0
  176. package/dist/cli/help.d.ts.map +1 -0
  177. package/dist/cli/index.d.ts +2 -0
  178. package/dist/cli/index.d.ts.map +1 -0
  179. package/dist/cli/index.js +2205 -267
  180. package/dist/cli/index.js.map +1 -1
  181. package/dist/cli/installers/global.d.ts +9 -0
  182. package/dist/cli/installers/global.d.ts.map +1 -0
  183. package/dist/cli/installers/local.d.ts +9 -0
  184. package/dist/cli/installers/local.d.ts.map +1 -0
  185. package/dist/cli/installers/skills.d.ts +19 -0
  186. package/dist/cli/installers/skills.d.ts.map +1 -0
  187. package/dist/cli/output.d.ts +7 -0
  188. package/dist/cli/output.d.ts.map +1 -0
  189. package/dist/cli/remote-manager.d.ts +96 -0
  190. package/dist/cli/remote-manager.d.ts.map +1 -0
  191. package/dist/cli/remote-relay.d.ts +17 -0
  192. package/dist/cli/remote-relay.d.ts.map +1 -0
  193. package/dist/cli/templates/config.d.ts +7 -0
  194. package/dist/cli/templates/config.d.ts.map +1 -0
  195. package/dist/cli/utils/config.d.ts +20 -0
  196. package/dist/cli/utils/config.d.ts.map +1 -0
  197. package/dist/cli/utils/http.d.ts +5 -0
  198. package/dist/cli/utils/http.d.ts.map +1 -0
  199. package/dist/cli/utils/parse.d.ts +8 -0
  200. package/dist/cli/utils/parse.d.ts.map +1 -0
  201. package/dist/cli/utils/skills.d.ts +12 -0
  202. package/dist/cli/utils/skills.d.ts.map +1 -0
  203. package/dist/config.d.ts +208 -0
  204. package/dist/config.d.ts.map +1 -0
  205. package/dist/core/bootstrap.d.ts +3 -0
  206. package/dist/core/bootstrap.d.ts.map +1 -0
  207. package/dist/core/index.d.ts +3 -0
  208. package/dist/core/index.d.ts.map +1 -0
  209. package/dist/core/logging.d.ts +34 -0
  210. package/dist/core/logging.d.ts.map +1 -0
  211. package/dist/core/types.d.ts +34 -0
  212. package/dist/core/types.d.ts.map +1 -0
  213. package/dist/devtools/console-tracker.d.ts +44 -0
  214. package/dist/devtools/console-tracker.d.ts.map +1 -0
  215. package/dist/devtools/exception-tracker.d.ts +42 -0
  216. package/dist/devtools/exception-tracker.d.ts.map +1 -0
  217. package/dist/devtools/network-tracker.d.ts +34 -0
  218. package/dist/devtools/network-tracker.d.ts.map +1 -0
  219. package/dist/export/css-extract.d.ts +5 -0
  220. package/dist/export/css-extract.d.ts.map +1 -0
  221. package/dist/export/dom-capture.d.ts +15 -0
  222. package/dist/export/dom-capture.d.ts.map +1 -0
  223. package/dist/export/react-emitter.d.ts +11 -0
  224. package/dist/export/react-emitter.d.ts.map +1 -0
  225. package/dist/extension-extractor.d.ts +3 -0
  226. package/dist/extension-extractor.d.ts.map +1 -0
  227. package/dist/index.d.ts +3 -4
  228. package/dist/index.d.ts.map +1 -0
  229. package/dist/index.js +867 -87
  230. package/dist/index.js.map +1 -1
  231. package/dist/macros/execute.d.ts +44 -0
  232. package/dist/macros/execute.d.ts.map +1 -0
  233. package/dist/macros/index.d.ts +9 -0
  234. package/dist/macros/index.d.ts.map +1 -0
  235. package/dist/macros/packs/core.d.ts +3 -0
  236. package/dist/macros/packs/core.d.ts.map +1 -0
  237. package/dist/macros/registry.d.ts +48 -0
  238. package/dist/macros/registry.d.ts.map +1 -0
  239. package/dist/macros-NUBRM44Y.js +399 -0
  240. package/dist/macros-NUBRM44Y.js.map +1 -0
  241. package/dist/opendevbrowser.d.ts +3 -4
  242. package/dist/opendevbrowser.d.ts.map +1 -0
  243. package/dist/opendevbrowser.js +867 -87
  244. package/dist/opendevbrowser.js.map +1 -1
  245. package/dist/providers/adaptive-concurrency.d.ts +42 -0
  246. package/dist/providers/adaptive-concurrency.d.ts.map +1 -0
  247. package/dist/providers/artifacts.d.ts +34 -0
  248. package/dist/providers/artifacts.d.ts.map +1 -0
  249. package/dist/providers/blocker.d.ts +47 -0
  250. package/dist/providers/blocker.d.ts.map +1 -0
  251. package/dist/providers/community/index.d.ts +44 -0
  252. package/dist/providers/community/index.d.ts.map +1 -0
  253. package/dist/providers/enrichment.d.ts +33 -0
  254. package/dist/providers/enrichment.d.ts.map +1 -0
  255. package/dist/providers/errors.d.ts +41 -0
  256. package/dist/providers/errors.d.ts.map +1 -0
  257. package/dist/providers/index.d.ts +121 -0
  258. package/dist/providers/index.d.ts.map +1 -0
  259. package/dist/providers/normalize.d.ts +39 -0
  260. package/dist/providers/normalize.d.ts.map +1 -0
  261. package/dist/providers/policy.d.ts +5 -0
  262. package/dist/providers/policy.d.ts.map +1 -0
  263. package/dist/providers/registry.d.ts +22 -0
  264. package/dist/providers/registry.d.ts.map +1 -0
  265. package/dist/providers/renderer.d.ts +49 -0
  266. package/dist/providers/renderer.d.ts.map +1 -0
  267. package/dist/providers/runtime-factory.d.ts +20 -0
  268. package/dist/providers/runtime-factory.d.ts.map +1 -0
  269. package/dist/providers/safety/prompt-guard.d.ts +34 -0
  270. package/dist/providers/safety/prompt-guard.d.ts.map +1 -0
  271. package/dist/providers/shared/anti-bot-policy.d.ts +51 -0
  272. package/dist/providers/shared/anti-bot-policy.d.ts.map +1 -0
  273. package/dist/providers/shared/post-policy.d.ts +31 -0
  274. package/dist/providers/shared/post-policy.d.ts.map +1 -0
  275. package/dist/providers/shared/request-headers.d.ts +5 -0
  276. package/dist/providers/shared/request-headers.d.ts.map +1 -0
  277. package/dist/providers/shared/traversal-url.d.ts +2 -0
  278. package/dist/providers/shared/traversal-url.d.ts.map +1 -0
  279. package/dist/providers/shopping/index.d.ts +63 -0
  280. package/dist/providers/shopping/index.d.ts.map +1 -0
  281. package/dist/providers/social/bluesky.d.ts +3 -0
  282. package/dist/providers/social/bluesky.d.ts.map +1 -0
  283. package/dist/providers/social/facebook.d.ts +3 -0
  284. package/dist/providers/social/facebook.d.ts.map +1 -0
  285. package/dist/providers/social/index.d.ts +31 -0
  286. package/dist/providers/social/index.d.ts.map +1 -0
  287. package/dist/providers/social/instagram.d.ts +3 -0
  288. package/dist/providers/social/instagram.d.ts.map +1 -0
  289. package/dist/providers/social/linkedin.d.ts +3 -0
  290. package/dist/providers/social/linkedin.d.ts.map +1 -0
  291. package/dist/providers/social/platform.d.ts +40 -0
  292. package/dist/providers/social/platform.d.ts.map +1 -0
  293. package/dist/providers/social/reddit.d.ts +3 -0
  294. package/dist/providers/social/reddit.d.ts.map +1 -0
  295. package/dist/providers/social/threads.d.ts +3 -0
  296. package/dist/providers/social/threads.d.ts.map +1 -0
  297. package/dist/providers/social/tiktok.d.ts +3 -0
  298. package/dist/providers/social/tiktok.d.ts.map +1 -0
  299. package/dist/providers/social/x.d.ts +3 -0
  300. package/dist/providers/social/x.d.ts.map +1 -0
  301. package/dist/providers/social/youtube-resolver.d.ts +78 -0
  302. package/dist/providers/social/youtube-resolver.d.ts.map +1 -0
  303. package/dist/providers/social/youtube.d.ts +34 -0
  304. package/dist/providers/social/youtube.d.ts.map +1 -0
  305. package/dist/providers/tier-router.d.ts +30 -0
  306. package/dist/providers/tier-router.d.ts.map +1 -0
  307. package/dist/providers/timebox.d.ts +20 -0
  308. package/dist/providers/timebox.d.ts.map +1 -0
  309. package/dist/providers/types.d.ts +344 -0
  310. package/dist/providers/types.d.ts.map +1 -0
  311. package/dist/providers/web/crawl-worker.d.ts +36 -0
  312. package/dist/providers/web/crawl-worker.d.ts.map +1 -0
  313. package/dist/providers/web/crawler.d.ts +101 -0
  314. package/dist/providers/web/crawler.d.ts.map +1 -0
  315. package/dist/providers/web/extract.d.ts +11 -0
  316. package/dist/providers/web/extract.d.ts.map +1 -0
  317. package/dist/providers/web/index.d.ts +24 -0
  318. package/dist/providers/web/index.d.ts.map +1 -0
  319. package/dist/providers/web/policy.d.ts +14 -0
  320. package/dist/providers/web/policy.d.ts.map +1 -0
  321. package/dist/providers/workflows.d.ts +67 -0
  322. package/dist/providers/workflows.d.ts.map +1 -0
  323. package/dist/relay/protocol.d.ts +317 -0
  324. package/dist/relay/protocol.d.ts.map +1 -0
  325. package/dist/relay/relay-endpoints.d.ts +16 -0
  326. package/dist/relay/relay-endpoints.d.ts.map +1 -0
  327. package/dist/relay/relay-server.d.ts +111 -0
  328. package/dist/relay/relay-server.d.ts.map +1 -0
  329. package/dist/relay/relay-types.d.ts +9 -0
  330. package/dist/relay/relay-types.d.ts.map +1 -0
  331. package/dist/skills/continuity-nudge.d.ts +12 -0
  332. package/dist/skills/continuity-nudge.d.ts.map +1 -0
  333. package/dist/skills/skill-loader.d.ts +20 -0
  334. package/dist/skills/skill-loader.d.ts.map +1 -0
  335. package/dist/skills/skill-nudge.d.ts +18 -0
  336. package/dist/skills/skill-nudge.d.ts.map +1 -0
  337. package/dist/skills/types.d.ts +12 -0
  338. package/dist/skills/types.d.ts.map +1 -0
  339. package/dist/snapshot/ops-snapshot.d.ts +16 -0
  340. package/dist/snapshot/ops-snapshot.d.ts.map +1 -0
  341. package/dist/snapshot/refs.d.ts +23 -0
  342. package/dist/snapshot/refs.d.ts.map +1 -0
  343. package/dist/snapshot/snapshotter.d.ts +27 -0
  344. package/dist/snapshot/snapshotter.d.ts.map +1 -0
  345. package/dist/tools/annotate.d.ts +4 -0
  346. package/dist/tools/annotate.d.ts.map +1 -0
  347. package/dist/tools/check.d.ts +4 -0
  348. package/dist/tools/check.d.ts.map +1 -0
  349. package/dist/tools/click.d.ts +4 -0
  350. package/dist/tools/click.d.ts.map +1 -0
  351. package/dist/tools/clone_component.d.ts +4 -0
  352. package/dist/tools/clone_component.d.ts.map +1 -0
  353. package/dist/tools/clone_page.d.ts +4 -0
  354. package/dist/tools/clone_page.d.ts.map +1 -0
  355. package/dist/tools/close.d.ts +4 -0
  356. package/dist/tools/close.d.ts.map +1 -0
  357. package/dist/tools/connect.d.ts +4 -0
  358. package/dist/tools/connect.d.ts.map +1 -0
  359. package/dist/tools/console_poll.d.ts +4 -0
  360. package/dist/tools/console_poll.d.ts.map +1 -0
  361. package/dist/tools/cookie_import.d.ts +25 -0
  362. package/dist/tools/cookie_import.d.ts.map +1 -0
  363. package/dist/tools/cookie_list.d.ts +9 -0
  364. package/dist/tools/cookie_list.d.ts.map +1 -0
  365. package/dist/tools/debug_trace_snapshot.d.ts +4 -0
  366. package/dist/tools/debug_trace_snapshot.d.ts.map +1 -0
  367. package/dist/tools/deps.d.ts +26 -0
  368. package/dist/tools/deps.d.ts.map +1 -0
  369. package/dist/tools/disconnect.d.ts +4 -0
  370. package/dist/tools/disconnect.d.ts.map +1 -0
  371. package/dist/tools/dom_get_html.d.ts +4 -0
  372. package/dist/tools/dom_get_html.d.ts.map +1 -0
  373. package/dist/tools/dom_get_text.d.ts +4 -0
  374. package/dist/tools/dom_get_text.d.ts.map +1 -0
  375. package/dist/tools/get_attr.d.ts +4 -0
  376. package/dist/tools/get_attr.d.ts.map +1 -0
  377. package/dist/tools/get_value.d.ts +4 -0
  378. package/dist/tools/get_value.d.ts.map +1 -0
  379. package/dist/tools/goto.d.ts +4 -0
  380. package/dist/tools/goto.d.ts.map +1 -0
  381. package/dist/tools/hover.d.ts +4 -0
  382. package/dist/tools/hover.d.ts.map +1 -0
  383. package/dist/tools/index.d.ts +4 -0
  384. package/dist/tools/index.d.ts.map +1 -0
  385. package/dist/tools/is_checked.d.ts +4 -0
  386. package/dist/tools/is_checked.d.ts.map +1 -0
  387. package/dist/tools/is_enabled.d.ts +4 -0
  388. package/dist/tools/is_enabled.d.ts.map +1 -0
  389. package/dist/tools/is_visible.d.ts +4 -0
  390. package/dist/tools/is_visible.d.ts.map +1 -0
  391. package/dist/tools/launch.d.ts +4 -0
  392. package/dist/tools/launch.d.ts.map +1 -0
  393. package/dist/tools/list.d.ts +4 -0
  394. package/dist/tools/list.d.ts.map +1 -0
  395. package/dist/tools/macro_resolve.d.ts +25 -0
  396. package/dist/tools/macro_resolve.d.ts.map +1 -0
  397. package/dist/tools/network_poll.d.ts +4 -0
  398. package/dist/tools/network_poll.d.ts.map +1 -0
  399. package/dist/tools/page.d.ts +4 -0
  400. package/dist/tools/page.d.ts.map +1 -0
  401. package/dist/tools/perf.d.ts +4 -0
  402. package/dist/tools/perf.d.ts.map +1 -0
  403. package/dist/tools/press.d.ts +4 -0
  404. package/dist/tools/press.d.ts.map +1 -0
  405. package/dist/tools/product_video_run.d.ts +4 -0
  406. package/dist/tools/product_video_run.d.ts.map +1 -0
  407. package/dist/tools/prompting_guide.d.ts +4 -0
  408. package/dist/tools/prompting_guide.d.ts.map +1 -0
  409. package/dist/tools/research_run.d.ts +4 -0
  410. package/dist/tools/research_run.d.ts.map +1 -0
  411. package/dist/tools/response.d.ts +16 -0
  412. package/dist/tools/response.d.ts.map +1 -0
  413. package/dist/tools/run.d.ts +4 -0
  414. package/dist/tools/run.d.ts.map +1 -0
  415. package/dist/tools/screenshot.d.ts +4 -0
  416. package/dist/tools/screenshot.d.ts.map +1 -0
  417. package/dist/tools/scroll.d.ts +4 -0
  418. package/dist/tools/scroll.d.ts.map +1 -0
  419. package/dist/tools/scroll_into_view.d.ts +4 -0
  420. package/dist/tools/scroll_into_view.d.ts.map +1 -0
  421. package/dist/tools/select.d.ts +4 -0
  422. package/dist/tools/select.d.ts.map +1 -0
  423. package/dist/tools/shopping_run.d.ts +4 -0
  424. package/dist/tools/shopping_run.d.ts.map +1 -0
  425. package/dist/tools/skill_list.d.ts +4 -0
  426. package/dist/tools/skill_list.d.ts.map +1 -0
  427. package/dist/tools/skill_load.d.ts +4 -0
  428. package/dist/tools/skill_load.d.ts.map +1 -0
  429. package/dist/tools/snapshot.d.ts +4 -0
  430. package/dist/tools/snapshot.d.ts.map +1 -0
  431. package/dist/tools/status.d.ts +4 -0
  432. package/dist/tools/status.d.ts.map +1 -0
  433. package/dist/tools/target_close.d.ts +4 -0
  434. package/dist/tools/target_close.d.ts.map +1 -0
  435. package/dist/tools/target_new.d.ts +4 -0
  436. package/dist/tools/target_new.d.ts.map +1 -0
  437. package/dist/tools/target_use.d.ts +4 -0
  438. package/dist/tools/target_use.d.ts.map +1 -0
  439. package/dist/tools/targets_list.d.ts +4 -0
  440. package/dist/tools/targets_list.d.ts.map +1 -0
  441. package/dist/tools/type.d.ts +4 -0
  442. package/dist/tools/type.d.ts.map +1 -0
  443. package/dist/tools/uncheck.d.ts +4 -0
  444. package/dist/tools/uncheck.d.ts.map +1 -0
  445. package/dist/tools/wait.d.ts +4 -0
  446. package/dist/tools/wait.d.ts.map +1 -0
  447. package/dist/tools/workflow-runtime.d.ts +4 -0
  448. package/dist/tools/workflow-runtime.d.ts.map +1 -0
  449. package/dist/utils/crypto.d.ts +2 -0
  450. package/dist/utils/crypto.d.ts.map +1 -0
  451. package/dist/utils/endpoint-validation.d.ts +2 -0
  452. package/dist/utils/endpoint-validation.d.ts.map +1 -0
  453. package/dist/utils/fs.d.ts +5 -0
  454. package/dist/utils/fs.d.ts.map +1 -0
  455. package/dist/utils/hub-enabled.d.ts +3 -0
  456. package/dist/utils/hub-enabled.d.ts.map +1 -0
  457. package/extension/dist/background.js +10 -4
  458. package/extension/dist/ops/ops-runtime.js +506 -4
  459. package/extension/dist/ops/ops-session-store.js +16 -2
  460. package/extension/dist/ops/parallelism-governor.js +117 -0
  461. package/extension/dist/ops/snapshot-shared.js +21 -5
  462. package/extension/dist/services/CDPRouter.js +70 -5
  463. package/extension/dist/services/ConnectionManager.js +5 -3
  464. package/extension/icons/icon128.png +0 -0
  465. package/extension/icons/icon16.png +0 -0
  466. package/extension/icons/icon32.png +0 -0
  467. package/extension/icons/icon48.png +0 -0
  468. package/extension/manifest.json +1 -1
  469. package/package.json +25 -16
  470. package/scripts/native/host.cjs +230 -0
  471. package/scripts/native/install.ps1 +73 -0
  472. package/scripts/native/install.sh +66 -0
  473. package/scripts/native/uninstall.ps1 +25 -0
  474. package/scripts/native/uninstall.sh +26 -0
  475. package/skills/AGENTS.md +17 -8
  476. package/skills/opendevbrowser-best-practices/SKILL.md +178 -72
  477. package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +44 -0
  478. package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +95 -0
  479. package/skills/opendevbrowser-best-practices/artifacts/debug-trace-playbook.md +36 -0
  480. package/skills/opendevbrowser-best-practices/artifacts/fingerprint-tiers.md +36 -0
  481. package/skills/opendevbrowser-best-practices/artifacts/macro-workflows.md +43 -0
  482. package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +36 -0
  483. package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +89 -0
  484. package/skills/opendevbrowser-best-practices/assets/templates/cdp-forward-envelope.json +11 -0
  485. package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +56 -0
  486. package/skills/opendevbrowser-best-practices/assets/templates/ops-request-envelope.json +9 -0
  487. package/skills/opendevbrowser-best-practices/assets/templates/robustness-checklist.json +79 -0
  488. package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +24 -0
  489. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +144 -0
  490. package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +83 -0
  491. package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +93 -0
  492. package/skills/opendevbrowser-continuity-ledger/SKILL.md +10 -0
  493. package/skills/opendevbrowser-data-extraction/SKILL.md +126 -0
  494. package/skills/opendevbrowser-data-extraction/artifacts/extraction-workflows.md +31 -0
  495. package/skills/opendevbrowser-data-extraction/assets/templates/compliance-checklist.md +7 -0
  496. package/skills/opendevbrowser-data-extraction/assets/templates/extraction-schema.json +17 -0
  497. package/skills/opendevbrowser-data-extraction/assets/templates/pagination-state.json +11 -0
  498. package/skills/opendevbrowser-data-extraction/assets/templates/quality-gates.json +10 -0
  499. package/skills/opendevbrowser-data-extraction/examples/sample-schema.json +19 -0
  500. package/skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh +83 -0
  501. package/skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh +49 -0
  502. package/skills/opendevbrowser-form-testing/SKILL.md +143 -0
  503. package/skills/opendevbrowser-form-testing/artifacts/form-workflows.md +37 -0
  504. package/skills/opendevbrowser-form-testing/assets/templates/a11y-assertions.md +7 -0
  505. package/skills/opendevbrowser-form-testing/assets/templates/challenge-decision-tree.json +16 -0
  506. package/skills/opendevbrowser-form-testing/assets/templates/multi-step-state.json +11 -0
  507. package/skills/opendevbrowser-form-testing/assets/templates/validation-matrix.json +24 -0
  508. package/skills/opendevbrowser-form-testing/examples/sample-validation-matrix.json +29 -0
  509. package/skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh +82 -0
  510. package/skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh +49 -0
  511. package/skills/opendevbrowser-login-automation/SKILL.md +159 -0
  512. package/skills/opendevbrowser-login-automation/artifacts/login-workflows.md +39 -0
  513. package/skills/opendevbrowser-login-automation/assets/templates/auth-signals.json +21 -0
  514. package/skills/opendevbrowser-login-automation/assets/templates/challenge-checkpoint.md +10 -0
  515. package/skills/opendevbrowser-login-automation/assets/templates/login-scenario-matrix.json +26 -0
  516. package/skills/opendevbrowser-login-automation/examples/sample-auth-signals.json +14 -0
  517. package/skills/opendevbrowser-login-automation/scripts/record-auth-signals.sh +18 -0
  518. package/skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh +99 -0
  519. package/skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh +50 -0
  520. package/skills/opendevbrowser-product-presentation-asset/SKILL.md +98 -0
  521. package/skills/opendevbrowser-product-presentation-asset/artifacts/asset-pack-assembly.md +23 -0
  522. package/skills/opendevbrowser-product-presentation-asset/artifacts/ugc-creative-guide.md +21 -0
  523. package/skills/opendevbrowser-product-presentation-asset/assets/templates/claims-evidence-map.md +5 -0
  524. package/skills/opendevbrowser-product-presentation-asset/assets/templates/copy.md +5 -0
  525. package/skills/opendevbrowser-product-presentation-asset/assets/templates/features.md +4 -0
  526. package/skills/opendevbrowser-product-presentation-asset/assets/templates/manifest.schema.json +14 -0
  527. package/skills/opendevbrowser-product-presentation-asset/assets/templates/shot-list.md +7 -0
  528. package/skills/opendevbrowser-product-presentation-asset/assets/templates/ugc-concepts.md +17 -0
  529. package/skills/opendevbrowser-product-presentation-asset/assets/templates/user-actions.md +7 -0
  530. package/skills/opendevbrowser-product-presentation-asset/assets/templates/video-assembly.md +18 -0
  531. package/skills/opendevbrowser-product-presentation-asset/examples/sample-input.json +6 -0
  532. package/skills/opendevbrowser-product-presentation-asset/examples/sample-manifest.json +18 -0
  533. package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +9 -0
  534. package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +14 -0
  535. package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +9 -0
  536. package/skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh +96 -0
  537. package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +56 -0
  538. package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +43 -0
  539. package/skills/opendevbrowser-research/SKILL.md +73 -0
  540. package/skills/opendevbrowser-research/artifacts/research-workflows.md +29 -0
  541. package/skills/opendevbrowser-research/assets/templates/compact.md +7 -0
  542. package/skills/opendevbrowser-research/assets/templates/context.json +18 -0
  543. package/skills/opendevbrowser-research/assets/templates/report.md +9 -0
  544. package/skills/opendevbrowser-research/examples/sample-input.json +6 -0
  545. package/skills/opendevbrowser-research/examples/sample-output.md +4 -0
  546. package/skills/opendevbrowser-research/scripts/render-output.sh +12 -0
  547. package/skills/opendevbrowser-research/scripts/run-research.sh +23 -0
  548. package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +48 -0
  549. package/skills/opendevbrowser-research/scripts/write-artifacts.sh +29 -0
  550. package/skills/opendevbrowser-shopping/SKILL.md +118 -0
  551. package/skills/opendevbrowser-shopping/artifacts/deal-hunting-workflows.md +37 -0
  552. package/skills/opendevbrowser-shopping/assets/templates/deal-thresholds.json +8 -0
  553. package/skills/opendevbrowser-shopping/assets/templates/deals-context.json +9 -0
  554. package/skills/opendevbrowser-shopping/assets/templates/deals-table.md +4 -0
  555. package/skills/opendevbrowser-shopping/assets/templates/market-analysis.json +30 -0
  556. package/skills/opendevbrowser-shopping/examples/sample-deals.md +4 -0
  557. package/skills/opendevbrowser-shopping/examples/sample-query.json +5 -0
  558. package/skills/opendevbrowser-shopping/scripts/analyze-market.sh +307 -0
  559. package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +28 -0
  560. package/skills/opendevbrowser-shopping/scripts/render-deals.sh +13 -0
  561. package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +32 -0
  562. package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +19 -0
  563. package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +53 -0
  564. package/dist/chunk-JVBMT2O5.js +0 -7173
  565. package/dist/chunk-JVBMT2O5.js.map +0 -1
  566. package/skills/data-extraction/SKILL.md +0 -128
  567. package/skills/form-testing/SKILL.md +0 -106
  568. package/skills/login-automation/SKILL.md +0 -108
@@ -0,0 +1,143 @@
1
+ ---
2
+ name: opendevbrowser-form-testing
3
+ description: This skill should be used when the user asks to "test a form", "verify validation", "check submission behavior", "test multi-step forms", or "debug form errors" with OpenDevBrowser.
4
+ version: 2.0.0
5
+ ---
6
+
7
+ # Form Testing Skill
8
+
9
+ Use this skill for robust form automation across dynamic, multi-step, challenge-protected, and accessibility-critical flows.
10
+
11
+ ## Pack Contents
12
+
13
+ - `artifacts/form-workflows.md`
14
+ - `assets/templates/validation-matrix.json`
15
+ - `assets/templates/challenge-decision-tree.json`
16
+ - `assets/templates/a11y-assertions.md`
17
+ - `assets/templates/multi-step-state.json`
18
+ - `scripts/run-form-workflow.sh`
19
+ - `scripts/validate-skill-assets.sh`
20
+ - Shared robustness matrix: `../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md`
21
+
22
+ ## Fast Start
23
+
24
+ ```bash
25
+ ./skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh
26
+ ./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh validation
27
+ ./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh multi-step
28
+ ./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh challenge-checkpoint
29
+ ```
30
+
31
+ ## Core Rules
32
+
33
+ - Snapshot first, then act.
34
+ - Keep one field mutation per decision loop in failure analysis.
35
+ - Re-snapshot after each invalid submit to avoid stale refs.
36
+ - Verify both UX and network behavior for each submission branch.
37
+ - Keep challenge retries bounded and honor `Retry-After` when 429 pressure appears.
38
+
39
+ ## Parallel Multitab Alignment
40
+
41
+ - Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
42
+ - Validate form workflows in `managed`, `extension`, and `cdpConnect` paths before parity sign-off.
43
+ - Keep one session per worker and avoid alternating `target-use` inside one command stream.
44
+
45
+ ## Robustness Coverage (Known-Issue Matrix)
46
+
47
+ Matrix source: `../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md`
48
+
49
+ - `ISSUE-01`: stale refs after dynamic validation rerenders
50
+ - `ISSUE-02`: iframe challenge or embedded payment/auth forms
51
+ - `ISSUE-05`: anti-bot checkpoint loops on submit
52
+ - `ISSUE-06`: rate-limit/backoff behavior
53
+ - `ISSUE-08`: restricted origin or unsupported test surface
54
+
55
+ ## Form Coverage Matrix
56
+
57
+ Cover at least:
58
+ - required/optional fields
59
+ - format/pattern constraints
60
+ - numeric and length boundaries
61
+ - dependent and conditional sections
62
+ - disabled/enabled transitions
63
+ - server-side rejection paths
64
+
65
+ Use the matrix template in `assets/templates/validation-matrix.json`.
66
+
67
+ | Validation area | Minimal assertion | Evidence capture |
68
+ | --- | --- | --- |
69
+ | Required vs optional | Empty required field blocks submit; optional field allows submit | `snapshot`, inline error text, submit request status |
70
+ | Format and pattern | Invalid format shows field error and keeps form invalid | `dom_get_text`, `get_attr aria-invalid`, request payload |
71
+ | Numeric and length bounds | Min/max boundaries are enforced consistently client+server | field value checks, server response body |
72
+ | Conditional sections | Dependent fields appear/disappear with correct state reset | before/after snapshots, visibility checks |
73
+ | Disabled/enabled transitions | Submit only enables when constraints are satisfied | `is_enabled`, transition snapshots |
74
+ | Server-side rejection | Backend validation errors map to correct field/global errors | `network_poll`, rendered error copy |
75
+
76
+ ## Canonical Validation Flow
77
+
78
+ ```text
79
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
80
+ opendevbrowser_type sessionId="<session-id>" ref="<field-ref>" text=""
81
+ opendevbrowser_click sessionId="<session-id>" ref="<submit-ref>"
82
+ opendevbrowser_snapshot sessionId="<session-id>" format="outline"
83
+ opendevbrowser_dom_get_text sessionId="<session-id>" ref="<error-ref>"
84
+ ```
85
+
86
+ ## Accessibility Assertions
87
+
88
+ Validate error handling semantics:
89
+ - error text bound to invalid field
90
+ - `aria-invalid="true"` when invalid
91
+ - keyboard focus on first invalid field when applicable
92
+ - labels/instructions remain programmatically associated
93
+
94
+ ```text
95
+ opendevbrowser_get_attr sessionId="<session-id>" ref="<field-ref>" name="aria-invalid"
96
+ opendevbrowser_get_attr sessionId="<session-id>" ref="<field-ref>" name="aria-describedby"
97
+ ```
98
+
99
+ ## Anti-Bot and Challenge Branches
100
+
101
+ For forms guarded by challenge providers:
102
+
103
+ 1. Detect challenge widget/frame state.
104
+ 2. Mark manual checkpoint in run log.
105
+ 3. Complete challenge manually or by approved test key in non-production.
106
+ 4. Resume from fresh snapshot and continue validation.
107
+
108
+ Do not implement challenge bypass behavior.
109
+
110
+ Loop guardrail:
111
+ - Stop after 2 repeated challenge checkpoints without forward progress.
112
+ - Capture network evidence and escalate as blocker.
113
+
114
+ ## Multi-Step and Conditional Forms
115
+
116
+ For wizard flows:
117
+ 1. validate current step
118
+ 2. submit and wait for next-step container ref
119
+ 3. assert state carryover from prior step
120
+ 4. finalize and validate confirmation payload
121
+
122
+ Use `assets/templates/multi-step-state.json` to track progression.
123
+
124
+ ## Network Correlation
125
+
126
+ Always poll and inspect submit requests:
127
+
128
+ ```text
129
+ opendevbrowser_network_poll sessionId="<session-id>" max=50
130
+ ```
131
+
132
+ Flag mismatch cases:
133
+ - UI shows success but network fails
134
+ - UI hides server validation errors
135
+ - repeated 429/403 challenge pressure on submit endpoint
136
+
137
+ ## References
138
+
139
+ - Playwright best practices: https://playwright.dev/docs/best-practices
140
+ - WCAG 2.2 (Input assistance + accessible authentication): https://www.w3.org/TR/WCAG22/
141
+ - Cloudflare Turnstile testing: https://developers.cloudflare.com/turnstile/tutorials/testing/
142
+ - reCAPTCHA v2 test keys: https://developers.google.com/recaptcha/docs/faq
143
+ - hCaptcha test keys: https://docs.hcaptcha.com/
@@ -0,0 +1,37 @@
1
+ # Form Workflows
2
+
3
+ ## Validation workflow
4
+
5
+ 1. Discover refs
6
+ 2. Run negative matrix cases
7
+ 3. Assert field-level and summary errors
8
+ 4. Run positive submission path
9
+ 5. Re-snapshot after each submit branch
10
+
11
+ ## Multi-step workflow
12
+
13
+ 1. Validate each step in isolation
14
+ 2. Preserve and verify carried values
15
+ 3. Validate final confirmation state and IDs
16
+
17
+ ## Dynamic requirement workflow
18
+
19
+ 1. Trigger conditional sections (toggles/selectors)
20
+ 2. Re-snapshot and discover newly required fields
21
+ 3. Validate requiredness transitions and submit gating
22
+ 4. Verify hidden fields are not submitted unexpectedly
23
+
24
+ ## File upload workflow
25
+
26
+ 1. Validate accepted type/size constraints
27
+ 2. Validate invalid file rejection path
28
+ 3. Validate success path and server response correlation
29
+ 4. Confirm upload state survives step transitions
30
+
31
+ ## Challenge checkpoint workflow
32
+
33
+ 1. Detect challenge state
34
+ 2. Pause and annotate checkpoint
35
+ 3. Resume after manual completion
36
+ 4. Continue assertions from refreshed snapshot
37
+ 5. Stop and escalate after repeated challenge loops
@@ -0,0 +1,7 @@
1
+ # Accessibility Assertions
2
+
3
+ - Field has associated label
4
+ - Error message is specific and linked (`aria-describedby`)
5
+ - Invalid state uses `aria-invalid="true"`
6
+ - Focus moves to first invalid field after submit
7
+ - Keyboard-only path can complete correction and submit
@@ -0,0 +1,16 @@
1
+ {
2
+ "challenge_detected": false,
3
+ "provider": "unknown",
4
+ "issue_ids": [
5
+ "ISSUE-02",
6
+ "ISSUE-05",
7
+ "ISSUE-06"
8
+ ],
9
+ "action": "manual_checkpoint",
10
+ "max_challenge_retries": 2,
11
+ "retry_after_seconds": 0,
12
+ "resume_conditions": [
13
+ "challenge_cleared",
14
+ "new_snapshot_taken"
15
+ ]
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "flow": "",
3
+ "step_index": 0,
4
+ "step_name": "",
5
+ "completed_steps": [],
6
+ "carried_state": {},
7
+ "final_confirmation": {
8
+ "seen": false,
9
+ "reference_id": ""
10
+ }
11
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "form": "",
3
+ "fields": [
4
+ {
5
+ "name": "",
6
+ "type": "text",
7
+ "required": true,
8
+ "cases": [
9
+ "empty",
10
+ "whitespace",
11
+ "out_of_range",
12
+ "valid"
13
+ ]
14
+ }
15
+ ],
16
+ "conditional_cases": [
17
+ "becomes_required_after_toggle",
18
+ "hidden_field_not_submitted"
19
+ ],
20
+ "submit_cases": [
21
+ "invalid_blocked",
22
+ "valid_success"
23
+ ]
24
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "form": "checkout",
3
+ "fields": [
4
+ {
5
+ "name": "email",
6
+ "type": "email",
7
+ "required": true,
8
+ "cases": [
9
+ "empty",
10
+ "invalid_format",
11
+ "valid"
12
+ ]
13
+ },
14
+ {
15
+ "name": "postal_code",
16
+ "type": "text",
17
+ "required": true,
18
+ "cases": [
19
+ "too_short",
20
+ "invalid_charset",
21
+ "valid"
22
+ ]
23
+ }
24
+ ],
25
+ "submit_cases": [
26
+ "invalid_blocked",
27
+ "valid_success"
28
+ ]
29
+ }
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ print_help() {
5
+ cat <<'HELP'
6
+ Form testing workflow router
7
+
8
+ Usage:
9
+ ./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh <workflow>
10
+
11
+ Workflows:
12
+ discovery
13
+ validation
14
+ multi-step
15
+ dynamic-required
16
+ file-upload
17
+ challenge-checkpoint
18
+ list
19
+ HELP
20
+ }
21
+
22
+ workflow="${1:-list}"
23
+
24
+ case "$workflow" in
25
+ list)
26
+ print_help
27
+ ;;
28
+ discovery)
29
+ cat <<'FLOW'
30
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
31
+ # map refs for all inputs, toggles, and submit controls
32
+ FLOW
33
+ ;;
34
+ validation)
35
+ cat <<'FLOW'
36
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
37
+ opendevbrowser_type sessionId="<session-id>" ref="<field-ref>" text=""
38
+ opendevbrowser_click sessionId="<session-id>" ref="<submit-ref>"
39
+ opendevbrowser_snapshot sessionId="<session-id>" format="outline"
40
+ opendevbrowser_dom_get_text sessionId="<session-id>" ref="<error-ref>"
41
+ opendevbrowser_get_attr sessionId="<session-id>" ref="<field-ref>" name="aria-invalid"
42
+ FLOW
43
+ ;;
44
+ multi-step)
45
+ cat <<'FLOW'
46
+ # validate each step, then continue
47
+ opendevbrowser_click sessionId="<session-id>" ref="<next-step-ref>"
48
+ opendevbrowser_wait sessionId="<session-id>" ref="<step-container-ref>" state="visible"
49
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
50
+ FLOW
51
+ ;;
52
+ dynamic-required)
53
+ cat <<'FLOW'
54
+ # Trigger conditional branch then re-snapshot for updated requirements.
55
+ opendevbrowser_click sessionId="<session-id>" ref="<toggle-ref>"
56
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
57
+ opendevbrowser_click sessionId="<session-id>" ref="<submit-ref>"
58
+ opendevbrowser_snapshot sessionId="<session-id>" format="outline"
59
+ FLOW
60
+ ;;
61
+ file-upload)
62
+ cat <<'FLOW'
63
+ # Validate upload constraints and submission behavior.
64
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
65
+ opendevbrowser_click sessionId="<session-id>" ref="<file-input-ref>"
66
+ opendevbrowser_network_poll sessionId="<session-id>" max=50
67
+ FLOW
68
+ ;;
69
+ challenge-checkpoint)
70
+ cat <<'FLOW'
71
+ # if challenge is detected, pause automation and resume after manual completion
72
+ opendevbrowser_snapshot sessionId="<session-id>" format="outline"
73
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
74
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
75
+ FLOW
76
+ ;;
77
+ *)
78
+ echo "Unknown workflow: $workflow" >&2
79
+ print_help
80
+ exit 2
81
+ ;;
82
+ esac
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
+ skill_file="$root/SKILL.md"
6
+
7
+ required=(
8
+ "artifacts/form-workflows.md"
9
+ "assets/templates/validation-matrix.json"
10
+ "assets/templates/challenge-decision-tree.json"
11
+ "assets/templates/a11y-assertions.md"
12
+ "assets/templates/multi-step-state.json"
13
+ "scripts/run-form-workflow.sh"
14
+ "scripts/validate-skill-assets.sh"
15
+ )
16
+
17
+ status=0
18
+ for rel in "${required[@]}"; do
19
+ if [[ ! -f "$root/$rel" ]]; then
20
+ echo "Missing required asset: $rel" >&2
21
+ status=1
22
+ fi
23
+ if ! grep -Fq "$rel" "$skill_file"; then
24
+ echo "SKILL.md missing reference: $rel" >&2
25
+ status=1
26
+ fi
27
+ done
28
+
29
+ for rel in scripts/run-form-workflow.sh scripts/validate-skill-assets.sh; do
30
+ if [[ -f "$root/$rel" && ! -x "$root/$rel" ]]; then
31
+ echo "Script is not executable: $rel" >&2
32
+ status=1
33
+ fi
34
+ done
35
+
36
+ for rel in assets/templates/validation-matrix.json assets/templates/challenge-decision-tree.json assets/templates/multi-step-state.json; do
37
+ if [[ -f "$root/$rel" ]]; then
38
+ if ! node -e 'const fs=require("fs"); JSON.parse(fs.readFileSync(process.argv[1], "utf8"));' "$root/$rel" >/dev/null 2>&1; then
39
+ echo "Invalid JSON template: $rel" >&2
40
+ status=1
41
+ fi
42
+ fi
43
+ done
44
+
45
+ if [[ $status -ne 0 ]]; then
46
+ exit $status
47
+ fi
48
+
49
+ echo "Form testing skill assets validated."
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: opendevbrowser-login-automation
3
+ description: This skill should be used when the user asks to "automate login", "test authentication", "sign in programmatically", "validate login errors", or "verify session persistence" with OpenDevBrowser.
4
+ version: 2.0.0
5
+ ---
6
+
7
+ # Login Automation Skill
8
+
9
+ Use this skill for deterministic auth testing that handles MFA and anti-bot checkpoints without unsafe bypass patterns.
10
+
11
+ ## Pack Contents
12
+
13
+ - `artifacts/login-workflows.md`
14
+ - `assets/templates/login-scenario-matrix.json`
15
+ - `assets/templates/challenge-checkpoint.md`
16
+ - `assets/templates/auth-signals.json`
17
+ - `scripts/run-login-workflow.sh`
18
+ - `scripts/record-auth-signals.sh`
19
+ - `scripts/validate-skill-assets.sh`
20
+ - Shared robustness matrix: `../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md`
21
+
22
+ ## Fast Start
23
+
24
+ 1. Validate pack integrity.
25
+
26
+ ```bash
27
+ ./skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh
28
+ ```
29
+
30
+ 2. Print a ready workflow.
31
+
32
+ ```bash
33
+ ./skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh password
34
+ ./skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh mfa
35
+ ./skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh challenge-checkpoint
36
+ ```
37
+
38
+ ## Core Rules
39
+
40
+ - Use snapshot refs, not ad-hoc selectors.
41
+ - Run one decision loop at a time: snapshot -> action -> snapshot.
42
+ - Never store credentials in skill files, logs, screenshots, or committed fixtures.
43
+ - Treat anti-bot challenges as checkpoints (manual solve or approved test keys), not bypass targets.
44
+ - Keep a bounded retry budget (max 2 automated retries) and honor `Retry-After` when present.
45
+
46
+ ## Parallel Multitab Alignment
47
+
48
+ - Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
49
+ - Validate login paths across `managed`, `extension`, and `cdpConnect` before parity sign-off.
50
+ - Treat extension headless attempts as expected `unsupported_mode`; do not force unsupported auth runs.
51
+
52
+ ## Robustness Coverage (Known-Issue Matrix)
53
+
54
+ Matrix source: `../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md`
55
+
56
+ - `ISSUE-01`: stale refs / DOM churn
57
+ - `ISSUE-02`: challenge or SSO iframe boundaries
58
+ - `ISSUE-03`: popup/new-tab SSO redirects
59
+ - `ISSUE-04`: MFA/session step-up branching
60
+ - `ISSUE-05`: anti-bot challenge loops
61
+ - `ISSUE-06`: 429/backoff discipline
62
+ - `ISSUE-07`: extension readiness on resume
63
+
64
+ ## Challenge-Aware Flow
65
+
66
+ 1. Preflight: goto login page, wait, snapshot actionables.
67
+ 2. Enter identifier and password.
68
+ 3. Submit once.
69
+ 4. Branch by observed state:
70
+ - authenticated shell appears -> success validation
71
+ - MFA prompt appears -> continue MFA branch
72
+ - popup/new-tab SSO appears -> switch target and continue auth branch
73
+ - anti-bot challenge appears -> checkpoint branch
74
+ - invalid credentials or lockout message -> failure branch
75
+
76
+ ```text
77
+ opendevbrowser_goto sessionId="<session-id>" url="https://example.com/login"
78
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
79
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
80
+ opendevbrowser_type sessionId="<session-id>" ref="<identifier-ref>" text="<resolved-identifier>"
81
+ opendevbrowser_type sessionId="<session-id>" ref="<password-ref>" text="<resolved-password>"
82
+ opendevbrowser_click sessionId="<session-id>" ref="<submit-ref>"
83
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
84
+ opendevbrowser_snapshot sessionId="<session-id>" format="outline"
85
+ ```
86
+
87
+ ## Anti-Bot Checkpoint Pattern
88
+
89
+ Use this when CAPTCHA/turnstile/challenge pages appear.
90
+
91
+ 1. Detect challenge UI from snapshot refs or page text.
92
+ 2. Pause automation and mark checkpoint in run log.
93
+ 3. Complete challenge manually (or with provider-approved test key in non-production).
94
+ 4. Resume from a fresh snapshot and continue auth validation.
95
+
96
+ Signals to monitor:
97
+ - challenge iframe/widget visible
98
+ - error copy like "verify you are human"
99
+ - repeated 403/429 responses on auth endpoints
100
+ - repeated challenge pages after resume (loop condition)
101
+
102
+ Challenge loop guardrail:
103
+ - After 2 challenge checkpoints without success, stop automation and escalate.
104
+ - If `Retry-After` is available, wait at least that duration before any retry.
105
+
106
+ ## MFA Pattern
107
+
108
+ 1. Submit primary credentials.
109
+ 2. Wait for OTP/passkey/TOTP ref visibility.
110
+ 3. Enter second factor.
111
+ 4. Submit and validate authenticated state.
112
+
113
+ ```text
114
+ opendevbrowser_wait sessionId="<session-id>" ref="<mfa-input-ref>" state="visible"
115
+ opendevbrowser_type sessionId="<session-id>" ref="<mfa-input-ref>" text="<resolved-otp>"
116
+ opendevbrowser_click sessionId="<session-id>" ref="<mfa-submit-ref>"
117
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
118
+ ```
119
+
120
+ ## Validation Signals
121
+
122
+ Validate at least two independent signals:
123
+
124
+ - URL/route transition to authenticated area.
125
+ - Auth-only element visible (`opendevbrowser_is_visible`).
126
+ - Auth request success from `opendevbrowser_network_poll`.
127
+
128
+ ```text
129
+ opendevbrowser_network_poll sessionId="<session-id>" max=50
130
+ ```
131
+
132
+ ## Session Persistence and Reauth
133
+
134
+ Use persistent profiles for remember-me checks:
135
+
136
+ ```text
137
+ opendevbrowser_launch profile="auth-test" persistProfile=true noExtension=true
138
+ ```
139
+
140
+ Close and relaunch, then confirm one of:
141
+ - still authenticated without credential prompt
142
+ - intentionally forced reauth policy was applied
143
+
144
+ ## Failure Modes
145
+
146
+ - Invalid credentials: assert explicit field/banner errors.
147
+ - Rate limit/lockout: stop retries, apply cooldown, rotate test account.
148
+ - Challenge loop: escalate as anti-bot pressure issue.
149
+ - MFA unavailable for test account: mark incomplete test prerequisite.
150
+
151
+ ## References
152
+
153
+ Use these sources when tuning login automation behavior:
154
+ - Playwright auth guide: https://playwright.dev/docs/auth
155
+ - OWASP Authentication Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html
156
+ - NIST SP 800-63B (Digital Identity): https://pages.nist.gov/800-63-4/sp800-63b.html
157
+ - Cloudflare Turnstile testing keys: https://developers.cloudflare.com/turnstile/tutorials/testing/
158
+ - reCAPTCHA v2 testing keys: https://developers.google.com/recaptcha/docs/faq
159
+ - hCaptcha test keys: https://docs.hcaptcha.com/
@@ -0,0 +1,39 @@
1
+ # Login Workflows
2
+
3
+ ## Password-only workflow
4
+
5
+ 1. Preflight snapshot
6
+ 2. Type identifier/password
7
+ 3. Submit
8
+ 4. Validate URL + auth-only ref + network status
9
+ 5. Re-snapshot before any follow-up action
10
+
11
+ ## MFA workflow
12
+
13
+ 1. Run password-only steps
14
+ 2. Wait for MFA field
15
+ 3. Submit second factor
16
+ 4. Validate session issuance
17
+
18
+ ## SSO popup/new-tab workflow
19
+
20
+ 1. Trigger SSO action from login page
21
+ 2. Detect target/page change
22
+ 3. Continue auth on active SSO target
23
+ 4. Validate return to original app shell
24
+ 5. Rebind refs from fresh snapshot
25
+
26
+ ## Challenge checkpoint workflow
27
+
28
+ 1. Detect challenge state
29
+ 2. Record checkpoint with timestamp and trigger
30
+ 3. Pause automated actions
31
+ 4. Resume after challenge completion from fresh snapshot
32
+ 5. If challenge repeats twice, stop and escalate as anti-bot pressure
33
+
34
+ ## Lockout recovery workflow
35
+
36
+ 1. Detect lockout or throttling banner
37
+ 2. Stop retry loop
38
+ 3. Record cooldown window/account status and `Retry-After` if present
39
+ 4. Resume with different account or after wait window
@@ -0,0 +1,21 @@
1
+ {
2
+ "session_id": "",
3
+ "url_before": "",
4
+ "url_after": "",
5
+ "auth_element_ref": "",
6
+ "auth_element_visible": false,
7
+ "network": {
8
+ "login_request_seen": false,
9
+ "status_codes": [],
10
+ "retry_after_seconds": 0
11
+ },
12
+ "frames_seen": 0,
13
+ "popup_detected": false,
14
+ "challenge_detected": false,
15
+ "challenge_type": "none",
16
+ "challenge_checkpoint_count": 0,
17
+ "mfa_detected": false,
18
+ "mfa_method": "unknown",
19
+ "issue_ids": [],
20
+ "result": "unknown"
21
+ }
@@ -0,0 +1,10 @@
1
+ # Challenge Checkpoint
2
+
3
+ - Session ID:
4
+ - URL:
5
+ - Timestamp (UTC):
6
+ - Challenge type (turnstile/recaptcha/hcaptcha/other):
7
+ - Trigger signal:
8
+ - Manual action taken:
9
+ - Resume timestamp:
10
+ - Post-resume outcome:
@@ -0,0 +1,26 @@
1
+ {
2
+ "scenario": "",
3
+ "steps": [],
4
+ "issue_ids": [
5
+ "ISSUE-01",
6
+ "ISSUE-02",
7
+ "ISSUE-03",
8
+ "ISSUE-04",
9
+ "ISSUE-05",
10
+ "ISSUE-06",
11
+ "ISSUE-07"
12
+ ],
13
+ "expected_signals": [
14
+ "url_changed",
15
+ "auth_shell_visible",
16
+ "auth_network_success"
17
+ ],
18
+ "failure_signals": [
19
+ "invalid_credentials",
20
+ "anti_bot_challenge",
21
+ "rate_limited",
22
+ "lockout"
23
+ ],
24
+ "max_automated_retries": 2,
25
+ "requires_manual_checkpoint": false
26
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "session_id": "session-123",
3
+ "url_before": "https://example.com/login",
4
+ "url_after": "https://example.com/app",
5
+ "auth_element_ref": "r42",
6
+ "auth_element_visible": true,
7
+ "network": {
8
+ "login_request_seen": true,
9
+ "status_codes": [200]
10
+ },
11
+ "challenge_detected": false,
12
+ "mfa_detected": true,
13
+ "result": "authenticated"
14
+ }