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,73 @@
1
+ param(
2
+ [Parameter(Mandatory = $true)]
3
+ [string]$ExtensionId
4
+ )
5
+
6
+ if ([string]::IsNullOrWhiteSpace($ExtensionId)) {
7
+ Write-Error "Usage: install.ps1 <extension-id>"
8
+ exit 2
9
+ }
10
+
11
+ if ($ExtensionId -notmatch "^[a-p]{32}$") {
12
+ Write-Error "Invalid extension ID format. Expected 32 characters (a-p)."
13
+ exit 2
14
+ }
15
+
16
+ $localAppData = $env:LOCALAPPDATA
17
+ if (-not $localAppData -and $env:USERPROFILE) {
18
+ $localAppData = Join-Path $env:USERPROFILE "AppData\\Local"
19
+ }
20
+ if (-not $localAppData) {
21
+ Write-Error "LOCALAPPDATA is not set. Unable to locate NativeMessagingHosts directory."
22
+ exit 3
23
+ }
24
+
25
+ $manifestDir = Join-Path $localAppData "Google\\Chrome\\User Data\\NativeMessagingHosts"
26
+ $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
27
+ $hostScript = Join-Path $scriptDir "host.cjs"
28
+
29
+ if (-not (Test-Path $hostScript)) {
30
+ Write-Error "Native host script not found at $hostScript"
31
+ exit 4
32
+ }
33
+
34
+ $nodePath = (Get-Command node -ErrorAction SilentlyContinue).Source
35
+ if (-not $nodePath) {
36
+ $candidates = @(
37
+ "C:\\Program Files\\nodejs\\node.exe",
38
+ "C:\\Program Files (x86)\\nodejs\\node.exe"
39
+ )
40
+ foreach ($candidate in $candidates) {
41
+ if (Test-Path $candidate) {
42
+ $nodePath = $candidate
43
+ break
44
+ }
45
+ }
46
+ }
47
+ if (-not $nodePath) {
48
+ Write-Error "Node.js not found in PATH."
49
+ exit 4
50
+ }
51
+
52
+ New-Item -ItemType Directory -Path $manifestDir -Force | Out-Null
53
+
54
+ $wrapperPath = Join-Path $manifestDir "com.opendevbrowser.native.cmd"
55
+ $wrapperContent = "@echo off`r`n""$nodePath"" ""$hostScript""`r`n"
56
+ Set-Content -Path $wrapperPath -Value $wrapperContent -Encoding ASCII
57
+
58
+ $manifestPath = Join-Path $manifestDir "com.opendevbrowser.native.json"
59
+ $manifest = @{
60
+ name = "com.opendevbrowser.native"
61
+ description = "OpenDevBrowser native messaging host"
62
+ path = $wrapperPath
63
+ type = "stdio"
64
+ allowed_origins = @("chrome-extension://$ExtensionId/")
65
+ } | ConvertTo-Json -Depth 3
66
+
67
+ Set-Content -Path $manifestPath -Value $manifest -Encoding ASCII
68
+
69
+ $regPath = "HKCU:\\Software\\Google\\Chrome\\NativeMessagingHosts\\com.opendevbrowser.native"
70
+ New-Item -Path $regPath -Force | Out-Null
71
+ New-ItemProperty -Path $regPath -Name "(Default)" -Value $manifestPath -PropertyType String -Force | Out-Null
72
+
73
+ Write-Output "Native host installed at $manifestPath"
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ EXTENSION_ID="${1:-}"
5
+ if [[ -z "${EXTENSION_ID}" ]]; then
6
+ echo "Usage: install.sh <extension-id>" >&2
7
+ exit 2
8
+ fi
9
+
10
+ if [[ ! "${EXTENSION_ID}" =~ ^[a-p]{32}$ ]]; then
11
+ echo "Invalid extension ID format. Expected 32 characters (a-p)." >&2
12
+ exit 2
13
+ fi
14
+
15
+ OS="$(uname -s)"
16
+ if [[ "${OS}" == "Darwin" ]]; then
17
+ MANIFEST_DIR="${HOME}/Library/Application Support/Google/Chrome/NativeMessagingHosts"
18
+ elif [[ "${OS}" == "Linux" ]]; then
19
+ MANIFEST_DIR="${HOME}/.config/google-chrome/NativeMessagingHosts"
20
+ else
21
+ echo "Unsupported platform: ${OS}" >&2
22
+ exit 3
23
+ fi
24
+
25
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
26
+ HOST_SCRIPT="${SCRIPT_DIR}/host.cjs"
27
+ if [[ ! -f "${HOST_SCRIPT}" ]]; then
28
+ echo "Native host script not found at ${HOST_SCRIPT}" >&2
29
+ exit 4
30
+ fi
31
+
32
+ NODE_PATH="$(command -v node || true)"
33
+ if [[ -z "${NODE_PATH}" && "${OS}" == "Darwin" ]]; then
34
+ if [[ -x "/opt/homebrew/bin/node" ]]; then
35
+ NODE_PATH="/opt/homebrew/bin/node"
36
+ elif [[ -x "/usr/local/bin/node" ]]; then
37
+ NODE_PATH="/usr/local/bin/node"
38
+ fi
39
+ fi
40
+ if [[ -z "${NODE_PATH}" ]]; then
41
+ echo "Node.js not found in PATH." >&2
42
+ exit 4
43
+ fi
44
+
45
+ mkdir -p "${MANIFEST_DIR}"
46
+
47
+ WRAPPER_PATH="${MANIFEST_DIR}/com.opendevbrowser.native.sh"
48
+ cat > "${WRAPPER_PATH}" <<EOF
49
+ #!/usr/bin/env bash
50
+ exec "${NODE_PATH}" "${HOST_SCRIPT}"
51
+ EOF
52
+ chmod 0755 "${WRAPPER_PATH}"
53
+
54
+ MANIFEST_PATH="${MANIFEST_DIR}/com.opendevbrowser.native.json"
55
+ cat > "${MANIFEST_PATH}" <<EOF
56
+ {
57
+ "name": "com.opendevbrowser.native",
58
+ "description": "OpenDevBrowser native messaging host",
59
+ "path": "${WRAPPER_PATH}",
60
+ "type": "stdio",
61
+ "allowed_origins": ["chrome-extension://${EXTENSION_ID}/"]
62
+ }
63
+ EOF
64
+ chmod 0644 "${MANIFEST_PATH}"
65
+
66
+ echo "Native host installed at ${MANIFEST_PATH}"
@@ -0,0 +1,25 @@
1
+ $localAppData = $env:LOCALAPPDATA
2
+ if (-not $localAppData -and $env:USERPROFILE) {
3
+ $localAppData = Join-Path $env:USERPROFILE "AppData\\Local"
4
+ }
5
+ if (-not $localAppData) {
6
+ Write-Error "LOCALAPPDATA is not set. Unable to locate NativeMessagingHosts directory."
7
+ exit 3
8
+ }
9
+
10
+ $manifestDir = Join-Path $localAppData "Google\\Chrome\\User Data\\NativeMessagingHosts"
11
+ $manifestPath = Join-Path $manifestDir "com.opendevbrowser.native.json"
12
+ $wrapperPath = Join-Path $manifestDir "com.opendevbrowser.native.cmd"
13
+
14
+ Remove-Item -Path $manifestPath -Force -ErrorAction SilentlyContinue | Out-Null
15
+ Remove-Item -Path $wrapperPath -Force -ErrorAction SilentlyContinue | Out-Null
16
+
17
+ $regPath = "HKCU:\\Software\\Google\\Chrome\\NativeMessagingHosts\\com.opendevbrowser.native"
18
+ Remove-Item -Path $regPath -Recurse -Force -ErrorAction SilentlyContinue | Out-Null
19
+
20
+ $tempDir = [System.IO.Path]::GetTempPath()
21
+ Get-ChildItem -Path $tempDir -Filter "opendevbrowser-*.token" -ErrorAction SilentlyContinue | Remove-Item -Force -ErrorAction SilentlyContinue
22
+ Get-ChildItem -Path $tempDir -Filter "opendevbrowser-*.sock" -ErrorAction SilentlyContinue | Remove-Item -Force -ErrorAction SilentlyContinue
23
+ Remove-Item -Path (Join-Path $tempDir "opendevbrowser-native.log") -Force -ErrorAction SilentlyContinue | Out-Null
24
+
25
+ Write-Output "Native host uninstalled."
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ OS="$(uname -s)"
5
+ if [[ "${OS}" == "Darwin" ]]; then
6
+ MANIFEST_DIR="${HOME}/Library/Application Support/Google/Chrome/NativeMessagingHosts"
7
+ elif [[ "${OS}" == "Linux" ]]; then
8
+ MANIFEST_DIR="${HOME}/.config/google-chrome/NativeMessagingHosts"
9
+ else
10
+ echo "Unsupported platform: ${OS}" >&2
11
+ exit 3
12
+ fi
13
+
14
+ MANIFEST_PATH="${MANIFEST_DIR}/com.opendevbrowser.native.json"
15
+ WRAPPER_PATH="${MANIFEST_DIR}/com.opendevbrowser.native.sh"
16
+
17
+ if [[ -f "${MANIFEST_PATH}" ]]; then
18
+ rm -f "${MANIFEST_PATH}"
19
+ fi
20
+ if [[ -f "${WRAPPER_PATH}" ]]; then
21
+ rm -f "${WRAPPER_PATH}"
22
+ fi
23
+
24
+ rm -f /tmp/opendevbrowser-*.sock /tmp/opendevbrowser-*.token 2>/dev/null || true
25
+
26
+ echo "Native host uninstalled."
package/skills/AGENTS.md CHANGED
@@ -1,16 +1,19 @@
1
1
  # skills/ — Agent Guidelines
2
2
 
3
- Bundled skill packs. Extends root `AGENTS.md`.
3
+ Bundled canonical skill packs (8 total). Extends root `AGENTS.md`.
4
4
 
5
5
  ## Structure
6
6
 
7
7
  ```
8
8
  skills/
9
- ├── opendevbrowser-best-practices/SKILL.md # Core prompting guide
9
+ ├── opendevbrowser-best-practices/SKILL.md
10
10
  ├── opendevbrowser-continuity-ledger/SKILL.md
11
- ├── login-automation/SKILL.md
12
- ├── form-testing/SKILL.md
13
- └── data-extraction/SKILL.md
11
+ ├── opendevbrowser-login-automation/SKILL.md
12
+ ├── opendevbrowser-form-testing/SKILL.md
13
+ ├── opendevbrowser-data-extraction/SKILL.md
14
+ ├── opendevbrowser-research/SKILL.md
15
+ ├── opendevbrowser-shopping/SKILL.md
16
+ └── opendevbrowser-product-presentation-asset/SKILL.md
14
17
  ```
15
18
 
16
19
  ## SKILL.md Format
@@ -32,9 +35,13 @@ Content organized by topic for filtering.
32
35
 
33
36
  1. `.opencode/skill/` (project-local)
34
37
  2. `~/.config/opencode/skill/` (global)
35
- 3. `.claude/skills/` (compatibility)
36
- 4. `~/.claude/skills/` (compatibility)
37
- 5. `skillPaths` config (custom)
38
+ 3. `.codex/skills/` (project compatibility)
39
+ 4. `$CODEX_HOME/skills` (global compatibility; fallback `~/.codex/skills`)
40
+ 5. `.claude/skills/` (ClaudeCode project compatibility)
41
+ 6. `$CLAUDECODE_HOME/skills` or `$CLAUDE_HOME/skills` (ClaudeCode global compatibility; fallback `~/.claude/skills`)
42
+ 7. `.amp/skills/` (AmpCLI project compatibility)
43
+ 8. `$AMPCLI_HOME/skills` or `$AMP_CLI_HOME/skills` or `$AMP_HOME/skills` (AmpCLI global compatibility; fallback `~/.amp/skills`)
44
+ 9. `skillPaths` config (custom)
38
45
 
39
46
  ## Constraints
40
47
 
@@ -42,9 +49,11 @@ Content organized by topic for filtering.
42
49
  - Keep guidance short, script-first, snapshot-first
43
50
  - Examples must use `opendevbrowser_*` tool names
44
51
  - Never include secrets or page data in content
52
+ - Keep canonical guidance in `opendevbrowser-*` packs; do not add legacy alias directories.
45
53
  - Match the snapshot → refs → actions flow in `docs/ARCHITECTURE.md` and tool list in `docs/CLI.md`.
46
54
  - Note that extension relay requires Chrome 125+ and uses hub-only relay ownership when enabled.
47
55
  - Refer to root `AGENTS.md` for connection flag/status semantics (extensionConnected, handshake, cdpConnected, pairingRequired).
56
+ - Keep skill operational guidance aligned with release-gate scripts in `docs/CLI.md` (`provider-live-matrix --release-gate`, `live-regression-matrix --release-gate`).
48
57
 
49
58
  ## Adding Skills
50
59
 
@@ -1,122 +1,228 @@
1
1
  ---
2
2
  name: opendevbrowser-best-practices
3
- description: This skill should be used when the user asks to "automate a browser flow", "write an OpenDevBrowser script", "use snapshot refs", "extract page content", or "debug browser automation".
4
- version: 1.1.0
3
+ description: This skill should be used when the user asks to design or run OpenDevBrowser provider workflows, scraping pipelines, QA/debug automation, parity checks across modes, or resilient browser operations with codified scripts and artifacts.
4
+ version: 2.3.0
5
5
  ---
6
6
 
7
7
  # OpenDevBrowser Best Practices
8
8
 
9
- Use this guide to produce reliable, script-first automation with minimal retries and predictable output.
9
+ This is the primary battery pack for OpenDevBrowser operations.
10
+
11
+ Use this skill when you need:
12
+ - provider-oriented workflows (`web`, `community`, `social`),
13
+ - script-first runbooks,
14
+ - parity across `managed`, `extension`, `cdpConnect`,
15
+ - diagnostics for QA/debug (`console`, `network`, trace context),
16
+ - safe write flows with explicit policy notice.
17
+
18
+ ## Pack Contents
19
+
20
+ - `artifacts/provider-workflows.md` — canonical provider execution flows.
21
+ - `artifacts/parity-gates.md` — mode/surface parity matrix and acceptance gates.
22
+ - `artifacts/debug-trace-playbook.md` — diagnostics workflow and trace bundle model.
23
+ - `artifacts/fingerprint-tiers.md` — hardening tiers and when to use each.
24
+ - `artifacts/macro-workflows.md` — macro design and expansion standards.
25
+ - `artifacts/browser-agent-known-issues-matrix.md` — known browser-agent failure modes mapped to required controls.
26
+ - `artifacts/command-channel-reference.md` — CLI/tool/`/ops`/`/cdp` surface map plus cross-agent skill-sync targets.
27
+ - `assets/templates/mode-flag-matrix.json` — mode + flag verification template.
28
+ - `assets/templates/ops-request-envelope.json` — `/ops` request envelope template.
29
+ - `assets/templates/cdp-forward-envelope.json` — `/cdp` relay envelope template.
30
+ - `assets/templates/robustness-checklist.json` — shared issue-status checklist for workflow robustness audits.
31
+ - `assets/templates/surface-audit-checklist.json` — docs/surface audit checklist template.
32
+ - `scripts/odb-workflow.sh` — prints codified command sequences by workflow.
33
+ - `scripts/run-robustness-audit.sh` — validates workflow skill coverage against known issue IDs.
34
+ - `scripts/validate-skill-assets.sh` — validates required artifacts/templates.
35
+
36
+ ## Fast Start
37
+
38
+ 1. Validate the skill pack:
39
+
40
+ ```bash
41
+ ./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh
42
+ ```
10
43
 
11
- ## Core Operating Model
44
+ 2. Pick a workflow:
12
45
 
13
- Follow the loop strictly:
46
+ ```bash
47
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh provider-crawl
48
+ ```
14
49
 
15
- 1. Establish or attach a session.
16
- 2. Capture `opendevbrowser_snapshot`.
17
- 3. Select refs from that snapshot.
18
- 4. Execute one or more actions using refs.
19
- 5. Re-snapshot after navigation or major DOM change.
50
+ 3. Execute the printed sequence with session-specific values.
20
51
 
21
- Prefer refs over raw selectors. Refs are more stable across dynamic UI changes.
52
+ 4. Surface full controls directly from CLI help when auditing runtime accessibility:
22
53
 
23
- ## Session Strategy
54
+ ```bash
55
+ npx opendevbrowser --help
56
+ ```
24
57
 
25
- Choose mode deliberately:
58
+ 5. Run robustness coverage checks across workflow skills:
26
59
 
27
- - Use managed mode for deterministic, isolated runs.
28
- - Use extension mode when existing logged-in tabs or profile state are required.
29
- - Use CDP connect mode only when attaching to a pre-launched browser is required.
60
+ ```bash
61
+ ./skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh
62
+ ```
30
63
 
31
- Example launch patterns:
64
+ ## Agent Sync Targets
32
65
 
33
- ```text
34
- opendevbrowser_launch noExtension=true
35
- opendevbrowser_launch waitForExtension=true
36
- opendevbrowser_connect wsEndpoint="ws://127.0.0.1:9222/devtools/browser/<id>"
37
- ```
66
+ Skill-pack installation and discovery are synchronized for:
67
+ - `opencode` (`~/.config/opencode/skill`, project `./.opencode/skill`)
68
+ - `codex` (`$CODEX_HOME/skills` fallback `~/.codex/skills`, project `./.codex/skills`)
69
+ - `claudecode` (`$CLAUDECODE_HOME/skills` or `$CLAUDE_HOME/skills` fallback `~/.claude/skills`, project `./.claude/skills`)
70
+ - `ampcli` (`$AMPCLI_HOME/skills` or `$AMP_CLI_HOME/skills` or `$AMP_HOME/skills` fallback `~/.amp/skills`, project `./.amp/skills`)
71
+
72
+ Legacy compatibility aliases `claude` and `amp` are preserved in installer target metadata.
73
+
74
+ ## Required Operating Rules
75
+
76
+ - Prefer refs from `opendevbrowser_snapshot` over raw selectors.
77
+ - Use one action per decision loop: snapshot -> action -> snapshot.
78
+ - Keep a single correlation context (`requestId`, `sessionId`) across a run.
79
+ - Run the same workflow shape across all three modes before claiming parity.
80
+ - Default to read/research workflows. Social posting probes remain disabled unless explicitly requested via matrix opt-in (`--include-social-posts`).
81
+ - Apply rate-limit/backoff discipline (`Retry-After` aware) whenever 429 pressure appears.
82
+ - Re-check extension readiness on resume when a run crosses idle windows.
83
+
84
+ ## Parallel Operations (Reliable As-Is)
38
85
 
39
- ## Snapshot Discipline
86
+ - Safe parallelism today is `session-per-worker` (one session per page/tab command stream).
87
+ - Keep each session single-writer for target/page actions; run commands serially inside that session.
88
+ - Do not run independent concurrent streams that alternate `target-use` within one session.
89
+ - Use default extension `/ops` for relay-backed concurrency; use `/cdp` only for legacy compatibility paths.
90
+ - For managed parallel runs with persisted profiles, use unique profile paths per session (or disable persistence) to avoid profile lock collisions.
91
+ - Treat extension headless attempts (`--extension-only --headless`) as expected `unsupported_mode`; route headless workloads through managed/cdpConnect instead.
92
+ - Before extension-mode runs, preflight `npx opendevbrowser status --daemon` and require `extensionConnected=true` plus `extensionHandshakeComplete=true`.
40
93
 
41
- Capture snapshots in the format needed by the current task:
94
+ Operational references:
95
+ - `artifacts/provider-workflows.md` (see Workflow E)
96
+ - `scripts/odb-workflow.sh parallel-multipage-safe`
97
+ - `docs/CLI.md` (concurrency semantics)
98
+ - `docs/SURFACE_REFERENCE.md` (transport and policy constraints)
99
+ - `docs/TROUBLESHOOTING.md` (parallel crosstalk and profile-lock remediation)
42
100
 
43
- - Use `format="outline"` for broad page state.
44
- - Use `format="actionables"` for interaction planning.
45
- - Use `maxChars` and `cursor` to page large pages instead of requesting oversized snapshots.
101
+ ## Known-Issue Robustness Baseline
102
+
103
+ - Source matrix: `artifacts/browser-agent-known-issues-matrix.md`
104
+ - Reusable checklist: `assets/templates/robustness-checklist.json`
105
+ - Coverage validator: `scripts/run-robustness-audit.sh`
106
+
107
+ Use issue IDs from the matrix in each workflow skill (`ISSUE-01` ... `ISSUE-12`) so robustness checks stay machine-verifiable and DRY.
108
+
109
+ ## Provider Workflows (Codified)
110
+
111
+ ### Provider Search Workflow
112
+
113
+ Goal: deterministic query + extraction from one provider.
46
114
 
47
115
  ```text
116
+ opendevbrowser_launch noExtension=true
117
+ opendevbrowser_goto sessionId="<session-id>" url="<provider-search-url>"
118
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
48
119
  opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
120
+ # extract targeted results using refs
121
+ opendevbrowser_network_poll sessionId="<session-id>" max=50
49
122
  ```
50
123
 
51
- ## Action Sequencing
52
-
53
- Stabilize before interacting:
124
+ ### Provider Crawl Workflow
54
125
 
55
- - After `goto` or click-driven navigation, run `opendevbrowser_wait`.
56
- - Wait on `until="networkidle"` for API-heavy pages.
57
- - Wait on `ref` + `state` for specific element readiness.
126
+ Goal: multipage fetch + extraction with bounded depth.
58
127
 
59
128
  ```text
129
+ opendevbrowser_launch noExtension=true
130
+ opendevbrowser_goto sessionId="<session-id>" url="<seed-url>"
131
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
132
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
133
+ # capture links/data, enqueue next pages in host logic
134
+ opendevbrowser_scroll sessionId="<session-id>" dy=1000
60
135
  opendevbrowser_wait sessionId="<session-id>" until="networkidle"
61
- opendevbrowser_wait sessionId="<session-id>" ref="<target-ref>" state="visible"
62
136
  ```
63
137
 
64
- For multi-step interactions, batch deterministic steps with `opendevbrowser_run`.
138
+ ### QA Debug Workflow
139
+
140
+ Goal: isolate frontend regressions quickly.
65
141
 
66
142
  ```text
67
- opendevbrowser_run sessionId="<session-id>" steps=[{"action":"goto","args":{"url":"https://example.com"}},{"action":"wait","args":{"until":"networkidle"}},{"action":"snapshot","args":{"format":"actionables"}}]
143
+ opendevbrowser_snapshot sessionId="<session-id>" format="outline"
144
+ opendevbrowser_console_poll sessionId="<session-id>" max=100
145
+ opendevbrowser_network_poll sessionId="<session-id>" max=100
146
+ opendevbrowser_screenshot sessionId="<session-id>"
68
147
  ```
69
148
 
70
- ## Extraction and Output Control
149
+ ### Read-Only Social Validation Workflow
71
150
 
72
- Keep output scoped and cheap:
151
+ Goal: validate authenticated read/search capability without posting.
73
152
 
74
- - Extract only the needed node text with `opendevbrowser_dom_get_text`.
75
- - Use `opendevbrowser_dom_get_html` only for small targeted fragments.
76
- - Use `opendevbrowser_get_attr` and `opendevbrowser_get_value` for structured field data.
153
+ 1. Connect and verify extension readiness (`extensionConnected` + handshake).
154
+ 2. Navigate/search target social surface.
155
+ 3. Capture `debug-trace-snapshot` and `network-poll` evidence.
156
+ 4. Record blocker/auth status only (no write action).
77
157
 
78
- ```text
79
- opendevbrowser_dom_get_text sessionId="<session-id>" ref="<content-ref>"
80
- opendevbrowser_get_attr sessionId="<session-id>" ref="<input-ref>" name="aria-invalid"
158
+ ## Workflow Router Script
159
+
160
+ Use the router script to avoid retyping flows:
161
+
162
+ ```bash
163
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh provider-search
164
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh provider-crawl
165
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh qa-debug
166
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh social-readonly-check
167
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh parity-check
168
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh surface-audit
169
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh ops-channel-check
170
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh cdp-channel-check
171
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh mode-flag-matrix
172
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh robustness-audit
81
173
  ```
82
174
 
83
- ## Lightweight Diagnostics
175
+ ## Modes and Surface Parity
84
176
 
85
- Inspect runtime behavior only when required:
177
+ Always run acceptance on:
178
+ - Modes: `managed`, `extension`, `cdpConnect`
179
+ - Surfaces: tool API, CLI, daemon RPC
86
180
 
87
- - Use `opendevbrowser_console_poll` to detect script/runtime errors.
88
- - Use `opendevbrowser_network_poll` to verify request outcomes.
89
- - Use `opendevbrowser_screenshot` for visual debugging artifacts.
181
+ Reference: `artifacts/parity-gates.md`
90
182
 
91
- ```text
92
- opendevbrowser_console_poll sessionId="<session-id>"
93
- opendevbrowser_network_poll sessionId="<session-id>" max=50
183
+ Parity gate test:
184
+
185
+ ```bash
186
+ npm run test -- tests/parity-matrix.test.ts
94
187
  ```
95
188
 
96
- ## Failure Recovery Order
189
+ Real-world provider+mode scenario harness (soak replacement):
97
190
 
98
- When a step fails, recover in this order:
191
+ ```bash
192
+ npm run build
193
+ node scripts/provider-live-matrix.mjs --use-global-env --skip-live-regression --out artifacts/provider-live-realworld.json
194
+ ```
99
195
 
100
- 1. Re-snapshot to refresh refs.
101
- 2. Re-wait for load or element state.
102
- 3. Retry action once with fresh refs.
103
- 4. Change mode (managed vs extension) only if failure is mode-specific.
196
+ Surface inventory source of truth:
197
+ - `docs/SURFACE_REFERENCE.md` (55 CLI commands, 48 tools, 38 `/ops` commands, `/cdp` envelope contracts)
198
+ - `artifacts/command-channel-reference.md` (skill-pack operational digest)
104
199
 
105
- Avoid blind repeated retries against stale refs.
200
+ ## Diagnostics and Traceability
106
201
 
107
- ## Security and Safety Defaults
202
+ Current diagnostics tools:
203
+ - `opendevbrowser_console_poll`
204
+ - `opendevbrowser_network_poll`
205
+ - `opendevbrowser_debug_trace_snapshot` (combined page + console + network + exception channels)
108
206
 
109
- - Keep CDP and relay endpoints local-only by default.
110
- - Do not place secrets in scripts, skill files, or logs.
111
- - Prefer minimal extraction over full-page dumps when handling sensitive pages.
207
+ Reference: `artifacts/debug-trace-playbook.md`
112
208
 
113
- ## Ready-to-Use Flow Template
209
+ ## Fingerprint Hardening
114
210
 
115
- ```text
116
- opendevbrowser_launch noExtension=true
117
- opendevbrowser_goto sessionId="<session-id>" url="https://example.com"
118
- opendevbrowser_wait sessionId="<session-id>" until="networkidle"
119
- opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
120
- # interact with refs
121
- opendevbrowser_snapshot sessionId="<session-id>" format="outline"
122
- ```
211
+ Apply the minimum tier that meets reliability goals.
212
+
213
+ - Tier 0: baseline deterministic automation.
214
+ - Tier 1: coherence profile (default recommended).
215
+ - Tier 2: runtime hardening.
216
+ - Tier 3: adaptive managed hardening (optional).
217
+
218
+ Reference: `artifacts/fingerprint-tiers.md`
219
+
220
+ ## Macro Guidance
221
+
222
+ Use macros as normalized entrypoints for provider workflows.
223
+
224
+ - Keep macro definitions declarative and typed.
225
+ - Expand macros to canonical provider queries.
226
+ - Emit provenance metadata (`macro`, `resolvedQuery`, `provider`).
227
+
228
+ Reference: `artifacts/macro-workflows.md`
@@ -0,0 +1,44 @@
1
+ # Browser Agent Known-Issues Matrix
2
+
3
+ This matrix defines the minimum robustness controls for OpenDevBrowser workflow skills.
4
+
5
+ ## Issue Controls
6
+
7
+ | ID | Known issue | Typical signals | Required controls | Evidence to capture |
8
+ |---|---|---|---|---|
9
+ | `ISSUE-01` | DOM churn invalidates refs | action fails after render, detached/stale element behavior, missing ref | enforce `snapshot -> one action -> snapshot`, retry once after fresh snapshot, avoid reusing refs across navigation | before/after snapshots + failing action + retry outcome |
10
+ | `ISSUE-02` | Frame/iframe boundaries hide interactive targets | expected refs not found in top document, challenge widget rendered in iframe | detect frame context before action, route frame-specific steps, checkpoint when cross-origin challenge frame blocks continuation | snapshot outline showing frame branch + checkpoint note |
11
+ | `ISSUE-03` | Popup/new-tab auth flows break linear scripts | click triggers new tab/popup, current tab loses focus | detect target/page changes, rebind to active auth target, verify post-auth return target | target/page list before and after auth click |
12
+ | `ISSUE-04` | Step-up auth and session expiry alter login path | MFA/passkey prompt appears, unexpected redirect to reauth | branch login state machine explicitly, validate >=2 independent auth success signals, validate reauth policy separately | auth signal log with URL, element, network confirmation |
13
+ | `ISSUE-05` | Anti-bot challenge loops stall automation | repeated challenge pages/widgets, repeated 403/429 around auth/submit | treat as checkpoint, never bypass, set loop budget, escalate after repeated challenge loops | challenge checkpoint log with timestamps and outcome |
14
+ | `ISSUE-06` | Rate-limit pressure and server backoff ignored | 429 responses, throttle banners, `Retry-After` headers | stop aggressive retries, honor `Retry-After`, bounded retry budget with cooldown windows | network poll evidence with status + backoff decision |
15
+ | `ISSUE-07` | MV3 extension service worker suspends state | extension relay disconnects after idle, handshake drop | re-check extension readiness before critical steps, include reconnect path and resumed snapshot checkpoint | daemon status (`extensionConnected`, `extensionHandshakeComplete`) before resume |
16
+ | `ISSUE-08` | Restricted origins and policy blocks | `chrome://` / extension pages blocked, unsupported origin errors | validate URL/domain eligibility before workflow, fail fast with actionable reason | blocked-origin decision in run log |
17
+ | `ISSUE-09` | Pagination drift and duplicate extraction | duplicate records across pages, endless loop/no page delta | canonical dedupe keys, terminal conditions, positive delta gate, checkpoint/resume metadata | pagination state + quality-gate report |
18
+ | `ISSUE-10` | Locale/currency parsing inconsistency | mixed currency symbols, malformed numbers | normalize currency/amount explicitly, avoid cross-currency comparison without conversion context | normalized records with currency and parse confidence |
19
+ | `ISSUE-11` | Discount anchor is weak or misleading | anchor price missing/untrusted, “sale” not below market | separate anchor discount from market discount, tag anchor confidence, require market-baseline confirmation | market analysis with anchor coverage and warnings |
20
+ | `ISSUE-12` | Stale price or unsupported claims in presentation assets | captured price outdated, marketing claims not traceable | enforce freshness checks, claim-to-evidence mapping, block unsupported superlatives | claims-evidence map + pricing timestamp |
21
+
22
+ ## Skill Coverage Targets
23
+
24
+ - `opendevbrowser-login-automation`: `ISSUE-01`, `ISSUE-02`, `ISSUE-03`, `ISSUE-04`, `ISSUE-05`, `ISSUE-06`, `ISSUE-07`
25
+ - `opendevbrowser-form-testing`: `ISSUE-01`, `ISSUE-02`, `ISSUE-05`, `ISSUE-06`, `ISSUE-08`
26
+ - `opendevbrowser-data-extraction`: `ISSUE-01`, `ISSUE-06`, `ISSUE-08`, `ISSUE-09`, `ISSUE-10`
27
+ - `opendevbrowser-shopping`: `ISSUE-06`, `ISSUE-09`, `ISSUE-10`, `ISSUE-11`, `ISSUE-12`
28
+ - `opendevbrowser-product-presentation-asset`: `ISSUE-10`, `ISSUE-11`, `ISSUE-12`
29
+ - `opendevbrowser-research`: `ISSUE-06`, `ISSUE-09`, `ISSUE-10`, `ISSUE-12`
30
+
31
+ ## Source Notes
32
+
33
+ - Playwright best practices (locator and timing stability): https://playwright.dev/docs/best-practices
34
+ - Playwright frames guidance: https://playwright.dev/docs/frames
35
+ - Playwright pages/popups guidance: https://playwright.dev/docs/pages
36
+ - Chrome extension MV3 service worker lifecycle: https://developer.chrome.com/docs/extensions/develop/concepts/service-workers/lifecycle
37
+ - HTTP 429 semantics and `Retry-After`: https://www.rfc-editor.org/rfc/rfc6585
38
+ - OWASP Authentication Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html
39
+ - WCAG 2.2 (accessible authentication): https://www.w3.org/TR/WCAG22/
40
+ - Cloudflare Turnstile testing keys: https://developers.cloudflare.com/turnstile/tutorials/testing/
41
+ - reCAPTCHA testing keys: https://developers.google.com/recaptcha/docs/faq
42
+ - hCaptcha docs: https://docs.hcaptcha.com/
43
+ - RFC 9309 robots protocol: https://www.rfc-editor.org/rfc/rfc9309
44
+ - FTC deceptive pricing guide: https://www.ecfr.gov/current/title-16/chapter-I/subchapter-B/part-233