opendevbrowser 0.0.16 → 0.0.18

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 (616) hide show
  1. package/README.md +201 -79
  2. package/dist/annotate/agent-inbox-store.d.ts +58 -0
  3. package/dist/annotate/agent-inbox-store.d.ts.map +1 -0
  4. package/dist/annotate/agent-inbox.d.ts +25 -0
  5. package/dist/annotate/agent-inbox.d.ts.map +1 -0
  6. package/dist/annotate/direct-annotator.d.ts.map +1 -1
  7. package/dist/annotate/timeout-messages.d.ts +4 -0
  8. package/dist/annotate/timeout-messages.d.ts.map +1 -0
  9. package/dist/automation/coordinator.d.ts +55 -0
  10. package/dist/automation/coordinator.d.ts.map +1 -0
  11. package/dist/browser/annotation-manager.d.ts +7 -1
  12. package/dist/browser/annotation-manager.d.ts.map +1 -1
  13. package/dist/browser/browser-manager.d.ts +153 -48
  14. package/dist/browser/browser-manager.d.ts.map +1 -1
  15. package/dist/browser/canvas-client.d.ts +54 -0
  16. package/dist/browser/canvas-client.d.ts.map +1 -0
  17. package/dist/browser/canvas-code-sync-manager.d.ts +87 -0
  18. package/dist/browser/canvas-code-sync-manager.d.ts.map +1 -0
  19. package/dist/browser/canvas-manager.d.ts +122 -0
  20. package/dist/browser/canvas-manager.d.ts.map +1 -0
  21. package/dist/browser/canvas-runtime-preview-bridge.d.ts +20 -0
  22. package/dist/browser/canvas-runtime-preview-bridge.d.ts.map +1 -0
  23. package/dist/browser/canvas-session-sync-manager.d.ts +21 -0
  24. package/dist/browser/canvas-session-sync-manager.d.ts.map +1 -0
  25. package/dist/browser/global-challenge-coordinator.d.ts +27 -0
  26. package/dist/browser/global-challenge-coordinator.d.ts.map +1 -0
  27. package/dist/browser/manager-types.d.ts +179 -1
  28. package/dist/browser/manager-types.d.ts.map +1 -1
  29. package/dist/browser/ops-browser-manager.d.ts +114 -4
  30. package/dist/browser/ops-browser-manager.d.ts.map +1 -1
  31. package/dist/browser/ops-client.d.ts +17 -1
  32. package/dist/browser/ops-client.d.ts.map +1 -1
  33. package/dist/browser/playwright-runtime.d.ts +4 -0
  34. package/dist/browser/playwright-runtime.d.ts.map +1 -0
  35. package/dist/browser/review-surface.d.ts +9 -0
  36. package/dist/browser/review-surface.d.ts.map +1 -0
  37. package/dist/browser/screencast-recorder.d.ts +57 -0
  38. package/dist/browser/screencast-recorder.d.ts.map +1 -0
  39. package/dist/browser/session-inspector.d.ts +71 -0
  40. package/dist/browser/session-inspector.d.ts.map +1 -0
  41. package/dist/browser/session-store.d.ts +5 -1
  42. package/dist/browser/session-store.d.ts.map +1 -1
  43. package/dist/browser/system-chrome-cookies.d.ts +46 -0
  44. package/dist/browser/system-chrome-cookies.d.ts.map +1 -0
  45. package/dist/browser/target-manager.d.ts +1 -0
  46. package/dist/browser/target-manager.d.ts.map +1 -1
  47. package/dist/cache/chrome-locator.d.ts.map +1 -1
  48. package/dist/cache/chrome-user-data.d.ts +17 -0
  49. package/dist/cache/chrome-user-data.d.ts.map +1 -0
  50. package/dist/canvas/adapter-plugins/loader.d.ts +13 -0
  51. package/dist/canvas/adapter-plugins/loader.d.ts.map +1 -0
  52. package/dist/canvas/adapter-plugins/manifest.d.ts +146 -0
  53. package/dist/canvas/adapter-plugins/manifest.d.ts.map +1 -0
  54. package/dist/canvas/adapter-plugins/types.d.ts +83 -0
  55. package/dist/canvas/adapter-plugins/types.d.ts.map +1 -0
  56. package/dist/canvas/adapter-plugins/validator.d.ts +10 -0
  57. package/dist/canvas/adapter-plugins/validator.d.ts.map +1 -0
  58. package/dist/canvas/code-sync/apply-tsx.d.ts +25 -0
  59. package/dist/canvas/code-sync/apply-tsx.d.ts.map +1 -0
  60. package/dist/canvas/code-sync/graph.d.ts +5 -0
  61. package/dist/canvas/code-sync/graph.d.ts.map +1 -0
  62. package/dist/canvas/code-sync/hash.d.ts +3 -0
  63. package/dist/canvas/code-sync/hash.d.ts.map +1 -0
  64. package/dist/canvas/code-sync/import.d.ts +19 -0
  65. package/dist/canvas/code-sync/import.d.ts.map +1 -0
  66. package/dist/canvas/code-sync/manifest.d.ts +6 -0
  67. package/dist/canvas/code-sync/manifest.d.ts.map +1 -0
  68. package/dist/canvas/code-sync/tsx-adapter.d.ts +8 -0
  69. package/dist/canvas/code-sync/tsx-adapter.d.ts.map +1 -0
  70. package/dist/canvas/code-sync/types.d.ts +244 -0
  71. package/dist/canvas/code-sync/types.d.ts.map +1 -0
  72. package/dist/canvas/code-sync/write.d.ts +9 -0
  73. package/dist/canvas/code-sync/write.d.ts.map +1 -0
  74. package/dist/canvas/document-store.d.ts +91 -0
  75. package/dist/canvas/document-store.d.ts.map +1 -0
  76. package/dist/canvas/export.d.ts +12 -0
  77. package/dist/canvas/export.d.ts.map +1 -0
  78. package/dist/canvas/framework-adapters/custom-elements-v1.d.ts +3 -0
  79. package/dist/canvas/framework-adapters/custom-elements-v1.d.ts.map +1 -0
  80. package/dist/canvas/framework-adapters/html-static-v1.d.ts +3 -0
  81. package/dist/canvas/framework-adapters/html-static-v1.d.ts.map +1 -0
  82. package/dist/canvas/framework-adapters/markup.d.ts +9 -0
  83. package/dist/canvas/framework-adapters/markup.d.ts.map +1 -0
  84. package/dist/canvas/framework-adapters/react-tsx-v2.d.ts +3 -0
  85. package/dist/canvas/framework-adapters/react-tsx-v2.d.ts.map +1 -0
  86. package/dist/canvas/framework-adapters/registry.d.ts +12 -0
  87. package/dist/canvas/framework-adapters/registry.d.ts.map +1 -0
  88. package/dist/canvas/framework-adapters/svelte-sfc-v1.d.ts +3 -0
  89. package/dist/canvas/framework-adapters/svelte-sfc-v1.d.ts.map +1 -0
  90. package/dist/canvas/framework-adapters/types.d.ts +57 -0
  91. package/dist/canvas/framework-adapters/types.d.ts.map +1 -0
  92. package/dist/canvas/framework-adapters/vue-sfc-v1.d.ts +3 -0
  93. package/dist/canvas/framework-adapters/vue-sfc-v1.d.ts.map +1 -0
  94. package/dist/canvas/kits/catalog.d.ts +5 -0
  95. package/dist/canvas/kits/catalog.d.ts.map +1 -0
  96. package/dist/canvas/library-adapters/react/index.d.ts +3 -0
  97. package/dist/canvas/library-adapters/react/index.d.ts.map +1 -0
  98. package/dist/canvas/library-adapters/registry.d.ts +11 -0
  99. package/dist/canvas/library-adapters/registry.d.ts.map +1 -0
  100. package/dist/canvas/library-adapters/types.d.ts +43 -0
  101. package/dist/canvas/library-adapters/types.d.ts.map +1 -0
  102. package/dist/canvas/repo-store.d.ts +12 -0
  103. package/dist/canvas/repo-store.d.ts.map +1 -0
  104. package/dist/canvas/starters/catalog.d.ts +34 -0
  105. package/dist/canvas/starters/catalog.d.ts.map +1 -0
  106. package/dist/canvas/surface-palette.d.ts +15 -0
  107. package/dist/canvas/surface-palette.d.ts.map +1 -0
  108. package/dist/canvas/token-references.d.ts +22 -0
  109. package/dist/canvas/token-references.d.ts.map +1 -0
  110. package/dist/canvas/types.d.ts +594 -0
  111. package/dist/canvas/types.d.ts.map +1 -0
  112. package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js +7 -0
  113. package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js.map +1 -0
  114. package/dist/challenges/action-loop.d.ts +13 -0
  115. package/dist/challenges/action-loop.d.ts.map +1 -0
  116. package/dist/challenges/capability-matrix.d.ts +3 -0
  117. package/dist/challenges/capability-matrix.d.ts.map +1 -0
  118. package/dist/challenges/evidence-bundle.d.ts +48 -0
  119. package/dist/challenges/evidence-bundle.d.ts.map +1 -0
  120. package/dist/challenges/governed-adapter-gateway.d.ts +4 -0
  121. package/dist/challenges/governed-adapter-gateway.d.ts.map +1 -0
  122. package/dist/challenges/human-yield-gate.d.ts +20 -0
  123. package/dist/challenges/human-yield-gate.d.ts.map +1 -0
  124. package/dist/challenges/index.d.ts +15 -0
  125. package/dist/challenges/index.d.ts.map +1 -0
  126. package/dist/challenges/interpreter.d.ts +3 -0
  127. package/dist/challenges/interpreter.d.ts.map +1 -0
  128. package/dist/challenges/optional-computer-use-bridge.d.ts +9 -0
  129. package/dist/challenges/optional-computer-use-bridge.d.ts.map +1 -0
  130. package/dist/challenges/orchestrator.d.ts +32 -0
  131. package/dist/challenges/orchestrator.d.ts.map +1 -0
  132. package/dist/challenges/outcome-recorder.d.ts +8 -0
  133. package/dist/challenges/outcome-recorder.d.ts.map +1 -0
  134. package/dist/challenges/owned-environment-lane.d.ts +3 -0
  135. package/dist/challenges/owned-environment-lane.d.ts.map +1 -0
  136. package/dist/challenges/policy-gate.d.ts +9 -0
  137. package/dist/challenges/policy-gate.d.ts.map +1 -0
  138. package/dist/challenges/sanctioned-identity-lane.d.ts +3 -0
  139. package/dist/challenges/sanctioned-identity-lane.d.ts.map +1 -0
  140. package/dist/challenges/service-adapter-lane.d.ts +3 -0
  141. package/dist/challenges/service-adapter-lane.d.ts.map +1 -0
  142. package/dist/challenges/strategy-selector.d.ts +10 -0
  143. package/dist/challenges/strategy-selector.d.ts.map +1 -0
  144. package/dist/challenges/types.d.ts +277 -0
  145. package/dist/challenges/types.d.ts.map +1 -0
  146. package/dist/challenges/verification-gate.d.ts +15 -0
  147. package/dist/challenges/verification-gate.d.ts.map +1 -0
  148. package/dist/chunk-5FZQJRBQ.js +15256 -0
  149. package/dist/chunk-5FZQJRBQ.js.map +1 -0
  150. package/dist/{chunk-7W3SPXIB.js → chunk-FUSXMW3G.js} +4 -1
  151. package/dist/chunk-L57D35TB.js +33513 -0
  152. package/dist/chunk-L57D35TB.js.map +1 -0
  153. package/dist/chunk-TBUCZX4A.js +34 -0
  154. package/dist/chunk-TBUCZX4A.js.map +1 -0
  155. package/dist/chunk-Y2KL55OG.js +59 -0
  156. package/dist/chunk-Y2KL55OG.js.map +1 -0
  157. package/dist/chunk-YBQECXZX.js +409 -0
  158. package/dist/chunk-YBQECXZX.js.map +1 -0
  159. package/dist/cli/args.d.ts +4 -4
  160. package/dist/cli/args.d.ts.map +1 -1
  161. package/dist/cli/commands/annotate.d.ts +11 -0
  162. package/dist/cli/commands/annotate.d.ts.map +1 -1
  163. package/dist/cli/commands/artifacts.d.ts.map +1 -1
  164. package/dist/cli/commands/canvas.d.ts +45 -0
  165. package/dist/cli/commands/canvas.d.ts.map +1 -0
  166. package/dist/cli/commands/daemon.d.ts +7 -0
  167. package/dist/cli/commands/daemon.d.ts.map +1 -1
  168. package/dist/cli/commands/desktop/accessibility-snapshot.d.ts +3 -0
  169. package/dist/cli/commands/desktop/accessibility-snapshot.d.ts.map +1 -0
  170. package/dist/cli/commands/desktop/active-window.d.ts +3 -0
  171. package/dist/cli/commands/desktop/active-window.d.ts.map +1 -0
  172. package/dist/cli/commands/desktop/capture-desktop.d.ts +3 -0
  173. package/dist/cli/commands/desktop/capture-desktop.d.ts.map +1 -0
  174. package/dist/cli/commands/desktop/capture-window.d.ts +3 -0
  175. package/dist/cli/commands/desktop/capture-window.d.ts.map +1 -0
  176. package/dist/cli/commands/desktop/shared.d.ts +19 -0
  177. package/dist/cli/commands/desktop/shared.d.ts.map +1 -0
  178. package/dist/cli/commands/desktop/status.d.ts +3 -0
  179. package/dist/cli/commands/desktop/status.d.ts.map +1 -0
  180. package/dist/cli/commands/desktop/windows.d.ts +3 -0
  181. package/dist/cli/commands/desktop/windows.d.ts.map +1 -0
  182. package/dist/cli/commands/devtools/dialog.d.ts +19 -0
  183. package/dist/cli/commands/devtools/dialog.d.ts.map +1 -0
  184. package/dist/cli/commands/devtools/perf.d.ts.map +1 -1
  185. package/dist/cli/commands/devtools/screencast-start.d.ts +20 -0
  186. package/dist/cli/commands/devtools/screencast-start.d.ts.map +1 -0
  187. package/dist/cli/commands/devtools/screencast-stop.d.ts +17 -0
  188. package/dist/cli/commands/devtools/screencast-stop.d.ts.map +1 -0
  189. package/dist/cli/commands/devtools/screenshot.d.ts +3 -0
  190. package/dist/cli/commands/devtools/screenshot.d.ts.map +1 -1
  191. package/dist/cli/commands/dom/attr.d.ts.map +1 -1
  192. package/dist/cli/commands/dom/checked.d.ts.map +1 -1
  193. package/dist/cli/commands/dom/enabled.d.ts.map +1 -1
  194. package/dist/cli/commands/dom/html.d.ts.map +1 -1
  195. package/dist/cli/commands/dom/text.d.ts.map +1 -1
  196. package/dist/cli/commands/dom/value.d.ts.map +1 -1
  197. package/dist/cli/commands/dom/visible.d.ts.map +1 -1
  198. package/dist/cli/commands/export/clone-component.d.ts +9 -0
  199. package/dist/cli/commands/export/clone-component.d.ts.map +1 -1
  200. package/dist/cli/commands/export/clone-page.d.ts +8 -0
  201. package/dist/cli/commands/export/clone-page.d.ts.map +1 -1
  202. package/dist/cli/commands/interact/check.d.ts.map +1 -1
  203. package/dist/cli/commands/interact/click.d.ts.map +1 -1
  204. package/dist/cli/commands/interact/hover.d.ts.map +1 -1
  205. package/dist/cli/commands/interact/pointer-down.d.ts +7 -0
  206. package/dist/cli/commands/interact/pointer-down.d.ts.map +1 -0
  207. package/dist/cli/commands/interact/pointer-drag.d.ts +7 -0
  208. package/dist/cli/commands/interact/pointer-drag.d.ts.map +1 -0
  209. package/dist/cli/commands/interact/pointer-move.d.ts +7 -0
  210. package/dist/cli/commands/interact/pointer-move.d.ts.map +1 -0
  211. package/dist/cli/commands/interact/pointer-shared.d.ts +6 -0
  212. package/dist/cli/commands/interact/pointer-shared.d.ts.map +1 -0
  213. package/dist/cli/commands/interact/pointer-up.d.ts +7 -0
  214. package/dist/cli/commands/interact/pointer-up.d.ts.map +1 -0
  215. package/dist/cli/commands/interact/press.d.ts.map +1 -1
  216. package/dist/cli/commands/interact/scroll-into-view.d.ts.map +1 -1
  217. package/dist/cli/commands/interact/scroll.d.ts.map +1 -1
  218. package/dist/cli/commands/interact/select.d.ts.map +1 -1
  219. package/dist/cli/commands/interact/type.d.ts.map +1 -1
  220. package/dist/cli/commands/interact/uncheck.d.ts.map +1 -1
  221. package/dist/cli/commands/interact/upload.d.ts +18 -0
  222. package/dist/cli/commands/interact/upload.d.ts.map +1 -0
  223. package/dist/cli/commands/macro-resolve.d.ts +2 -0
  224. package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
  225. package/dist/cli/commands/native.d.ts +22 -8
  226. package/dist/cli/commands/native.d.ts.map +1 -1
  227. package/dist/cli/commands/nav/goto.d.ts.map +1 -1
  228. package/dist/cli/commands/nav/review.d.ts +7 -0
  229. package/dist/cli/commands/nav/review.d.ts.map +1 -0
  230. package/dist/cli/commands/nav/snapshot.d.ts.map +1 -1
  231. package/dist/cli/commands/nav/wait.d.ts.map +1 -1
  232. package/dist/cli/commands/pages/open.d.ts.map +1 -1
  233. package/dist/cli/commands/product-video.d.ts +2 -0
  234. package/dist/cli/commands/product-video.d.ts.map +1 -1
  235. package/dist/cli/commands/research.d.ts +3 -0
  236. package/dist/cli/commands/research.d.ts.map +1 -1
  237. package/dist/cli/commands/run.d.ts +14 -0
  238. package/dist/cli/commands/run.d.ts.map +1 -1
  239. package/dist/cli/commands/serve.d.ts +1 -21
  240. package/dist/cli/commands/serve.d.ts.map +1 -1
  241. package/dist/cli/commands/session/connect.d.ts.map +1 -1
  242. package/dist/cli/commands/session/disconnect.d.ts.map +1 -1
  243. package/dist/cli/commands/session/inspector.d.ts +21 -0
  244. package/dist/cli/commands/session/inspector.d.ts.map +1 -0
  245. package/dist/cli/commands/session/launch.d.ts.map +1 -1
  246. package/dist/cli/commands/shopping.d.ts +5 -0
  247. package/dist/cli/commands/shopping.d.ts.map +1 -1
  248. package/dist/cli/commands/status.d.ts +2 -9
  249. package/dist/cli/commands/status.d.ts.map +1 -1
  250. package/dist/cli/commands/targets/new.d.ts.map +1 -1
  251. package/dist/cli/daemon-autostart.d.ts +11 -0
  252. package/dist/cli/daemon-autostart.d.ts.map +1 -1
  253. package/dist/cli/daemon-client.d.ts +3 -0
  254. package/dist/cli/daemon-client.d.ts.map +1 -1
  255. package/dist/cli/daemon-commands.d.ts.map +1 -1
  256. package/dist/cli/daemon-state.d.ts +16 -0
  257. package/dist/cli/daemon-state.d.ts.map +1 -1
  258. package/dist/cli/daemon-status.d.ts +7 -2
  259. package/dist/cli/daemon-status.d.ts.map +1 -1
  260. package/dist/cli/daemon.d.ts +1 -0
  261. package/dist/cli/daemon.d.ts.map +1 -1
  262. package/dist/cli/help.d.ts +19 -3
  263. package/dist/cli/help.d.ts.map +1 -1
  264. package/dist/cli/index.js +2927 -932
  265. package/dist/cli/index.js.map +1 -1
  266. package/dist/cli/install-autostart-output.d.ts +6 -0
  267. package/dist/cli/install-autostart-output.d.ts.map +1 -0
  268. package/dist/cli/install-autostart-reconciliation.d.ts +23 -0
  269. package/dist/cli/install-autostart-reconciliation.d.ts.map +1 -0
  270. package/dist/cli/installers/skills.d.ts +42 -6
  271. package/dist/cli/installers/skills.d.ts.map +1 -1
  272. package/dist/cli/output.d.ts +3 -0
  273. package/dist/cli/output.d.ts.map +1 -1
  274. package/dist/cli/remote-canvas-manager.d.ts +8 -0
  275. package/dist/cli/remote-canvas-manager.d.ts.map +1 -0
  276. package/dist/cli/remote-desktop-runtime.d.ts +15 -0
  277. package/dist/cli/remote-desktop-runtime.d.ts.map +1 -0
  278. package/dist/cli/remote-manager.d.ts +27 -3
  279. package/dist/cli/remote-manager.d.ts.map +1 -1
  280. package/dist/cli/remote-relay.d.ts +2 -0
  281. package/dist/cli/remote-relay.d.ts.map +1 -1
  282. package/dist/cli/transport-timeouts.d.ts +8 -0
  283. package/dist/cli/transport-timeouts.d.ts.map +1 -0
  284. package/dist/cli/utils/http.d.ts +9 -0
  285. package/dist/cli/utils/http.d.ts.map +1 -1
  286. package/dist/cli/utils/parse.d.ts +3 -0
  287. package/dist/cli/utils/parse.d.ts.map +1 -1
  288. package/dist/cli/utils/skills.d.ts +1 -2
  289. package/dist/cli/utils/skills.d.ts.map +1 -1
  290. package/dist/cli/utils/workflow-message.d.ts +2 -0
  291. package/dist/cli/utils/workflow-message.d.ts.map +1 -0
  292. package/dist/config.d.ts +47 -0
  293. package/dist/config.d.ts.map +1 -1
  294. package/dist/core/bootstrap.d.ts.map +1 -1
  295. package/dist/core/index.d.ts +1 -0
  296. package/dist/core/index.d.ts.map +1 -1
  297. package/dist/core/logging.d.ts +3 -1
  298. package/dist/core/logging.d.ts.map +1 -1
  299. package/dist/core/runtime-assemblies.d.ts +22 -0
  300. package/dist/core/runtime-assemblies.d.ts.map +1 -0
  301. package/dist/core/types.d.ts +17 -0
  302. package/dist/core/types.d.ts.map +1 -1
  303. package/dist/desktop/audit.d.ts +37 -0
  304. package/dist/desktop/audit.d.ts.map +1 -0
  305. package/dist/desktop/errors.d.ts +7 -0
  306. package/dist/desktop/errors.d.ts.map +1 -0
  307. package/dist/desktop/index.d.ts +6 -0
  308. package/dist/desktop/index.d.ts.map +1 -0
  309. package/dist/desktop/runtime.d.ts +26 -0
  310. package/dist/desktop/runtime.d.ts.map +1 -0
  311. package/dist/desktop/types.d.ts +76 -0
  312. package/dist/desktop/types.d.ts.map +1 -0
  313. package/dist/extension-extractor.d.ts +6 -0
  314. package/dist/extension-extractor.d.ts.map +1 -1
  315. package/dist/fs-UMRKOBNN.js +7 -0
  316. package/dist/fs-UMRKOBNN.js.map +1 -0
  317. package/dist/index.d.ts.map +1 -1
  318. package/dist/index.js +1221 -460
  319. package/dist/index.js.map +1 -1
  320. package/dist/integrations/figma/assets.d.ts +13 -0
  321. package/dist/integrations/figma/assets.d.ts.map +1 -0
  322. package/dist/integrations/figma/auth.d.ts +3 -0
  323. package/dist/integrations/figma/auth.d.ts.map +1 -0
  324. package/dist/integrations/figma/client.d.ts +42 -0
  325. package/dist/integrations/figma/client.d.ts.map +1 -0
  326. package/dist/integrations/figma/mappers.d.ts +23 -0
  327. package/dist/integrations/figma/mappers.d.ts.map +1 -0
  328. package/dist/integrations/figma/normalize.d.ts +99 -0
  329. package/dist/integrations/figma/normalize.d.ts.map +1 -0
  330. package/dist/integrations/figma/url.d.ts +17 -0
  331. package/dist/integrations/figma/url.d.ts.map +1 -0
  332. package/dist/integrations/figma/variables.d.ts +21 -0
  333. package/dist/integrations/figma/variables.d.ts.map +1 -0
  334. package/dist/macros/execute-runtime.d.ts +19 -0
  335. package/dist/macros/execute-runtime.d.ts.map +1 -0
  336. package/dist/macros/execute.d.ts +3 -1
  337. package/dist/macros/execute.d.ts.map +1 -1
  338. package/dist/{macros-NUBRM44Y.js → macros-ND2M7LWU.js} +2 -2
  339. package/dist/opendevbrowser.d.ts.map +1 -1
  340. package/dist/opendevbrowser.js +1221 -460
  341. package/dist/opendevbrowser.js.map +1 -1
  342. package/dist/providers/blocker.d.ts.map +1 -1
  343. package/dist/providers/browser-fallback.d.ts +30 -0
  344. package/dist/providers/browser-fallback.d.ts.map +1 -0
  345. package/dist/providers/constraint.d.ts +45 -0
  346. package/dist/providers/constraint.d.ts.map +1 -0
  347. package/dist/providers/index.d.ts +11 -2
  348. package/dist/providers/index.d.ts.map +1 -1
  349. package/dist/providers/policy.d.ts.map +1 -1
  350. package/dist/providers/product-video-compiler.d.ts +92 -0
  351. package/dist/providers/product-video-compiler.d.ts.map +1 -0
  352. package/dist/providers/registry.d.ts +37 -1
  353. package/dist/providers/registry.d.ts.map +1 -1
  354. package/dist/providers/renderer.d.ts.map +1 -1
  355. package/dist/providers/research-compiler.d.ts +64 -0
  356. package/dist/providers/research-compiler.d.ts.map +1 -0
  357. package/dist/providers/research-executor.d.ts +27 -0
  358. package/dist/providers/research-executor.d.ts.map +1 -0
  359. package/dist/providers/runtime-bundle.d.ts +26 -0
  360. package/dist/providers/runtime-bundle.d.ts.map +1 -0
  361. package/dist/providers/runtime-factory.d.ts +6 -1
  362. package/dist/providers/runtime-factory.d.ts.map +1 -1
  363. package/dist/providers/runtime-policy.d.ts +24 -0
  364. package/dist/providers/runtime-policy.d.ts.map +1 -0
  365. package/dist/providers/shared/anti-bot-policy.d.ts +3 -2
  366. package/dist/providers/shared/anti-bot-policy.d.ts.map +1 -1
  367. package/dist/providers/shopping/index.d.ts +11 -1
  368. package/dist/providers/shopping/index.d.ts.map +1 -1
  369. package/dist/providers/shopping-compiler.d.ts +51 -0
  370. package/dist/providers/shopping-compiler.d.ts.map +1 -0
  371. package/dist/providers/shopping-executor.d.ts +18 -0
  372. package/dist/providers/shopping-executor.d.ts.map +1 -0
  373. package/dist/providers/shopping-postprocess.d.ts +46 -0
  374. package/dist/providers/shopping-postprocess.d.ts.map +1 -0
  375. package/dist/providers/shopping-workflow.d.ts +33 -0
  376. package/dist/providers/shopping-workflow.d.ts.map +1 -0
  377. package/dist/providers/social/platform.d.ts +2 -1
  378. package/dist/providers/social/platform.d.ts.map +1 -1
  379. package/dist/providers/social/search-quality.d.ts +16 -0
  380. package/dist/providers/social/search-quality.d.ts.map +1 -0
  381. package/dist/providers/social/youtube-resolver.d.ts +2 -1
  382. package/dist/providers/social/youtube-resolver.d.ts.map +1 -1
  383. package/dist/providers/social/youtube.d.ts.map +1 -1
  384. package/dist/providers/types.d.ts +116 -4
  385. package/dist/providers/types.d.ts.map +1 -1
  386. package/dist/providers/web/crawl-worker.d.ts.map +1 -1
  387. package/dist/providers/web/extract.d.ts +16 -0
  388. package/dist/providers/web/extract.d.ts.map +1 -1
  389. package/dist/providers/web/index.d.ts.map +1 -1
  390. package/dist/providers/workflow-contracts.d.ts +53 -0
  391. package/dist/providers/workflow-contracts.d.ts.map +1 -0
  392. package/dist/providers/workflows.d.ts +30 -6
  393. package/dist/providers/workflows.d.ts.map +1 -1
  394. package/dist/providers-G36AM3Z2.js +121 -0
  395. package/dist/providers-G36AM3Z2.js.map +1 -0
  396. package/dist/public-surface/generated-manifest.d.ts +1168 -0
  397. package/dist/public-surface/generated-manifest.d.ts.map +1 -0
  398. package/dist/public-surface/source.d.ts +437 -0
  399. package/dist/public-surface/source.d.ts.map +1 -0
  400. package/dist/relay/protocol.d.ts +108 -4
  401. package/dist/relay/protocol.d.ts.map +1 -1
  402. package/dist/relay/relay-endpoints.d.ts +21 -0
  403. package/dist/relay/relay-endpoints.d.ts.map +1 -1
  404. package/dist/relay/relay-server.d.ts +32 -1
  405. package/dist/relay/relay-server.d.ts.map +1 -1
  406. package/dist/relay/relay-types.d.ts +3 -0
  407. package/dist/relay/relay-types.d.ts.map +1 -1
  408. package/dist/skills/bundled-skill-directories.d.ts +8 -0
  409. package/dist/skills/bundled-skill-directories.d.ts.map +1 -0
  410. package/dist/skills/skill-loader.d.ts +9 -1
  411. package/dist/skills/skill-loader.d.ts.map +1 -1
  412. package/dist/skills/skill-loader.js +7 -0
  413. package/dist/skills/skill-loader.js.map +1 -0
  414. package/dist/skills/skill-nudge.d.ts.map +1 -1
  415. package/dist/skills/types.d.ts +31 -0
  416. package/dist/skills/types.d.ts.map +1 -1
  417. package/dist/snapshot/ops-snapshot.d.ts +1 -1
  418. package/dist/snapshot/ops-snapshot.d.ts.map +1 -1
  419. package/dist/snapshot/refs.d.ts +6 -1
  420. package/dist/snapshot/refs.d.ts.map +1 -1
  421. package/dist/snapshot/snapshotter.d.ts.map +1 -1
  422. package/dist/tools/annotate.d.ts.map +1 -1
  423. package/dist/tools/canvas.d.ts +4 -0
  424. package/dist/tools/canvas.d.ts.map +1 -0
  425. package/dist/tools/check.d.ts.map +1 -1
  426. package/dist/tools/click.d.ts.map +1 -1
  427. package/dist/tools/clone_component.d.ts.map +1 -1
  428. package/dist/tools/clone_page.d.ts.map +1 -1
  429. package/dist/tools/connect.d.ts.map +1 -1
  430. package/dist/tools/deps.d.ts +6 -0
  431. package/dist/tools/deps.d.ts.map +1 -1
  432. package/dist/tools/desktop-shared.d.ts +6 -0
  433. package/dist/tools/desktop-shared.d.ts.map +1 -0
  434. package/dist/tools/desktop_accessibility_snapshot.d.ts +4 -0
  435. package/dist/tools/desktop_accessibility_snapshot.d.ts.map +1 -0
  436. package/dist/tools/desktop_active_window.d.ts +4 -0
  437. package/dist/tools/desktop_active_window.d.ts.map +1 -0
  438. package/dist/tools/desktop_capture_desktop.d.ts +4 -0
  439. package/dist/tools/desktop_capture_desktop.d.ts.map +1 -0
  440. package/dist/tools/desktop_capture_window.d.ts +4 -0
  441. package/dist/tools/desktop_capture_window.d.ts.map +1 -0
  442. package/dist/tools/desktop_status.d.ts +4 -0
  443. package/dist/tools/desktop_status.d.ts.map +1 -0
  444. package/dist/tools/desktop_windows.d.ts +4 -0
  445. package/dist/tools/desktop_windows.d.ts.map +1 -0
  446. package/dist/tools/dialog.d.ts +4 -0
  447. package/dist/tools/dialog.d.ts.map +1 -0
  448. package/dist/tools/dom_get_html.d.ts.map +1 -1
  449. package/dist/tools/dom_get_text.d.ts.map +1 -1
  450. package/dist/tools/get_attr.d.ts.map +1 -1
  451. package/dist/tools/get_value.d.ts.map +1 -1
  452. package/dist/tools/goto.d.ts.map +1 -1
  453. package/dist/tools/hover.d.ts.map +1 -1
  454. package/dist/tools/index.d.ts +3 -0
  455. package/dist/tools/index.d.ts.map +1 -1
  456. package/dist/tools/is_checked.d.ts.map +1 -1
  457. package/dist/tools/is_enabled.d.ts.map +1 -1
  458. package/dist/tools/is_visible.d.ts.map +1 -1
  459. package/dist/tools/launch.d.ts.map +1 -1
  460. package/dist/tools/macro_resolve.d.ts.map +1 -1
  461. package/dist/tools/perf.d.ts.map +1 -1
  462. package/dist/tools/pointer_down.d.ts +4 -0
  463. package/dist/tools/pointer_down.d.ts.map +1 -0
  464. package/dist/tools/pointer_drag.d.ts +4 -0
  465. package/dist/tools/pointer_drag.d.ts.map +1 -0
  466. package/dist/tools/pointer_move.d.ts +4 -0
  467. package/dist/tools/pointer_move.d.ts.map +1 -0
  468. package/dist/tools/pointer_up.d.ts +4 -0
  469. package/dist/tools/pointer_up.d.ts.map +1 -0
  470. package/dist/tools/press.d.ts.map +1 -1
  471. package/dist/tools/product_video_run.d.ts.map +1 -1
  472. package/dist/tools/prompting_guide.d.ts.map +1 -1
  473. package/dist/tools/research_run.d.ts.map +1 -1
  474. package/dist/tools/response.d.ts +4 -1
  475. package/dist/tools/response.d.ts.map +1 -1
  476. package/dist/tools/review.d.ts +4 -0
  477. package/dist/tools/review.d.ts.map +1 -0
  478. package/dist/tools/screencast_start.d.ts +4 -0
  479. package/dist/tools/screencast_start.d.ts.map +1 -0
  480. package/dist/tools/screencast_stop.d.ts +4 -0
  481. package/dist/tools/screencast_stop.d.ts.map +1 -0
  482. package/dist/tools/screenshot.d.ts.map +1 -1
  483. package/dist/tools/scroll.d.ts.map +1 -1
  484. package/dist/tools/scroll_into_view.d.ts.map +1 -1
  485. package/dist/tools/select.d.ts.map +1 -1
  486. package/dist/tools/session_inspector.d.ts +4 -0
  487. package/dist/tools/session_inspector.d.ts.map +1 -0
  488. package/dist/tools/shopping_run.d.ts.map +1 -1
  489. package/dist/tools/skill_list.d.ts.map +1 -1
  490. package/dist/tools/skill_load.d.ts.map +1 -1
  491. package/dist/tools/snapshot.d.ts.map +1 -1
  492. package/dist/tools/type.d.ts.map +1 -1
  493. package/dist/tools/uncheck.d.ts.map +1 -1
  494. package/dist/tools/upload.d.ts +4 -0
  495. package/dist/tools/upload.d.ts.map +1 -0
  496. package/dist/tools/wait.d.ts.map +1 -1
  497. package/dist/tools/workflow-runtime.d.ts +4 -2
  498. package/dist/tools/workflow-runtime.d.ts.map +1 -1
  499. package/dist/utils/package-assets.d.ts +4 -0
  500. package/dist/utils/package-assets.d.ts.map +1 -0
  501. package/extension/canvas.html +1006 -0
  502. package/extension/dist/annotate-content.css +15 -6
  503. package/extension/dist/annotate-content.js +175 -35
  504. package/extension/dist/annotation-payload.js +199 -0
  505. package/extension/dist/background.js +544 -69
  506. package/extension/dist/canvas/canvas-runtime.js +1490 -0
  507. package/extension/dist/canvas/model.js +341 -0
  508. package/extension/dist/canvas/viewport-fit.js +67 -0
  509. package/extension/dist/canvas-page.js +3609 -0
  510. package/extension/dist/ops/dom-bridge.js +255 -3
  511. package/extension/dist/ops/ops-runtime.js +3324 -301
  512. package/extension/dist/ops/ops-session-store.js +97 -112
  513. package/extension/dist/ops/snapshot-builder.js +2 -2
  514. package/extension/dist/ops/snapshot-shared.js +2 -2
  515. package/extension/dist/ops/target-session-coordinator.js +159 -0
  516. package/extension/dist/popup.js +201 -42
  517. package/extension/dist/services/CDPRouter.js +1567 -63
  518. package/extension/dist/services/ConnectionManager.js +453 -78
  519. package/extension/dist/services/RelayClient.js +79 -30
  520. package/extension/dist/services/TabManager.js +118 -22
  521. package/extension/dist/services/TargetSessionMap.js +127 -3
  522. package/extension/dist/services/attach-errors.js +20 -0
  523. package/extension/dist/services/cdp-router-commands.js +135 -8
  524. package/extension/dist/services/url-restrictions.js +9 -13
  525. package/extension/dist/types.js +2 -0
  526. package/extension/manifest.json +2 -2
  527. package/extension/popup.html +59 -6
  528. package/package.json +19 -9
  529. package/skills/AGENTS.md +8 -4
  530. package/skills/opendevbrowser-best-practices/SKILL.md +183 -6
  531. package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +1 -0
  532. package/skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md +141 -0
  533. package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +129 -19
  534. package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +9 -2
  535. package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +6 -0
  536. package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +58 -0
  537. package/skills/opendevbrowser-best-practices/assets/templates/canvas-blocker-checklist.json +70 -0
  538. package/skills/opendevbrowser-best-practices/assets/templates/canvas-feedback-eval.json +73 -0
  539. package/skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json +67 -0
  540. package/skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json +126 -0
  541. package/skills/opendevbrowser-best-practices/assets/templates/robustness-checklist.json +57 -0
  542. package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +674 -0
  543. package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +12 -3
  544. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +107 -12
  545. package/skills/opendevbrowser-best-practices/scripts/resolve-odb-cli.sh +100 -0
  546. package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +83 -1
  547. package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +365 -84
  548. package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +208 -0
  549. package/skills/opendevbrowser-continuity-ledger/SKILL.md +14 -1
  550. package/skills/opendevbrowser-continuity-ledger/scripts/validate-skill-assets.sh +61 -0
  551. package/skills/opendevbrowser-data-extraction/SKILL.md +6 -0
  552. package/skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh +112 -0
  553. package/skills/opendevbrowser-design-agent/SKILL.md +275 -0
  554. package/skills/opendevbrowser-design-agent/artifacts/app-shell-and-state-wiring.md +84 -0
  555. package/skills/opendevbrowser-design-agent/artifacts/async-search-state-ownership.md +58 -0
  556. package/skills/opendevbrowser-design-agent/artifacts/component-pattern-index.md +130 -0
  557. package/skills/opendevbrowser-design-agent/artifacts/design-contract-playbook.md +157 -0
  558. package/skills/opendevbrowser-design-agent/artifacts/design-release-gate.md +40 -0
  559. package/skills/opendevbrowser-design-agent/artifacts/design-workflows.md +153 -0
  560. package/skills/opendevbrowser-design-agent/artifacts/existing-surface-adaptation.md +56 -0
  561. package/skills/opendevbrowser-design-agent/artifacts/external-pattern-synthesis.md +103 -0
  562. package/skills/opendevbrowser-design-agent/artifacts/frontend-evaluation-rubric.md +61 -0
  563. package/skills/opendevbrowser-design-agent/artifacts/implementation-anti-patterns.md +163 -0
  564. package/skills/opendevbrowser-design-agent/artifacts/isolated-preview-validation.md +68 -0
  565. package/skills/opendevbrowser-design-agent/artifacts/loading-and-feedback-surfaces.md +56 -0
  566. package/skills/opendevbrowser-design-agent/artifacts/opendevbrowser-ui-example-map.md +44 -0
  567. package/skills/opendevbrowser-design-agent/artifacts/performance-audit-playbook.md +70 -0
  568. package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +81 -0
  569. package/skills/opendevbrowser-design-agent/artifacts/scroll-reveal-surface-planning.md +64 -0
  570. package/skills/opendevbrowser-design-agent/artifacts/state-ownership-matrix.md +36 -0
  571. package/skills/opendevbrowser-design-agent/artifacts/theming-and-token-ownership.md +43 -0
  572. package/skills/opendevbrowser-design-agent/assets/templates/canvas-generation-plan.design.v1.json +58 -0
  573. package/skills/opendevbrowser-design-agent/assets/templates/design-audit-report.v1.md +34 -0
  574. package/skills/opendevbrowser-design-agent/assets/templates/design-brief.v1.md +40 -0
  575. package/skills/opendevbrowser-design-agent/assets/templates/design-contract.v1.json +226 -0
  576. package/skills/opendevbrowser-design-agent/assets/templates/design-release-gate.v1.json +35 -0
  577. package/skills/opendevbrowser-design-agent/assets/templates/design-review-checklist.json +57 -0
  578. package/skills/opendevbrowser-design-agent/assets/templates/real-surface-design-matrix.json +32 -0
  579. package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +31 -0
  580. package/skills/opendevbrowser-design-agent/scripts/design-workflow.sh +171 -0
  581. package/skills/opendevbrowser-design-agent/scripts/extract-canvas-plan.sh +56 -0
  582. package/skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh +223 -0
  583. package/skills/opendevbrowser-form-testing/SKILL.md +19 -3
  584. package/skills/opendevbrowser-form-testing/artifacts/form-workflows.md +5 -4
  585. package/skills/opendevbrowser-form-testing/assets/templates/challenge-decision-tree.json +2 -0
  586. package/skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh +109 -0
  587. package/skills/opendevbrowser-login-automation/SKILL.md +21 -3
  588. package/skills/opendevbrowser-login-automation/artifacts/login-workflows.md +5 -4
  589. package/skills/opendevbrowser-login-automation/assets/templates/auth-signals.json +5 -0
  590. package/skills/opendevbrowser-login-automation/assets/templates/login-scenario-matrix.json +3 -2
  591. package/skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh +17 -1
  592. package/skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh +133 -0
  593. package/skills/opendevbrowser-product-presentation-asset/SKILL.md +23 -11
  594. package/skills/opendevbrowser-product-presentation-asset/artifacts/asset-pack-assembly.md +5 -3
  595. package/skills/opendevbrowser-product-presentation-asset/assets/templates/shot-list.md +2 -0
  596. package/skills/opendevbrowser-product-presentation-asset/assets/templates/video-assembly.md +3 -2
  597. package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +5 -1
  598. package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +6 -2
  599. package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +5 -1
  600. package/skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh +20 -7
  601. package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +39 -0
  602. package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +5 -1
  603. package/skills/opendevbrowser-research/SKILL.md +14 -6
  604. package/skills/opendevbrowser-research/scripts/render-output.sh +5 -1
  605. package/skills/opendevbrowser-research/scripts/run-research.sh +5 -1
  606. package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +45 -0
  607. package/skills/opendevbrowser-research/scripts/write-artifacts.sh +5 -1
  608. package/skills/opendevbrowser-shopping/SKILL.md +20 -1
  609. package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +6 -2
  610. package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +5 -1
  611. package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +5 -1
  612. package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +54 -0
  613. package/dist/chunk-ST7CO5FA.js +0 -18668
  614. package/dist/chunk-ST7CO5FA.js.map +0 -1
  615. /package/dist/{chunk-7W3SPXIB.js.map → chunk-FUSXMW3G.js.map} +0 -0
  616. /package/dist/{macros-NUBRM44Y.js.map → macros-ND2M7LWU.js.map} +0 -0
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ if [[ $# -lt 1 || $# -gt 2 ]]; then
5
+ cat <<'EOF' >&2
6
+ Usage:
7
+ ./skills/opendevbrowser-design-agent/scripts/extract-canvas-plan.sh <design-contract.json> [canvas-session.json]
8
+ EOF
9
+ exit 2
10
+ fi
11
+
12
+ input_path="$1"
13
+ session_path="${2:-}"
14
+
15
+ node - "$input_path" "$session_path" <<'NODE'
16
+ const fs = require("node:fs");
17
+
18
+ const inputPath = process.argv[2];
19
+ const sessionPath = process.argv[3];
20
+ const requiredKeys = [
21
+ "targetOutcome",
22
+ "visualDirection",
23
+ "layoutStrategy",
24
+ "contentStrategy",
25
+ "componentStrategy",
26
+ "motionPosture",
27
+ "responsivePosture",
28
+ "accessibilityPosture",
29
+ "validationTargets"
30
+ ];
31
+
32
+ const payload = JSON.parse(fs.readFileSync(inputPath, "utf8"));
33
+ const plan = payload.generationPlan ?? payload;
34
+ const missing = requiredKeys.filter((key) => !(key in plan));
35
+
36
+ let sessionPayload = null;
37
+ if (sessionPath) {
38
+ sessionPayload = JSON.parse(fs.readFileSync(sessionPath, "utf8"));
39
+ }
40
+
41
+ const sessionResult = sessionPayload?.data?.result ?? sessionPayload?.result ?? sessionPayload ?? {};
42
+
43
+ if (missing.length > 0) {
44
+ console.error(`Missing generationPlan keys: ${missing.join(", ")}`);
45
+ process.exit(1);
46
+ }
47
+
48
+ process.stdout.write(JSON.stringify({
49
+ requestId: payload.requestId ?? "req_plan_from_contract",
50
+ canvasSessionId: payload.canvasSessionId ?? sessionResult.canvasSessionId ?? "<canvas-session-id>",
51
+ leaseId: payload.leaseId ?? sessionResult.leaseId ?? "<lease-id>",
52
+ documentId: payload.documentId ?? sessionResult.documentId ?? "<document-id>",
53
+ generationPlan: plan
54
+ }, null, 2));
55
+ process.stdout.write("\n");
56
+ NODE
@@ -0,0 +1,223 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ skill_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
+ skill_file="$skill_root/SKILL.md"
6
+
7
+ node - "$skill_root" "$skill_file" <<'NODE'
8
+ const fs = require("node:fs");
9
+ const path = require("node:path");
10
+ const { spawnSync } = require("node:child_process");
11
+
12
+ const [skillRoot, skillFile] = process.argv.slice(2);
13
+
14
+ const requiredPaths = [
15
+ "artifacts/design-workflows.md",
16
+ "artifacts/design-contract-playbook.md",
17
+ "artifacts/frontend-evaluation-rubric.md",
18
+ "artifacts/external-pattern-synthesis.md",
19
+ "artifacts/component-pattern-index.md",
20
+ "artifacts/existing-surface-adaptation.md",
21
+ "artifacts/app-shell-and-state-wiring.md",
22
+ "artifacts/state-ownership-matrix.md",
23
+ "artifacts/async-search-state-ownership.md",
24
+ "artifacts/loading-and-feedback-surfaces.md",
25
+ "artifacts/theming-and-token-ownership.md",
26
+ "artifacts/isolated-preview-validation.md",
27
+ "artifacts/performance-audit-playbook.md",
28
+ "artifacts/scroll-reveal-surface-planning.md",
29
+ "artifacts/research-harvest-workflow.md",
30
+ "artifacts/design-release-gate.md",
31
+ "artifacts/opendevbrowser-ui-example-map.md",
32
+ "artifacts/implementation-anti-patterns.md",
33
+ "assets/templates/design-brief.v1.md",
34
+ "assets/templates/design-audit-report.v1.md",
35
+ "assets/templates/design-contract.v1.json",
36
+ "assets/templates/canvas-generation-plan.design.v1.json",
37
+ "assets/templates/design-review-checklist.json",
38
+ "assets/templates/real-surface-design-matrix.json",
39
+ "assets/templates/reference-pattern-board.v1.json",
40
+ "assets/templates/design-release-gate.v1.json",
41
+ "scripts/design-workflow.sh",
42
+ "scripts/extract-canvas-plan.sh",
43
+ "scripts/validate-skill-assets.sh"
44
+ ];
45
+
46
+ const jsonTemplates = [
47
+ "assets/templates/design-contract.v1.json",
48
+ "assets/templates/canvas-generation-plan.design.v1.json",
49
+ "assets/templates/design-review-checklist.json",
50
+ "assets/templates/real-surface-design-matrix.json",
51
+ "assets/templates/reference-pattern-board.v1.json",
52
+ "assets/templates/design-release-gate.v1.json"
53
+ ];
54
+
55
+ const executableScripts = [
56
+ "scripts/design-workflow.sh",
57
+ "scripts/extract-canvas-plan.sh",
58
+ "scripts/validate-skill-assets.sh"
59
+ ];
60
+
61
+ const workflowResolverMarkers = [
62
+ "resolve-odb-cli.sh",
63
+ "CLI_PREFIX"
64
+ ];
65
+
66
+ const skillDocMarkers = [
67
+ "artifacts/design-workflows.md",
68
+ "artifacts/design-contract-playbook.md",
69
+ "artifacts/frontend-evaluation-rubric.md",
70
+ "artifacts/external-pattern-synthesis.md",
71
+ "artifacts/component-pattern-index.md",
72
+ "artifacts/existing-surface-adaptation.md",
73
+ "artifacts/app-shell-and-state-wiring.md",
74
+ "artifacts/state-ownership-matrix.md",
75
+ "artifacts/async-search-state-ownership.md",
76
+ "artifacts/loading-and-feedback-surfaces.md",
77
+ "artifacts/theming-and-token-ownership.md",
78
+ "artifacts/isolated-preview-validation.md",
79
+ "artifacts/performance-audit-playbook.md",
80
+ "artifacts/scroll-reveal-surface-planning.md",
81
+ "artifacts/research-harvest-workflow.md",
82
+ "artifacts/design-release-gate.md",
83
+ "artifacts/opendevbrowser-ui-example-map.md",
84
+ "artifacts/implementation-anti-patterns.md",
85
+ "assets/templates/design-audit-report.v1.md",
86
+ "assets/templates/design-contract.v1.json",
87
+ "assets/templates/canvas-generation-plan.design.v1.json",
88
+ "assets/templates/reference-pattern-board.v1.json",
89
+ "assets/templates/design-release-gate.v1.json",
90
+ "scripts/extract-canvas-plan.sh",
91
+ "canvas.plan.set",
92
+ "canvas.history.undo",
93
+ "canvas.history.redo",
94
+ "canvas_history_requested",
95
+ "research-harvest",
96
+ "release-gate",
97
+ "performance-audit",
98
+ "Delivered to agent",
99
+ "Stored only; fetch with annotate --stored",
100
+ "ISSUE-01",
101
+ "ISSUE-07",
102
+ "ISSUE-08",
103
+ "ISSUE-12",
104
+ "v0.dev/docs/prompting/text",
105
+ "docs.lovable.dev/prompting/prompting-best-practices"
106
+ ];
107
+
108
+ const patternMarkers = [
109
+ "Anthropic",
110
+ "Vercel v0",
111
+ "Lovable",
112
+ "iannuttall/claude-agents",
113
+ "Dimillian",
114
+ "OpenDevBrowser-Specific Adaptation"
115
+ ];
116
+
117
+ const failures = [];
118
+ const fullPath = (relPath) => path.join(skillRoot, relPath);
119
+
120
+ for (const relPath of requiredPaths) {
121
+ if (!fs.existsSync(fullPath(relPath))) {
122
+ failures.push(`Missing required asset: ${relPath}`);
123
+ }
124
+ }
125
+
126
+ for (const relPath of executableScripts) {
127
+ if (!fs.existsSync(fullPath(relPath))) continue;
128
+ const mode = fs.statSync(fullPath(relPath)).mode & 0o111;
129
+ if (mode === 0) {
130
+ failures.push(`Script is not executable: ${relPath}`);
131
+ }
132
+ }
133
+
134
+ for (const relPath of jsonTemplates) {
135
+ if (!fs.existsSync(fullPath(relPath))) continue;
136
+ try {
137
+ JSON.parse(fs.readFileSync(fullPath(relPath), "utf8"));
138
+ } catch {
139
+ failures.push(`Invalid JSON template: ${relPath}`);
140
+ }
141
+ }
142
+
143
+ const skillDoc = fs.readFileSync(skillFile, "utf8");
144
+ for (const marker of skillDocMarkers) {
145
+ if (!skillDoc.includes(marker)) {
146
+ failures.push(`SKILL.md missing marker: ${marker}`);
147
+ }
148
+ }
149
+
150
+ const patternDoc = fs.readFileSync(fullPath("artifacts/external-pattern-synthesis.md"), "utf8");
151
+ for (const marker of patternMarkers) {
152
+ if (!patternDoc.includes(marker)) {
153
+ failures.push(`external-pattern-synthesis missing marker: ${marker}`);
154
+ }
155
+ }
156
+
157
+ const extractScript = fullPath("scripts/extract-canvas-plan.sh");
158
+ const contractTemplate = fullPath("assets/templates/design-contract.v1.json");
159
+ const extractResult = spawnSync(extractScript, [contractTemplate], { encoding: "utf8" });
160
+ if (extractResult.status !== 0) {
161
+ failures.push(`extract-canvas-plan.sh failed on template: ${extractResult.stderr.trim() || extractResult.stdout.trim()}`);
162
+ } else {
163
+ try {
164
+ const output = JSON.parse(extractResult.stdout);
165
+ const requiredPlanKeys = [
166
+ "targetOutcome",
167
+ "visualDirection",
168
+ "layoutStrategy",
169
+ "contentStrategy",
170
+ "componentStrategy",
171
+ "motionPosture",
172
+ "responsivePosture",
173
+ "accessibilityPosture",
174
+ "validationTargets"
175
+ ];
176
+ for (const key of requiredPlanKeys) {
177
+ if (!(key in (output.generationPlan ?? {}))) {
178
+ failures.push(`extract-canvas-plan output missing key: ${key}`);
179
+ }
180
+ }
181
+ } catch {
182
+ failures.push("extract-canvas-plan.sh produced invalid JSON output");
183
+ }
184
+ }
185
+
186
+ const workflowScript = fullPath("scripts/design-workflow.sh");
187
+ const workflowSource = fs.readFileSync(workflowScript, "utf8");
188
+ for (const marker of workflowResolverMarkers) {
189
+ if (!workflowSource.includes(marker)) {
190
+ failures.push(`design-workflow.sh missing resolver marker: ${marker}`);
191
+ }
192
+ }
193
+
194
+ for (const workflow of [
195
+ "list",
196
+ "contract-first",
197
+ "research-harvest",
198
+ "screenshot-audit",
199
+ "canvas-contract",
200
+ "real-surface-validation",
201
+ "performance-audit",
202
+ "release-gate",
203
+ "ship-audit"
204
+ ]) {
205
+ const result = spawnSync(workflowScript, [workflow], { encoding: "utf8" });
206
+ if (result.status !== 0) {
207
+ failures.push(`design-workflow.sh failed for mode ${workflow}: ${result.stderr.trim() || result.stdout.trim()}`);
208
+ continue;
209
+ }
210
+ if ((result.stdout ?? "").trim().length === 0) {
211
+ failures.push(`design-workflow.sh produced empty output for mode ${workflow}`);
212
+ }
213
+ }
214
+
215
+ if (failures.length > 0) {
216
+ for (const failure of failures) {
217
+ console.error(failure);
218
+ }
219
+ process.exit(1);
220
+ }
221
+
222
+ console.log("Design-agent skill assets validated.");
223
+ NODE
@@ -28,14 +28,29 @@ Use this skill for robust form automation across dynamic, multi-step, challenge-
28
28
  ./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh challenge-checkpoint
29
29
  ```
30
30
 
31
+ ## Supporting Surfaces
32
+
33
+ - Use browser replay (`screencast-start` / `screencast-stop`) when transient validation, step transitions, or challenge timing need temporal evidence.
34
+ - Use desktop observation only for read-only evidence around OS-owned dialogs such as file choosers or sibling desktop prompts.
35
+ - Use `--challenge-automation-mode off|browser|browser_with_helper` for bounded browser-scoped computer use on submit or challenge branches; it is not desktop automation.
36
+
31
37
  ## Core Rules
32
38
 
33
39
  - Snapshot first, then act.
34
40
  - Keep one field mutation per decision loop in failure analysis.
35
41
  - Re-snapshot after each invalid submit to avoid stale refs.
36
42
  - Verify both UX and network behavior for each submission branch.
43
+ - Use low-level pointer controls when a deterministic challenge or slider gate is part of the approved test path, then re-snapshot before continuing.
37
44
  - Keep challenge retries bounded and honor `Retry-After` when 429 pressure appears.
38
45
 
46
+ ## Session Reuse by Mode
47
+
48
+ - `extension` reuses the attached live tab or profile state; it does not run system cookie bootstrap.
49
+ - `managed` attempts readable system Chrome-family cookie bootstrap before first navigation.
50
+ - `cdpConnect` attempts readable system Chrome-family cookie bootstrap before first navigation.
51
+ - Use `cookie-import` only when you intentionally need to add or override cookies after session creation.
52
+ - Canonical direct-run release evidence policy lives in `../opendevbrowser-best-practices/SKILL.md`.
53
+
39
54
  ## Parallel Multitab Alignment
40
55
 
41
56
  - Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
@@ -101,9 +116,10 @@ opendevbrowser_get_attr sessionId="<session-id>" ref="<field-ref>" name="aria-de
101
116
  For forms guarded by challenge providers:
102
117
 
103
118
  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.
119
+ 2. If the environment exposes a deterministic slider/test gate, complete it with low-level pointer controls and re-snapshot.
120
+ 3. Otherwise mark a manual checkpoint in the run log.
121
+ 4. Complete challenge manually or by approved test key in non-production.
122
+ 5. Resume from fresh snapshot and continue validation.
107
123
 
108
124
  Do not implement challenge bypass behavior.
109
125
 
@@ -31,7 +31,8 @@
31
31
  ## Challenge checkpoint workflow
32
32
 
33
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
34
+ 2. If the environment exposes a deterministic slider/test gate, complete it with low-level pointer controls and re-snapshot
35
+ 3. Otherwise pause and annotate a manual checkpoint
36
+ 4. Resume after completion from a refreshed snapshot
37
+ 5. Continue assertions from refreshed snapshot
38
+ 6. Stop and escalate after repeated challenge loops
@@ -7,6 +7,8 @@
7
7
  "ISSUE-06"
8
8
  ],
9
9
  "action": "manual_checkpoint",
10
+ "pointer_gate_required": false,
11
+ "pointer_gate_completed": false,
10
12
  "max_challenge_retries": 2,
11
13
  "retry_after_seconds": 0,
12
14
  "resume_conditions": [
@@ -15,6 +15,16 @@ required=(
15
15
  )
16
16
 
17
17
  status=0
18
+
19
+ require_marker() {
20
+ local label="$1"
21
+ local output="$2"
22
+ local marker="$3"
23
+ if [[ "$output" != *"$marker"* ]]; then
24
+ echo "$label missing marker: $marker" >&2
25
+ status=1
26
+ fi
27
+ }
18
28
  for rel in "${required[@]}"; do
19
29
  if [[ ! -f "$root/$rel" ]]; then
20
30
  echo "Missing required asset: $rel" >&2
@@ -42,6 +52,105 @@ for rel in assets/templates/validation-matrix.json assets/templates/challenge-de
42
52
  fi
43
53
  done
44
54
 
55
+ list_output="$("$root/scripts/run-form-workflow.sh" list)"
56
+ for workflow_name in \
57
+ discovery \
58
+ validation \
59
+ multi-step \
60
+ dynamic-required \
61
+ file-upload \
62
+ challenge-checkpoint
63
+ do
64
+ require_marker "workflow list" "$list_output" "$workflow_name"
65
+ done
66
+
67
+ validation_output="$("$root/scripts/run-form-workflow.sh" validation)"
68
+ require_marker "validation workflow" "$validation_output" "aria-invalid"
69
+ require_marker "validation workflow" "$validation_output" "opendevbrowser_dom_get_text"
70
+
71
+ multi_step_output="$("$root/scripts/run-form-workflow.sh" multi-step)"
72
+ require_marker "multi-step workflow" "$multi_step_output" "next-step-ref"
73
+ require_marker "multi-step workflow" "$multi_step_output" "state=\"visible\""
74
+
75
+ challenge_output="$("$root/scripts/run-form-workflow.sh" challenge-checkpoint)"
76
+ require_marker "challenge-checkpoint workflow" "$challenge_output" "pause automation"
77
+ require_marker "challenge-checkpoint workflow" "$challenge_output" "opendevbrowser_snapshot"
78
+
79
+ dynamic_required_output="$("$root/scripts/run-form-workflow.sh" dynamic-required)"
80
+ require_marker "dynamic-required workflow" "$dynamic_required_output" "toggle-ref"
81
+ require_marker "dynamic-required workflow" "$dynamic_required_output" "opendevbrowser_snapshot"
82
+
83
+ file_upload_output="$("$root/scripts/run-form-workflow.sh" file-upload)"
84
+ require_marker "file-upload workflow" "$file_upload_output" "file-input-ref"
85
+ require_marker "file-upload workflow" "$file_upload_output" "opendevbrowser_network_poll"
86
+
87
+ if ! node - "$root" <<'NODE'
88
+ const fs = require("node:fs");
89
+ const path = require("node:path");
90
+
91
+ const [root] = process.argv.slice(2);
92
+ const failures = [];
93
+
94
+ const validationMatrix = JSON.parse(fs.readFileSync(path.join(root, "assets/templates/validation-matrix.json"), "utf8"));
95
+ const challengeTree = JSON.parse(fs.readFileSync(path.join(root, "assets/templates/challenge-decision-tree.json"), "utf8"));
96
+ const multiStepState = JSON.parse(fs.readFileSync(path.join(root, "assets/templates/multi-step-state.json"), "utf8"));
97
+
98
+ if (!Array.isArray(validationMatrix.fields) || validationMatrix.fields.length === 0) {
99
+ failures.push("validation-matrix.json must declare at least one field.");
100
+ } else {
101
+ const firstField = validationMatrix.fields[0];
102
+ for (const testCase of ["empty", "whitespace", "out_of_range", "valid"]) {
103
+ if (!Array.isArray(firstField.cases) || !firstField.cases.includes(testCase)) {
104
+ failures.push(`validation-matrix.json missing field case: ${testCase}`);
105
+ }
106
+ }
107
+ }
108
+ for (const marker of ["becomes_required_after_toggle", "hidden_field_not_submitted"]) {
109
+ if (!Array.isArray(validationMatrix.conditional_cases) || !validationMatrix.conditional_cases.includes(marker)) {
110
+ failures.push(`validation-matrix.json missing conditional case: ${marker}`);
111
+ }
112
+ }
113
+ for (const marker of ["invalid_blocked", "valid_success"]) {
114
+ if (!Array.isArray(validationMatrix.submit_cases) || !validationMatrix.submit_cases.includes(marker)) {
115
+ failures.push(`validation-matrix.json missing submit case: ${marker}`);
116
+ }
117
+ }
118
+
119
+ if (challengeTree.action !== "manual_checkpoint") {
120
+ failures.push("challenge-decision-tree.json must default to manual_checkpoint.");
121
+ }
122
+ if (challengeTree.max_challenge_retries !== 2) {
123
+ failures.push("challenge-decision-tree.json must cap retries at 2.");
124
+ }
125
+ for (const marker of ["challenge_cleared", "new_snapshot_taken"]) {
126
+ if (!Array.isArray(challengeTree.resume_conditions) || !challengeTree.resume_conditions.includes(marker)) {
127
+ failures.push(`challenge-decision-tree.json missing resume condition: ${marker}`);
128
+ }
129
+ }
130
+
131
+ for (const key of ["flow", "step_index", "step_name", "completed_steps", "carried_state", "final_confirmation"]) {
132
+ if (!(key in multiStepState)) {
133
+ failures.push(`multi-step-state.json missing key: ${key}`);
134
+ }
135
+ }
136
+ if (typeof multiStepState.final_confirmation?.seen !== "boolean") {
137
+ failures.push("multi-step-state.json must define final_confirmation.seen as a boolean.");
138
+ }
139
+ if (typeof multiStepState.final_confirmation?.reference_id !== "string") {
140
+ failures.push("multi-step-state.json must define final_confirmation.reference_id as a string.");
141
+ }
142
+
143
+ if (failures.length > 0) {
144
+ for (const failure of failures) {
145
+ console.error(failure);
146
+ }
147
+ process.exit(1);
148
+ }
149
+ NODE
150
+ then
151
+ status=1
152
+ fi
153
+
45
154
  if [[ $status -ne 0 ]]; then
46
155
  exit $status
47
156
  fi
@@ -35,14 +35,29 @@ Use this skill for deterministic auth testing that handles MFA and anti-bot chec
35
35
  ./skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh challenge-checkpoint
36
36
  ```
37
37
 
38
+ ## Supporting Surfaces
39
+
40
+ - Use browser replay (`screencast-start` / `screencast-stop`) when login timing, MFA transitions, or challenge loops need temporal evidence.
41
+ - Use desktop observation only for read-only evidence around native dialogs or sibling desktop surfaces; it stays core-owned and is not extension relay control.
42
+ - Use `--challenge-automation-mode off|browser|browser_with_helper` when workflow or macro execution needs bounded browser-scoped computer use; the helper is not a desktop agent.
43
+
38
44
  ## Core Rules
39
45
 
40
46
  - Use snapshot refs, not ad-hoc selectors.
41
47
  - Run one decision loop at a time: snapshot -> action -> snapshot.
48
+ - Use low-level pointer controls when a deterministic test gate or slider challenge requires gesture input, then re-snapshot before resuming auth steps.
42
49
  - Never store credentials in skill files, logs, screenshots, or committed fixtures.
43
50
  - Treat anti-bot challenges as checkpoints (manual solve or approved test keys), not bypass targets.
44
51
  - Keep a bounded retry budget (max 2 automated retries) and honor `Retry-After` when present.
45
52
 
53
+ ## Session Reuse by Mode
54
+
55
+ - `extension` reuses the attached live tab or profile state; it does not run system cookie bootstrap.
56
+ - `managed` attempts readable system Chrome-family cookie bootstrap before first navigation.
57
+ - `cdpConnect` attempts readable system Chrome-family cookie bootstrap before first navigation.
58
+ - `cookie-import` is the explicit add or override lane after session creation, not the automatic bootstrap path.
59
+ - Canonical direct-run release evidence policy lives in `../opendevbrowser-best-practices/SKILL.md`.
60
+
46
61
  ## Parallel Multitab Alignment
47
62
 
48
63
  - Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
@@ -70,6 +85,7 @@ Matrix source: `../opendevbrowser-best-practices/artifacts/browser-agent-known-i
70
85
  - authenticated shell appears -> success validation
71
86
  - MFA prompt appears -> continue MFA branch
72
87
  - popup/new-tab SSO appears -> switch target and continue auth branch
88
+ - deterministic slider or pointer gate appears -> complete pointer workflow, then re-snapshot
73
89
  - anti-bot challenge appears -> checkpoint branch
74
90
  - invalid credentials or lockout message -> failure branch
75
91
 
@@ -90,8 +106,9 @@ Use this when CAPTCHA/turnstile/challenge pages appear.
90
106
 
91
107
  1. Detect challenge UI from snapshot refs or page text.
92
108
  2. Pause automation and mark checkpoint in run log.
93
- 3. Complete challenge manually (or with provider-approved test key in non-production).
94
- 4. Resume from a fresh snapshot and continue auth validation.
109
+ 3. If the environment exposes a deterministic test slider or pointer gate, use low-level pointer commands and re-snapshot before continuing.
110
+ 4. Otherwise complete the challenge manually (or with provider-approved test key in non-production).
111
+ 5. Resume from a fresh snapshot and continue auth validation.
95
112
 
96
113
  Signals to monitor:
97
114
  - challenge iframe/widget visible
@@ -124,6 +141,7 @@ Validate at least two independent signals:
124
141
  - URL/route transition to authenticated area.
125
142
  - Auth-only element visible (`opendevbrowser_is_visible`).
126
143
  - Auth request success from `opendevbrowser_network_poll`.
144
+ - Invalid-credential rejection from `opendevbrowser_network_poll` is acceptable failure proof when UI copy is suppressed or delayed.
127
145
 
128
146
  ```text
129
147
  opendevbrowser_network_poll sessionId="<session-id>" max=50
@@ -143,7 +161,7 @@ Close and relaunch, then confirm one of:
143
161
 
144
162
  ## Failure Modes
145
163
 
146
- - Invalid credentials: assert explicit field/banner errors.
164
+ - Invalid credentials: prefer explicit field/banner errors, but accept network rejection evidence when UI copy is absent.
147
165
  - Rate limit/lockout: stop retries, apply cooldown, rotate test account.
148
166
  - Challenge loop: escalate as anti-bot pressure issue.
149
167
  - MFA unavailable for test account: mark incomplete test prerequisite.
@@ -5,7 +5,7 @@
5
5
  1. Preflight snapshot
6
6
  2. Type identifier/password
7
7
  3. Submit
8
- 4. Validate URL + auth-only ref + network status
8
+ 4. Validate URL + auth-only ref + network status, or accept invalid-credential rejection from the network log when UI error copy is absent
9
9
  5. Re-snapshot before any follow-up action
10
10
 
11
11
  ## MFA workflow
@@ -27,9 +27,10 @@
27
27
 
28
28
  1. Detect challenge state
29
29
  2. Record checkpoint with timestamp and trigger
30
- 3. Pause automated actions
31
- 4. Resume after challenge completion from fresh snapshot
32
- 5. If challenge repeats twice, stop and escalate as anti-bot pressure
30
+ 3. If the environment exposes a deterministic slider/test gate, complete it with low-level pointer controls and re-snapshot
31
+ 4. Otherwise pause automated actions for manual completion
32
+ 5. Resume after challenge completion from fresh snapshot
33
+ 6. If challenge repeats twice, stop and escalate as anti-bot pressure
33
34
 
34
35
  ## Lockout recovery workflow
35
36
 
@@ -4,6 +4,8 @@
4
4
  "url_after": "",
5
5
  "auth_element_ref": "",
6
6
  "auth_element_visible": false,
7
+ "invalid_credentials_ui_seen": false,
8
+ "invalid_credentials_network_seen": false,
7
9
  "network": {
8
10
  "login_request_seen": false,
9
11
  "status_codes": [],
@@ -11,6 +13,9 @@
11
13
  },
12
14
  "frames_seen": 0,
13
15
  "popup_detected": false,
16
+ "pointer_gate_detected": false,
17
+ "pointer_gate_completed": false,
18
+ "pointer_gate_status": "",
14
19
  "challenge_detected": false,
15
20
  "challenge_type": "none",
16
21
  "challenge_checkpoint_count": 0,
@@ -13,10 +13,11 @@
13
13
  "expected_signals": [
14
14
  "url_changed",
15
15
  "auth_shell_visible",
16
- "auth_network_success"
16
+ "auth_network_success",
17
+ "pointer_gate_complete_when_required"
17
18
  ],
18
19
  "failure_signals": [
19
- "invalid_credentials",
20
+ "invalid_credentials_ui_or_network",
20
21
  "anti_bot_challenge",
21
22
  "rate_limited",
22
23
  "lockout"
@@ -13,6 +13,7 @@ Workflows:
13
13
  mfa
14
14
  sso-popup
15
15
  challenge-checkpoint
16
+ pointer-checkpoint
16
17
  challenge-loop-guard
17
18
  lockout-recovery
18
19
  session-persistence
@@ -62,7 +63,22 @@ FLOW
62
63
  cat <<'FLOW'
63
64
  # Detect challenge state, then pause automated actions.
64
65
  opendevbrowser_snapshot sessionId="<session-id>" format="outline"
65
- # Manual checkpoint required: solve challenge with approved flow/test keys.
66
+ # If the environment exposes a deterministic slider/test gate, complete it with pointer controls, then re-snapshot.
67
+ # Otherwise manual checkpoint required: solve challenge with approved flow/test keys.
68
+ # Resume only after challenge is solved.
69
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
70
+ opendevbrowser_click sessionId="<session-id>" ref="<continue-ref>"
71
+ opendevbrowser_wait sessionId="<session-id>" until="networkidle"
72
+ FLOW
73
+ ;;
74
+ pointer-checkpoint)
75
+ cat <<'FLOW'
76
+ # Use only for deterministic test gates or slider controls that are part of the approved workflow.
77
+ opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
78
+ opendevbrowser_pointer_move sessionId="<session-id>" x=<start-x> y=<start-y>
79
+ opendevbrowser_pointer_down sessionId="<session-id>" x=<start-x> y=<start-y> button="left"
80
+ opendevbrowser_pointer_drag sessionId="<session-id>" startX=<start-x> startY=<start-y> endX=<end-x> endY=<end-y> steps=12
81
+ opendevbrowser_pointer_up sessionId="<session-id>" x=<end-x> y=<end-y> button="left"
66
82
  # Resume only after challenge is solved.
67
83
  opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
68
84
  opendevbrowser_click sessionId="<session-id>" ref="<continue-ref>"