opendevbrowser 0.0.17 → 0.0.19

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 +172 -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-W4IHGDXV.js +33519 -0
  135. package/dist/chunk-W4IHGDXV.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 +2476 -1036
  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
@@ -3,12 +3,21 @@ import { createCoordinatorId, TargetSessionCoordinator } from "./target-session-
3
3
  export class OpsRefStore {
4
4
  refsByTarget = new Map();
5
5
  snapshotByTarget = new Map();
6
+ refCounterByTarget = new Map();
7
+ nextRef(targetId) {
8
+ const next = (this.refCounterByTarget.get(targetId) ?? 0) + 1;
9
+ this.refCounterByTarget.set(targetId, next);
10
+ return `r${next}`;
11
+ }
6
12
  setSnapshot(targetId, entries) {
7
13
  const map = new Map();
14
+ const snapshotId = createCoordinatorId();
8
15
  for (const entry of entries) {
9
- map.set(entry.ref, entry);
16
+ map.set(entry.ref, {
17
+ ...entry,
18
+ snapshotId
19
+ });
10
20
  }
11
- const snapshotId = createCoordinatorId();
12
21
  this.refsByTarget.set(targetId, map);
13
22
  this.snapshotByTarget.set(targetId, snapshotId);
14
23
  return { snapshotId, targetId, count: entries.length };
@@ -33,11 +42,13 @@ export class OpsRefStore {
33
42
  }
34
43
  export class OpsSessionStore {
35
44
  coordinator = new TargetSessionCoordinator();
36
- createSession(ownerClientId, tabId, leaseId, info, options) {
45
+ createSession(ownerClientId, tabId, leaseId, info, options, sessionId) {
37
46
  const parallelismPolicy = options?.parallelismPolicy ?? DEFAULT_OPS_PARALLELISM_POLICY;
38
47
  return this.coordinator.createSession(ownerClientId, tabId, leaseId, info, {
39
48
  refStore: new OpsRefStore(),
40
49
  syntheticTargets: new Map(),
50
+ dialogs: new Map(),
51
+ fileChoosers: new Map(),
41
52
  consoleEvents: [],
42
53
  networkEvents: [],
43
54
  networkRequests: new Map(),
@@ -53,7 +64,7 @@ export class OpsSessionStore {
53
64
  frozenSignals: 0,
54
65
  parallelismPolicy,
55
66
  parallelismState: createOpsGovernorState(parallelismPolicy, "extensionOpsHeaded")
56
- });
67
+ }, sessionId);
57
68
  }
58
69
  get(sessionId) {
59
70
  return this.coordinator.get(sessionId);
@@ -71,8 +82,8 @@ export class OpsSessionStore {
71
82
  return this.coordinator.addTarget(sessionId, tabId, info);
72
83
  }
73
84
  removeTarget(sessionId, targetId) {
74
- const target = this.coordinator.removeTarget(sessionId, targetId);
75
85
  const session = this.requireSession(sessionId);
86
+ const target = this.coordinator.removeTarget(sessionId, targetId);
76
87
  if (!target)
77
88
  return null;
78
89
  session.targetQueues.delete(targetId);
@@ -80,6 +91,8 @@ export class OpsSessionStore {
80
91
  session.targetQueueOldestAt.delete(targetId);
81
92
  session.refStore.clearTarget(targetId);
82
93
  session.syntheticTargets.delete(targetId);
94
+ session.dialogs.delete(targetId);
95
+ session.fileChoosers.delete(targetId);
83
96
  return target;
84
97
  }
85
98
  getTargetIdByTabId(sessionId, tabId) {
@@ -103,6 +116,71 @@ export class OpsSessionStore {
103
116
  listNamedTargets(sessionId) {
104
117
  return this.coordinator.listNamedTargets(sessionId);
105
118
  }
119
+ upsertSyntheticTarget(sessionId, target) {
120
+ const session = this.requireSession(sessionId);
121
+ const existing = session.syntheticTargets.get(target.targetId);
122
+ const nextTarget = {
123
+ ...(existing ?? {}),
124
+ ...target,
125
+ tabId: target.tabId,
126
+ type: target.type,
127
+ attachedAt: target.attachedAt
128
+ };
129
+ session.syntheticTargets.set(target.targetId, nextTarget);
130
+ return nextTarget;
131
+ }
132
+ getSyntheticTarget(sessionId, targetId) {
133
+ return this.requireSession(sessionId).syntheticTargets.get(targetId) ?? null;
134
+ }
135
+ listSyntheticTargets(sessionId) {
136
+ return Array.from(this.requireSession(sessionId).syntheticTargets.values());
137
+ }
138
+ findSyntheticTargetBySessionId(sessionId, childSessionId) {
139
+ const session = this.requireSession(sessionId);
140
+ for (const target of session.syntheticTargets.values()) {
141
+ if (target.sessionId === childSessionId) {
142
+ return target;
143
+ }
144
+ }
145
+ return null;
146
+ }
147
+ removeSyntheticTarget(sessionId, targetId) {
148
+ const session = this.requireSession(sessionId);
149
+ const existing = session.syntheticTargets.get(targetId) ?? null;
150
+ if (!existing) {
151
+ return null;
152
+ }
153
+ if (session.activeTargetId === targetId) {
154
+ session.activeTargetId = null;
155
+ }
156
+ session.syntheticTargets.delete(targetId);
157
+ session.refStore.clearTarget(targetId);
158
+ session.dialogs.delete(targetId);
159
+ session.fileChoosers.delete(targetId);
160
+ return existing;
161
+ }
162
+ getDialog(sessionId, targetId) {
163
+ return this.requireSession(sessionId).dialogs.get(targetId) ?? null;
164
+ }
165
+ setDialog(sessionId, targetId, dialog) {
166
+ const session = this.requireSession(sessionId);
167
+ session.dialogs.set(targetId, dialog);
168
+ return dialog;
169
+ }
170
+ clearDialog(sessionId, targetId) {
171
+ this.requireSession(sessionId).dialogs.delete(targetId);
172
+ }
173
+ getFileChooser(sessionId, targetId) {
174
+ return this.requireSession(sessionId).fileChoosers.get(targetId) ?? null;
175
+ }
176
+ setFileChooser(sessionId, targetId, chooser) {
177
+ const session = this.requireSession(sessionId);
178
+ session.fileChoosers.set(targetId, chooser);
179
+ return chooser;
180
+ }
181
+ clearFileChooser(sessionId, targetId) {
182
+ this.requireSession(sessionId).fileChoosers.delete(targetId);
183
+ }
106
184
  requireSession(sessionId) {
107
185
  return this.coordinator.requireSession(sessionId);
108
186
  }
@@ -1,4 +1,4 @@
1
1
  import { buildSnapshotFromCdp } from "./snapshot-shared.js";
2
- export async function buildSnapshot(send, mode, mainFrameOnly = true, maxNodes) {
3
- return await buildSnapshotFromCdp(send, mode, mainFrameOnly, maxNodes);
2
+ export async function buildSnapshot(send, mode, createRef, mainFrameOnly = true, maxNodes) {
3
+ return await buildSnapshotFromCdp(send, mode, createRef, mainFrameOnly, maxNodes);
4
4
  }
@@ -103,7 +103,7 @@ export const selectorFunction = function () {
103
103
  return buildPathSelector(this);
104
104
  };
105
105
  const SELECTOR_FUNCTION = selectorFunction.toString();
106
- export async function buildSnapshotFromCdp(send, mode, mainFrameOnly = true, maxNodes) {
106
+ export async function buildSnapshotFromCdp(send, mode, createRef, mainFrameOnly = true, maxNodes) {
107
107
  await send("Accessibility.enable", {});
108
108
  await send("DOM.enable", {});
109
109
  const result = await send("Accessibility.getFullAXTree", {});
@@ -132,7 +132,7 @@ export async function buildSnapshotFromCdp(send, mode, mainFrameOnly = true, max
132
132
  const selector = await resolveSelector(send, node.backendDOMNodeId);
133
133
  if (!selector)
134
134
  continue;
135
- const ref = `r${entries.length + 1}`;
135
+ const ref = createRef();
136
136
  const name = redactText(extractValue(node.name));
137
137
  const value = redactText(extractValue(node.value));
138
138
  const disabled = isTruthyProperty(node.properties, "disabled");
@@ -8,7 +8,8 @@ export class TargetSessionCoordinator {
8
8
  targetId,
9
9
  tabId,
10
10
  url: info?.url,
11
- title: info?.title
11
+ title: info?.title,
12
+ openerTargetId: undefined
12
13
  };
13
14
  const createdAt = Date.now();
14
15
  const session = {
@@ -61,7 +62,8 @@ export class TargetSessionCoordinator {
61
62
  targetId,
62
63
  tabId,
63
64
  url: info?.url,
64
- title: info?.title
65
+ title: info?.title,
66
+ openerTargetId: info?.openerTargetId
65
67
  };
66
68
  session.targets.set(targetId, target);
67
69
  this.tabToSession.set(tabId, sessionId);
@@ -85,7 +87,7 @@ export class TargetSessionCoordinator {
85
87
  }
86
88
  if (session.activeTargetId === targetId) {
87
89
  const [first] = session.targets.keys();
88
- session.activeTargetId = first ?? "";
90
+ session.activeTargetId = first ?? null;
89
91
  }
90
92
  return target;
91
93
  }
@@ -1,6 +1,6 @@
1
1
  import { DEFAULT_AUTO_CONNECT, DEFAULT_AUTO_PAIR, DEFAULT_DISCOVERY_PORT, DEFAULT_NATIVE_ENABLED, DEFAULT_PAIRING_ENABLED, DEFAULT_PAIRING_TOKEN, DEFAULT_RELAY_PORT } from "./relay-settings.js";
2
2
  import { logError } from "./logging.js";
3
- import { describeAnnotationItem, filterAnnotationPayload } from "./annotation-payload.js";
3
+ import { describeAnnotationItem, filterAnnotationPayload, formatAnnotationDispatchReceipt } from "./annotation-payload.js";
4
4
  const statusEl = document.getElementById("status");
5
5
  const statusIndicator = document.getElementById("statusIndicator");
6
6
  const statusPill = document.getElementById("statusPill");
@@ -55,10 +55,20 @@ if (!statusEl
55
55
  || !annotationNote) {
56
56
  throw new Error("Popup DOM missing required elements");
57
57
  }
58
- const defaultNote = "Local relay only. Tokens stay on-device.";
58
+ const defaultNote = "Local relay only. Page data and tokens stay on-device.";
59
+ const defaultHealthNote = "Health check pending.";
59
60
  const defaultAnnotationNote = "No annotations captured yet.";
60
61
  const LAST_ANNOTATION_META_KEY = "annotationLastMeta";
62
+ const MISSING_EXTENSION_RECEIVER_MESSAGE = "Could not establish connection. Receiving end does not exist.";
61
63
  let lastAnnotationPayload = null;
64
+ let currentHealthNote = defaultHealthNote;
65
+ const normalizePopupErrorMessage = (error) => {
66
+ const message = error instanceof Error ? error.message : String(error ?? "Unknown error");
67
+ if (message.includes(MISSING_EXTENSION_RECEIVER_MESSAGE)) {
68
+ return "Extension background is unavailable. Reload the extension and retry.";
69
+ }
70
+ return message;
71
+ };
62
72
  const setNote = (message) => {
63
73
  const next = message && message.trim() ? message : defaultNote;
64
74
  statusNote.textContent = next;
@@ -67,6 +77,11 @@ const setAnnotationNote = (message) => {
67
77
  const next = message && message.trim() ? message : defaultAnnotationNote;
68
78
  annotationNote.textContent = next;
69
79
  };
80
+ const setHealthNote = (message) => {
81
+ const next = message && message.trim() ? message : defaultHealthNote;
82
+ currentHealthNote = next;
83
+ healthNote.textContent = next;
84
+ };
70
85
  const setStatus = (status) => {
71
86
  const isConnected = status === "connected";
72
87
  statusEl.textContent = isConnected ? "Connected" : "Disconnected";
@@ -95,7 +110,7 @@ const setHealth = (health) => {
95
110
  setHealthValue(healthInjected, "Unknown", "off");
96
111
  setHealthValue(healthCdp, "Unknown", "off");
97
112
  setHealthValue(healthPairing, "Unknown", "off");
98
- healthNote.textContent = "Health check pending.";
113
+ setHealthNote();
99
114
  return;
100
115
  }
101
116
  setHealthValue(healthRelay, health.ok ? "Online" : "Offline", health.ok ? "ok" : "warn");
@@ -106,26 +121,28 @@ const setHealth = (health) => {
106
121
  setHealthValue(healthPairing, health.pairingRequired ? "Required" : "Not required", health.pairingRequired ? "warn" : "ok");
107
122
  if (health.lastHandshakeError) {
108
123
  const detail = health.lastHandshakeError.message ? ` ${health.lastHandshakeError.message}` : "";
109
- healthNote.textContent = `Last handshake error: ${health.lastHandshakeError.code}.${detail}`;
124
+ setHealthNote(`Last handshake error: ${health.lastHandshakeError.code}.${detail}`);
110
125
  }
111
126
  else if (!health.ok) {
112
- healthNote.textContent = `Relay health: ${formatReason(health.reason)}.`;
127
+ setHealthNote(`Relay health: ${formatReason(health.reason)}.`);
113
128
  }
114
129
  else {
115
- healthNote.textContent = "Relay health OK.";
130
+ setHealthNote("Relay health OK.");
116
131
  }
117
132
  };
118
133
  const setInjectionStatus = (injected, detail) => {
119
134
  if (injected === null) {
120
135
  setHealthValue(healthInjected, "Unknown", "off");
136
+ healthNote.textContent = currentHealthNote;
121
137
  return;
122
138
  }
123
139
  if (injected) {
124
140
  setHealthValue(healthInjected, "Injected", "ok");
141
+ healthNote.textContent = currentHealthNote;
125
142
  return;
126
143
  }
127
144
  setHealthValue(healthInjected, "Not injected", "warn");
128
- if (detail && healthNote.textContent === "Relay health OK.") {
145
+ if (detail && healthNote.textContent === currentHealthNote) {
129
146
  healthNote.textContent = `Annotation UI: ${detail}`;
130
147
  }
131
148
  };
@@ -158,8 +175,8 @@ const setNativeHealth = (health, enabled) => {
158
175
  }
159
176
  const formatted = formatNativeHealth(health);
160
177
  setHealthValue(healthNative, formatted.label, formatted.tone);
161
- if (formatted.note && healthNote.textContent === "Relay health OK.") {
162
- healthNote.textContent = `${healthNote.textContent} ${formatted.note}`;
178
+ if (formatted.note && currentHealthNote === "Relay health OK.") {
179
+ setHealthNote(`${currentHealthNote} ${formatted.note}`);
163
180
  }
164
181
  };
165
182
  const applyStatus = (response) => {
@@ -173,7 +190,7 @@ const sendMessage = (message) => {
173
190
  chrome.runtime.sendMessage(message, (response) => {
174
191
  const lastError = chrome.runtime.lastError;
175
192
  if (lastError) {
176
- reject(new Error(lastError.message));
193
+ reject(new Error(normalizePopupErrorMessage(lastError.message)));
177
194
  return;
178
195
  }
179
196
  if (!response) {
@@ -184,6 +201,17 @@ const sendMessage = (message) => {
184
201
  });
185
202
  });
186
203
  };
204
+ const getPopupTabId = async () => {
205
+ try {
206
+ const tabs = await chrome.tabs.query({ active: true, currentWindow: true });
207
+ const tabId = tabs[0]?.id;
208
+ return typeof tabId === "number" ? tabId : undefined;
209
+ }
210
+ catch (error) {
211
+ logError("popup.tab_query", error, { code: "tab_query_failed" });
212
+ return undefined;
213
+ }
214
+ };
187
215
  const setStorage = (items) => {
188
216
  return new Promise((resolve) => {
189
217
  chrome.storage.local.set(items, () => resolve());
@@ -191,7 +219,11 @@ const setStorage = (items) => {
191
219
  };
192
220
  const refreshInjectionStatus = async () => {
193
221
  try {
194
- const response = await sendMessage({ type: "annotation:probe" });
222
+ const tabId = await getPopupTabId();
223
+ const response = await sendMessage({
224
+ type: "annotation:probe",
225
+ ...(typeof tabId === "number" ? { tabId } : {})
226
+ });
195
227
  setInjectionStatus(response.injected, response.detail);
196
228
  }
197
229
  catch (error) {
@@ -462,7 +494,7 @@ const copyPayloadToClipboard = async (payload, message) => {
462
494
  await copyTextToClipboard(JSON.stringify(payload, null, 2));
463
495
  setAnnotationNote(message);
464
496
  };
465
- const sendPayloadToAgent = async (payload, source, label, successMessage) => {
497
+ const sendPayloadToAgent = async (payload, source, label) => {
466
498
  const response = await sendMessage({
467
499
  type: "annotation:sendPayload",
468
500
  payload,
@@ -472,7 +504,7 @@ const sendPayloadToAgent = async (payload, source, label, successMessage) => {
472
504
  if (!response.ok) {
473
505
  throw new Error(response.error?.message ?? "Agent dispatch failed.");
474
506
  }
475
- setAnnotationNote(successMessage);
507
+ setAnnotationNote(formatAnnotationDispatchReceipt(response.receipt));
476
508
  };
477
509
  const copySelectedAnnotation = async (annotationIds, successMessage = "Copied annotation payload to clipboard.") => {
478
510
  const response = await loadAnnotationPayload(true);
@@ -499,7 +531,8 @@ const sendSelectedAnnotation = async (annotationIds, source, label, successMessa
499
531
  const payload = withPopupContext(annotationIds && annotationIds.length > 0
500
532
  ? filterAnnotationPayload(response.payload, annotationIds, { includeScreenshots: Boolean(response.payload.screenshots?.length) })
501
533
  : response.payload);
502
- await sendPayloadToAgent(payload, source, label, successMessage);
534
+ void successMessage;
535
+ await sendPayloadToAgent(payload, source, label);
503
536
  };
504
537
  const toggle = async () => {
505
538
  const isConnected = statusEl.textContent === "Connected";
@@ -562,9 +595,11 @@ annotationStartButton.addEventListener("click", () => {
562
595
  (async () => {
563
596
  setAnnotationNote("Starting annotation...");
564
597
  const options = buildPopupAnnotationOptions();
598
+ const tabId = await getPopupTabId();
565
599
  const response = await sendMessage({
566
600
  type: "annotation:start",
567
- options
601
+ options,
602
+ ...(typeof tabId === "number" ? { tabId } : {})
568
603
  });
569
604
  if (!response.ok) {
570
605
  const message = response.error?.message ?? "Annotation start failed.";