opendevbrowser 0.0.12 → 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 (585) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +425 -42
  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 +4604 -769
  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 +1905 -262
  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 +1905 -262
  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/annotate-content.css +237 -0
  458. package/extension/dist/annotate-content.js +934 -0
  459. package/extension/dist/background.js +1203 -35
  460. package/extension/dist/logging.js +50 -0
  461. package/extension/dist/ops/dom-bridge.js +355 -0
  462. package/extension/dist/ops/ops-runtime.js +1751 -0
  463. package/extension/dist/ops/ops-session-store.js +203 -0
  464. package/extension/dist/ops/parallelism-governor.js +117 -0
  465. package/extension/dist/ops/redaction.js +52 -0
  466. package/extension/dist/ops/snapshot-builder.js +4 -0
  467. package/extension/dist/ops/snapshot-shared.js +236 -0
  468. package/extension/dist/popup.js +370 -25
  469. package/extension/dist/relay-settings.js +1 -0
  470. package/extension/dist/services/CDPRouter.js +567 -104
  471. package/extension/dist/services/ConnectionManager.js +469 -60
  472. package/extension/dist/services/NativePortManager.js +182 -0
  473. package/extension/dist/services/RelayClient.js +227 -26
  474. package/extension/dist/services/TabManager.js +81 -0
  475. package/extension/dist/services/TargetSessionMap.js +146 -0
  476. package/extension/dist/services/cdp-router-commands.js +203 -0
  477. package/extension/dist/services/url-restrictions.js +41 -0
  478. package/extension/dist/types.js +3 -1
  479. package/extension/icons/icon128.png +0 -0
  480. package/extension/icons/icon16.png +0 -0
  481. package/extension/icons/icon32.png +0 -0
  482. package/extension/icons/icon48.png +0 -0
  483. package/extension/manifest.json +17 -3
  484. package/extension/popup.html +144 -0
  485. package/package.json +26 -17
  486. package/scripts/native/host.cjs +230 -0
  487. package/scripts/native/install.ps1 +73 -0
  488. package/scripts/native/install.sh +66 -0
  489. package/scripts/native/uninstall.ps1 +25 -0
  490. package/scripts/native/uninstall.sh +26 -0
  491. package/skills/AGENTS.md +47 -66
  492. package/skills/opendevbrowser-best-practices/SKILL.md +196 -49
  493. package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +44 -0
  494. package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +95 -0
  495. package/skills/opendevbrowser-best-practices/artifacts/debug-trace-playbook.md +36 -0
  496. package/skills/opendevbrowser-best-practices/artifacts/fingerprint-tiers.md +36 -0
  497. package/skills/opendevbrowser-best-practices/artifacts/macro-workflows.md +43 -0
  498. package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +36 -0
  499. package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +89 -0
  500. package/skills/opendevbrowser-best-practices/assets/templates/cdp-forward-envelope.json +11 -0
  501. package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +56 -0
  502. package/skills/opendevbrowser-best-practices/assets/templates/ops-request-envelope.json +9 -0
  503. package/skills/opendevbrowser-best-practices/assets/templates/robustness-checklist.json +79 -0
  504. package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +24 -0
  505. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +144 -0
  506. package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +83 -0
  507. package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +93 -0
  508. package/skills/opendevbrowser-continuity-ledger/SKILL.md +67 -23
  509. package/skills/opendevbrowser-data-extraction/SKILL.md +126 -0
  510. package/skills/opendevbrowser-data-extraction/artifacts/extraction-workflows.md +31 -0
  511. package/skills/opendevbrowser-data-extraction/assets/templates/compliance-checklist.md +7 -0
  512. package/skills/opendevbrowser-data-extraction/assets/templates/extraction-schema.json +17 -0
  513. package/skills/opendevbrowser-data-extraction/assets/templates/pagination-state.json +11 -0
  514. package/skills/opendevbrowser-data-extraction/assets/templates/quality-gates.json +10 -0
  515. package/skills/opendevbrowser-data-extraction/examples/sample-schema.json +19 -0
  516. package/skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh +83 -0
  517. package/skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh +49 -0
  518. package/skills/opendevbrowser-form-testing/SKILL.md +143 -0
  519. package/skills/opendevbrowser-form-testing/artifacts/form-workflows.md +37 -0
  520. package/skills/opendevbrowser-form-testing/assets/templates/a11y-assertions.md +7 -0
  521. package/skills/opendevbrowser-form-testing/assets/templates/challenge-decision-tree.json +16 -0
  522. package/skills/opendevbrowser-form-testing/assets/templates/multi-step-state.json +11 -0
  523. package/skills/opendevbrowser-form-testing/assets/templates/validation-matrix.json +24 -0
  524. package/skills/opendevbrowser-form-testing/examples/sample-validation-matrix.json +29 -0
  525. package/skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh +82 -0
  526. package/skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh +49 -0
  527. package/skills/opendevbrowser-login-automation/SKILL.md +159 -0
  528. package/skills/opendevbrowser-login-automation/artifacts/login-workflows.md +39 -0
  529. package/skills/opendevbrowser-login-automation/assets/templates/auth-signals.json +21 -0
  530. package/skills/opendevbrowser-login-automation/assets/templates/challenge-checkpoint.md +10 -0
  531. package/skills/opendevbrowser-login-automation/assets/templates/login-scenario-matrix.json +26 -0
  532. package/skills/opendevbrowser-login-automation/examples/sample-auth-signals.json +14 -0
  533. package/skills/opendevbrowser-login-automation/scripts/record-auth-signals.sh +18 -0
  534. package/skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh +99 -0
  535. package/skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh +50 -0
  536. package/skills/opendevbrowser-product-presentation-asset/SKILL.md +98 -0
  537. package/skills/opendevbrowser-product-presentation-asset/artifacts/asset-pack-assembly.md +23 -0
  538. package/skills/opendevbrowser-product-presentation-asset/artifacts/ugc-creative-guide.md +21 -0
  539. package/skills/opendevbrowser-product-presentation-asset/assets/templates/claims-evidence-map.md +5 -0
  540. package/skills/opendevbrowser-product-presentation-asset/assets/templates/copy.md +5 -0
  541. package/skills/opendevbrowser-product-presentation-asset/assets/templates/features.md +4 -0
  542. package/skills/opendevbrowser-product-presentation-asset/assets/templates/manifest.schema.json +14 -0
  543. package/skills/opendevbrowser-product-presentation-asset/assets/templates/shot-list.md +7 -0
  544. package/skills/opendevbrowser-product-presentation-asset/assets/templates/ugc-concepts.md +17 -0
  545. package/skills/opendevbrowser-product-presentation-asset/assets/templates/user-actions.md +7 -0
  546. package/skills/opendevbrowser-product-presentation-asset/assets/templates/video-assembly.md +18 -0
  547. package/skills/opendevbrowser-product-presentation-asset/examples/sample-input.json +6 -0
  548. package/skills/opendevbrowser-product-presentation-asset/examples/sample-manifest.json +18 -0
  549. package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +9 -0
  550. package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +14 -0
  551. package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +9 -0
  552. package/skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh +96 -0
  553. package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +56 -0
  554. package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +43 -0
  555. package/skills/opendevbrowser-research/SKILL.md +73 -0
  556. package/skills/opendevbrowser-research/artifacts/research-workflows.md +29 -0
  557. package/skills/opendevbrowser-research/assets/templates/compact.md +7 -0
  558. package/skills/opendevbrowser-research/assets/templates/context.json +18 -0
  559. package/skills/opendevbrowser-research/assets/templates/report.md +9 -0
  560. package/skills/opendevbrowser-research/examples/sample-input.json +6 -0
  561. package/skills/opendevbrowser-research/examples/sample-output.md +4 -0
  562. package/skills/opendevbrowser-research/scripts/render-output.sh +12 -0
  563. package/skills/opendevbrowser-research/scripts/run-research.sh +23 -0
  564. package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +48 -0
  565. package/skills/opendevbrowser-research/scripts/write-artifacts.sh +29 -0
  566. package/skills/opendevbrowser-shopping/SKILL.md +118 -0
  567. package/skills/opendevbrowser-shopping/artifacts/deal-hunting-workflows.md +37 -0
  568. package/skills/opendevbrowser-shopping/assets/templates/deal-thresholds.json +8 -0
  569. package/skills/opendevbrowser-shopping/assets/templates/deals-context.json +9 -0
  570. package/skills/opendevbrowser-shopping/assets/templates/deals-table.md +4 -0
  571. package/skills/opendevbrowser-shopping/assets/templates/market-analysis.json +30 -0
  572. package/skills/opendevbrowser-shopping/examples/sample-deals.md +4 -0
  573. package/skills/opendevbrowser-shopping/examples/sample-query.json +5 -0
  574. package/skills/opendevbrowser-shopping/scripts/analyze-market.sh +307 -0
  575. package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +28 -0
  576. package/skills/opendevbrowser-shopping/scripts/render-deals.sh +13 -0
  577. package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +32 -0
  578. package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +19 -0
  579. package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +53 -0
  580. package/dist/chunk-WTFSMBVH.js +0 -2815
  581. package/dist/chunk-WTFSMBVH.js.map +0 -1
  582. package/extension/dist/popup.jsx +0 -150
  583. package/skills/data-extraction/SKILL.md +0 -136
  584. package/skills/form-testing/SKILL.md +0 -113
  585. package/skills/login-automation/SKILL.md +0 -98
@@ -0,0 +1,126 @@
1
+ ---
2
+ name: opendevbrowser-data-extraction
3
+ description: This skill should be used when the user asks to "extract data from a page", "scrape tables", "collect paginated results", "parse list/card content", or "export structured web data" with OpenDevBrowser.
4
+ version: 2.0.0
5
+ ---
6
+
7
+ # Data Extraction Skill
8
+
9
+ Use this skill to extract structured, auditable datasets from dynamic pages with compliance-aware workflows.
10
+
11
+ ## Pack Contents
12
+
13
+ - `artifacts/extraction-workflows.md`
14
+ - `assets/templates/extraction-schema.json`
15
+ - `assets/templates/pagination-state.json`
16
+ - `assets/templates/quality-gates.json`
17
+ - `assets/templates/compliance-checklist.md`
18
+ - `scripts/run-extraction-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-data-extraction/scripts/validate-skill-assets.sh
26
+ ./skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh list
27
+ ./skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh pagination
28
+ ./skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh infinite-scroll
29
+ ```
30
+
31
+ ## Core Rules
32
+
33
+ - Define schema before extraction.
34
+ - Track provenance for each record (`source_url`, `provider`, `captured_at`, `page`).
35
+ - Prefer embedded structured data (JSON-LD/microdata) where available.
36
+ - Stop on sustained anti-bot pressure (repeated 403/429/challenge loops).
37
+ - Honor `Retry-After` and preserve checkpoint state before retrying pagination.
38
+
39
+ ## Parallel Multitab Alignment
40
+
41
+ - Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
42
+ - Run extraction acceptance on `managed`, `extension`, and `cdpConnect` before claiming mode parity.
43
+ - Keep one session per worker; avoid interleaving `target-use` streams inside a single session.
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 content updates
50
+ - `ISSUE-06`: 429/backoff and retry budgeting
51
+ - `ISSUE-08`: blocked/restricted origins and policy checks
52
+ - `ISSUE-09`: pagination drift, duplicate accumulation, terminal detection
53
+ - `ISSUE-10`: locale/currency parsing consistency
54
+
55
+ ## Extraction Planning
56
+
57
+ 1. Define required fields and null policy.
58
+ 2. Snapshot and map refs to schema.
59
+ 3. Choose pagination strategy.
60
+ 4. Apply quality gates each page.
61
+
62
+ ```text
63
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
64
+ ```
65
+
66
+ ## Structured Data First
67
+
68
+ Attempt extraction in this order:
69
+ 1. JSON-LD product/article blocks
70
+ 2. semantic table/list/card DOM
71
+ 3. fallback text parsing
72
+
73
+ ```text
74
+ opendevbrowser_dom_get_text sessionId="<session-id>" ref="<json-ld-ref>"
75
+ opendevbrowser_dom_get_html sessionId="<session-id>" ref="<table-ref>"
76
+ ```
77
+
78
+ ## Pagination Patterns
79
+
80
+ ### Numbered/Next pagination
81
+
82
+ ```text
83
+ opendevbrowser_click sessionId="<session-id>" ref="<next-ref>"
84
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
85
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
86
+ ```
87
+
88
+ ### Infinite scroll
89
+
90
+ ```text
91
+ opendevbrowser_scroll sessionId="<session-id>" dy=1000
92
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
93
+ ```
94
+
95
+ ### Load more
96
+
97
+ ```text
98
+ opendevbrowser_click sessionId="<session-id>" ref="<load-more-ref>"
99
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
100
+ ```
101
+
102
+ ## Quality Gates
103
+
104
+ Apply per page:
105
+ - dedupe by stable key (URL or canonical ID)
106
+ - null-rate check for required fields
107
+ - count delta check (new records must increase)
108
+ - consistency check for currency/units
109
+ - max consecutive challenge/429 loops before stop
110
+
111
+ Use `assets/templates/quality-gates.json`.
112
+
113
+ ## Compliance and Safety
114
+
115
+ - Respect robots and site terms.
116
+ - Use pacing; do not flood endpoints.
117
+ - Treat robots as policy guidance, not auth.
118
+ - Stop or back off on repeated 429/403 and challenges.
119
+
120
+ ## References
121
+
122
+ - RFC 9309 (robots protocol): https://www.rfc-editor.org/rfc/rfc9309
123
+ - Google robots docs: https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt
124
+ - Schema.org Offer: https://schema.org/Offer
125
+ - Google Product structured data: https://developers.google.com/search/docs/appearance/structured-data/product-snippet
126
+ - Playwright best practices: https://playwright.dev/docs/best-practices
@@ -0,0 +1,31 @@
1
+ # Extraction Workflows
2
+
3
+ ## List/Card workflow
4
+
5
+ 1. Snapshot actionables
6
+ 2. Map repeating nodes
7
+ 3. Extract title/price/link fields
8
+ 4. Normalize and dedupe records
9
+ 5. Record parse confidence and currency normalization status
10
+
11
+ ## Table workflow
12
+
13
+ 1. Wait for table visibility
14
+ 2. Extract table HTML
15
+ 3. Parse rows/cells in host process
16
+ 4. Validate schema completeness
17
+
18
+ ## Pagination workflow
19
+
20
+ 1. Extract current page
21
+ 2. Advance page
22
+ 3. Wait + snapshot
23
+ 4. Repeat until terminal condition
24
+ 5. Persist checkpoint state every page
25
+
26
+ ## Anti-bot pressure workflow
27
+
28
+ 1. Detect repeated 403/429/challenge
29
+ 2. Parse and honor `Retry-After` if present
30
+ 3. Slow down / cooldown and resume from last checkpoint
31
+ 4. Stop and report if pressure persists after bounded retries
@@ -0,0 +1,7 @@
1
+ # Compliance Checklist
2
+
3
+ - robots policy reviewed
4
+ - site terms reviewed for data-use constraints
5
+ - extraction rate limited and paced
6
+ - anti-bot pressure monitored (429/403/challenge)
7
+ - sensitive data excluded from artifacts
@@ -0,0 +1,17 @@
1
+ {
2
+ "dataset": "",
3
+ "required_fields": [
4
+ "title",
5
+ "url"
6
+ ],
7
+ "optional_fields": [
8
+ "price",
9
+ "rating",
10
+ "availability"
11
+ ],
12
+ "field_types": {
13
+ "title": "string",
14
+ "url": "string",
15
+ "price": "number"
16
+ }
17
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "strategy": "next",
3
+ "current_page": 1,
4
+ "pages_processed": 0,
5
+ "records_collected": 0,
6
+ "last_page_delta": 0,
7
+ "checkpoint_token": "",
8
+ "retry_after_seconds": 0,
9
+ "challenge_loops": 0,
10
+ "stopping_reason": ""
11
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "max_required_null_rate": 0.05,
3
+ "max_duplicate_rate": 0.02,
4
+ "require_positive_page_delta": true,
5
+ "max_consecutive_empty_pages": 2,
6
+ "max_consecutive_challenge_loops": 2,
7
+ "max_retries_per_page": 2,
8
+ "respect_retry_after": true,
9
+ "stop_on_repeated_anti_bot_signals": true
10
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "dataset": "shopping_offers",
3
+ "required_fields": [
4
+ "title",
5
+ "url",
6
+ "price"
7
+ ],
8
+ "optional_fields": [
9
+ "rating",
10
+ "reviews_count",
11
+ "availability"
12
+ ],
13
+ "field_types": {
14
+ "title": "string",
15
+ "url": "string",
16
+ "price": "number",
17
+ "rating": "number"
18
+ }
19
+ }
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ print_help() {
5
+ cat <<'HELP'
6
+ Data extraction workflow router
7
+
8
+ Usage:
9
+ ./skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh <workflow>
10
+
11
+ Workflows:
12
+ list
13
+ table
14
+ pagination
15
+ infinite-scroll
16
+ load-more
17
+ anti-bot-pressure
18
+ checkpoint-resume
19
+ list-workflows
20
+ HELP
21
+ }
22
+
23
+ workflow="${1:-list-workflows}"
24
+
25
+ case "$workflow" in
26
+ list-workflows)
27
+ print_help
28
+ ;;
29
+ list)
30
+ cat <<'FLOW'
31
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
32
+ opendevbrowser_dom_get_text sessionId="<session-id>" ref="<item-title-ref>"
33
+ opendevbrowser_get_attr sessionId="<session-id>" ref="<item-link-ref>" name="href"
34
+ FLOW
35
+ ;;
36
+ table)
37
+ cat <<'FLOW'
38
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
39
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
40
+ opendevbrowser_dom_get_html sessionId="<session-id>" ref="<table-ref>"
41
+ FLOW
42
+ ;;
43
+ pagination)
44
+ cat <<'FLOW'
45
+ opendevbrowser_click sessionId="<session-id>" ref="<next-ref>"
46
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
47
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
48
+ FLOW
49
+ ;;
50
+ infinite-scroll)
51
+ cat <<'FLOW'
52
+ opendevbrowser_scroll sessionId="<session-id>" dy=1000
53
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
54
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
55
+ FLOW
56
+ ;;
57
+ load-more)
58
+ cat <<'FLOW'
59
+ opendevbrowser_click sessionId="<session-id>" ref="<load-more-ref>"
60
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
61
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
62
+ FLOW
63
+ ;;
64
+ anti-bot-pressure)
65
+ cat <<'FLOW'
66
+ opendevbrowser_network_poll sessionId="<session-id>" max=100
67
+ # Stop or back off on repeated 403/429/challenge signals; honor Retry-After.
68
+ FLOW
69
+ ;;
70
+ checkpoint-resume)
71
+ cat <<'FLOW'
72
+ # Resume from stored pagination checkpoint token/page index.
73
+ opendevbrowser_snapshot sessionId="<session-id>" format="outline"
74
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
75
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
76
+ FLOW
77
+ ;;
78
+ *)
79
+ echo "Unknown workflow: $workflow" >&2
80
+ print_help
81
+ exit 2
82
+ ;;
83
+ 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/extraction-workflows.md"
9
+ "assets/templates/extraction-schema.json"
10
+ "assets/templates/pagination-state.json"
11
+ "assets/templates/quality-gates.json"
12
+ "assets/templates/compliance-checklist.md"
13
+ "scripts/run-extraction-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-extraction-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/extraction-schema.json assets/templates/pagination-state.json assets/templates/quality-gates.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 "Data extraction skill assets validated."
@@ -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
+ }