opendevbrowser 0.0.17 → 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 (529) hide show
  1. package/README.md +171 -73
  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 +4 -1
  12. package/dist/browser/annotation-manager.d.ts.map +1 -1
  13. package/dist/browser/browser-manager.d.ts +147 -47
  14. package/dist/browser/browser-manager.d.ts.map +1 -1
  15. package/dist/browser/canvas-client.d.ts +1 -0
  16. package/dist/browser/canvas-client.d.ts.map +1 -1
  17. package/dist/browser/canvas-code-sync-manager.d.ts +9 -1
  18. package/dist/browser/canvas-code-sync-manager.d.ts.map +1 -1
  19. package/dist/browser/canvas-manager.d.ts +29 -1
  20. package/dist/browser/canvas-manager.d.ts.map +1 -1
  21. package/dist/browser/global-challenge-coordinator.d.ts +27 -0
  22. package/dist/browser/global-challenge-coordinator.d.ts.map +1 -0
  23. package/dist/browser/manager-types.d.ts +167 -1
  24. package/dist/browser/manager-types.d.ts.map +1 -1
  25. package/dist/browser/ops-browser-manager.d.ts +103 -3
  26. package/dist/browser/ops-browser-manager.d.ts.map +1 -1
  27. package/dist/browser/ops-client.d.ts +17 -1
  28. package/dist/browser/ops-client.d.ts.map +1 -1
  29. package/dist/browser/playwright-runtime.d.ts +4 -0
  30. package/dist/browser/playwright-runtime.d.ts.map +1 -0
  31. package/dist/browser/review-surface.d.ts +9 -0
  32. package/dist/browser/review-surface.d.ts.map +1 -0
  33. package/dist/browser/screencast-recorder.d.ts +57 -0
  34. package/dist/browser/screencast-recorder.d.ts.map +1 -0
  35. package/dist/browser/session-inspector.d.ts +71 -0
  36. package/dist/browser/session-inspector.d.ts.map +1 -0
  37. package/dist/browser/session-store.d.ts +5 -1
  38. package/dist/browser/session-store.d.ts.map +1 -1
  39. package/dist/browser/system-chrome-cookies.d.ts +46 -0
  40. package/dist/browser/system-chrome-cookies.d.ts.map +1 -0
  41. package/dist/browser/target-manager.d.ts +1 -0
  42. package/dist/browser/target-manager.d.ts.map +1 -1
  43. package/dist/cache/chrome-locator.d.ts.map +1 -1
  44. package/dist/cache/chrome-user-data.d.ts +17 -0
  45. package/dist/cache/chrome-user-data.d.ts.map +1 -0
  46. package/dist/canvas/adapter-plugins/loader.d.ts +13 -0
  47. package/dist/canvas/adapter-plugins/loader.d.ts.map +1 -0
  48. package/dist/canvas/adapter-plugins/manifest.d.ts +146 -0
  49. package/dist/canvas/adapter-plugins/manifest.d.ts.map +1 -0
  50. package/dist/canvas/adapter-plugins/types.d.ts +83 -0
  51. package/dist/canvas/adapter-plugins/types.d.ts.map +1 -0
  52. package/dist/canvas/adapter-plugins/validator.d.ts +10 -0
  53. package/dist/canvas/adapter-plugins/validator.d.ts.map +1 -0
  54. package/dist/canvas/code-sync/apply-tsx.d.ts +3 -1
  55. package/dist/canvas/code-sync/apply-tsx.d.ts.map +1 -1
  56. package/dist/canvas/code-sync/import.d.ts +1 -0
  57. package/dist/canvas/code-sync/import.d.ts.map +1 -1
  58. package/dist/canvas/code-sync/manifest.d.ts +2 -1
  59. package/dist/canvas/code-sync/manifest.d.ts.map +1 -1
  60. package/dist/canvas/code-sync/tsx-adapter.d.ts.map +1 -1
  61. package/dist/canvas/code-sync/types.d.ts +102 -10
  62. package/dist/canvas/code-sync/types.d.ts.map +1 -1
  63. package/dist/canvas/document-store.d.ts +11 -1
  64. package/dist/canvas/document-store.d.ts.map +1 -1
  65. package/dist/canvas/export.d.ts.map +1 -1
  66. package/dist/canvas/framework-adapters/custom-elements-v1.d.ts +3 -0
  67. package/dist/canvas/framework-adapters/custom-elements-v1.d.ts.map +1 -0
  68. package/dist/canvas/framework-adapters/html-static-v1.d.ts +3 -0
  69. package/dist/canvas/framework-adapters/html-static-v1.d.ts.map +1 -0
  70. package/dist/canvas/framework-adapters/markup.d.ts +9 -0
  71. package/dist/canvas/framework-adapters/markup.d.ts.map +1 -0
  72. package/dist/canvas/framework-adapters/react-tsx-v2.d.ts +3 -0
  73. package/dist/canvas/framework-adapters/react-tsx-v2.d.ts.map +1 -0
  74. package/dist/canvas/framework-adapters/registry.d.ts +12 -0
  75. package/dist/canvas/framework-adapters/registry.d.ts.map +1 -0
  76. package/dist/canvas/framework-adapters/svelte-sfc-v1.d.ts +3 -0
  77. package/dist/canvas/framework-adapters/svelte-sfc-v1.d.ts.map +1 -0
  78. package/dist/canvas/framework-adapters/types.d.ts +57 -0
  79. package/dist/canvas/framework-adapters/types.d.ts.map +1 -0
  80. package/dist/canvas/framework-adapters/vue-sfc-v1.d.ts +3 -0
  81. package/dist/canvas/framework-adapters/vue-sfc-v1.d.ts.map +1 -0
  82. package/dist/canvas/kits/catalog.d.ts +5 -0
  83. package/dist/canvas/kits/catalog.d.ts.map +1 -0
  84. package/dist/canvas/library-adapters/react/index.d.ts +3 -0
  85. package/dist/canvas/library-adapters/react/index.d.ts.map +1 -0
  86. package/dist/canvas/library-adapters/registry.d.ts +11 -0
  87. package/dist/canvas/library-adapters/registry.d.ts.map +1 -0
  88. package/dist/canvas/library-adapters/types.d.ts +43 -0
  89. package/dist/canvas/library-adapters/types.d.ts.map +1 -0
  90. package/dist/canvas/repo-store.d.ts +2 -0
  91. package/dist/canvas/repo-store.d.ts.map +1 -1
  92. package/dist/canvas/starters/catalog.d.ts +34 -0
  93. package/dist/canvas/starters/catalog.d.ts.map +1 -0
  94. package/dist/canvas/token-references.d.ts +22 -0
  95. package/dist/canvas/token-references.d.ts.map +1 -0
  96. package/dist/canvas/types.d.ts +345 -6
  97. package/dist/canvas/types.d.ts.map +1 -1
  98. package/dist/challenges/action-loop.d.ts +13 -0
  99. package/dist/challenges/action-loop.d.ts.map +1 -0
  100. package/dist/challenges/capability-matrix.d.ts +3 -0
  101. package/dist/challenges/capability-matrix.d.ts.map +1 -0
  102. package/dist/challenges/evidence-bundle.d.ts +48 -0
  103. package/dist/challenges/evidence-bundle.d.ts.map +1 -0
  104. package/dist/challenges/governed-adapter-gateway.d.ts +4 -0
  105. package/dist/challenges/governed-adapter-gateway.d.ts.map +1 -0
  106. package/dist/challenges/human-yield-gate.d.ts +20 -0
  107. package/dist/challenges/human-yield-gate.d.ts.map +1 -0
  108. package/dist/challenges/index.d.ts +15 -0
  109. package/dist/challenges/index.d.ts.map +1 -0
  110. package/dist/challenges/interpreter.d.ts +3 -0
  111. package/dist/challenges/interpreter.d.ts.map +1 -0
  112. package/dist/challenges/optional-computer-use-bridge.d.ts +9 -0
  113. package/dist/challenges/optional-computer-use-bridge.d.ts.map +1 -0
  114. package/dist/challenges/orchestrator.d.ts +32 -0
  115. package/dist/challenges/orchestrator.d.ts.map +1 -0
  116. package/dist/challenges/outcome-recorder.d.ts +8 -0
  117. package/dist/challenges/outcome-recorder.d.ts.map +1 -0
  118. package/dist/challenges/owned-environment-lane.d.ts +3 -0
  119. package/dist/challenges/owned-environment-lane.d.ts.map +1 -0
  120. package/dist/challenges/policy-gate.d.ts +9 -0
  121. package/dist/challenges/policy-gate.d.ts.map +1 -0
  122. package/dist/challenges/sanctioned-identity-lane.d.ts +3 -0
  123. package/dist/challenges/sanctioned-identity-lane.d.ts.map +1 -0
  124. package/dist/challenges/service-adapter-lane.d.ts +3 -0
  125. package/dist/challenges/service-adapter-lane.d.ts.map +1 -0
  126. package/dist/challenges/strategy-selector.d.ts +10 -0
  127. package/dist/challenges/strategy-selector.d.ts.map +1 -0
  128. package/dist/challenges/types.d.ts +277 -0
  129. package/dist/challenges/types.d.ts.map +1 -0
  130. package/dist/challenges/verification-gate.d.ts +15 -0
  131. package/dist/challenges/verification-gate.d.ts.map +1 -0
  132. package/dist/chunk-5FZQJRBQ.js +15256 -0
  133. package/dist/chunk-5FZQJRBQ.js.map +1 -0
  134. package/dist/chunk-L57D35TB.js +33513 -0
  135. package/dist/chunk-L57D35TB.js.map +1 -0
  136. package/dist/chunk-YBQECXZX.js +409 -0
  137. package/dist/chunk-YBQECXZX.js.map +1 -0
  138. package/dist/cli/args.d.ts +4 -4
  139. package/dist/cli/args.d.ts.map +1 -1
  140. package/dist/cli/commands/artifacts.d.ts.map +1 -1
  141. package/dist/cli/commands/canvas.d.ts +7 -7
  142. package/dist/cli/commands/canvas.d.ts.map +1 -1
  143. package/dist/cli/commands/daemon.d.ts +7 -0
  144. package/dist/cli/commands/daemon.d.ts.map +1 -1
  145. package/dist/cli/commands/desktop/accessibility-snapshot.d.ts +3 -0
  146. package/dist/cli/commands/desktop/accessibility-snapshot.d.ts.map +1 -0
  147. package/dist/cli/commands/desktop/active-window.d.ts +3 -0
  148. package/dist/cli/commands/desktop/active-window.d.ts.map +1 -0
  149. package/dist/cli/commands/desktop/capture-desktop.d.ts +3 -0
  150. package/dist/cli/commands/desktop/capture-desktop.d.ts.map +1 -0
  151. package/dist/cli/commands/desktop/capture-window.d.ts +3 -0
  152. package/dist/cli/commands/desktop/capture-window.d.ts.map +1 -0
  153. package/dist/cli/commands/desktop/shared.d.ts +19 -0
  154. package/dist/cli/commands/desktop/shared.d.ts.map +1 -0
  155. package/dist/cli/commands/desktop/status.d.ts +3 -0
  156. package/dist/cli/commands/desktop/status.d.ts.map +1 -0
  157. package/dist/cli/commands/desktop/windows.d.ts +3 -0
  158. package/dist/cli/commands/desktop/windows.d.ts.map +1 -0
  159. package/dist/cli/commands/devtools/dialog.d.ts +19 -0
  160. package/dist/cli/commands/devtools/dialog.d.ts.map +1 -0
  161. package/dist/cli/commands/devtools/screencast-start.d.ts +20 -0
  162. package/dist/cli/commands/devtools/screencast-start.d.ts.map +1 -0
  163. package/dist/cli/commands/devtools/screencast-stop.d.ts +17 -0
  164. package/dist/cli/commands/devtools/screencast-stop.d.ts.map +1 -0
  165. package/dist/cli/commands/devtools/screenshot.d.ts +2 -0
  166. package/dist/cli/commands/devtools/screenshot.d.ts.map +1 -1
  167. package/dist/cli/commands/interact/click.d.ts.map +1 -1
  168. package/dist/cli/commands/interact/pointer-down.d.ts +7 -0
  169. package/dist/cli/commands/interact/pointer-down.d.ts.map +1 -0
  170. package/dist/cli/commands/interact/pointer-drag.d.ts +7 -0
  171. package/dist/cli/commands/interact/pointer-drag.d.ts.map +1 -0
  172. package/dist/cli/commands/interact/pointer-move.d.ts +7 -0
  173. package/dist/cli/commands/interact/pointer-move.d.ts.map +1 -0
  174. package/dist/cli/commands/interact/pointer-shared.d.ts +6 -0
  175. package/dist/cli/commands/interact/pointer-shared.d.ts.map +1 -0
  176. package/dist/cli/commands/interact/pointer-up.d.ts +7 -0
  177. package/dist/cli/commands/interact/pointer-up.d.ts.map +1 -0
  178. package/dist/cli/commands/interact/upload.d.ts +18 -0
  179. package/dist/cli/commands/interact/upload.d.ts.map +1 -0
  180. package/dist/cli/commands/macro-resolve.d.ts +2 -0
  181. package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
  182. package/dist/cli/commands/native.d.ts +10 -7
  183. package/dist/cli/commands/native.d.ts.map +1 -1
  184. package/dist/cli/commands/nav/review.d.ts +7 -0
  185. package/dist/cli/commands/nav/review.d.ts.map +1 -0
  186. package/dist/cli/commands/nav/snapshot.d.ts.map +1 -1
  187. package/dist/cli/commands/pages/open.d.ts.map +1 -1
  188. package/dist/cli/commands/product-video.d.ts +2 -0
  189. package/dist/cli/commands/product-video.d.ts.map +1 -1
  190. package/dist/cli/commands/research.d.ts +3 -0
  191. package/dist/cli/commands/research.d.ts.map +1 -1
  192. package/dist/cli/commands/run.d.ts +14 -0
  193. package/dist/cli/commands/run.d.ts.map +1 -1
  194. package/dist/cli/commands/serve.d.ts +1 -26
  195. package/dist/cli/commands/serve.d.ts.map +1 -1
  196. package/dist/cli/commands/session/connect.d.ts.map +1 -1
  197. package/dist/cli/commands/session/disconnect.d.ts.map +1 -1
  198. package/dist/cli/commands/session/inspector.d.ts +21 -0
  199. package/dist/cli/commands/session/inspector.d.ts.map +1 -0
  200. package/dist/cli/commands/session/launch.d.ts.map +1 -1
  201. package/dist/cli/commands/shopping.d.ts +5 -0
  202. package/dist/cli/commands/shopping.d.ts.map +1 -1
  203. package/dist/cli/commands/status.d.ts +2 -14
  204. package/dist/cli/commands/status.d.ts.map +1 -1
  205. package/dist/cli/commands/targets/new.d.ts.map +1 -1
  206. package/dist/cli/daemon-autostart.d.ts +11 -0
  207. package/dist/cli/daemon-autostart.d.ts.map +1 -1
  208. package/dist/cli/daemon-client.d.ts +3 -0
  209. package/dist/cli/daemon-client.d.ts.map +1 -1
  210. package/dist/cli/daemon-commands.d.ts.map +1 -1
  211. package/dist/cli/daemon-state.d.ts +16 -0
  212. package/dist/cli/daemon-state.d.ts.map +1 -1
  213. package/dist/cli/daemon-status.d.ts +7 -2
  214. package/dist/cli/daemon-status.d.ts.map +1 -1
  215. package/dist/cli/daemon.d.ts +1 -0
  216. package/dist/cli/daemon.d.ts.map +1 -1
  217. package/dist/cli/help.d.ts +15 -4
  218. package/dist/cli/help.d.ts.map +1 -1
  219. package/dist/cli/index.js +2467 -1033
  220. package/dist/cli/index.js.map +1 -1
  221. package/dist/cli/install-autostart-output.d.ts +6 -0
  222. package/dist/cli/install-autostart-output.d.ts.map +1 -0
  223. package/dist/cli/install-autostart-reconciliation.d.ts +23 -0
  224. package/dist/cli/install-autostart-reconciliation.d.ts.map +1 -0
  225. package/dist/cli/installers/skills.d.ts +42 -6
  226. package/dist/cli/installers/skills.d.ts.map +1 -1
  227. package/dist/cli/output.d.ts +3 -0
  228. package/dist/cli/output.d.ts.map +1 -1
  229. package/dist/cli/remote-desktop-runtime.d.ts +15 -0
  230. package/dist/cli/remote-desktop-runtime.d.ts.map +1 -0
  231. package/dist/cli/remote-manager.d.ts +24 -2
  232. package/dist/cli/remote-manager.d.ts.map +1 -1
  233. package/dist/cli/transport-timeouts.d.ts +8 -0
  234. package/dist/cli/transport-timeouts.d.ts.map +1 -0
  235. package/dist/cli/utils/http.d.ts +9 -0
  236. package/dist/cli/utils/http.d.ts.map +1 -1
  237. package/dist/cli/utils/parse.d.ts +2 -0
  238. package/dist/cli/utils/parse.d.ts.map +1 -1
  239. package/dist/cli/utils/skills.d.ts +1 -2
  240. package/dist/cli/utils/skills.d.ts.map +1 -1
  241. package/dist/cli/utils/workflow-message.d.ts +2 -0
  242. package/dist/cli/utils/workflow-message.d.ts.map +1 -0
  243. package/dist/config.d.ts +47 -0
  244. package/dist/config.d.ts.map +1 -1
  245. package/dist/core/bootstrap.d.ts.map +1 -1
  246. package/dist/core/index.d.ts +1 -0
  247. package/dist/core/index.d.ts.map +1 -1
  248. package/dist/core/logging.d.ts +3 -1
  249. package/dist/core/logging.d.ts.map +1 -1
  250. package/dist/core/runtime-assemblies.d.ts +22 -0
  251. package/dist/core/runtime-assemblies.d.ts.map +1 -0
  252. package/dist/core/types.d.ts +15 -0
  253. package/dist/core/types.d.ts.map +1 -1
  254. package/dist/desktop/audit.d.ts +37 -0
  255. package/dist/desktop/audit.d.ts.map +1 -0
  256. package/dist/desktop/errors.d.ts +7 -0
  257. package/dist/desktop/errors.d.ts.map +1 -0
  258. package/dist/desktop/index.d.ts +6 -0
  259. package/dist/desktop/index.d.ts.map +1 -0
  260. package/dist/desktop/runtime.d.ts +26 -0
  261. package/dist/desktop/runtime.d.ts.map +1 -0
  262. package/dist/desktop/types.d.ts +76 -0
  263. package/dist/desktop/types.d.ts.map +1 -0
  264. package/dist/extension-extractor.d.ts +6 -0
  265. package/dist/extension-extractor.d.ts.map +1 -1
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +1103 -467
  268. package/dist/index.js.map +1 -1
  269. package/dist/integrations/figma/assets.d.ts +13 -0
  270. package/dist/integrations/figma/assets.d.ts.map +1 -0
  271. package/dist/integrations/figma/auth.d.ts +3 -0
  272. package/dist/integrations/figma/auth.d.ts.map +1 -0
  273. package/dist/integrations/figma/client.d.ts +42 -0
  274. package/dist/integrations/figma/client.d.ts.map +1 -0
  275. package/dist/integrations/figma/mappers.d.ts +23 -0
  276. package/dist/integrations/figma/mappers.d.ts.map +1 -0
  277. package/dist/integrations/figma/normalize.d.ts +99 -0
  278. package/dist/integrations/figma/normalize.d.ts.map +1 -0
  279. package/dist/integrations/figma/url.d.ts +17 -0
  280. package/dist/integrations/figma/url.d.ts.map +1 -0
  281. package/dist/integrations/figma/variables.d.ts +21 -0
  282. package/dist/integrations/figma/variables.d.ts.map +1 -0
  283. package/dist/macros/execute-runtime.d.ts +19 -0
  284. package/dist/macros/execute-runtime.d.ts.map +1 -0
  285. package/dist/macros/execute.d.ts +3 -1
  286. package/dist/macros/execute.d.ts.map +1 -1
  287. package/dist/opendevbrowser.d.ts.map +1 -1
  288. package/dist/opendevbrowser.js +1103 -467
  289. package/dist/opendevbrowser.js.map +1 -1
  290. package/dist/providers/blocker.d.ts.map +1 -1
  291. package/dist/providers/browser-fallback.d.ts +30 -0
  292. package/dist/providers/browser-fallback.d.ts.map +1 -0
  293. package/dist/providers/constraint.d.ts +45 -0
  294. package/dist/providers/constraint.d.ts.map +1 -0
  295. package/dist/providers/index.d.ts +11 -2
  296. package/dist/providers/index.d.ts.map +1 -1
  297. package/dist/providers/policy.d.ts.map +1 -1
  298. package/dist/providers/product-video-compiler.d.ts +92 -0
  299. package/dist/providers/product-video-compiler.d.ts.map +1 -0
  300. package/dist/providers/registry.d.ts +37 -1
  301. package/dist/providers/registry.d.ts.map +1 -1
  302. package/dist/providers/renderer.d.ts.map +1 -1
  303. package/dist/providers/research-compiler.d.ts +64 -0
  304. package/dist/providers/research-compiler.d.ts.map +1 -0
  305. package/dist/providers/research-executor.d.ts +27 -0
  306. package/dist/providers/research-executor.d.ts.map +1 -0
  307. package/dist/providers/runtime-bundle.d.ts +26 -0
  308. package/dist/providers/runtime-bundle.d.ts.map +1 -0
  309. package/dist/providers/runtime-factory.d.ts +6 -1
  310. package/dist/providers/runtime-factory.d.ts.map +1 -1
  311. package/dist/providers/runtime-policy.d.ts +24 -0
  312. package/dist/providers/runtime-policy.d.ts.map +1 -0
  313. package/dist/providers/shared/anti-bot-policy.d.ts +3 -2
  314. package/dist/providers/shared/anti-bot-policy.d.ts.map +1 -1
  315. package/dist/providers/shopping/index.d.ts +11 -1
  316. package/dist/providers/shopping/index.d.ts.map +1 -1
  317. package/dist/providers/shopping-compiler.d.ts +51 -0
  318. package/dist/providers/shopping-compiler.d.ts.map +1 -0
  319. package/dist/providers/shopping-executor.d.ts +18 -0
  320. package/dist/providers/shopping-executor.d.ts.map +1 -0
  321. package/dist/providers/shopping-postprocess.d.ts +46 -0
  322. package/dist/providers/shopping-postprocess.d.ts.map +1 -0
  323. package/dist/providers/shopping-workflow.d.ts +33 -0
  324. package/dist/providers/shopping-workflow.d.ts.map +1 -0
  325. package/dist/providers/social/platform.d.ts +2 -1
  326. package/dist/providers/social/platform.d.ts.map +1 -1
  327. package/dist/providers/social/search-quality.d.ts +16 -0
  328. package/dist/providers/social/search-quality.d.ts.map +1 -0
  329. package/dist/providers/social/youtube-resolver.d.ts +2 -1
  330. package/dist/providers/social/youtube-resolver.d.ts.map +1 -1
  331. package/dist/providers/social/youtube.d.ts.map +1 -1
  332. package/dist/providers/types.d.ts +116 -4
  333. package/dist/providers/types.d.ts.map +1 -1
  334. package/dist/providers/web/crawl-worker.d.ts.map +1 -1
  335. package/dist/providers/web/extract.d.ts +16 -0
  336. package/dist/providers/web/extract.d.ts.map +1 -1
  337. package/dist/providers/web/index.d.ts.map +1 -1
  338. package/dist/providers/workflow-contracts.d.ts +53 -0
  339. package/dist/providers/workflow-contracts.d.ts.map +1 -0
  340. package/dist/providers/workflows.d.ts +30 -6
  341. package/dist/providers/workflows.d.ts.map +1 -1
  342. package/dist/{providers-G3LRHQXX.js → providers-G36AM3Z2.js} +2 -2
  343. package/dist/public-surface/generated-manifest.d.ts +1168 -0
  344. package/dist/public-surface/generated-manifest.d.ts.map +1 -0
  345. package/dist/public-surface/source.d.ts +437 -0
  346. package/dist/public-surface/source.d.ts.map +1 -0
  347. package/dist/relay/protocol.d.ts +25 -3
  348. package/dist/relay/protocol.d.ts.map +1 -1
  349. package/dist/relay/relay-endpoints.d.ts +21 -0
  350. package/dist/relay/relay-endpoints.d.ts.map +1 -1
  351. package/dist/relay/relay-server.d.ts +18 -0
  352. package/dist/relay/relay-server.d.ts.map +1 -1
  353. package/dist/skills/bundled-skill-directories.d.ts +8 -0
  354. package/dist/skills/bundled-skill-directories.d.ts.map +1 -0
  355. package/dist/skills/skill-loader.d.ts +9 -1
  356. package/dist/skills/skill-loader.d.ts.map +1 -1
  357. package/dist/skills/skill-loader.js +7 -0
  358. package/dist/skills/skill-nudge.d.ts.map +1 -1
  359. package/dist/skills/types.d.ts +31 -0
  360. package/dist/skills/types.d.ts.map +1 -1
  361. package/dist/snapshot/ops-snapshot.d.ts +1 -1
  362. package/dist/snapshot/ops-snapshot.d.ts.map +1 -1
  363. package/dist/snapshot/refs.d.ts +6 -1
  364. package/dist/snapshot/refs.d.ts.map +1 -1
  365. package/dist/snapshot/snapshotter.d.ts.map +1 -1
  366. package/dist/tools/connect.d.ts.map +1 -1
  367. package/dist/tools/deps.d.ts +4 -0
  368. package/dist/tools/deps.d.ts.map +1 -1
  369. package/dist/tools/desktop-shared.d.ts +6 -0
  370. package/dist/tools/desktop-shared.d.ts.map +1 -0
  371. package/dist/tools/desktop_accessibility_snapshot.d.ts +4 -0
  372. package/dist/tools/desktop_accessibility_snapshot.d.ts.map +1 -0
  373. package/dist/tools/desktop_active_window.d.ts +4 -0
  374. package/dist/tools/desktop_active_window.d.ts.map +1 -0
  375. package/dist/tools/desktop_capture_desktop.d.ts +4 -0
  376. package/dist/tools/desktop_capture_desktop.d.ts.map +1 -0
  377. package/dist/tools/desktop_capture_window.d.ts +4 -0
  378. package/dist/tools/desktop_capture_window.d.ts.map +1 -0
  379. package/dist/tools/desktop_status.d.ts +4 -0
  380. package/dist/tools/desktop_status.d.ts.map +1 -0
  381. package/dist/tools/desktop_windows.d.ts +4 -0
  382. package/dist/tools/desktop_windows.d.ts.map +1 -0
  383. package/dist/tools/dialog.d.ts +4 -0
  384. package/dist/tools/dialog.d.ts.map +1 -0
  385. package/dist/tools/index.d.ts +3 -0
  386. package/dist/tools/index.d.ts.map +1 -1
  387. package/dist/tools/launch.d.ts.map +1 -1
  388. package/dist/tools/macro_resolve.d.ts.map +1 -1
  389. package/dist/tools/pointer_down.d.ts +4 -0
  390. package/dist/tools/pointer_down.d.ts.map +1 -0
  391. package/dist/tools/pointer_drag.d.ts +4 -0
  392. package/dist/tools/pointer_drag.d.ts.map +1 -0
  393. package/dist/tools/pointer_move.d.ts +4 -0
  394. package/dist/tools/pointer_move.d.ts.map +1 -0
  395. package/dist/tools/pointer_up.d.ts +4 -0
  396. package/dist/tools/pointer_up.d.ts.map +1 -0
  397. package/dist/tools/product_video_run.d.ts.map +1 -1
  398. package/dist/tools/prompting_guide.d.ts.map +1 -1
  399. package/dist/tools/research_run.d.ts.map +1 -1
  400. package/dist/tools/review.d.ts +4 -0
  401. package/dist/tools/review.d.ts.map +1 -0
  402. package/dist/tools/screencast_start.d.ts +4 -0
  403. package/dist/tools/screencast_start.d.ts.map +1 -0
  404. package/dist/tools/screencast_stop.d.ts +4 -0
  405. package/dist/tools/screencast_stop.d.ts.map +1 -0
  406. package/dist/tools/screenshot.d.ts.map +1 -1
  407. package/dist/tools/session_inspector.d.ts +4 -0
  408. package/dist/tools/session_inspector.d.ts.map +1 -0
  409. package/dist/tools/shopping_run.d.ts.map +1 -1
  410. package/dist/tools/skill_list.d.ts.map +1 -1
  411. package/dist/tools/skill_load.d.ts.map +1 -1
  412. package/dist/tools/upload.d.ts +4 -0
  413. package/dist/tools/upload.d.ts.map +1 -0
  414. package/dist/tools/workflow-runtime.d.ts +4 -1
  415. package/dist/tools/workflow-runtime.d.ts.map +1 -1
  416. package/dist/utils/package-assets.d.ts +4 -0
  417. package/dist/utils/package-assets.d.ts.map +1 -0
  418. package/extension/canvas.html +379 -9
  419. package/extension/dist/annotate-content.js +62 -32
  420. package/extension/dist/annotation-payload.js +57 -21
  421. package/extension/dist/background.js +406 -61
  422. package/extension/dist/canvas/canvas-runtime.js +481 -52
  423. package/extension/dist/canvas/model.js +129 -1
  424. package/extension/dist/canvas-page.js +1882 -74
  425. package/extension/dist/ops/dom-bridge.js +139 -0
  426. package/extension/dist/ops/ops-runtime.js +2854 -295
  427. package/extension/dist/ops/ops-session-store.js +83 -5
  428. package/extension/dist/ops/snapshot-builder.js +2 -2
  429. package/extension/dist/ops/snapshot-shared.js +2 -2
  430. package/extension/dist/ops/target-session-coordinator.js +5 -3
  431. package/extension/dist/popup.js +50 -15
  432. package/extension/dist/services/CDPRouter.js +1567 -63
  433. package/extension/dist/services/ConnectionManager.js +436 -78
  434. package/extension/dist/services/RelayClient.js +70 -30
  435. package/extension/dist/services/TabManager.js +83 -10
  436. package/extension/dist/services/TargetSessionMap.js +127 -3
  437. package/extension/dist/services/attach-errors.js +20 -0
  438. package/extension/dist/services/cdp-router-commands.js +135 -8
  439. package/extension/dist/services/url-restrictions.js +9 -13
  440. package/extension/manifest.json +2 -2
  441. package/extension/popup.html +7 -6
  442. package/package.json +15 -7
  443. package/skills/AGENTS.md +9 -8
  444. package/skills/opendevbrowser-best-practices/SKILL.md +118 -9
  445. package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +1 -0
  446. package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +26 -12
  447. package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +9 -2
  448. package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +6 -0
  449. package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +58 -0
  450. package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +674 -0
  451. package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +9 -4
  452. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +89 -20
  453. package/skills/opendevbrowser-best-practices/scripts/resolve-odb-cli.sh +100 -0
  454. package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +1 -0
  455. package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +256 -116
  456. package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +208 -0
  457. package/skills/opendevbrowser-continuity-ledger/SKILL.md +14 -1
  458. package/skills/opendevbrowser-continuity-ledger/scripts/validate-skill-assets.sh +61 -0
  459. package/skills/opendevbrowser-data-extraction/SKILL.md +6 -0
  460. package/skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh +112 -0
  461. package/skills/opendevbrowser-design-agent/SKILL.md +275 -0
  462. package/skills/opendevbrowser-design-agent/artifacts/app-shell-and-state-wiring.md +84 -0
  463. package/skills/opendevbrowser-design-agent/artifacts/async-search-state-ownership.md +58 -0
  464. package/skills/opendevbrowser-design-agent/artifacts/component-pattern-index.md +130 -0
  465. package/skills/opendevbrowser-design-agent/artifacts/design-contract-playbook.md +157 -0
  466. package/skills/opendevbrowser-design-agent/artifacts/design-release-gate.md +40 -0
  467. package/skills/opendevbrowser-design-agent/artifacts/design-workflows.md +153 -0
  468. package/skills/opendevbrowser-design-agent/artifacts/existing-surface-adaptation.md +56 -0
  469. package/skills/opendevbrowser-design-agent/artifacts/external-pattern-synthesis.md +103 -0
  470. package/skills/opendevbrowser-design-agent/artifacts/frontend-evaluation-rubric.md +61 -0
  471. package/skills/opendevbrowser-design-agent/artifacts/implementation-anti-patterns.md +163 -0
  472. package/skills/opendevbrowser-design-agent/artifacts/isolated-preview-validation.md +68 -0
  473. package/skills/opendevbrowser-design-agent/artifacts/loading-and-feedback-surfaces.md +56 -0
  474. package/skills/opendevbrowser-design-agent/artifacts/opendevbrowser-ui-example-map.md +44 -0
  475. package/skills/opendevbrowser-design-agent/artifacts/performance-audit-playbook.md +70 -0
  476. package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +81 -0
  477. package/skills/opendevbrowser-design-agent/artifacts/scroll-reveal-surface-planning.md +64 -0
  478. package/skills/opendevbrowser-design-agent/artifacts/state-ownership-matrix.md +36 -0
  479. package/skills/opendevbrowser-design-agent/artifacts/theming-and-token-ownership.md +43 -0
  480. package/skills/opendevbrowser-design-agent/assets/templates/canvas-generation-plan.design.v1.json +58 -0
  481. package/skills/opendevbrowser-design-agent/assets/templates/design-audit-report.v1.md +34 -0
  482. package/skills/opendevbrowser-design-agent/assets/templates/design-brief.v1.md +40 -0
  483. package/skills/opendevbrowser-design-agent/assets/templates/design-contract.v1.json +226 -0
  484. package/skills/opendevbrowser-design-agent/assets/templates/design-release-gate.v1.json +35 -0
  485. package/skills/opendevbrowser-design-agent/assets/templates/design-review-checklist.json +57 -0
  486. package/skills/opendevbrowser-design-agent/assets/templates/real-surface-design-matrix.json +32 -0
  487. package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +31 -0
  488. package/skills/opendevbrowser-design-agent/scripts/design-workflow.sh +171 -0
  489. package/skills/opendevbrowser-design-agent/scripts/extract-canvas-plan.sh +56 -0
  490. package/skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh +223 -0
  491. package/skills/opendevbrowser-form-testing/SKILL.md +19 -3
  492. package/skills/opendevbrowser-form-testing/artifacts/form-workflows.md +5 -4
  493. package/skills/opendevbrowser-form-testing/assets/templates/challenge-decision-tree.json +2 -0
  494. package/skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh +109 -0
  495. package/skills/opendevbrowser-login-automation/SKILL.md +21 -3
  496. package/skills/opendevbrowser-login-automation/artifacts/login-workflows.md +5 -4
  497. package/skills/opendevbrowser-login-automation/assets/templates/auth-signals.json +5 -0
  498. package/skills/opendevbrowser-login-automation/assets/templates/login-scenario-matrix.json +3 -2
  499. package/skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh +17 -1
  500. package/skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh +133 -0
  501. package/skills/opendevbrowser-product-presentation-asset/SKILL.md +23 -11
  502. package/skills/opendevbrowser-product-presentation-asset/artifacts/asset-pack-assembly.md +5 -3
  503. package/skills/opendevbrowser-product-presentation-asset/assets/templates/shot-list.md +2 -0
  504. package/skills/opendevbrowser-product-presentation-asset/assets/templates/video-assembly.md +3 -2
  505. package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +5 -1
  506. package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +6 -2
  507. package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +5 -1
  508. package/skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh +20 -7
  509. package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +39 -0
  510. package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +5 -1
  511. package/skills/opendevbrowser-research/SKILL.md +14 -6
  512. package/skills/opendevbrowser-research/scripts/render-output.sh +5 -1
  513. package/skills/opendevbrowser-research/scripts/run-research.sh +5 -1
  514. package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +45 -0
  515. package/skills/opendevbrowser-research/scripts/write-artifacts.sh +5 -1
  516. package/skills/opendevbrowser-shopping/SKILL.md +20 -1
  517. package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +6 -2
  518. package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +5 -1
  519. package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +5 -1
  520. package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +54 -0
  521. package/dist/chunk-5J3IFL3X.js +0 -16706
  522. package/dist/chunk-5J3IFL3X.js.map +0 -1
  523. package/dist/chunk-D633UO34.js +0 -8149
  524. package/dist/chunk-D633UO34.js.map +0 -1
  525. package/dist/chunk-V7KUDHDG.js +0 -276
  526. package/dist/chunk-V7KUDHDG.js.map +0 -1
  527. package/dist/runtime-factory-BICHDPE7.js +0 -13
  528. /package/dist/{providers-G3LRHQXX.js.map → providers-G36AM3Z2.js.map} +0 -0
  529. /package/dist/{runtime-factory-BICHDPE7.js.map → skills/skill-loader.js.map} +0 -0
@@ -7,8 +7,10 @@ skill_file="$skill_root/SKILL.md"
7
7
  node - "$skill_root" "$skill_file" <<'NODE'
8
8
  const fs = require("node:fs");
9
9
  const path = require("node:path");
10
+ const { pathToFileURL } = require("node:url");
10
11
 
11
12
  const [skillRoot, skillFile] = process.argv.slice(2);
13
+ const repoRoot = path.resolve(skillRoot, "../..");
12
14
 
13
15
  const requiredPaths = [
14
16
  "artifacts/provider-workflows.md",
@@ -19,11 +21,13 @@ const requiredPaths = [
19
21
  "artifacts/browser-agent-known-issues-matrix.md",
20
22
  "artifacts/command-channel-reference.md",
21
23
  "artifacts/canvas-governance-playbook.md",
24
+ "artifacts/skill-runtime-surface-matrix.md",
22
25
  "assets/templates/mode-flag-matrix.json",
23
26
  "assets/templates/ops-request-envelope.json",
24
27
  "assets/templates/cdp-forward-envelope.json",
25
28
  "assets/templates/robustness-checklist.json",
26
29
  "assets/templates/surface-audit-checklist.json",
30
+ "assets/templates/skill-runtime-pack-matrix.json",
27
31
  "assets/templates/canvas-handshake-example.json",
28
32
  "assets/templates/canvas-generation-plan.v1.json",
29
33
  "assets/templates/canvas-feedback-eval.json",
@@ -33,12 +37,18 @@ const requiredPaths = [
33
37
  "scripts/validate-skill-assets.sh"
34
38
  ];
35
39
 
40
+ const internalPaths = [
41
+ "scripts/resolve-odb-cli.sh",
42
+ "scripts/validator-fixture-cli.sh"
43
+ ];
44
+
36
45
  const jsonTemplates = [
37
46
  "assets/templates/mode-flag-matrix.json",
38
47
  "assets/templates/ops-request-envelope.json",
39
48
  "assets/templates/cdp-forward-envelope.json",
40
49
  "assets/templates/robustness-checklist.json",
41
50
  "assets/templates/surface-audit-checklist.json",
51
+ "assets/templates/skill-runtime-pack-matrix.json",
42
52
  "assets/templates/canvas-handshake-example.json",
43
53
  "assets/templates/canvas-generation-plan.v1.json",
44
54
  "assets/templates/canvas-feedback-eval.json",
@@ -48,52 +58,42 @@ const jsonTemplates = [
48
58
  const executableScripts = [
49
59
  "scripts/odb-workflow.sh",
50
60
  "scripts/run-robustness-audit.sh",
51
- "scripts/validate-skill-assets.sh"
61
+ "scripts/validate-skill-assets.sh",
62
+ "scripts/resolve-odb-cli.sh",
63
+ "scripts/validator-fixture-cli.sh"
52
64
  ];
53
65
 
54
- const skillDocMarkers = [
66
+ const workflowMarkers = [
67
+ "canvas-preflight",
68
+ "canvas-feedback-eval",
69
+ "release-direct-gates",
70
+ "skill-runtime-audit",
71
+ "tests/skill-loader.test.ts",
72
+ "tests/skill-list-tool.test.ts",
73
+ "tests/cli-skills-installer.test.ts",
74
+ "tests/cli-help-parity.test.ts",
55
75
  "npx opendevbrowser --help",
56
76
  "npx opendevbrowser help",
57
- "56 CLI commands, 49 tools, 38 `/ops` commands, 26 `/canvas` commands",
58
- "mutationPolicy.allowedBeforePlan",
59
- "canvas.code.bind",
60
- "canvas.code.resolve",
61
- "bound_app_runtime",
62
- "annotate --stored"
77
+ "./skills/opendevbrowser-continuity-ledger/scripts/validate-skill-assets.sh",
78
+ "resolve-odb-cli.sh",
79
+ "CLI_PREFIX"
63
80
  ];
64
81
 
65
- const commandRefMarkers = [
66
- "CLI commands: `56`",
67
- "Plugin tools: `49`",
68
- "`/ops` command names: `38`",
69
- "`/canvas` command names: `26`",
70
- "docs/SURFACE_REFERENCE.md",
71
- "npx opendevbrowser help",
72
- "canvas.session.open",
73
- "canvas.session.attach",
74
- "canvas.feedback.poll",
75
- "canvas.code.bind",
76
- "canvas.code.resolve",
77
- "canvas.tab.sync",
78
- "canvas.overlay.sync",
79
- "feedback.heartbeat",
80
- "governanceRequirements",
81
- "generationPlanRequirements",
82
- "mutationPolicy",
83
- "code-sync",
84
- "parity",
85
- "plan_required",
86
- "annotate --stored",
87
- "storage",
88
- "opencode",
89
- "codex",
90
- "claudecode",
91
- "ampcli"
82
+ const parityGatePath = "artifacts/parity-gates.md";
83
+ const parityGateMarkers = [
84
+ "Contract gates vs live release proof",
85
+ "`tests/parity-matrix.test.ts` is contract coverage",
86
+ "node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/vX.Y.Z/provider-direct-runs.json",
87
+ "node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/vX.Y.Z/live-regression-direct.json",
88
+ "docs/RELEASE_RUNBOOK.md"
92
89
  ];
93
90
 
94
- const workflowMarkers = [
95
- "canvas-preflight",
96
- "canvas-feedback-eval"
91
+ const providerWorkflowPath = "artifacts/provider-workflows.md";
92
+ const providerWorkflowMarkers = [
93
+ "## Release evidence lane",
94
+ "node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/vX.Y.Z/provider-direct-runs.json",
95
+ "node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/vX.Y.Z/live-regression-direct.json",
96
+ "contract coverage, not live release proof"
97
97
  ];
98
98
 
99
99
  const canvasPlaybookMarkers = [
@@ -121,114 +121,254 @@ const templateMarkerPaths = [
121
121
  ];
122
122
 
123
123
  const surfaceAuditPath = "assets/templates/surface-audit-checklist.json";
124
- const surfaceAuditMarkers = [
125
- "\"cliCommands\": 56",
126
- "\"tools\": 49",
127
- "\"opsCommands\": 38",
128
- "\"canvasCommands\": 26",
129
- "Canvas command names documented",
130
- "Canvas code-sync surface documented",
131
- "Annotation send/copy semantics documented"
132
- ];
133
124
 
134
125
  const failures = [];
135
126
 
136
127
  const readUtf8 = (relPath) => fs.readFileSync(path.join(skillRoot, relPath), "utf8");
137
128
  const hasMarker = (content, marker) => content.includes(marker);
129
+ (async () => {
130
+ const { getSurfaceCounts } = await import(pathToFileURL(path.join(repoRoot, "scripts", "docs-drift-check.mjs")).href);
131
+ const { commandCount, toolCount, opsCommandCount, canvasCommandCount } = getSurfaceCounts();
132
+
133
+ const skillDocMarkers = [
134
+ "npx opendevbrowser --help",
135
+ "npx opendevbrowser help",
136
+ `${commandCount} CLI commands, ${toolCount} tools, ${opsCommandCount} \`/ops\` commands, ${canvasCommandCount} \`/canvas\` commands`,
137
+ "Treat `tests/parity-matrix.test.ts` as contract coverage only.",
138
+ "canonical owner of direct-run release evidence policy",
139
+ "Skill Runtime Audit and Realignment",
140
+ "artifacts/skill-runtime-surface-matrix.md",
141
+ "assets/templates/skill-runtime-pack-matrix.json",
142
+ "mutationPolicy.allowedBeforePlan",
143
+ "canvas.code.bind",
144
+ "canvas.code.resolve",
145
+ "bound_app_runtime",
146
+ "annotate --stored"
147
+ ];
148
+
149
+ const commandRefMarkers = [
150
+ `CLI commands: \`${commandCount}\``,
151
+ `Plugin tools: \`${toolCount}\``,
152
+ `\`/ops\` command names: \`${opsCommandCount}\``,
153
+ `\`/canvas\` command names: \`${canvasCommandCount}\``,
154
+ "docs/SURFACE_REFERENCE.md",
155
+ "npx opendevbrowser help",
156
+ "pointer-move",
157
+ "pointer.*",
158
+ "canvas.applyRuntimePreviewBridge",
159
+ "canvas.session.open",
160
+ "canvas.session.attach",
161
+ "canvas.feedback.poll",
162
+ "canvas.feedback.next",
163
+ "canvas.feedback.unsubscribe",
164
+ "canvas.code.bind",
165
+ "canvas.code.resolve",
166
+ "canvas_history_requested",
167
+ "canvas.tab.sync",
168
+ "canvas.overlay.sync",
169
+ "feedback.heartbeat",
170
+ "governanceRequirements",
171
+ "generationPlanRequirements",
172
+ "mutationPolicy",
173
+ "code-sync",
174
+ "parity",
175
+ "plan_required",
176
+ "annotation:sendPayload",
177
+ "AgentInbox",
178
+ "annotate --stored",
179
+ "storage",
180
+ "opencode",
181
+ "codex",
182
+ "claudecode",
183
+ "ampcli"
184
+ ];
138
185
 
139
- for (const relPath of requiredPaths) {
140
- if (!fs.existsSync(path.join(skillRoot, relPath))) {
141
- failures.push(`Missing required asset: ${relPath}`);
186
+ const surfaceAuditMarkers = [
187
+ `"cliCommands": ${commandCount}`,
188
+ `"tools": ${toolCount}`,
189
+ `"opsCommands": ${opsCommandCount}`,
190
+ `"canvasCommands": ${canvasCommandCount}`,
191
+ "Pointer controls documented",
192
+ "Ops pointer and preview namespaces documented",
193
+ "Canvas command names documented",
194
+ "Canvas code-sync surface documented",
195
+ "Annotation send/copy semantics documented"
196
+ ];
197
+
198
+ for (const relPath of requiredPaths) {
199
+ if (!fs.existsSync(path.join(skillRoot, relPath))) {
200
+ failures.push(`Missing required asset: ${relPath}`);
201
+ }
142
202
  }
143
- }
144
203
 
145
- for (const relPath of executableScripts) {
146
- const fullPath = path.join(skillRoot, relPath);
147
- if (!fs.existsSync(fullPath)) continue;
148
- const mode = fs.statSync(fullPath).mode & 0o111;
149
- if (mode === 0) {
150
- failures.push(`Script is not executable: ${relPath}`);
204
+ for (const relPath of internalPaths) {
205
+ if (!fs.existsSync(path.join(skillRoot, relPath))) {
206
+ failures.push(`Missing internal helper: ${relPath}`);
207
+ }
151
208
  }
152
- }
153
209
 
154
- for (const relPath of jsonTemplates) {
155
- const fullPath = path.join(skillRoot, relPath);
156
- if (!fs.existsSync(fullPath)) continue;
157
- try {
158
- JSON.parse(fs.readFileSync(fullPath, "utf8"));
159
- } catch {
160
- failures.push(`Invalid JSON template: ${relPath}`);
210
+ for (const relPath of executableScripts) {
211
+ const fullPath = path.join(skillRoot, relPath);
212
+ if (!fs.existsSync(fullPath)) continue;
213
+ const mode = fs.statSync(fullPath).mode & 0o111;
214
+ if (mode === 0) {
215
+ failures.push(`Script is not executable: ${relPath}`);
216
+ }
161
217
  }
162
- }
163
218
 
164
- const skillDoc = fs.readFileSync(skillFile, "utf8");
165
- for (const relPath of requiredPaths) {
166
- if (!hasMarker(skillDoc, relPath)) {
167
- failures.push(`SKILL.md missing reference: ${relPath}`);
219
+ for (const relPath of jsonTemplates) {
220
+ const fullPath = path.join(skillRoot, relPath);
221
+ if (!fs.existsSync(fullPath)) continue;
222
+ try {
223
+ JSON.parse(fs.readFileSync(fullPath, "utf8"));
224
+ } catch {
225
+ failures.push(`Invalid JSON template: ${relPath}`);
226
+ }
168
227
  }
169
- }
170
- for (const marker of skillDocMarkers) {
171
- if (!hasMarker(skillDoc, marker)) {
172
- failures.push(`SKILL.md missing marker: ${marker}`);
228
+
229
+ const packMatrixPath = path.join(skillRoot, "assets/templates/skill-runtime-pack-matrix.json");
230
+ if (fs.existsSync(packMatrixPath)) {
231
+ const packMatrix = JSON.parse(fs.readFileSync(packMatrixPath, "utf8"));
232
+ const packIds = Array.isArray(packMatrix.canonicalPacks)
233
+ ? packMatrix.canonicalPacks.map((entry) => entry?.packId).filter((value) => typeof value === "string")
234
+ : [];
235
+ const uniquePackIds = new Set(packIds);
236
+ const auditDomainIds = Array.isArray(packMatrix.auditDomains)
237
+ ? packMatrix.auditDomains.map((entry) => entry?.id).filter((value) => typeof value === "string")
238
+ : [];
239
+ const uniqueAuditDomainIds = new Set(auditDomainIds);
240
+ if (packIds.length !== 9 || uniquePackIds.size !== 9) {
241
+ failures.push(`Skill runtime pack matrix must contain 9 unique canonical packs; found ${uniquePackIds.size}.`);
242
+ }
243
+ if (auditDomainIds.length !== 9 || uniqueAuditDomainIds.size !== 9) {
244
+ failures.push(`Skill runtime pack matrix must contain 9 unique audit domains; found ${uniqueAuditDomainIds.size}.`);
245
+ }
246
+ if (!Array.isArray(packMatrix.runtimeFamilies) || packMatrix.runtimeFamilies.length === 0) {
247
+ failures.push("Skill runtime pack matrix missing runtimeFamilies.");
248
+ }
249
+ }
250
+
251
+ const skillDoc = fs.readFileSync(skillFile, "utf8");
252
+ for (const relPath of requiredPaths) {
253
+ if (!hasMarker(skillDoc, relPath)) {
254
+ failures.push(`SKILL.md missing reference: ${relPath}`);
255
+ }
256
+ }
257
+ for (const marker of skillDocMarkers) {
258
+ if (!hasMarker(skillDoc, marker)) {
259
+ failures.push(`SKILL.md missing marker: ${marker}`);
260
+ }
173
261
  }
174
- }
175
262
 
176
- const commandRefPath = "artifacts/command-channel-reference.md";
177
- if (fs.existsSync(path.join(skillRoot, commandRefPath))) {
178
- const commandRef = readUtf8(commandRefPath);
179
- for (const marker of commandRefMarkers) {
180
- if (!hasMarker(commandRef, marker)) {
181
- failures.push(`Command/channel reference missing marker: ${marker}`);
263
+ const runtimeMatrixPath = "artifacts/skill-runtime-surface-matrix.md";
264
+ if (fs.existsSync(path.join(skillRoot, runtimeMatrixPath))) {
265
+ const runtimeMatrix = readUtf8(runtimeMatrixPath);
266
+ for (const marker of [
267
+ "opendevbrowser-best-practices",
268
+ "opendevbrowser-continuity-ledger",
269
+ "opendevbrowser-data-extraction",
270
+ "opendevbrowser-design-agent",
271
+ "opendevbrowser-form-testing",
272
+ "opendevbrowser-login-automation",
273
+ "opendevbrowser-product-presentation-asset",
274
+ "opendevbrowser-research",
275
+ "opendevbrowser-shopping",
276
+ "Shared runtime families",
277
+ "Audit domains",
278
+ "skills-assets-discovery",
279
+ "cli-tools-surface",
280
+ "scripts-and-governance",
281
+ "browser-snapshot-interaction",
282
+ "canvas-annotate-design",
283
+ "extension-relay-cdp",
284
+ "providers-macros-workflows",
285
+ "challenges-and-guardrails",
286
+ "runtime-infrastructure"
287
+ ]) {
288
+ if (!hasMarker(runtimeMatrix, marker)) {
289
+ failures.push(`Skill runtime surface matrix missing marker: ${marker}`);
290
+ }
182
291
  }
183
292
  }
184
- }
185
293
 
186
- const workflowPath = "scripts/odb-workflow.sh";
187
- if (fs.existsSync(path.join(skillRoot, workflowPath))) {
188
- const workflow = readUtf8(workflowPath);
189
- for (const marker of workflowMarkers) {
190
- if (!hasMarker(workflow, marker)) {
191
- failures.push(`Workflow router missing marker: ${marker}`);
294
+ const commandRefPath = "artifacts/command-channel-reference.md";
295
+ if (fs.existsSync(path.join(skillRoot, commandRefPath))) {
296
+ const commandRef = readUtf8(commandRefPath);
297
+ for (const marker of commandRefMarkers) {
298
+ if (!hasMarker(commandRef, marker)) {
299
+ failures.push(`Command/channel reference missing marker: ${marker}`);
300
+ }
192
301
  }
193
302
  }
194
- }
195
303
 
196
- const canvasPlaybookPath = "artifacts/canvas-governance-playbook.md";
197
- if (fs.existsSync(path.join(skillRoot, canvasPlaybookPath))) {
198
- const canvasPlaybook = readUtf8(canvasPlaybookPath);
199
- for (const marker of canvasPlaybookMarkers) {
200
- if (!hasMarker(canvasPlaybook, marker)) {
201
- failures.push(`Canvas playbook missing marker: ${marker}`);
304
+ const workflowPath = "scripts/odb-workflow.sh";
305
+ if (fs.existsSync(path.join(skillRoot, workflowPath))) {
306
+ const workflow = readUtf8(workflowPath);
307
+ for (const marker of workflowMarkers) {
308
+ if (!hasMarker(workflow, marker)) {
309
+ failures.push(`Workflow router missing marker: ${marker}`);
310
+ }
202
311
  }
203
312
  }
204
- }
205
313
 
206
- if (fs.existsSync(path.join(skillRoot, surfaceAuditPath))) {
207
- const surfaceAudit = readUtf8(surfaceAuditPath);
208
- for (const marker of surfaceAuditMarkers) {
209
- if (!hasMarker(surfaceAudit, marker)) {
210
- failures.push(`Surface audit checklist missing marker: ${marker}`);
314
+ if (fs.existsSync(path.join(skillRoot, parityGatePath))) {
315
+ const parityGateDoc = readUtf8(parityGatePath);
316
+ for (const marker of parityGateMarkers) {
317
+ if (!hasMarker(parityGateDoc, marker)) {
318
+ failures.push(`Parity gates doc missing marker: ${marker}`);
319
+ }
211
320
  }
212
321
  }
213
- }
214
322
 
215
- for (const relPath of templateMarkerPaths) {
216
- const fullPath = path.join(skillRoot, relPath);
217
- if (!fs.existsSync(fullPath)) continue;
218
- const content = fs.readFileSync(fullPath, "utf8");
219
- for (const marker of canvasTemplateMarkers) {
220
- if (!hasMarker(content, marker)) {
221
- failures.push(`Canvas template missing marker (${marker}): ${relPath}`);
323
+ if (fs.existsSync(path.join(skillRoot, providerWorkflowPath))) {
324
+ const providerWorkflowDoc = readUtf8(providerWorkflowPath);
325
+ for (const marker of providerWorkflowMarkers) {
326
+ if (!hasMarker(providerWorkflowDoc, marker)) {
327
+ failures.push(`Provider workflows doc missing marker: ${marker}`);
328
+ }
222
329
  }
223
330
  }
224
- }
225
331
 
226
- if (failures.length > 0) {
227
- for (const failure of failures) {
228
- console.error(failure);
332
+ const canvasPlaybookPath = "artifacts/canvas-governance-playbook.md";
333
+ if (fs.existsSync(path.join(skillRoot, canvasPlaybookPath))) {
334
+ const canvasPlaybook = readUtf8(canvasPlaybookPath);
335
+ for (const marker of canvasPlaybookMarkers) {
336
+ if (!hasMarker(canvasPlaybook, marker)) {
337
+ failures.push(`Canvas playbook missing marker: ${marker}`);
338
+ }
339
+ }
229
340
  }
230
- process.exit(1);
231
- }
232
341
 
233
- console.log(`Skill assets validated: ${requiredPaths.length} files referenced/present, ${jsonTemplates.length} JSON templates parsed.`);
342
+ if (fs.existsSync(path.join(skillRoot, surfaceAuditPath))) {
343
+ const surfaceAudit = readUtf8(surfaceAuditPath);
344
+ for (const marker of surfaceAuditMarkers) {
345
+ if (!hasMarker(surfaceAudit, marker)) {
346
+ failures.push(`Surface audit checklist missing marker: ${marker}`);
347
+ }
348
+ }
349
+ }
350
+
351
+ for (const relPath of templateMarkerPaths) {
352
+ const fullPath = path.join(skillRoot, relPath);
353
+ if (!fs.existsSync(fullPath)) continue;
354
+ const content = fs.readFileSync(fullPath, "utf8");
355
+ for (const marker of canvasTemplateMarkers) {
356
+ if (!hasMarker(content, marker)) {
357
+ failures.push(`Canvas template missing marker (${marker}): ${relPath}`);
358
+ }
359
+ }
360
+ }
361
+
362
+ if (failures.length > 0) {
363
+ for (const failure of failures) {
364
+ console.error(failure);
365
+ }
366
+ process.exit(1);
367
+ }
368
+
369
+ console.log(`Skill assets validated: ${requiredPaths.length} files referenced/present, ${jsonTemplates.length} JSON templates parsed.`);
370
+ })().catch((error) => {
371
+ console.error(error instanceof Error ? error.message : String(error));
372
+ process.exit(1);
373
+ });
234
374
  NODE
@@ -0,0 +1,208 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ node - "$@" <<'NODE'
5
+ const fs = require("node:fs");
6
+ const path = require("node:path");
7
+
8
+ const args = process.argv.slice(2);
9
+
10
+ function fail(message) {
11
+ console.error(message);
12
+ process.exit(2);
13
+ }
14
+
15
+ function parseFlags(argv) {
16
+ const flags = {};
17
+ for (let index = 0; index < argv.length; index += 1) {
18
+ const arg = argv[index];
19
+ if (!arg.startsWith("--")) continue;
20
+ const key = arg.slice(2).replace(/-([a-z])/g, (_, char) => char.toUpperCase());
21
+ const next = argv[index + 1];
22
+ if (!next || next.startsWith("--")) {
23
+ flags[key] = true;
24
+ continue;
25
+ }
26
+ flags[key] = next;
27
+ index += 1;
28
+ }
29
+ return flags;
30
+ }
31
+
32
+ function emitText(lines) {
33
+ process.stdout.write(`${lines.join("\n")}\n`);
34
+ }
35
+
36
+ function emitJson(payload) {
37
+ process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
38
+ }
39
+
40
+ function buildShoppingOffers(query) {
41
+ return [
42
+ {
43
+ provider: "provider-a",
44
+ title: `${query} Starter Pack`,
45
+ url: "https://example.com/provider-a",
46
+ price: { amount: 49.99, currency: "USD" },
47
+ shipping: { amount: 0 },
48
+ deal_score: 9,
49
+ retrieved_at: "2026-03-23T00:00:00.000Z",
50
+ attributes: {
51
+ list_price: { amount: 79.99 },
52
+ captured_at: "2026-03-23T00:00:00.000Z"
53
+ }
54
+ },
55
+ {
56
+ provider: "provider-b",
57
+ title: `${query} Pro Bundle`,
58
+ url: "https://example.com/provider-b",
59
+ price: { amount: 54.5, currency: "USD" },
60
+ shipping: { amount: 3.5 },
61
+ deal_score: 7,
62
+ retrieved_at: "2026-03-23T00:05:00.000Z",
63
+ attributes: {
64
+ list_price: { amount: 89.99 },
65
+ captured_at: "2026-03-23T00:05:00.000Z"
66
+ }
67
+ },
68
+ {
69
+ provider: "provider-c",
70
+ title: `${query} Everyday Kit`,
71
+ url: "https://example.com/provider-c",
72
+ price: { amount: 58, currency: "USD" },
73
+ shipping: { amount: 0 },
74
+ deal_score: 6,
75
+ retrieved_at: "2026-03-23T00:10:00.000Z",
76
+ attributes: {
77
+ list_price: { amount: 72 },
78
+ captured_at: "2026-03-23T00:10:00.000Z"
79
+ }
80
+ }
81
+ ];
82
+ }
83
+
84
+ const [domain, command, ...rest] = args;
85
+ if (!domain || !command) {
86
+ fail("Usage: validator-fixture-cli.sh <research|shopping> run [flags]");
87
+ }
88
+
89
+ const flags = parseFlags(rest);
90
+
91
+ if (domain === "research" && command === "run") {
92
+ const topic = String(flags.topic || "fixture topic");
93
+ const days = String(flags.days || "30");
94
+ const mode = String(flags.mode || "context");
95
+ const outputDir = typeof flags.outputDir === "string" ? flags.outputDir : "";
96
+ const sourceSelection = String(flags.sourceSelection || "auto");
97
+ const sources = String(flags.sources || "web,docs");
98
+
99
+ if (mode === "path") {
100
+ if (!outputDir) {
101
+ fail("research run --mode path requires --output-dir");
102
+ }
103
+ const bundleDir = path.join(outputDir, "research-bundle");
104
+ fs.mkdirSync(bundleDir, { recursive: true });
105
+ fs.writeFileSync(
106
+ path.join(bundleDir, "bundle-manifest.json"),
107
+ JSON.stringify(
108
+ {
109
+ topic,
110
+ days: Number(days),
111
+ mode,
112
+ sourceSelection,
113
+ sources
114
+ },
115
+ null,
116
+ 2
117
+ )
118
+ );
119
+ fs.writeFileSync(
120
+ path.join(bundleDir, "report.md"),
121
+ `# Research Report\n\n- Topic: ${topic}\n- Days: ${days}\n- Source selection: ${sourceSelection}\n- Sources: ${sources}\n`
122
+ );
123
+ fs.writeFileSync(
124
+ path.join(bundleDir, "compact.md"),
125
+ `# Compact Summary\n\n- Topic: ${topic}\n- Focus: ISSUE-09 pagination/result drift across sources\n`
126
+ );
127
+ fs.writeFileSync(
128
+ path.join(bundleDir, "context.json"),
129
+ JSON.stringify(
130
+ {
131
+ topic,
132
+ days: Number(days),
133
+ signals: ["ISSUE-09", "fixture-mode"]
134
+ },
135
+ null,
136
+ 2
137
+ )
138
+ );
139
+ emitJson({ data: { path: bundleDir } });
140
+ process.exit(0);
141
+ }
142
+
143
+ if (mode === "report") {
144
+ emitText([
145
+ "# Research Report",
146
+ "",
147
+ `- Topic: ${topic}`,
148
+ `- Days: ${days}`,
149
+ `- Source selection: ${sourceSelection}`,
150
+ `- Sources: ${sources}`,
151
+ "- Finding: ISSUE-09 pagination/result drift across sources"
152
+ ]);
153
+ process.exit(0);
154
+ }
155
+
156
+ if (mode === "compact") {
157
+ emitText([
158
+ "# Compact Summary",
159
+ "",
160
+ `- Topic: ${topic}`,
161
+ "- Focus: ISSUE-09 pagination/result drift across sources"
162
+ ]);
163
+ process.exit(0);
164
+ }
165
+
166
+ emitText([
167
+ "# Research Context",
168
+ "",
169
+ `- Topic: ${topic}`,
170
+ `- Days: ${days}`,
171
+ `- Source selection: ${sourceSelection}`,
172
+ `- Sources: ${sources}`,
173
+ "- Focus: ISSUE-09 pagination/result drift across sources",
174
+ "- Last 30 days fixture response"
175
+ ]);
176
+ process.exit(0);
177
+ }
178
+
179
+ if (domain === "shopping" && command === "run") {
180
+ const query = String(flags.query || "fixture query");
181
+ const mode = String(flags.mode || "context");
182
+ const sort = String(flags.sort || "best_deal");
183
+ const providers = String(flags.providers || "provider-a,provider-b,provider-c");
184
+ const payload = {
185
+ query,
186
+ sort,
187
+ providers,
188
+ offers: buildShoppingOffers(query)
189
+ };
190
+
191
+ if (mode === "json" || flags.outputFormat === "json") {
192
+ emitJson(payload);
193
+ process.exit(0);
194
+ }
195
+
196
+ emitText([
197
+ "# Shopping Context",
198
+ "",
199
+ `- Query: ${query}`,
200
+ `- Sort: ${sort}`,
201
+ `- Providers: ${providers}`,
202
+ "- Best deal: provider-a"
203
+ ]);
204
+ process.exit(0);
205
+ }
206
+
207
+ fail(`Unsupported fixture command: ${domain} ${command}`);
208
+ NODE