opendevbrowser 0.0.15 → 0.0.17

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 (646) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +262 -43
  3. package/dist/annotate/direct-annotator.d.ts +22 -0
  4. package/dist/annotate/direct-annotator.d.ts.map +1 -0
  5. package/dist/annotate/output.d.ts +10 -0
  6. package/dist/annotate/output.d.ts.map +1 -0
  7. package/dist/browser/annotation-manager.d.ts +33 -0
  8. package/dist/browser/annotation-manager.d.ts.map +1 -0
  9. package/dist/browser/browser-manager.d.ts +402 -0
  10. package/dist/browser/browser-manager.d.ts.map +1 -0
  11. package/dist/browser/canvas-client.d.ts +53 -0
  12. package/dist/browser/canvas-client.d.ts.map +1 -0
  13. package/dist/browser/canvas-code-sync-manager.d.ts +79 -0
  14. package/dist/browser/canvas-code-sync-manager.d.ts.map +1 -0
  15. package/dist/browser/canvas-manager.d.ts +94 -0
  16. package/dist/browser/canvas-manager.d.ts.map +1 -0
  17. package/dist/browser/canvas-runtime-preview-bridge.d.ts +20 -0
  18. package/dist/browser/canvas-runtime-preview-bridge.d.ts.map +1 -0
  19. package/dist/browser/canvas-session-sync-manager.d.ts +21 -0
  20. package/dist/browser/canvas-session-sync-manager.d.ts.map +1 -0
  21. package/dist/browser/fingerprint/adapters.d.ts +26 -0
  22. package/dist/browser/fingerprint/adapters.d.ts.map +1 -0
  23. package/dist/browser/fingerprint/canary.d.ts +25 -0
  24. package/dist/browser/fingerprint/canary.d.ts.map +1 -0
  25. package/dist/browser/fingerprint/profiles.d.ts +16 -0
  26. package/dist/browser/fingerprint/profiles.d.ts.map +1 -0
  27. package/dist/browser/fingerprint/tier1-coherence.d.ts +36 -0
  28. package/dist/browser/fingerprint/tier1-coherence.d.ts.map +1 -0
  29. package/dist/browser/fingerprint/tier2-runtime.d.ts +40 -0
  30. package/dist/browser/fingerprint/tier2-runtime.d.ts.map +1 -0
  31. package/dist/browser/fingerprint/tier3-adaptive.d.ts +30 -0
  32. package/dist/browser/fingerprint/tier3-adaptive.d.ts.map +1 -0
  33. package/dist/browser/manager-types.d.ts +15 -0
  34. package/dist/browser/manager-types.d.ts.map +1 -0
  35. package/dist/browser/ops-browser-manager.d.ts +141 -0
  36. package/dist/browser/ops-browser-manager.d.ts.map +1 -0
  37. package/dist/browser/ops-client.d.ts +56 -0
  38. package/dist/browser/ops-client.d.ts.map +1 -0
  39. package/dist/browser/parallelism-governor.d.ts +31 -0
  40. package/dist/browser/parallelism-governor.d.ts.map +1 -0
  41. package/dist/browser/script-runner.d.ts +23 -0
  42. package/dist/browser/script-runner.d.ts.map +1 -0
  43. package/dist/browser/session-store.d.ts +63 -0
  44. package/dist/browser/session-store.d.ts.map +1 -0
  45. package/dist/browser/target-manager.d.ts +36 -0
  46. package/dist/browser/target-manager.d.ts.map +1 -0
  47. package/dist/cache/chrome-locator.d.ts +2 -0
  48. package/dist/cache/chrome-locator.d.ts.map +1 -0
  49. package/dist/cache/downloader.d.ts +6 -0
  50. package/dist/cache/downloader.d.ts.map +1 -0
  51. package/dist/cache/paths.d.ts +9 -0
  52. package/dist/cache/paths.d.ts.map +1 -0
  53. package/dist/canvas/code-sync/apply-tsx.d.ts +23 -0
  54. package/dist/canvas/code-sync/apply-tsx.d.ts.map +1 -0
  55. package/dist/canvas/code-sync/graph.d.ts +5 -0
  56. package/dist/canvas/code-sync/graph.d.ts.map +1 -0
  57. package/dist/canvas/code-sync/hash.d.ts +3 -0
  58. package/dist/canvas/code-sync/hash.d.ts.map +1 -0
  59. package/dist/canvas/code-sync/import.d.ts +18 -0
  60. package/dist/canvas/code-sync/import.d.ts.map +1 -0
  61. package/dist/canvas/code-sync/manifest.d.ts +5 -0
  62. package/dist/canvas/code-sync/manifest.d.ts.map +1 -0
  63. package/dist/canvas/code-sync/tsx-adapter.d.ts +8 -0
  64. package/dist/canvas/code-sync/tsx-adapter.d.ts.map +1 -0
  65. package/dist/canvas/code-sync/types.d.ts +152 -0
  66. package/dist/canvas/code-sync/types.d.ts.map +1 -0
  67. package/dist/canvas/code-sync/write.d.ts +9 -0
  68. package/dist/canvas/code-sync/write.d.ts.map +1 -0
  69. package/dist/canvas/document-store.d.ts +81 -0
  70. package/dist/canvas/document-store.d.ts.map +1 -0
  71. package/dist/canvas/export.d.ts +12 -0
  72. package/dist/canvas/export.d.ts.map +1 -0
  73. package/dist/canvas/repo-store.d.ts +10 -0
  74. package/dist/canvas/repo-store.d.ts.map +1 -0
  75. package/dist/canvas/surface-palette.d.ts +15 -0
  76. package/dist/canvas/surface-palette.d.ts.map +1 -0
  77. package/dist/canvas/types.d.ts +255 -0
  78. package/dist/canvas/types.d.ts.map +1 -0
  79. package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js +7 -0
  80. package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js.map +1 -0
  81. package/dist/chunk-5J3IFL3X.js +16706 -0
  82. package/dist/chunk-5J3IFL3X.js.map +1 -0
  83. package/dist/chunk-D633UO34.js +8149 -0
  84. package/dist/chunk-D633UO34.js.map +1 -0
  85. package/dist/chunk-FUSXMW3G.js +169 -0
  86. package/dist/chunk-FUSXMW3G.js.map +1 -0
  87. package/dist/chunk-TBUCZX4A.js +34 -0
  88. package/dist/chunk-TBUCZX4A.js.map +1 -0
  89. package/dist/chunk-V7KUDHDG.js +276 -0
  90. package/dist/chunk-V7KUDHDG.js.map +1 -0
  91. package/dist/chunk-Y2KL55OG.js +59 -0
  92. package/dist/chunk-Y2KL55OG.js.map +1 -0
  93. package/dist/cli/args.d.ts +25 -0
  94. package/dist/cli/args.d.ts.map +1 -0
  95. package/dist/cli/client.d.ts +2 -0
  96. package/dist/cli/client.d.ts.map +1 -0
  97. package/dist/cli/commands/annotate.d.ts +38 -0
  98. package/dist/cli/commands/annotate.d.ts.map +1 -0
  99. package/dist/cli/commands/artifacts.d.ts +24 -0
  100. package/dist/cli/commands/artifacts.d.ts.map +1 -0
  101. package/dist/cli/commands/canvas.d.ts +45 -0
  102. package/dist/cli/commands/canvas.d.ts.map +1 -0
  103. package/dist/cli/commands/daemon.d.ts +35 -0
  104. package/dist/cli/commands/daemon.d.ts.map +1 -0
  105. package/dist/cli/commands/devtools/console-poll.d.ts +7 -0
  106. package/dist/cli/commands/devtools/console-poll.d.ts.map +1 -0
  107. package/dist/cli/commands/devtools/debug-trace-snapshot.d.ts +20 -0
  108. package/dist/cli/commands/devtools/debug-trace-snapshot.d.ts.map +1 -0
  109. package/dist/cli/commands/devtools/network-poll.d.ts +7 -0
  110. package/dist/cli/commands/devtools/network-poll.d.ts.map +1 -0
  111. package/dist/cli/commands/devtools/perf.d.ts +7 -0
  112. package/dist/cli/commands/devtools/perf.d.ts.map +1 -0
  113. package/dist/cli/commands/devtools/screenshot.d.ts +18 -0
  114. package/dist/cli/commands/devtools/screenshot.d.ts.map +1 -0
  115. package/dist/cli/commands/dom/attr.d.ts +7 -0
  116. package/dist/cli/commands/dom/attr.d.ts.map +1 -0
  117. package/dist/cli/commands/dom/checked.d.ts +7 -0
  118. package/dist/cli/commands/dom/checked.d.ts.map +1 -0
  119. package/dist/cli/commands/dom/enabled.d.ts +7 -0
  120. package/dist/cli/commands/dom/enabled.d.ts.map +1 -0
  121. package/dist/cli/commands/dom/html.d.ts +7 -0
  122. package/dist/cli/commands/dom/html.d.ts.map +1 -0
  123. package/dist/cli/commands/dom/text.d.ts +7 -0
  124. package/dist/cli/commands/dom/text.d.ts.map +1 -0
  125. package/dist/cli/commands/dom/value.d.ts +7 -0
  126. package/dist/cli/commands/dom/value.d.ts.map +1 -0
  127. package/dist/cli/commands/dom/visible.d.ts +7 -0
  128. package/dist/cli/commands/dom/visible.d.ts.map +1 -0
  129. package/dist/cli/commands/export/clone-component.d.ts +16 -0
  130. package/dist/cli/commands/export/clone-component.d.ts.map +1 -0
  131. package/dist/cli/commands/export/clone-page.d.ts +15 -0
  132. package/dist/cli/commands/export/clone-page.d.ts.map +1 -0
  133. package/dist/cli/commands/interact/check.d.ts +7 -0
  134. package/dist/cli/commands/interact/check.d.ts.map +1 -0
  135. package/dist/cli/commands/interact/click.d.ts +7 -0
  136. package/dist/cli/commands/interact/click.d.ts.map +1 -0
  137. package/dist/cli/commands/interact/hover.d.ts +7 -0
  138. package/dist/cli/commands/interact/hover.d.ts.map +1 -0
  139. package/dist/cli/commands/interact/press.d.ts +7 -0
  140. package/dist/cli/commands/interact/press.d.ts.map +1 -0
  141. package/dist/cli/commands/interact/scroll-into-view.d.ts +7 -0
  142. package/dist/cli/commands/interact/scroll-into-view.d.ts.map +1 -0
  143. package/dist/cli/commands/interact/scroll.d.ts +7 -0
  144. package/dist/cli/commands/interact/scroll.d.ts.map +1 -0
  145. package/dist/cli/commands/interact/select.d.ts +7 -0
  146. package/dist/cli/commands/interact/select.d.ts.map +1 -0
  147. package/dist/cli/commands/interact/type.d.ts +7 -0
  148. package/dist/cli/commands/interact/type.d.ts.map +1 -0
  149. package/dist/cli/commands/interact/uncheck.d.ts +7 -0
  150. package/dist/cli/commands/interact/uncheck.d.ts.map +1 -0
  151. package/dist/cli/commands/macro-resolve.d.ts +18 -0
  152. package/dist/cli/commands/macro-resolve.d.ts.map +1 -0
  153. package/dist/cli/commands/native.d.ts +93 -0
  154. package/dist/cli/commands/native.d.ts.map +1 -0
  155. package/dist/cli/commands/nav/goto.d.ts +7 -0
  156. package/dist/cli/commands/nav/goto.d.ts.map +1 -0
  157. package/dist/cli/commands/nav/snapshot.d.ts +7 -0
  158. package/dist/cli/commands/nav/snapshot.d.ts.map +1 -0
  159. package/dist/cli/commands/nav/wait.d.ts +7 -0
  160. package/dist/cli/commands/nav/wait.d.ts.map +1 -0
  161. package/dist/cli/commands/pages/close.d.ts +6 -0
  162. package/dist/cli/commands/pages/close.d.ts.map +1 -0
  163. package/dist/cli/commands/pages/list.d.ts +7 -0
  164. package/dist/cli/commands/pages/list.d.ts.map +1 -0
  165. package/dist/cli/commands/pages/open.d.ts +7 -0
  166. package/dist/cli/commands/pages/open.d.ts.map +1 -0
  167. package/dist/cli/commands/product-video.d.ts +25 -0
  168. package/dist/cli/commands/product-video.d.ts.map +1 -0
  169. package/dist/cli/commands/registry.d.ts +5 -0
  170. package/dist/cli/commands/registry.d.ts.map +1 -0
  171. package/dist/cli/commands/research.d.ts +27 -0
  172. package/dist/cli/commands/research.d.ts.map +1 -0
  173. package/dist/cli/commands/rpc.d.ts +28 -0
  174. package/dist/cli/commands/rpc.d.ts.map +1 -0
  175. package/dist/cli/commands/run.d.ts +17 -0
  176. package/dist/cli/commands/run.d.ts.map +1 -0
  177. package/dist/cli/commands/serve.d.ts +64 -0
  178. package/dist/cli/commands/serve.d.ts.map +1 -0
  179. package/dist/cli/commands/session/connect.d.ts +9 -0
  180. package/dist/cli/commands/session/connect.d.ts.map +1 -0
  181. package/dist/cli/commands/session/cookie-import.d.ts +31 -0
  182. package/dist/cli/commands/session/cookie-import.d.ts.map +1 -0
  183. package/dist/cli/commands/session/cookie-list.d.ts +17 -0
  184. package/dist/cli/commands/session/cookie-list.d.ts.map +1 -0
  185. package/dist/cli/commands/session/disconnect.d.ts +6 -0
  186. package/dist/cli/commands/session/disconnect.d.ts.map +1 -0
  187. package/dist/cli/commands/session/launch.d.ts +29 -0
  188. package/dist/cli/commands/session/launch.d.ts.map +1 -0
  189. package/dist/cli/commands/session/status.d.ts +7 -0
  190. package/dist/cli/commands/session/status.d.ts.map +1 -0
  191. package/dist/cli/commands/shopping.d.ts +25 -0
  192. package/dist/cli/commands/shopping.d.ts.map +1 -0
  193. package/dist/cli/commands/status.d.ts +24 -0
  194. package/dist/cli/commands/status.d.ts.map +1 -0
  195. package/dist/cli/commands/targets/close.d.ts +6 -0
  196. package/dist/cli/commands/targets/close.d.ts.map +1 -0
  197. package/dist/cli/commands/targets/list.d.ts +7 -0
  198. package/dist/cli/commands/targets/list.d.ts.map +1 -0
  199. package/dist/cli/commands/targets/new.d.ts +7 -0
  200. package/dist/cli/commands/targets/new.d.ts.map +1 -0
  201. package/dist/cli/commands/targets/use.d.ts +7 -0
  202. package/dist/cli/commands/targets/use.d.ts.map +1 -0
  203. package/dist/cli/commands/types.d.ts +13 -0
  204. package/dist/cli/commands/types.d.ts.map +1 -0
  205. package/dist/cli/commands/uninstall.d.ts +14 -0
  206. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  207. package/dist/cli/commands/update.d.ts +7 -0
  208. package/dist/cli/commands/update.d.ts.map +1 -0
  209. package/dist/cli/daemon-autostart.d.ts +46 -0
  210. package/dist/cli/daemon-autostart.d.ts.map +1 -0
  211. package/dist/cli/daemon-client.d.ts +33 -0
  212. package/dist/cli/daemon-client.d.ts.map +1 -0
  213. package/dist/cli/daemon-commands.d.ts +7 -0
  214. package/dist/cli/daemon-commands.d.ts.map +1 -0
  215. package/dist/cli/daemon-state.d.ts +56 -0
  216. package/dist/cli/daemon-state.d.ts.map +1 -0
  217. package/dist/cli/daemon-status.d.ts +19 -0
  218. package/dist/cli/daemon-status.d.ts.map +1 -0
  219. package/dist/cli/daemon.d.ts +29 -0
  220. package/dist/cli/daemon.d.ts.map +1 -0
  221. package/dist/cli/errors.d.ts +20 -0
  222. package/dist/cli/errors.d.ts.map +1 -0
  223. package/dist/cli/help.d.ts +33 -0
  224. package/dist/cli/help.d.ts.map +1 -0
  225. package/dist/cli/index.d.ts +2 -0
  226. package/dist/cli/index.d.ts.map +1 -0
  227. package/dist/cli/index.js +2825 -326
  228. package/dist/cli/index.js.map +1 -1
  229. package/dist/cli/installers/global.d.ts +9 -0
  230. package/dist/cli/installers/global.d.ts.map +1 -0
  231. package/dist/cli/installers/local.d.ts +9 -0
  232. package/dist/cli/installers/local.d.ts.map +1 -0
  233. package/dist/cli/installers/skills.d.ts +19 -0
  234. package/dist/cli/installers/skills.d.ts.map +1 -0
  235. package/dist/cli/output.d.ts +7 -0
  236. package/dist/cli/output.d.ts.map +1 -0
  237. package/dist/cli/remote-canvas-manager.d.ts +8 -0
  238. package/dist/cli/remote-canvas-manager.d.ts.map +1 -0
  239. package/dist/cli/remote-manager.d.ts +98 -0
  240. package/dist/cli/remote-manager.d.ts.map +1 -0
  241. package/dist/cli/remote-relay.d.ts +19 -0
  242. package/dist/cli/remote-relay.d.ts.map +1 -0
  243. package/dist/cli/templates/config.d.ts +7 -0
  244. package/dist/cli/templates/config.d.ts.map +1 -0
  245. package/dist/cli/utils/config.d.ts +20 -0
  246. package/dist/cli/utils/config.d.ts.map +1 -0
  247. package/dist/cli/utils/http.d.ts +5 -0
  248. package/dist/cli/utils/http.d.ts.map +1 -0
  249. package/dist/cli/utils/parse.d.ts +9 -0
  250. package/dist/cli/utils/parse.d.ts.map +1 -0
  251. package/dist/cli/utils/skills.d.ts +12 -0
  252. package/dist/cli/utils/skills.d.ts.map +1 -0
  253. package/dist/config.d.ts +208 -0
  254. package/dist/config.d.ts.map +1 -0
  255. package/dist/core/bootstrap.d.ts +3 -0
  256. package/dist/core/bootstrap.d.ts.map +1 -0
  257. package/dist/core/index.d.ts +3 -0
  258. package/dist/core/index.d.ts.map +1 -0
  259. package/dist/core/logging.d.ts +34 -0
  260. package/dist/core/logging.d.ts.map +1 -0
  261. package/dist/core/types.d.ts +36 -0
  262. package/dist/core/types.d.ts.map +1 -0
  263. package/dist/devtools/console-tracker.d.ts +44 -0
  264. package/dist/devtools/console-tracker.d.ts.map +1 -0
  265. package/dist/devtools/exception-tracker.d.ts +42 -0
  266. package/dist/devtools/exception-tracker.d.ts.map +1 -0
  267. package/dist/devtools/network-tracker.d.ts +34 -0
  268. package/dist/devtools/network-tracker.d.ts.map +1 -0
  269. package/dist/export/css-extract.d.ts +5 -0
  270. package/dist/export/css-extract.d.ts.map +1 -0
  271. package/dist/export/dom-capture.d.ts +15 -0
  272. package/dist/export/dom-capture.d.ts.map +1 -0
  273. package/dist/export/react-emitter.d.ts +11 -0
  274. package/dist/export/react-emitter.d.ts.map +1 -0
  275. package/dist/extension-extractor.d.ts +3 -0
  276. package/dist/extension-extractor.d.ts.map +1 -0
  277. package/dist/fs-UMRKOBNN.js +7 -0
  278. package/dist/fs-UMRKOBNN.js.map +1 -0
  279. package/dist/index.d.ts +3 -4
  280. package/dist/index.d.ts.map +1 -0
  281. package/dist/index.js +1028 -123
  282. package/dist/index.js.map +1 -1
  283. package/dist/macros/execute.d.ts +44 -0
  284. package/dist/macros/execute.d.ts.map +1 -0
  285. package/dist/macros/index.d.ts +9 -0
  286. package/dist/macros/index.d.ts.map +1 -0
  287. package/dist/macros/packs/core.d.ts +3 -0
  288. package/dist/macros/packs/core.d.ts.map +1 -0
  289. package/dist/macros/registry.d.ts +48 -0
  290. package/dist/macros/registry.d.ts.map +1 -0
  291. package/dist/macros-ND2M7LWU.js +399 -0
  292. package/dist/macros-ND2M7LWU.js.map +1 -0
  293. package/dist/opendevbrowser.d.ts +3 -4
  294. package/dist/opendevbrowser.d.ts.map +1 -0
  295. package/dist/opendevbrowser.js +1028 -123
  296. package/dist/opendevbrowser.js.map +1 -1
  297. package/dist/providers/adaptive-concurrency.d.ts +42 -0
  298. package/dist/providers/adaptive-concurrency.d.ts.map +1 -0
  299. package/dist/providers/artifacts.d.ts +34 -0
  300. package/dist/providers/artifacts.d.ts.map +1 -0
  301. package/dist/providers/blocker.d.ts +47 -0
  302. package/dist/providers/blocker.d.ts.map +1 -0
  303. package/dist/providers/community/index.d.ts +44 -0
  304. package/dist/providers/community/index.d.ts.map +1 -0
  305. package/dist/providers/enrichment.d.ts +33 -0
  306. package/dist/providers/enrichment.d.ts.map +1 -0
  307. package/dist/providers/errors.d.ts +41 -0
  308. package/dist/providers/errors.d.ts.map +1 -0
  309. package/dist/providers/index.d.ts +121 -0
  310. package/dist/providers/index.d.ts.map +1 -0
  311. package/dist/providers/normalize.d.ts +39 -0
  312. package/dist/providers/normalize.d.ts.map +1 -0
  313. package/dist/providers/policy.d.ts +5 -0
  314. package/dist/providers/policy.d.ts.map +1 -0
  315. package/dist/providers/registry.d.ts +22 -0
  316. package/dist/providers/registry.d.ts.map +1 -0
  317. package/dist/providers/renderer.d.ts +49 -0
  318. package/dist/providers/renderer.d.ts.map +1 -0
  319. package/dist/providers/runtime-factory.d.ts +20 -0
  320. package/dist/providers/runtime-factory.d.ts.map +1 -0
  321. package/dist/providers/safety/prompt-guard.d.ts +34 -0
  322. package/dist/providers/safety/prompt-guard.d.ts.map +1 -0
  323. package/dist/providers/shared/anti-bot-policy.d.ts +51 -0
  324. package/dist/providers/shared/anti-bot-policy.d.ts.map +1 -0
  325. package/dist/providers/shared/post-policy.d.ts +31 -0
  326. package/dist/providers/shared/post-policy.d.ts.map +1 -0
  327. package/dist/providers/shared/request-headers.d.ts +5 -0
  328. package/dist/providers/shared/request-headers.d.ts.map +1 -0
  329. package/dist/providers/shared/traversal-url.d.ts +2 -0
  330. package/dist/providers/shared/traversal-url.d.ts.map +1 -0
  331. package/dist/providers/shopping/index.d.ts +63 -0
  332. package/dist/providers/shopping/index.d.ts.map +1 -0
  333. package/dist/providers/social/bluesky.d.ts +3 -0
  334. package/dist/providers/social/bluesky.d.ts.map +1 -0
  335. package/dist/providers/social/facebook.d.ts +3 -0
  336. package/dist/providers/social/facebook.d.ts.map +1 -0
  337. package/dist/providers/social/index.d.ts +31 -0
  338. package/dist/providers/social/index.d.ts.map +1 -0
  339. package/dist/providers/social/instagram.d.ts +3 -0
  340. package/dist/providers/social/instagram.d.ts.map +1 -0
  341. package/dist/providers/social/linkedin.d.ts +3 -0
  342. package/dist/providers/social/linkedin.d.ts.map +1 -0
  343. package/dist/providers/social/platform.d.ts +40 -0
  344. package/dist/providers/social/platform.d.ts.map +1 -0
  345. package/dist/providers/social/reddit.d.ts +3 -0
  346. package/dist/providers/social/reddit.d.ts.map +1 -0
  347. package/dist/providers/social/threads.d.ts +3 -0
  348. package/dist/providers/social/threads.d.ts.map +1 -0
  349. package/dist/providers/social/tiktok.d.ts +3 -0
  350. package/dist/providers/social/tiktok.d.ts.map +1 -0
  351. package/dist/providers/social/x.d.ts +3 -0
  352. package/dist/providers/social/x.d.ts.map +1 -0
  353. package/dist/providers/social/youtube-resolver.d.ts +78 -0
  354. package/dist/providers/social/youtube-resolver.d.ts.map +1 -0
  355. package/dist/providers/social/youtube.d.ts +34 -0
  356. package/dist/providers/social/youtube.d.ts.map +1 -0
  357. package/dist/providers/tier-router.d.ts +30 -0
  358. package/dist/providers/tier-router.d.ts.map +1 -0
  359. package/dist/providers/timebox.d.ts +20 -0
  360. package/dist/providers/timebox.d.ts.map +1 -0
  361. package/dist/providers/types.d.ts +344 -0
  362. package/dist/providers/types.d.ts.map +1 -0
  363. package/dist/providers/web/crawl-worker.d.ts +36 -0
  364. package/dist/providers/web/crawl-worker.d.ts.map +1 -0
  365. package/dist/providers/web/crawler.d.ts +101 -0
  366. package/dist/providers/web/crawler.d.ts.map +1 -0
  367. package/dist/providers/web/extract.d.ts +11 -0
  368. package/dist/providers/web/extract.d.ts.map +1 -0
  369. package/dist/providers/web/index.d.ts +24 -0
  370. package/dist/providers/web/index.d.ts.map +1 -0
  371. package/dist/providers/web/policy.d.ts +14 -0
  372. package/dist/providers/web/policy.d.ts.map +1 -0
  373. package/dist/providers/workflows.d.ts +67 -0
  374. package/dist/providers/workflows.d.ts.map +1 -0
  375. package/dist/providers-G3LRHQXX.js +121 -0
  376. package/dist/providers-G3LRHQXX.js.map +1 -0
  377. package/dist/relay/protocol.d.ts +399 -0
  378. package/dist/relay/protocol.d.ts.map +1 -0
  379. package/dist/relay/relay-endpoints.d.ts +16 -0
  380. package/dist/relay/relay-endpoints.d.ts.map +1 -0
  381. package/dist/relay/relay-server.d.ts +124 -0
  382. package/dist/relay/relay-server.d.ts.map +1 -0
  383. package/dist/relay/relay-types.d.ts +12 -0
  384. package/dist/relay/relay-types.d.ts.map +1 -0
  385. package/dist/runtime-factory-BICHDPE7.js +13 -0
  386. package/dist/runtime-factory-BICHDPE7.js.map +1 -0
  387. package/dist/skills/continuity-nudge.d.ts +12 -0
  388. package/dist/skills/continuity-nudge.d.ts.map +1 -0
  389. package/dist/skills/skill-loader.d.ts +20 -0
  390. package/dist/skills/skill-loader.d.ts.map +1 -0
  391. package/dist/skills/skill-nudge.d.ts +18 -0
  392. package/dist/skills/skill-nudge.d.ts.map +1 -0
  393. package/dist/skills/types.d.ts +12 -0
  394. package/dist/skills/types.d.ts.map +1 -0
  395. package/dist/snapshot/ops-snapshot.d.ts +16 -0
  396. package/dist/snapshot/ops-snapshot.d.ts.map +1 -0
  397. package/dist/snapshot/refs.d.ts +23 -0
  398. package/dist/snapshot/refs.d.ts.map +1 -0
  399. package/dist/snapshot/snapshotter.d.ts +27 -0
  400. package/dist/snapshot/snapshotter.d.ts.map +1 -0
  401. package/dist/tools/annotate.d.ts +4 -0
  402. package/dist/tools/annotate.d.ts.map +1 -0
  403. package/dist/tools/canvas.d.ts +4 -0
  404. package/dist/tools/canvas.d.ts.map +1 -0
  405. package/dist/tools/check.d.ts +4 -0
  406. package/dist/tools/check.d.ts.map +1 -0
  407. package/dist/tools/click.d.ts +4 -0
  408. package/dist/tools/click.d.ts.map +1 -0
  409. package/dist/tools/clone_component.d.ts +4 -0
  410. package/dist/tools/clone_component.d.ts.map +1 -0
  411. package/dist/tools/clone_page.d.ts +4 -0
  412. package/dist/tools/clone_page.d.ts.map +1 -0
  413. package/dist/tools/close.d.ts +4 -0
  414. package/dist/tools/close.d.ts.map +1 -0
  415. package/dist/tools/connect.d.ts +4 -0
  416. package/dist/tools/connect.d.ts.map +1 -0
  417. package/dist/tools/console_poll.d.ts +4 -0
  418. package/dist/tools/console_poll.d.ts.map +1 -0
  419. package/dist/tools/cookie_import.d.ts +25 -0
  420. package/dist/tools/cookie_import.d.ts.map +1 -0
  421. package/dist/tools/cookie_list.d.ts +9 -0
  422. package/dist/tools/cookie_list.d.ts.map +1 -0
  423. package/dist/tools/debug_trace_snapshot.d.ts +4 -0
  424. package/dist/tools/debug_trace_snapshot.d.ts.map +1 -0
  425. package/dist/tools/deps.d.ts +28 -0
  426. package/dist/tools/deps.d.ts.map +1 -0
  427. package/dist/tools/disconnect.d.ts +4 -0
  428. package/dist/tools/disconnect.d.ts.map +1 -0
  429. package/dist/tools/dom_get_html.d.ts +4 -0
  430. package/dist/tools/dom_get_html.d.ts.map +1 -0
  431. package/dist/tools/dom_get_text.d.ts +4 -0
  432. package/dist/tools/dom_get_text.d.ts.map +1 -0
  433. package/dist/tools/get_attr.d.ts +4 -0
  434. package/dist/tools/get_attr.d.ts.map +1 -0
  435. package/dist/tools/get_value.d.ts +4 -0
  436. package/dist/tools/get_value.d.ts.map +1 -0
  437. package/dist/tools/goto.d.ts +4 -0
  438. package/dist/tools/goto.d.ts.map +1 -0
  439. package/dist/tools/hover.d.ts +4 -0
  440. package/dist/tools/hover.d.ts.map +1 -0
  441. package/dist/tools/index.d.ts +4 -0
  442. package/dist/tools/index.d.ts.map +1 -0
  443. package/dist/tools/is_checked.d.ts +4 -0
  444. package/dist/tools/is_checked.d.ts.map +1 -0
  445. package/dist/tools/is_enabled.d.ts +4 -0
  446. package/dist/tools/is_enabled.d.ts.map +1 -0
  447. package/dist/tools/is_visible.d.ts +4 -0
  448. package/dist/tools/is_visible.d.ts.map +1 -0
  449. package/dist/tools/launch.d.ts +4 -0
  450. package/dist/tools/launch.d.ts.map +1 -0
  451. package/dist/tools/list.d.ts +4 -0
  452. package/dist/tools/list.d.ts.map +1 -0
  453. package/dist/tools/macro_resolve.d.ts +25 -0
  454. package/dist/tools/macro_resolve.d.ts.map +1 -0
  455. package/dist/tools/network_poll.d.ts +4 -0
  456. package/dist/tools/network_poll.d.ts.map +1 -0
  457. package/dist/tools/page.d.ts +4 -0
  458. package/dist/tools/page.d.ts.map +1 -0
  459. package/dist/tools/perf.d.ts +4 -0
  460. package/dist/tools/perf.d.ts.map +1 -0
  461. package/dist/tools/press.d.ts +4 -0
  462. package/dist/tools/press.d.ts.map +1 -0
  463. package/dist/tools/product_video_run.d.ts +4 -0
  464. package/dist/tools/product_video_run.d.ts.map +1 -0
  465. package/dist/tools/prompting_guide.d.ts +4 -0
  466. package/dist/tools/prompting_guide.d.ts.map +1 -0
  467. package/dist/tools/research_run.d.ts +4 -0
  468. package/dist/tools/research_run.d.ts.map +1 -0
  469. package/dist/tools/response.d.ts +19 -0
  470. package/dist/tools/response.d.ts.map +1 -0
  471. package/dist/tools/run.d.ts +4 -0
  472. package/dist/tools/run.d.ts.map +1 -0
  473. package/dist/tools/screenshot.d.ts +4 -0
  474. package/dist/tools/screenshot.d.ts.map +1 -0
  475. package/dist/tools/scroll.d.ts +4 -0
  476. package/dist/tools/scroll.d.ts.map +1 -0
  477. package/dist/tools/scroll_into_view.d.ts +4 -0
  478. package/dist/tools/scroll_into_view.d.ts.map +1 -0
  479. package/dist/tools/select.d.ts +4 -0
  480. package/dist/tools/select.d.ts.map +1 -0
  481. package/dist/tools/shopping_run.d.ts +4 -0
  482. package/dist/tools/shopping_run.d.ts.map +1 -0
  483. package/dist/tools/skill_list.d.ts +4 -0
  484. package/dist/tools/skill_list.d.ts.map +1 -0
  485. package/dist/tools/skill_load.d.ts +4 -0
  486. package/dist/tools/skill_load.d.ts.map +1 -0
  487. package/dist/tools/snapshot.d.ts +4 -0
  488. package/dist/tools/snapshot.d.ts.map +1 -0
  489. package/dist/tools/status.d.ts +4 -0
  490. package/dist/tools/status.d.ts.map +1 -0
  491. package/dist/tools/target_close.d.ts +4 -0
  492. package/dist/tools/target_close.d.ts.map +1 -0
  493. package/dist/tools/target_new.d.ts +4 -0
  494. package/dist/tools/target_new.d.ts.map +1 -0
  495. package/dist/tools/target_use.d.ts +4 -0
  496. package/dist/tools/target_use.d.ts.map +1 -0
  497. package/dist/tools/targets_list.d.ts +4 -0
  498. package/dist/tools/targets_list.d.ts.map +1 -0
  499. package/dist/tools/type.d.ts +4 -0
  500. package/dist/tools/type.d.ts.map +1 -0
  501. package/dist/tools/uncheck.d.ts +4 -0
  502. package/dist/tools/uncheck.d.ts.map +1 -0
  503. package/dist/tools/wait.d.ts +4 -0
  504. package/dist/tools/wait.d.ts.map +1 -0
  505. package/dist/tools/workflow-runtime.d.ts +3 -0
  506. package/dist/tools/workflow-runtime.d.ts.map +1 -0
  507. package/dist/utils/crypto.d.ts +2 -0
  508. package/dist/utils/crypto.d.ts.map +1 -0
  509. package/dist/utils/endpoint-validation.d.ts +2 -0
  510. package/dist/utils/endpoint-validation.d.ts.map +1 -0
  511. package/dist/utils/fs.d.ts +5 -0
  512. package/dist/utils/fs.d.ts.map +1 -0
  513. package/dist/utils/hub-enabled.d.ts +3 -0
  514. package/dist/utils/hub-enabled.d.ts.map +1 -0
  515. package/extension/canvas.html +636 -0
  516. package/extension/dist/annotate-content.css +15 -6
  517. package/extension/dist/annotate-content.js +119 -9
  518. package/extension/dist/annotation-payload.js +163 -0
  519. package/extension/dist/background.js +158 -22
  520. package/extension/dist/canvas/canvas-runtime.js +1061 -0
  521. package/extension/dist/canvas/model.js +213 -0
  522. package/extension/dist/canvas/viewport-fit.js +67 -0
  523. package/extension/dist/canvas-page.js +1801 -0
  524. package/extension/dist/ops/dom-bridge.js +116 -3
  525. package/extension/dist/ops/ops-runtime.js +1014 -48
  526. package/extension/dist/ops/ops-session-store.js +37 -116
  527. package/extension/dist/ops/parallelism-governor.js +117 -0
  528. package/extension/dist/ops/snapshot-shared.js +21 -5
  529. package/extension/dist/ops/target-session-coordinator.js +157 -0
  530. package/extension/dist/popup.js +155 -31
  531. package/extension/dist/services/CDPRouter.js +70 -5
  532. package/extension/dist/services/ConnectionManager.js +22 -3
  533. package/extension/dist/services/RelayClient.js +9 -0
  534. package/extension/dist/services/TabManager.js +35 -12
  535. package/extension/dist/types.js +2 -0
  536. package/extension/icons/icon128.png +0 -0
  537. package/extension/icons/icon16.png +0 -0
  538. package/extension/icons/icon32.png +0 -0
  539. package/extension/icons/icon48.png +0 -0
  540. package/extension/manifest.json +1 -1
  541. package/extension/popup.html +52 -0
  542. package/package.json +30 -19
  543. package/scripts/native/host.cjs +230 -0
  544. package/scripts/native/install.ps1 +73 -0
  545. package/scripts/native/install.sh +66 -0
  546. package/scripts/native/uninstall.ps1 +25 -0
  547. package/scripts/native/uninstall.sh +26 -0
  548. package/skills/AGENTS.md +20 -8
  549. package/skills/opendevbrowser-best-practices/SKILL.md +248 -74
  550. package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +44 -0
  551. package/skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md +141 -0
  552. package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +191 -0
  553. package/skills/opendevbrowser-best-practices/artifacts/debug-trace-playbook.md +36 -0
  554. package/skills/opendevbrowser-best-practices/artifacts/fingerprint-tiers.md +36 -0
  555. package/skills/opendevbrowser-best-practices/artifacts/macro-workflows.md +43 -0
  556. package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +36 -0
  557. package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +89 -0
  558. package/skills/opendevbrowser-best-practices/assets/templates/canvas-blocker-checklist.json +70 -0
  559. package/skills/opendevbrowser-best-practices/assets/templates/canvas-feedback-eval.json +73 -0
  560. package/skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json +67 -0
  561. package/skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json +126 -0
  562. package/skills/opendevbrowser-best-practices/assets/templates/cdp-forward-envelope.json +11 -0
  563. package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +56 -0
  564. package/skills/opendevbrowser-best-practices/assets/templates/ops-request-envelope.json +9 -0
  565. package/skills/opendevbrowser-best-practices/assets/templates/robustness-checklist.json +136 -0
  566. package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +28 -0
  567. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +170 -0
  568. package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +164 -0
  569. package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +234 -0
  570. package/skills/opendevbrowser-continuity-ledger/SKILL.md +10 -0
  571. package/skills/opendevbrowser-data-extraction/SKILL.md +126 -0
  572. package/skills/opendevbrowser-data-extraction/artifacts/extraction-workflows.md +31 -0
  573. package/skills/opendevbrowser-data-extraction/assets/templates/compliance-checklist.md +7 -0
  574. package/skills/opendevbrowser-data-extraction/assets/templates/extraction-schema.json +17 -0
  575. package/skills/opendevbrowser-data-extraction/assets/templates/pagination-state.json +11 -0
  576. package/skills/opendevbrowser-data-extraction/assets/templates/quality-gates.json +10 -0
  577. package/skills/opendevbrowser-data-extraction/examples/sample-schema.json +19 -0
  578. package/skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh +83 -0
  579. package/skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh +49 -0
  580. package/skills/opendevbrowser-form-testing/SKILL.md +143 -0
  581. package/skills/opendevbrowser-form-testing/artifacts/form-workflows.md +37 -0
  582. package/skills/opendevbrowser-form-testing/assets/templates/a11y-assertions.md +7 -0
  583. package/skills/opendevbrowser-form-testing/assets/templates/challenge-decision-tree.json +16 -0
  584. package/skills/opendevbrowser-form-testing/assets/templates/multi-step-state.json +11 -0
  585. package/skills/opendevbrowser-form-testing/assets/templates/validation-matrix.json +24 -0
  586. package/skills/opendevbrowser-form-testing/examples/sample-validation-matrix.json +29 -0
  587. package/skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh +82 -0
  588. package/skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh +49 -0
  589. package/skills/opendevbrowser-login-automation/SKILL.md +159 -0
  590. package/skills/opendevbrowser-login-automation/artifacts/login-workflows.md +39 -0
  591. package/skills/opendevbrowser-login-automation/assets/templates/auth-signals.json +21 -0
  592. package/skills/opendevbrowser-login-automation/assets/templates/challenge-checkpoint.md +10 -0
  593. package/skills/opendevbrowser-login-automation/assets/templates/login-scenario-matrix.json +26 -0
  594. package/skills/opendevbrowser-login-automation/examples/sample-auth-signals.json +14 -0
  595. package/skills/opendevbrowser-login-automation/scripts/record-auth-signals.sh +18 -0
  596. package/skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh +99 -0
  597. package/skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh +50 -0
  598. package/skills/opendevbrowser-product-presentation-asset/SKILL.md +98 -0
  599. package/skills/opendevbrowser-product-presentation-asset/artifacts/asset-pack-assembly.md +23 -0
  600. package/skills/opendevbrowser-product-presentation-asset/artifacts/ugc-creative-guide.md +21 -0
  601. package/skills/opendevbrowser-product-presentation-asset/assets/templates/claims-evidence-map.md +5 -0
  602. package/skills/opendevbrowser-product-presentation-asset/assets/templates/copy.md +5 -0
  603. package/skills/opendevbrowser-product-presentation-asset/assets/templates/features.md +4 -0
  604. package/skills/opendevbrowser-product-presentation-asset/assets/templates/manifest.schema.json +14 -0
  605. package/skills/opendevbrowser-product-presentation-asset/assets/templates/shot-list.md +7 -0
  606. package/skills/opendevbrowser-product-presentation-asset/assets/templates/ugc-concepts.md +17 -0
  607. package/skills/opendevbrowser-product-presentation-asset/assets/templates/user-actions.md +7 -0
  608. package/skills/opendevbrowser-product-presentation-asset/assets/templates/video-assembly.md +18 -0
  609. package/skills/opendevbrowser-product-presentation-asset/examples/sample-input.json +6 -0
  610. package/skills/opendevbrowser-product-presentation-asset/examples/sample-manifest.json +18 -0
  611. package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +9 -0
  612. package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +14 -0
  613. package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +9 -0
  614. package/skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh +96 -0
  615. package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +56 -0
  616. package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +43 -0
  617. package/skills/opendevbrowser-research/SKILL.md +73 -0
  618. package/skills/opendevbrowser-research/artifacts/research-workflows.md +29 -0
  619. package/skills/opendevbrowser-research/assets/templates/compact.md +7 -0
  620. package/skills/opendevbrowser-research/assets/templates/context.json +18 -0
  621. package/skills/opendevbrowser-research/assets/templates/report.md +9 -0
  622. package/skills/opendevbrowser-research/examples/sample-input.json +6 -0
  623. package/skills/opendevbrowser-research/examples/sample-output.md +4 -0
  624. package/skills/opendevbrowser-research/scripts/render-output.sh +12 -0
  625. package/skills/opendevbrowser-research/scripts/run-research.sh +23 -0
  626. package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +48 -0
  627. package/skills/opendevbrowser-research/scripts/write-artifacts.sh +29 -0
  628. package/skills/opendevbrowser-shopping/SKILL.md +118 -0
  629. package/skills/opendevbrowser-shopping/artifacts/deal-hunting-workflows.md +37 -0
  630. package/skills/opendevbrowser-shopping/assets/templates/deal-thresholds.json +8 -0
  631. package/skills/opendevbrowser-shopping/assets/templates/deals-context.json +9 -0
  632. package/skills/opendevbrowser-shopping/assets/templates/deals-table.md +4 -0
  633. package/skills/opendevbrowser-shopping/assets/templates/market-analysis.json +30 -0
  634. package/skills/opendevbrowser-shopping/examples/sample-deals.md +4 -0
  635. package/skills/opendevbrowser-shopping/examples/sample-query.json +5 -0
  636. package/skills/opendevbrowser-shopping/scripts/analyze-market.sh +307 -0
  637. package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +28 -0
  638. package/skills/opendevbrowser-shopping/scripts/render-deals.sh +13 -0
  639. package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +32 -0
  640. package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +19 -0
  641. package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +53 -0
  642. package/dist/chunk-JVBMT2O5.js +0 -7173
  643. package/dist/chunk-JVBMT2O5.js.map +0 -1
  644. package/skills/data-extraction/SKILL.md +0 -128
  645. package/skills/form-testing/SKILL.md +0 -106
  646. package/skills/login-automation/SKILL.md +0 -108
@@ -0,0 +1,169 @@
1
+ // src/providers/errors.ts
2
+ var NETWORK_MESSAGE_RE = /(ECONNRESET|EAI_AGAIN|ENOTFOUND|socket hang up|network)/i;
3
+ var RATE_LIMIT_RE = /(rate limit|too many requests|429)/i;
4
+ var AUTH_RE = /(unauthorized|forbidden|401|403|auth)/i;
5
+ var TIMEOUT_RE = /(timeout|timed out|abort)/i;
6
+ var CHALLENGE_RE = /(captcha|challenge|anti.?bot|cf_chl|hcaptcha|recaptcha|interstitial)/i;
7
+ var IP_BLOCK_RE = /(ip blocked|ip ban|access denied from your ip|geo.?blocked)/i;
8
+ var CAPTION_MISSING_RE = /(caption|subtitle).*(missing|not found|unavailable)|no captions/i;
9
+ var TRANSCRIPT_RE = /transcript.*(missing|unavailable|not found)|no transcript/i;
10
+ var ENV_LIMITED_RE = /(extension not connected|manual interaction|environment|not available in this environment)/i;
11
+ var PROVIDER_REASON_CODES = [
12
+ "ip_blocked",
13
+ "token_required",
14
+ "auth_required",
15
+ "challenge_detected",
16
+ "rate_limited",
17
+ "caption_missing",
18
+ "env_limited",
19
+ "transcript_unavailable",
20
+ "policy_blocked",
21
+ "cooldown_active",
22
+ "strategy_unapproved"
23
+ ];
24
+ var reasonCodeSet = new Set(PROVIDER_REASON_CODES);
25
+ var isProviderReasonCode = (value) => {
26
+ return typeof value === "string" && reasonCodeSet.has(value);
27
+ };
28
+ var pickStatus = (details) => {
29
+ const status = details?.status;
30
+ return typeof status === "number" && Number.isFinite(status) ? status : void 0;
31
+ };
32
+ var readReasonFromDetails = (details) => {
33
+ const candidate = details?.reasonCode;
34
+ return isProviderReasonCode(candidate) ? candidate : void 0;
35
+ };
36
+ var normalizeProviderReasonCode = (params) => {
37
+ const fromDetails = readReasonFromDetails(params.details);
38
+ if (fromDetails) return fromDetails;
39
+ const message = params.message ?? "";
40
+ const status = params.status ?? pickStatus(params.details);
41
+ if (params.code === "policy_blocked") return "policy_blocked";
42
+ if (params.code === "rate_limited" || status === 429 || RATE_LIMIT_RE.test(message)) return "rate_limited";
43
+ if (params.code === "auth" || status === 401 || AUTH_RE.test(message)) return "token_required";
44
+ if (CHALLENGE_RE.test(message)) return "challenge_detected";
45
+ if (IP_BLOCK_RE.test(message)) return "ip_blocked";
46
+ if (CAPTION_MISSING_RE.test(message)) return "caption_missing";
47
+ if (TRANSCRIPT_RE.test(message)) return "transcript_unavailable";
48
+ if (ENV_LIMITED_RE.test(message)) return "env_limited";
49
+ return void 0;
50
+ };
51
+ var providerErrorCodeFromReasonCode = (reasonCode) => {
52
+ switch (reasonCode) {
53
+ case "rate_limited":
54
+ return "rate_limited";
55
+ case "token_required":
56
+ case "auth_required":
57
+ return "auth";
58
+ case "policy_blocked":
59
+ case "strategy_unapproved":
60
+ return "policy_blocked";
61
+ case "ip_blocked":
62
+ return "upstream";
63
+ case "caption_missing":
64
+ case "transcript_unavailable":
65
+ case "env_limited":
66
+ case "cooldown_active":
67
+ case "challenge_detected":
68
+ return "unavailable";
69
+ default:
70
+ return "unavailable";
71
+ }
72
+ };
73
+ var withReasonCodeDetails = (details, reasonCode) => {
74
+ if (!reasonCode) return details;
75
+ if (details && typeof details.reasonCode === "string") {
76
+ return details;
77
+ }
78
+ return {
79
+ ...details ?? {},
80
+ reasonCode
81
+ };
82
+ };
83
+ var ProviderRuntimeError = class extends Error {
84
+ code;
85
+ retryable;
86
+ reasonCode;
87
+ provider;
88
+ source;
89
+ details;
90
+ constructor(code, message, options = {}) {
91
+ super(message, { cause: options.cause });
92
+ this.name = "ProviderRuntimeError";
93
+ this.code = code;
94
+ this.retryable = options.retryable ?? isRetryableByCode(code);
95
+ this.reasonCode = options.reasonCode;
96
+ this.provider = options.provider;
97
+ this.source = options.source;
98
+ this.details = withReasonCodeDetails(options.details, options.reasonCode);
99
+ }
100
+ };
101
+ var isRetryableByCode = (code) => {
102
+ return code === "timeout" || code === "network" || code === "rate_limited" || code === "upstream" || code === "unavailable";
103
+ };
104
+ var isProviderRuntimeError = (value) => {
105
+ return value instanceof ProviderRuntimeError;
106
+ };
107
+ var createProviderError = (code, message, options = {}) => {
108
+ const reasonCode = options.reasonCode ?? readReasonFromDetails(options.details);
109
+ return {
110
+ code,
111
+ message,
112
+ retryable: options.retryable ?? isRetryableByCode(code),
113
+ ...reasonCode ? { reasonCode } : {},
114
+ ...options.provider ? { provider: options.provider } : {},
115
+ ...options.source ? { source: options.source } : {},
116
+ ...withReasonCodeDetails(options.details, reasonCode) ? { details: withReasonCodeDetails(options.details, reasonCode) } : {}
117
+ };
118
+ };
119
+ var toProviderError = (error, options = {}) => {
120
+ if (isProviderRuntimeError(error)) {
121
+ const reasonCode2 = error.reasonCode ?? normalizeProviderReasonCode({
122
+ code: error.code,
123
+ message: error.message,
124
+ details: error.details
125
+ });
126
+ return createProviderError(error.code, error.message, {
127
+ retryable: error.retryable,
128
+ reasonCode: reasonCode2,
129
+ provider: error.provider ?? options.provider,
130
+ source: error.source ?? options.source,
131
+ details: error.details ?? options.details
132
+ });
133
+ }
134
+ const message = error instanceof Error ? error.message : String(error);
135
+ const code = classifyErrorCode(message, options.defaultCode ?? "internal");
136
+ const reasonCode = normalizeProviderReasonCode({
137
+ code,
138
+ message,
139
+ details: options.details
140
+ });
141
+ return createProviderError(code, message || "Unknown provider failure", {
142
+ reasonCode,
143
+ provider: options.provider,
144
+ source: options.source,
145
+ details: options.details
146
+ });
147
+ };
148
+ var classifyErrorCode = (message, fallback) => {
149
+ if (!message) return fallback;
150
+ if (TIMEOUT_RE.test(message)) return "timeout";
151
+ if (RATE_LIMIT_RE.test(message)) return "rate_limited";
152
+ if (AUTH_RE.test(message)) return "auth";
153
+ if (NETWORK_MESSAGE_RE.test(message)) return "network";
154
+ if (/not supported|unsupported|not implemented/i.test(message)) return "not_supported";
155
+ if (/unavailable|service down|temporarily unavailable/i.test(message)) return "unavailable";
156
+ return fallback;
157
+ };
158
+
159
+ export {
160
+ isProviderReasonCode,
161
+ normalizeProviderReasonCode,
162
+ providerErrorCodeFromReasonCode,
163
+ ProviderRuntimeError,
164
+ isRetryableByCode,
165
+ isProviderRuntimeError,
166
+ createProviderError,
167
+ toProviderError
168
+ };
169
+ //# sourceMappingURL=chunk-FUSXMW3G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/errors.ts"],"sourcesContent":["import type {\n JsonValue,\n ProviderError,\n ProviderErrorCode,\n ProviderReasonCode,\n ProviderSource\n} from \"./types\";\n\nconst NETWORK_MESSAGE_RE = /(ECONNRESET|EAI_AGAIN|ENOTFOUND|socket hang up|network)/i;\nconst RATE_LIMIT_RE = /(rate limit|too many requests|429)/i;\nconst AUTH_RE = /(unauthorized|forbidden|401|403|auth)/i;\nconst TIMEOUT_RE = /(timeout|timed out|abort)/i;\nconst CHALLENGE_RE = /(captcha|challenge|anti.?bot|cf_chl|hcaptcha|recaptcha|interstitial)/i;\nconst IP_BLOCK_RE = /(ip blocked|ip ban|access denied from your ip|geo.?blocked)/i;\nconst CAPTION_MISSING_RE = /(caption|subtitle).*(missing|not found|unavailable)|no captions/i;\nconst TRANSCRIPT_RE = /transcript.*(missing|unavailable|not found)|no transcript/i;\nconst ENV_LIMITED_RE = /(extension not connected|manual interaction|environment|not available in this environment)/i;\n\nconst PROVIDER_REASON_CODES: ProviderReasonCode[] = [\n \"ip_blocked\",\n \"token_required\",\n \"auth_required\",\n \"challenge_detected\",\n \"rate_limited\",\n \"caption_missing\",\n \"env_limited\",\n \"transcript_unavailable\",\n \"policy_blocked\",\n \"cooldown_active\",\n \"strategy_unapproved\"\n];\n\nconst reasonCodeSet = new Set<string>(PROVIDER_REASON_CODES);\n\nexport const isProviderReasonCode = (value: unknown): value is ProviderReasonCode => {\n return typeof value === \"string\" && reasonCodeSet.has(value);\n};\n\nconst pickStatus = (details: Record<string, JsonValue> | undefined): number | undefined => {\n const status = details?.status;\n return typeof status === \"number\" && Number.isFinite(status) ? status : undefined;\n};\n\nconst readReasonFromDetails = (\n details: Record<string, JsonValue> | undefined\n): ProviderReasonCode | undefined => {\n const candidate = details?.reasonCode;\n return isProviderReasonCode(candidate) ? candidate : undefined;\n};\n\nexport const normalizeProviderReasonCode = (params: {\n code: ProviderErrorCode;\n message?: string;\n status?: number;\n details?: Record<string, JsonValue>;\n}): ProviderReasonCode | undefined => {\n const fromDetails = readReasonFromDetails(params.details);\n if (fromDetails) return fromDetails;\n\n const message = params.message ?? \"\";\n const status = params.status ?? pickStatus(params.details);\n\n if (params.code === \"policy_blocked\") return \"policy_blocked\";\n if (params.code === \"rate_limited\" || status === 429 || RATE_LIMIT_RE.test(message)) return \"rate_limited\";\n if (params.code === \"auth\" || status === 401 || AUTH_RE.test(message)) return \"token_required\";\n if (CHALLENGE_RE.test(message)) return \"challenge_detected\";\n if (IP_BLOCK_RE.test(message)) return \"ip_blocked\";\n if (CAPTION_MISSING_RE.test(message)) return \"caption_missing\";\n if (TRANSCRIPT_RE.test(message)) return \"transcript_unavailable\";\n if (ENV_LIMITED_RE.test(message)) return \"env_limited\";\n return undefined;\n};\n\nexport const providerErrorCodeFromReasonCode = (\n reasonCode: ProviderReasonCode | undefined\n): ProviderErrorCode => {\n switch (reasonCode) {\n case \"rate_limited\":\n return \"rate_limited\";\n case \"token_required\":\n case \"auth_required\":\n return \"auth\";\n case \"policy_blocked\":\n case \"strategy_unapproved\":\n return \"policy_blocked\";\n case \"ip_blocked\":\n return \"upstream\";\n case \"caption_missing\":\n case \"transcript_unavailable\":\n case \"env_limited\":\n case \"cooldown_active\":\n case \"challenge_detected\":\n return \"unavailable\";\n default:\n return \"unavailable\";\n }\n};\n\nconst withReasonCodeDetails = (\n details: Record<string, JsonValue> | undefined,\n reasonCode: ProviderReasonCode | undefined\n): Record<string, JsonValue> | undefined => {\n if (!reasonCode) return details;\n if (details && typeof details.reasonCode === \"string\") {\n return details;\n }\n return {\n ...(details ?? {}),\n reasonCode\n };\n};\n\nexport class ProviderRuntimeError extends Error {\n readonly code: ProviderErrorCode;\n readonly retryable: boolean;\n readonly reasonCode?: ProviderReasonCode;\n readonly provider?: string;\n readonly source?: ProviderSource;\n readonly details?: Record<string, JsonValue>;\n\n constructor(\n code: ProviderErrorCode,\n message: string,\n options: {\n retryable?: boolean;\n reasonCode?: ProviderReasonCode;\n provider?: string;\n source?: ProviderSource;\n details?: Record<string, JsonValue>;\n cause?: unknown;\n } = {}\n ) {\n super(message, { cause: options.cause });\n this.name = \"ProviderRuntimeError\";\n this.code = code;\n this.retryable = options.retryable ?? isRetryableByCode(code);\n this.reasonCode = options.reasonCode;\n this.provider = options.provider;\n this.source = options.source;\n this.details = withReasonCodeDetails(options.details, options.reasonCode);\n }\n}\n\nexport const isRetryableByCode = (code: ProviderErrorCode): boolean => {\n return code === \"timeout\"\n || code === \"network\"\n || code === \"rate_limited\"\n || code === \"upstream\"\n || code === \"unavailable\";\n};\n\nexport const isProviderRuntimeError = (value: unknown): value is ProviderRuntimeError => {\n return value instanceof ProviderRuntimeError;\n};\n\nexport const createProviderError = (\n code: ProviderErrorCode,\n message: string,\n options: {\n retryable?: boolean;\n reasonCode?: ProviderReasonCode;\n provider?: string;\n source?: ProviderSource;\n details?: Record<string, JsonValue>;\n } = {}\n): ProviderError => {\n const reasonCode = options.reasonCode ?? readReasonFromDetails(options.details);\n return {\n code,\n message,\n retryable: options.retryable ?? isRetryableByCode(code),\n ...(reasonCode ? { reasonCode } : {}),\n ...(options.provider ? { provider: options.provider } : {}),\n ...(options.source ? { source: options.source } : {}),\n ...(withReasonCodeDetails(options.details, reasonCode)\n ? { details: withReasonCodeDetails(options.details, reasonCode) }\n : {})\n };\n};\n\nexport const toProviderError = (\n error: unknown,\n options: {\n provider?: string;\n source?: ProviderSource;\n defaultCode?: ProviderErrorCode;\n details?: Record<string, JsonValue>;\n } = {}\n): ProviderError => {\n if (isProviderRuntimeError(error)) {\n const reasonCode = error.reasonCode\n ?? normalizeProviderReasonCode({\n code: error.code,\n message: error.message,\n details: error.details\n });\n return createProviderError(error.code, error.message, {\n retryable: error.retryable,\n reasonCode,\n provider: error.provider ?? options.provider,\n source: error.source ?? options.source,\n details: error.details ?? options.details\n });\n }\n\n const message = error instanceof Error ? error.message : String(error);\n const code = classifyErrorCode(message, options.defaultCode ?? \"internal\");\n const reasonCode = normalizeProviderReasonCode({\n code,\n message,\n details: options.details\n });\n\n return createProviderError(code, message || \"Unknown provider failure\", {\n reasonCode,\n provider: options.provider,\n source: options.source,\n details: options.details\n });\n};\n\nconst classifyErrorCode = (message: string, fallback: ProviderErrorCode): ProviderErrorCode => {\n if (!message) return fallback;\n if (TIMEOUT_RE.test(message)) return \"timeout\";\n if (RATE_LIMIT_RE.test(message)) return \"rate_limited\";\n if (AUTH_RE.test(message)) return \"auth\";\n if (NETWORK_MESSAGE_RE.test(message)) return \"network\";\n if (/not supported|unsupported|not implemented/i.test(message)) return \"not_supported\";\n if (/unavailable|service down|temporarily unavailable/i.test(message)) return \"unavailable\";\n return fallback;\n};\n"],"mappings":"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","names":["reasonCode"]}
@@ -0,0 +1,34 @@
1
+ // src/utils/fs.ts
2
+ import * as fs from "fs";
3
+ import * as path from "path";
4
+ import * as crypto from "crypto";
5
+ function writeFileAtomic(filePath, content, options = {}) {
6
+ const { encoding = "utf-8", mode } = options;
7
+ const dir = path.dirname(filePath);
8
+ const hash = crypto.randomBytes(8).toString("hex");
9
+ const tempPath = path.join(dir, `.${path.basename(filePath)}.${process.pid}.${hash}.tmp`);
10
+ try {
11
+ if (!fs.existsSync(dir)) {
12
+ fs.mkdirSync(dir, { recursive: true });
13
+ }
14
+ const writeOptions = { encoding };
15
+ if (mode !== void 0) {
16
+ writeOptions.mode = mode;
17
+ }
18
+ fs.writeFileSync(tempPath, content, writeOptions);
19
+ fs.renameSync(tempPath, filePath);
20
+ } catch (error) {
21
+ try {
22
+ if (fs.existsSync(tempPath)) {
23
+ fs.unlinkSync(tempPath);
24
+ }
25
+ } catch {
26
+ }
27
+ throw error;
28
+ }
29
+ }
30
+
31
+ export {
32
+ writeFileAtomic
33
+ };
34
+ //# sourceMappingURL=chunk-TBUCZX4A.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/fs.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as crypto from \"crypto\";\n\nexport function writeFileAtomic(\n filePath: string,\n content: string,\n options: { encoding?: BufferEncoding; mode?: number } = {}\n): void {\n const { encoding = \"utf-8\", mode } = options;\n const dir = path.dirname(filePath);\n const hash = crypto.randomBytes(8).toString(\"hex\");\n const tempPath = path.join(dir, `.${path.basename(filePath)}.${process.pid}.${hash}.tmp`);\n\n try {\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n\n const writeOptions: fs.WriteFileOptions = { encoding };\n if (mode !== undefined) {\n writeOptions.mode = mode;\n }\n fs.writeFileSync(tempPath, content, writeOptions);\n fs.renameSync(tempPath, filePath);\n } catch (error) {\n try {\n if (fs.existsSync(tempPath)) {\n fs.unlinkSync(tempPath);\n }\n } catch {\n /* best-effort cleanup */\n }\n throw error;\n }\n}\n"],"mappings":";AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,YAAY,YAAY;AAEjB,SAAS,gBACd,UACA,SACA,UAAwD,CAAC,GACnD;AACN,QAAM,EAAE,WAAW,SAAS,KAAK,IAAI;AACrC,QAAM,MAAW,aAAQ,QAAQ;AACjC,QAAM,OAAc,mBAAY,CAAC,EAAE,SAAS,KAAK;AACjD,QAAM,WAAgB,UAAK,KAAK,IAAS,cAAS,QAAQ,CAAC,IAAI,QAAQ,GAAG,IAAI,IAAI,MAAM;AAExF,MAAI;AACF,QAAI,CAAI,cAAW,GAAG,GAAG;AACvB,MAAG,aAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,IACvC;AAEA,UAAM,eAAoC,EAAE,SAAS;AACrD,QAAI,SAAS,QAAW;AACtB,mBAAa,OAAO;AAAA,IACtB;AACA,IAAG,iBAAc,UAAU,SAAS,YAAY;AAChD,IAAG,cAAW,UAAU,QAAQ;AAAA,EAClC,SAAS,OAAO;AACd,QAAI;AACF,UAAO,cAAW,QAAQ,GAAG;AAC3B,QAAG,cAAW,QAAQ;AAAA,MACxB;AAAA,IACF,QAAQ;AAAA,IAER;AACA,UAAM;AAAA,EACR;AACF;","names":[]}
@@ -0,0 +1,276 @@
1
+ import {
2
+ createDefaultRuntime
3
+ } from "./chunk-D633UO34.js";
4
+
5
+ // src/providers/runtime-factory.ts
6
+ import * as path from "path";
7
+ import * as os from "os";
8
+ import { readFile } from "fs/promises";
9
+ var DEFAULT_COOKIE_POLICY = "auto";
10
+ var DEFAULT_COOKIE_SOURCE = {
11
+ type: "file",
12
+ value: "~/.config/opencode/opendevbrowser.provider-cookies.json"
13
+ };
14
+ var toFallbackMode = (mode) => {
15
+ return mode === "extension" ? "extension" : "managed_headed";
16
+ };
17
+ var expandHomePath = (filePath) => {
18
+ if (filePath === "~") return os.homedir();
19
+ if (filePath.startsWith("~/")) {
20
+ return path.join(os.homedir(), filePath.slice(2));
21
+ }
22
+ return filePath;
23
+ };
24
+ var cookieSourceRef = (source) => {
25
+ if (source.type === "file") {
26
+ return expandHomePath(source.value);
27
+ }
28
+ if (source.type === "env") {
29
+ return source.value;
30
+ }
31
+ return "inline";
32
+ };
33
+ var parseCookieArray = (payload) => {
34
+ const parsed = JSON.parse(payload);
35
+ if (!Array.isArray(parsed)) {
36
+ throw new Error("Cookie payload must be a JSON array.");
37
+ }
38
+ return parsed;
39
+ };
40
+ var readCookiesFromSource = async (source) => {
41
+ if (source.type === "inline") {
42
+ return {
43
+ cookies: source.value,
44
+ available: source.value.length > 0,
45
+ ...source.value.length === 0 ? { message: "Inline cookie source is empty." } : {}
46
+ };
47
+ }
48
+ if (source.type === "env") {
49
+ const envValue = process.env[source.value];
50
+ if (!envValue || envValue.trim().length === 0) {
51
+ return {
52
+ cookies: [],
53
+ available: false,
54
+ message: `Cookie env ${source.value} is not set.`
55
+ };
56
+ }
57
+ try {
58
+ const cookies = parseCookieArray(envValue);
59
+ return { cookies, available: cookies.length > 0 };
60
+ } catch (error) {
61
+ const message = error instanceof Error ? error.message : String(error);
62
+ return {
63
+ cookies: [],
64
+ available: false,
65
+ message: `Cookie env ${source.value} is invalid JSON: ${message}`
66
+ };
67
+ }
68
+ }
69
+ const resolvedPath = expandHomePath(source.value);
70
+ try {
71
+ const payload = await readFile(resolvedPath, "utf8");
72
+ const cookies = parseCookieArray(payload);
73
+ return { cookies, available: cookies.length > 0 };
74
+ } catch (error) {
75
+ if (error.code === "ENOENT") {
76
+ return {
77
+ cookies: [],
78
+ available: false,
79
+ message: `Cookie file not found: ${resolvedPath}`
80
+ };
81
+ }
82
+ const message = error instanceof Error ? error.message : String(error);
83
+ return {
84
+ cookies: [],
85
+ available: false,
86
+ message: `Cookie file read failed: ${message}`
87
+ };
88
+ }
89
+ };
90
+ var resolveEffectiveCookiePolicy = (defaults, request) => {
91
+ if (request.cookiePolicyOverride) {
92
+ return request.cookiePolicyOverride;
93
+ }
94
+ if (request.useCookies === false) {
95
+ return "off";
96
+ }
97
+ if (request.useCookies === true && defaults.policy === "off") {
98
+ return "auto";
99
+ }
100
+ return defaults.policy;
101
+ };
102
+ var baseCookieDiagnostics = (policy, source) => ({
103
+ policy,
104
+ source: source.type,
105
+ sourceRef: cookieSourceRef(source),
106
+ attempted: false,
107
+ available: false,
108
+ loaded: 0,
109
+ injected: 0,
110
+ rejected: 0,
111
+ verifiedCount: 0,
112
+ strict: false
113
+ });
114
+ var fallbackFailure = (reasonCode, message, cookieDiagnostics) => ({
115
+ ok: false,
116
+ reasonCode,
117
+ details: {
118
+ message,
119
+ ...cookieDiagnostics ? { cookieDiagnostics } : {}
120
+ }
121
+ });
122
+ var createBrowserFallbackPort = (manager, cookieDefaults = {}) => {
123
+ if (!manager) return void 0;
124
+ const defaults = {
125
+ policy: cookieDefaults.policy ?? DEFAULT_COOKIE_POLICY,
126
+ source: cookieDefaults.source ?? DEFAULT_COOKIE_SOURCE
127
+ };
128
+ return {
129
+ resolve: async (request) => {
130
+ const requestUrl = request.url;
131
+ if (!requestUrl) {
132
+ return fallbackFailure("env_limited", "Browser fallback requires a URL.");
133
+ }
134
+ let sessionId = null;
135
+ const policy = resolveEffectiveCookiePolicy(defaults, request);
136
+ const cookieDiagnostics = baseCookieDiagnostics(policy, defaults.source);
137
+ try {
138
+ const launched = await manager.launch({
139
+ // Force managed fallback so retrieval recovery is not coupled to extension relay state.
140
+ noExtension: true,
141
+ headless: false,
142
+ startUrl: "about:blank",
143
+ // Browser fallback sessions are transient and should not contend for persisted profile locks.
144
+ persistProfile: false
145
+ });
146
+ sessionId = launched.sessionId;
147
+ if (policy !== "off") {
148
+ const loaded = await readCookiesFromSource(defaults.source);
149
+ cookieDiagnostics.available = loaded.available;
150
+ cookieDiagnostics.loaded = loaded.cookies.length;
151
+ if (loaded.message) {
152
+ cookieDiagnostics.message = loaded.message;
153
+ }
154
+ if (loaded.cookies.length > 0) {
155
+ cookieDiagnostics.attempted = true;
156
+ const imported = await manager.cookieImport(sessionId, loaded.cookies, false);
157
+ cookieDiagnostics.injected = imported.imported;
158
+ cookieDiagnostics.rejected = imported.rejected.length;
159
+ const verified = await manager.cookieList(sessionId, [requestUrl]);
160
+ cookieDiagnostics.verifiedCount = verified.count;
161
+ }
162
+ if (policy === "required") {
163
+ const reasonMessage = cookieDiagnostics.message ?? (cookieDiagnostics.loaded === 0 ? "Required provider cookies are missing." : cookieDiagnostics.injected === 0 ? "Provider cookie injection imported 0 entries." : cookieDiagnostics.verifiedCount === 0 ? "Provider cookies were not observable after injection." : void 0);
164
+ if (reasonMessage) {
165
+ cookieDiagnostics.reasonCode = "auth_required";
166
+ cookieDiagnostics.message = reasonMessage;
167
+ return fallbackFailure("auth_required", reasonMessage, cookieDiagnostics);
168
+ }
169
+ }
170
+ }
171
+ await manager.goto(sessionId, requestUrl, "load", 45e3);
172
+ const html = await manager.withPage(sessionId, null, async (page) => {
173
+ const candidate = page;
174
+ if (typeof candidate.content !== "function") return "";
175
+ return await candidate.content();
176
+ });
177
+ const status = await manager.status(sessionId);
178
+ return {
179
+ ok: true,
180
+ reasonCode: request.reasonCode,
181
+ mode: toFallbackMode(status.mode),
182
+ output: {
183
+ html,
184
+ url: status.url ?? requestUrl
185
+ },
186
+ details: {
187
+ provider: request.provider,
188
+ operation: request.operation,
189
+ cookieDiagnostics
190
+ }
191
+ };
192
+ } catch (error) {
193
+ const message = error instanceof Error ? error.message : String(error);
194
+ return fallbackFailure("env_limited", message, cookieDiagnostics);
195
+ } finally {
196
+ if (sessionId) {
197
+ await manager.disconnect(sessionId, true).catch(() => {
198
+ });
199
+ }
200
+ }
201
+ }
202
+ };
203
+ };
204
+ var buildRuntimeInitFromConfig = (config, browserFallbackPort) => {
205
+ const providers = config?.providers;
206
+ return {
207
+ ...typeof config?.blockerDetectionThreshold === "number" ? { blockerDetectionThreshold: config.blockerDetectionThreshold } : {},
208
+ promptInjectionGuard: {
209
+ enabled: config?.security.promptInjectionGuard?.enabled ?? true
210
+ },
211
+ ...providers?.tiers ? {
212
+ tiers: {
213
+ defaultTier: providers.tiers.default,
214
+ enableHybrid: providers.tiers.enableHybrid,
215
+ enableRestrictedSafe: providers.tiers.enableRestrictedSafe,
216
+ hybridRiskThreshold: providers.tiers.hybridRiskThreshold,
217
+ restrictedSafeRecoveryIntervalMs: providers.tiers.restrictedSafeRecoveryIntervalMs
218
+ }
219
+ } : {},
220
+ ...providers?.adaptiveConcurrency ? {
221
+ adaptiveConcurrency: {
222
+ enabled: providers.adaptiveConcurrency.enabled,
223
+ maxGlobal: providers.adaptiveConcurrency.maxGlobal,
224
+ maxPerDomain: providers.adaptiveConcurrency.maxPerDomain
225
+ }
226
+ } : {},
227
+ ...providers?.antiBotPolicy ? {
228
+ antiBotPolicy: {
229
+ enabled: providers.antiBotPolicy.enabled,
230
+ cooldownMs: providers.antiBotPolicy.cooldownMs,
231
+ maxChallengeRetries: providers.antiBotPolicy.maxChallengeRetries,
232
+ proxyHint: providers.antiBotPolicy.proxyHint,
233
+ sessionHint: providers.antiBotPolicy.sessionHint,
234
+ allowBrowserEscalation: providers.antiBotPolicy.allowBrowserEscalation
235
+ }
236
+ } : {},
237
+ ...providers?.transcript ? {
238
+ transcript: {
239
+ modeDefault: providers.transcript.modeDefault,
240
+ strategyOrder: providers.transcript.strategyOrder,
241
+ enableYtdlp: providers.transcript.enableYtdlp,
242
+ enableAsr: providers.transcript.enableAsr,
243
+ enableYtdlpAudioAsr: providers.transcript.enableYtdlpAudioAsr,
244
+ enableApify: providers.transcript.enableApify,
245
+ apifyActorId: providers.transcript.apifyActorId,
246
+ enableBrowserFallback: providers.transcript.enableBrowserFallback,
247
+ ytdlpTimeoutMs: providers.transcript.ytdlpTimeoutMs
248
+ }
249
+ } : {},
250
+ ...providers?.cookiePolicy || providers?.cookieSource ? {
251
+ cookies: {
252
+ ...providers.cookiePolicy ? { policy: providers.cookiePolicy } : {},
253
+ ...providers.cookieSource ? { source: providers.cookieSource } : {}
254
+ }
255
+ } : {},
256
+ ...browserFallbackPort ? { browserFallbackPort } : {}
257
+ };
258
+ };
259
+ var createConfiguredProviderRuntime = (args) => {
260
+ const fallbackPort = args.browserFallbackPort ?? createBrowserFallbackPort(args.manager, {
261
+ policy: args.config?.providers?.cookiePolicy,
262
+ source: args.config?.providers?.cookieSource
263
+ });
264
+ const runtimeInit = {
265
+ ...buildRuntimeInitFromConfig(args.config, fallbackPort),
266
+ ...args.init ?? {}
267
+ };
268
+ return createDefaultRuntime(args.defaults ?? {}, runtimeInit);
269
+ };
270
+
271
+ export {
272
+ createBrowserFallbackPort,
273
+ buildRuntimeInitFromConfig,
274
+ createConfiguredProviderRuntime
275
+ };
276
+ //# sourceMappingURL=chunk-V7KUDHDG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/runtime-factory.ts"],"sourcesContent":["import * as path from \"path\";\nimport * as os from \"os\";\nimport { readFile } from \"fs/promises\";\nimport type { BrowserManagerLike } from \"../browser/manager-types\";\nimport type { OpenDevBrowserConfig } from \"../config\";\nimport { createDefaultRuntime, type RuntimeDefaults, type RuntimeInit } from \"./index\";\nimport type {\n BrowserFallbackMode,\n BrowserFallbackPort,\n BrowserFallbackResponse,\n ProviderCookieImportRecord,\n ProviderCookiePolicy,\n ProviderCookieSourceConfig\n} from \"./types\";\n\ntype RuntimeConfig = Pick<OpenDevBrowserConfig, \"blockerDetectionThreshold\" | \"security\" | \"providers\">;\n\ntype BrowserFallbackCookieConfig = {\n policy: ProviderCookiePolicy;\n source: ProviderCookieSourceConfig;\n};\n\ntype BrowserFallbackCookieDiagnostics = {\n policy: ProviderCookiePolicy;\n source: ProviderCookieSourceConfig[\"type\"];\n sourceRef: string;\n attempted: boolean;\n available: boolean;\n loaded: number;\n injected: number;\n rejected: number;\n verifiedCount: number;\n strict: boolean;\n reasonCode?: BrowserFallbackResponse[\"reasonCode\"];\n message?: string;\n};\n\nconst DEFAULT_COOKIE_POLICY: ProviderCookiePolicy = \"auto\";\nconst DEFAULT_COOKIE_SOURCE: ProviderCookieSourceConfig = {\n type: \"file\",\n value: \"~/.config/opencode/opendevbrowser.provider-cookies.json\"\n};\n\nconst toFallbackMode = (mode: unknown): BrowserFallbackMode => {\n return mode === \"extension\" ? \"extension\" : \"managed_headed\";\n};\n\nconst expandHomePath = (filePath: string): string => {\n if (filePath === \"~\") return os.homedir();\n if (filePath.startsWith(\"~/\")) {\n return path.join(os.homedir(), filePath.slice(2));\n }\n return filePath;\n};\n\nconst cookieSourceRef = (source: ProviderCookieSourceConfig): string => {\n if (source.type === \"file\") {\n return expandHomePath(source.value);\n }\n if (source.type === \"env\") {\n return source.value;\n }\n return \"inline\";\n};\n\nconst parseCookieArray = (payload: string): ProviderCookieImportRecord[] => {\n const parsed = JSON.parse(payload);\n if (!Array.isArray(parsed)) {\n throw new Error(\"Cookie payload must be a JSON array.\");\n }\n return parsed as ProviderCookieImportRecord[];\n};\n\nconst readCookiesFromSource = async (\n source: ProviderCookieSourceConfig\n): Promise<{ cookies: ProviderCookieImportRecord[]; available: boolean; message?: string }> => {\n if (source.type === \"inline\") {\n return {\n cookies: source.value,\n available: source.value.length > 0,\n ...(source.value.length === 0 ? { message: \"Inline cookie source is empty.\" } : {})\n };\n }\n\n if (source.type === \"env\") {\n const envValue = process.env[source.value];\n if (!envValue || envValue.trim().length === 0) {\n return {\n cookies: [],\n available: false,\n message: `Cookie env ${source.value} is not set.`\n };\n }\n try {\n const cookies = parseCookieArray(envValue);\n return { cookies, available: cookies.length > 0 };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n cookies: [],\n available: false,\n message: `Cookie env ${source.value} is invalid JSON: ${message}`\n };\n }\n }\n\n const resolvedPath = expandHomePath(source.value);\n try {\n const payload = await readFile(resolvedPath, \"utf8\");\n const cookies = parseCookieArray(payload);\n return { cookies, available: cookies.length > 0 };\n } catch (error) {\n if ((error as { code?: string }).code === \"ENOENT\") {\n return {\n cookies: [],\n available: false,\n message: `Cookie file not found: ${resolvedPath}`\n };\n }\n const message = error instanceof Error ? error.message : String(error);\n return {\n cookies: [],\n available: false,\n message: `Cookie file read failed: ${message}`\n };\n }\n};\n\nconst resolveEffectiveCookiePolicy = (\n defaults: BrowserFallbackCookieConfig,\n request: { useCookies?: boolean; cookiePolicyOverride?: ProviderCookiePolicy }\n): ProviderCookiePolicy => {\n if (request.cookiePolicyOverride) {\n return request.cookiePolicyOverride;\n }\n if (request.useCookies === false) {\n return \"off\";\n }\n if (request.useCookies === true && defaults.policy === \"off\") {\n return \"auto\";\n }\n return defaults.policy;\n};\n\nconst baseCookieDiagnostics = (\n policy: ProviderCookiePolicy,\n source: ProviderCookieSourceConfig\n): BrowserFallbackCookieDiagnostics => ({\n policy,\n source: source.type,\n sourceRef: cookieSourceRef(source),\n attempted: false,\n available: false,\n loaded: 0,\n injected: 0,\n rejected: 0,\n verifiedCount: 0,\n strict: false\n});\n\nconst fallbackFailure = (\n reasonCode: BrowserFallbackResponse[\"reasonCode\"],\n message: string,\n cookieDiagnostics?: BrowserFallbackCookieDiagnostics\n): BrowserFallbackResponse => ({\n ok: false,\n reasonCode,\n details: {\n message,\n ...(cookieDiagnostics ? { cookieDiagnostics } : {})\n }\n});\n\nexport const createBrowserFallbackPort = (\n manager: BrowserManagerLike | undefined,\n cookieDefaults: Partial<BrowserFallbackCookieConfig> = {}\n): BrowserFallbackPort | undefined => {\n if (!manager) return undefined;\n const defaults: BrowserFallbackCookieConfig = {\n policy: cookieDefaults.policy ?? DEFAULT_COOKIE_POLICY,\n source: cookieDefaults.source ?? DEFAULT_COOKIE_SOURCE\n };\n return {\n resolve: async (request) => {\n const requestUrl = request.url;\n if (!requestUrl) {\n return fallbackFailure(\"env_limited\", \"Browser fallback requires a URL.\");\n }\n\n let sessionId: string | null = null;\n const policy = resolveEffectiveCookiePolicy(defaults, request);\n const cookieDiagnostics = baseCookieDiagnostics(policy, defaults.source);\n try {\n const launched = await manager.launch({\n // Force managed fallback so retrieval recovery is not coupled to extension relay state.\n noExtension: true,\n headless: false,\n startUrl: \"about:blank\",\n // Browser fallback sessions are transient and should not contend for persisted profile locks.\n persistProfile: false\n });\n sessionId = launched.sessionId;\n\n if (policy !== \"off\") {\n const loaded = await readCookiesFromSource(defaults.source);\n cookieDiagnostics.available = loaded.available;\n cookieDiagnostics.loaded = loaded.cookies.length;\n if (loaded.message) {\n cookieDiagnostics.message = loaded.message;\n }\n\n if (loaded.cookies.length > 0) {\n cookieDiagnostics.attempted = true;\n const imported = await manager.cookieImport(sessionId, loaded.cookies, false);\n cookieDiagnostics.injected = imported.imported;\n cookieDiagnostics.rejected = imported.rejected.length;\n\n const verified = await manager.cookieList(sessionId, [requestUrl]);\n cookieDiagnostics.verifiedCount = verified.count;\n }\n\n if (policy === \"required\") {\n const reasonMessage = cookieDiagnostics.message\n ?? (\n cookieDiagnostics.loaded === 0\n ? \"Required provider cookies are missing.\"\n : cookieDiagnostics.injected === 0\n ? \"Provider cookie injection imported 0 entries.\"\n : cookieDiagnostics.verifiedCount === 0\n ? \"Provider cookies were not observable after injection.\"\n : undefined\n );\n if (reasonMessage) {\n cookieDiagnostics.reasonCode = \"auth_required\";\n cookieDiagnostics.message = reasonMessage;\n return fallbackFailure(\"auth_required\", reasonMessage, cookieDiagnostics);\n }\n }\n }\n\n await manager.goto(sessionId, requestUrl, \"load\", 45000);\n const html = await manager.withPage(sessionId, null, async (page: unknown) => {\n const candidate = page as { content?: () => Promise<string> };\n if (typeof candidate.content !== \"function\") return \"\";\n return await candidate.content();\n });\n const status = await manager.status(sessionId);\n\n return {\n ok: true,\n reasonCode: request.reasonCode,\n mode: toFallbackMode(status.mode),\n output: {\n html,\n url: status.url ?? requestUrl\n },\n details: {\n provider: request.provider,\n operation: request.operation,\n cookieDiagnostics\n }\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return fallbackFailure(\"env_limited\", message, cookieDiagnostics);\n } finally {\n if (sessionId) {\n await manager.disconnect(sessionId, true).catch(() => {\n // Best effort cleanup for fallback sessions.\n });\n }\n }\n }\n };\n};\n\nexport const buildRuntimeInitFromConfig = (\n config: RuntimeConfig | undefined,\n browserFallbackPort?: BrowserFallbackPort\n): Omit<RuntimeInit, \"providers\"> => {\n const providers = config?.providers;\n return {\n ...(typeof config?.blockerDetectionThreshold === \"number\"\n ? { blockerDetectionThreshold: config.blockerDetectionThreshold }\n : {}),\n promptInjectionGuard: {\n enabled: config?.security.promptInjectionGuard?.enabled ?? true\n },\n ...(providers?.tiers\n ? {\n tiers: {\n defaultTier: providers.tiers.default,\n enableHybrid: providers.tiers.enableHybrid,\n enableRestrictedSafe: providers.tiers.enableRestrictedSafe,\n hybridRiskThreshold: providers.tiers.hybridRiskThreshold,\n restrictedSafeRecoveryIntervalMs: providers.tiers.restrictedSafeRecoveryIntervalMs\n }\n }\n : {}),\n ...(providers?.adaptiveConcurrency\n ? {\n adaptiveConcurrency: {\n enabled: providers.adaptiveConcurrency.enabled,\n maxGlobal: providers.adaptiveConcurrency.maxGlobal,\n maxPerDomain: providers.adaptiveConcurrency.maxPerDomain\n }\n }\n : {}),\n ...(providers?.antiBotPolicy\n ? {\n antiBotPolicy: {\n enabled: providers.antiBotPolicy.enabled,\n cooldownMs: providers.antiBotPolicy.cooldownMs,\n maxChallengeRetries: providers.antiBotPolicy.maxChallengeRetries,\n proxyHint: providers.antiBotPolicy.proxyHint,\n sessionHint: providers.antiBotPolicy.sessionHint,\n allowBrowserEscalation: providers.antiBotPolicy.allowBrowserEscalation\n }\n }\n : {}),\n ...(providers?.transcript\n ? {\n transcript: {\n modeDefault: providers.transcript.modeDefault,\n strategyOrder: providers.transcript.strategyOrder,\n enableYtdlp: providers.transcript.enableYtdlp,\n enableAsr: providers.transcript.enableAsr,\n enableYtdlpAudioAsr: providers.transcript.enableYtdlpAudioAsr,\n enableApify: providers.transcript.enableApify,\n apifyActorId: providers.transcript.apifyActorId,\n enableBrowserFallback: providers.transcript.enableBrowserFallback,\n ytdlpTimeoutMs: providers.transcript.ytdlpTimeoutMs\n }\n }\n : {}),\n ...(providers?.cookiePolicy || providers?.cookieSource\n ? {\n cookies: {\n ...(providers.cookiePolicy ? { policy: providers.cookiePolicy } : {}),\n ...(providers.cookieSource ? { source: providers.cookieSource } : {})\n }\n }\n : {}),\n ...(browserFallbackPort ? { browserFallbackPort } : {})\n };\n};\n\nexport const createConfiguredProviderRuntime = (args: {\n config?: RuntimeConfig;\n defaults?: RuntimeDefaults;\n manager?: BrowserManagerLike;\n browserFallbackPort?: BrowserFallbackPort;\n init?: Omit<RuntimeInit, \"providers\">;\n}) => {\n const fallbackPort = args.browserFallbackPort ?? createBrowserFallbackPort(args.manager, {\n policy: args.config?.providers?.cookiePolicy,\n source: args.config?.providers?.cookieSource\n });\n const runtimeInit = {\n ...buildRuntimeInitFromConfig(args.config, fallbackPort),\n ...(args.init ?? {})\n };\n return createDefaultRuntime(args.defaults ?? {}, runtimeInit);\n};\n"],"mappings":"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","names":[]}
@@ -0,0 +1,59 @@
1
+ // src/browser/canvas-runtime-preview-bridge.ts
2
+ async function applyRuntimePreviewBridge(page, input) {
3
+ return await page.evaluate((payload) => {
4
+ const root = document.querySelector(payload.rootSelector);
5
+ if (!(root instanceof HTMLElement)) {
6
+ return {
7
+ ok: false,
8
+ fallbackReason: "runtime_projection_unsupported",
9
+ message: `Runtime root not found for selector ${payload.rootSelector}.`
10
+ };
11
+ }
12
+ const existingBindingId = root.getAttribute("data-binding-id");
13
+ if (existingBindingId !== payload.bindingId) {
14
+ return {
15
+ ok: false,
16
+ fallbackReason: "runtime_instrumentation_missing",
17
+ message: "Runtime root is missing the expected data-binding-id instrumentation."
18
+ };
19
+ }
20
+ root.innerHTML = payload.html;
21
+ const nodes = [root, ...Array.from(root.querySelectorAll("[data-node-id]"))].filter((element) => element instanceof HTMLElement && element.hasAttribute("data-node-id")).map((element) => {
22
+ const computed = window.getComputedStyle(element);
23
+ const childOrder = Array.from(element.children).map((child) => child instanceof HTMLElement ? child.getAttribute("data-node-id") ?? child.tagName.toLowerCase() : "").join("|");
24
+ return {
25
+ nodeId: element.getAttribute("data-node-id") ?? "",
26
+ bindingId: element.getAttribute("data-binding-id") ?? payload.bindingId,
27
+ text: (element.innerText || "").trim(),
28
+ childOrderHash: childOrder,
29
+ attributes: {
30
+ "data-node-id": element.getAttribute("data-node-id") ?? "",
31
+ ...element.hasAttribute("data-binding-id") ? { "data-binding-id": element.getAttribute("data-binding-id") ?? "" } : {}
32
+ },
33
+ styleProjection: {
34
+ color: computed.color,
35
+ backgroundColor: computed.backgroundColor,
36
+ fontSize: computed.fontSize,
37
+ fontWeight: computed.fontWeight,
38
+ borderRadius: computed.borderRadius,
39
+ display: computed.display
40
+ }
41
+ };
42
+ });
43
+ return {
44
+ ok: true,
45
+ artifact: {
46
+ projection: "bound_app_runtime",
47
+ rootBindingId: payload.bindingId,
48
+ capturedAt: (/* @__PURE__ */ new Date()).toISOString(),
49
+ hierarchyHash: nodes.map((node) => `${node.nodeId}:${node.childOrderHash}`).join("|"),
50
+ nodes
51
+ }
52
+ };
53
+ }, input);
54
+ }
55
+
56
+ export {
57
+ applyRuntimePreviewBridge
58
+ };
59
+ //# sourceMappingURL=chunk-Y2KL55OG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/browser/canvas-runtime-preview-bridge.ts"],"sourcesContent":["import type { CanvasParityArtifact } from \"../canvas/types\";\n\ntype RuntimePreviewPageLike = {\n evaluate: <TArg, TResult>(pageFunction: (arg: TArg) => TResult | Promise<TResult>, arg: TArg) => Promise<TResult>;\n};\n\nexport type RuntimePreviewBridgeInput = {\n bindingId: string;\n rootSelector: string;\n html: string;\n};\n\nexport type RuntimePreviewBridgeResult =\n | {\n ok: true;\n artifact: CanvasParityArtifact;\n }\n | {\n ok: false;\n fallbackReason:\n | \"runtime_bridge_unavailable\"\n | \"runtime_projection_unsupported\"\n | \"runtime_projection_failed\"\n | \"runtime_instrumentation_missing\"\n | \"fallback_canvas_html\";\n message: string;\n };\n\nexport async function applyRuntimePreviewBridge(\n page: RuntimePreviewPageLike,\n input: RuntimePreviewBridgeInput\n): Promise<RuntimePreviewBridgeResult> {\n return await page.evaluate((payload) => {\n const root = document.querySelector(payload.rootSelector);\n if (!(root instanceof HTMLElement)) {\n return {\n ok: false,\n fallbackReason: \"runtime_projection_unsupported\",\n message: `Runtime root not found for selector ${payload.rootSelector}.`\n } satisfies RuntimePreviewBridgeResult;\n }\n const existingBindingId = root.getAttribute(\"data-binding-id\");\n if (existingBindingId !== payload.bindingId) {\n return {\n ok: false,\n fallbackReason: \"runtime_instrumentation_missing\",\n message: \"Runtime root is missing the expected data-binding-id instrumentation.\"\n } satisfies RuntimePreviewBridgeResult;\n }\n root.innerHTML = payload.html;\n const nodes = [root, ...Array.from(root.querySelectorAll(\"[data-node-id]\"))]\n .filter((element): element is HTMLElement => element instanceof HTMLElement && element.hasAttribute(\"data-node-id\"))\n .map((element) => {\n const computed = window.getComputedStyle(element);\n const childOrder = Array.from(element.children)\n .map((child) => child instanceof HTMLElement ? child.getAttribute(\"data-node-id\") ?? child.tagName.toLowerCase() : \"\")\n .join(\"|\");\n return {\n nodeId: element.getAttribute(\"data-node-id\") ?? \"\",\n bindingId: element.getAttribute(\"data-binding-id\") ?? payload.bindingId,\n text: (element.innerText || \"\").trim(),\n childOrderHash: childOrder,\n attributes: {\n \"data-node-id\": element.getAttribute(\"data-node-id\") ?? \"\",\n ...(element.hasAttribute(\"data-binding-id\") ? { \"data-binding-id\": element.getAttribute(\"data-binding-id\") ?? \"\" } : {})\n },\n styleProjection: {\n color: computed.color,\n backgroundColor: computed.backgroundColor,\n fontSize: computed.fontSize,\n fontWeight: computed.fontWeight,\n borderRadius: computed.borderRadius,\n display: computed.display\n }\n };\n });\n return {\n ok: true,\n artifact: {\n projection: \"bound_app_runtime\",\n rootBindingId: payload.bindingId,\n capturedAt: new Date().toISOString(),\n hierarchyHash: nodes.map((node) => `${node.nodeId}:${node.childOrderHash}`).join(\"|\"),\n nodes\n }\n } satisfies RuntimePreviewBridgeResult;\n }, input);\n}\n"],"mappings":";AA4BA,eAAsB,0BACpB,MACA,OACqC;AACrC,SAAO,MAAM,KAAK,SAAS,CAAC,YAAY;AACtC,UAAM,OAAO,SAAS,cAAc,QAAQ,YAAY;AACxD,QAAI,EAAE,gBAAgB,cAAc;AAClC,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,QAChB,SAAS,uCAAuC,QAAQ,YAAY;AAAA,MACtE;AAAA,IACF;AACA,UAAM,oBAAoB,KAAK,aAAa,iBAAiB;AAC7D,QAAI,sBAAsB,QAAQ,WAAW;AAC3C,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,QAChB,SAAS;AAAA,MACX;AAAA,IACF;AACA,SAAK,YAAY,QAAQ;AACzB,UAAM,QAAQ,CAAC,MAAM,GAAG,MAAM,KAAK,KAAK,iBAAiB,gBAAgB,CAAC,CAAC,EACxE,OAAO,CAAC,YAAoC,mBAAmB,eAAe,QAAQ,aAAa,cAAc,CAAC,EAClH,IAAI,CAAC,YAAY;AAChB,YAAM,WAAW,OAAO,iBAAiB,OAAO;AAChD,YAAM,aAAa,MAAM,KAAK,QAAQ,QAAQ,EAC3C,IAAI,CAAC,UAAU,iBAAiB,cAAc,MAAM,aAAa,cAAc,KAAK,MAAM,QAAQ,YAAY,IAAI,EAAE,EACpH,KAAK,GAAG;AACX,aAAO;AAAA,QACL,QAAQ,QAAQ,aAAa,cAAc,KAAK;AAAA,QAChD,WAAW,QAAQ,aAAa,iBAAiB,KAAK,QAAQ;AAAA,QAC9D,OAAO,QAAQ,aAAa,IAAI,KAAK;AAAA,QACrC,gBAAgB;AAAA,QAChB,YAAY;AAAA,UACV,gBAAgB,QAAQ,aAAa,cAAc,KAAK;AAAA,UACxD,GAAI,QAAQ,aAAa,iBAAiB,IAAI,EAAE,mBAAmB,QAAQ,aAAa,iBAAiB,KAAK,GAAG,IAAI,CAAC;AAAA,QACxH;AAAA,QACA,iBAAiB;AAAA,UACf,OAAO,SAAS;AAAA,UAChB,iBAAiB,SAAS;AAAA,UAC1B,UAAU,SAAS;AAAA,UACnB,YAAY,SAAS;AAAA,UACrB,cAAc,SAAS;AAAA,UACvB,SAAS,SAAS;AAAA,QACpB;AAAA,MACF;AAAA,IACF,CAAC;AACH,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,UAAU;AAAA,QACR,YAAY;AAAA,QACZ,eAAe,QAAQ;AAAA,QACvB,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,QACnC,eAAe,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,MAAM,IAAI,KAAK,cAAc,EAAE,EAAE,KAAK,GAAG;AAAA,QACpF;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,KAAK;AACV;","names":[]}
@@ -0,0 +1,25 @@
1
+ export declare const CLI_COMMANDS: readonly ["install", "update", "uninstall", "help", "version", "serve", "daemon", "native", "run", "launch", "connect", "disconnect", "status", "research", "shopping", "product-video", "artifacts", "goto", "wait", "snapshot", "click", "hover", "press", "check", "uncheck", "type", "select", "scroll", "scroll-into-view", "targets-list", "target-use", "target-new", "target-close", "page", "pages", "page-close", "dom-html", "dom-text", "dom-attr", "dom-value", "dom-visible", "dom-enabled", "dom-checked", "clone-page", "clone-component", "perf", "screenshot", "console-poll", "network-poll", "debug-trace-snapshot", "cookie-import", "cookie-list", "macro-resolve", "annotate", "canvas", "rpc"];
2
+ export type CliCommand = (typeof CLI_COMMANDS)[number];
3
+ export type InstallMode = "global" | "local";
4
+ export type SkillsMode = "global" | "local" | "none";
5
+ export type OutputFormat = "text" | "json" | "stream-json";
6
+ export type TransportMode = "relay" | "native";
7
+ export interface ParsedArgs {
8
+ command: CliCommand;
9
+ mode?: InstallMode;
10
+ withConfig: boolean;
11
+ noPrompt: boolean;
12
+ noInteractive: boolean;
13
+ quiet: boolean;
14
+ outputFormat: OutputFormat;
15
+ transport: TransportMode;
16
+ skillsMode: SkillsMode;
17
+ fullInstall: boolean;
18
+ rawArgs: string[];
19
+ }
20
+ export declare const VALID_FLAGS: readonly ["--global", "--local", "--update", "--uninstall", "--help", "--version", "--with-config", "--no-prompt", "--no-interactive", "--quiet", "--output-format", "--full", "--port", "--token", "--stop", "--script", "--headless", "--profile", "--persist-profile", "--chrome-path", "--start-url", "--flag", "--session-id", "--close-browser", "--ws-endpoint", "--host", "--cdp-port", "--url", "--wait-until", "--timeout-ms", "--ref", "--state", "--until", "--mode", "--max-chars", "--cursor", "--text", "--clear", "--submit", "--values", "--dy", "--key", "--attr", "--name", "--target-id", "--tab-id", "--include-urls", "--path", "--since-seq", "--max", "--since-console-seq", "--since-network-seq", "--since-exception-seq", "--request-id", "--cookies", "--cookies-file", "--strict", "--expression", "--default-provider", "--include-catalog", "--command", "--execute", "--params", "--params-file", "--unsafe-internal", "--daemon", "--transport", "--no-extension", "--extension-only", "--extension-legacy", "--wait-for-extension", "--wait-timeout-ms", "--skills-global", "--skills-local", "--no-skills", "--screenshot-mode", "--debug", "--context", "--stored", "--topic", "--days", "--from", "--to", "--source-selection", "--sources", "--include-engagement", "--limit-per-source", "--query", "--providers", "--budget", "--region", "--sort", "--product-url", "--product-name", "--provider-hint", "--include-screenshots", "--include-all-images", "--include-copy", "--output-dir", "--ttl-hours", "--expired-only"];
21
+ export declare const VALID_EQUALS_FLAGS: readonly ["--output-format", "--transport", "--session-id", "--url", "--screenshot-mode", "--context", "--timeout-ms", "--since-seq", "--since-console-seq", "--since-network-seq", "--since-exception-seq", "--max", "--target-id", "--tab-id", "--name", "--cookies", "--cookies-file", "--persist-profile", "--expression", "--default-provider", "--command", "--request-id", "--strict", "--params", "--params-file", "--topic", "--days", "--from", "--to", "--source-selection", "--sources", "--mode", "--limit-per-source", "--query", "--providers", "--budget", "--region", "--sort", "--product-url", "--product-name", "--provider-hint", "--include-screenshots", "--include-all-images", "--include-copy", "--output-dir", "--ttl-hours"];
22
+ export declare function parseArgs(argv: string[]): ParsedArgs;
23
+ export declare function detectOutputFormat(argv: string[]): OutputFormat;
24
+ export declare function detectQuiet(argv: string[]): boolean;
25
+ //# sourceMappingURL=args.d.ts.map