@xopcai/xopc 0.0.149 → 0.0.150

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 (2873) hide show
  1. package/README.md +10 -0
  2. package/README.zh-CN.md +10 -0
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/dashscope/src/image-generation-provider.js +0 -2
  5. package/dist/extensions/demo-memory/src/index.js +0 -2
  6. package/dist/extensions/fal/src/image-generation-provider.js +0 -2
  7. package/dist/extensions/feishu/src/actions/message-action-handler.js +0 -2
  8. package/dist/extensions/feishu/src/adapters/cli-login.js +0 -2
  9. package/dist/extensions/feishu/src/adapters/gateway-setup.js +0 -2
  10. package/dist/extensions/feishu/src/adapters/onboard-cli.js +0 -2
  11. package/dist/extensions/feishu/src/auth/app-registration.js +0 -2
  12. package/dist/extensions/feishu/src/auth/pairing.js +0 -2
  13. package/dist/extensions/feishu/src/auth/paths.js +0 -2
  14. package/dist/extensions/feishu/src/directory/directory-adapter.js +0 -2
  15. package/dist/extensions/feishu/src/format.js +0 -2
  16. package/dist/extensions/feishu/src/index.js +0 -2
  17. package/dist/extensions/feishu/src/outbound/actions.js +0 -2
  18. package/dist/extensions/feishu/src/outbound/media-load.js +0 -2
  19. package/dist/extensions/feishu/src/outbound/outbound-adapter.js +0 -2
  20. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js +0 -2
  21. package/dist/extensions/feishu/src/pairing-config-resolver.js +0 -2
  22. package/dist/extensions/feishu/src/plugin.js +0 -2
  23. package/dist/extensions/feishu/src/schema/config-schema.js +0 -2
  24. package/dist/extensions/feishu/src/state/accounts.js +0 -2
  25. package/dist/extensions/feishu/src/state/message-bindings.js +0 -2
  26. package/dist/extensions/feishu/src/state/thread-bindings.js +0 -2
  27. package/dist/extensions/feishu/src/status/doctor.js +0 -2
  28. package/dist/extensions/feishu/src/status/status-adapter.js +0 -2
  29. package/dist/extensions/feishu/src/streaming/streaming-adapter.js +0 -2
  30. package/dist/extensions/feishu/src/subagent-hooks.js +0 -2
  31. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js +0 -2
  32. package/dist/extensions/feishu/src/tools/docx/docx-color-text.d.ts +6 -3386
  33. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js +0 -2
  34. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.d.ts +16 -16927
  35. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js +0 -2
  36. package/dist/extensions/feishu/src/tools/tools.js +0 -2
  37. package/dist/extensions/feishu/src/transport/client/client.js +2 -4
  38. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js +0 -2
  39. package/dist/extensions/feishu/src/transport/client/lark-sdk.d.ts +3 -0
  40. package/dist/extensions/feishu/src/transport/client/lark-sdk.js +14 -0
  41. package/dist/extensions/feishu/src/transport/reliability/dedupe.js +0 -2
  42. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js +0 -2
  43. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +0 -2
  44. package/dist/extensions/feishu/src/transport/socket-mode/retry.js +0 -2
  45. package/dist/extensions/feishu/src/transport/text/mentions.js +0 -2
  46. package/dist/extensions/feishu/src/transport/webhook/monitor.js +3 -5
  47. package/dist/extensions/feishu/src/ui/config-surface.js +0 -2
  48. package/dist/extensions/feishu/src/workflow-progress.js +0 -2
  49. package/dist/extensions/google/src/image-generation-provider.js +0 -2
  50. package/dist/extensions/minimax/src/image-generation-provider.js +0 -2
  51. package/dist/extensions/openai/src/image-generation-provider.js +0 -2
  52. package/dist/extensions/telegram/src/access-control.js +0 -2
  53. package/dist/extensions/telegram/src/account-manager.js +0 -2
  54. package/dist/extensions/telegram/src/actions/message-actions.js +0 -2
  55. package/dist/extensions/telegram/src/adapters/command-adapter.js +0 -2
  56. package/dist/extensions/telegram/src/adapters/config-adapter.js +0 -2
  57. package/dist/extensions/telegram/src/adapters/debounce-keys.js +0 -2
  58. package/dist/extensions/telegram/src/adapters/gateway-adapter.js +0 -2
  59. package/dist/extensions/telegram/src/adapters/gateway-setup.js +0 -2
  60. package/dist/extensions/telegram/src/adapters/inbound-access.js +0 -2
  61. package/dist/extensions/telegram/src/adapters/index.js +0 -2
  62. package/dist/extensions/telegram/src/adapters/onboard-cli.js +0 -2
  63. package/dist/extensions/telegram/src/adapters/outbound-adapter.js +0 -2
  64. package/dist/extensions/telegram/src/adapters/security-adapter.js +0 -2
  65. package/dist/extensions/telegram/src/adapters/setup-wizard.js +0 -2
  66. package/dist/extensions/telegram/src/adapters/status-adapter.js +0 -2
  67. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +0 -2
  68. package/dist/extensions/telegram/src/api-root.js +0 -2
  69. package/dist/extensions/telegram/src/approval-delivery.js +0 -2
  70. package/dist/extensions/telegram/src/approval-store.js +0 -2
  71. package/dist/extensions/telegram/src/caption.js +0 -2
  72. package/dist/extensions/telegram/src/command-handler.js +0 -2
  73. package/dist/extensions/telegram/src/config-schema.js +0 -2
  74. package/dist/extensions/telegram/src/conversation-id.js +0 -2
  75. package/dist/extensions/telegram/src/dedupe.js +0 -2
  76. package/dist/extensions/telegram/src/delivery-chat-id.js +0 -2
  77. package/dist/extensions/telegram/src/doctor.js +0 -2
  78. package/dist/extensions/telegram/src/draft-stream-lifecycle.js +0 -2
  79. package/dist/extensions/telegram/src/draft-stream-loop.js +0 -2
  80. package/dist/extensions/telegram/src/draft-stream.js +0 -2
  81. package/dist/extensions/telegram/src/errors.js +0 -2
  82. package/dist/extensions/telegram/src/exec-approval-handler.js +0 -2
  83. package/dist/extensions/telegram/src/exec-approvals.js +0 -2
  84. package/dist/extensions/telegram/src/focus-handler.js +0 -2
  85. package/dist/extensions/telegram/src/format.js +0 -2
  86. package/dist/extensions/telegram/src/group-config-resolver.js +0 -2
  87. package/dist/extensions/telegram/src/inbound-coalescer.js +0 -2
  88. package/dist/extensions/telegram/src/inbound-processor.js +0 -2
  89. package/dist/extensions/telegram/src/index.js +0 -2
  90. package/dist/extensions/telegram/src/inline-keyboards.js +0 -2
  91. package/dist/extensions/telegram/src/network-errors.js +0 -2
  92. package/dist/extensions/telegram/src/outbound-sender.js +0 -2
  93. package/dist/extensions/telegram/src/pairing-config-resolver.js +0 -2
  94. package/dist/extensions/telegram/src/plugin-defaults.js +0 -2
  95. package/dist/extensions/telegram/src/plugin.js +0 -2
  96. package/dist/extensions/telegram/src/polling-session.js +0 -2
  97. package/dist/extensions/telegram/src/proxy-fetch.js +0 -2
  98. package/dist/extensions/telegram/src/reactions.js +0 -2
  99. package/dist/extensions/telegram/src/reply-params.js +0 -2
  100. package/dist/extensions/telegram/src/routing-integration.js +0 -2
  101. package/dist/extensions/telegram/src/send-options.js +0 -2
  102. package/dist/extensions/telegram/src/sent-cache.js +0 -2
  103. package/dist/extensions/telegram/src/startup-errors.js +0 -2
  104. package/dist/extensions/telegram/src/telegram-actions.js +0 -2
  105. package/dist/extensions/telegram/src/telegram-draft-errors.js +0 -2
  106. package/dist/extensions/telegram/src/thread-bindings.js +0 -2
  107. package/dist/extensions/telegram/src/timeout-abort.js +0 -2
  108. package/dist/extensions/telegram/src/token-resolver.js +0 -2
  109. package/dist/extensions/telegram/src/update-offset-store.js +0 -2
  110. package/dist/extensions/telegram/src/workflow-progress.js +0 -2
  111. package/dist/extensions/telegram/xopc.extension.json +1 -1
  112. package/dist/extensions/weixin/src/adapters/onboard-cli.js +0 -2
  113. package/dist/extensions/weixin/src/api/api.js +0 -2
  114. package/dist/extensions/weixin/src/api/config-cache.js +0 -2
  115. package/dist/extensions/weixin/src/api/session-guard.js +0 -2
  116. package/dist/extensions/weixin/src/api/types.js +0 -2
  117. package/dist/extensions/weixin/src/auth/accounts.js +0 -2
  118. package/dist/extensions/weixin/src/auth/login-qr.js +0 -2
  119. package/dist/extensions/weixin/src/auth/pairing.js +0 -2
  120. package/dist/extensions/weixin/src/auth/weixin-account-id.js +0 -2
  121. package/dist/extensions/weixin/src/cdn/aes-ecb.js +0 -2
  122. package/dist/extensions/weixin/src/cdn/cdn-upload.js +0 -2
  123. package/dist/extensions/weixin/src/cdn/cdn-url.js +0 -2
  124. package/dist/extensions/weixin/src/cdn/pic-decrypt.js +0 -2
  125. package/dist/extensions/weixin/src/cdn/upload.js +0 -2
  126. package/dist/extensions/weixin/src/cli/gateway-qr-login.js +0 -2
  127. package/dist/extensions/weixin/src/cli/qr-login.js +0 -2
  128. package/dist/extensions/weixin/src/config-schema.js +0 -2
  129. package/dist/extensions/weixin/src/config-surface.js +0 -2
  130. package/dist/extensions/weixin/src/delivery-to.js +0 -2
  131. package/dist/extensions/weixin/src/index.js +0 -2
  132. package/dist/extensions/weixin/src/media/data-url.js +0 -2
  133. package/dist/extensions/weixin/src/media/media-download.js +0 -2
  134. package/dist/extensions/weixin/src/media/mime.js +0 -2
  135. package/dist/extensions/weixin/src/media/silk-transcode.js +0 -2
  136. package/dist/extensions/weixin/src/messaging/context-token-init.js +0 -2
  137. package/dist/extensions/weixin/src/messaging/debug-mode.js +0 -2
  138. package/dist/extensions/weixin/src/messaging/error-notice.js +0 -2
  139. package/dist/extensions/weixin/src/messaging/inbound.js +0 -2
  140. package/dist/extensions/weixin/src/messaging/markdown-filter.js +0 -2
  141. package/dist/extensions/weixin/src/messaging/process-message.js +0 -2
  142. package/dist/extensions/weixin/src/messaging/send-media.js +0 -2
  143. package/dist/extensions/weixin/src/messaging/send.js +0 -2
  144. package/dist/extensions/weixin/src/messaging/slash-commands.js +0 -2
  145. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js +0 -2
  146. package/dist/extensions/weixin/src/monitor/monitor.js +0 -2
  147. package/dist/extensions/weixin/src/outbound-send.js +0 -2
  148. package/dist/extensions/weixin/src/pairing-config-resolver.js +0 -2
  149. package/dist/extensions/weixin/src/plugin.js +0 -2
  150. package/dist/extensions/weixin/src/routing-integration.js +0 -2
  151. package/dist/extensions/weixin/src/storage/state-dir.js +0 -2
  152. package/dist/extensions/weixin/src/storage/sync-buf.js +0 -2
  153. package/dist/extensions/weixin/src/util/logger.js +0 -2
  154. package/dist/extensions/weixin/src/util/random.js +0 -2
  155. package/dist/extensions/weixin/src/util/redact.js +0 -2
  156. package/dist/extensions/weixin/src/workflow-progress.js +0 -2
  157. package/dist/gateway/static/root/assets/{activity-store-B4s0ipx2.js → activity-store-B3YP7y9d.js} +1 -1
  158. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BaP05tRU.js} +1 -1
  159. package/dist/gateway/static/root/assets/{agents-DZDOcgz5.js → agents-QArUBYV7.js} +1 -1
  160. package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-BirUfJgj.js} +1 -1
  161. package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-D5Cg_a6I.js} +1 -1
  162. package/dist/gateway/static/root/assets/{appearance-settings-BNasnY9D.js → appearance-settings-BBsAkJ56.js} +1 -1
  163. package/dist/gateway/static/root/assets/{apps-page-Cmr-Hvm9.js → apps-page-D1uAUndU.js} +1 -1
  164. package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-D3OmrvFx.js} +1 -1
  165. package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-Cgkm_5mb.js} +1 -1
  166. package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CHvxSz-t.js} +1 -1
  167. package/dist/gateway/static/root/assets/{automations-page-TWgUAI8t.js → automations-page-BWQk03Vu.js} +1 -1
  168. package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-dJR5UuzL.js} +1 -1
  169. package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-v4_7o92L.js} +2 -2
  170. package/dist/gateway/static/root/assets/{browser-settings-page-DBsFItW_.js → browser-settings-page-SruFGuBP.js} +1 -1
  171. package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-BcTjPLiD.js} +1 -1
  172. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-CddBf58y.js} +1 -1
  173. package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-BbDlMRm5.js} +1 -1
  174. package/dist/gateway/static/root/assets/{channels-settings-BBkzrBYy.js → channels-settings-WI5tQ5tn.js} +1 -1
  175. package/dist/gateway/static/root/assets/channels-status-swr-Dt2EROlf.js +1 -0
  176. package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BNthqff-.js} +1 -1
  177. package/dist/gateway/static/root/assets/{connectors-page-DLsZCAw7.js → connectors-page-DavHJ6rR.js} +1 -1
  178. package/dist/gateway/static/root/assets/desktop-pet-CVajXkdj.js +1 -0
  179. package/dist/gateway/static/root/assets/desktop-pet-settings-SHI66eIi.js +1 -0
  180. package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-BdWd7m-p.js} +1 -1
  181. package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-CXDhu3Me.js} +1 -1
  182. package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-CLJTGozU.js} +1 -1
  183. package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-ClxpGfzA.js} +1 -1
  184. package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-CDA3ZJ8k.js} +1 -1
  185. package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-DpXL78pS.js} +1 -1
  186. package/dist/gateway/static/root/assets/{gateway-settings-BrxzyVW2.js → gateway-settings-Co-mXFP_.js} +1 -1
  187. package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-D0SU7dte.js} +1 -1
  188. package/dist/gateway/static/root/assets/{goal-create-dialog-DRVRLc5Z.js → goal-create-dialog-BO6G--Ec.js} +1 -1
  189. package/dist/gateway/static/root/assets/{goal-detail-page-8F7NElzP.js → goal-detail-page-DK8eog4h.js} +1 -1
  190. package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-r71aDqix.js} +1 -1
  191. package/dist/gateway/static/root/assets/{goals-page-BaoLiV8G.js → goals-page-AcROW97U.js} +2 -2
  192. package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-CZOLhkTH.js} +1 -1
  193. package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-F9S1gIFo.js} +1 -1
  194. package/dist/gateway/static/root/assets/index-C46C7Xee.css +1 -0
  195. package/dist/gateway/static/root/assets/{index-CH7XN6KY.js → index-IPmCli0N.js} +41 -41
  196. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BHnh5OoY.js → keyboard-shortcuts-settings-B3CUVfZ8.js} +1 -1
  197. package/dist/gateway/static/root/assets/{local-app-workbench-page-Boe8n4zH.js → local-app-workbench-page-HVq6NUvQ.js} +1 -1
  198. package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-n7YJfRkU.js} +1 -1
  199. package/dist/gateway/static/root/assets/{locale-store-BneNAR8R.js → locale-store-BvcHGPHU.js} +1 -1
  200. package/dist/gateway/static/root/assets/{logs-page-Cb4Uptct.js → logs-page-Dgko6r04.js} +1 -1
  201. package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-1mnXr-JA.js} +1 -1
  202. package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-D2bcxXrT.js} +1 -1
  203. package/dist/gateway/static/root/assets/{messages-t1yPaVCt.js → messages-BH7paqYt.js} +2 -2
  204. package/dist/gateway/static/root/assets/{models-hub-panel-CNiUKZUV.js → models-hub-panel-DD0cEfmR.js} +1 -1
  205. package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-Wjc2utlj.js} +1 -1
  206. package/dist/gateway/static/root/assets/{notes-workbench-C9__VkD6.js → notes-workbench-BkA2yg9K.js} +2 -2
  207. package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-vdljrKuG.js} +1 -1
  208. package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-BHki0l-E.js} +1 -1
  209. package/dist/gateway/static/root/assets/{project-detail-page-CZhuB5kO.js → project-detail-page-CXwVNLgg.js} +1 -1
  210. package/dist/gateway/static/root/assets/{projects-page-BOq4WVdR.js → projects-page-DlfvNcLh.js} +1 -1
  211. package/dist/gateway/static/root/assets/{remote-access-hub-BxGq0ebQ.js → remote-access-hub-BQyEX2Ui.js} +1 -1
  212. package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-Vy4EmvEh.js} +1 -1
  213. package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-CVcwC7k_.js} +1 -1
  214. package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-DhMA1vkR.js} +1 -1
  215. package/dist/gateway/static/root/assets/{sessions-page-B6gSU_Au.js → sessions-page-CqQEW8oT.js} +1 -1
  216. package/dist/gateway/static/root/assets/settings-advanced-gate-M8fleFSc.js +1 -0
  217. package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-C0xcL0vB.js} +1 -1
  218. package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-Cgj4iVpx.js} +1 -1
  219. package/dist/gateway/static/root/assets/{settings-loading-skeleton-vitElc-n.js → settings-loading-skeleton-CC_NmD69.js} +1 -1
  220. package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B7_JZ2rM.js} +1 -1
  221. package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CKuQT4SG.js} +1 -1
  222. package/dist/gateway/static/root/assets/{setup-status-panel-BJeA4mmk.js → setup-status-panel-DvR8Y5YN.js} +1 -1
  223. package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-BmVw-6SJ.js} +1 -1
  224. package/dist/gateway/static/root/assets/{shares-settings-DB2KYA2_.js → shares-settings-C0JYYhGx.js} +1 -1
  225. package/dist/gateway/static/root/assets/skill-reload-api-DBFBczqN.js +1 -0
  226. package/dist/gateway/static/root/assets/{skills-page-Pm0fNe_p.js → skills-page-KAI9qBDD.js} +1 -1
  227. package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-D6d8VAk8.js} +1 -1
  228. package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-EbMQ3TYi.js} +1 -1
  229. package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-D63hJX-S.js} +1 -1
  230. package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-D-I-qki9.js} +1 -1
  231. package/dist/gateway/static/root/assets/{user-context-page-DnLqQyRG.js → user-context-page-Cuft-EbR.js} +1 -1
  232. package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-CPaoS8Zl.js} +1 -1
  233. package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-Bs13qcx1.js} +1 -1
  234. package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-3mnkFvPw.js} +1 -1
  235. package/dist/gateway/static/root/assets/{voice-api-key-field-BiFIIWC4.js → voice-api-key-field-C716UEi9.js} +1 -1
  236. package/dist/gateway/static/root/assets/{work-discovery-page-D2-_bC0J.js → work-discovery-page-CFSkHa0v.js} +1 -1
  237. package/dist/gateway/static/root/assets/{work-item-detail-page-B0FPG4eJ.js → work-item-detail-page-DaapBdoZ.js} +1 -1
  238. package/dist/gateway/static/root/assets/{work-page-BDeVxts_.js → work-page-DMtX92vs.js} +1 -1
  239. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BPzS67fU.js → workflow-run-setup-panel-B9FnZNWZ.js} +1 -1
  240. package/dist/gateway/static/root/assets/{workflows-page-xPhmrRLs.js → workflows-page-BgvE0_Iv.js} +1 -1
  241. package/dist/gateway/static/root/favicon.svg +1 -187
  242. package/dist/gateway/static/root/index.html +7 -7
  243. package/dist/gateway/static/root/logo-dark.svg +1 -185
  244. package/dist/gateway/static/root/logo.svg +1 -185
  245. package/dist/package.js +1 -3
  246. package/dist/src/activity/context.js +0 -2
  247. package/dist/src/activity/emitter.js +0 -2
  248. package/dist/src/activity/service.js +0 -2
  249. package/dist/src/agent/agent-manager.js +0 -2
  250. package/dist/src/agent/agent-scope.js +0 -2
  251. package/dist/src/agent/background-review/coordinator.js +0 -2
  252. package/dist/src/agent/background-review/prompts.js +0 -2
  253. package/dist/src/agent/background-review/run-background-review.js +0 -2
  254. package/dist/src/agent/background-review/settings.js +0 -2
  255. package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
  256. package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
  257. package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
  258. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
  259. package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
  260. package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
  261. package/dist/src/agent/capabilities/definitions.js +0 -2
  262. package/dist/src/agent/capabilities/registry.js +0 -2
  263. package/dist/src/agent/child-agent-factory.js +0 -2
  264. package/dist/src/agent/client-error-format.js +0 -2
  265. package/dist/src/agent/code-intelligence/binary.js +0 -2
  266. package/dist/src/agent/code-intelligence/runtime.js +0 -2
  267. package/dist/src/agent/code-intelligence/tools.js +0 -2
  268. package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
  269. package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
  270. package/dist/src/agent/context/project-context.js +0 -2
  271. package/dist/src/agent/context/workspace-seed.js +0 -2
  272. package/dist/src/agent/context/workspace-state.js +0 -2
  273. package/dist/src/agent/context/workspace.js +0 -2
  274. package/dist/src/agent/embedded/run-for-session.js +0 -2
  275. package/dist/src/agent/embedded/run-turn.js +0 -2
  276. package/dist/src/agent/embedded/runs.js +0 -2
  277. package/dist/src/agent/embedded/session-manager-init.js +0 -2
  278. package/dist/src/agent/embedded/session-runner.js +0 -2
  279. package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
  280. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
  281. package/dist/src/agent/embedded/subscribe-session.js +0 -2
  282. package/dist/src/agent/embedded/system-prompt-override.js +0 -2
  283. package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
  284. package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
  285. package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
  286. package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
  287. package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
  288. package/dist/src/agent/failover-error.js +0 -2
  289. package/dist/src/agent/fallback/candidates.js +0 -2
  290. package/dist/src/agent/fallback/reason.js +0 -2
  291. package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
  292. package/dist/src/agent/goals/checklist-judge.js +0 -2
  293. package/dist/src/agent/goals/checklist-types.js +0 -2
  294. package/dist/src/agent/goals/evaluate-turn.js +0 -2
  295. package/dist/src/agent/goals/goal-locale.js +0 -2
  296. package/dist/src/agent/goals/judge.js +0 -2
  297. package/dist/src/agent/goals/persistent-goal-service.js +0 -2
  298. package/dist/src/agent/goals/post-turn.js +0 -2
  299. package/dist/src/agent/goals/state.js +0 -2
  300. package/dist/src/agent/image/generation/bundled-registry.js +0 -2
  301. package/dist/src/agent/image/generation/bundled.js +0 -2
  302. package/dist/src/agent/image/generation/image-assets.js +0 -2
  303. package/dist/src/agent/image/generation/model-ref.js +0 -2
  304. package/dist/src/agent/image/generation/normalization.js +0 -2
  305. package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
  306. package/dist/src/agent/image/generation/provider-registry.js +0 -2
  307. package/dist/src/agent/image/generation/runtime.js +0 -2
  308. package/dist/src/agent/image/image-helpers.js +0 -2
  309. package/dist/src/agent/image/image-model-fallback.js +0 -2
  310. package/dist/src/agent/image/inbound-image-handling.js +0 -2
  311. package/dist/src/agent/image/load-image-media.js +0 -2
  312. package/dist/src/agent/image/tool-model-config.js +0 -2
  313. package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
  314. package/dist/src/agent/image/understanding/provider-registry.js +0 -2
  315. package/dist/src/agent/image/understanding/runtime.js +0 -2
  316. package/dist/src/agent/image/vision-detection.js +0 -2
  317. package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
  318. package/dist/src/agent/inbound/inbound-loop.js +0 -2
  319. package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
  320. package/dist/src/agent/ipc/bus.js +0 -2
  321. package/dist/src/agent/ipc/inbox.js +0 -2
  322. package/dist/src/agent/ipc/socket.js +0 -2
  323. package/dist/src/agent/ipc/types.js +0 -2
  324. package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
  325. package/dist/src/agent/lifecycle/hook-handler.js +0 -2
  326. package/dist/src/agent/lifecycle/manager.js +0 -2
  327. package/dist/src/agent/lifecycle/progress.js +0 -2
  328. package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
  329. package/dist/src/agent/lifecycle/typing.js +0 -2
  330. package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
  331. package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
  332. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
  333. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
  334. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
  335. package/dist/src/agent/mcp/embedded-mcp.js +0 -2
  336. package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
  337. package/dist/src/agent/mcp/mcp-http.js +0 -2
  338. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
  339. package/dist/src/agent/mcp/mcp-stdio.js +0 -2
  340. package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
  341. package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
  342. package/dist/src/agent/mcp/mcp-transport.js +0 -2
  343. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
  344. package/dist/src/agent/media-generation/model-ref.js +0 -2
  345. package/dist/src/agent/media-generation/normalization.types.js +0 -2
  346. package/dist/src/agent/media-generation/runtime-shared.js +0 -2
  347. package/dist/src/agent/memory/agent-message-access.js +0 -2
  348. package/dist/src/agent/memory/builtin-memory-store.js +0 -2
  349. package/dist/src/agent/memory/builtin-provider.js +0 -2
  350. package/dist/src/agent/memory/compaction.js +0 -2
  351. package/dist/src/agent/memory/context/planner.js +0 -2
  352. package/dist/src/agent/memory/context-fence.js +0 -2
  353. package/dist/src/agent/memory/create-memory-manager.js +0 -2
  354. package/dist/src/agent/memory/dreaming/config.js +0 -2
  355. package/dist/src/agent/memory/dreaming/constants.js +0 -2
  356. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
  357. package/dist/src/agent/memory/dreaming/events.js +0 -2
  358. package/dist/src/agent/memory/dreaming/last-run.js +0 -2
  359. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
  360. package/dist/src/agent/memory/dreaming/preview.js +0 -2
  361. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
  362. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
  363. package/dist/src/agent/memory/dreaming/scope.js +0 -2
  364. package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
  365. package/dist/src/agent/memory/dreaming/utils.js +0 -2
  366. package/dist/src/agent/memory/lifecycle.js +0 -2
  367. package/dist/src/agent/memory/manager.js +0 -2
  368. package/dist/src/agent/memory/memory-config.js +0 -2
  369. package/dist/src/agent/memory/message-sanitizer.js +0 -2
  370. package/dist/src/agent/memory/plugin-discovery.js +0 -2
  371. package/dist/src/agent/memory/sensitivity.js +0 -2
  372. package/dist/src/agent/memory/source-origin.js +0 -2
  373. package/dist/src/agent/memory/stub-memory-provider.js +0 -2
  374. package/dist/src/agent/memory/summary-generator.js +0 -2
  375. package/dist/src/agent/memory/understanding/correction.js +0 -2
  376. package/dist/src/agent/memory/understanding/quality.js +0 -2
  377. package/dist/src/agent/memory/understanding/service.js +0 -2
  378. package/dist/src/agent/memory/user-context-coordinator.js +0 -2
  379. package/dist/src/agent/memory/user-message-text.js +0 -2
  380. package/dist/src/agent/memory/window.js +0 -2
  381. package/dist/src/agent/messaging/command-handler.js +0 -2
  382. package/dist/src/agent/messaging/message-router.js +0 -2
  383. package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
  384. package/dist/src/agent/messaging/stream-manager.js +0 -2
  385. package/dist/src/agent/middleware/context.js +0 -2
  386. package/dist/src/agent/middleware/self-verify.js +0 -2
  387. package/dist/src/agent/models/manager.js +0 -2
  388. package/dist/src/agent/models/request-limiter.js +0 -2
  389. package/dist/src/agent/models/selection.js +0 -2
  390. package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
  391. package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
  392. package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
  393. package/dist/src/agent/orchestration/loop-guard.js +0 -2
  394. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
  395. package/dist/src/agent/prompt/cache-boundary.js +0 -2
  396. package/dist/src/agent/prompt/memory/index.js +0 -2
  397. package/dist/src/agent/prompt/safety.js +0 -2
  398. package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
  399. package/dist/src/agent/prompt/sections/behavior.js +0 -2
  400. package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
  401. package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
  402. package/dist/src/agent/prompt/sections/project-context.js +0 -2
  403. package/dist/src/agent/prompt/sections/tooling.js +0 -2
  404. package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
  405. package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
  406. package/dist/src/agent/prompt/subagent-context.js +0 -2
  407. package/dist/src/agent/prompt/system-prompt-params.js +0 -2
  408. package/dist/src/agent/prompt/system-prompt.js +0 -2
  409. package/dist/src/agent/prompt/system-reminder.js +0 -2
  410. package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
  411. package/dist/src/agent/reply/post-compaction-context.js +0 -2
  412. package/dist/src/agent/reply/startup-context.js +0 -2
  413. package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
  414. package/dist/src/agent/sandbox/command-validator.js +0 -2
  415. package/dist/src/agent/sandbox/exec-policy.js +0 -2
  416. package/dist/src/agent/sandbox/path-policy.js +0 -2
  417. package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
  418. package/dist/src/agent/sandbox/types.js +0 -2
  419. package/dist/src/agent/service/async-queue.js +0 -2
  420. package/dist/src/agent/service/btw-query.js +0 -2
  421. package/dist/src/agent/service/build-direct-message-content.js +0 -2
  422. package/dist/src/agent/service/direct-turn-helpers.js +0 -2
  423. package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
  424. package/dist/src/agent/service/process-direct-one-shot.js +0 -2
  425. package/dist/src/agent/service/process-direct-streaming.js +0 -2
  426. package/dist/src/agent/service/session-context-report.js +0 -2
  427. package/dist/src/agent/service/webchat-tts.js +0 -2
  428. package/dist/src/agent/service-inbound-utils.js +0 -2
  429. package/dist/src/agent/service.js +0 -2
  430. package/dist/src/agent/session/session-config-service.js +0 -2
  431. package/dist/src/agent/session/session-context.js +0 -2
  432. package/dist/src/agent/session/session-hydrator.js +0 -2
  433. package/dist/src/agent/session/session-inspector.js +0 -2
  434. package/dist/src/agent/session/session-lifecycle.js +0 -2
  435. package/dist/src/agent/session/session-state-bag.js +0 -2
  436. package/dist/src/agent/session/tracker.js +0 -2
  437. package/dist/src/agent/skills/config.js +0 -2
  438. package/dist/src/agent/skills/filesystem-watcher.js +0 -2
  439. package/dist/src/agent/skills/format-skills-prompt.js +0 -2
  440. package/dist/src/agent/skills/hub-hash.js +0 -2
  441. package/dist/src/agent/skills/hub-lock.js +0 -2
  442. package/dist/src/agent/skills/hub-pull.js +0 -2
  443. package/dist/src/agent/skills/index.js +0 -2
  444. package/dist/src/agent/skills/install-target.js +0 -2
  445. package/dist/src/agent/skills/installer.js +0 -2
  446. package/dist/src/agent/skills/managed-store.js +0 -2
  447. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
  448. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
  449. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
  450. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
  451. package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
  452. package/dist/src/agent/skills/marketplace/registry.js +0 -2
  453. package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
  454. package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
  455. package/dist/src/agent/skills/required-env-vars.js +0 -2
  456. package/dist/src/agent/skills/scanner.js +0 -2
  457. package/dist/src/agent/skills/skill-manage-ops.js +0 -2
  458. package/dist/src/agent/skills/skill-manager.js +0 -2
  459. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
  460. package/dist/src/agent/skills/skill-tool-gating.js +0 -2
  461. package/dist/src/agent/skills/skill-view-path.js +0 -2
  462. package/dist/src/agent/skills/skills-marketplace.js +0 -2
  463. package/dist/src/agent/skills/test-framework.js +0 -2
  464. package/dist/src/agent/skills/watcher.js +0 -2
  465. package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
  466. package/dist/src/agent/source-context/injector.js +0 -2
  467. package/dist/src/agent/source-context/types.js +0 -2
  468. package/dist/src/agent/starter-agents.js +0 -2
  469. package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
  470. package/dist/src/agent/tool-manuals/browser.js +0 -2
  471. package/dist/src/agent/tool-manuals/index.js +0 -2
  472. package/dist/src/agent/tool-manuals/xopc-use.js +0 -2
  473. package/dist/src/agent/tools/apply-patch.js +0 -2
  474. package/dist/src/agent/tools/automation-tool.js +0 -2
  475. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
  476. package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
  477. package/dist/src/agent/tools/chain-tracker.js +0 -2
  478. package/dist/src/agent/tools/clarify-tool.js +0 -2
  479. package/dist/src/agent/tools/cli-clarify.js +0 -2
  480. package/dist/src/agent/tools/communication.js +0 -2
  481. package/dist/src/agent/tools/composio-tool.js +0 -2
  482. package/dist/src/agent/tools/concurrency.js +0 -2
  483. package/dist/src/agent/tools/create-share-tool.js +0 -2
  484. package/dist/src/agent/tools/curated-memory-tool.js +0 -2
  485. package/dist/src/agent/tools/delegate-tool.js +0 -2
  486. package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
  487. package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
  488. package/dist/src/agent/tools/dreaming-tool.js +0 -2
  489. package/dist/src/agent/tools/edit-diff.js +0 -2
  490. package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
  491. package/dist/src/agent/tools/error-tracker.js +0 -2
  492. package/dist/src/agent/tools/exec-command.js +0 -2
  493. package/dist/src/agent/tools/execute-code-tool.js +0 -2
  494. package/dist/src/agent/tools/executor.js +0 -2
  495. package/dist/src/agent/tools/factory.js +0 -2
  496. package/dist/src/agent/tools/find.js +0 -2
  497. package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
  498. package/dist/src/agent/tools/goal-tool.js +0 -2
  499. package/dist/src/agent/tools/grep.js +0 -2
  500. package/dist/src/agent/tools/image-generate-tool.js +0 -2
  501. package/dist/src/agent/tools/image-tool.js +0 -2
  502. package/dist/src/agent/tools/list-dir.js +0 -2
  503. package/dist/src/agent/tools/media-read-tool.js +0 -2
  504. package/dist/src/agent/tools/memory-tool.js +0 -2
  505. package/dist/src/agent/tools/metadata.js +0 -2
  506. package/dist/src/agent/tools/read.js +0 -2
  507. package/dist/src/agent/tools/search/http.js +0 -2
  508. package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
  509. package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
  510. package/dist/src/agent/tools/search/providers/brave.js +0 -2
  511. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
  512. package/dist/src/agent/tools/search/providers/searxng.js +0 -2
  513. package/dist/src/agent/tools/search/providers/tavily.js +0 -2
  514. package/dist/src/agent/tools/search/region.js +0 -2
  515. package/dist/src/agent/tools/search/registry.js +0 -2
  516. package/dist/src/agent/tools/search/resolve-config.js +0 -2
  517. package/dist/src/agent/tools/send-media.js +0 -2
  518. package/dist/src/agent/tools/session-search-tool.js +0 -2
  519. package/dist/src/agent/tools/session-status-tool.js +0 -2
  520. package/dist/src/agent/tools/skill-install-tool.js +0 -2
  521. package/dist/src/agent/tools/skill-manage-tool.js +0 -2
  522. package/dist/src/agent/tools/skills-tools.js +0 -2
  523. package/dist/src/agent/tools/structured-output.js +0 -2
  524. package/dist/src/agent/tools/todo-tool.js +0 -2
  525. package/dist/src/agent/tools/tool-manual-tool.js +0 -2
  526. package/dist/src/agent/tools/tool-paths.js +0 -2
  527. package/dist/src/agent/tools/truncate.js +0 -2
  528. package/dist/src/agent/tools/tts-tool.js +0 -2
  529. package/dist/src/agent/tools/update-plan-tool.js +0 -2
  530. package/dist/src/agent/tools/url-safety.js +0 -2
  531. package/dist/src/agent/tools/usage-analyzer.js +0 -2
  532. package/dist/src/agent/tools/web-extract.js +0 -2
  533. package/dist/src/agent/tools/web.js +4 -4
  534. package/dist/src/agent/tools/workflow-tool.js +0 -2
  535. package/dist/src/agent/tools/write.js +0 -2
  536. package/dist/src/agent/tools/xopc-use-tool.js +0 -2
  537. package/dist/src/agent/transcript/google-api.js +0 -2
  538. package/dist/src/agent/transcript/model-selection.js +0 -2
  539. package/dist/src/agent/transcript/provider-capabilities.js +0 -2
  540. package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
  541. package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
  542. package/dist/src/agent/transcript/thinking-types.js +0 -2
  543. package/dist/src/agent/transcript/thinking.js +0 -2
  544. package/dist/src/agent/transcript/tool-call-id.js +0 -2
  545. package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
  546. package/dist/src/agent/transcript/transcript-policy.js +0 -2
  547. package/dist/src/agent/workflow/agent-progress.js +0 -2
  548. package/dist/src/agent/workflow/builtins/index.js +0 -2
  549. package/dist/src/agent/workflow/catalog.js +0 -2
  550. package/dist/src/agent/workflow/progress-broker.js +0 -2
  551. package/dist/src/agent/workflow/snapshot-empty.js +0 -2
  552. package/dist/src/agent/workflow/snapshot.js +0 -2
  553. package/dist/src/agent/workflow/step-labels.js +0 -2
  554. package/dist/src/agent/workflow/structured-output-tool.js +0 -2
  555. package/dist/src/agent/workflow/subagent-runner.js +0 -2
  556. package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
  557. package/dist/src/agent/workspace-runtime/registry.js +0 -2
  558. package/dist/src/agent-manifest/index.js +0 -2
  559. package/dist/src/agent-manifest/preset-chain.js +0 -2
  560. package/dist/src/agent-manifest/prompt.js +0 -2
  561. package/dist/src/agent-manifest/resolver.js +0 -2
  562. package/dist/src/agent-manifest/schema.js +0 -2
  563. package/dist/src/agent-manifest/validator.js +0 -2
  564. package/dist/src/agent-runtime/boundary-guard.js +0 -2
  565. package/dist/src/agent-runtime/memory-runtime.js +0 -2
  566. package/dist/src/agent-runtime/model-router.js +0 -2
  567. package/dist/src/agent-runtime/run-trace.js +0 -2
  568. package/dist/src/agent-runtime/runtime-profile.js +0 -2
  569. package/dist/src/agent-runtime/tool-registry.js +0 -2
  570. package/dist/src/agent-runtime/workflow-runtime.js +0 -2
  571. package/dist/src/ai-assist/text-assist.js +0 -2
  572. package/dist/src/auth/credentials.js +0 -2
  573. package/dist/src/auth/index.js +0 -2
  574. package/dist/src/auth/oauth/anthropic.js +0 -2
  575. package/dist/src/auth/oauth/github-copilot.js +0 -2
  576. package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
  577. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
  578. package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
  579. package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
  580. package/dist/src/auth/oauth/kimi-coding.js +0 -2
  581. package/dist/src/auth/oauth/minimax-cn.js +0 -2
  582. package/dist/src/auth/oauth/minimax.js +0 -2
  583. package/dist/src/auth/oauth/openai-codex.js +0 -2
  584. package/dist/src/auth/oauth/pkce.js +0 -2
  585. package/dist/src/auth/profiles/oauth.js +0 -2
  586. package/dist/src/auth/profiles/order.js +0 -2
  587. package/dist/src/auth/profiles/profiles.js +0 -2
  588. package/dist/src/auth/profiles/store.js +0 -2
  589. package/dist/src/auth/sync-provider-auth.js +0 -2
  590. package/dist/src/automations/api/routes.js +0 -2
  591. package/dist/src/automations/domain/schedule.js +0 -2
  592. package/dist/src/automations/domain/validation.js +0 -2
  593. package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
  594. package/dist/src/automations/draft/automation-draft-service.js +0 -2
  595. package/dist/src/automations/draft/automation-draft-validator.js +0 -2
  596. package/dist/src/automations/product-events.js +0 -2
  597. package/dist/src/automations/service/action-executor.js +0 -2
  598. package/dist/src/automations/service/automation-service.js +0 -2
  599. package/dist/src/automations/storage/automation-repository.js +0 -2
  600. package/dist/src/automations/storage/automation-run-repository.js +0 -2
  601. package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
  602. package/dist/src/browser/actions/registry.js +0 -2
  603. package/dist/src/browser/backend-from-config.js +0 -2
  604. package/dist/src/browser/browser-command-timeout.js +0 -2
  605. package/dist/src/browser/cache-dir-policy.js +0 -2
  606. package/dist/src/browser/cdp-local-launcher.js +0 -2
  607. package/dist/src/browser/cdp-supervisor.js +0 -2
  608. package/dist/src/browser/free-port.js +0 -2
  609. package/dist/src/browser/humanize.js +0 -2
  610. package/dist/src/browser/install-lock.js +0 -2
  611. package/dist/src/browser/manager.js +0 -2
  612. package/dist/src/browser/pipeline/output.js +0 -2
  613. package/dist/src/browser/pipeline/runner.js +0 -2
  614. package/dist/src/browser/pipeline/schema.js +0 -2
  615. package/dist/src/browser/pipeline/source.js +0 -2
  616. package/dist/src/browser/pipeline/template.js +0 -2
  617. package/dist/src/browser/providers/browser-ext-install.js +0 -2
  618. package/dist/src/browser/providers/browser-use.js +0 -2
  619. package/dist/src/browser/providers/browserbase.js +0 -2
  620. package/dist/src/browser/providers/cloakbrowser.js +0 -2
  621. package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
  622. package/dist/src/browser/providers/extension.js +0 -2
  623. package/dist/src/browser/providers/playwright-doctor.js +13 -4
  624. package/dist/src/browser/providers/playwright-install.js +0 -2
  625. package/dist/src/browser/readiness.js +0 -2
  626. package/dist/src/browser/schemas.js +0 -2
  627. package/dist/src/browser/session-lifecycle.js +0 -2
  628. package/dist/src/browser/snapshot-helpers.js +0 -2
  629. package/dist/src/browser/stealth.js +0 -2
  630. package/dist/src/browser/url-policy.js +0 -2
  631. package/dist/src/capabilities/store-connector.js +0 -2
  632. package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
  633. package/dist/src/channels/attachments/inbound-persist.js +0 -2
  634. package/dist/src/channels/attachments/inbound-types.js +0 -2
  635. package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
  636. package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
  637. package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
  638. package/dist/src/channels/config-helpers.js +0 -2
  639. package/dist/src/channels/envelope-timestamp.js +0 -2
  640. package/dist/src/channels/exec-approval-runtime.js +0 -2
  641. package/dist/src/channels/health-monitor.js +0 -2
  642. package/dist/src/channels/heartbeat-scheduler.js +0 -2
  643. package/dist/src/channels/internal-outbound.js +0 -2
  644. package/dist/src/channels/lifecycle-supervisor.js +0 -2
  645. package/dist/src/channels/manager.js +0 -2
  646. package/dist/src/channels/media.js +0 -2
  647. package/dist/src/channels/outbound/deliver.js +0 -2
  648. package/dist/src/channels/outbound/normalize.js +0 -2
  649. package/dist/src/channels/outbound/persist-store.js +0 -2
  650. package/dist/src/channels/outbound/queue.js +0 -2
  651. package/dist/src/channels/outbound-sender.js +0 -2
  652. package/dist/src/channels/pairing/allow-from-file.js +0 -2
  653. package/dist/src/channels/pairing/approve-cli.js +0 -2
  654. package/dist/src/channels/pairing/pairing-challenge.js +0 -2
  655. package/dist/src/channels/pairing/pairing-constants.js +0 -2
  656. package/dist/src/channels/pairing/pairing-events.js +0 -2
  657. package/dist/src/channels/pairing/pairing-messages.js +0 -2
  658. package/dist/src/channels/pairing/pairing-service.js +0 -2
  659. package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
  660. package/dist/src/channels/pairing/pairing-store.js +0 -2
  661. package/dist/src/channels/pairing/paths.js +0 -2
  662. package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
  663. package/dist/src/channels/pipeline.js +0 -2
  664. package/dist/src/channels/plugin-registry.js +0 -2
  665. package/dist/src/channels/plugins/registry.js +0 -2
  666. package/dist/src/channels/restart-policy.js +0 -2
  667. package/dist/src/channels/security-helpers.js +0 -2
  668. package/dist/src/channels/security.js +0 -2
  669. package/dist/src/channels/setup-wizard-discovery.js +0 -2
  670. package/dist/src/chat-commands/agent-edit.js +0 -2
  671. package/dist/src/chat-commands/builtins/config.js +0 -2
  672. package/dist/src/chat-commands/builtins/context.js +0 -2
  673. package/dist/src/chat-commands/builtins/goal.js +0 -2
  674. package/dist/src/chat-commands/builtins/model.js +0 -2
  675. package/dist/src/chat-commands/builtins/review.js +0 -2
  676. package/dist/src/chat-commands/builtins/session.js +0 -2
  677. package/dist/src/chat-commands/builtins/skill.js +0 -2
  678. package/dist/src/chat-commands/builtins/subgoal.js +0 -2
  679. package/dist/src/chat-commands/builtins/system.js +0 -2
  680. package/dist/src/chat-commands/builtins/thinking.js +0 -2
  681. package/dist/src/chat-commands/builtins/tts.js +0 -2
  682. package/dist/src/chat-commands/builtins/workflow.js +0 -2
  683. package/dist/src/chat-commands/command-parse.js +0 -2
  684. package/dist/src/chat-commands/config-paths.js +0 -2
  685. package/dist/src/chat-commands/config-value.js +0 -2
  686. package/dist/src/chat-commands/context.js +0 -2
  687. package/dist/src/chat-commands/format-output.js +0 -2
  688. package/dist/src/chat-commands/index.js +0 -2
  689. package/dist/src/chat-commands/processor.js +0 -2
  690. package/dist/src/chat-commands/registry.js +0 -2
  691. package/dist/src/chat-commands/session-key.js +0 -2
  692. package/dist/src/cli/argv-invocation.js +0 -2
  693. package/dist/src/cli/argv.js +0 -2
  694. package/dist/src/cli/bin.js +0 -2
  695. package/dist/src/cli/cli-log-level-preset.js +0 -2
  696. package/dist/src/cli/command-catalog.js +0 -2
  697. package/dist/src/cli/command-loaders.js +0 -2
  698. package/dist/src/cli/command-manifest.js +0 -2
  699. package/dist/src/cli/command-path-matches.js +0 -2
  700. package/dist/src/cli/command-path-policy.js +0 -2
  701. package/dist/src/cli/command-startup-policy.js +0 -2
  702. package/dist/src/cli/commands/agent/interactive.js +0 -2
  703. package/dist/src/cli/commands/agent/sessions.js +0 -2
  704. package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
  705. package/dist/src/cli/commands/agent.js +0 -2
  706. package/dist/src/cli/commands/agents.js +0 -2
  707. package/dist/src/cli/commands/auth.js +0 -2
  708. package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
  709. package/dist/src/cli/commands/browser.js +0 -2
  710. package/dist/src/cli/commands/channels.js +0 -2
  711. package/dist/src/cli/commands/config.js +0 -2
  712. package/dist/src/cli/commands/connectors.js +0 -2
  713. package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
  714. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
  715. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
  716. package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
  717. package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
  718. package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
  719. package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
  720. package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
  721. package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
  722. package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
  723. package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
  724. package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
  725. package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
  726. package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
  727. package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
  728. package/dist/src/cli/commands/doctor/flow.js +0 -2
  729. package/dist/src/cli/commands/doctor/format.js +0 -2
  730. package/dist/src/cli/commands/doctor/index.js +0 -2
  731. package/dist/src/cli/commands/extension-create.js +0 -2
  732. package/dist/src/cli/commands/extension-dev.js +0 -2
  733. package/dist/src/cli/commands/extension-marketplace.js +0 -2
  734. package/dist/src/cli/commands/extension-pack.js +0 -2
  735. package/dist/src/cli/commands/extension.js +0 -2
  736. package/dist/src/cli/commands/gateway/call.js +0 -2
  737. package/dist/src/cli/commands/gateway/health.js +0 -2
  738. package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
  739. package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
  740. package/dist/src/cli/commands/gateway/logs.js +0 -2
  741. package/dist/src/cli/commands/gateway/probe.js +0 -2
  742. package/dist/src/cli/commands/gateway/restart-health.js +0 -2
  743. package/dist/src/cli/commands/gateway/restart.js +0 -2
  744. package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
  745. package/dist/src/cli/commands/gateway/service.js +0 -2
  746. package/dist/src/cli/commands/gateway/shared.js +0 -2
  747. package/dist/src/cli/commands/gateway/status.js +0 -2
  748. package/dist/src/cli/commands/gateway/stop.js +0 -2
  749. package/dist/src/cli/commands/gateway/subcommands.js +0 -2
  750. package/dist/src/cli/commands/gateway/token.js +0 -2
  751. package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
  752. package/dist/src/cli/commands/gateway.js +0 -2
  753. package/dist/src/cli/commands/goal.js +0 -2
  754. package/dist/src/cli/commands/image.js +0 -2
  755. package/dist/src/cli/commands/init.js +0 -2
  756. package/dist/src/cli/commands/logs.js +0 -2
  757. package/dist/src/cli/commands/models.js +0 -2
  758. package/dist/src/cli/commands/onboard/channels/index.js +0 -2
  759. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
  760. package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
  761. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
  762. package/dist/src/cli/commands/onboard/gateway.js +0 -2
  763. package/dist/src/cli/commands/onboard/model.js +0 -2
  764. package/dist/src/cli/commands/onboard.js +0 -2
  765. package/dist/src/cli/commands/profile.js +0 -2
  766. package/dist/src/cli/commands/project.js +0 -2
  767. package/dist/src/cli/commands/providers.js +0 -2
  768. package/dist/src/cli/commands/resume.js +0 -2
  769. package/dist/src/cli/commands/search.js +0 -2
  770. package/dist/src/cli/commands/session/actions.js +0 -2
  771. package/dist/src/cli/commands/session/utils.js +0 -2
  772. package/dist/src/cli/commands/session.js +0 -2
  773. package/dist/src/cli/commands/setup-shared/output.js +0 -2
  774. package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
  775. package/dist/src/cli/commands/setup-shared/runner.js +0 -2
  776. package/dist/src/cli/commands/setup-shared/types.js +0 -2
  777. package/dist/src/cli/commands/setup.js +0 -2
  778. package/dist/src/cli/commands/skills-test.js +0 -2
  779. package/dist/src/cli/commands/skills.js +0 -2
  780. package/dist/src/cli/commands/tailscale.js +0 -2
  781. package/dist/src/cli/commands/tui-runner.js +0 -2
  782. package/dist/src/cli/commands/tui.js +0 -2
  783. package/dist/src/cli/commands/tunnel.js +0 -2
  784. package/dist/src/cli/commands/update.js +0 -2
  785. package/dist/src/cli/commands/voice.js +0 -2
  786. package/dist/src/cli/context.js +0 -2
  787. package/dist/src/cli/extension-cli-register.js +0 -2
  788. package/dist/src/cli/gateway-run-argv.js +0 -2
  789. package/dist/src/cli/gateway-run-fast-path.js +0 -2
  790. package/dist/src/cli/index.js +0 -2
  791. package/dist/src/cli/registry.js +0 -2
  792. package/dist/src/cli/templates.js +0 -2
  793. package/dist/src/cli/utils/colors.js +0 -2
  794. package/dist/src/cli/utils/gateway-client-options.js +0 -2
  795. package/dist/src/cli/utils/gateway-client.js +0 -2
  796. package/dist/src/cli/utils/init-workspace-core.js +0 -2
  797. package/dist/src/cli/utils/init-workspace.js +0 -2
  798. package/dist/src/cli/utils/oauth-login.js +0 -2
  799. package/dist/src/cli/utils/oauth-providers.js +0 -2
  800. package/dist/src/cli/utils/session.js +0 -2
  801. package/dist/src/commands/agents.config.js +0 -2
  802. package/dist/src/config/agent-profile.js +0 -2
  803. package/dist/src/config/agent-typed-models.js +0 -2
  804. package/dist/src/config/commands.flags.js +0 -2
  805. package/dist/src/config/default-model.js +0 -2
  806. package/dist/src/config/diff.js +0 -2
  807. package/dist/src/config/gateway-bind.js +0 -2
  808. package/dist/src/config/index.js +0 -2
  809. package/dist/src/config/loader.js +0 -2
  810. package/dist/src/config/mcp-config-normalize.js +0 -2
  811. package/dist/src/config/model-input.js +0 -2
  812. package/dist/src/config/models-json.js +0 -2
  813. package/dist/src/config/paths-state.js +0 -2
  814. package/dist/src/config/paths.js +0 -2
  815. package/dist/src/config/profile.js +0 -2
  816. package/dist/src/config/public-url.js +0 -2
  817. package/dist/src/config/reload.js +0 -2
  818. package/dist/src/config/resolve-config-value.js +0 -2
  819. package/dist/src/config/rules.js +0 -2
  820. package/dist/src/config/runtime-overrides.js +0 -2
  821. package/dist/src/config/schema.js +0 -2
  822. package/dist/src/config/validate-channel-configs.js +0 -2
  823. package/dist/src/config/voice.js +0 -2
  824. package/dist/src/config/web-patch.js +0 -2
  825. package/dist/src/config/workspace-defaults.js +0 -2
  826. package/dist/src/config/workspace-dirs.js +0 -2
  827. package/dist/src/config/workspace-path-helpers.js +0 -2
  828. package/dist/src/config/workspace-path.js +0 -2
  829. package/dist/src/connectors/approval.js +0 -2
  830. package/dist/src/connectors/auth-provider-registry.js +0 -2
  831. package/dist/src/connectors/builtin-catalog.js +0 -2
  832. package/dist/src/connectors/catalog.js +0 -2
  833. package/dist/src/connectors/composio-catalog.js +0 -2
  834. package/dist/src/connectors/composio-logo.js +0 -2
  835. package/dist/src/connectors/composio-sessions.js +9 -5
  836. package/dist/src/connectors/composio-triggers.js +0 -2
  837. package/dist/src/connectors/composio.js +0 -2
  838. package/dist/src/connectors/connector-memory-sync.js +0 -2
  839. package/dist/src/connectors/health.js +0 -2
  840. package/dist/src/connectors/install.js +0 -2
  841. package/dist/src/connectors/instances.js +0 -2
  842. package/dist/src/connectors/integration-strategy.js +0 -2
  843. package/dist/src/connectors/lifecycle.js +0 -2
  844. package/dist/src/connectors/materialize.js +0 -2
  845. package/dist/src/connectors/policy.js +0 -2
  846. package/dist/src/connectors/providers.js +0 -2
  847. package/dist/src/connectors/registries/modelscope.js +0 -2
  848. package/dist/src/connectors/registries/official-mcp.js +0 -2
  849. package/dist/src/connectors/registries/search.js +0 -2
  850. package/dist/src/connectors/registries/smithery.js +0 -2
  851. package/dist/src/connectors/runtime-adapter-registry.js +0 -2
  852. package/dist/src/connectors/secret-store.js +0 -2
  853. package/dist/src/connectors/setup-secrets.js +0 -2
  854. package/dist/src/connectors/supervisor.js +0 -2
  855. package/dist/src/connectors/usage.js +0 -2
  856. package/dist/src/connectors/workflow-preflight.js +0 -2
  857. package/dist/src/daemon/constants.js +0 -2
  858. package/dist/src/daemon/install-plan.js +0 -2
  859. package/dist/src/daemon/launchd.js +0 -2
  860. package/dist/src/daemon/schtasks.js +0 -2
  861. package/dist/src/daemon/service-audit.js +0 -2
  862. package/dist/src/daemon/service.js +0 -2
  863. package/dist/src/daemon/systemd.js +0 -2
  864. package/dist/src/document-understanding/extract.js +0 -2
  865. package/dist/src/errors/index.js +0 -2
  866. package/dist/src/extensions/activation-context.js +0 -2
  867. package/dist/src/extensions/activation-planner.js +0 -2
  868. package/dist/src/extensions/api.js +0 -2
  869. package/dist/src/extensions/bundle-mcp.js +0 -2
  870. package/dist/src/extensions/bundled-extension-activation.js +0 -2
  871. package/dist/src/extensions/diagnostics.js +0 -2
  872. package/dist/src/extensions/discover-extensions.js +0 -2
  873. package/dist/src/extensions/engine-check.js +0 -2
  874. package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
  875. package/dist/src/extensions/extension-registry-impl.js +0 -2
  876. package/dist/src/extensions/health.js +0 -2
  877. package/dist/src/extensions/hooks.js +0 -2
  878. package/dist/src/extensions/index.js +0 -2
  879. package/dist/src/extensions/install-transaction.js +0 -2
  880. package/dist/src/extensions/install.js +0 -2
  881. package/dist/src/extensions/loader.js +0 -2
  882. package/dist/src/extensions/lockfile.js +0 -2
  883. package/dist/src/extensions/manifest-registry.js +0 -2
  884. package/dist/src/extensions/marketplace.js +0 -2
  885. package/dist/src/extensions/media-provider-contracts.js +0 -2
  886. package/dist/src/extensions/normalize-manifest.js +0 -2
  887. package/dist/src/extensions/onboard-helpers.js +0 -2
  888. package/dist/src/extensions/package-contract.js +0 -2
  889. package/dist/src/extensions/sdk/channel-entry.js +0 -2
  890. package/dist/src/extensions/sdk/channel-helpers.js +0 -2
  891. package/dist/src/extensions/sdk/index.js +0 -2
  892. package/dist/src/extensions/sdk/lazy.js +0 -2
  893. package/dist/src/extensions/sdk/testing.js +0 -2
  894. package/dist/src/extensions/security.js +0 -2
  895. package/dist/src/extensions/slots.js +0 -2
  896. package/dist/src/extensions/speech-provider-contracts.js +0 -2
  897. package/dist/src/extensions/store-zip-limits.js +0 -2
  898. package/dist/src/extensions/typed-event-bus.js +0 -2
  899. package/dist/src/extensions/types/hooks.js +0 -2
  900. package/dist/src/extensions/types/providers.js +0 -2
  901. package/dist/src/extensions/update.js +0 -2
  902. package/dist/src/extensions/when-context.js +0 -2
  903. package/dist/src/extensions/when-expression.js +0 -2
  904. package/dist/src/gateway/agent-builtin-tools.js +0 -2
  905. package/dist/src/gateway/agent-run-relay.js +0 -2
  906. package/dist/src/gateway/agents-admin.js +0 -2
  907. package/dist/src/gateway/auth.js +0 -2
  908. package/dist/src/gateway/capability-presets-admin.js +0 -2
  909. package/dist/src/gateway/chat-limits.js +0 -2
  910. package/dist/src/gateway/chat-stream/mapper.js +28 -14
  911. package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
  912. package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
  913. package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
  914. package/dist/src/gateway/clarify-bridge.js +3 -3
  915. package/dist/src/gateway/clarify-runtime.js +0 -2
  916. package/dist/src/gateway/client-ip.js +0 -2
  917. package/dist/src/gateway/config-tools-web.js +0 -2
  918. package/dist/src/gateway/credential.js +0 -2
  919. package/dist/src/gateway/discovery/mdns.js +0 -2
  920. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
  921. package/dist/src/gateway/ensure-network-cors.js +0 -2
  922. package/dist/src/gateway/file-path-classifier.js +0 -2
  923. package/dist/src/gateway/file-reference-registry.js +0 -2
  924. package/dist/src/gateway/global-defaults-admin.js +0 -2
  925. package/dist/src/gateway/heartbeat/service.js +0 -2
  926. package/dist/src/gateway/hono/app.js +0 -2
  927. package/dist/src/gateway/hono/lib/agent-model.js +0 -2
  928. package/dist/src/gateway/hono/lib/config-payload.js +0 -2
  929. package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
  930. package/dist/src/gateway/hono/lib/extension-store.js +0 -2
  931. package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
  932. package/dist/src/gateway/hono/lib/route-logger.js +0 -2
  933. package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
  934. package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
  935. package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
  936. package/dist/src/gateway/hono/lib/static-ui.js +0 -2
  937. package/dist/src/gateway/hono/middleware/auth.js +0 -2
  938. package/dist/src/gateway/hono/middleware/log-context.js +0 -2
  939. package/dist/src/gateway/hono/middleware/logger.js +0 -2
  940. package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
  941. package/dist/src/gateway/hono/middleware/scopes.js +0 -2
  942. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
  943. package/dist/src/gateway/hono/oauth-async.js +0 -2
  944. package/dist/src/gateway/hono/oauth.js +0 -2
  945. package/dist/src/gateway/hono/routes/activity.js +0 -2
  946. package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
  947. package/dist/src/gateway/hono/routes/agents.js +0 -2
  948. package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
  949. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
  950. package/dist/src/gateway/hono/routes/browser-install.js +0 -2
  951. package/dist/src/gateway/hono/routes/browser.js +0 -2
  952. package/dist/src/gateway/hono/routes/capabilities.js +0 -2
  953. package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
  954. package/dist/src/gateway/hono/routes/channels.js +0 -2
  955. package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
  956. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
  957. package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
  958. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
  959. package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
  960. package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
  961. package/dist/src/gateway/hono/routes/config.js +0 -2
  962. package/dist/src/gateway/hono/routes/connectors.js +0 -2
  963. package/dist/src/gateway/hono/routes/doctor.js +0 -2
  964. package/dist/src/gateway/hono/routes/dreaming.js +0 -2
  965. package/dist/src/gateway/hono/routes/exposure.js +0 -2
  966. package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
  967. package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
  968. package/dist/src/gateway/hono/routes/goals.js +0 -2
  969. package/dist/src/gateway/hono/routes/home.js +0 -2
  970. package/dist/src/gateway/hono/routes/host-fs.js +0 -2
  971. package/dist/src/gateway/hono/routes/index.js +0 -2
  972. package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
  973. package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
  974. package/dist/src/gateway/hono/routes/local-apps.js +0 -2
  975. package/dist/src/gateway/hono/routes/logs.js +0 -2
  976. package/dist/src/gateway/hono/routes/mcp.js +0 -2
  977. package/dist/src/gateway/hono/routes/media.js +0 -2
  978. package/dist/src/gateway/hono/routes/memory.js +0 -2
  979. package/dist/src/gateway/hono/routes/migrations.js +0 -2
  980. package/dist/src/gateway/hono/routes/mobile.js +0 -2
  981. package/dist/src/gateway/hono/routes/models.js +0 -2
  982. package/dist/src/gateway/hono/routes/notes.js +3 -3
  983. package/dist/src/gateway/hono/routes/projects.js +0 -2
  984. package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
  985. package/dist/src/gateway/hono/routes/search.js +0 -2
  986. package/dist/src/gateway/hono/routes/sessions.js +0 -2
  987. package/dist/src/gateway/hono/routes/shares.js +0 -2
  988. package/dist/src/gateway/hono/routes/site-shares.js +0 -2
  989. package/dist/src/gateway/hono/routes/status.js +0 -2
  990. package/dist/src/gateway/hono/routes/tui.js +0 -2
  991. package/dist/src/gateway/hono/routes/tunnel.js +0 -2
  992. package/dist/src/gateway/hono/routes/update.js +0 -2
  993. package/dist/src/gateway/hono/routes/voice.js +0 -2
  994. package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
  995. package/dist/src/gateway/hono/routes/workflows.js +0 -2
  996. package/dist/src/gateway/hono/routes/workspace.js +0 -2
  997. package/dist/src/gateway/hono/routes/you.js +0 -2
  998. package/dist/src/gateway/hono/sse-json.js +0 -2
  999. package/dist/src/gateway/hono/sse.js +0 -2
  1000. package/dist/src/gateway/host.js +0 -2
  1001. package/dist/src/gateway/image-capabilities.js +0 -2
  1002. package/dist/src/gateway/listen.js +0 -2
  1003. package/dist/src/gateway/lock.js +0 -2
  1004. package/dist/src/gateway/ports.js +0 -2
  1005. package/dist/src/gateway/protocol.js +0 -2
  1006. package/dist/src/gateway/public-url.js +0 -2
  1007. package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
  1008. package/dist/src/gateway/rate-limit/buckets.js +0 -2
  1009. package/dist/src/gateway/rate-limit/env-flags.js +0 -2
  1010. package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
  1011. package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
  1012. package/dist/src/gateway/respawn.js +0 -2
  1013. package/dist/src/gateway/run-loop.js +0 -2
  1014. package/dist/src/gateway/runtime-config.js +0 -2
  1015. package/dist/src/gateway/security/audit.js +0 -2
  1016. package/dist/src/gateway/security/csp.js +0 -2
  1017. package/dist/src/gateway/security/dangerous-tools.js +0 -2
  1018. package/dist/src/gateway/security/external-content.js +0 -2
  1019. package/dist/src/gateway/security/known-weak-secrets.js +0 -2
  1020. package/dist/src/gateway/security/loopback.js +0 -2
  1021. package/dist/src/gateway/security/operator-scopes.js +0 -2
  1022. package/dist/src/gateway/security/origin-check.js +0 -2
  1023. package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
  1024. package/dist/src/gateway/security/secret-equal.js +0 -2
  1025. package/dist/src/gateway/server-tailscale.js +0 -2
  1026. package/dist/src/gateway/server.js +0 -2
  1027. package/dist/src/gateway/service/agent-runner.js +0 -2
  1028. package/dist/src/gateway/service/config-coordinator.js +0 -2
  1029. package/dist/src/gateway/service/marketplace-service.js +0 -2
  1030. package/dist/src/gateway/service/run-gateway-agent.js +0 -2
  1031. package/dist/src/gateway/service/session-chat-ids.js +0 -2
  1032. package/dist/src/gateway/service/sessions-api.js +0 -2
  1033. package/dist/src/gateway/service/sse-hub.js +0 -2
  1034. package/dist/src/gateway/service.js +0 -2
  1035. package/dist/src/gateway/session-reset-service.js +0 -2
  1036. package/dist/src/gateway/startup-readiness.js +0 -2
  1037. package/dist/src/gateway/startup-trace.js +0 -2
  1038. package/dist/src/gateway/tailscale-auth.js +0 -2
  1039. package/dist/src/gateway/tailscale-lifecycle.js +0 -2
  1040. package/dist/src/gateway/tls-server.js +0 -2
  1041. package/dist/src/gateway/trusted-proxy.js +0 -2
  1042. package/dist/src/gateway/user-turn-input.js +0 -2
  1043. package/dist/src/gateway/workspace-editor-path.js +0 -2
  1044. package/dist/src/gateway/workspace-file-search.js +0 -2
  1045. package/dist/src/gateway/workspace-fs-file-list.js +0 -2
  1046. package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
  1047. package/dist/src/gateway/workspace-ripgrep.js +0 -2
  1048. package/dist/src/gateway/ws-security.js +0 -2
  1049. package/dist/src/generated/bundled-image-generation-providers.js +0 -2
  1050. package/dist/src/goals/goal-contract-draft.js +0 -2
  1051. package/dist/src/goals/goal-evidence-review.js +0 -2
  1052. package/dist/src/goals/goal-notifications.js +0 -2
  1053. package/dist/src/goals/goal-queue-store.js +0 -2
  1054. package/dist/src/goals/goal-runner.js +0 -2
  1055. package/dist/src/goals/goal-service.js +0 -2
  1056. package/dist/src/goals/goal-store.js +0 -2
  1057. package/dist/src/goals/goal-workflow-judge.js +0 -2
  1058. package/dist/src/heartbeat/active-hours.js +0 -2
  1059. package/dist/src/heartbeat/content-check.js +0 -2
  1060. package/dist/src/heartbeat/event-prompt.js +0 -2
  1061. package/dist/src/heartbeat/tokens.js +0 -2
  1062. package/dist/src/heartbeat/wake.js +0 -2
  1063. package/dist/src/i18n/format.js +0 -2
  1064. package/dist/src/i18n/goals-bundle.js +0 -2
  1065. package/dist/src/i18n/locale.js +0 -2
  1066. package/dist/src/i18n/locales/goals.en.js +0 -2
  1067. package/dist/src/i18n/locales/goals.zh.js +0 -2
  1068. package/dist/src/i18n/locales/share-tool.en.js +0 -2
  1069. package/dist/src/i18n/locales/share-tool.zh.js +0 -2
  1070. package/dist/src/i18n/share-tool-bundle.js +0 -2
  1071. package/dist/src/index.js +0 -2
  1072. package/dist/src/infra/brew.js +0 -2
  1073. package/dist/src/infra/bus/queue.js +0 -2
  1074. package/dist/src/infra/debounce.js +0 -2
  1075. package/dist/src/infra/exec.js +0 -2
  1076. package/dist/src/infra/gateway-process-argv.js +0 -2
  1077. package/dist/src/infra/gateway-processes.js +0 -2
  1078. package/dist/src/infra/host-env-security-policy.js +0 -2
  1079. package/dist/src/infra/host-env-security.js +0 -2
  1080. package/dist/src/infra/http-proxy-env.js +0 -2
  1081. package/dist/src/infra/is-main.js +0 -2
  1082. package/dist/src/infra/json-utf8-bytes.js +0 -2
  1083. package/dist/src/infra/node-sqlite.js +0 -2
  1084. package/dist/src/infra/package-json.js +0 -2
  1085. package/dist/src/infra/package-update-steps.js +0 -2
  1086. package/dist/src/infra/path-env.js +0 -2
  1087. package/dist/src/infra/path-prepend.js +0 -2
  1088. package/dist/src/infra/ports.js +0 -2
  1089. package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
  1090. package/dist/src/infra/rate-limit/keyed-store.js +0 -2
  1091. package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
  1092. package/dist/src/infra/restart.js +0 -2
  1093. package/dist/src/infra/retry.js +0 -2
  1094. package/dist/src/infra/run-command.js +0 -2
  1095. package/dist/src/infra/sqlite-errors.js +0 -2
  1096. package/dist/src/infra/ssh-tunnel.js +0 -2
  1097. package/dist/src/infra/stable-node-path.js +0 -2
  1098. package/dist/src/infra/tailscale.js +0 -2
  1099. package/dist/src/infra/undici-fetch.js +0 -2
  1100. package/dist/src/infra/unhandled-rejections.js +0 -2
  1101. package/dist/src/infra/update-channels.js +0 -2
  1102. package/dist/src/infra/update-check.js +0 -2
  1103. package/dist/src/infra/update-global.js +0 -2
  1104. package/dist/src/infra/update-lock.js +0 -2
  1105. package/dist/src/infra/update-log.js +0 -2
  1106. package/dist/src/infra/update-restart.js +0 -2
  1107. package/dist/src/infra/update-runner.js +0 -2
  1108. package/dist/src/infra/update-startup.js +0 -2
  1109. package/dist/src/infra/warning-filter.js +0 -2
  1110. package/dist/src/infra/write-file-atomic.js +0 -2
  1111. package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
  1112. package/dist/src/knowledge/coordinator.js +0 -2
  1113. package/dist/src/knowledge/ingestion-service.js +0 -2
  1114. package/dist/src/local-apps/acceptance.js +0 -2
  1115. package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
  1116. package/dist/src/local-apps/runtime-entry.js +0 -2
  1117. package/dist/src/local-apps/scaffold.js +0 -2
  1118. package/dist/src/local-apps/service.js +0 -2
  1119. package/dist/src/local-apps/store.js +0 -2
  1120. package/dist/src/markdown/chunk.js +0 -2
  1121. package/dist/src/markdown/code-spans.js +0 -2
  1122. package/dist/src/markdown/fences.js +0 -2
  1123. package/dist/src/markdown/frontmatter.js +0 -2
  1124. package/dist/src/markdown/ir.js +0 -2
  1125. package/dist/src/markdown/render.js +0 -2
  1126. package/dist/src/markdown/tables.js +0 -2
  1127. package/dist/src/mcp/channel-bridge.js +0 -2
  1128. package/dist/src/mcp/channel-server.js +0 -2
  1129. package/dist/src/mcp/channel-shared.js +0 -2
  1130. package/dist/src/mcp/channel-tools.js +0 -2
  1131. package/dist/src/mcp/gateway-http-client.js +0 -2
  1132. package/dist/src/media/media-reference.js +0 -2
  1133. package/dist/src/media/paths.js +0 -2
  1134. package/dist/src/media/session-references.js +0 -2
  1135. package/dist/src/media/store.js +0 -2
  1136. package/dist/src/media/uri.js +0 -2
  1137. package/dist/src/media-shared/http/api-key-rotation.js +0 -2
  1138. package/dist/src/media-shared/http/deadline.js +0 -2
  1139. package/dist/src/media-shared/http/private-network.js +0 -2
  1140. package/dist/src/media-shared/http/provider-http-errors.js +0 -2
  1141. package/dist/src/media-shared/http/provider-http.js +0 -2
  1142. package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
  1143. package/dist/src/media-shared/http/ssrf-guard.js +0 -2
  1144. package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
  1145. package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
  1146. package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
  1147. package/dist/src/media-understanding/registry.js +0 -2
  1148. package/dist/src/media-understanding/resolve-entries.js +0 -2
  1149. package/dist/src/media-understanding/runner.js +0 -2
  1150. package/dist/src/migrations/config/default-capability-preset.js +0 -2
  1151. package/dist/src/migrations/registry.js +0 -2
  1152. package/dist/src/migrations/runner.js +0 -2
  1153. package/dist/src/mobile/notification-service.js +0 -2
  1154. package/dist/src/mobile/notification-store.js +0 -2
  1155. package/dist/src/mobile/notification-types.js +0 -2
  1156. package/dist/src/notes/agent-context.js +0 -2
  1157. package/dist/src/notes/attachment-ref.js +0 -2
  1158. package/dist/src/notes/note-attachment-sync.js +0 -2
  1159. package/dist/src/notes/note-index-meta.js +0 -2
  1160. package/dist/src/notes/note-markdown.js +0 -2
  1161. package/dist/src/notes/paths.js +0 -2
  1162. package/dist/src/notes/service.d.ts +3 -1
  1163. package/dist/src/notes/service.js +19 -5
  1164. package/dist/src/notes/store.js +0 -2
  1165. package/dist/src/package-version.js +0 -2
  1166. package/dist/src/pets/factory.d.ts +13 -0
  1167. package/dist/src/pets/factory.js +23 -2
  1168. package/dist/src/pets/manifest.js +0 -2
  1169. package/dist/src/pets/validator.js +0 -2
  1170. package/dist/src/process/kill-tree.js +0 -2
  1171. package/dist/src/project-trust/trust-store.js +0 -2
  1172. package/dist/src/projects/automation-bind.js +0 -2
  1173. package/dist/src/projects/goal-bind.js +0 -2
  1174. package/dist/src/projects/memory-bind.js +0 -2
  1175. package/dist/src/projects/project-agent-suggestion.js +0 -2
  1176. package/dist/src/projects/project-agent.js +0 -2
  1177. package/dist/src/projects/project-kind.js +0 -2
  1178. package/dist/src/projects/project-loop.js +0 -2
  1179. package/dist/src/projects/project-service.js +0 -2
  1180. package/dist/src/projects/project-store.js +0 -2
  1181. package/dist/src/projects/session-bind.js +0 -2
  1182. package/dist/src/projects/workflow-bind.js +0 -2
  1183. package/dist/src/projects/workspace-project.js +0 -2
  1184. package/dist/src/projects/workspace.js +0 -2
  1185. package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
  1186. package/dist/src/providers/auth-runtime/is-configured.js +0 -2
  1187. package/dist/src/providers/auth-runtime/oauth.js +0 -2
  1188. package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
  1189. package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
  1190. package/dist/src/providers/constants.js +0 -2
  1191. package/dist/src/providers/domestic-presets.js +0 -2
  1192. package/dist/src/providers/env-keys.js +0 -2
  1193. package/dist/src/providers/extension-stream-bridge.js +0 -2
  1194. package/dist/src/providers/index.js +0 -2
  1195. package/dist/src/providers/model-call.js +0 -2
  1196. package/dist/src/providers/model-discovery.js +0 -2
  1197. package/dist/src/providers/model-registry.js +0 -2
  1198. package/dist/src/providers/model-supplements.js +0 -2
  1199. package/dist/src/providers/plugin-registry.js +0 -2
  1200. package/dist/src/providers/presentation.js +0 -2
  1201. package/dist/src/remote-access/exposure-guards.js +0 -2
  1202. package/dist/src/remote-access/exposure-manager.js +0 -2
  1203. package/dist/src/review/review-git.js +0 -2
  1204. package/dist/src/review/review-types.js +0 -2
  1205. package/dist/src/routing/account-id.js +0 -2
  1206. package/dist/src/routing/agent-session-key.js +0 -2
  1207. package/dist/src/routing/bindings.js +0 -2
  1208. package/dist/src/routing/index.js +0 -2
  1209. package/dist/src/routing/resolve-route.js +0 -2
  1210. package/dist/src/routing/resolve-tui-session-key.js +0 -2
  1211. package/dist/src/routing/session-key-utils.js +0 -2
  1212. package/dist/src/routing/session-key.js +0 -2
  1213. package/dist/src/session/abort-cutoff.js +0 -2
  1214. package/dist/src/session/chat-export.js +0 -2
  1215. package/dist/src/session/client-history.js +0 -2
  1216. package/dist/src/session/compaction-checkpoints.js +0 -2
  1217. package/dist/src/session/config-store.js +0 -2
  1218. package/dist/src/session/init-session-turn.js +0 -2
  1219. package/dist/src/session/lifecycle-timestamps.js +0 -2
  1220. package/dist/src/session/load-jsonl-entries.js +0 -2
  1221. package/dist/src/session/manager.js +0 -2
  1222. package/dist/src/session/patch-metadata.js +0 -2
  1223. package/dist/src/session/reset-policy.js +0 -2
  1224. package/dist/src/session/reset-triggers.js +0 -2
  1225. package/dist/src/session/reset-type.js +0 -2
  1226. package/dist/src/session/resolve-session.js +0 -2
  1227. package/dist/src/session/session-context-for-llm.js +0 -2
  1228. package/dist/src/session/session-id.js +0 -2
  1229. package/dist/src/session/session-title.js +0 -2
  1230. package/dist/src/session/session-workspace.js +0 -2
  1231. package/dist/src/session/store.js +0 -2
  1232. package/dist/src/session/stored-rows-to-file-entries.js +0 -2
  1233. package/dist/src/session/thinking-resolve.js +0 -2
  1234. package/dist/src/session/transcript-events.js +0 -2
  1235. package/dist/src/session/transcript-format.js +0 -2
  1236. package/dist/src/session/transcript-outline.js +0 -2
  1237. package/dist/src/session/transcript-stats.js +0 -2
  1238. package/dist/src/session/types.js +0 -2
  1239. package/dist/src/session/user-round-delete.js +0 -2
  1240. package/dist/src/share/share-audit.js +0 -2
  1241. package/dist/src/share/share-auto.js +0 -2
  1242. package/dist/src/share/share-config.js +0 -2
  1243. package/dist/src/share/share-landing.js +0 -2
  1244. package/dist/src/share/share-rate-limit.js +0 -2
  1245. package/dist/src/share/share-store.js +0 -2
  1246. package/dist/src/share/share-thumbnail.js +0 -2
  1247. package/dist/src/share/share-types.js +0 -2
  1248. package/dist/src/share/share-url.js +0 -2
  1249. package/dist/src/share/share-zip.js +0 -2
  1250. package/dist/src/share/site-proxy.js +0 -2
  1251. package/dist/src/share/site-share-config.js +0 -2
  1252. package/dist/src/share/site-share-router.js +0 -2
  1253. package/dist/src/share/site-share-store.js +0 -2
  1254. package/dist/src/share/site-share-types.js +0 -2
  1255. package/dist/src/share/site-static-serve.js +0 -2
  1256. package/dist/src/storage/sqlite/activity-repository.js +0 -2
  1257. package/dist/src/storage/sqlite/config-repository.js +0 -2
  1258. package/dist/src/storage/sqlite/connection.js +0 -2
  1259. package/dist/src/storage/sqlite/connector-repository.js +0 -2
  1260. package/dist/src/storage/sqlite/fts.js +0 -2
  1261. package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
  1262. package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
  1263. package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
  1264. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
  1265. package/dist/src/storage/sqlite/migrations/discover.js +0 -2
  1266. package/dist/src/storage/sqlite/migrations/errors.js +0 -2
  1267. package/dist/src/storage/sqlite/migrations/runner.js +0 -2
  1268. package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
  1269. package/dist/src/storage/sqlite/notes-repository.js +0 -2
  1270. package/dist/src/storage/sqlite/paths.js +0 -2
  1271. package/dist/src/storage/sqlite/row-mappers.js +0 -2
  1272. package/dist/src/storage/sqlite/schema-version.js +0 -2
  1273. package/dist/src/storage/sqlite/schema.js +0 -2
  1274. package/dist/src/storage/sqlite/session-metadata.js +0 -2
  1275. package/dist/src/storage/sqlite/session-repository.js +0 -2
  1276. package/dist/src/storage/sqlite/transaction.js +0 -2
  1277. package/dist/src/storage/sqlite/transcript-repository.js +0 -2
  1278. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
  1279. package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
  1280. package/dist/src/tui/backends/embedded-backend.js +0 -2
  1281. package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
  1282. package/dist/src/tui/chat-history.js +0 -2
  1283. package/dist/src/tui/clipboard-image.js +0 -2
  1284. package/dist/src/tui/clipboard-text.js +0 -2
  1285. package/dist/src/tui/components/assistant-message.js +0 -2
  1286. package/dist/src/tui/components/bash-execution.js +0 -2
  1287. package/dist/src/tui/components/bash-summary.js +0 -2
  1288. package/dist/src/tui/components/branch-message-summary.js +0 -2
  1289. package/dist/src/tui/components/branch-summary.js +0 -2
  1290. package/dist/src/tui/components/chat-log.js +0 -2
  1291. package/dist/src/tui/components/compaction-summary.js +0 -2
  1292. package/dist/src/tui/components/custom-editor.js +0 -2
  1293. package/dist/src/tui/components/custom-message.js +0 -2
  1294. package/dist/src/tui/components/dynamic-border.js +0 -2
  1295. package/dist/src/tui/components/extension-dialog.js +0 -2
  1296. package/dist/src/tui/components/fuzzy-filter.js +0 -2
  1297. package/dist/src/tui/components/scoped-models-selector.js +0 -2
  1298. package/dist/src/tui/components/searchable-select-list.js +0 -2
  1299. package/dist/src/tui/components/session-selector.js +0 -2
  1300. package/dist/src/tui/components/settings-selector.js +0 -2
  1301. package/dist/src/tui/components/thinking-selector.js +0 -2
  1302. package/dist/src/tui/components/tool-execution.js +0 -2
  1303. package/dist/src/tui/components/tui-bottom-bar.js +0 -2
  1304. package/dist/src/tui/components/tui-header.js +0 -2
  1305. package/dist/src/tui/components/user-message.js +0 -2
  1306. package/dist/src/tui/components/visual-truncate.js +0 -2
  1307. package/dist/src/tui/extension-host/autocomplete.js +0 -2
  1308. package/dist/src/tui/extension-host/host.js +0 -2
  1309. package/dist/src/tui/extension-host/load-extensions.js +0 -2
  1310. package/dist/src/tui/extension-host/runtime-context.js +0 -2
  1311. package/dist/src/tui/extension-host/runtime.js +0 -2
  1312. package/dist/src/tui/extension-host/surface.js +0 -2
  1313. package/dist/src/tui/extension-host/tool-renderers.js +0 -2
  1314. package/dist/src/tui/format-tui-hotkeys.js +0 -2
  1315. package/dist/src/tui/sse-consumer.js +0 -2
  1316. package/dist/src/tui/theme/dark.js +0 -2
  1317. package/dist/src/tui/theme/light.js +0 -2
  1318. package/dist/src/tui/theme-manager.js +0 -2
  1319. package/dist/src/tui/theme.js +0 -2
  1320. package/dist/src/tui/tool-summary.js +0 -2
  1321. package/dist/src/tui/tui-agent-events.js +0 -2
  1322. package/dist/src/tui/tui-command-formatters.js +0 -2
  1323. package/dist/src/tui/tui-commands.js +0 -2
  1324. package/dist/src/tui/tui-context-usage.js +0 -2
  1325. package/dist/src/tui/tui-extension-user-message.js +0 -2
  1326. package/dist/src/tui/tui-fd-path.js +0 -2
  1327. package/dist/src/tui/tui-file-autocomplete.js +0 -2
  1328. package/dist/src/tui/tui-follow-up-queue.js +0 -2
  1329. package/dist/src/tui/tui-git-branch.js +0 -2
  1330. package/dist/src/tui/tui-keybindings-file.js +0 -2
  1331. package/dist/src/tui/tui-lifecycle.js +0 -2
  1332. package/dist/src/tui/tui-local-shell.js +0 -2
  1333. package/dist/src/tui/tui-model-picker.js +0 -2
  1334. package/dist/src/tui/tui-oauth-login.js +0 -2
  1335. package/dist/src/tui/tui-overlays.js +0 -2
  1336. package/dist/src/tui/tui-picker-overlay.js +0 -2
  1337. package/dist/src/tui/tui-run-state.js +0 -2
  1338. package/dist/src/tui/tui-run-status-format.js +0 -2
  1339. package/dist/src/tui/tui-runtime-hints.js +0 -2
  1340. package/dist/src/tui/tui-scoped-models.js +0 -2
  1341. package/dist/src/tui/tui-session-actions.js +0 -2
  1342. package/dist/src/tui/tui-session-format.js +0 -2
  1343. package/dist/src/tui/tui-session-snapshot.js +0 -2
  1344. package/dist/src/tui/tui-session-stats.js +0 -2
  1345. package/dist/src/tui/tui-settings.js +0 -2
  1346. package/dist/src/tui/tui-skills-autocomplete.js +0 -2
  1347. package/dist/src/tui/tui-startup-resources.js +0 -2
  1348. package/dist/src/tui/tui-startup-text.js +0 -2
  1349. package/dist/src/tui/tui-stdio-filter.js +0 -2
  1350. package/dist/src/tui/tui-submit.js +0 -2
  1351. package/dist/src/tui/tui-suspend.js +0 -2
  1352. package/dist/src/tui/tui-timeline-picker.js +0 -2
  1353. package/dist/src/tui/tui-timeline.js +0 -2
  1354. package/dist/src/tui/tui-tool-diff.js +0 -2
  1355. package/dist/src/tui/tui-tool-result.js +0 -2
  1356. package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
  1357. package/dist/src/tui/tui-transcript-tree.js +0 -2
  1358. package/dist/src/tui/tui-types.js +0 -2
  1359. package/dist/src/tui/tui-workflow-slash.js +0 -2
  1360. package/dist/src/tui/tui.js +0 -2
  1361. package/dist/src/tui/xopc-tui-keybindings.js +0 -2
  1362. package/dist/src/tunnel/broker-client.js +0 -2
  1363. package/dist/src/tunnel/consent.js +0 -2
  1364. package/dist/src/tunnel/enable-lan-pairing.js +0 -2
  1365. package/dist/src/tunnel/env.js +0 -2
  1366. package/dist/src/tunnel/frp-subdomain-host.js +0 -2
  1367. package/dist/src/tunnel/frpc-binary.js +0 -2
  1368. package/dist/src/tunnel/frpc-config.js +0 -2
  1369. package/dist/src/tunnel/frpc-extract.js +0 -2
  1370. package/dist/src/tunnel/frpc-process.js +0 -2
  1371. package/dist/src/tunnel/gateway-lifecycle.js +0 -2
  1372. package/dist/src/tunnel/pair-context.js +0 -2
  1373. package/dist/src/tunnel/pair-url.js +0 -2
  1374. package/dist/src/tunnel/pairing-rate-limit.js +0 -2
  1375. package/dist/src/tunnel/pairing.js +0 -2
  1376. package/dist/src/tunnel/tunnel-audit.js +0 -2
  1377. package/dist/src/tunnel/tunnel-config.js +0 -2
  1378. package/dist/src/tunnel/tunnel-persist.js +0 -2
  1379. package/dist/src/tunnel/tunnel-qr.js +0 -2
  1380. package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
  1381. package/dist/src/tunnel/tunnel-service.js +0 -2
  1382. package/dist/src/tunnel/tunnel-state.js +0 -2
  1383. package/dist/src/tunnel/well-known.js +0 -2
  1384. package/dist/src/user-context/config.js +0 -2
  1385. package/dist/src/user-context/import.js +0 -2
  1386. package/dist/src/user-context/owner.js +0 -2
  1387. package/dist/src/user-context/profile.js +0 -2
  1388. package/dist/src/user-context/projection.js +0 -2
  1389. package/dist/src/user-context/runtime.js +0 -2
  1390. package/dist/src/user-context/source-recommendations.js +0 -2
  1391. package/dist/src/user-context/trust-policy.js +0 -2
  1392. package/dist/src/utils/global-singleton.js +0 -2
  1393. package/dist/src/utils/helpers.js +0 -2
  1394. package/dist/src/utils/index.js +0 -2
  1395. package/dist/src/utils/is-record.js +0 -2
  1396. package/dist/src/utils/logger/audit.js +0 -2
  1397. package/dist/src/utils/logger/config.js +0 -2
  1398. package/dist/src/utils/logger/context.js +0 -2
  1399. package/dist/src/utils/logger/exporters.js +0 -2
  1400. package/dist/src/utils/logger/index.js +0 -2
  1401. package/dist/src/utils/logger/log-store.js +0 -2
  1402. package/dist/src/utils/logger/log-stream.js +0 -2
  1403. package/dist/src/utils/logger/pino-record.js +0 -2
  1404. package/dist/src/utils/logger/redact.js +0 -2
  1405. package/dist/src/utils/logger/rotation.js +0 -2
  1406. package/dist/src/utils/logger/shutdown.js +0 -2
  1407. package/dist/src/utils/logger/stats.js +0 -2
  1408. package/dist/src/utils/logger/streams.js +0 -2
  1409. package/dist/src/utils/logger/types.js +0 -2
  1410. package/dist/src/utils/logger.js +0 -2
  1411. package/dist/src/utils/redact-sensitive-url.js +0 -2
  1412. package/dist/src/utils/sanitize-log.js +0 -2
  1413. package/dist/src/utils/string-coerce.js +0 -2
  1414. package/dist/src/voice/language-profile.js +0 -2
  1415. package/dist/src/voice/local/model-files.js +0 -2
  1416. package/dist/src/voice/local/model-manager.js +0 -2
  1417. package/dist/src/voice/local/models.js +0 -2
  1418. package/dist/src/voice/local/runtime-client.js +0 -2
  1419. package/dist/src/voice/local/runtime-dispatcher.js +0 -2
  1420. package/dist/src/voice/local/runtime-worker.js +12 -4
  1421. package/dist/src/voice/local/wav.js +0 -2
  1422. package/dist/src/voice/metadata/builtin.js +0 -2
  1423. package/dist/src/voice/metadata/registry.js +0 -2
  1424. package/dist/src/voice/stt/availability.js +0 -2
  1425. package/dist/src/voice/stt/config-slice.js +0 -2
  1426. package/dist/src/voice/stt/factory.js +0 -2
  1427. package/dist/src/voice/stt/index.js +0 -2
  1428. package/dist/src/voice/stt/list-providers.js +0 -2
  1429. package/dist/src/voice/stt/mention.js +0 -2
  1430. package/dist/src/voice/stt/preflight.js +0 -2
  1431. package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
  1432. package/dist/src/voice/stt/providers/local-transcription.js +0 -2
  1433. package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
  1434. package/dist/src/voice/stt/transcribe-core.js +0 -2
  1435. package/dist/src/voice/stt/types.js +0 -2
  1436. package/dist/src/voice/tts/audio.js +0 -2
  1437. package/dist/src/voice/tts/config-slice.js +0 -2
  1438. package/dist/src/voice/tts/directives.js +0 -2
  1439. package/dist/src/voice/tts/factory.js +0 -2
  1440. package/dist/src/voice/tts/list-providers.js +0 -2
  1441. package/dist/src/voice/tts/merge-config.js +0 -2
  1442. package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
  1443. package/dist/src/voice/tts/payload.js +0 -2
  1444. package/dist/src/voice/tts/preprocess.js +0 -2
  1445. package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
  1446. package/dist/src/voice/tts/providers/edge-speech.js +0 -2
  1447. package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
  1448. package/dist/src/voice/tts/providers/openai-speech.js +0 -2
  1449. package/dist/src/voice/tts/sentence-boundary.js +0 -2
  1450. package/dist/src/voice/tts/service.js +0 -2
  1451. package/dist/src/voice/tts/speak-core.js +0 -2
  1452. package/dist/src/voice/tts/speech-registry.js +0 -2
  1453. package/dist/src/voice/tts/status-tracker.js +0 -2
  1454. package/dist/src/voice/tts/summarize.js +0 -2
  1455. package/dist/src/voice/tts/types.js +0 -2
  1456. package/dist/src/work-discovery/analyzer.js +0 -2
  1457. package/dist/src/work-discovery/probe.js +0 -2
  1458. package/dist/src/work-discovery/repository.js +0 -2
  1459. package/dist/src/work-discovery/service.js +0 -2
  1460. package/dist/src/work-items/agent-context.js +0 -2
  1461. package/dist/src/work-items/work-item-service.js +0 -2
  1462. package/dist/src/work-items/work-item-store.js +0 -2
  1463. package/dist/src/work-items/work-item-workflow-judge.js +0 -2
  1464. package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
  1465. package/dist/src/workflows/domain/definition-utils.js +0 -2
  1466. package/dist/src/workflows/domain/run.js +0 -2
  1467. package/dist/src/workflows/domain/schema-validation.js +0 -2
  1468. package/dist/src/workflows/domain/validation.js +0 -2
  1469. package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
  1470. package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
  1471. package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
  1472. package/dist/src/workflows/engine/projector.js +0 -2
  1473. package/dist/src/workflows/engine/workflow-engine.js +0 -2
  1474. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
  1475. package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
  1476. package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
  1477. package/dist/src/workflows/service/workflow-run-service.js +1 -3
  1478. package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
  1479. package/dist/src/workflows/service/workflow-session-key.js +0 -2
  1480. package/dist/src/workflows/store/event-store.js +0 -2
  1481. package/dist/src/workflows/store/paths.js +0 -2
  1482. package/dist/src/workflows/store/run-index-store.js +0 -2
  1483. package/dist/src/workflows/store/run-store.js +0 -2
  1484. package/package.json +41 -11
  1485. package/skills/creative/hatch-pet/SKILL.md +1 -0
  1486. package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
  1487. package/dist/extensions/demo-memory/src/index.js.map +0 -1
  1488. package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
  1489. package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
  1490. package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
  1491. package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
  1492. package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
  1493. package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
  1494. package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
  1495. package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
  1496. package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
  1497. package/dist/extensions/feishu/src/format.js.map +0 -1
  1498. package/dist/extensions/feishu/src/index.js.map +0 -1
  1499. package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
  1500. package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
  1501. package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
  1502. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
  1503. package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
  1504. package/dist/extensions/feishu/src/plugin.js.map +0 -1
  1505. package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
  1506. package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
  1507. package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
  1508. package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
  1509. package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
  1510. package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
  1511. package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
  1512. package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
  1513. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
  1514. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
  1515. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
  1516. package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
  1517. package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
  1518. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
  1519. package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
  1520. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
  1521. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
  1522. package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
  1523. package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
  1524. package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
  1525. package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
  1526. package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
  1527. package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
  1528. package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
  1529. package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
  1530. package/dist/extensions/telegram/src/access-control.js.map +0 -1
  1531. package/dist/extensions/telegram/src/account-manager.js.map +0 -1
  1532. package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
  1533. package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
  1534. package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
  1535. package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
  1536. package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
  1537. package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
  1538. package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
  1539. package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
  1540. package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
  1541. package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
  1542. package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
  1543. package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
  1544. package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
  1545. package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
  1546. package/dist/extensions/telegram/src/api-root.js.map +0 -1
  1547. package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
  1548. package/dist/extensions/telegram/src/approval-store.js.map +0 -1
  1549. package/dist/extensions/telegram/src/caption.js.map +0 -1
  1550. package/dist/extensions/telegram/src/command-handler.js.map +0 -1
  1551. package/dist/extensions/telegram/src/config-schema.js.map +0 -1
  1552. package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
  1553. package/dist/extensions/telegram/src/dedupe.js.map +0 -1
  1554. package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
  1555. package/dist/extensions/telegram/src/doctor.js.map +0 -1
  1556. package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
  1557. package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
  1558. package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
  1559. package/dist/extensions/telegram/src/errors.js.map +0 -1
  1560. package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
  1561. package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
  1562. package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
  1563. package/dist/extensions/telegram/src/format.js.map +0 -1
  1564. package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
  1565. package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
  1566. package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
  1567. package/dist/extensions/telegram/src/index.js.map +0 -1
  1568. package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
  1569. package/dist/extensions/telegram/src/network-errors.js.map +0 -1
  1570. package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
  1571. package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
  1572. package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
  1573. package/dist/extensions/telegram/src/plugin.js.map +0 -1
  1574. package/dist/extensions/telegram/src/polling-session.js.map +0 -1
  1575. package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
  1576. package/dist/extensions/telegram/src/reactions.js.map +0 -1
  1577. package/dist/extensions/telegram/src/reply-params.js.map +0 -1
  1578. package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
  1579. package/dist/extensions/telegram/src/send-options.js.map +0 -1
  1580. package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
  1581. package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
  1582. package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
  1583. package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
  1584. package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
  1585. package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
  1586. package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
  1587. package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
  1588. package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
  1589. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
  1590. package/dist/extensions/weixin/src/api/api.js.map +0 -1
  1591. package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
  1592. package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
  1593. package/dist/extensions/weixin/src/api/types.js.map +0 -1
  1594. package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
  1595. package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
  1596. package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
  1597. package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
  1598. package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
  1599. package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
  1600. package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
  1601. package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
  1602. package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
  1603. package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
  1604. package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
  1605. package/dist/extensions/weixin/src/config-schema.js.map +0 -1
  1606. package/dist/extensions/weixin/src/config-surface.js.map +0 -1
  1607. package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
  1608. package/dist/extensions/weixin/src/index.js.map +0 -1
  1609. package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
  1610. package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
  1611. package/dist/extensions/weixin/src/media/mime.js.map +0 -1
  1612. package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
  1613. package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
  1614. package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
  1615. package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
  1616. package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
  1617. package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
  1618. package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
  1619. package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
  1620. package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
  1621. package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
  1622. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
  1623. package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
  1624. package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
  1625. package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
  1626. package/dist/extensions/weixin/src/plugin.js.map +0 -1
  1627. package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
  1628. package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
  1629. package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
  1630. package/dist/extensions/weixin/src/util/logger.js.map +0 -1
  1631. package/dist/extensions/weixin/src/util/random.js.map +0 -1
  1632. package/dist/extensions/weixin/src/util/redact.js.map +0 -1
  1633. package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
  1634. package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
  1635. package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
  1636. package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
  1637. package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
  1638. package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
  1639. package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
  1640. package/dist/gateway/static/root/favicon-icon.svg +0 -187
  1641. package/dist/package.js.map +0 -1
  1642. package/dist/src/activity/context.js.map +0 -1
  1643. package/dist/src/activity/emitter.js.map +0 -1
  1644. package/dist/src/activity/service.js.map +0 -1
  1645. package/dist/src/agent/agent-manager.js.map +0 -1
  1646. package/dist/src/agent/agent-scope.js.map +0 -1
  1647. package/dist/src/agent/background-review/coordinator.js.map +0 -1
  1648. package/dist/src/agent/background-review/prompts.js.map +0 -1
  1649. package/dist/src/agent/background-review/run-background-review.js.map +0 -1
  1650. package/dist/src/agent/background-review/settings.js.map +0 -1
  1651. package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
  1652. package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
  1653. package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
  1654. package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
  1655. package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
  1656. package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
  1657. package/dist/src/agent/capabilities/definitions.js.map +0 -1
  1658. package/dist/src/agent/capabilities/registry.js.map +0 -1
  1659. package/dist/src/agent/child-agent-factory.js.map +0 -1
  1660. package/dist/src/agent/client-error-format.js.map +0 -1
  1661. package/dist/src/agent/code-intelligence/binary.js.map +0 -1
  1662. package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
  1663. package/dist/src/agent/code-intelligence/tools.js.map +0 -1
  1664. package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
  1665. package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
  1666. package/dist/src/agent/context/project-context.js.map +0 -1
  1667. package/dist/src/agent/context/workspace-seed.js.map +0 -1
  1668. package/dist/src/agent/context/workspace-state.js.map +0 -1
  1669. package/dist/src/agent/context/workspace.js.map +0 -1
  1670. package/dist/src/agent/embedded/run-for-session.js.map +0 -1
  1671. package/dist/src/agent/embedded/run-turn.js.map +0 -1
  1672. package/dist/src/agent/embedded/runs.js.map +0 -1
  1673. package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
  1674. package/dist/src/agent/embedded/session-runner.js.map +0 -1
  1675. package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
  1676. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
  1677. package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
  1678. package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
  1679. package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
  1680. package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
  1681. package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
  1682. package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
  1683. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
  1684. package/dist/src/agent/failover-error.js.map +0 -1
  1685. package/dist/src/agent/fallback/candidates.js.map +0 -1
  1686. package/dist/src/agent/fallback/reason.js.map +0 -1
  1687. package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
  1688. package/dist/src/agent/goals/checklist-judge.js.map +0 -1
  1689. package/dist/src/agent/goals/checklist-types.js.map +0 -1
  1690. package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
  1691. package/dist/src/agent/goals/goal-locale.js.map +0 -1
  1692. package/dist/src/agent/goals/judge.js.map +0 -1
  1693. package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
  1694. package/dist/src/agent/goals/post-turn.js.map +0 -1
  1695. package/dist/src/agent/goals/state.js.map +0 -1
  1696. package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
  1697. package/dist/src/agent/image/generation/bundled.js.map +0 -1
  1698. package/dist/src/agent/image/generation/image-assets.js.map +0 -1
  1699. package/dist/src/agent/image/generation/model-ref.js.map +0 -1
  1700. package/dist/src/agent/image/generation/normalization.js.map +0 -1
  1701. package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
  1702. package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
  1703. package/dist/src/agent/image/generation/runtime.js.map +0 -1
  1704. package/dist/src/agent/image/image-helpers.js.map +0 -1
  1705. package/dist/src/agent/image/image-model-fallback.js.map +0 -1
  1706. package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
  1707. package/dist/src/agent/image/load-image-media.js.map +0 -1
  1708. package/dist/src/agent/image/tool-model-config.js.map +0 -1
  1709. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
  1710. package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
  1711. package/dist/src/agent/image/understanding/runtime.js.map +0 -1
  1712. package/dist/src/agent/image/vision-detection.js.map +0 -1
  1713. package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
  1714. package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
  1715. package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
  1716. package/dist/src/agent/ipc/bus.js.map +0 -1
  1717. package/dist/src/agent/ipc/inbox.js.map +0 -1
  1718. package/dist/src/agent/ipc/socket.js.map +0 -1
  1719. package/dist/src/agent/ipc/types.js.map +0 -1
  1720. package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
  1721. package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
  1722. package/dist/src/agent/lifecycle/manager.js.map +0 -1
  1723. package/dist/src/agent/lifecycle/progress.js.map +0 -1
  1724. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
  1725. package/dist/src/agent/lifecycle/typing.js.map +0 -1
  1726. package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
  1727. package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
  1728. package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
  1729. package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
  1730. package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
  1731. package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
  1732. package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
  1733. package/dist/src/agent/mcp/mcp-http.js.map +0 -1
  1734. package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
  1735. package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
  1736. package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
  1737. package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
  1738. package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
  1739. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
  1740. package/dist/src/agent/media-generation/model-ref.js.map +0 -1
  1741. package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
  1742. package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
  1743. package/dist/src/agent/memory/agent-message-access.js.map +0 -1
  1744. package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
  1745. package/dist/src/agent/memory/builtin-provider.js.map +0 -1
  1746. package/dist/src/agent/memory/compaction.js.map +0 -1
  1747. package/dist/src/agent/memory/context/planner.js.map +0 -1
  1748. package/dist/src/agent/memory/context-fence.js.map +0 -1
  1749. package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
  1750. package/dist/src/agent/memory/dreaming/config.js.map +0 -1
  1751. package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
  1752. package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
  1753. package/dist/src/agent/memory/dreaming/events.js.map +0 -1
  1754. package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
  1755. package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
  1756. package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
  1757. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
  1758. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
  1759. package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
  1760. package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
  1761. package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
  1762. package/dist/src/agent/memory/lifecycle.js.map +0 -1
  1763. package/dist/src/agent/memory/manager.js.map +0 -1
  1764. package/dist/src/agent/memory/memory-config.js.map +0 -1
  1765. package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
  1766. package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
  1767. package/dist/src/agent/memory/sensitivity.js.map +0 -1
  1768. package/dist/src/agent/memory/source-origin.js.map +0 -1
  1769. package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
  1770. package/dist/src/agent/memory/summary-generator.js.map +0 -1
  1771. package/dist/src/agent/memory/understanding/correction.js.map +0 -1
  1772. package/dist/src/agent/memory/understanding/quality.js.map +0 -1
  1773. package/dist/src/agent/memory/understanding/service.js.map +0 -1
  1774. package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
  1775. package/dist/src/agent/memory/user-message-text.js.map +0 -1
  1776. package/dist/src/agent/memory/window.js.map +0 -1
  1777. package/dist/src/agent/messaging/command-handler.js.map +0 -1
  1778. package/dist/src/agent/messaging/message-router.js.map +0 -1
  1779. package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
  1780. package/dist/src/agent/messaging/stream-manager.js.map +0 -1
  1781. package/dist/src/agent/middleware/context.js.map +0 -1
  1782. package/dist/src/agent/middleware/self-verify.js.map +0 -1
  1783. package/dist/src/agent/models/manager.js.map +0 -1
  1784. package/dist/src/agent/models/request-limiter.js.map +0 -1
  1785. package/dist/src/agent/models/selection.js.map +0 -1
  1786. package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
  1787. package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
  1788. package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
  1789. package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
  1790. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
  1791. package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
  1792. package/dist/src/agent/prompt/memory/index.js.map +0 -1
  1793. package/dist/src/agent/prompt/safety.js.map +0 -1
  1794. package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
  1795. package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
  1796. package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
  1797. package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
  1798. package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
  1799. package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
  1800. package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
  1801. package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
  1802. package/dist/src/agent/prompt/subagent-context.js.map +0 -1
  1803. package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
  1804. package/dist/src/agent/prompt/system-prompt.js.map +0 -1
  1805. package/dist/src/agent/prompt/system-reminder.js.map +0 -1
  1806. package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
  1807. package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
  1808. package/dist/src/agent/reply/startup-context.js.map +0 -1
  1809. package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
  1810. package/dist/src/agent/sandbox/command-validator.js.map +0 -1
  1811. package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
  1812. package/dist/src/agent/sandbox/path-policy.js.map +0 -1
  1813. package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
  1814. package/dist/src/agent/sandbox/types.js.map +0 -1
  1815. package/dist/src/agent/service/async-queue.js.map +0 -1
  1816. package/dist/src/agent/service/btw-query.js.map +0 -1
  1817. package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
  1818. package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
  1819. package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
  1820. package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
  1821. package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
  1822. package/dist/src/agent/service/session-context-report.js.map +0 -1
  1823. package/dist/src/agent/service/webchat-tts.js.map +0 -1
  1824. package/dist/src/agent/service-inbound-utils.js.map +0 -1
  1825. package/dist/src/agent/service.js.map +0 -1
  1826. package/dist/src/agent/session/session-config-service.js.map +0 -1
  1827. package/dist/src/agent/session/session-context.js.map +0 -1
  1828. package/dist/src/agent/session/session-hydrator.js.map +0 -1
  1829. package/dist/src/agent/session/session-inspector.js.map +0 -1
  1830. package/dist/src/agent/session/session-lifecycle.js.map +0 -1
  1831. package/dist/src/agent/session/session-state-bag.js.map +0 -1
  1832. package/dist/src/agent/session/tracker.js.map +0 -1
  1833. package/dist/src/agent/skills/config.js.map +0 -1
  1834. package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
  1835. package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
  1836. package/dist/src/agent/skills/hub-hash.js.map +0 -1
  1837. package/dist/src/agent/skills/hub-lock.js.map +0 -1
  1838. package/dist/src/agent/skills/hub-pull.js.map +0 -1
  1839. package/dist/src/agent/skills/index.js.map +0 -1
  1840. package/dist/src/agent/skills/install-target.js.map +0 -1
  1841. package/dist/src/agent/skills/installer.js.map +0 -1
  1842. package/dist/src/agent/skills/managed-store.js.map +0 -1
  1843. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
  1844. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
  1845. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
  1846. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
  1847. package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
  1848. package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
  1849. package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
  1850. package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
  1851. package/dist/src/agent/skills/required-env-vars.js.map +0 -1
  1852. package/dist/src/agent/skills/scanner.js.map +0 -1
  1853. package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
  1854. package/dist/src/agent/skills/skill-manager.js.map +0 -1
  1855. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
  1856. package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
  1857. package/dist/src/agent/skills/skill-view-path.js.map +0 -1
  1858. package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
  1859. package/dist/src/agent/skills/test-framework.js.map +0 -1
  1860. package/dist/src/agent/skills/watcher.js.map +0 -1
  1861. package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
  1862. package/dist/src/agent/source-context/injector.js.map +0 -1
  1863. package/dist/src/agent/source-context/types.js.map +0 -1
  1864. package/dist/src/agent/starter-agents.js.map +0 -1
  1865. package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
  1866. package/dist/src/agent/tool-manuals/browser.js.map +0 -1
  1867. package/dist/src/agent/tool-manuals/index.js.map +0 -1
  1868. package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
  1869. package/dist/src/agent/tools/apply-patch.js.map +0 -1
  1870. package/dist/src/agent/tools/automation-tool.js.map +0 -1
  1871. package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
  1872. package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
  1873. package/dist/src/agent/tools/chain-tracker.js.map +0 -1
  1874. package/dist/src/agent/tools/clarify-tool.js.map +0 -1
  1875. package/dist/src/agent/tools/cli-clarify.js.map +0 -1
  1876. package/dist/src/agent/tools/communication.js.map +0 -1
  1877. package/dist/src/agent/tools/composio-tool.js.map +0 -1
  1878. package/dist/src/agent/tools/concurrency.js.map +0 -1
  1879. package/dist/src/agent/tools/create-share-tool.js.map +0 -1
  1880. package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
  1881. package/dist/src/agent/tools/delegate-tool.js.map +0 -1
  1882. package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
  1883. package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
  1884. package/dist/src/agent/tools/edit-diff.js.map +0 -1
  1885. package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
  1886. package/dist/src/agent/tools/error-tracker.js.map +0 -1
  1887. package/dist/src/agent/tools/exec-command.js.map +0 -1
  1888. package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
  1889. package/dist/src/agent/tools/executor.js.map +0 -1
  1890. package/dist/src/agent/tools/factory.js.map +0 -1
  1891. package/dist/src/agent/tools/find.js.map +0 -1
  1892. package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
  1893. package/dist/src/agent/tools/goal-tool.js.map +0 -1
  1894. package/dist/src/agent/tools/grep.js.map +0 -1
  1895. package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
  1896. package/dist/src/agent/tools/image-tool.js.map +0 -1
  1897. package/dist/src/agent/tools/list-dir.js.map +0 -1
  1898. package/dist/src/agent/tools/media-read-tool.js.map +0 -1
  1899. package/dist/src/agent/tools/memory-tool.js.map +0 -1
  1900. package/dist/src/agent/tools/metadata.js.map +0 -1
  1901. package/dist/src/agent/tools/read.js.map +0 -1
  1902. package/dist/src/agent/tools/search/http.js.map +0 -1
  1903. package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
  1904. package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
  1905. package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
  1906. package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
  1907. package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
  1908. package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
  1909. package/dist/src/agent/tools/search/region.js.map +0 -1
  1910. package/dist/src/agent/tools/search/registry.js.map +0 -1
  1911. package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
  1912. package/dist/src/agent/tools/send-media.js.map +0 -1
  1913. package/dist/src/agent/tools/session-search-tool.js.map +0 -1
  1914. package/dist/src/agent/tools/session-status-tool.js.map +0 -1
  1915. package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
  1916. package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
  1917. package/dist/src/agent/tools/skills-tools.js.map +0 -1
  1918. package/dist/src/agent/tools/structured-output.js.map +0 -1
  1919. package/dist/src/agent/tools/todo-tool.js.map +0 -1
  1920. package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
  1921. package/dist/src/agent/tools/tool-paths.js.map +0 -1
  1922. package/dist/src/agent/tools/truncate.js.map +0 -1
  1923. package/dist/src/agent/tools/tts-tool.js.map +0 -1
  1924. package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
  1925. package/dist/src/agent/tools/url-safety.js.map +0 -1
  1926. package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
  1927. package/dist/src/agent/tools/web-extract.js.map +0 -1
  1928. package/dist/src/agent/tools/web.js.map +0 -1
  1929. package/dist/src/agent/tools/workflow-tool.js.map +0 -1
  1930. package/dist/src/agent/tools/write.js.map +0 -1
  1931. package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
  1932. package/dist/src/agent/transcript/google-api.js.map +0 -1
  1933. package/dist/src/agent/transcript/model-selection.js.map +0 -1
  1934. package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
  1935. package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
  1936. package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
  1937. package/dist/src/agent/transcript/thinking-types.js.map +0 -1
  1938. package/dist/src/agent/transcript/thinking.js.map +0 -1
  1939. package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
  1940. package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
  1941. package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
  1942. package/dist/src/agent/workflow/agent-progress.js.map +0 -1
  1943. package/dist/src/agent/workflow/builtins/index.js.map +0 -1
  1944. package/dist/src/agent/workflow/catalog.js.map +0 -1
  1945. package/dist/src/agent/workflow/progress-broker.js.map +0 -1
  1946. package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
  1947. package/dist/src/agent/workflow/snapshot.js.map +0 -1
  1948. package/dist/src/agent/workflow/step-labels.js.map +0 -1
  1949. package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
  1950. package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
  1951. package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
  1952. package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
  1953. package/dist/src/agent-manifest/index.js.map +0 -1
  1954. package/dist/src/agent-manifest/preset-chain.js.map +0 -1
  1955. package/dist/src/agent-manifest/prompt.js.map +0 -1
  1956. package/dist/src/agent-manifest/resolver.js.map +0 -1
  1957. package/dist/src/agent-manifest/schema.js.map +0 -1
  1958. package/dist/src/agent-manifest/validator.js.map +0 -1
  1959. package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
  1960. package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
  1961. package/dist/src/agent-runtime/model-router.js.map +0 -1
  1962. package/dist/src/agent-runtime/run-trace.js.map +0 -1
  1963. package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
  1964. package/dist/src/agent-runtime/tool-registry.js.map +0 -1
  1965. package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
  1966. package/dist/src/ai-assist/text-assist.js.map +0 -1
  1967. package/dist/src/auth/credentials.js.map +0 -1
  1968. package/dist/src/auth/index.js.map +0 -1
  1969. package/dist/src/auth/oauth/anthropic.js.map +0 -1
  1970. package/dist/src/auth/oauth/github-copilot.js.map +0 -1
  1971. package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
  1972. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
  1973. package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
  1974. package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
  1975. package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
  1976. package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
  1977. package/dist/src/auth/oauth/minimax.js.map +0 -1
  1978. package/dist/src/auth/oauth/openai-codex.js.map +0 -1
  1979. package/dist/src/auth/oauth/pkce.js.map +0 -1
  1980. package/dist/src/auth/profiles/oauth.js.map +0 -1
  1981. package/dist/src/auth/profiles/order.js.map +0 -1
  1982. package/dist/src/auth/profiles/profiles.js.map +0 -1
  1983. package/dist/src/auth/profiles/store.js.map +0 -1
  1984. package/dist/src/auth/sync-provider-auth.js.map +0 -1
  1985. package/dist/src/automations/api/routes.js.map +0 -1
  1986. package/dist/src/automations/domain/schedule.js.map +0 -1
  1987. package/dist/src/automations/domain/validation.js.map +0 -1
  1988. package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
  1989. package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
  1990. package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
  1991. package/dist/src/automations/product-events.js.map +0 -1
  1992. package/dist/src/automations/service/action-executor.js.map +0 -1
  1993. package/dist/src/automations/service/automation-service.js.map +0 -1
  1994. package/dist/src/automations/storage/automation-repository.js.map +0 -1
  1995. package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
  1996. package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
  1997. package/dist/src/browser/actions/registry.js.map +0 -1
  1998. package/dist/src/browser/backend-from-config.js.map +0 -1
  1999. package/dist/src/browser/browser-command-timeout.js.map +0 -1
  2000. package/dist/src/browser/cache-dir-policy.js.map +0 -1
  2001. package/dist/src/browser/cdp-local-launcher.js.map +0 -1
  2002. package/dist/src/browser/cdp-supervisor.js.map +0 -1
  2003. package/dist/src/browser/free-port.js.map +0 -1
  2004. package/dist/src/browser/humanize.js.map +0 -1
  2005. package/dist/src/browser/install-lock.js.map +0 -1
  2006. package/dist/src/browser/manager.js.map +0 -1
  2007. package/dist/src/browser/pipeline/output.js.map +0 -1
  2008. package/dist/src/browser/pipeline/runner.js.map +0 -1
  2009. package/dist/src/browser/pipeline/schema.js.map +0 -1
  2010. package/dist/src/browser/pipeline/source.js.map +0 -1
  2011. package/dist/src/browser/pipeline/template.js.map +0 -1
  2012. package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
  2013. package/dist/src/browser/providers/browser-use.js.map +0 -1
  2014. package/dist/src/browser/providers/browserbase.js.map +0 -1
  2015. package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
  2016. package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
  2017. package/dist/src/browser/providers/extension.js.map +0 -1
  2018. package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
  2019. package/dist/src/browser/providers/playwright-install.js.map +0 -1
  2020. package/dist/src/browser/readiness.js.map +0 -1
  2021. package/dist/src/browser/schemas.js.map +0 -1
  2022. package/dist/src/browser/session-lifecycle.js.map +0 -1
  2023. package/dist/src/browser/snapshot-helpers.js.map +0 -1
  2024. package/dist/src/browser/stealth.js.map +0 -1
  2025. package/dist/src/browser/url-policy.js.map +0 -1
  2026. package/dist/src/capabilities/store-connector.js.map +0 -1
  2027. package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
  2028. package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
  2029. package/dist/src/channels/attachments/inbound-types.js.map +0 -1
  2030. package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
  2031. package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
  2032. package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
  2033. package/dist/src/channels/config-helpers.js.map +0 -1
  2034. package/dist/src/channels/envelope-timestamp.js.map +0 -1
  2035. package/dist/src/channels/exec-approval-runtime.js.map +0 -1
  2036. package/dist/src/channels/health-monitor.js.map +0 -1
  2037. package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
  2038. package/dist/src/channels/internal-outbound.js.map +0 -1
  2039. package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
  2040. package/dist/src/channels/manager.js.map +0 -1
  2041. package/dist/src/channels/media.js.map +0 -1
  2042. package/dist/src/channels/outbound/deliver.js.map +0 -1
  2043. package/dist/src/channels/outbound/normalize.js.map +0 -1
  2044. package/dist/src/channels/outbound/persist-store.js.map +0 -1
  2045. package/dist/src/channels/outbound/queue.js.map +0 -1
  2046. package/dist/src/channels/outbound-sender.js.map +0 -1
  2047. package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
  2048. package/dist/src/channels/pairing/approve-cli.js.map +0 -1
  2049. package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
  2050. package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
  2051. package/dist/src/channels/pairing/pairing-events.js.map +0 -1
  2052. package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
  2053. package/dist/src/channels/pairing/pairing-service.js.map +0 -1
  2054. package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
  2055. package/dist/src/channels/pairing/pairing-store.js.map +0 -1
  2056. package/dist/src/channels/pairing/paths.js.map +0 -1
  2057. package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
  2058. package/dist/src/channels/pipeline.js.map +0 -1
  2059. package/dist/src/channels/plugin-registry.js.map +0 -1
  2060. package/dist/src/channels/plugins/registry.js.map +0 -1
  2061. package/dist/src/channels/restart-policy.js.map +0 -1
  2062. package/dist/src/channels/security-helpers.js.map +0 -1
  2063. package/dist/src/channels/security.js.map +0 -1
  2064. package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
  2065. package/dist/src/chat-commands/agent-edit.js.map +0 -1
  2066. package/dist/src/chat-commands/builtins/config.js.map +0 -1
  2067. package/dist/src/chat-commands/builtins/context.js.map +0 -1
  2068. package/dist/src/chat-commands/builtins/goal.js.map +0 -1
  2069. package/dist/src/chat-commands/builtins/model.js.map +0 -1
  2070. package/dist/src/chat-commands/builtins/review.js.map +0 -1
  2071. package/dist/src/chat-commands/builtins/session.js.map +0 -1
  2072. package/dist/src/chat-commands/builtins/skill.js.map +0 -1
  2073. package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
  2074. package/dist/src/chat-commands/builtins/system.js.map +0 -1
  2075. package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
  2076. package/dist/src/chat-commands/builtins/tts.js.map +0 -1
  2077. package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
  2078. package/dist/src/chat-commands/command-parse.js.map +0 -1
  2079. package/dist/src/chat-commands/config-paths.js.map +0 -1
  2080. package/dist/src/chat-commands/config-value.js.map +0 -1
  2081. package/dist/src/chat-commands/context.js.map +0 -1
  2082. package/dist/src/chat-commands/format-output.js.map +0 -1
  2083. package/dist/src/chat-commands/index.js.map +0 -1
  2084. package/dist/src/chat-commands/processor.js.map +0 -1
  2085. package/dist/src/chat-commands/registry.js.map +0 -1
  2086. package/dist/src/chat-commands/session-key.js.map +0 -1
  2087. package/dist/src/cli/argv-invocation.js.map +0 -1
  2088. package/dist/src/cli/argv.js.map +0 -1
  2089. package/dist/src/cli/bin.js.map +0 -1
  2090. package/dist/src/cli/cli-log-level-preset.js.map +0 -1
  2091. package/dist/src/cli/command-catalog.js.map +0 -1
  2092. package/dist/src/cli/command-loaders.js.map +0 -1
  2093. package/dist/src/cli/command-manifest.js.map +0 -1
  2094. package/dist/src/cli/command-path-matches.js.map +0 -1
  2095. package/dist/src/cli/command-path-policy.js.map +0 -1
  2096. package/dist/src/cli/command-startup-policy.js.map +0 -1
  2097. package/dist/src/cli/commands/agent/interactive.js.map +0 -1
  2098. package/dist/src/cli/commands/agent/sessions.js.map +0 -1
  2099. package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
  2100. package/dist/src/cli/commands/agent.js.map +0 -1
  2101. package/dist/src/cli/commands/agents.js.map +0 -1
  2102. package/dist/src/cli/commands/auth.js.map +0 -1
  2103. package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
  2104. package/dist/src/cli/commands/browser.js.map +0 -1
  2105. package/dist/src/cli/commands/channels.js.map +0 -1
  2106. package/dist/src/cli/commands/config.js.map +0 -1
  2107. package/dist/src/cli/commands/connectors.js.map +0 -1
  2108. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
  2109. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
  2110. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
  2111. package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
  2112. package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
  2113. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
  2114. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
  2115. package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
  2116. package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
  2117. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
  2118. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
  2119. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
  2120. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
  2121. package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
  2122. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
  2123. package/dist/src/cli/commands/doctor/flow.js.map +0 -1
  2124. package/dist/src/cli/commands/doctor/format.js.map +0 -1
  2125. package/dist/src/cli/commands/doctor/index.js.map +0 -1
  2126. package/dist/src/cli/commands/extension-create.js.map +0 -1
  2127. package/dist/src/cli/commands/extension-dev.js.map +0 -1
  2128. package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
  2129. package/dist/src/cli/commands/extension-pack.js.map +0 -1
  2130. package/dist/src/cli/commands/extension.js.map +0 -1
  2131. package/dist/src/cli/commands/gateway/call.js.map +0 -1
  2132. package/dist/src/cli/commands/gateway/health.js.map +0 -1
  2133. package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
  2134. package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
  2135. package/dist/src/cli/commands/gateway/logs.js.map +0 -1
  2136. package/dist/src/cli/commands/gateway/probe.js.map +0 -1
  2137. package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
  2138. package/dist/src/cli/commands/gateway/restart.js.map +0 -1
  2139. package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
  2140. package/dist/src/cli/commands/gateway/service.js.map +0 -1
  2141. package/dist/src/cli/commands/gateway/shared.js.map +0 -1
  2142. package/dist/src/cli/commands/gateway/status.js.map +0 -1
  2143. package/dist/src/cli/commands/gateway/stop.js.map +0 -1
  2144. package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
  2145. package/dist/src/cli/commands/gateway/token.js.map +0 -1
  2146. package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
  2147. package/dist/src/cli/commands/gateway.js.map +0 -1
  2148. package/dist/src/cli/commands/goal.js.map +0 -1
  2149. package/dist/src/cli/commands/image.js.map +0 -1
  2150. package/dist/src/cli/commands/init.js.map +0 -1
  2151. package/dist/src/cli/commands/logs.js.map +0 -1
  2152. package/dist/src/cli/commands/models.js.map +0 -1
  2153. package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
  2154. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
  2155. package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
  2156. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
  2157. package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
  2158. package/dist/src/cli/commands/onboard/model.js.map +0 -1
  2159. package/dist/src/cli/commands/onboard.js.map +0 -1
  2160. package/dist/src/cli/commands/profile.js.map +0 -1
  2161. package/dist/src/cli/commands/project.js.map +0 -1
  2162. package/dist/src/cli/commands/providers.js.map +0 -1
  2163. package/dist/src/cli/commands/resume.js.map +0 -1
  2164. package/dist/src/cli/commands/search.js.map +0 -1
  2165. package/dist/src/cli/commands/session/actions.js.map +0 -1
  2166. package/dist/src/cli/commands/session/utils.js.map +0 -1
  2167. package/dist/src/cli/commands/session.js.map +0 -1
  2168. package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
  2169. package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
  2170. package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
  2171. package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
  2172. package/dist/src/cli/commands/setup.js.map +0 -1
  2173. package/dist/src/cli/commands/skills-test.js.map +0 -1
  2174. package/dist/src/cli/commands/skills.js.map +0 -1
  2175. package/dist/src/cli/commands/tailscale.js.map +0 -1
  2176. package/dist/src/cli/commands/tui-runner.js.map +0 -1
  2177. package/dist/src/cli/commands/tui.js.map +0 -1
  2178. package/dist/src/cli/commands/tunnel.js.map +0 -1
  2179. package/dist/src/cli/commands/update.js.map +0 -1
  2180. package/dist/src/cli/commands/voice.js.map +0 -1
  2181. package/dist/src/cli/context.js.map +0 -1
  2182. package/dist/src/cli/extension-cli-register.js.map +0 -1
  2183. package/dist/src/cli/gateway-run-argv.js.map +0 -1
  2184. package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
  2185. package/dist/src/cli/index.js.map +0 -1
  2186. package/dist/src/cli/registry.js.map +0 -1
  2187. package/dist/src/cli/templates.js.map +0 -1
  2188. package/dist/src/cli/utils/colors.js.map +0 -1
  2189. package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
  2190. package/dist/src/cli/utils/gateway-client.js.map +0 -1
  2191. package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
  2192. package/dist/src/cli/utils/init-workspace.js.map +0 -1
  2193. package/dist/src/cli/utils/oauth-login.js.map +0 -1
  2194. package/dist/src/cli/utils/oauth-providers.js.map +0 -1
  2195. package/dist/src/cli/utils/session.js.map +0 -1
  2196. package/dist/src/commands/agents.config.js.map +0 -1
  2197. package/dist/src/config/agent-profile.js.map +0 -1
  2198. package/dist/src/config/agent-typed-models.js.map +0 -1
  2199. package/dist/src/config/commands.flags.js.map +0 -1
  2200. package/dist/src/config/default-model.js.map +0 -1
  2201. package/dist/src/config/diff.js.map +0 -1
  2202. package/dist/src/config/gateway-bind.js.map +0 -1
  2203. package/dist/src/config/index.js.map +0 -1
  2204. package/dist/src/config/loader.js.map +0 -1
  2205. package/dist/src/config/mcp-config-normalize.js.map +0 -1
  2206. package/dist/src/config/model-input.js.map +0 -1
  2207. package/dist/src/config/models-json.js.map +0 -1
  2208. package/dist/src/config/paths-state.js.map +0 -1
  2209. package/dist/src/config/paths.js.map +0 -1
  2210. package/dist/src/config/profile.js.map +0 -1
  2211. package/dist/src/config/public-url.js.map +0 -1
  2212. package/dist/src/config/reload.js.map +0 -1
  2213. package/dist/src/config/resolve-config-value.js.map +0 -1
  2214. package/dist/src/config/rules.js.map +0 -1
  2215. package/dist/src/config/runtime-overrides.js.map +0 -1
  2216. package/dist/src/config/schema.js.map +0 -1
  2217. package/dist/src/config/validate-channel-configs.js.map +0 -1
  2218. package/dist/src/config/voice.js.map +0 -1
  2219. package/dist/src/config/web-patch.js.map +0 -1
  2220. package/dist/src/config/workspace-defaults.js.map +0 -1
  2221. package/dist/src/config/workspace-dirs.js.map +0 -1
  2222. package/dist/src/config/workspace-path-helpers.js.map +0 -1
  2223. package/dist/src/config/workspace-path.js.map +0 -1
  2224. package/dist/src/connectors/approval.js.map +0 -1
  2225. package/dist/src/connectors/auth-provider-registry.js.map +0 -1
  2226. package/dist/src/connectors/builtin-catalog.js.map +0 -1
  2227. package/dist/src/connectors/catalog.js.map +0 -1
  2228. package/dist/src/connectors/composio-catalog.js.map +0 -1
  2229. package/dist/src/connectors/composio-logo.js.map +0 -1
  2230. package/dist/src/connectors/composio-sessions.js.map +0 -1
  2231. package/dist/src/connectors/composio-triggers.js.map +0 -1
  2232. package/dist/src/connectors/composio.js.map +0 -1
  2233. package/dist/src/connectors/connector-memory-sync.js.map +0 -1
  2234. package/dist/src/connectors/health.js.map +0 -1
  2235. package/dist/src/connectors/install.js.map +0 -1
  2236. package/dist/src/connectors/instances.js.map +0 -1
  2237. package/dist/src/connectors/integration-strategy.js.map +0 -1
  2238. package/dist/src/connectors/lifecycle.js.map +0 -1
  2239. package/dist/src/connectors/materialize.js.map +0 -1
  2240. package/dist/src/connectors/policy.js.map +0 -1
  2241. package/dist/src/connectors/providers.js.map +0 -1
  2242. package/dist/src/connectors/registries/modelscope.js.map +0 -1
  2243. package/dist/src/connectors/registries/official-mcp.js.map +0 -1
  2244. package/dist/src/connectors/registries/search.js.map +0 -1
  2245. package/dist/src/connectors/registries/smithery.js.map +0 -1
  2246. package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
  2247. package/dist/src/connectors/secret-store.js.map +0 -1
  2248. package/dist/src/connectors/setup-secrets.js.map +0 -1
  2249. package/dist/src/connectors/supervisor.js.map +0 -1
  2250. package/dist/src/connectors/usage.js.map +0 -1
  2251. package/dist/src/connectors/workflow-preflight.js.map +0 -1
  2252. package/dist/src/daemon/constants.js.map +0 -1
  2253. package/dist/src/daemon/install-plan.js.map +0 -1
  2254. package/dist/src/daemon/launchd.js.map +0 -1
  2255. package/dist/src/daemon/schtasks.js.map +0 -1
  2256. package/dist/src/daemon/service-audit.js.map +0 -1
  2257. package/dist/src/daemon/service.js.map +0 -1
  2258. package/dist/src/daemon/systemd.js.map +0 -1
  2259. package/dist/src/document-understanding/extract.js.map +0 -1
  2260. package/dist/src/errors/index.js.map +0 -1
  2261. package/dist/src/extensions/activation-context.js.map +0 -1
  2262. package/dist/src/extensions/activation-planner.js.map +0 -1
  2263. package/dist/src/extensions/api.js.map +0 -1
  2264. package/dist/src/extensions/bundle-mcp.js.map +0 -1
  2265. package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
  2266. package/dist/src/extensions/diagnostics.js.map +0 -1
  2267. package/dist/src/extensions/discover-extensions.js.map +0 -1
  2268. package/dist/src/extensions/engine-check.js.map +0 -1
  2269. package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
  2270. package/dist/src/extensions/extension-registry-impl.js.map +0 -1
  2271. package/dist/src/extensions/health.js.map +0 -1
  2272. package/dist/src/extensions/hooks.js.map +0 -1
  2273. package/dist/src/extensions/index.js.map +0 -1
  2274. package/dist/src/extensions/install-transaction.js.map +0 -1
  2275. package/dist/src/extensions/install.js.map +0 -1
  2276. package/dist/src/extensions/loader.js.map +0 -1
  2277. package/dist/src/extensions/lockfile.js.map +0 -1
  2278. package/dist/src/extensions/manifest-registry.js.map +0 -1
  2279. package/dist/src/extensions/marketplace.js.map +0 -1
  2280. package/dist/src/extensions/media-provider-contracts.js.map +0 -1
  2281. package/dist/src/extensions/normalize-manifest.js.map +0 -1
  2282. package/dist/src/extensions/onboard-helpers.js.map +0 -1
  2283. package/dist/src/extensions/package-contract.js.map +0 -1
  2284. package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
  2285. package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
  2286. package/dist/src/extensions/sdk/index.js.map +0 -1
  2287. package/dist/src/extensions/sdk/lazy.js.map +0 -1
  2288. package/dist/src/extensions/sdk/testing.js.map +0 -1
  2289. package/dist/src/extensions/security.js.map +0 -1
  2290. package/dist/src/extensions/slots.js.map +0 -1
  2291. package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
  2292. package/dist/src/extensions/store-zip-limits.js.map +0 -1
  2293. package/dist/src/extensions/typed-event-bus.js.map +0 -1
  2294. package/dist/src/extensions/types/hooks.js.map +0 -1
  2295. package/dist/src/extensions/types/providers.js.map +0 -1
  2296. package/dist/src/extensions/update.js.map +0 -1
  2297. package/dist/src/extensions/when-context.js.map +0 -1
  2298. package/dist/src/extensions/when-expression.js.map +0 -1
  2299. package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
  2300. package/dist/src/gateway/agent-run-relay.js.map +0 -1
  2301. package/dist/src/gateway/agents-admin.js.map +0 -1
  2302. package/dist/src/gateway/auth.js.map +0 -1
  2303. package/dist/src/gateway/capability-presets-admin.js.map +0 -1
  2304. package/dist/src/gateway/chat-limits.js.map +0 -1
  2305. package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
  2306. package/dist/src/gateway/clarify-bridge.js.map +0 -1
  2307. package/dist/src/gateway/clarify-runtime.js.map +0 -1
  2308. package/dist/src/gateway/client-ip.js.map +0 -1
  2309. package/dist/src/gateway/config-tools-web.js.map +0 -1
  2310. package/dist/src/gateway/credential.js.map +0 -1
  2311. package/dist/src/gateway/discovery/mdns.js.map +0 -1
  2312. package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
  2313. package/dist/src/gateway/ensure-network-cors.js.map +0 -1
  2314. package/dist/src/gateway/file-path-classifier.js.map +0 -1
  2315. package/dist/src/gateway/file-reference-registry.js.map +0 -1
  2316. package/dist/src/gateway/global-defaults-admin.js.map +0 -1
  2317. package/dist/src/gateway/heartbeat/service.js.map +0 -1
  2318. package/dist/src/gateway/hono/app.js.map +0 -1
  2319. package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
  2320. package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
  2321. package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
  2322. package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
  2323. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
  2324. package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
  2325. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
  2326. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
  2327. package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
  2328. package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
  2329. package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
  2330. package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
  2331. package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
  2332. package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
  2333. package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
  2334. package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
  2335. package/dist/src/gateway/hono/oauth-async.js.map +0 -1
  2336. package/dist/src/gateway/hono/oauth.js.map +0 -1
  2337. package/dist/src/gateway/hono/routes/activity.js.map +0 -1
  2338. package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
  2339. package/dist/src/gateway/hono/routes/agents.js.map +0 -1
  2340. package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
  2341. package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
  2342. package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
  2343. package/dist/src/gateway/hono/routes/browser.js.map +0 -1
  2344. package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
  2345. package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
  2346. package/dist/src/gateway/hono/routes/channels.js.map +0 -1
  2347. package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
  2348. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
  2349. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
  2350. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
  2351. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
  2352. package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
  2353. package/dist/src/gateway/hono/routes/config.js.map +0 -1
  2354. package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
  2355. package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
  2356. package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
  2357. package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
  2358. package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
  2359. package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
  2360. package/dist/src/gateway/hono/routes/goals.js.map +0 -1
  2361. package/dist/src/gateway/hono/routes/home.js.map +0 -1
  2362. package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
  2363. package/dist/src/gateway/hono/routes/index.js.map +0 -1
  2364. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
  2365. package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
  2366. package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
  2367. package/dist/src/gateway/hono/routes/logs.js.map +0 -1
  2368. package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
  2369. package/dist/src/gateway/hono/routes/media.js.map +0 -1
  2370. package/dist/src/gateway/hono/routes/memory.js.map +0 -1
  2371. package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
  2372. package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
  2373. package/dist/src/gateway/hono/routes/models.js.map +0 -1
  2374. package/dist/src/gateway/hono/routes/notes.js.map +0 -1
  2375. package/dist/src/gateway/hono/routes/projects.js.map +0 -1
  2376. package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
  2377. package/dist/src/gateway/hono/routes/search.js.map +0 -1
  2378. package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
  2379. package/dist/src/gateway/hono/routes/shares.js.map +0 -1
  2380. package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
  2381. package/dist/src/gateway/hono/routes/status.js.map +0 -1
  2382. package/dist/src/gateway/hono/routes/tui.js.map +0 -1
  2383. package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
  2384. package/dist/src/gateway/hono/routes/update.js.map +0 -1
  2385. package/dist/src/gateway/hono/routes/voice.js.map +0 -1
  2386. package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
  2387. package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
  2388. package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
  2389. package/dist/src/gateway/hono/routes/you.js.map +0 -1
  2390. package/dist/src/gateway/hono/sse-json.js.map +0 -1
  2391. package/dist/src/gateway/hono/sse.js.map +0 -1
  2392. package/dist/src/gateway/host.js.map +0 -1
  2393. package/dist/src/gateway/image-capabilities.js.map +0 -1
  2394. package/dist/src/gateway/listen.js.map +0 -1
  2395. package/dist/src/gateway/lock.js.map +0 -1
  2396. package/dist/src/gateway/ports.js.map +0 -1
  2397. package/dist/src/gateway/protocol.js.map +0 -1
  2398. package/dist/src/gateway/public-url.js.map +0 -1
  2399. package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
  2400. package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
  2401. package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
  2402. package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
  2403. package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
  2404. package/dist/src/gateway/respawn.js.map +0 -1
  2405. package/dist/src/gateway/run-loop.js.map +0 -1
  2406. package/dist/src/gateway/runtime-config.js.map +0 -1
  2407. package/dist/src/gateway/security/audit.js.map +0 -1
  2408. package/dist/src/gateway/security/csp.js.map +0 -1
  2409. package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
  2410. package/dist/src/gateway/security/external-content.js.map +0 -1
  2411. package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
  2412. package/dist/src/gateway/security/loopback.js.map +0 -1
  2413. package/dist/src/gateway/security/operator-scopes.js.map +0 -1
  2414. package/dist/src/gateway/security/origin-check.js.map +0 -1
  2415. package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
  2416. package/dist/src/gateway/security/secret-equal.js.map +0 -1
  2417. package/dist/src/gateway/server-tailscale.js.map +0 -1
  2418. package/dist/src/gateway/server.js.map +0 -1
  2419. package/dist/src/gateway/service/agent-runner.js.map +0 -1
  2420. package/dist/src/gateway/service/config-coordinator.js.map +0 -1
  2421. package/dist/src/gateway/service/marketplace-service.js.map +0 -1
  2422. package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
  2423. package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
  2424. package/dist/src/gateway/service/sessions-api.js.map +0 -1
  2425. package/dist/src/gateway/service/sse-hub.js.map +0 -1
  2426. package/dist/src/gateway/service.js.map +0 -1
  2427. package/dist/src/gateway/session-reset-service.js.map +0 -1
  2428. package/dist/src/gateway/startup-readiness.js.map +0 -1
  2429. package/dist/src/gateway/startup-trace.js.map +0 -1
  2430. package/dist/src/gateway/tailscale-auth.js.map +0 -1
  2431. package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
  2432. package/dist/src/gateway/tls-server.js.map +0 -1
  2433. package/dist/src/gateway/trusted-proxy.js.map +0 -1
  2434. package/dist/src/gateway/user-turn-input.js.map +0 -1
  2435. package/dist/src/gateway/workspace-editor-path.js.map +0 -1
  2436. package/dist/src/gateway/workspace-file-search.js.map +0 -1
  2437. package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
  2438. package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
  2439. package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
  2440. package/dist/src/gateway/ws-security.js.map +0 -1
  2441. package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
  2442. package/dist/src/goals/goal-contract-draft.js.map +0 -1
  2443. package/dist/src/goals/goal-evidence-review.js.map +0 -1
  2444. package/dist/src/goals/goal-notifications.js.map +0 -1
  2445. package/dist/src/goals/goal-queue-store.js.map +0 -1
  2446. package/dist/src/goals/goal-runner.js.map +0 -1
  2447. package/dist/src/goals/goal-service.js.map +0 -1
  2448. package/dist/src/goals/goal-store.js.map +0 -1
  2449. package/dist/src/goals/goal-workflow-judge.js.map +0 -1
  2450. package/dist/src/heartbeat/active-hours.js.map +0 -1
  2451. package/dist/src/heartbeat/content-check.js.map +0 -1
  2452. package/dist/src/heartbeat/event-prompt.js.map +0 -1
  2453. package/dist/src/heartbeat/tokens.js.map +0 -1
  2454. package/dist/src/heartbeat/wake.js.map +0 -1
  2455. package/dist/src/i18n/format.js.map +0 -1
  2456. package/dist/src/i18n/goals-bundle.js.map +0 -1
  2457. package/dist/src/i18n/locale.js.map +0 -1
  2458. package/dist/src/i18n/locales/goals.en.js.map +0 -1
  2459. package/dist/src/i18n/locales/goals.zh.js.map +0 -1
  2460. package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
  2461. package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
  2462. package/dist/src/i18n/share-tool-bundle.js.map +0 -1
  2463. package/dist/src/index.js.map +0 -1
  2464. package/dist/src/infra/brew.js.map +0 -1
  2465. package/dist/src/infra/bus/queue.js.map +0 -1
  2466. package/dist/src/infra/debounce.js.map +0 -1
  2467. package/dist/src/infra/exec.js.map +0 -1
  2468. package/dist/src/infra/gateway-process-argv.js.map +0 -1
  2469. package/dist/src/infra/gateway-processes.js.map +0 -1
  2470. package/dist/src/infra/host-env-security-policy.js.map +0 -1
  2471. package/dist/src/infra/host-env-security.js.map +0 -1
  2472. package/dist/src/infra/http-proxy-env.js.map +0 -1
  2473. package/dist/src/infra/is-main.js.map +0 -1
  2474. package/dist/src/infra/json-utf8-bytes.js.map +0 -1
  2475. package/dist/src/infra/node-sqlite.js.map +0 -1
  2476. package/dist/src/infra/package-json.js.map +0 -1
  2477. package/dist/src/infra/package-update-steps.js.map +0 -1
  2478. package/dist/src/infra/path-env.js.map +0 -1
  2479. package/dist/src/infra/path-prepend.js.map +0 -1
  2480. package/dist/src/infra/ports.js.map +0 -1
  2481. package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
  2482. package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
  2483. package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
  2484. package/dist/src/infra/restart.js.map +0 -1
  2485. package/dist/src/infra/retry.js.map +0 -1
  2486. package/dist/src/infra/run-command.js.map +0 -1
  2487. package/dist/src/infra/sqlite-errors.js.map +0 -1
  2488. package/dist/src/infra/ssh-tunnel.js.map +0 -1
  2489. package/dist/src/infra/stable-node-path.js.map +0 -1
  2490. package/dist/src/infra/tailscale.js.map +0 -1
  2491. package/dist/src/infra/undici-fetch.js.map +0 -1
  2492. package/dist/src/infra/unhandled-rejections.js.map +0 -1
  2493. package/dist/src/infra/update-channels.js.map +0 -1
  2494. package/dist/src/infra/update-check.js.map +0 -1
  2495. package/dist/src/infra/update-global.js.map +0 -1
  2496. package/dist/src/infra/update-lock.js.map +0 -1
  2497. package/dist/src/infra/update-log.js.map +0 -1
  2498. package/dist/src/infra/update-restart.js.map +0 -1
  2499. package/dist/src/infra/update-runner.js.map +0 -1
  2500. package/dist/src/infra/update-startup.js.map +0 -1
  2501. package/dist/src/infra/warning-filter.js.map +0 -1
  2502. package/dist/src/infra/write-file-atomic.js.map +0 -1
  2503. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
  2504. package/dist/src/knowledge/coordinator.js.map +0 -1
  2505. package/dist/src/knowledge/ingestion-service.js.map +0 -1
  2506. package/dist/src/local-apps/acceptance.js.map +0 -1
  2507. package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
  2508. package/dist/src/local-apps/runtime-entry.js.map +0 -1
  2509. package/dist/src/local-apps/scaffold.js.map +0 -1
  2510. package/dist/src/local-apps/service.js.map +0 -1
  2511. package/dist/src/local-apps/store.js.map +0 -1
  2512. package/dist/src/markdown/chunk.js.map +0 -1
  2513. package/dist/src/markdown/code-spans.js.map +0 -1
  2514. package/dist/src/markdown/fences.js.map +0 -1
  2515. package/dist/src/markdown/frontmatter.js.map +0 -1
  2516. package/dist/src/markdown/ir.js.map +0 -1
  2517. package/dist/src/markdown/render.js.map +0 -1
  2518. package/dist/src/markdown/tables.js.map +0 -1
  2519. package/dist/src/mcp/channel-bridge.js.map +0 -1
  2520. package/dist/src/mcp/channel-server.js.map +0 -1
  2521. package/dist/src/mcp/channel-shared.js.map +0 -1
  2522. package/dist/src/mcp/channel-tools.js.map +0 -1
  2523. package/dist/src/mcp/gateway-http-client.js.map +0 -1
  2524. package/dist/src/media/media-reference.js.map +0 -1
  2525. package/dist/src/media/paths.js.map +0 -1
  2526. package/dist/src/media/session-references.js.map +0 -1
  2527. package/dist/src/media/store.js.map +0 -1
  2528. package/dist/src/media/uri.js.map +0 -1
  2529. package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
  2530. package/dist/src/media-shared/http/deadline.js.map +0 -1
  2531. package/dist/src/media-shared/http/private-network.js.map +0 -1
  2532. package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
  2533. package/dist/src/media-shared/http/provider-http.js.map +0 -1
  2534. package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
  2535. package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
  2536. package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
  2537. package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
  2538. package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
  2539. package/dist/src/media-understanding/registry.js.map +0 -1
  2540. package/dist/src/media-understanding/resolve-entries.js.map +0 -1
  2541. package/dist/src/media-understanding/runner.js.map +0 -1
  2542. package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
  2543. package/dist/src/migrations/registry.js.map +0 -1
  2544. package/dist/src/migrations/runner.js.map +0 -1
  2545. package/dist/src/mobile/notification-service.js.map +0 -1
  2546. package/dist/src/mobile/notification-store.js.map +0 -1
  2547. package/dist/src/mobile/notification-types.js.map +0 -1
  2548. package/dist/src/notes/agent-context.js.map +0 -1
  2549. package/dist/src/notes/attachment-ref.js.map +0 -1
  2550. package/dist/src/notes/note-attachment-sync.js.map +0 -1
  2551. package/dist/src/notes/note-index-meta.js.map +0 -1
  2552. package/dist/src/notes/note-markdown.js.map +0 -1
  2553. package/dist/src/notes/paths.js.map +0 -1
  2554. package/dist/src/notes/service.js.map +0 -1
  2555. package/dist/src/notes/store.js.map +0 -1
  2556. package/dist/src/package-version.js.map +0 -1
  2557. package/dist/src/pets/factory.js.map +0 -1
  2558. package/dist/src/pets/manifest.js.map +0 -1
  2559. package/dist/src/pets/validator.js.map +0 -1
  2560. package/dist/src/process/kill-tree.js.map +0 -1
  2561. package/dist/src/project-trust/trust-store.js.map +0 -1
  2562. package/dist/src/projects/automation-bind.js.map +0 -1
  2563. package/dist/src/projects/goal-bind.js.map +0 -1
  2564. package/dist/src/projects/memory-bind.js.map +0 -1
  2565. package/dist/src/projects/project-agent-suggestion.js.map +0 -1
  2566. package/dist/src/projects/project-agent.js.map +0 -1
  2567. package/dist/src/projects/project-kind.js.map +0 -1
  2568. package/dist/src/projects/project-loop.js.map +0 -1
  2569. package/dist/src/projects/project-service.js.map +0 -1
  2570. package/dist/src/projects/project-store.js.map +0 -1
  2571. package/dist/src/projects/session-bind.js.map +0 -1
  2572. package/dist/src/projects/workflow-bind.js.map +0 -1
  2573. package/dist/src/projects/workspace-project.js.map +0 -1
  2574. package/dist/src/projects/workspace.js.map +0 -1
  2575. package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
  2576. package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
  2577. package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
  2578. package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
  2579. package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
  2580. package/dist/src/providers/constants.js.map +0 -1
  2581. package/dist/src/providers/domestic-presets.js.map +0 -1
  2582. package/dist/src/providers/env-keys.js.map +0 -1
  2583. package/dist/src/providers/extension-stream-bridge.js.map +0 -1
  2584. package/dist/src/providers/index.js.map +0 -1
  2585. package/dist/src/providers/model-call.js.map +0 -1
  2586. package/dist/src/providers/model-discovery.js.map +0 -1
  2587. package/dist/src/providers/model-registry.js.map +0 -1
  2588. package/dist/src/providers/model-supplements.js.map +0 -1
  2589. package/dist/src/providers/plugin-registry.js.map +0 -1
  2590. package/dist/src/providers/presentation.js.map +0 -1
  2591. package/dist/src/remote-access/exposure-guards.js.map +0 -1
  2592. package/dist/src/remote-access/exposure-manager.js.map +0 -1
  2593. package/dist/src/review/review-git.js.map +0 -1
  2594. package/dist/src/review/review-types.js.map +0 -1
  2595. package/dist/src/routing/account-id.js.map +0 -1
  2596. package/dist/src/routing/agent-session-key.js.map +0 -1
  2597. package/dist/src/routing/bindings.js.map +0 -1
  2598. package/dist/src/routing/index.js.map +0 -1
  2599. package/dist/src/routing/resolve-route.js.map +0 -1
  2600. package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
  2601. package/dist/src/routing/session-key-utils.js.map +0 -1
  2602. package/dist/src/routing/session-key.js.map +0 -1
  2603. package/dist/src/session/abort-cutoff.js.map +0 -1
  2604. package/dist/src/session/chat-export.js.map +0 -1
  2605. package/dist/src/session/client-history.js.map +0 -1
  2606. package/dist/src/session/compaction-checkpoints.js.map +0 -1
  2607. package/dist/src/session/config-store.js.map +0 -1
  2608. package/dist/src/session/init-session-turn.js.map +0 -1
  2609. package/dist/src/session/lifecycle-timestamps.js.map +0 -1
  2610. package/dist/src/session/load-jsonl-entries.js.map +0 -1
  2611. package/dist/src/session/manager.js.map +0 -1
  2612. package/dist/src/session/patch-metadata.js.map +0 -1
  2613. package/dist/src/session/reset-policy.js.map +0 -1
  2614. package/dist/src/session/reset-triggers.js.map +0 -1
  2615. package/dist/src/session/reset-type.js.map +0 -1
  2616. package/dist/src/session/resolve-session.js.map +0 -1
  2617. package/dist/src/session/session-context-for-llm.js.map +0 -1
  2618. package/dist/src/session/session-id.js.map +0 -1
  2619. package/dist/src/session/session-title.js.map +0 -1
  2620. package/dist/src/session/session-workspace.js.map +0 -1
  2621. package/dist/src/session/store.js.map +0 -1
  2622. package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
  2623. package/dist/src/session/thinking-resolve.js.map +0 -1
  2624. package/dist/src/session/transcript-events.js.map +0 -1
  2625. package/dist/src/session/transcript-format.js.map +0 -1
  2626. package/dist/src/session/transcript-outline.js.map +0 -1
  2627. package/dist/src/session/transcript-stats.js.map +0 -1
  2628. package/dist/src/session/types.js.map +0 -1
  2629. package/dist/src/session/user-round-delete.js.map +0 -1
  2630. package/dist/src/share/share-audit.js.map +0 -1
  2631. package/dist/src/share/share-auto.js.map +0 -1
  2632. package/dist/src/share/share-config.js.map +0 -1
  2633. package/dist/src/share/share-landing.js.map +0 -1
  2634. package/dist/src/share/share-rate-limit.js.map +0 -1
  2635. package/dist/src/share/share-store.js.map +0 -1
  2636. package/dist/src/share/share-thumbnail.js.map +0 -1
  2637. package/dist/src/share/share-types.js.map +0 -1
  2638. package/dist/src/share/share-url.js.map +0 -1
  2639. package/dist/src/share/share-zip.js.map +0 -1
  2640. package/dist/src/share/site-proxy.js.map +0 -1
  2641. package/dist/src/share/site-share-config.js.map +0 -1
  2642. package/dist/src/share/site-share-router.js.map +0 -1
  2643. package/dist/src/share/site-share-store.js.map +0 -1
  2644. package/dist/src/share/site-share-types.js.map +0 -1
  2645. package/dist/src/share/site-static-serve.js.map +0 -1
  2646. package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
  2647. package/dist/src/storage/sqlite/config-repository.js.map +0 -1
  2648. package/dist/src/storage/sqlite/connection.js.map +0 -1
  2649. package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
  2650. package/dist/src/storage/sqlite/fts.js.map +0 -1
  2651. package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
  2652. package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
  2653. package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
  2654. package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
  2655. package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
  2656. package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
  2657. package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
  2658. package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
  2659. package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
  2660. package/dist/src/storage/sqlite/paths.js.map +0 -1
  2661. package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
  2662. package/dist/src/storage/sqlite/schema-version.js.map +0 -1
  2663. package/dist/src/storage/sqlite/schema.js.map +0 -1
  2664. package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
  2665. package/dist/src/storage/sqlite/session-repository.js.map +0 -1
  2666. package/dist/src/storage/sqlite/transaction.js.map +0 -1
  2667. package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
  2668. package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
  2669. package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
  2670. package/dist/src/tui/backends/embedded-backend.js.map +0 -1
  2671. package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
  2672. package/dist/src/tui/chat-history.js.map +0 -1
  2673. package/dist/src/tui/clipboard-image.js.map +0 -1
  2674. package/dist/src/tui/clipboard-text.js.map +0 -1
  2675. package/dist/src/tui/components/assistant-message.js.map +0 -1
  2676. package/dist/src/tui/components/bash-execution.js.map +0 -1
  2677. package/dist/src/tui/components/bash-summary.js.map +0 -1
  2678. package/dist/src/tui/components/branch-message-summary.js.map +0 -1
  2679. package/dist/src/tui/components/branch-summary.js.map +0 -1
  2680. package/dist/src/tui/components/chat-log.js.map +0 -1
  2681. package/dist/src/tui/components/compaction-summary.js.map +0 -1
  2682. package/dist/src/tui/components/custom-editor.js.map +0 -1
  2683. package/dist/src/tui/components/custom-message.js.map +0 -1
  2684. package/dist/src/tui/components/dynamic-border.js.map +0 -1
  2685. package/dist/src/tui/components/extension-dialog.js.map +0 -1
  2686. package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
  2687. package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
  2688. package/dist/src/tui/components/searchable-select-list.js.map +0 -1
  2689. package/dist/src/tui/components/session-selector.js.map +0 -1
  2690. package/dist/src/tui/components/settings-selector.js.map +0 -1
  2691. package/dist/src/tui/components/thinking-selector.js.map +0 -1
  2692. package/dist/src/tui/components/tool-execution.js.map +0 -1
  2693. package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
  2694. package/dist/src/tui/components/tui-header.js.map +0 -1
  2695. package/dist/src/tui/components/user-message.js.map +0 -1
  2696. package/dist/src/tui/components/visual-truncate.js.map +0 -1
  2697. package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
  2698. package/dist/src/tui/extension-host/host.js.map +0 -1
  2699. package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
  2700. package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
  2701. package/dist/src/tui/extension-host/runtime.js.map +0 -1
  2702. package/dist/src/tui/extension-host/surface.js.map +0 -1
  2703. package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
  2704. package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
  2705. package/dist/src/tui/sse-consumer.js.map +0 -1
  2706. package/dist/src/tui/theme/dark.js.map +0 -1
  2707. package/dist/src/tui/theme/light.js.map +0 -1
  2708. package/dist/src/tui/theme-manager.js.map +0 -1
  2709. package/dist/src/tui/theme.js.map +0 -1
  2710. package/dist/src/tui/tool-summary.js.map +0 -1
  2711. package/dist/src/tui/tui-agent-events.js.map +0 -1
  2712. package/dist/src/tui/tui-command-formatters.js.map +0 -1
  2713. package/dist/src/tui/tui-commands.js.map +0 -1
  2714. package/dist/src/tui/tui-context-usage.js.map +0 -1
  2715. package/dist/src/tui/tui-extension-user-message.js.map +0 -1
  2716. package/dist/src/tui/tui-fd-path.js.map +0 -1
  2717. package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
  2718. package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
  2719. package/dist/src/tui/tui-git-branch.js.map +0 -1
  2720. package/dist/src/tui/tui-keybindings-file.js.map +0 -1
  2721. package/dist/src/tui/tui-lifecycle.js.map +0 -1
  2722. package/dist/src/tui/tui-local-shell.js.map +0 -1
  2723. package/dist/src/tui/tui-model-picker.js.map +0 -1
  2724. package/dist/src/tui/tui-oauth-login.js.map +0 -1
  2725. package/dist/src/tui/tui-overlays.js.map +0 -1
  2726. package/dist/src/tui/tui-picker-overlay.js.map +0 -1
  2727. package/dist/src/tui/tui-run-state.js.map +0 -1
  2728. package/dist/src/tui/tui-run-status-format.js.map +0 -1
  2729. package/dist/src/tui/tui-runtime-hints.js.map +0 -1
  2730. package/dist/src/tui/tui-scoped-models.js.map +0 -1
  2731. package/dist/src/tui/tui-session-actions.js.map +0 -1
  2732. package/dist/src/tui/tui-session-format.js.map +0 -1
  2733. package/dist/src/tui/tui-session-snapshot.js.map +0 -1
  2734. package/dist/src/tui/tui-session-stats.js.map +0 -1
  2735. package/dist/src/tui/tui-settings.js.map +0 -1
  2736. package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
  2737. package/dist/src/tui/tui-startup-resources.js.map +0 -1
  2738. package/dist/src/tui/tui-startup-text.js.map +0 -1
  2739. package/dist/src/tui/tui-stdio-filter.js.map +0 -1
  2740. package/dist/src/tui/tui-submit.js.map +0 -1
  2741. package/dist/src/tui/tui-suspend.js.map +0 -1
  2742. package/dist/src/tui/tui-timeline-picker.js.map +0 -1
  2743. package/dist/src/tui/tui-timeline.js.map +0 -1
  2744. package/dist/src/tui/tui-tool-diff.js.map +0 -1
  2745. package/dist/src/tui/tui-tool-result.js.map +0 -1
  2746. package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
  2747. package/dist/src/tui/tui-transcript-tree.js.map +0 -1
  2748. package/dist/src/tui/tui-types.js.map +0 -1
  2749. package/dist/src/tui/tui-workflow-slash.js.map +0 -1
  2750. package/dist/src/tui/tui.js.map +0 -1
  2751. package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
  2752. package/dist/src/tunnel/broker-client.js.map +0 -1
  2753. package/dist/src/tunnel/consent.js.map +0 -1
  2754. package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
  2755. package/dist/src/tunnel/env.js.map +0 -1
  2756. package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
  2757. package/dist/src/tunnel/frpc-binary.js.map +0 -1
  2758. package/dist/src/tunnel/frpc-config.js.map +0 -1
  2759. package/dist/src/tunnel/frpc-extract.js.map +0 -1
  2760. package/dist/src/tunnel/frpc-process.js.map +0 -1
  2761. package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
  2762. package/dist/src/tunnel/pair-context.js.map +0 -1
  2763. package/dist/src/tunnel/pair-url.js.map +0 -1
  2764. package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
  2765. package/dist/src/tunnel/pairing.js.map +0 -1
  2766. package/dist/src/tunnel/tunnel-audit.js.map +0 -1
  2767. package/dist/src/tunnel/tunnel-config.js.map +0 -1
  2768. package/dist/src/tunnel/tunnel-persist.js.map +0 -1
  2769. package/dist/src/tunnel/tunnel-qr.js.map +0 -1
  2770. package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
  2771. package/dist/src/tunnel/tunnel-service.js.map +0 -1
  2772. package/dist/src/tunnel/tunnel-state.js.map +0 -1
  2773. package/dist/src/tunnel/well-known.js.map +0 -1
  2774. package/dist/src/user-context/config.js.map +0 -1
  2775. package/dist/src/user-context/import.js.map +0 -1
  2776. package/dist/src/user-context/owner.js.map +0 -1
  2777. package/dist/src/user-context/profile.js.map +0 -1
  2778. package/dist/src/user-context/projection.js.map +0 -1
  2779. package/dist/src/user-context/runtime.js.map +0 -1
  2780. package/dist/src/user-context/source-recommendations.js.map +0 -1
  2781. package/dist/src/user-context/trust-policy.js.map +0 -1
  2782. package/dist/src/utils/global-singleton.js.map +0 -1
  2783. package/dist/src/utils/helpers.js.map +0 -1
  2784. package/dist/src/utils/index.js.map +0 -1
  2785. package/dist/src/utils/is-record.js.map +0 -1
  2786. package/dist/src/utils/logger/audit.js.map +0 -1
  2787. package/dist/src/utils/logger/config.js.map +0 -1
  2788. package/dist/src/utils/logger/context.js.map +0 -1
  2789. package/dist/src/utils/logger/exporters.js.map +0 -1
  2790. package/dist/src/utils/logger/index.js.map +0 -1
  2791. package/dist/src/utils/logger/log-store.js.map +0 -1
  2792. package/dist/src/utils/logger/log-stream.js.map +0 -1
  2793. package/dist/src/utils/logger/pino-record.js.map +0 -1
  2794. package/dist/src/utils/logger/redact.js.map +0 -1
  2795. package/dist/src/utils/logger/rotation.js.map +0 -1
  2796. package/dist/src/utils/logger/shutdown.js.map +0 -1
  2797. package/dist/src/utils/logger/stats.js.map +0 -1
  2798. package/dist/src/utils/logger/streams.js.map +0 -1
  2799. package/dist/src/utils/logger/types.js.map +0 -1
  2800. package/dist/src/utils/logger.js.map +0 -1
  2801. package/dist/src/utils/redact-sensitive-url.js.map +0 -1
  2802. package/dist/src/utils/sanitize-log.js.map +0 -1
  2803. package/dist/src/utils/string-coerce.js.map +0 -1
  2804. package/dist/src/voice/language-profile.js.map +0 -1
  2805. package/dist/src/voice/local/model-files.js.map +0 -1
  2806. package/dist/src/voice/local/model-manager.js.map +0 -1
  2807. package/dist/src/voice/local/models.js.map +0 -1
  2808. package/dist/src/voice/local/runtime-client.js.map +0 -1
  2809. package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
  2810. package/dist/src/voice/local/runtime-worker.js.map +0 -1
  2811. package/dist/src/voice/local/wav.js.map +0 -1
  2812. package/dist/src/voice/metadata/builtin.js.map +0 -1
  2813. package/dist/src/voice/metadata/registry.js.map +0 -1
  2814. package/dist/src/voice/stt/availability.js.map +0 -1
  2815. package/dist/src/voice/stt/config-slice.js.map +0 -1
  2816. package/dist/src/voice/stt/factory.js.map +0 -1
  2817. package/dist/src/voice/stt/index.js.map +0 -1
  2818. package/dist/src/voice/stt/list-providers.js.map +0 -1
  2819. package/dist/src/voice/stt/mention.js.map +0 -1
  2820. package/dist/src/voice/stt/preflight.js.map +0 -1
  2821. package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
  2822. package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
  2823. package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
  2824. package/dist/src/voice/stt/transcribe-core.js.map +0 -1
  2825. package/dist/src/voice/stt/types.js.map +0 -1
  2826. package/dist/src/voice/tts/audio.js.map +0 -1
  2827. package/dist/src/voice/tts/config-slice.js.map +0 -1
  2828. package/dist/src/voice/tts/directives.js.map +0 -1
  2829. package/dist/src/voice/tts/factory.js.map +0 -1
  2830. package/dist/src/voice/tts/list-providers.js.map +0 -1
  2831. package/dist/src/voice/tts/merge-config.js.map +0 -1
  2832. package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
  2833. package/dist/src/voice/tts/payload.js.map +0 -1
  2834. package/dist/src/voice/tts/preprocess.js.map +0 -1
  2835. package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
  2836. package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
  2837. package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
  2838. package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
  2839. package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
  2840. package/dist/src/voice/tts/service.js.map +0 -1
  2841. package/dist/src/voice/tts/speak-core.js.map +0 -1
  2842. package/dist/src/voice/tts/speech-registry.js.map +0 -1
  2843. package/dist/src/voice/tts/status-tracker.js.map +0 -1
  2844. package/dist/src/voice/tts/summarize.js.map +0 -1
  2845. package/dist/src/voice/tts/types.js.map +0 -1
  2846. package/dist/src/work-discovery/analyzer.js.map +0 -1
  2847. package/dist/src/work-discovery/probe.js.map +0 -1
  2848. package/dist/src/work-discovery/repository.js.map +0 -1
  2849. package/dist/src/work-discovery/service.js.map +0 -1
  2850. package/dist/src/work-items/agent-context.js.map +0 -1
  2851. package/dist/src/work-items/work-item-service.js.map +0 -1
  2852. package/dist/src/work-items/work-item-store.js.map +0 -1
  2853. package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
  2854. package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
  2855. package/dist/src/workflows/domain/definition-utils.js.map +0 -1
  2856. package/dist/src/workflows/domain/run.js.map +0 -1
  2857. package/dist/src/workflows/domain/schema-validation.js.map +0 -1
  2858. package/dist/src/workflows/domain/validation.js.map +0 -1
  2859. package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
  2860. package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
  2861. package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
  2862. package/dist/src/workflows/engine/projector.js.map +0 -1
  2863. package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
  2864. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
  2865. package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
  2866. package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
  2867. package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
  2868. package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
  2869. package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
  2870. package/dist/src/workflows/store/event-store.js.map +0 -1
  2871. package/dist/src/workflows/store/paths.js.map +0 -1
  2872. package/dist/src/workflows/store/run-index-store.js.map +0 -1
  2873. package/dist/src/workflows/store/run-store.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","names":[],"sources":["../../../../src/browser/actions/registry.ts"],"sourcesContent":["/**\n * Browser Action Registry — unified action layer shared by browser_use tool, CLI, and pipeline.\n */\n\nimport type { Page } from 'playwright-core';\n\nimport { createLogger } from '../../utils/logger.js';\nimport { assertBrowserUrlAllowed, checkPostRedirectUrl, containsApiKeyPattern } from '../url-policy.js';\nimport { checkWebsiteBlocklist } from '../../agent/tools/url-safety.js';\nimport { resolveBrowserCommandTimeoutMs } from '../browser-command-timeout.js';\nimport { truncateSnapshotAtBoundary } from '../snapshot-helpers.js';\nimport { humanizedClick, humanizedFill, humanizedScroll, type HumanPreset } from '../humanize.js';\nimport { isTruthyValue, resolvePath, valueContains } from '../pipeline/template.js';\n\nimport type {\n BrowserActionContext,\n BrowserActionHandler,\n BrowserActionRegistry,\n BrowserActionResult,\n} from './types.js';\n\nconst log = createLogger('BrowserActionRegistry');\n\nconst DEFAULT_SNAPSHOT_MAX = 30_000;\nconst AUTO_SNAPSHOT_MAX = 8_000;\n\ninterface NetworkEvent {\n type: 'request' | 'response' | 'requestfailed';\n url: string;\n method?: string;\n status?: number;\n resourceType?: string;\n postData?: string | null;\n body?: string;\n errorText?: string;\n timestamp: number;\n}\n\ninterface NetworkMonitor {\n events: NetworkEvent[];\n includeBody: boolean;\n urlPattern?: string;\n dispose: () => void;\n}\n\nconst networkMonitors = new WeakMap<Page, NetworkMonitor>();\n\n// ─── Helpers ────────────────────────────────────────────────────────────────\n\nfunction toMs(ctx: BrowserActionContext): number {\n return resolveBrowserCommandTimeoutMs(ctx.config);\n}\n\n/** Whether humanize mode is active for this context (local/cdp/cloakbrowser only). */\nfunction isHumanizeEnabled(_ctx: BrowserActionContext): boolean {\n return false;\n}\n\nfunction humanPreset(_ctx: BrowserActionContext): HumanPreset {\n return 'default';\n}\n\nasync function ariaSnapshot(page: Page, selector: string | undefined, maxLength: number, timeoutMs: number): Promise<string> {\n const loc = selector?.trim() ? page.locator(selector.trim()).first() : page.locator('body');\n await loc.waitFor({ state: 'attached', timeout: timeoutMs });\n let text = await loc.ariaSnapshot({ mode: 'ai', timeout: timeoutMs });\n if (!text || !text.trim()) text = '(empty snapshot)';\n if (text.length > maxLength) text = truncateSnapshotAtBoundary(text, maxLength);\n return text;\n}\n\nfunction resolveClickLocator(page: Page, args: Record<string, unknown>) {\n const selector = args.selector as string | undefined;\n const text = args.text as string | undefined;\n const role = args.role as string | undefined;\n const hasSel = Boolean(selector?.trim());\n const hasText = Boolean(text?.trim());\n const hasRole = Boolean(role?.trim());\n const n = (hasSel ? 1 : 0) + (hasText ? 1 : 0) + (hasRole ? 1 : 0);\n if (n !== 1) throw new Error('Provide exactly one of: selector, text, role');\n if (hasSel) return page.locator(selector!.trim()).first();\n if (hasText) return page.getByText(text!.trim(), { exact: false }).first();\n const raw = role!.trim();\n const idx = raw.indexOf(':');\n const roleName = (idx >= 0 ? raw.slice(0, idx) : raw).trim();\n const name = idx >= 0 ? raw.slice(idx + 1).trim() : '';\n if (!roleName) throw new Error('Invalid role: empty ARIA role');\n return page.getByRole(roleName as never, name ? { name } : undefined).first();\n}\n\nfunction resolveTypeLocator(page: Page, args: Record<string, unknown>) {\n const selector = args.selector as string | undefined;\n const label = args.label as string | undefined;\n const hasSel = Boolean(selector?.trim());\n const hasLab = Boolean(label?.trim());\n if (hasSel === hasLab) throw new Error('Provide exactly one of: selector, label');\n if (hasSel) return page.locator(selector!.trim()).first();\n return page.getByLabel(label!.trim()).first();\n}\n\nfunction ok(action: string, text: string, data?: unknown, artifacts?: BrowserActionResult['artifacts']): BrowserActionResult {\n return { ok: true, action, text, data, artifacts };\n}\n\nfunction fail(action: string, code: string, message: string, diagnostics?: BrowserActionResult['diagnostics']): BrowserActionResult {\n return { ok: false, action, error: { code, message }, diagnostics };\n}\n\nfunction asObject(value: unknown): Record<string, unknown> {\n return value && typeof value === 'object' && !Array.isArray(value) ? value as Record<string, unknown> : {};\n}\n\nfunction pipelineLast(ctx: BrowserActionContext): unknown {\n return ctx.pipeline?.last;\n}\n\nfunction valueFromArgs(ctx: BrowserActionContext, args: Record<string, unknown>): unknown {\n if ('value' in args) return args.value;\n if (typeof args.path === 'string') return resolvePath(pipelineLast(ctx), args.path);\n return pipelineLast(ctx);\n}\n\nfunction compareValues(a: unknown, b: unknown): number {\n const av = typeof a === 'number' ? a : String(a ?? '');\n const bv = typeof b === 'number' ? b : String(b ?? '');\n if (av < bv) return -1;\n if (av > bv) return 1;\n return 0;\n}\n\nfunction matchesNetworkPattern(url: string, pattern: string | undefined): boolean {\n if (!pattern) return true;\n return url.includes(pattern);\n}\n\n// ─── Action Handlers ────────────────────────────────────────────────────────\n\nconst navigateAction: BrowserActionHandler = async (ctx, args) => {\n const url = String(args.url ?? '');\n if (!url) return fail('navigate', 'MISSING_URL', 'url is required');\n\n const allowPrivate = false;\n if (containsApiKeyPattern(url)) return fail('navigate', 'BLOCKED', 'URL contains API key/token');\n const block = checkWebsiteBlocklist(url, ctx.config?.tools?.web?.blocklist);\n if (block) return fail('navigate', 'BLOCKED', block.message);\n assertBrowserUrlAllowed(url, { allowPrivateUrls: allowPrivate });\n\n const waitUntil = (args.wait_until as string) ?? (args.waitFor as string) ?? 'domcontentloaded';\n const navTimeout = toMs(ctx);\n await ctx.page.goto(url, { waitUntil: waitUntil as any, timeout: navTimeout });\n\n const title = await ctx.page.title();\n const finalUrl = ctx.page.url();\n\n if (finalUrl && finalUrl !== url) {\n const redirectBlock = checkPostRedirectUrl(finalUrl, { allowPrivateUrls: allowPrivate });\n if (redirectBlock) {\n await ctx.page.goto('about:blank').catch(() => {});\n return fail('navigate', 'REDIRECT_BLOCKED', redirectBlock);\n }\n }\n\n let snapshot = '';\n try { snapshot = await ariaSnapshot(ctx.page, undefined, AUTO_SNAPSHOT_MAX, navTimeout); } catch { /* non-fatal */ }\n\n const text = `Navigated to: ${title}\\nURL: ${finalUrl}${snapshot ? `\\n--- Page Snapshot ---\\n${snapshot}` : ''}`;\n return ok('navigate', text, { url: finalUrl, title });\n};\n\nconst stateAction: BrowserActionHandler = async (ctx, args) => {\n const maxLen = typeof args.maxLength === 'number' ? args.maxLength : DEFAULT_SNAPSHOT_MAX;\n const selector = args.selector as string | undefined;\n const timeout = toMs(ctx);\n try {\n const text = await ariaSnapshot(ctx.page, selector, maxLen, timeout);\n return ok('state', text, { length: text.length });\n } catch (e) {\n return fail('state', 'SNAPSHOT_FAILED', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst clickAction: BrowserActionHandler = async (ctx, args) => {\n const timeout = toMs(ctx);\n try {\n if (isHumanizeEnabled(ctx) && args.selector) {\n await humanizedClick(ctx.page, String(args.selector), humanPreset(ctx));\n return ok('click', 'Click succeeded (humanized).');\n }\n const loc = resolveClickLocator(ctx.page, args);\n await loc.click({ timeout });\n return ok('click', 'Click succeeded.');\n } catch (e) {\n return fail('click', 'CLICK_FAILED', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst typeAction: BrowserActionHandler = async (ctx, args) => {\n const timeout = toMs(ctx);\n try {\n if (isHumanizeEnabled(ctx) && args.selector) {\n await humanizedFill(ctx.page, String(args.selector), String(args.text ?? ''), humanPreset(ctx));\n if (args.pressEnter) await ctx.page.keyboard.press('Enter');\n return ok('type', 'Typed into field (humanized).');\n }\n const loc = resolveTypeLocator(ctx.page, args);\n await loc.clear({ timeout: Math.min(5000, timeout) }).catch(() => {});\n await loc.fill(String(args.text ?? ''), { timeout });\n if (args.pressEnter) await ctx.page.keyboard.press('Enter');\n return ok('type', 'Typed into field.');\n } catch (e) {\n return fail('type', 'TYPE_FAILED', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst scrollAction: BrowserActionHandler = async (ctx, args) => {\n const direction = (args.direction as string) ?? 'down';\n const amount = typeof args.amount === 'number' ? args.amount : 500;\n const dy = direction === 'down' ? amount : -amount;\n try {\n if (isHumanizeEnabled(ctx)) {\n await humanizedScroll(ctx.page, dy, humanPreset(ctx));\n return ok('scroll', `Scrolled ${direction} by ${amount}px (humanized).`);\n }\n await ctx.page.evaluate(({ deltaY }) => {\n (globalThis as any).scrollBy(0, deltaY);\n }, { deltaY: dy });\n return ok('scroll', `Scrolled ${direction} by ${amount}px.`);\n } catch (e) {\n return fail('scroll', 'SCROLL_FAILED', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst screenshotAction: BrowserActionHandler = async (ctx, args) => {\n const timeout = toMs(ctx);\n const selector = args.selector as string | undefined;\n const fullPage = args.full_page === true || args.fullPage === true;\n const path = args.path as string | undefined;\n try {\n let buf: Buffer;\n if (selector?.trim()) {\n const loc = ctx.page.locator(selector.trim()).first();\n await loc.waitFor({ state: 'visible', timeout });\n buf = await loc.screenshot({ type: 'png', timeout });\n } else {\n buf = await ctx.page.screenshot({ type: 'png', fullPage, timeout });\n }\n const artifact = { type: 'screenshot' as const, path, data: buf.toString('base64'), mimeType: 'image/png' };\n return ok('screenshot', `Screenshot captured (${buf.length} bytes).`, { bytes: buf.length }, [artifact]);\n } catch (e) {\n return fail('screenshot', 'SCREENSHOT_FAILED', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst backAction: BrowserActionHandler = async (ctx, args) => {\n const waitUntil = (args.waitFor as string) ?? 'domcontentloaded';\n const timeout = toMs(ctx);\n try {\n const response = await ctx.page.goBack({ waitUntil: waitUntil as any, timeout });\n if (!response) return fail('back', 'NO_HISTORY', 'No previous page in history.');\n const title = await ctx.page.title();\n const url = ctx.page.url();\n return ok('back', `Navigated back to: ${title}\\nURL: ${url}`, { url, title });\n } catch (e) {\n return fail('back', 'BACK_FAILED', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst pressAction: BrowserActionHandler = async (ctx, args) => {\n const key = String(args.key ?? '');\n if (!key) return fail('press', 'MISSING_KEY', 'key is required');\n try {\n await ctx.page.keyboard.press(key);\n return ok('press', `Pressed key: ${key}`);\n } catch (e) {\n return fail('press', 'PRESS_FAILED', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst evalAction: BrowserActionHandler = async (ctx, args) => {\n const js = (args.javascript as string) ?? (args.expression as string) ?? (args.code as string) ?? '';\n if (!js.trim()) return fail('eval', 'MISSING_JS', 'javascript expression is required');\n try {\n const result = await ctx.page.evaluate(js);\n const serialized = result === undefined ? 'undefined' : JSON.stringify(result, null, 2);\n const text = serialized.length > DEFAULT_SNAPSHOT_MAX\n ? `${serialized.slice(0, DEFAULT_SNAPSHOT_MAX)}\\n... (truncated)`\n : serialized;\n return ok('eval', text, result);\n } catch (e) {\n return fail('eval', 'EVAL_FAILED', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst imagesAction: BrowserActionHandler = async (ctx, args) => {\n const selector = args.selector as string | undefined;\n const maxImages = typeof args.maxImages === 'number' ? args.maxImages : 20;\n try {\n const images = await ctx.page.evaluate(\n ([sel, max]: [string | null, number]) => {\n const d = globalThis.document as any;\n const root = sel ? d.querySelector(sel) : d;\n if (!root) return [];\n const imgs = Array.from(root.querySelectorAll('img') as ArrayLike<any>);\n return imgs.slice(0, max).map((img: any) => ({\n src: String(img.src ?? ''),\n alt: String(img.alt ?? ''),\n width: Number(img.naturalWidth ?? 0),\n height: Number(img.naturalHeight ?? 0),\n }));\n },\n [selector?.trim() || null, maxImages] as [string | null, number],\n );\n if (!images || images.length === 0) return ok('images', 'No images found on the page.', []);\n const lines = images.map((img: any, i: number) =>\n `${i + 1}. ${img.alt || '(no alt)'} — ${img.width}×${img.height}\\n ${img.src}`);\n return ok('images', `Found ${images.length} image(s):\\n${lines.join('\\n')}`, images);\n } catch (e) {\n return fail('images', 'IMAGES_FAILED', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst closeAction: BrowserActionHandler = async (ctx, _args) => {\n await ctx.manager.closePage(ctx.taskId);\n return ok('close', 'Browser page closed.');\n};\n\nconst dialogAction: BrowserActionHandler = async (ctx, args) => {\n const action = args.action as string;\n if (action !== 'accept' && action !== 'dismiss') {\n return fail('dialog', 'INVALID_ACTION', 'action must be \"accept\" or \"dismiss\"');\n }\n // Dialog handling relies on the CdpSupervisor event queue; this is a placeholder\n // that signals the supervisor to accept/dismiss the next pending dialog.\n const sup = ctx.supervisor;\n if (!sup) return fail('dialog', 'NO_SUPERVISOR', 'No dialog supervisor available');\n // Forward to supervisor (implementation detail in cdp-supervisor.ts)\n return ok('dialog', `Dialog ${action}ed.`);\n};\n\nconst waitAction: BrowserActionHandler = async (ctx, args) => {\n const selector = args.selector as string | undefined;\n const text = args.text as string | undefined;\n const state = (args.state as 'attached' | 'detached' | 'visible' | 'hidden' | undefined) ?? 'visible';\n const timeoutMs = typeof args.timeout_ms === 'number' ? args.timeout_ms : toMs(ctx);\n try {\n if (selector?.trim()) {\n await ctx.page.locator(selector.trim()).first().waitFor({ state, timeout: timeoutMs });\n } else if (text?.trim()) {\n await ctx.page.getByText(text.trim()).first().waitFor({ state: 'visible', timeout: timeoutMs });\n } else if (args.function || args.expression) {\n await ctx.page.waitForFunction(String(args.function ?? args.expression), null, { timeout: timeoutMs });\n } else {\n const ms = typeof args.ms === 'number' ? args.ms : 1000;\n await ctx.page.waitForTimeout(ms);\n }\n return ok('wait', 'Wait completed.');\n } catch (e) {\n return fail('wait', 'WAIT_TIMEOUT', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst outputAction: BrowserActionHandler = async (ctx, args) => {\n return ok('output', 'Output captured.', valueFromArgs(ctx, args));\n};\n\nconst assertAction: BrowserActionHandler = async (ctx, args) => {\n const actual = valueFromArgs(ctx, args);\n if ('equals' in args && JSON.stringify(actual) !== JSON.stringify(args.equals)) {\n return fail('assert', 'ASSERTION_FAILED', `Expected value to equal ${JSON.stringify(args.equals)}, got ${JSON.stringify(actual)?.slice(0, 500)}`);\n }\n if ('contains' in args && !valueContains(actual, args.contains)) {\n return fail('assert', 'ASSERTION_FAILED', `Expected value to contain ${JSON.stringify(args.contains)}`);\n }\n if ('matches' in args) {\n const pattern = new RegExp(String(args.matches));\n if (!pattern.test(String(actual ?? ''))) {\n return fail('assert', 'ASSERTION_FAILED', `Expected value to match /${pattern.source}/`);\n }\n }\n if (args.truthy === true && !isTruthyValue(actual)) {\n return fail('assert', 'ASSERTION_FAILED', `Expected value to be truthy, got ${JSON.stringify(actual)}`);\n }\n if (args.exists === true && (actual === undefined || actual === null || actual === '')) {\n return fail('assert', 'ASSERTION_FAILED', 'Expected value to exist');\n }\n return ok('assert', 'Assertion passed.');\n};\n\nconst waitForNavigationAction: BrowserActionHandler = async (ctx, args) => {\n const timeout = typeof args.timeout_ms === 'number' ? args.timeout_ms : toMs(ctx);\n const waitUntil = (args.wait_until as string) ?? 'domcontentloaded';\n try {\n await ctx.page.waitForLoadState(waitUntil as any, { timeout });\n return ok('wait_for_navigation', 'Navigation wait completed.');\n } catch (e) {\n return fail('wait_for_navigation', 'WAIT_TIMEOUT', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst waitForTimeoutAction: BrowserActionHandler = async (ctx, args) => {\n const ms = Number(args.ms ?? args.timeout_ms ?? 1000);\n await ctx.page.waitForTimeout(Number.isFinite(ms) ? ms : 1000);\n return ok('wait_for_timeout', `Waited ${ms}ms.`);\n};\n\nconst waitForFunctionAction: BrowserActionHandler = async (ctx, args) => {\n const expression = String(args.expression ?? args.function ?? '');\n if (!expression.trim()) return fail('wait_for_function', 'MISSING_EXPRESSION', 'expression is required');\n const timeout = typeof args.timeout_ms === 'number' ? args.timeout_ms : toMs(ctx);\n try {\n await ctx.page.waitForFunction(expression, null, { timeout });\n return ok('wait_for_function', 'Function wait completed.');\n } catch (e) {\n return fail('wait_for_function', 'WAIT_TIMEOUT', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst waitForNetworkIdleAction: BrowserActionHandler = async (ctx, args) => {\n const timeout = typeof args.timeout_ms === 'number' ? args.timeout_ms : toMs(ctx);\n try {\n await ctx.page.waitForLoadState('networkidle', { timeout });\n return ok('wait_for_network_idle', 'Network idle reached.');\n } catch (e) {\n return fail('wait_for_network_idle', 'WAIT_TIMEOUT', e instanceof Error ? e.message : String(e));\n }\n};\n\nconst elementTextAction: BrowserActionHandler = async (ctx, args) => {\n const selector = String(args.selector ?? '');\n if (!selector) return fail('element_text', 'MISSING_SELECTOR', 'selector is required');\n const timeout = toMs(ctx);\n const loc = ctx.page.locator(selector).first();\n await loc.waitFor({ state: 'attached', timeout });\n const text = await loc.innerText({ timeout }).catch(() => loc.textContent({ timeout }));\n return ok('element_text', String(text ?? ''), text ?? '');\n};\n\nconst elementAttributeAction: BrowserActionHandler = async (ctx, args) => {\n const selector = String(args.selector ?? '');\n const attribute = String(args.attribute ?? '');\n if (!selector || !attribute) return fail('element_attribute', 'INVALID_ARGS', 'selector and attribute are required');\n const timeout = toMs(ctx);\n const loc = ctx.page.locator(selector).first();\n await loc.waitFor({ state: 'attached', timeout });\n const value = await loc.getAttribute(attribute, { timeout });\n return ok('element_attribute', value ?? '', value);\n};\n\nconst boundingBoxAction: BrowserActionHandler = async (ctx, args) => {\n const selector = String(args.selector ?? '');\n if (!selector) return fail('bounding_box', 'MISSING_SELECTOR', 'selector is required');\n const timeout = toMs(ctx);\n const loc = ctx.page.locator(selector).first();\n await loc.waitFor({ state: 'visible', timeout });\n const box = await loc.boundingBox({ timeout });\n return ok('bounding_box', JSON.stringify(box), box);\n};\n\nconst setInputFilesAction: BrowserActionHandler = async (ctx, args) => {\n const selector = String(args.selector ?? '');\n const files = Array.isArray(args.files) ? args.files.map(String) : typeof args.file === 'string' ? [args.file] : [];\n if (!selector || files.length === 0) return fail('set_input_files', 'INVALID_ARGS', 'selector and files are required');\n await ctx.page.locator(selector).first().setInputFiles(files, { timeout: toMs(ctx) });\n return ok('set_input_files', `Attached ${files.length} file(s).`, { files });\n};\n\nconst getCookiesAction: BrowserActionHandler = async (ctx, args) => {\n const urls = Array.isArray(args.urls) ? args.urls.map(String) : undefined;\n const cookies = await ctx.page.context().cookies(urls);\n return ok('cookies', JSON.stringify(cookies, null, 2), cookies);\n};\n\nconst addCookiesAction: BrowserActionHandler = async (ctx, args) => {\n const cookies = Array.isArray(args.cookies) ? args.cookies as any[] : [];\n if (cookies.length === 0) return fail('add_cookies', 'INVALID_ARGS', 'cookies must be a non-empty array');\n await ctx.page.context().addCookies(cookies);\n return ok('add_cookies', `Added ${cookies.length} cookie(s).`);\n};\n\nconst clearCookiesAction: BrowserActionHandler = async (ctx) => {\n await ctx.page.context().clearCookies();\n return ok('clear_cookies', 'Cookies cleared.');\n};\n\nconst listTabsAction: BrowserActionHandler = async (ctx) => {\n const pages = ctx.page.context().pages();\n const tabs = await Promise.all(pages.map(async (page, index) => ({ index, url: page.url(), title: await page.title().catch(() => '') })));\n return ok('tabs', JSON.stringify(tabs, null, 2), tabs);\n};\n\nconst newTabAction: BrowserActionHandler = async (ctx, args) => {\n const page = await ctx.page.context().newPage();\n if (args.url) await page.goto(String(args.url), { waitUntil: 'domcontentloaded', timeout: toMs(ctx) });\n return ok('new_tab', `Opened tab: ${page.url()}`, { url: page.url(), title: await page.title().catch(() => '') });\n};\n\nconst switchTabAction: BrowserActionHandler = async (ctx, args) => {\n const index = Number(args.index ?? args.tab_index ?? 0);\n const pages = ctx.page.context().pages();\n const page = pages[index];\n if (!page) return fail('switch_tab', 'TAB_NOT_FOUND', `No tab at index ${index}`);\n await page.bringToFront();\n return ok('switch_tab', `Switched to tab ${index}.`, { index, url: page.url() });\n};\n\nconst selectAction: BrowserActionHandler = async (ctx, args) => {\n const source = 'from' in args ? args.from : pipelineLast(ctx);\n const path = String(args.path ?? args.value ?? '');\n const value = path ? resolvePath(source, path) : source;\n return ok('select', typeof value === 'string' ? value : JSON.stringify(value, null, 2), value);\n};\n\nconst mapAction: BrowserActionHandler = async (ctx, args) => {\n const source = 'from' in args ? args.from : pipelineLast(ctx);\n if (!Array.isArray(source)) return fail('map', 'INVALID_INPUT', 'map input must be an array');\n const path = String(args.path ?? '');\n const result = path ? source.map((item) => resolvePath(item, path)) : source;\n return ok('map', JSON.stringify(result, null, 2), result);\n};\n\nconst filterAction: BrowserActionHandler = async (ctx, args) => {\n const source = 'from' in args ? args.from : pipelineLast(ctx);\n if (!Array.isArray(source)) return fail('filter', 'INVALID_INPUT', 'filter input must be an array');\n const path = String(args.path ?? '');\n const equals = args.equals;\n const contains = args.contains;\n const truthy = args.truthy === true;\n const result = source.filter((item) => {\n const value = path ? resolvePath(item, path) : item;\n if ('equals' in args) return JSON.stringify(value) === JSON.stringify(equals);\n if ('contains' in args) return valueContains(value, contains);\n if (truthy) return isTruthyValue(value);\n return isTruthyValue(value);\n });\n return ok('filter', JSON.stringify(result, null, 2), result);\n};\n\nconst sortAction: BrowserActionHandler = async (ctx, args) => {\n const source = 'from' in args ? args.from : pipelineLast(ctx);\n if (!Array.isArray(source)) return fail('sort', 'INVALID_INPUT', 'sort input must be an array');\n const path = String(args.path ?? '');\n const direction = String(args.direction ?? 'asc');\n const result = [...source].sort((a, b) => {\n const av = path ? resolvePath(a, path) : a;\n const bv = path ? resolvePath(b, path) : b;\n const cmp = compareValues(av, bv);\n return direction === 'desc' ? -cmp : cmp;\n });\n return ok('sort', JSON.stringify(result, null, 2), result);\n};\n\nconst limitAction: BrowserActionHandler = async (ctx, args) => {\n const source = 'from' in args ? args.from : pipelineLast(ctx);\n if (!Array.isArray(source)) return fail('limit', 'INVALID_INPUT', 'limit input must be an array');\n const count = Math.max(0, Number(args.count ?? args.limit ?? 10));\n const offset = Math.max(0, Number(args.offset ?? 0));\n const result = source.slice(offset, offset + count);\n return ok('limit', JSON.stringify(result, null, 2), result);\n};\n\nconst fetchAction: BrowserActionHandler = async (ctx, args) => {\n const url = String(args.url ?? '');\n if (!url) return fail('fetch', 'MISSING_URL', 'url is required');\n const method = String(args.method ?? 'GET');\n const headers = asObject(args.headers) as Record<string, string>;\n const body = args.body === undefined ? undefined : typeof args.body === 'string' ? args.body : JSON.stringify(args.body);\n const result = await ctx.page.evaluate(\n async ({ url, method, headers, body }) => {\n const response = await fetch(url, { method, headers, body });\n const text = await response.text();\n const contentType = response.headers.get('content-type') ?? '';\n let parsed: unknown = text;\n if (contentType.includes('application/json')) {\n try { parsed = JSON.parse(text); } catch { parsed = text; }\n }\n return { ok: response.ok, status: response.status, url: response.url, headers: Object.fromEntries(response.headers.entries()), body: parsed };\n },\n { url, method, headers, body },\n );\n return ok('fetch', JSON.stringify(result, null, 2), result);\n};\n\nconst networkStartAction: BrowserActionHandler = async (ctx, args) => {\n networkMonitors.get(ctx.page)?.dispose();\n const includeBody = args.include_body === true || args.includeBody === true;\n const urlPattern = typeof args.url_pattern === 'string' ? args.url_pattern : typeof args.urlPattern === 'string' ? args.urlPattern : undefined;\n const events: NetworkEvent[] = [];\n const onRequest = (request: any) => {\n if (!matchesNetworkPattern(request.url(), urlPattern)) return;\n events.push({ type: 'request', url: request.url(), method: request.method(), resourceType: request.resourceType(), postData: request.postData(), timestamp: Date.now() });\n };\n const onResponse = async (response: any) => {\n if (!matchesNetworkPattern(response.url(), urlPattern)) return;\n const event: NetworkEvent = { type: 'response', url: response.url(), status: response.status(), timestamp: Date.now() };\n if (includeBody) {\n event.body = await response.text().catch(() => undefined);\n }\n events.push(event);\n };\n const onRequestFailed = (request: any) => {\n if (!matchesNetworkPattern(request.url(), urlPattern)) return;\n events.push({ type: 'requestfailed', url: request.url(), method: request.method(), errorText: request.failure()?.errorText, timestamp: Date.now() });\n };\n ctx.page.on('request', onRequest);\n ctx.page.on('response', onResponse);\n ctx.page.on('requestfailed', onRequestFailed);\n networkMonitors.set(ctx.page, {\n events,\n includeBody,\n urlPattern,\n dispose: () => {\n ctx.page.off('request', onRequest);\n ctx.page.off('response', onResponse);\n ctx.page.off('requestfailed', onRequestFailed);\n networkMonitors.delete(ctx.page);\n },\n });\n return ok('network_start', 'Network monitoring started.', { includeBody, urlPattern });\n};\n\nconst networkEventsAction: BrowserActionHandler = async (ctx) => {\n const monitor = networkMonitors.get(ctx.page);\n const events = monitor?.events ?? [];\n return ok('network_events', JSON.stringify(events, null, 2), events);\n};\n\nconst networkStopAction: BrowserActionHandler = async (ctx) => {\n const events = networkMonitors.get(ctx.page)?.events ?? [];\n networkMonitors.get(ctx.page)?.dispose();\n return ok('network_stop', JSON.stringify(events, null, 2), events);\n};\n\nconst collectAction: BrowserActionHandler = async (ctx, args) => {\n const events = networkMonitors.get(ctx.page)?.events ?? [];\n if (args.parse) {\n const parsed = await ctx.page.evaluate(\n ({ events, parse }) => {\n const parseFn = (0, eval)(`(${parse})`);\n return parseFn(events);\n },\n { events, parse: String(args.parse) },\n );\n return ok('collect', JSON.stringify(parsed, null, 2), parsed);\n }\n return ok('collect', JSON.stringify(events, null, 2), events);\n};\n\nconst tapAction: BrowserActionHandler = async (ctx, args) => {\n const pattern = String(args.capture ?? args.url ?? args.pattern ?? '');\n const timeoutMs = Number(args.timeout_ms ?? args.timeoutMs ?? 5000);\n const captured = await ctx.page.evaluate(\n async ({ pattern, timeoutMs }) => {\n let result: unknown = null;\n const g = globalThis as any;\n const originalFetch = g.fetch;\n g.fetch = async (...fetchArgs: any[]) => {\n const response = await originalFetch(...fetchArgs);\n try {\n const url = typeof fetchArgs[0] === 'string' ? fetchArgs[0] : fetchArgs[0]?.url ?? String(fetchArgs[0]);\n if ((!pattern || url.includes(pattern)) && result === null) {\n const clone = response.clone();\n const text = await clone.text();\n try { result = JSON.parse(text); } catch { result = text; }\n }\n } catch {}\n return response;\n };\n try {\n await new Promise((resolve) => setTimeout(resolve, timeoutMs));\n } finally {\n g.fetch = originalFetch;\n }\n return result;\n },\n { pattern, timeoutMs },\n );\n return ok('tap', JSON.stringify(captured, null, 2), captured);\n};\n\n// ─── Registry Construction ──────────────────────────────────────────────────\n\nexport function createBrowserActionRegistry(): BrowserActionRegistry {\n const handlers = new Map<string, BrowserActionHandler>();\n\n // Navigate\n handlers.set('open', navigateAction);\n handlers.set('navigate', navigateAction);\n // State / snapshot\n handlers.set('state', stateAction);\n handlers.set('snapshot', stateAction);\n // Interaction\n handlers.set('click', clickAction);\n handlers.set('type', typeAction);\n handlers.set('input', typeAction);\n handlers.set('scroll', scrollAction);\n handlers.set('back', backAction);\n handlers.set('keys', pressAction);\n handlers.set('press', pressAction);\n // Inspection\n handlers.set('screenshot', screenshotAction);\n handlers.set('images', imagesAction);\n // Eval\n handlers.set('console', evalAction);\n handlers.set('eval', evalAction);\n handlers.set('evaluate', evalAction);\n // Control\n handlers.set('dialog', dialogAction);\n handlers.set('close', closeAction);\n handlers.set('wait', waitAction);\n handlers.set('wait_for_navigation', waitForNavigationAction);\n handlers.set('wait_for_timeout', waitForTimeoutAction);\n handlers.set('wait_for_function', waitForFunctionAction);\n handlers.set('wait_for_network_idle', waitForNetworkIdleAction);\n // Pipeline-specific\n handlers.set('output', outputAction);\n handlers.set('assert', assertAction);\n handlers.set('select', selectAction);\n handlers.set('map', mapAction);\n handlers.set('filter', filterAction);\n handlers.set('sort', sortAction);\n handlers.set('limit', limitAction);\n handlers.set('fetch', fetchAction);\n handlers.set('collect', collectAction);\n handlers.set('tap', tapAction);\n // DOM / browser context\n handlers.set('element_text', elementTextAction);\n handlers.set('element_attribute', elementAttributeAction);\n handlers.set('bounding_box', boundingBoxAction);\n handlers.set('set_input_files', setInputFilesAction);\n handlers.set('cookies', getCookiesAction);\n handlers.set('get_cookies', getCookiesAction);\n handlers.set('add_cookies', addCookiesAction);\n handlers.set('clear_cookies', clearCookiesAction);\n handlers.set('tabs', listTabsAction);\n handlers.set('list_tabs', listTabsAction);\n handlers.set('new_tab', newTabAction);\n handlers.set('switch_tab', switchTabAction);\n // Network\n handlers.set('network_start', networkStartAction);\n handlers.set('network_events', networkEventsAction);\n handlers.set('network_stop', networkStopAction);\n\n return {\n get(name: string) { return handlers.get(name); },\n has(name: string) { return handlers.has(name); },\n names() { return [...handlers.keys()]; },\n async execute(name: string, ctx: BrowserActionContext, args: Record<string, unknown>): Promise<BrowserActionResult> {\n if (ctx.signal?.aborted) {\n return fail(name, 'ABORTED', 'Operation was aborted');\n }\n if (ctx.manager.getExtensionProvider()) {\n const { runExtensionRegistryAction } = await import('./extension-registry-bridge.js');\n return runExtensionRegistryAction(name, ctx, args);\n }\n const handler = handlers.get(name);\n if (!handler) {\n return fail(name, 'UNKNOWN_ACTION', `Unknown browser action: ${name}`);\n }\n if (ctx.signal?.aborted) {\n return fail(name, 'ABORTED', 'Operation was aborted');\n }\n try {\n return await handler(ctx, args);\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n log.error({ err: e, action: name }, `Action failed: ${message}`);\n return fail(name, 'ACTION_ERROR', message);\n }\n },\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend-from-config.js","names":[],"sources":["../../../src/browser/backend-from-config.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\n\nimport type { BrowserBackend, CloakBrowserConfig } from './providers/types.js';\n\n/**\n * Whether the gateway should keep the Chrome extension WebSocket bridge listening.\n * True when browser tools are enabled and the resolved backend is extension (including default).\n */\nexport function shouldRunExtensionBridgeServer(cfg: Config | undefined): boolean {\n return cfg?.browser?.enabled !== false && resolveBrowserBackendFromConfig(cfg).mode === 'extension';\n}\n\n/**\n * Resolve browser backend from root browser runtime config.\n * Precedence: `backend: 'extension'` → `cloakbrowser` → `cdpUrl` (CDP) → `cloudProvider` (remote) → `local` (explicit) → extension (default).\n */\nexport function resolveBrowserBackendFromConfig(cfg: Config | undefined): BrowserBackend {\n const browser = cfg?.browser;\n if (browser?.enabled === false) {\n return { mode: 'extension', config: {} };\n }\n const commandTimeout = resolveCommandTimeoutMs(browser?.commandTimeout);\n const backend = browser?.backend ?? 'extension';\n if (backend === 'extension') {\n const ext = browser?.extension;\n return {\n mode: 'extension',\n config: {\n ...(ext?.port !== undefined ? { port: ext.port } : {}),\n ...(ext?.host ? { host: ext.host } : {}),\n ...(ext?.connectionTimeout !== undefined ? { connectionTimeout: ext.connectionTimeout } : {}),\n commandTimeout,\n },\n };\n }\n if (backend === 'cloakbrowser') {\n return {\n mode: 'cloakbrowser',\n config: cloakBrowserConfigFromAgentDefaults(cfg),\n };\n }\n if (backend === 'cdp' && browser?.cdpUrl?.trim()) {\n return { mode: 'cdp', config: { wsEndpoint: browser.cdpUrl.trim() } };\n }\n if (backend === 'cloud') {\n const provider = browser?.cloudProvider === 'browserbase' || browser?.cloudProvider === 'browser-use'\n ? browser.cloudProvider\n : 'browserbase';\n return {\n mode: 'cloud',\n config: {\n type: provider,\n ...(browser?.cloud?.apiKey ? { apiKey: browser.cloud.apiKey } : {}),\n ...(browser?.cloud?.projectId ? { projectId: browser.cloud.projectId } : {}),\n ...(browser?.cloud?.region ? { region: browser.cloud.region } : {}),\n },\n };\n }\n if (backend === 'local') {\n return { mode: 'local', headless: browser?.headless === true };\n }\n return { mode: 'extension', config: { commandTimeout } };\n}\n\n/** CloakBrowser launch options aligned with saved agent defaults (headed for manual use). */\nexport function cloakBrowserConfigFromAgentDefaults(cfg: Config | undefined): CloakBrowserConfig {\n const browser = cfg?.browser;\n const cloak = browser?.cloakbrowser;\n return {\n headless: false,\n ...(cloak?.keepOpen !== undefined ? { keepOpen: cloak.keepOpen } : {}),\n ...(cloak?.temporaryProfile !== undefined ? { temporaryProfile: cloak.temporaryProfile } : {}),\n ...(cloak?.cacheDir ? { cacheDir: cloak.cacheDir } : {}),\n ...(cloak?.binaryPath ? { binaryPath: cloak.binaryPath } : {}),\n ...(cloak?.timezone ? { timezone: cloak.timezone } : {}),\n ...(cloak?.locale ? { locale: cloak.locale } : {}),\n ...(cloak?.webrtcIp ? { webrtcIp: cloak.webrtcIp } : {}),\n ...(cloak?.fingerprintPlatform ? { fingerprintPlatform: cloak.fingerprintPlatform } : {}),\n ...(cloak?.extraArgs ? { extraArgs: cloak.extraArgs } : {}),\n humanize: browser?.humanize ?? true,\n humanPreset: browser?.humanPreset ?? 'careful',\n reuseExisting: true,\n };\n}\n\nfunction resolveCommandTimeoutMs(value: number | undefined): number {\n if (typeof value !== 'number' || !Number.isFinite(value)) return 30_000;\n return Math.min(900, Math.max(5, Math.floor(value))) * 1000;\n}\n"],"mappings":";;;;;AAQA,SAAgB,+BAA+B,KAAkC;AAC/E,QAAO,KAAK,SAAS,YAAY,SAAS,gCAAgC,IAAI,CAAC,SAAS;;;;;;AAO1F,SAAgB,gCAAgC,KAAyC;CACvF,MAAM,UAAU,KAAK;AACrB,KAAI,SAAS,YAAY,MACvB,QAAO;EAAE,MAAM;EAAa,QAAQ,EAAE;EAAE;CAE1C,MAAM,iBAAiB,wBAAwB,SAAS,eAAe;CACvE,MAAM,UAAU,SAAS,WAAW;AACpC,KAAI,YAAY,aAAa;EAC3B,MAAM,MAAM,SAAS;AACrB,SAAO;GACL,MAAM;GACN,QAAQ;IACN,GAAI,KAAK,SAAS,KAAA,IAAY,EAAE,MAAM,IAAI,MAAM,GAAG,EAAE;IACrD,GAAI,KAAK,OAAO,EAAE,MAAM,IAAI,MAAM,GAAG,EAAE;IACvC,GAAI,KAAK,sBAAsB,KAAA,IAAY,EAAE,mBAAmB,IAAI,mBAAmB,GAAG,EAAE;IAC5F;IACD;GACF;;AAEH,KAAI,YAAY,eACd,QAAO;EACL,MAAM;EACN,QAAQ,oCAAoC,IAAI;EACjD;AAEH,KAAI,YAAY,SAAS,SAAS,QAAQ,MAAM,CAC9C,QAAO;EAAE,MAAM;EAAO,QAAQ,EAAE,YAAY,QAAQ,OAAO,MAAM,EAAE;EAAE;AAEvE,KAAI,YAAY,QAId,QAAO;EACL,MAAM;EACN,QAAQ;GACN,MANa,SAAS,kBAAkB,iBAAiB,SAAS,kBAAkB,gBACpF,QAAQ,gBACR;GAKA,GAAI,SAAS,OAAO,SAAS,EAAE,QAAQ,QAAQ,MAAM,QAAQ,GAAG,EAAE;GAClE,GAAI,SAAS,OAAO,YAAY,EAAE,WAAW,QAAQ,MAAM,WAAW,GAAG,EAAE;GAC3E,GAAI,SAAS,OAAO,SAAS,EAAE,QAAQ,QAAQ,MAAM,QAAQ,GAAG,EAAE;GACnE;EACF;AAEH,KAAI,YAAY,QACd,QAAO;EAAE,MAAM;EAAS,UAAU,SAAS,aAAa;EAAM;AAEhE,QAAO;EAAE,MAAM;EAAa,QAAQ,EAAE,gBAAgB;EAAE;;;AAI1D,SAAgB,oCAAoC,KAA6C;CAC/F,MAAM,UAAU,KAAK;CACrB,MAAM,QAAQ,SAAS;AACvB,QAAO;EACL,UAAU;EACV,GAAI,OAAO,aAAa,KAAA,IAAY,EAAE,UAAU,MAAM,UAAU,GAAG,EAAE;EACrE,GAAI,OAAO,qBAAqB,KAAA,IAAY,EAAE,kBAAkB,MAAM,kBAAkB,GAAG,EAAE;EAC7F,GAAI,OAAO,WAAW,EAAE,UAAU,MAAM,UAAU,GAAG,EAAE;EACvD,GAAI,OAAO,aAAa,EAAE,YAAY,MAAM,YAAY,GAAG,EAAE;EAC7D,GAAI,OAAO,WAAW,EAAE,UAAU,MAAM,UAAU,GAAG,EAAE;EACvD,GAAI,OAAO,SAAS,EAAE,QAAQ,MAAM,QAAQ,GAAG,EAAE;EACjD,GAAI,OAAO,WAAW,EAAE,UAAU,MAAM,UAAU,GAAG,EAAE;EACvD,GAAI,OAAO,sBAAsB,EAAE,qBAAqB,MAAM,qBAAqB,GAAG,EAAE;EACxF,GAAI,OAAO,YAAY,EAAE,WAAW,MAAM,WAAW,GAAG,EAAE;EAC1D,UAAU,SAAS,YAAY;EAC/B,aAAa,SAAS,eAAe;EACrC,eAAe;EAChB;;AAGH,SAAS,wBAAwB,OAAmC;AAClE,KAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,MAAM,CAAE,QAAO;AACjE,QAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC,CAAC,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-command-timeout.js","names":[],"sources":["../../../src/browser/browser-command-timeout.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\n\nconst DEFAULT_MS = 30_000;\nconst MIN_SEC = 5;\nconst MAX_SEC = 900;\n\nexport function resolveBrowserCommandTimeoutMs(cfg: Config | undefined): number {\n const raw = cfg?.browser?.commandTimeout;\n if (typeof raw !== 'number' || !Number.isFinite(raw)) return DEFAULT_MS;\n return Math.min(MAX_SEC, Math.max(MIN_SEC, Math.floor(raw))) * 1000;\n}\n"],"mappings":";AAEA,MAAM,aAAa;AACnB,MAAM,UAAU;AAChB,MAAM,UAAU;AAEhB,SAAgB,+BAA+B,KAAiC;CAC9E,MAAM,MAAM,KAAK,SAAS;AAC1B,KAAI,OAAO,QAAQ,YAAY,CAAC,OAAO,SAAS,IAAI,CAAE,QAAO;AAC7D,QAAO,KAAK,IAAI,SAAS,KAAK,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-dir-policy.js","names":[],"sources":["../../../src/browser/cache-dir-policy.ts"],"sourcesContent":["import { homedir } from 'node:os';\nimport { isAbsolute, relative, resolve, sep } from 'node:path';\n\n/**\n * Where user-facing browser caches (CloakBrowser binaries, CDP launcher\n * profiles, etc.) are allowed to live.\n *\n * Restricting the writable set to the user's home directory makes it safe to\n * expose `cacheDir` / `userDataDir` over the gateway HTTP API: an attacker who\n * already controls the gateway session cannot trick the install/launch flow\n * into seeding files under `/etc`, `/usr/local`, etc.\n *\n * Leading `~` and `~/` are expanded against the current process owner's home.\n */\n\nexport interface CacheDirCheckOk {\n ok: true;\n resolved: string;\n}\n\nexport interface CacheDirCheckErr {\n ok: false;\n message: string;\n resolved: string;\n}\n\nexport type CacheDirCheck = CacheDirCheckOk | CacheDirCheckErr;\n\nexport function expandHome(input: string): string {\n if (input === '~') return homedir();\n if (input.startsWith('~/') || input.startsWith(`~${sep}`)) {\n return resolve(homedir(), input.slice(2));\n }\n return input;\n}\n\n/**\n * Returns `{ ok: true, resolved }` when `input` is an absolute (or `~`-rooted)\n * path that resolves inside the user's home directory. Empty / missing input\n * is allowed (callers fall back to their own default).\n */\nexport function checkCacheDir(input: string | undefined | null): CacheDirCheck {\n if (input === undefined || input === null) {\n return { ok: true, resolved: '' };\n }\n const trimmed = input.trim();\n if (!trimmed) {\n return { ok: true, resolved: '' };\n }\n const expanded = expandHome(trimmed);\n if (!isAbsolute(expanded)) {\n return {\n ok: false,\n resolved: expanded,\n message: 'cacheDir must be an absolute path (or start with ~/)',\n };\n }\n const resolved = resolve(expanded);\n const home = resolve(homedir());\n const rel = relative(home, resolved);\n if (rel === '' || (!rel.startsWith('..') && !isAbsolute(rel))) {\n return { ok: true, resolved };\n }\n return {\n ok: false,\n resolved,\n message: `cacheDir must live under your home directory (${home}); got ${resolved}`,\n };\n}\n\n/** Throws when the path violates the policy. */\nexport function assertCacheDir(input: string | undefined | null): string {\n const r = checkCacheDir(input);\n if (r.ok === false) {\n throw new Error(r.message);\n }\n return r.resolved;\n}\n"],"mappings":";;;;AA4BA,SAAgB,WAAW,OAAuB;AAChD,KAAI,UAAU,IAAK,QAAO,SAAS;AACnC,KAAI,MAAM,WAAW,KAAK,IAAI,MAAM,WAAW,IAAI,MAAM,CACvD,QAAO,QAAQ,SAAS,EAAE,MAAM,MAAM,EAAE,CAAC;AAE3C,QAAO;;;;;;;AAQT,SAAgB,cAAc,OAAiD;AAC7E,KAAI,UAAU,KAAA,KAAa,UAAU,KACnC,QAAO;EAAE,IAAI;EAAM,UAAU;EAAI;CAEnC,MAAM,UAAU,MAAM,MAAM;AAC5B,KAAI,CAAC,QACH,QAAO;EAAE,IAAI;EAAM,UAAU;EAAI;CAEnC,MAAM,WAAW,WAAW,QAAQ;AACpC,KAAI,CAAC,WAAW,SAAS,CACvB,QAAO;EACL,IAAI;EACJ,UAAU;EACV,SAAS;EACV;CAEH,MAAM,WAAW,QAAQ,SAAS;CAClC,MAAM,OAAO,QAAQ,SAAS,CAAC;CAC/B,MAAM,MAAM,SAAS,MAAM,SAAS;AACpC,KAAI,QAAQ,MAAO,CAAC,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,IAAI,CAC1D,QAAO;EAAE,IAAI;EAAM;EAAU;AAE/B,QAAO;EACL,IAAI;EACJ;EACA,SAAS,iDAAiD,KAAK,SAAS;EACzE;;;AAIH,SAAgB,eAAe,OAA0C;CACvE,MAAM,IAAI,cAAc,MAAM;AAC9B,KAAI,EAAE,OAAO,MACX,OAAM,IAAI,MAAM,EAAE,QAAQ;AAE5B,QAAO,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cdp-local-launcher.js","names":["osPlatform"],"sources":["../../../src/browser/cdp-local-launcher.ts"],"sourcesContent":["/**\n * Launches a Chromium / Chrome instance locally with `--remote-debugging-port`\n * so the user can wire CDP backend without typing the command themselves.\n *\n * Instances live for the lifetime of the gateway process (no on-disk state).\n * Launching binds the debug port to 127.0.0.1; the user-data-dir is rooted\n * under `~/.xopc/cdp-launch/` and removed on stop.\n */\n\nimport { existsSync } from 'node:fs';\nimport { mkdir, rm } from 'node:fs/promises';\nimport { homedir, platform as osPlatform } from 'node:os';\nimport { join } from 'node:path';\nimport { ChildProcess, spawn } from 'node:child_process';\n\nimport { createLogger } from '../utils/logger.js';\n\nimport { pickFreePort } from './free-port.js';\nimport { loadPlaywrightCoreModule } from './providers/playwright-doctor.js';\n\nconst log = createLogger('CdpLocalLauncher');\n\nconst READY_TIMEOUT_MS = 20_000;\nconst READY_POLL_INTERVAL_MS = 250;\n\nexport interface LaunchedCdpInstance {\n /** Debug port the instance listens on (loopback). */\n port: number;\n /** Browser-level WS endpoint, ready for Playwright `connectOverCDP`. */\n wsEndpoint: string;\n /** Browser process pid. */\n pid: number;\n /** Resolved Chrome / Chromium binary path used to spawn. */\n executablePath: string;\n /** Temporary `--user-data-dir`. Deleted on stop. */\n userDataDir: string;\n /** Wall-clock spawn time (ms epoch). */\n startedAt: number;\n}\n\ninterface InstanceEntry extends LaunchedCdpInstance {\n child: ChildProcess;\n}\n\nconst instances = new Map<number, InstanceEntry>();\n\nfunction defaultUserDataRoot(): string {\n return join(homedir(), '.xopc', 'cdp-launch');\n}\n\n/** Resolve a Chrome / Chromium executable for the current platform. */\nexport async function resolveChromeBinary(override?: string): Promise<string> {\n if (override && override.trim()) {\n const candidate = override.trim();\n if (!existsSync(candidate)) {\n throw new Error(`Chrome executable not found at ${candidate}`);\n }\n return candidate;\n }\n\n try {\n const pw = await loadPlaywrightCoreModule();\n const chromium = pw.chromium\n ?? (pw as { default?: { chromium?: (typeof pw)['chromium'] } }).default?.chromium;\n const exec = chromium?.executablePath?.();\n if (exec && existsSync(exec)) {\n return exec;\n }\n } catch {\n // playwright-core unavailable — fall through to system probes\n }\n\n const os = osPlatform();\n const probes: string[] =\n os === 'darwin'\n ? [\n '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',\n '/Applications/Chromium.app/Contents/MacOS/Chromium',\n '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary',\n ]\n : os === 'win32'\n ? [\n 'C:\\\\Program Files\\\\Google\\\\Chrome\\\\Application\\\\chrome.exe',\n 'C:\\\\Program Files (x86)\\\\Google\\\\Chrome\\\\Application\\\\chrome.exe',\n ]\n : ['/usr/bin/google-chrome', '/usr/bin/chromium', '/usr/bin/chromium-browser', '/snap/bin/chromium'];\n\n for (const path of probes) {\n if (existsSync(path)) return path;\n }\n throw new Error(\n 'No Chrome / Chromium binary found. Install Chrome or run `npx playwright install chromium` first.',\n );\n}\n\nasync function waitForCdpEndpoint(port: number): Promise<string> {\n const deadline = Date.now() + READY_TIMEOUT_MS;\n while (Date.now() < deadline) {\n try {\n const res = await fetch(`http://127.0.0.1:${port}/json/version`, {\n signal: AbortSignal.timeout(1500),\n });\n if (res.ok) {\n const data = (await res.json()) as { webSocketDebuggerUrl?: string };\n if (data.webSocketDebuggerUrl) return data.webSocketDebuggerUrl;\n }\n } catch {\n // not ready yet\n }\n await new Promise((r) => setTimeout(r, READY_POLL_INTERVAL_MS));\n }\n throw new Error(`Chrome did not expose CDP within ${READY_TIMEOUT_MS / 1000}s on port ${port}`);\n}\n\nexport interface LaunchOptions {\n /** Optional override for the Chrome / Chromium binary. */\n executablePath?: string;\n /** Run headless. Default false (visible window so user can interact). */\n headless?: boolean;\n}\n\nexport async function launchLocalCdpChrome(opts: LaunchOptions = {}): Promise<LaunchedCdpInstance> {\n const executablePath = await resolveChromeBinary(opts.executablePath);\n const port = await pickFreePort();\n\n const root = defaultUserDataRoot();\n await mkdir(root, { recursive: true });\n const userDataDir = join(root, `${process.pid}-${port}`);\n await mkdir(userDataDir, { recursive: true });\n\n const args = [\n `--remote-debugging-address=127.0.0.1`,\n `--remote-debugging-port=${port}`,\n `--user-data-dir=${userDataDir}`,\n '--no-first-run',\n '--no-default-browser-check',\n ];\n if (opts.headless) args.push('--headless=new');\n if (osPlatform() === 'darwin') args.push('--use-mock-keychain');\n\n log.info({ executablePath, port, userDataDir }, 'Spawning local debuggable Chrome');\n\n const child = spawn(executablePath, args, {\n stdio: ['ignore', 'ignore', 'ignore'],\n detached: false,\n });\n\n // Surface early launch failures before waitForCdpEndpoint times out.\n const launchFailure = new Promise<never>((_resolve, reject) => {\n const onErr = (err: Error) => reject(new Error(`spawn failed: ${err.message}`));\n const onExit = (code: number | null, signal: NodeJS.Signals | null) => {\n const reason = signal ? `signal ${signal}` : `exit ${code ?? 'unknown'}`;\n reject(new Error(`Chrome exited before CDP came up (${reason})`));\n };\n child.once('error', onErr);\n child.once('exit', onExit);\n });\n\n let wsEndpoint: string;\n try {\n wsEndpoint = await Promise.race([waitForCdpEndpoint(port), launchFailure]);\n } catch (e) {\n child.kill();\n await rm(userDataDir, { recursive: true, force: true }).catch(() => {});\n throw e;\n }\n\n const entry: InstanceEntry = {\n port,\n wsEndpoint,\n pid: child.pid ?? -1,\n executablePath,\n userDataDir,\n startedAt: Date.now(),\n child,\n };\n instances.set(port, entry);\n\n // If Chrome exits on its own, drop bookkeeping so /instances reflects truth.\n child.once('exit', () => {\n instances.delete(port);\n void rm(userDataDir, { recursive: true, force: true }).catch(() => {});\n log.info({ port }, 'Local CDP Chrome exited');\n });\n\n return toPublic(entry);\n}\n\nexport async function stopLocalCdpChrome(port: number): Promise<boolean> {\n const entry = instances.get(port);\n if (!entry) return false;\n entry.child.kill();\n // exit handler will clean up the map and user-data-dir.\n return true;\n}\n\nexport function listLocalCdpInstances(): LaunchedCdpInstance[] {\n return [...instances.values()].map(toPublic);\n}\n\nfunction toPublic(entry: InstanceEntry): LaunchedCdpInstance {\n const { child: _child, ...pub } = entry;\n return pub;\n}\n\n/** Graceful shutdown — call from gateway exit hooks. */\nexport async function stopAllLocalCdpChromes(): Promise<void> {\n for (const [port] of instances) {\n await stopLocalCdpChrome(port);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;aAekD;AAKlD,MAAM,MAAM,aAAa,mBAAmB;AAE5C,MAAM,mBAAmB;AACzB,MAAM,yBAAyB;AAqB/B,MAAM,4BAAY,IAAI,KAA4B;AAElD,SAAS,sBAA8B;AACrC,QAAO,KAAK,SAAS,EAAE,SAAS,aAAa;;;AAI/C,eAAsB,oBAAoB,UAAoC;AAC5E,KAAI,YAAY,SAAS,MAAM,EAAE;EAC/B,MAAM,YAAY,SAAS,MAAM;AACjC,MAAI,CAAC,WAAW,UAAU,CACxB,OAAM,IAAI,MAAM,kCAAkC,YAAY;AAEhE,SAAO;;AAGT,KAAI;EACF,MAAM,KAAK,MAAM,0BAA0B;EAG3C,MAAM,QAFW,GAAG,YACd,GAA4D,SAAS,WACpD,kBAAkB;AACzC,MAAI,QAAQ,WAAW,KAAK,CAC1B,QAAO;SAEH;CAIR,MAAM,KAAKA,UAAY;CACvB,MAAM,SACJ,OAAO,WACH;EACE;EACA;EACA;EACD,GACD,OAAO,UACL,CACE,8DACA,mEACD,GACD;EAAC;EAA0B;EAAqB;EAA6B;EAAqB;AAE1G,MAAK,MAAM,QAAQ,OACjB,KAAI,WAAW,KAAK,CAAE,QAAO;AAE/B,OAAM,IAAI,MACR,oGACD;;AAGH,eAAe,mBAAmB,MAA+B;CAC/D,MAAM,WAAW,KAAK,KAAK,GAAG;AAC9B,QAAO,KAAK,KAAK,GAAG,UAAU;AAC5B,MAAI;GACF,MAAM,MAAM,MAAM,MAAM,oBAAoB,KAAK,gBAAgB,EAC/D,QAAQ,YAAY,QAAQ,KAAK,EAClC,CAAC;AACF,OAAI,IAAI,IAAI;IACV,MAAM,OAAQ,MAAM,IAAI,MAAM;AAC9B,QAAI,KAAK,qBAAsB,QAAO,KAAK;;UAEvC;AAGR,QAAM,IAAI,SAAS,MAAM,WAAW,GAAG,uBAAuB,CAAC;;AAEjE,OAAM,IAAI,MAAM,oCAAoC,mBAAmB,IAAK,YAAY,OAAO;;AAUjG,eAAsB,qBAAqB,OAAsB,EAAE,EAAgC;CACjG,MAAM,iBAAiB,MAAM,oBAAoB,KAAK,eAAe;CACrE,MAAM,OAAO,MAAM,cAAc;CAEjC,MAAM,OAAO,qBAAqB;AAClC,OAAM,MAAM,MAAM,EAAE,WAAW,MAAM,CAAC;CACtC,MAAM,cAAc,KAAK,MAAM,GAAG,QAAQ,IAAI,GAAG,OAAO;AACxD,OAAM,MAAM,aAAa,EAAE,WAAW,MAAM,CAAC;CAE7C,MAAM,OAAO;EACX;EACA,2BAA2B;EAC3B,mBAAmB;EACnB;EACA;EACD;AACD,KAAI,KAAK,SAAU,MAAK,KAAK,iBAAiB;AAC9C,KAAIA,UAAY,KAAK,SAAU,MAAK,KAAK,sBAAsB;AAE/D,KAAI,KAAK;EAAE;EAAgB;EAAM;EAAa,EAAE,mCAAmC;CAEnF,MAAM,QAAQ,MAAM,gBAAgB,MAAM;EACxC,OAAO;GAAC;GAAU;GAAU;GAAS;EACrC,UAAU;EACX,CAAC;CAGF,MAAM,gBAAgB,IAAI,SAAgB,UAAU,WAAW;EAC7D,MAAM,SAAS,QAAe,uBAAO,IAAI,MAAM,iBAAiB,IAAI,UAAU,CAAC;EAC/E,MAAM,UAAU,MAAqB,WAAkC;GACrE,MAAM,SAAS,SAAS,UAAU,WAAW,QAAQ,QAAQ;AAC7D,0BAAO,IAAI,MAAM,qCAAqC,OAAO,GAAG,CAAC;;AAEnE,QAAM,KAAK,SAAS,MAAM;AAC1B,QAAM,KAAK,QAAQ,OAAO;GAC1B;CAEF,IAAI;AACJ,KAAI;AACF,eAAa,MAAM,QAAQ,KAAK,CAAC,mBAAmB,KAAK,EAAE,cAAc,CAAC;UACnE,GAAG;AACV,QAAM,MAAM;AACZ,QAAM,GAAG,aAAa;GAAE,WAAW;GAAM,OAAO;GAAM,CAAC,CAAC,YAAY,GAAG;AACvE,QAAM;;CAGR,MAAM,QAAuB;EAC3B;EACA;EACA,KAAK,MAAM,OAAO;EAClB;EACA;EACA,WAAW,KAAK,KAAK;EACrB;EACD;AACD,WAAU,IAAI,MAAM,MAAM;AAG1B,OAAM,KAAK,cAAc;AACvB,YAAU,OAAO,KAAK;AACjB,KAAG,aAAa;GAAE,WAAW;GAAM,OAAO;GAAM,CAAC,CAAC,YAAY,GAAG;AACtE,MAAI,KAAK,EAAE,MAAM,EAAE,0BAA0B;GAC7C;AAEF,QAAO,SAAS,MAAM;;AAGxB,eAAsB,mBAAmB,MAAgC;CACvE,MAAM,QAAQ,UAAU,IAAI,KAAK;AACjC,KAAI,CAAC,MAAO,QAAO;AACnB,OAAM,MAAM,MAAM;AAElB,QAAO;;AAGT,SAAgB,wBAA+C;AAC7D,QAAO,CAAC,GAAG,UAAU,QAAQ,CAAC,CAAC,IAAI,SAAS;;AAG9C,SAAS,SAAS,OAA2C;CAC3D,MAAM,EAAE,OAAO,QAAQ,GAAG,QAAQ;AAClC,QAAO;;;AAIT,eAAsB,yBAAwC;AAC5D,MAAK,MAAM,CAAC,SAAS,UACnB,OAAM,mBAAmB,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cdp-supervisor.js","names":[],"sources":["../../../src/browser/cdp-supervisor.ts"],"sourcesContent":["import type { Page, Dialog } from 'playwright-core';\n\nimport { createLogger } from '../utils/logger.js';\n\nconst log = createLogger('CDPSupervisor');\n\n/** Represents a captured JS dialog event. */\nexport interface DialogEvent {\n id: string;\n type: 'alert' | 'confirm' | 'prompt' | 'beforeunload';\n message: string;\n defaultValue: string;\n timestamp: number;\n handled: boolean;\n response?: 'accepted' | 'dismissed';\n}\n\n/** Console message captured by the supervisor. */\nexport interface ConsoleEntry {\n type: string;\n text: string;\n timestamp: number;\n}\n\nexport type DialogPolicy = 'must_respond' | 'auto_dismiss' | 'auto_accept';\n\nexport interface CdpSupervisorOptions {\n dialogPolicy: DialogPolicy;\n dialogTimeoutSeconds: number;\n maxConsoleEntries: number;\n}\n\nconst DEFAULT_OPTIONS: CdpSupervisorOptions = {\n dialogPolicy: 'auto_dismiss',\n dialogTimeoutSeconds: 300,\n maxConsoleEntries: 200,\n};\n\n/**\n * CDP Supervisor — persistent event listener for browser pages.\n *\n * Monitors Dialog events, console output, and frame navigation.\n * Aligned with hermes-agent's `CDPSupervisor` pattern but using\n * Playwright's high-level event API instead of raw CDP WebSocket.\n */\nexport class CdpSupervisor {\n private readonly options: CdpSupervisorOptions;\n private dialogQueue: DialogEvent[] = [];\n private consoleBuffer: ConsoleEntry[] = [];\n private attachedPages = new WeakSet<Page>();\n private dialogCounter = 0;\n private pendingDialog: Dialog | null = null;\n\n constructor(options?: Partial<CdpSupervisorOptions>) {\n this.options = { ...DEFAULT_OPTIONS, ...options };\n }\n\n /** Attach the supervisor to a page to begin monitoring. */\n attach(page: Page): void {\n if (this.attachedPages.has(page)) return;\n this.attachedPages.add(page);\n\n page.on('dialog', (dialog) => this._onDialog(dialog));\n page.on('console', (msg) => this._onConsole(msg));\n page.on('close', () => this.attachedPages.delete(page));\n\n log.debug('Supervisor attached to page');\n }\n\n /** Get all pending (unhandled) dialogs. */\n getPendingDialogs(): DialogEvent[] {\n return this.dialogQueue.filter((d) => !d.handled);\n }\n\n /** Get all captured dialog events (including handled). */\n getAllDialogs(): DialogEvent[] {\n return [...this.dialogQueue];\n }\n\n /** Get recent console entries. */\n getConsoleEntries(limit?: number): ConsoleEntry[] {\n const max = limit ?? this.options.maxConsoleEntries;\n return this.consoleBuffer.slice(-max);\n }\n\n /** Handle a pending dialog by id or the most recent one. */\n async handleDialog(\n action: 'accept' | 'dismiss',\n options?: { dialogId?: string; promptText?: string },\n ): Promise<DialogEvent | undefined> {\n // Find the target dialog event\n let targetEvent: DialogEvent | undefined;\n if (options?.dialogId) {\n targetEvent = this.dialogQueue.find((d) => d.id === options.dialogId && !d.handled);\n } else {\n targetEvent = this.dialogQueue.findLast((d) => !d.handled);\n }\n\n if (!targetEvent) return undefined;\n\n // If we still have the live Playwright Dialog reference, use it\n if (this.pendingDialog) {\n try {\n if (action === 'accept') {\n await this.pendingDialog.accept(options?.promptText ?? '');\n } else {\n await this.pendingDialog.dismiss();\n }\n } catch {\n // Dialog may have already been auto-handled or timed out\n }\n this.pendingDialog = null;\n }\n\n targetEvent.handled = true;\n targetEvent.response = action === 'accept' ? 'accepted' : 'dismissed';\n return targetEvent;\n }\n\n /** Clear all dialog history. */\n clearDialogs(): void {\n this.dialogQueue = [];\n }\n\n /** Clear console buffer. */\n clearConsole(): void {\n this.consoleBuffer = [];\n }\n\n // ── Internal handlers ──────────────────────────────────────────────────\n\n private _onDialog(dialog: Dialog): void {\n this.dialogCounter += 1;\n const event: DialogEvent = {\n id: `dialog-${this.dialogCounter}`,\n type: dialog.type() as DialogEvent['type'],\n message: dialog.message(),\n defaultValue: dialog.defaultValue(),\n timestamp: Date.now(),\n handled: false,\n };\n this.dialogQueue.push(event);\n this.pendingDialog = dialog;\n\n log.info({ dialogId: event.id, type: event.type, message: event.message }, 'Dialog detected');\n\n // Apply auto-handling policy\n switch (this.options.dialogPolicy) {\n case 'auto_accept':\n void dialog.accept().then(() => {\n event.handled = true;\n event.response = 'accepted';\n this.pendingDialog = null;\n }).catch(() => {});\n break;\n\n case 'auto_dismiss':\n void dialog.dismiss().then(() => {\n event.handled = true;\n event.response = 'dismissed';\n this.pendingDialog = null;\n }).catch(() => {});\n break;\n\n case 'must_respond':\n // Set a timeout to auto-dismiss if the agent doesn't respond\n setTimeout(() => {\n if (!event.handled) {\n void dialog.dismiss().then(() => {\n event.handled = true;\n event.response = 'dismissed';\n this.pendingDialog = null;\n log.warn({ dialogId: event.id }, 'Dialog auto-dismissed after timeout');\n }).catch(() => {});\n }\n }, this.options.dialogTimeoutSeconds * 1000);\n break;\n }\n }\n\n private _onConsole(msg: import('playwright-core').ConsoleMessage): void {\n const entry: ConsoleEntry = {\n type: msg.type(),\n text: msg.text(),\n timestamp: Date.now(),\n };\n this.consoleBuffer.push(entry);\n\n // Trim buffer to max size\n if (this.consoleBuffer.length > this.options.maxConsoleEntries * 1.5) {\n this.consoleBuffer = this.consoleBuffer.slice(-this.options.maxConsoleEntries);\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"free-port.js","names":[],"sources":["../../../src/browser/free-port.ts"],"sourcesContent":["import { createServer } from 'node:net';\n\n/** Ask the OS for an unused TCP port on 127.0.0.1. */\nexport async function pickFreePort(): Promise<number> {\n return new Promise((resolve, reject) => {\n const server = createServer();\n server.listen(0, '127.0.0.1', () => {\n const address = server.address();\n if (!address || typeof address === 'string') {\n server.close();\n reject(new Error('Failed to pick free port'));\n return;\n }\n const port = address.port;\n server.close(() => resolve(port));\n });\n server.on('error', reject);\n });\n}\n"],"mappings":";;;AAGA,eAAsB,eAAgC;AACpD,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,SAAS,cAAc;AAC7B,SAAO,OAAO,GAAG,mBAAmB;GAClC,MAAM,UAAU,OAAO,SAAS;AAChC,OAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC3C,WAAO,OAAO;AACd,2BAAO,IAAI,MAAM,2BAA2B,CAAC;AAC7C;;GAEF,MAAM,OAAO,QAAQ;AACrB,UAAO,YAAY,QAAQ,KAAK,CAAC;IACjC;AACF,SAAO,GAAG,SAAS,OAAO;GAC1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"humanize.js","names":[],"sources":["../../../src/browser/humanize.ts"],"sourcesContent":["/**\n * Human-like interaction primitives for browser automation.\n *\n * Implements Bezier mouse movement, humanized clicking, per-character typing\n * with random delays, and wheel-based scrolling with acceleration/deceleration.\n *\n * Ported from brocli's human.rs — all input is dispatched via CDP Input domain\n * through Playwright's CDPSession, bypassing Playwright's high-level API to\n * produce more realistic event patterns.\n */\n\nimport type { CDPSession, Page } from 'playwright-core';\n\n// ── Configuration ───────────────────────────────────────────────────────────\n\n/** All tunable parameters for human-like behavior. */\nexport interface HumanConfig {\n // Keyboard\n typingDelayMs: number;\n typingDelaySpreadMs: number;\n typingPauseChance: number;\n typingPauseRangeMs: [number, number];\n keyHoldMs: [number, number];\n\n // Mouse movement\n mouseStepsDivisor: number;\n mouseMinSteps: number;\n mouseMaxSteps: number;\n mouseWobbleMax: number;\n mouseOvershootChance: number;\n mouseOvershootPx: [number, number];\n mouseBurstSize: [number, number];\n mouseBurstPauseMs: [number, number];\n\n // Click\n clickAimDelayMs: [number, number];\n clickHoldMs: [number, number];\n clickInputXRange: [number, number];\n\n // Scroll\n scrollDeltaBase: [number, number];\n scrollDeltaVariance: number;\n scrollPauseFastMs: [number, number];\n scrollPauseSlowMs: [number, number];\n scrollAccelSteps: [number, number];\n scrollDecelSteps: [number, number];\n scrollOvershootChance: number;\n scrollOvershootPx: [number, number];\n scrollSettleDelayMs: [number, number];\n\n // Initial cursor\n initialCursorX: [number, number];\n initialCursorY: [number, number];\n}\n\nexport type HumanPreset = 'default' | 'careful';\n\nconst DEFAULT_CONFIG: HumanConfig = {\n typingDelayMs: 70,\n typingDelaySpreadMs: 40,\n typingPauseChance: 0.1,\n typingPauseRangeMs: [400, 1000],\n keyHoldMs: [15, 35],\n\n mouseStepsDivisor: 8,\n mouseMinSteps: 25,\n mouseMaxSteps: 80,\n mouseWobbleMax: 1.5,\n mouseOvershootChance: 0.15,\n mouseOvershootPx: [3, 6],\n mouseBurstSize: [3, 5],\n mouseBurstPauseMs: [8, 18],\n\n clickAimDelayMs: [60, 140],\n clickHoldMs: [40, 100],\n clickInputXRange: [0.05, 0.30],\n\n scrollDeltaBase: [80, 130],\n scrollDeltaVariance: 0.2,\n scrollPauseFastMs: [30, 80],\n scrollPauseSlowMs: [80, 200],\n scrollAccelSteps: [2, 3],\n scrollDecelSteps: [2, 3],\n scrollOvershootChance: 0.1,\n scrollOvershootPx: [50, 150],\n scrollSettleDelayMs: [300, 600],\n\n initialCursorX: [400, 700],\n initialCursorY: [45, 60],\n};\n\nconst CAREFUL_CONFIG: HumanConfig = {\n ...DEFAULT_CONFIG,\n typingDelayMs: 100,\n typingDelaySpreadMs: 50,\n typingPauseChance: 0.15,\n typingPauseRangeMs: [500, 1200],\n keyHoldMs: [20, 45],\n\n mouseBurstPauseMs: [12, 25],\n\n clickAimDelayMs: [80, 200],\n clickHoldMs: [60, 150],\n\n scrollPauseFastMs: [100, 200],\n scrollPauseSlowMs: [250, 600],\n scrollSettleDelayMs: [400, 800],\n};\n\nexport function resolveHumanConfig(preset: HumanPreset = 'default'): HumanConfig {\n return preset === 'careful' ? { ...CAREFUL_CONFIG } : { ...DEFAULT_CONFIG };\n}\n\n// ── Geometry ────────────────────────────────────────────────────────────────\n\ninterface Point {\n x: number;\n y: number;\n}\n\ninterface BBox {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n// ── Random helpers ──────────────────────────────────────────────────────────\n\nfunction randRange(min: number, max: number): number {\n return min + Math.random() * (max - min);\n}\n\nfunction randInt(min: number, max: number): number {\n return Math.floor(randRange(min, max + 1));\n}\n\n// ── Bezier mouse trajectory ─────────────────────────────────────────────────\n\nfunction easeInOut(t: number): number {\n return (1 - Math.cos(Math.PI * t)) / 2;\n}\n\nfunction bezier(p0: Point, p1: Point, p2: Point, p3: Point, t: number): Point {\n const u = 1 - t;\n const tt = t * t;\n const uu = u * u;\n const uuu = uu * u;\n const ttt = tt * t;\n return {\n x: uuu * p0.x + 3 * uu * t * p1.x + 3 * u * tt * p2.x + ttt * p3.x,\n y: uuu * p0.y + 3 * uu * t * p1.y + 3 * u * tt * p2.y + ttt * p3.y,\n };\n}\n\n/** Generate a human-like mouse path from start to end using cubic Bezier with wobble. */\nexport function generateMousePath(start: Point, end: Point, cfg: HumanConfig): Point[] {\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const steps = Math.min(\n cfg.mouseMaxSteps,\n Math.max(cfg.mouseMinSteps, Math.round(distance / cfg.mouseStepsDivisor)),\n );\n\n // Control points with randomized offsets for natural curve\n const cp1: Point = {\n x: start.x + dx * randRange(0.2, 0.4) + randRange(-30, 30),\n y: start.y + dy * randRange(0.0, 0.3) + randRange(-30, 30),\n };\n const cp2: Point = {\n x: start.x + dx * randRange(0.6, 0.8) + randRange(-30, 30),\n y: start.y + dy * randRange(0.7, 1.0) + randRange(-30, 30),\n };\n\n const path: Point[] = [];\n for (let i = 0; i <= steps; i++) {\n const raw = i / steps;\n const t = easeInOut(raw);\n const pt = bezier(start, cp1, cp2, end, t);\n // Add wobble\n const wobble = cfg.mouseWobbleMax * (1 - raw); // wobble decreases near target\n pt.x += randRange(-wobble, wobble);\n pt.y += randRange(-wobble, wobble);\n path.push(pt);\n }\n\n // Optional overshoot + correction\n if (Math.random() < cfg.mouseOvershootChance) {\n const overshootPx = randRange(cfg.mouseOvershootPx[0], cfg.mouseOvershootPx[1]);\n const angle = Math.atan2(dy, dx);\n path.push({\n x: end.x + Math.cos(angle) * overshootPx,\n y: end.y + Math.sin(angle) * overshootPx,\n });\n // Correction back to target\n path.push({ x: end.x + randRange(-1, 1), y: end.y + randRange(-1, 1) });\n }\n\n return path;\n}\n\n// ── Typing plan ─────────────────────────────────────────────────────────────\n\nexport type TypeAction =\n | { kind: 'char'; ch: string; holdMs: number }\n | { kind: 'delay'; ms: number }\n | { kind: 'pause'; ms: number };\n\n/** Generate a plan of typing actions for a given text. */\nexport function generateTypingPlan(text: string, cfg: HumanConfig): TypeAction[] {\n const actions: TypeAction[] = [];\n const chars = [...text];\n\n for (let i = 0; i < chars.length; i++) {\n const hold = randRange(cfg.keyHoldMs[0], cfg.keyHoldMs[1]);\n actions.push({ kind: 'char', ch: chars[i], holdMs: hold });\n\n if (i < chars.length - 1) {\n if (Math.random() < cfg.typingPauseChance) {\n const pause = randRange(cfg.typingPauseRangeMs[0], cfg.typingPauseRangeMs[1]);\n actions.push({ kind: 'pause', ms: pause });\n } else {\n const delay = cfg.typingDelayMs + (Math.random() - 0.5) * 2 * cfg.typingDelaySpreadMs;\n actions.push({ kind: 'delay', ms: Math.max(10, delay) });\n }\n }\n }\n\n return actions;\n}\n\n// ── Scroll plan ─────────────────────────────────────────────────────────────\n\nexport type ScrollAction =\n | { kind: 'wheel'; deltaY: number }\n | { kind: 'pause'; ms: number };\n\n/** Generate a scroll plan to move totalDelta pixels vertically. */\nexport function generateScrollPlan(totalDelta: number, cfg: HumanConfig): ScrollAction[] {\n const direction = totalDelta > 0 ? 1 : -1;\n const absDistance = Math.abs(totalDelta);\n const avgDelta = (cfg.scrollDeltaBase[0] + cfg.scrollDeltaBase[1]) / 2;\n const totalClicks = Math.max(3, Math.ceil(absDistance / avgDelta));\n const accelSteps = randInt(cfg.scrollAccelSteps[0], cfg.scrollAccelSteps[1]);\n const decelSteps = randInt(cfg.scrollDecelSteps[0], cfg.scrollDecelSteps[1]);\n\n const actions: ScrollAction[] = [];\n let scrolled = 0;\n\n for (let i = 0; i < totalClicks; i++) {\n if (scrolled >= absDistance) break;\n\n let delta: number;\n let pause: number;\n\n if (i < accelSteps) {\n delta = randRange(60, 100);\n pause = randRange(cfg.scrollPauseSlowMs[0], cfg.scrollPauseSlowMs[1]);\n } else if (i >= totalClicks - decelSteps) {\n delta = randRange(50, 90);\n pause = randRange(cfg.scrollPauseSlowMs[0], cfg.scrollPauseSlowMs[1]);\n } else {\n delta = randRange(cfg.scrollDeltaBase[0], cfg.scrollDeltaBase[1]);\n pause = randRange(cfg.scrollPauseFastMs[0], cfg.scrollPauseFastMs[1]);\n }\n\n const variance = 1 + (Math.random() - 0.5) * 2 * cfg.scrollDeltaVariance;\n const finalDelta = Math.round(delta * variance * direction);\n actions.push({ kind: 'wheel', deltaY: finalDelta });\n actions.push({ kind: 'pause', ms: pause });\n scrolled += delta * variance;\n }\n\n // Optional overshoot + correction\n if (Math.random() < cfg.scrollOvershootChance) {\n const overshoot = Math.round(\n randRange(cfg.scrollOvershootPx[0], cfg.scrollOvershootPx[1]) * direction,\n );\n actions.push({ kind: 'wheel', deltaY: overshoot });\n const settle = randRange(cfg.scrollSettleDelayMs[0], cfg.scrollSettleDelayMs[1]);\n actions.push({ kind: 'pause', ms: settle });\n const correction = Math.round(randRange(40, 80) * -direction);\n actions.push({ kind: 'wheel', deltaY: correction });\n }\n\n return actions;\n}\n\n// ── Click target resolution ─────────────────────────────────────────────────\n\nfunction clickTarget(bbox: BBox, isInput: boolean, cfg: HumanConfig): Point {\n const x = isInput\n ? bbox.x + bbox.width * randRange(cfg.clickInputXRange[0], cfg.clickInputXRange[1])\n : bbox.x + randRange(bbox.width * 0.15, bbox.width * 0.85);\n const y = bbox.y + randRange(bbox.height * 0.2, bbox.height * 0.8);\n return { x, y };\n}\n\n// ── CDP dispatch helpers ────────────────────────────────────────────────────\n\nfunction sleepMs(ms: number): Promise<void> {\n if (ms <= 0) return Promise.resolve();\n return new Promise((resolve) => setTimeout(resolve, Math.round(ms)));\n}\n\nasync function ensureCdpSession(page: Page): Promise<CDPSession> {\n return page.context().newCDPSession(page);\n}\n\nasync function dispatchMouseMove(cdp: CDPSession, x: number, y: number): Promise<void> {\n await cdp.send('Input.dispatchMouseEvent', { type: 'mouseMoved', x, y });\n}\n\ntype CdpMouseEventType = 'mousePressed' | 'mouseReleased' | 'mouseMoved' | 'mouseWheel';\n\nasync function dispatchMouseEvent(\n cdp: CDPSession,\n eventType: CdpMouseEventType,\n x: number,\n y: number,\n clickCount: number,\n): Promise<void> {\n await cdp.send('Input.dispatchMouseEvent', {\n type: eventType,\n x,\n y,\n button: 'left',\n clickCount,\n });\n}\n\nasync function dispatchWheel(\n cdp: CDPSession,\n x: number,\n y: number,\n deltaY: number,\n): Promise<void> {\n await cdp.send('Input.dispatchMouseEvent', {\n type: 'mouseWheel',\n x,\n y,\n deltaX: 0,\n deltaY,\n });\n}\n\nasync function dispatchChar(cdp: CDPSession, ch: string, holdMs: number): Promise<void> {\n await cdp.send('Input.dispatchKeyEvent', { type: 'keyDown', key: ch, text: ch });\n await sleepMs(holdMs);\n await cdp.send('Input.dispatchKeyEvent', { type: 'keyUp', key: ch });\n}\n\nasync function dispatchKey(\n cdp: CDPSession,\n key: string,\n modifiers?: number,\n): Promise<void> {\n await cdp.send('Input.dispatchKeyEvent', {\n type: 'keyDown',\n key,\n ...(modifiers !== undefined ? { modifiers } : {}),\n });\n await cdp.send('Input.dispatchKeyEvent', {\n type: 'keyUp',\n key,\n ...(modifiers !== undefined ? { modifiers } : {}),\n });\n}\n\nasync function executeMousePath(\n cdp: CDPSession,\n path: Point[],\n cfg: HumanConfig,\n): Promise<void> {\n const burstSize = randInt(cfg.mouseBurstSize[0], cfg.mouseBurstSize[1]);\n let burstCounter = 0;\n\n for (const pt of path) {\n await dispatchMouseMove(cdp, pt.x, pt.y);\n burstCounter++;\n if (burstCounter >= burstSize) {\n const pause = randRange(cfg.mouseBurstPauseMs[0], cfg.mouseBurstPauseMs[1]);\n await sleepMs(pause);\n burstCounter = 0;\n }\n }\n}\n\nasync function getElementBBox(page: Page, selector: string): Promise<BBox> {\n const bbox = await page.locator(selector).boundingBox();\n if (!bbox) {\n throw new Error(`selector not found: ${selector}`);\n }\n return bbox;\n}\n\n// ── Public async entry points ───────────────────────────────────────────────\n\n/** Humanized click on a CSS selector. */\nexport async function humanizedClick(\n page: Page,\n selector: string,\n preset: HumanPreset = 'default',\n): Promise<void> {\n const cfg = resolveHumanConfig(preset);\n const cdp = await ensureCdpSession(page);\n\n try {\n // Initialize cursor at a random starting position\n let cx = randRange(cfg.initialCursorX[0], cfg.initialCursorX[1]);\n let cy = randRange(cfg.initialCursorY[0], cfg.initialCursorY[1]);\n await dispatchMouseMove(cdp, cx, cy);\n\n // Get element bounding box and compute click target\n const bbox = await getElementBBox(page, selector);\n const target = clickTarget(bbox, false, cfg);\n\n // Move to target along Bezier path\n const path = generateMousePath({ x: cx, y: cy }, target, cfg);\n await executeMousePath(cdp, path, cfg);\n const last = path[path.length - 1];\n if (last) {\n cx = last.x;\n cy = last.y;\n }\n\n // Click with aim delay and hold\n await sleepMs(randRange(cfg.clickAimDelayMs[0], cfg.clickAimDelayMs[1]));\n await dispatchMouseEvent(cdp, 'mousePressed', cx, cy, 1);\n await sleepMs(randRange(cfg.clickHoldMs[0], cfg.clickHoldMs[1]));\n await dispatchMouseEvent(cdp, 'mouseReleased', cx, cy, 1);\n } finally {\n await cdp.detach().catch(() => {});\n }\n}\n\n/** Humanized fill: click the field, clear, type character by character. */\nexport async function humanizedFill(\n page: Page,\n selector: string,\n value: string,\n preset: HumanPreset = 'default',\n): Promise<void> {\n const cfg = resolveHumanConfig(preset);\n const cdp = await ensureCdpSession(page);\n\n try {\n // Initialize cursor\n let cx = randRange(cfg.initialCursorX[0], cfg.initialCursorX[1]);\n let cy = randRange(cfg.initialCursorY[0], cfg.initialCursorY[1]);\n await dispatchMouseMove(cdp, cx, cy);\n\n // Get element bbox and move to it (input-biased left click)\n const bbox = await getElementBBox(page, selector);\n const target = clickTarget(bbox, true, cfg);\n const path = generateMousePath({ x: cx, y: cy }, target, cfg);\n await executeMousePath(cdp, path, cfg);\n const last = path[path.length - 1];\n if (last) {\n cx = last.x;\n cy = last.y;\n }\n\n // Click to focus\n await sleepMs(randRange(cfg.clickAimDelayMs[0], cfg.clickAimDelayMs[1]));\n await dispatchMouseEvent(cdp, 'mousePressed', cx, cy, 1);\n await sleepMs(randRange(cfg.clickHoldMs[0], cfg.clickHoldMs[1]));\n await dispatchMouseEvent(cdp, 'mouseReleased', cx, cy, 1);\n await sleepMs(100);\n\n // Select all + delete to clear existing content\n await dispatchKey(cdp, 'a', 8); // 8 = Meta modifier\n await sleepMs(50);\n await dispatchKey(cdp, 'Backspace');\n await sleepMs(80);\n\n // Type character by character\n const plan = generateTypingPlan(value, cfg);\n for (const action of plan) {\n if (action.kind === 'char') {\n await dispatchChar(cdp, action.ch, action.holdMs);\n } else {\n await sleepMs(action.ms);\n }\n }\n } finally {\n await cdp.detach().catch(() => {});\n }\n}\n\n/** Humanized key press with hold delay. */\nexport async function humanizedPress(\n page: Page,\n key: string,\n preset: HumanPreset = 'default',\n): Promise<void> {\n const cfg = resolveHumanConfig(preset);\n const cdp = await ensureCdpSession(page);\n\n try {\n const hold = randRange(cfg.keyHoldMs[0], cfg.keyHoldMs[1]);\n await cdp.send('Input.dispatchKeyEvent', { type: 'keyDown', key });\n await sleepMs(hold);\n await cdp.send('Input.dispatchKeyEvent', { type: 'keyUp', key });\n } finally {\n await cdp.detach().catch(() => {});\n }\n}\n\n/** Humanized scroll by deltaY pixels using wheel events. */\nexport async function humanizedScroll(\n page: Page,\n deltaY: number,\n preset: HumanPreset = 'default',\n): Promise<void> {\n const cfg = resolveHumanConfig(preset);\n const cdp = await ensureCdpSession(page);\n\n try {\n const cx = randRange(cfg.initialCursorX[0], cfg.initialCursorX[1]);\n const cy = randRange(cfg.initialCursorY[0], cfg.initialCursorY[1]);\n await dispatchMouseMove(cdp, cx, cy);\n\n const plan = generateScrollPlan(deltaY, cfg);\n for (const action of plan) {\n if (action.kind === 'wheel') {\n await dispatchWheel(cdp, cx, cy, action.deltaY);\n } else {\n await sleepMs(action.ms);\n }\n }\n } finally {\n await cdp.detach().catch(() => {});\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-lock.js","names":[],"sources":["../../../src/browser/install-lock.ts"],"sourcesContent":["/** Per-backend install mutex — Playwright and CloakBrowser may install in parallel. */\nexport type BrowserInstallKind = 'playwright' | 'cloakbrowser';\n\nconst locked: Record<BrowserInstallKind, boolean> = {\n playwright: false,\n cloakbrowser: false,\n};\n\nconst activeController: Record<BrowserInstallKind, AbortController | null> = {\n playwright: null,\n cloakbrowser: null,\n};\n\nexport type BrowserInstallLock = {\n readonly signal: AbortSignal;\n release: () => void;\n};\n\nexport function acquireBrowserInstallLock(kind: BrowserInstallKind): BrowserInstallLock | null {\n if (locked[kind]) return null;\n locked[kind] = true;\n const controller = new AbortController();\n activeController[kind] = controller;\n let released = false;\n\n return {\n signal: controller.signal,\n release: () => {\n if (released) return;\n released = true;\n locked[kind] = false;\n if (activeController[kind] === controller) {\n activeController[kind] = null;\n }\n },\n };\n}\n\n/** User-initiated cancel — aborts the in-flight install for this kind. */\nexport function cancelBrowserInstall(kind: BrowserInstallKind): boolean {\n const controller = activeController[kind];\n if (!controller) return false;\n controller.abort();\n return true;\n}\n\nexport function isBrowserInstallRunning(kind: BrowserInstallKind): boolean {\n return locked[kind];\n}\n\n/** Test helper — reset lock state between unit tests. */\nexport function resetBrowserInstallLockForTests(): void {\n for (const kind of ['playwright', 'cloakbrowser'] as const) {\n activeController[kind]?.abort();\n activeController[kind] = null;\n locked[kind] = false;\n }\n}\n"],"mappings":";AAGA,MAAM,SAA8C;CAClD,YAAY;CACZ,cAAc;CACf;AAED,MAAM,mBAAuE;CAC3E,YAAY;CACZ,cAAc;CACf;AAOD,SAAgB,0BAA0B,MAAqD;AAC7F,KAAI,OAAO,MAAO,QAAO;AACzB,QAAO,QAAQ;CACf,MAAM,aAAa,IAAI,iBAAiB;AACxC,kBAAiB,QAAQ;CACzB,IAAI,WAAW;AAEf,QAAO;EACL,QAAQ,WAAW;EACnB,eAAe;AACb,OAAI,SAAU;AACd,cAAW;AACX,UAAO,QAAQ;AACf,OAAI,iBAAiB,UAAU,WAC7B,kBAAiB,QAAQ;;EAG9B;;;AAIH,SAAgB,qBAAqB,MAAmC;CACtE,MAAM,aAAa,iBAAiB;AACpC,KAAI,CAAC,WAAY,QAAO;AACxB,YAAW,OAAO;AAClB,QAAO;;AAGT,SAAgB,wBAAwB,MAAmC;AACzE,QAAO,OAAO;;;AAIhB,SAAgB,kCAAwC;AACtD,MAAK,MAAM,QAAQ,CAAC,cAAc,eAAe,EAAW;AAC1D,mBAAiB,OAAO,OAAO;AAC/B,mBAAiB,QAAQ;AACzB,SAAO,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.js","names":[],"sources":["../../../src/browser/manager.ts"],"sourcesContent":["import type { Browser, BrowserContext, Page } from 'playwright-core';\n\nimport { createLogger } from '../utils/logger.js';\n\nimport { loadPlaywrightCoreModule } from './providers/playwright-doctor.js';\nimport type { BrowserBackend, CloudBrowserProvider, CloudBrowserProviderConfig, ExtensionConnectionConfig } from './providers/types.js';\nimport type { ExtensionBrowserProvider } from './providers/extension.js';\n\nconst log = createLogger('browser-manager');\n\nconst MAX_PAGES = 3;\nconst PAGE_IDLE_TIMEOUT_MS = 5 * 60 * 1000;\n\nexport interface BrowserManagerOptions {\n getHeadless: () => boolean;\n /** Backend connection mode. Default: local Playwright. */\n getBackend?: () => BrowserBackend;\n}\n\n/**\n * Multi-backend browser manager — supports local Playwright, direct CDP, and cloud providers.\n *\n * One browser context shared by all sessions; one {@link Page} per task/session key (max {@link MAX_PAGES}).\n * Backend is selected at first connection based on {@link BrowserManagerOptions.getBackend}.\n */\nexport class BrowserManager {\n private browser: Browser | null = null;\n private context: BrowserContext | null = null;\n private cloudProvider: CloudBrowserProvider | null = null;\n private extensionProvider: ExtensionBrowserProvider | null = null;\n private extensionRelease: (() => Promise<void>) | null = null;\n private cloakChildProcess: import('node:child_process').ChildProcess | null = null;\n private cloakTempProfileDir: string | null = null;\n private pages = new Map<string, { page: Page; lastUsed: number }>();\n private readonly options: BrowserManagerOptions;\n private activeBackendMode: BrowserBackend['mode'] | null = null;\n\n constructor(options: BrowserManagerOptions) {\n this.options = options;\n }\n\n /** Current backend mode (null if not yet connected). */\n get backendMode(): string | null {\n return this.activeBackendMode;\n }\n\n private evictIdlePages(): void {\n const now = Date.now();\n for (const [id, entry] of this.pages) {\n if (entry.page.isClosed() || now - entry.lastUsed > PAGE_IDLE_TIMEOUT_MS) {\n void entry.page.close().catch(() => {});\n this.pages.delete(id);\n log.debug({ taskId: id }, 'Evicted idle or closed browser page');\n }\n }\n }\n\n private _isPlaywrightConnectionAlive(): boolean {\n if (!this.browser || !this.context) return false;\n try {\n if (typeof this.browser.isConnected === 'function' && !this.browser.isConnected()) {\n return false;\n }\n return true;\n } catch {\n return false;\n }\n }\n\n private _wireBrowserLifecycle(browser: Browser): void {\n browser.on('disconnected', () => {\n log.warn({ mode: this.activeBackendMode }, 'Browser disconnected — clearing stale session');\n this._clearPlaywrightSessionRefs();\n });\n }\n\n /** Drop Playwright handles without tearing down extension bridge. */\n private _clearPlaywrightSessionRefs(): void {\n this.pages.clear();\n this.context = null;\n this.browser = null;\n this.cloakChildProcess = null;\n this.cloakTempProfileDir = null;\n if (this.cloudProvider) {\n void this.cloudProvider.disconnect().catch(() => {});\n this.cloudProvider = null;\n }\n }\n\n private async _resetStalePlaywrightSession(): Promise<void> {\n for (const [, entry] of this.pages) {\n await entry.page.close().catch(() => {});\n }\n this.pages.clear();\n\n if (this.cloudProvider) {\n await this.cloudProvider.disconnect().catch(() => {});\n this.cloudProvider = null;\n }\n\n if (this.cloakChildProcess || this.cloakTempProfileDir) {\n const { cleanupCloakBrowser } = await import('./providers/cloakbrowser.js');\n await cleanupCloakBrowser(this.cloakChildProcess, this.cloakTempProfileDir).catch(() => {});\n this.cloakChildProcess = null;\n this.cloakTempProfileDir = null;\n }\n\n await this.context?.close().catch(() => {});\n await this.browser?.close().catch(() => {});\n this.context = null;\n this.browser = null;\n }\n\n /**\n * Ensure Playwright context or Chrome Extension provider is ready.\n * Extension mode does not create a Playwright {@link BrowserContext}.\n */\n async ensureConnected(): Promise<void> {\n if (this.extensionProvider) return;\n\n if (this.context && this._isPlaywrightConnectionAlive()) {\n return;\n }\n\n if (this.context || this.browser) {\n log.warn({ mode: this.activeBackendMode }, 'Browser session unavailable — reconnecting');\n await this._resetStalePlaywrightSession();\n }\n\n const backend = this.options.getBackend?.() ?? { mode: 'local' as const, headless: false };\n\n switch (backend.mode) {\n case 'cdp':\n await this._connectViaCdp(backend.config.wsEndpoint);\n break;\n case 'cloud':\n await this._connectViaCloud(backend.config);\n break;\n case 'extension':\n await this._connectViaExtension(backend.config);\n break;\n case 'cloakbrowser':\n await this._connectViaCloakBrowser(backend.config);\n break;\n case 'local':\n default:\n await this._launchLocal(backend.mode === 'local' ? backend.headless : this.options.getHeadless() === true);\n break;\n }\n\n this.activeBackendMode = backend.mode;\n if (this.browser) {\n this._wireBrowserLifecycle(this.browser);\n }\n }\n\n private async _launchLocal(headless: boolean): Promise<void> {\n const pw = await loadPlaywrightCoreModule();\n const chromium = pw.chromium ?? (pw as { default?: { chromium?: (typeof pw)['chromium'] } }).default?.chromium;\n if (!chromium?.launch) {\n throw new Error(\n 'playwright-core did not expose chromium (try reinstall: pnpm install playwright-core; install browser: npx playwright install chromium)',\n );\n }\n this.browser = await chromium.launch({\n headless,\n ...(headless ? { channel: 'chromium' } : {}),\n args: ['--no-sandbox', '--disable-setuid-sandbox'],\n });\n this.context = await this.browser.newContext({\n viewport: { width: 1280, height: 720 },\n userAgent:\n 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n });\n log.info({ headless, mode: 'local' }, 'Browser launched (local)');\n }\n\n private async _connectViaCdp(wsEndpoint: string): Promise<void> {\n const pw = await loadPlaywrightCoreModule();\n const chromium = pw.chromium ?? (pw as { default?: { chromium?: (typeof pw)['chromium'] } }).default?.chromium;\n if (!chromium?.connectOverCDP) {\n throw new Error('playwright-core does not support connectOverCDP');\n }\n this.browser = await chromium.connectOverCDP(wsEndpoint);\n const contexts = this.browser.contexts();\n this.context = contexts.length > 0 ? contexts[0] : await this.browser.newContext();\n log.info({ mode: 'cdp', wsEndpoint }, 'Browser connected (CDP)');\n }\n\n private async _connectViaCloud(config: CloudBrowserProviderConfig): Promise<void> {\n const { BrowserbaseProvider } = await import('./providers/browserbase.js');\n const { BrowserUseProvider } = await import('./providers/browser-use.js');\n\n const provider = config.type === 'browserbase'\n ? new BrowserbaseProvider(config)\n : new BrowserUseProvider(config);\n\n const { browser, context } = await provider.connect();\n this.browser = browser;\n this.context = context;\n this.cloudProvider = provider;\n log.info({ mode: 'cloud', provider: config.type }, `Browser connected (${config.type})`);\n }\n\n private async _connectViaExtension(config?: ExtensionConnectionConfig): Promise<void> {\n const { acquireExtensionBrowserServer } = await import('./providers/extension-ws-acquire.js');\n const { provider, release } = await acquireExtensionBrowserServer(config);\n this.extensionProvider = provider;\n this.extensionRelease = release;\n log.info({ port: config?.port ?? 19820 }, 'Extension WS server ready, waiting for Chrome Extension...');\n await provider.waitForConnection();\n // Extension mode does not use Playwright — context stays null.\n // The action registry dispatches directly via extensionProvider.sendCommand().\n log.info({ mode: 'extension' }, 'Browser connected (Chrome Extension)');\n }\n\n private async _connectViaCloakBrowser(config?: import('./providers/types.js').CloakBrowserConfig): Promise<void> {\n const { launchCloakBrowser } = await import('./providers/cloakbrowser.js');\n const result = await launchCloakBrowser(config);\n if (!result.browser || !result.context) {\n throw new Error('BrowserManager: CloakBrowser launch did not return a Playwright connection');\n }\n this.browser = result.browser;\n this.context = result.context;\n this.cloakChildProcess = result.childProcess;\n this.cloakTempProfileDir = result.temporaryProfileDir;\n log.info({ mode: 'cloakbrowser' }, 'Browser connected (CloakBrowser)');\n }\n\n async getPage(taskId: string): Promise<Page> {\n if (this.extensionProvider) {\n throw new Error('BrowserManager.getPage is not used in Chrome Extension backend mode');\n }\n\n this.evictIdlePages();\n await this.ensureConnected();\n\n const existing = this.pages.get(taskId);\n if (existing && !existing.page.isClosed()) {\n existing.lastUsed = Date.now();\n return existing.page;\n }\n if (existing) {\n this.pages.delete(taskId);\n }\n\n if (this.pages.size >= MAX_PAGES) {\n const oldest = [...this.pages.entries()].sort((a, b) => a[1].lastUsed - b[1].lastUsed)[0];\n if (oldest) {\n await oldest[1].page.close().catch(() => {});\n this.pages.delete(oldest[0]);\n }\n }\n\n const ctx = this.context;\n if (!ctx) {\n throw new Error('BrowserManager: Playwright context missing after ensureConnected');\n }\n const page = await ctx.newPage();\n this.pages.set(taskId, { page, lastUsed: Date.now() });\n return page;\n }\n\n async closePage(taskId: string): Promise<void> {\n if (this.extensionProvider) {\n return;\n }\n const entry = this.pages.get(taskId);\n if (entry) {\n await entry.page.close().catch(() => {});\n this.pages.delete(taskId);\n }\n }\n\n /** Get the extension provider (only available in extension mode). */\n getExtensionProvider(): ExtensionBrowserProvider | null {\n return this.extensionProvider;\n }\n\n async shutdown(): Promise<void> {\n for (const [, entry] of this.pages) {\n await entry.page.close().catch(() => {});\n }\n this.pages.clear();\n\n if (this.cloudProvider) {\n await this.cloudProvider.disconnect().catch(() => {});\n this.cloudProvider = null;\n }\n\n if (this.extensionRelease) {\n await this.extensionRelease().catch(() => {});\n this.extensionRelease = null;\n }\n this.extensionProvider = null;\n\n // CloakBrowser cleanup — kill child process and remove temp profile\n if (this.cloakChildProcess || this.cloakTempProfileDir) {\n const { cleanupCloakBrowser } = await import('./providers/cloakbrowser.js');\n await cleanupCloakBrowser(this.cloakChildProcess, this.cloakTempProfileDir).catch(() => {});\n this.cloakChildProcess = null;\n this.cloakTempProfileDir = null;\n }\n\n await this.context?.close().catch(() => {});\n await this.browser?.close().catch(() => {});\n this.context = null;\n this.browser = null;\n this.activeBackendMode = null;\n log.info('Browser shut down');\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"output.js","names":[],"sources":["../../../../src/browser/pipeline/output.ts"],"sourcesContent":["/**\n * Pipeline output formatting.\n */\n\nimport type { BrowserActionResult, BrowserArtifact, BrowserDiagnostics } from '../actions/types.js';\n\nexport interface PipelineStepTrace {\n index: number;\n scope: string;\n action: string;\n ok: boolean;\n elapsedMs: number;\n text?: string;\n data?: unknown;\n error?: { code: string; message: string };\n}\n\nexport interface PipelineOutput {\n ok: boolean;\n name: string;\n last: unknown;\n outputs: unknown[];\n artifacts: BrowserArtifact[];\n diagnostics: BrowserDiagnostics;\n trace: PipelineStepTrace[];\n error?: { step: number; action: string; code: string; message: string };\n}\n\nexport function createPipelineOutput(name: string): PipelineOutput {\n return {\n ok: true,\n name,\n last: undefined,\n outputs: [],\n artifacts: [],\n diagnostics: { warnings: [] },\n trace: [],\n };\n}\n\nexport function addStepTrace(output: PipelineOutput, trace: PipelineStepTrace, result: BrowserActionResult): void {\n output.trace.push(trace);\n\n if (result.artifacts) {\n output.artifacts.push(...result.artifacts);\n }\n\n if (!result.ok) {\n output.ok = false;\n output.error = {\n step: trace.index,\n action: result.action,\n code: result.error?.code ?? 'UNKNOWN',\n message: result.error?.message ?? 'Step failed',\n };\n }\n\n if (result.diagnostics) {\n if (result.diagnostics.url) output.diagnostics.url = result.diagnostics.url;\n if (result.diagnostics.title) output.diagnostics.title = result.diagnostics.title;\n if (result.diagnostics.snapshot) output.diagnostics.snapshot = result.diagnostics.snapshot;\n if (result.diagnostics.screenshot) output.diagnostics.screenshot = result.diagnostics.screenshot;\n if (result.diagnostics.console) output.diagnostics.console = result.diagnostics.console;\n if (result.diagnostics.network) output.diagnostics.network = result.diagnostics.network;\n if (result.diagnostics.warnings) {\n output.diagnostics.warnings ??= [];\n output.diagnostics.warnings.push(...result.diagnostics.warnings);\n }\n }\n}\n\nexport function formatPipelineResult(output: PipelineOutput): BrowserActionResult {\n const data = {\n output: output.outputs.length === 0 ? output.last : output.outputs.length === 1 ? output.outputs[0] : output.outputs,\n last: output.last,\n outputs: output.outputs,\n trace: output.trace,\n };\n\n if (output.ok) {\n const textValue = data.output;\n const text = textValue === undefined\n ? `Pipeline \"${output.name}\" completed (${output.trace.length} steps).`\n : typeof textValue === 'string'\n ? textValue\n : JSON.stringify(textValue, null, 2);\n return {\n ok: true,\n action: 'pipeline',\n text,\n data,\n artifacts: output.artifacts.length > 0 ? output.artifacts : undefined,\n diagnostics: output.diagnostics,\n };\n }\n\n const errText = output.error\n ? `Pipeline \"${output.name}\" failed at step ${output.error.step + 1} (${output.error.action}): [${output.error.code}] ${output.error.message}`\n : `Pipeline \"${output.name}\" failed.`;\n return {\n ok: false,\n action: 'pipeline',\n text: errText,\n data,\n error: output.error ? { code: output.error.code, message: output.error.message } : { code: 'PIPELINE_FAILED', message: errText },\n artifacts: output.artifacts.length > 0 ? output.artifacts : undefined,\n diagnostics: output.diagnostics,\n };\n}\n"],"mappings":";AA4BA,SAAgB,qBAAqB,MAA8B;AACjE,QAAO;EACL,IAAI;EACJ;EACA,MAAM,KAAA;EACN,SAAS,EAAE;EACX,WAAW,EAAE;EACb,aAAa,EAAE,UAAU,EAAE,EAAE;EAC7B,OAAO,EAAE;EACV;;AAGH,SAAgB,aAAa,QAAwB,OAA0B,QAAmC;AAChH,QAAO,MAAM,KAAK,MAAM;AAExB,KAAI,OAAO,UACT,QAAO,UAAU,KAAK,GAAG,OAAO,UAAU;AAG5C,KAAI,CAAC,OAAO,IAAI;AACd,SAAO,KAAK;AACZ,SAAO,QAAQ;GACb,MAAM,MAAM;GACZ,QAAQ,OAAO;GACf,MAAM,OAAO,OAAO,QAAQ;GAC5B,SAAS,OAAO,OAAO,WAAW;GACnC;;AAGH,KAAI,OAAO,aAAa;AACtB,MAAI,OAAO,YAAY,IAAK,QAAO,YAAY,MAAM,OAAO,YAAY;AACxE,MAAI,OAAO,YAAY,MAAO,QAAO,YAAY,QAAQ,OAAO,YAAY;AAC5E,MAAI,OAAO,YAAY,SAAU,QAAO,YAAY,WAAW,OAAO,YAAY;AAClF,MAAI,OAAO,YAAY,WAAY,QAAO,YAAY,aAAa,OAAO,YAAY;AACtF,MAAI,OAAO,YAAY,QAAS,QAAO,YAAY,UAAU,OAAO,YAAY;AAChF,MAAI,OAAO,YAAY,QAAS,QAAO,YAAY,UAAU,OAAO,YAAY;AAChF,MAAI,OAAO,YAAY,UAAU;AAC/B,UAAO,YAAY,aAAa,EAAE;AAClC,UAAO,YAAY,SAAS,KAAK,GAAG,OAAO,YAAY,SAAS;;;;AAKtE,SAAgB,qBAAqB,QAA6C;CAChF,MAAM,OAAO;EACX,QAAQ,OAAO,QAAQ,WAAW,IAAI,OAAO,OAAO,OAAO,QAAQ,WAAW,IAAI,OAAO,QAAQ,KAAK,OAAO;EAC7G,MAAM,OAAO;EACb,SAAS,OAAO;EAChB,OAAO,OAAO;EACf;AAED,KAAI,OAAO,IAAI;EACb,MAAM,YAAY,KAAK;AAMvB,SAAO;GACL,IAAI;GACJ,QAAQ;GACR,MARW,cAAc,KAAA,IACvB,aAAa,OAAO,KAAK,eAAe,OAAO,MAAM,OAAO,YAC5D,OAAO,cAAc,WACnB,YACA,KAAK,UAAU,WAAW,MAAM,EAAE;GAKtC;GACA,WAAW,OAAO,UAAU,SAAS,IAAI,OAAO,YAAY,KAAA;GAC5D,aAAa,OAAO;GACrB;;CAGH,MAAM,UAAU,OAAO,QACnB,aAAa,OAAO,KAAK,mBAAmB,OAAO,MAAM,OAAO,EAAE,IAAI,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,KAAK,IAAI,OAAO,MAAM,YACnI,aAAa,OAAO,KAAK;AAC7B,QAAO;EACL,IAAI;EACJ,QAAQ;EACR,MAAM;EACN;EACA,OAAO,OAAO,QAAQ;GAAE,MAAM,OAAO,MAAM;GAAM,SAAS,OAAO,MAAM;GAAS,GAAG;GAAE,MAAM;GAAmB,SAAS;GAAS;EAChI,WAAW,OAAO,UAAU,SAAS,IAAI,OAAO,YAAY,KAAA;EAC5D,aAAa,OAAO;EACrB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","names":["sleep"],"sources":["../../../../src/browser/pipeline/runner.ts"],"sourcesContent":["/**\n * Pipeline runner: deterministic browser automation DSL execution.\n */\n\nimport { setTimeout as sleep } from 'node:timers/promises';\n\nimport { createLogger } from '../../utils/logger.js';\nimport type { BrowserActionContext, BrowserActionRegistry, BrowserActionResult } from '../actions/types.js';\nimport { loadBrowserPipelineSource, resolvePipelineIncludeLocation } from './source.js';\nimport { parseBrowserPipeline, type PipelineDocument, type PipelineStep } from './schema.js';\nimport { isTruthyValue, resolveTemplateDeep, type TemplateContext } from './template.js';\nimport { addStepTrace, createPipelineOutput, formatPipelineResult, type PipelineOutput } from './output.js';\n\nconst log = createLogger('PipelineRunner');\n\nconst CONTROL_ACTIONS = new Set(['if', 'retry', 'sleep', 'set_var']);\n\nexport interface ValidateResult {\n ok: boolean;\n document?: PipelineDocument;\n errors: { path: string; message: string }[];\n}\n\nexport interface RunBrowserPipelineOptions {\n dryRun?: boolean;\n sourceLocation?: string;\n}\n\ninterface PipelineRuntime {\n doc: PipelineDocument;\n args: Record<string, unknown>;\n last: unknown;\n outputs: unknown[];\n vars: Record<string, unknown>;\n error?: { code?: string; message?: string };\n}\n\nexport function validateBrowserPipeline(yamlSource: string, registry?: BrowserActionRegistry): ValidateResult {\n const parseResult = parseBrowserPipeline(yamlSource);\n if (!parseResult.ok || !parseResult.document) {\n return { ok: false, errors: parseResult.errors };\n }\n\n const errors: { path: string; message: string }[] = [];\n validateSteps(parseResult.document.pipeline, 'pipeline', registry, errors);\n validateSteps(parseResult.document.onError ?? [], 'on_error', registry, errors);\n return errors.length > 0\n ? { ok: false, document: parseResult.document, errors }\n : { ok: true, document: parseResult.document, errors: [] };\n}\n\nexport async function validateBrowserPipelineSource(\n yamlSource: string,\n registry?: BrowserActionRegistry,\n sourceLocation?: string,\n): Promise<ValidateResult> {\n try {\n const doc = await expandPipelineDocument(yamlSource, sourceLocation);\n const errors: { path: string; message: string }[] = [];\n validateSteps(doc.pipeline, 'pipeline', registry, errors);\n validateSteps(doc.onError ?? [], 'on_error', registry, errors);\n return errors.length > 0 ? { ok: false, document: doc, errors } : { ok: true, document: doc, errors: [] };\n } catch (e) {\n return { ok: false, errors: [{ path: '', message: e instanceof Error ? e.message : String(e) }] };\n }\n}\n\nfunction validateSteps(\n steps: PipelineStep[],\n path: string,\n registry: BrowserActionRegistry | undefined,\n errors: { path: string; message: string }[],\n): void {\n if (!registry) return;\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n if (!CONTROL_ACTIONS.has(step.action) && !registry.has(step.action)) {\n errors.push({ path: `${path}[${i}]`, message: `Unknown action: \"${step.action}\"` });\n }\n }\n}\n\nasync function expandPipelineDocument(\n yamlSource: string,\n sourceLocation: string | undefined,\n visiting = new Set<string>(),\n): Promise<PipelineDocument> {\n const parsed = parseBrowserPipeline(yamlSource);\n if (!parsed.ok || !parsed.document) {\n const message = parsed.errors.map((e) => `${e.path}: ${e.message}`).join('\\n');\n throw new Error(message);\n }\n\n const doc = parsed.document;\n const key = sourceLocation ?? `inline:${doc.name}`;\n if (visiting.has(key)) {\n throw new Error(`Circular pipeline include detected: ${key}`);\n }\n\n visiting.add(key);\n let merged: PipelineDocument = {\n name: doc.name,\n description: doc.description,\n provider: doc.provider,\n include: [],\n timeoutSeconds: doc.timeoutSeconds,\n args: {},\n pipeline: [],\n onError: [],\n };\n\n for (const includePath of doc.include ?? []) {\n const includeLocation = resolvePipelineIncludeLocation(includePath, sourceLocation);\n const includeSource = await loadBrowserPipelineSource(includeLocation);\n const includeDoc = await expandPipelineDocument(includeSource.source, includeSource.location, visiting);\n merged = mergePipelineDocuments(merged, includeDoc);\n }\n\n merged = mergePipelineDocuments(merged, doc);\n visiting.delete(key);\n return merged;\n}\n\nfunction mergePipelineDocuments(target: PipelineDocument, source: PipelineDocument): PipelineDocument {\n return {\n name: source.name || target.name,\n description: source.description ?? target.description,\n provider: source.provider ?? target.provider,\n include: [...(target.include ?? []), ...(source.include ?? [])],\n timeoutSeconds: source.timeoutSeconds ?? target.timeoutSeconds,\n args: { ...target.args, ...source.args },\n pipeline: [...target.pipeline, ...source.pipeline],\n onError: [...(target.onError ?? []), ...(source.onError ?? [])],\n };\n}\n\nfunction resolveArgs(doc: PipelineDocument, overrides: Record<string, unknown>): Record<string, unknown> {\n const resolved: Record<string, unknown> = {};\n for (const key of Object.keys(overrides)) {\n if (!(key in doc.args)) {\n throw new Error(`Unknown pipeline arg: ${key}`);\n }\n }\n for (const [key, def] of Object.entries(doc.args)) {\n const value = key in overrides ? overrides[key] : def.default;\n if (value === undefined) {\n if (def.required) throw new Error(`Missing required arg: ${key}`);\n continue;\n }\n if (def.choices && !def.choices.some((choice) => Object.is(choice, value))) {\n throw new Error(`Invalid value for arg ${key}: expected one of ${def.choices.map(String).join(', ')}`);\n }\n resolved[key] = value;\n }\n return resolved;\n}\n\nfunction templateContext(runtime: PipelineRuntime): TemplateContext {\n return {\n args: runtime.args,\n last: runtime.last,\n outputs: runtime.outputs,\n vars: runtime.vars,\n error: runtime.error,\n };\n}\n\nfunction actionArgs(step: PipelineStep, runtime: PipelineRuntime): Record<string, unknown> {\n if (typeof step.args === 'string') {\n const resolved = resolveTemplateDeep(step.args, templateContext(runtime));\n if (step.action === 'evaluate' || step.action === 'eval' || step.action === 'console') {\n return { javascript: String(resolved ?? '') };\n }\n return { value: resolved };\n }\n return resolveTemplateDeep(step.args, templateContext(runtime)) as Record<string, unknown>;\n}\n\nasync function executePipeline(\n steps: PipelineStep[],\n scope: string,\n runtime: PipelineRuntime,\n actionCtx: BrowserActionContext,\n registry: BrowserActionRegistry,\n output: PipelineOutput,\n): Promise<void> {\n for (let i = 0; i < steps.length; i++) {\n if (actionCtx.signal?.aborted) {\n throw actionError('ABORTED', 'Pipeline aborted');\n }\n await executeStep(steps[i], i, scope, runtime, actionCtx, registry, output);\n }\n}\n\nasync function executeStep(\n step: PipelineStep,\n index: number,\n scope: string,\n runtime: PipelineRuntime,\n actionCtx: BrowserActionContext,\n registry: BrowserActionRegistry,\n output: PipelineOutput,\n): Promise<void> {\n const started = Date.now();\n let result: BrowserActionResult;\n try {\n result = await executeStepOnce(step, index, scope, runtime, actionCtx, registry, output);\n } catch (e) {\n const error = e instanceof Error ? e : new Error(String(e));\n result = {\n ok: false,\n action: step.action,\n error: { code: (error as Error & { code?: string }).code ?? 'STEP_FAILED', message: error.message },\n };\n }\n\n addStepTrace(output, {\n index,\n scope,\n action: step.action,\n ok: result.ok,\n elapsedMs: Date.now() - started,\n text: result.text?.slice(0, 500),\n data: result.data,\n error: result.error,\n }, result);\n\n if (!result.ok) {\n runtime.error = result.error;\n throw actionError(result.error?.code ?? 'STEP_FAILED', result.error?.message ?? 'Step failed');\n }\n}\n\nasync function executeStepOnce(\n step: PipelineStep,\n index: number,\n scope: string,\n runtime: PipelineRuntime,\n actionCtx: BrowserActionContext,\n registry: BrowserActionRegistry,\n output: PipelineOutput,\n): Promise<BrowserActionResult> {\n switch (step.action) {\n case 'sleep': {\n const args = actionArgs(step, runtime);\n const ms = Number(args.ms ?? args.delay_ms ?? args.delayMs ?? 1000);\n await sleep(Number.isFinite(ms) ? ms : 1000, undefined, { signal: actionCtx.signal });\n runtime.last = null;\n return { ok: true, action: 'sleep', text: `Slept ${ms}ms.`, data: null };\n }\n case 'set_var': {\n const args = actionArgs(step, runtime);\n const name = String(args.name ?? '');\n if (!name) return { ok: false, action: 'set_var', error: { code: 'INVALID_ARGS', message: 'name is required' } };\n runtime.vars[name] = args.value;\n runtime.last = args.value;\n return { ok: true, action: 'set_var', text: `Set var: ${name}`, data: args.value };\n }\n case 'if': {\n const args = actionArgs(step, runtime);\n const branch = isTruthyValue(args.condition) ? args.then : args.else;\n const branchSteps = normalizeNestedPipeline(branch, `${scope}.${index}.if`);\n await executePipeline(branchSteps, `${scope}.${index}.if`, runtime, actionCtx, registry, output);\n return { ok: true, action: 'if', text: 'Conditional branch completed.', data: runtime.last };\n }\n case 'retry': {\n const args = actionArgs(step, runtime);\n const times = Math.max(1, Number(args.times ?? 3));\n const delayMs = Math.max(0, Number(args.delay_ms ?? args.delayMs ?? 250));\n const retrySteps = normalizeNestedPipeline(args.pipeline ?? args.step, `${scope}.${index}.retry`);\n let lastError: unknown;\n for (let attempt = 1; attempt <= times; attempt++) {\n try {\n await executePipeline(retrySteps, `${scope}.${index}.retry.${attempt}`, runtime, actionCtx, registry, output);\n output.ok = true;\n output.error = undefined;\n return { ok: true, action: 'retry', text: `Retry block completed on attempt ${attempt}.`, data: runtime.last };\n } catch (e) {\n lastError = e;\n output.ok = true;\n output.error = undefined;\n if (attempt < times) await sleep(delayMs, undefined, { signal: actionCtx.signal });\n }\n }\n const message = lastError instanceof Error ? lastError.message : String(lastError);\n return { ok: false, action: 'retry', error: { code: 'RETRY_FAILED', message } };\n }\n default:\n return executeBrowserAction(step, runtime, actionCtx, registry);\n }\n}\n\nasync function executeBrowserAction(\n step: PipelineStep,\n runtime: PipelineRuntime,\n actionCtx: BrowserActionContext,\n registry: BrowserActionRegistry,\n): Promise<BrowserActionResult> {\n const args = actionArgs(step, runtime);\n actionCtx.pipeline = {\n args: runtime.args,\n last: runtime.last,\n outputs: runtime.outputs,\n vars: runtime.vars,\n error: runtime.error,\n };\n const result = await registry.execute(step.action, actionCtx, args);\n if (result.ok) {\n if (step.action === 'output') {\n runtime.outputs.push(result.data);\n }\n if (result.data !== undefined) {\n runtime.last = result.data;\n }\n }\n return result;\n}\n\nfunction normalizeNestedPipeline(value: unknown, path: string): PipelineStep[] {\n const rawSteps = Array.isArray(value) ? value : value ? [value] : [];\n return rawSteps.map((rawStep, index) => {\n if (!rawStep || typeof rawStep !== 'object' || Array.isArray(rawStep)) {\n throw new Error(`${path}[${index}] must be a YAML object`);\n }\n const obj = rawStep as Record<string, unknown>;\n const keys = Object.keys(obj);\n if (keys.length !== 1) {\n throw new Error(`${path}[${index}] must contain exactly one action`);\n }\n const action = keys[0];\n const args = obj[action];\n if (typeof args === 'string') return { action, args };\n if (args && typeof args === 'object' && !Array.isArray(args)) return { action, args: args as Record<string, unknown> };\n if (args === undefined || args === null) return { action, args: {} };\n return { action, args: { value: args } };\n });\n}\n\nfunction actionError(code: string, message: string): Error {\n const error = new Error(message) as Error & { code?: string };\n error.code = code;\n return error;\n}\n\nexport async function runBrowserPipeline(\n yamlSource: string,\n argOverrides: Record<string, unknown>,\n ctx: BrowserActionContext,\n registry: BrowserActionRegistry,\n options: RunBrowserPipelineOptions = {},\n): Promise<BrowserActionResult> {\n let doc: PipelineDocument;\n try {\n doc = await expandPipelineDocument(yamlSource, options.sourceLocation);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n return { ok: false, action: 'pipeline', error: { code: 'VALIDATION_FAILED', message: msg }, text: msg };\n }\n\n const validationErrors: { path: string; message: string }[] = [];\n validateSteps(doc.pipeline, 'pipeline', registry, validationErrors);\n validateSteps(doc.onError ?? [], 'on_error', registry, validationErrors);\n if (validationErrors.length > 0) {\n const msg = validationErrors.map((e) => `${e.path}: ${e.message}`).join('\\n');\n return { ok: false, action: 'pipeline', error: { code: 'VALIDATION_FAILED', message: msg }, text: msg };\n }\n\n if (options.dryRun) {\n return {\n ok: true,\n action: 'pipeline',\n text: `Pipeline \"${doc.name}\" validated successfully (${doc.pipeline.length} steps).`,\n data: { name: doc.name, steps: doc.pipeline.length, args: Object.keys(doc.args) },\n };\n }\n\n let args: Record<string, unknown>;\n try {\n args = resolveArgs(doc, argOverrides);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n return { ok: false, action: 'pipeline', error: { code: 'ARG_RESOLUTION_FAILED', message: msg }, text: msg };\n }\n\n const output = createPipelineOutput(doc.name);\n const runtime: PipelineRuntime = { doc, args, last: undefined, outputs: [], vars: {} };\n\n log.info({ pipeline: doc.name, steps: doc.pipeline.length }, `Running pipeline: ${doc.name}`);\n\n try {\n const run = executePipeline(doc.pipeline, 'pipeline', runtime, ctx, registry, output);\n if (doc.timeoutSeconds && doc.timeoutSeconds > 0) {\n await Promise.race([\n run,\n sleep(doc.timeoutSeconds * 1000, undefined, { signal: ctx.signal }).then(() => {\n throw actionError('PIPELINE_TIMEOUT', `Pipeline timed out after ${doc.timeoutSeconds} seconds`);\n }),\n ]);\n } else {\n await run;\n }\n } catch {\n output.ok = false;\n output.error ??= { step: output.trace.length, action: 'pipeline', code: 'PIPELINE_FAILED', message: runtime.error?.message ?? 'Pipeline failed' };\n }\n\n output.last = runtime.last;\n output.outputs = runtime.outputs;\n\n if (!output.ok && doc.onError && doc.onError.length > 0) {\n log.info({ pipeline: doc.name }, 'Running on_error diagnostics');\n try {\n await executePipeline(doc.onError, 'on_error', runtime, ctx, registry, output);\n } catch {\n // Main pipeline error remains authoritative.\n }\n output.last = runtime.last;\n output.outputs = runtime.outputs;\n }\n\n return formatPipelineResult(output);\n}\n"],"mappings":";;;;;;;;;;;aAMqD;AAOrD,MAAM,MAAM,aAAa,iBAAiB;AAE1C,MAAM,kBAAkB,IAAI,IAAI;CAAC;CAAM;CAAS;CAAS;CAAU,CAAC;AAsBpE,SAAgB,wBAAwB,YAAoB,UAAkD;CAC5G,MAAM,cAAc,qBAAqB,WAAW;AACpD,KAAI,CAAC,YAAY,MAAM,CAAC,YAAY,SAClC,QAAO;EAAE,IAAI;EAAO,QAAQ,YAAY;EAAQ;CAGlD,MAAM,SAA8C,EAAE;AACtD,eAAc,YAAY,SAAS,UAAU,YAAY,UAAU,OAAO;AAC1E,eAAc,YAAY,SAAS,WAAW,EAAE,EAAE,YAAY,UAAU,OAAO;AAC/E,QAAO,OAAO,SAAS,IACnB;EAAE,IAAI;EAAO,UAAU,YAAY;EAAU;EAAQ,GACrD;EAAE,IAAI;EAAM,UAAU,YAAY;EAAU,QAAQ,EAAE;EAAE;;AAG9D,eAAsB,8BACpB,YACA,UACA,gBACyB;AACzB,KAAI;EACF,MAAM,MAAM,MAAM,uBAAuB,YAAY,eAAe;EACpE,MAAM,SAA8C,EAAE;AACtD,gBAAc,IAAI,UAAU,YAAY,UAAU,OAAO;AACzD,gBAAc,IAAI,WAAW,EAAE,EAAE,YAAY,UAAU,OAAO;AAC9D,SAAO,OAAO,SAAS,IAAI;GAAE,IAAI;GAAO,UAAU;GAAK;GAAQ,GAAG;GAAE,IAAI;GAAM,UAAU;GAAK,QAAQ,EAAE;GAAE;UAClG,GAAG;AACV,SAAO;GAAE,IAAI;GAAO,QAAQ,CAAC;IAAE,MAAM;IAAI,SAAS,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;IAAE,CAAC;GAAE;;;AAIrG,SAAS,cACP,OACA,MACA,UACA,QACM;AACN,KAAI,CAAC,SAAU;AACf,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,MAAM,OAAO,MAAM;AACnB,MAAI,CAAC,gBAAgB,IAAI,KAAK,OAAO,IAAI,CAAC,SAAS,IAAI,KAAK,OAAO,CACjE,QAAO,KAAK;GAAE,MAAM,GAAG,KAAK,GAAG,EAAE;GAAI,SAAS,oBAAoB,KAAK,OAAO;GAAI,CAAC;;;AAKzF,eAAe,uBACb,YACA,gBACA,2BAAW,IAAI,KAAa,EACD;CAC3B,MAAM,SAAS,qBAAqB,WAAW;AAC/C,KAAI,CAAC,OAAO,MAAM,CAAC,OAAO,UAAU;EAClC,MAAM,UAAU,OAAO,OAAO,KAAK,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,UAAU,CAAC,KAAK,KAAK;AAC9E,QAAM,IAAI,MAAM,QAAQ;;CAG1B,MAAM,MAAM,OAAO;CACnB,MAAM,MAAM,kBAAkB,UAAU,IAAI;AAC5C,KAAI,SAAS,IAAI,IAAI,CACnB,OAAM,IAAI,MAAM,uCAAuC,MAAM;AAG/D,UAAS,IAAI,IAAI;CACjB,IAAI,SAA2B;EAC7B,MAAM,IAAI;EACV,aAAa,IAAI;EACjB,UAAU,IAAI;EACd,SAAS,EAAE;EACX,gBAAgB,IAAI;EACpB,MAAM,EAAE;EACR,UAAU,EAAE;EACZ,SAAS,EAAE;EACZ;AAED,MAAK,MAAM,eAAe,IAAI,WAAW,EAAE,EAAE;EAE3C,MAAM,gBAAgB,MAAM,0BADJ,+BAA+B,aAAa,eACC,CAAC;EACtE,MAAM,aAAa,MAAM,uBAAuB,cAAc,QAAQ,cAAc,UAAU,SAAS;AACvG,WAAS,uBAAuB,QAAQ,WAAW;;AAGrD,UAAS,uBAAuB,QAAQ,IAAI;AAC5C,UAAS,OAAO,IAAI;AACpB,QAAO;;AAGT,SAAS,uBAAuB,QAA0B,QAA4C;AACpG,QAAO;EACL,MAAM,OAAO,QAAQ,OAAO;EAC5B,aAAa,OAAO,eAAe,OAAO;EAC1C,UAAU,OAAO,YAAY,OAAO;EACpC,SAAS,CAAC,GAAI,OAAO,WAAW,EAAE,EAAG,GAAI,OAAO,WAAW,EAAE,CAAE;EAC/D,gBAAgB,OAAO,kBAAkB,OAAO;EAChD,MAAM;GAAE,GAAG,OAAO;GAAM,GAAG,OAAO;GAAM;EACxC,UAAU,CAAC,GAAG,OAAO,UAAU,GAAG,OAAO,SAAS;EAClD,SAAS,CAAC,GAAI,OAAO,WAAW,EAAE,EAAG,GAAI,OAAO,WAAW,EAAE,CAAE;EAChE;;AAGH,SAAS,YAAY,KAAuB,WAA6D;CACvG,MAAM,WAAoC,EAAE;AAC5C,MAAK,MAAM,OAAO,OAAO,KAAK,UAAU,CACtC,KAAI,EAAE,OAAO,IAAI,MACf,OAAM,IAAI,MAAM,yBAAyB,MAAM;AAGnD,MAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,IAAI,KAAK,EAAE;EACjD,MAAM,QAAQ,OAAO,YAAY,UAAU,OAAO,IAAI;AACtD,MAAI,UAAU,KAAA,GAAW;AACvB,OAAI,IAAI,SAAU,OAAM,IAAI,MAAM,yBAAyB,MAAM;AACjE;;AAEF,MAAI,IAAI,WAAW,CAAC,IAAI,QAAQ,MAAM,WAAW,OAAO,GAAG,QAAQ,MAAM,CAAC,CACxE,OAAM,IAAI,MAAM,yBAAyB,IAAI,oBAAoB,IAAI,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,GAAG;AAExG,WAAS,OAAO;;AAElB,QAAO;;AAGT,SAAS,gBAAgB,SAA2C;AAClE,QAAO;EACL,MAAM,QAAQ;EACd,MAAM,QAAQ;EACd,SAAS,QAAQ;EACjB,MAAM,QAAQ;EACd,OAAO,QAAQ;EAChB;;AAGH,SAAS,WAAW,MAAoB,SAAmD;AACzF,KAAI,OAAO,KAAK,SAAS,UAAU;EACjC,MAAM,WAAW,oBAAoB,KAAK,MAAM,gBAAgB,QAAQ,CAAC;AACzE,MAAI,KAAK,WAAW,cAAc,KAAK,WAAW,UAAU,KAAK,WAAW,UAC1E,QAAO,EAAE,YAAY,OAAO,YAAY,GAAG,EAAE;AAE/C,SAAO,EAAE,OAAO,UAAU;;AAE5B,QAAO,oBAAoB,KAAK,MAAM,gBAAgB,QAAQ,CAAC;;AAGjE,eAAe,gBACb,OACA,OACA,SACA,WACA,UACA,QACe;AACf,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,MAAI,UAAU,QAAQ,QACpB,OAAM,YAAY,WAAW,mBAAmB;AAElD,QAAM,YAAY,MAAM,IAAI,GAAG,OAAO,SAAS,WAAW,UAAU,OAAO;;;AAI/E,eAAe,YACb,MACA,OACA,OACA,SACA,WACA,UACA,QACe;CACf,MAAM,UAAU,KAAK,KAAK;CAC1B,IAAI;AACJ,KAAI;AACF,WAAS,MAAM,gBAAgB,MAAM,OAAO,OAAO,SAAS,WAAW,UAAU,OAAO;UACjF,GAAG;EACV,MAAM,QAAQ,aAAa,QAAQ,IAAI,IAAI,MAAM,OAAO,EAAE,CAAC;AAC3D,WAAS;GACP,IAAI;GACJ,QAAQ,KAAK;GACb,OAAO;IAAE,MAAO,MAAoC,QAAQ;IAAe,SAAS,MAAM;IAAS;GACpG;;AAGH,cAAa,QAAQ;EACnB;EACA;EACA,QAAQ,KAAK;EACb,IAAI,OAAO;EACX,WAAW,KAAK,KAAK,GAAG;EACxB,MAAM,OAAO,MAAM,MAAM,GAAG,IAAI;EAChC,MAAM,OAAO;EACb,OAAO,OAAO;EACf,EAAE,OAAO;AAEV,KAAI,CAAC,OAAO,IAAI;AACd,UAAQ,QAAQ,OAAO;AACvB,QAAM,YAAY,OAAO,OAAO,QAAQ,eAAe,OAAO,OAAO,WAAW,cAAc;;;AAIlG,eAAe,gBACb,MACA,OACA,OACA,SACA,WACA,UACA,QAC8B;AAC9B,SAAQ,KAAK,QAAb;EACE,KAAK,SAAS;GACZ,MAAM,OAAO,WAAW,MAAM,QAAQ;GACtC,MAAM,KAAK,OAAO,KAAK,MAAM,KAAK,YAAY,KAAK,WAAW,IAAK;AACnE,SAAMA,WAAM,OAAO,SAAS,GAAG,GAAG,KAAK,KAAM,KAAA,GAAW,EAAE,QAAQ,UAAU,QAAQ,CAAC;AACrF,WAAQ,OAAO;AACf,UAAO;IAAE,IAAI;IAAM,QAAQ;IAAS,MAAM,SAAS,GAAG;IAAM,MAAM;IAAM;;EAE1E,KAAK,WAAW;GACd,MAAM,OAAO,WAAW,MAAM,QAAQ;GACtC,MAAM,OAAO,OAAO,KAAK,QAAQ,GAAG;AACpC,OAAI,CAAC,KAAM,QAAO;IAAE,IAAI;IAAO,QAAQ;IAAW,OAAO;KAAE,MAAM;KAAgB,SAAS;KAAoB;IAAE;AAChH,WAAQ,KAAK,QAAQ,KAAK;AAC1B,WAAQ,OAAO,KAAK;AACpB,UAAO;IAAE,IAAI;IAAM,QAAQ;IAAW,MAAM,YAAY;IAAQ,MAAM,KAAK;IAAO;;EAEpF,KAAK,MAAM;GACT,MAAM,OAAO,WAAW,MAAM,QAAQ;AAGtC,SAAM,gBADc,wBADL,cAAc,KAAK,UAAU,GAAG,KAAK,OAAO,KAAK,MACZ,GAAG,MAAM,GAAG,MAAM,KACrC,EAAE,GAAG,MAAM,GAAG,MAAM,MAAM,SAAS,WAAW,UAAU,OAAO;AAChG,UAAO;IAAE,IAAI;IAAM,QAAQ;IAAM,MAAM;IAAiC,MAAM,QAAQ;IAAM;;EAE9F,KAAK,SAAS;GACZ,MAAM,OAAO,WAAW,MAAM,QAAQ;GACtC,MAAM,QAAQ,KAAK,IAAI,GAAG,OAAO,KAAK,SAAS,EAAE,CAAC;GAClD,MAAM,UAAU,KAAK,IAAI,GAAG,OAAO,KAAK,YAAY,KAAK,WAAW,IAAI,CAAC;GACzE,MAAM,aAAa,wBAAwB,KAAK,YAAY,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,QAAQ;GACjG,IAAI;AACJ,QAAK,IAAI,UAAU,GAAG,WAAW,OAAO,UACtC,KAAI;AACF,UAAM,gBAAgB,YAAY,GAAG,MAAM,GAAG,MAAM,SAAS,WAAW,SAAS,WAAW,UAAU,OAAO;AAC7G,WAAO,KAAK;AACZ,WAAO,QAAQ,KAAA;AACf,WAAO;KAAE,IAAI;KAAM,QAAQ;KAAS,MAAM,oCAAoC,QAAQ;KAAI,MAAM,QAAQ;KAAM;YACvG,GAAG;AACV,gBAAY;AACZ,WAAO,KAAK;AACZ,WAAO,QAAQ,KAAA;AACf,QAAI,UAAU,MAAO,OAAMA,WAAM,SAAS,KAAA,GAAW,EAAE,QAAQ,UAAU,QAAQ,CAAC;;AAItF,UAAO;IAAE,IAAI;IAAO,QAAQ;IAAS,OAAO;KAAE,MAAM;KAAgB,SADpD,qBAAqB,QAAQ,UAAU,UAAU,OAAO,UAAU;KACL;IAAE;;EAEjF,QACE,QAAO,qBAAqB,MAAM,SAAS,WAAW,SAAS;;;AAIrE,eAAe,qBACb,MACA,SACA,WACA,UAC8B;CAC9B,MAAM,OAAO,WAAW,MAAM,QAAQ;AACtC,WAAU,WAAW;EACnB,MAAM,QAAQ;EACd,MAAM,QAAQ;EACd,SAAS,QAAQ;EACjB,MAAM,QAAQ;EACd,OAAO,QAAQ;EAChB;CACD,MAAM,SAAS,MAAM,SAAS,QAAQ,KAAK,QAAQ,WAAW,KAAK;AACnE,KAAI,OAAO,IAAI;AACb,MAAI,KAAK,WAAW,SAClB,SAAQ,QAAQ,KAAK,OAAO,KAAK;AAEnC,MAAI,OAAO,SAAS,KAAA,EAClB,SAAQ,OAAO,OAAO;;AAG1B,QAAO;;AAGT,SAAS,wBAAwB,OAAgB,MAA8B;AAE7E,SADiB,MAAM,QAAQ,MAAM,GAAG,QAAQ,QAAQ,CAAC,MAAM,GAAG,EAAE,EACpD,KAAK,SAAS,UAAU;AACtC,MAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,QAAQ,CACnE,OAAM,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,yBAAyB;EAE5D,MAAM,MAAM;EACZ,MAAM,OAAO,OAAO,KAAK,IAAI;AAC7B,MAAI,KAAK,WAAW,EAClB,OAAM,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,mCAAmC;EAEtE,MAAM,SAAS,KAAK;EACpB,MAAM,OAAO,IAAI;AACjB,MAAI,OAAO,SAAS,SAAU,QAAO;GAAE;GAAQ;GAAM;AACrD,MAAI,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,KAAK,CAAE,QAAO;GAAE;GAAc;GAAiC;AACtH,MAAI,SAAS,KAAA,KAAa,SAAS,KAAM,QAAO;GAAE;GAAQ,MAAM,EAAE;GAAE;AACpE,SAAO;GAAE;GAAQ,MAAM,EAAE,OAAO,MAAM;GAAE;GACxC;;AAGJ,SAAS,YAAY,MAAc,SAAwB;CACzD,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAChC,OAAM,OAAO;AACb,QAAO;;AAGT,eAAsB,mBACpB,YACA,cACA,KACA,UACA,UAAqC,EAAE,EACT;CAC9B,IAAI;AACJ,KAAI;AACF,QAAM,MAAM,uBAAuB,YAAY,QAAQ,eAAe;UAC/D,GAAG;EACV,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;AACtD,SAAO;GAAE,IAAI;GAAO,QAAQ;GAAY,OAAO;IAAE,MAAM;IAAqB,SAAS;IAAK;GAAE,MAAM;GAAK;;CAGzG,MAAM,mBAAwD,EAAE;AAChE,eAAc,IAAI,UAAU,YAAY,UAAU,iBAAiB;AACnE,eAAc,IAAI,WAAW,EAAE,EAAE,YAAY,UAAU,iBAAiB;AACxE,KAAI,iBAAiB,SAAS,GAAG;EAC/B,MAAM,MAAM,iBAAiB,KAAK,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,UAAU,CAAC,KAAK,KAAK;AAC7E,SAAO;GAAE,IAAI;GAAO,QAAQ;GAAY,OAAO;IAAE,MAAM;IAAqB,SAAS;IAAK;GAAE,MAAM;GAAK;;AAGzG,KAAI,QAAQ,OACV,QAAO;EACL,IAAI;EACJ,QAAQ;EACR,MAAM,aAAa,IAAI,KAAK,4BAA4B,IAAI,SAAS,OAAO;EAC5E,MAAM;GAAE,MAAM,IAAI;GAAM,OAAO,IAAI,SAAS;GAAQ,MAAM,OAAO,KAAK,IAAI,KAAK;GAAE;EAClF;CAGH,IAAI;AACJ,KAAI;AACF,SAAO,YAAY,KAAK,aAAa;UAC9B,GAAG;EACV,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;AACtD,SAAO;GAAE,IAAI;GAAO,QAAQ;GAAY,OAAO;IAAE,MAAM;IAAyB,SAAS;IAAK;GAAE,MAAM;GAAK;;CAG7G,MAAM,SAAS,qBAAqB,IAAI,KAAK;CAC7C,MAAM,UAA2B;EAAE;EAAK;EAAM,MAAM,KAAA;EAAW,SAAS,EAAE;EAAE,MAAM,EAAE;EAAE;AAEtF,KAAI,KAAK;EAAE,UAAU,IAAI;EAAM,OAAO,IAAI,SAAS;EAAQ,EAAE,qBAAqB,IAAI,OAAO;AAE7F,KAAI;EACF,MAAM,MAAM,gBAAgB,IAAI,UAAU,YAAY,SAAS,KAAK,UAAU,OAAO;AACrF,MAAI,IAAI,kBAAkB,IAAI,iBAAiB,EAC7C,OAAM,QAAQ,KAAK,CACjB,KACAA,WAAM,IAAI,iBAAiB,KAAM,KAAA,GAAW,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC,WAAW;AAC7E,SAAM,YAAY,oBAAoB,4BAA4B,IAAI,eAAe,UAAU;IAC/F,CACH,CAAC;MAEF,OAAM;SAEF;AACN,SAAO,KAAK;AACZ,SAAO,UAAU;GAAE,MAAM,OAAO,MAAM;GAAQ,QAAQ;GAAY,MAAM;GAAmB,SAAS,QAAQ,OAAO,WAAW;GAAmB;;AAGnJ,QAAO,OAAO,QAAQ;AACtB,QAAO,UAAU,QAAQ;AAEzB,KAAI,CAAC,OAAO,MAAM,IAAI,WAAW,IAAI,QAAQ,SAAS,GAAG;AACvD,MAAI,KAAK,EAAE,UAAU,IAAI,MAAM,EAAE,+BAA+B;AAChE,MAAI;AACF,SAAM,gBAAgB,IAAI,SAAS,YAAY,SAAS,KAAK,UAAU,OAAO;UACxE;AAGR,SAAO,OAAO,QAAQ;AACtB,SAAO,UAAU,QAAQ;;AAG3B,QAAO,qBAAqB,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","names":[],"sources":["../../../../src/browser/pipeline/schema.ts"],"sourcesContent":["/**\n * Pipeline YAML schema — parse and validate brocli-style browser pipeline documents.\n */\n\nimport yaml from 'js-yaml';\n\n// ─── Types ──────────────────────────────────────────────────────────────────\n\nexport interface PipelineArgDef {\n type: string;\n required?: boolean;\n default?: unknown;\n description?: string;\n choices?: unknown[];\n}\n\nexport interface PipelineStep {\n /** The single action name (key of the step object). */\n action: string;\n /** Action arguments (value of that key), or raw string for shorthand like `evaluate: |`. */\n args: Record<string, unknown> | string;\n}\n\nexport interface PipelineDocument {\n name: string;\n description?: string;\n provider?: string;\n include?: string[];\n timeoutSeconds?: number;\n args: Record<string, PipelineArgDef>;\n pipeline: PipelineStep[];\n onError?: PipelineStep[];\n}\n\nexport interface PipelineValidationError {\n path: string;\n message: string;\n}\n\nexport interface PipelineParseResult {\n ok: boolean;\n document?: PipelineDocument;\n errors: PipelineValidationError[];\n}\n\n// ─── Parse ──────────────────────────────────────────────────────────────────\n\nexport function parseBrowserPipeline(yamlSource: string): PipelineParseResult {\n const errors: PipelineValidationError[] = [];\n\n let raw: unknown;\n try {\n raw = yaml.load(yamlSource);\n } catch (e) {\n return { ok: false, errors: [{ path: '', message: `YAML parse error: ${e instanceof Error ? e.message : String(e)}` }] };\n }\n\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ok: false, errors: [{ path: '', message: 'Pipeline must be a YAML mapping (object).' }] };\n }\n\n const doc = raw as Record<string, unknown>;\n\n // name\n const name = typeof doc.name === 'string' ? doc.name.trim() : '';\n if (!name) errors.push({ path: 'name', message: '`name` is required.' });\n\n // description\n const description = typeof doc.description === 'string' ? doc.description : undefined;\n\n // provider\n const provider = typeof doc.provider === 'string' ? doc.provider : undefined;\n\n // include\n const include = Array.isArray(doc.include)\n ? doc.include.filter((x): x is string => typeof x === 'string')\n : undefined;\n\n const timeoutSeconds = typeof doc.timeoutSeconds === 'number' ? doc.timeoutSeconds : undefined;\n\n // args\n const argsRaw = (doc.args && typeof doc.args === 'object' && !Array.isArray(doc.args)) ? doc.args as Record<string, unknown> : {};\n const args: Record<string, PipelineArgDef> = {};\n for (const [k, v] of Object.entries(argsRaw)) {\n if (v && typeof v === 'object' && !Array.isArray(v)) {\n const def = v as Record<string, unknown>;\n args[k] = {\n type: typeof def.type === 'string' ? def.type : 'string',\n required: def.required === true,\n default: def.default,\n description: typeof def.description === 'string' ? def.description : undefined,\n choices: Array.isArray(def.choices) ? def.choices : undefined,\n };\n } else {\n args[k] = { type: 'string', default: v };\n }\n }\n\n function parseSteps(rawSteps: unknown, path: string, required: boolean): PipelineStep[] {\n if (!Array.isArray(rawSteps)) {\n if (required) errors.push({ path, message: `\\`${path}\\` must be an array of steps.` });\n return [];\n }\n const pipeline: PipelineStep[] = [];\n for (let i = 0; i < rawSteps.length; i++) {\n const step = rawSteps[i];\n if (!step || typeof step !== 'object' || Array.isArray(step)) {\n errors.push({ path: `${path}[${i}]`, message: 'Each step must be a YAML mapping.' });\n continue;\n }\n const stepObj = step as Record<string, unknown>;\n const actionKeys = Object.keys(stepObj);\n if (actionKeys.length !== 1) {\n errors.push({ path: `${path}[${i}]`, message: `Each step must have exactly one action key, found ${actionKeys.length}: [${actionKeys.join(', ')}].` });\n continue;\n }\n const action = actionKeys[0];\n const actionArgs = stepObj[action];\n if (typeof actionArgs === 'string') {\n pipeline.push({ action, args: actionArgs });\n } else if (actionArgs && typeof actionArgs === 'object' && !Array.isArray(actionArgs)) {\n pipeline.push({ action, args: actionArgs as Record<string, unknown> });\n } else if (actionArgs === null || actionArgs === undefined) {\n pipeline.push({ action, args: {} });\n } else {\n pipeline.push({ action, args: { value: actionArgs } });\n }\n }\n return pipeline;\n }\n\n const pipeline = parseSteps(doc.pipeline, 'pipeline', true);\n const onError = doc.on_error === undefined ? undefined : parseSteps(doc.on_error, 'on_error', false);\n\n if (errors.length > 0) {\n return { ok: false, errors };\n }\n\n return {\n ok: true,\n document: { name, description, provider, include, timeoutSeconds, args, pipeline, onError },\n errors: [],\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"source.js","names":[],"sources":["../../../../src/browser/pipeline/source.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises';\nimport { dirname, resolve } from 'node:path';\n\nconst DEFAULT_PIPELINE_SOURCE_TIMEOUT_MS = 30_000;\nconst MAX_PIPELINE_SOURCE_BYTES = 1024 * 1024;\n\nexport interface BrowserPipelineSource {\n source: string;\n origin: 'file' | 'url';\n location: string;\n}\n\nexport function isRemotePipelineSource(location: string): boolean {\n try {\n const url = new URL(location);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n}\n\nasync function readLimitedResponseText(response: Response, url: string): Promise<string> {\n const contentLength = response.headers.get('content-length');\n if (contentLength) {\n const expectedBytes = Number.parseInt(contentLength, 10);\n if (Number.isFinite(expectedBytes) && expectedBytes > MAX_PIPELINE_SOURCE_BYTES) {\n throw new Error(`Pipeline URL is too large: ${expectedBytes} bytes`);\n }\n }\n\n if (!response.body) {\n return await response.text();\n }\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let totalBytes = 0;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n if (!value) {\n continue;\n }\n totalBytes += value.byteLength;\n if (totalBytes > MAX_PIPELINE_SOURCE_BYTES) {\n await reader.cancel().catch(() => {});\n throw new Error(`Pipeline URL is too large: ${url}`);\n }\n chunks.push(value);\n }\n\n const payload = new Uint8Array(totalBytes);\n let offset = 0;\n for (const chunk of chunks) {\n payload.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n return new TextDecoder().decode(payload);\n}\n\nexport async function fetchPipelineSource(url: string): Promise<string> {\n const response = await fetch(url, {\n headers: {\n accept: 'application/yaml, text/yaml, text/plain, */*',\n },\n signal: AbortSignal.timeout(DEFAULT_PIPELINE_SOURCE_TIMEOUT_MS),\n });\n\n if (!response.ok) {\n const statusText = response.statusText ? ` ${response.statusText}` : '';\n throw new Error(`Pipeline URL returned HTTP ${response.status}${statusText}`);\n }\n\n return await readLimitedResponseText(response, url);\n}\n\nexport async function loadBrowserPipelineSource(location: string): Promise<BrowserPipelineSource> {\n const normalizedLocation = location.trim();\n if (!normalizedLocation) {\n throw new Error('Pipeline path is empty');\n }\n\n if (isRemotePipelineSource(normalizedLocation)) {\n return {\n source: await fetchPipelineSource(normalizedLocation),\n origin: 'url',\n location: normalizedLocation,\n };\n }\n\n return {\n source: await readFile(normalizedLocation, 'utf-8'),\n origin: 'file',\n location: normalizedLocation,\n };\n}\n\nexport function resolvePipelineIncludeLocation(includePath: string, parentLocation: string | undefined): string {\n const normalized = includePath.trim();\n if (!normalized) {\n throw new Error('Pipeline include path is empty');\n }\n if (isRemotePipelineSource(normalized)) {\n return normalized;\n }\n if (!parentLocation) {\n return resolve(normalized);\n }\n if (isRemotePipelineSource(parentLocation)) {\n return new URL(normalized, parentLocation).toString();\n }\n return resolve(dirname(parentLocation), normalized);\n}\n"],"mappings":";;;AAGA,MAAM,qCAAqC;AAC3C,MAAM,4BAA4B,OAAO;AAQzC,SAAgB,uBAAuB,UAA2B;AAChE,KAAI;EACF,MAAM,MAAM,IAAI,IAAI,SAAS;AAC7B,SAAO,IAAI,aAAa,WAAW,IAAI,aAAa;SAC9C;AACN,SAAO;;;AAIX,eAAe,wBAAwB,UAAoB,KAA8B;CACvF,MAAM,gBAAgB,SAAS,QAAQ,IAAI,iBAAiB;AAC5D,KAAI,eAAe;EACjB,MAAM,gBAAgB,OAAO,SAAS,eAAe,GAAG;AACxD,MAAI,OAAO,SAAS,cAAc,IAAI,gBAAgB,0BACpD,OAAM,IAAI,MAAM,8BAA8B,cAAc,QAAQ;;AAIxE,KAAI,CAAC,SAAS,KACZ,QAAO,MAAM,SAAS,MAAM;CAG9B,MAAM,SAAS,SAAS,KAAK,WAAW;CACxC,MAAM,SAAuB,EAAE;CAC/B,IAAI,aAAa;AAEjB,QAAO,MAAM;EACX,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM;AAC3C,MAAI,KACF;AAEF,MAAI,CAAC,MACH;AAEF,gBAAc,MAAM;AACpB,MAAI,aAAa,2BAA2B;AAC1C,SAAM,OAAO,QAAQ,CAAC,YAAY,GAAG;AACrC,SAAM,IAAI,MAAM,8BAA8B,MAAM;;AAEtD,SAAO,KAAK,MAAM;;CAGpB,MAAM,UAAU,IAAI,WAAW,WAAW;CAC1C,IAAI,SAAS;AACb,MAAK,MAAM,SAAS,QAAQ;AAC1B,UAAQ,IAAI,OAAO,OAAO;AAC1B,YAAU,MAAM;;AAGlB,QAAO,IAAI,aAAa,CAAC,OAAO,QAAQ;;AAG1C,eAAsB,oBAAoB,KAA8B;CACtE,MAAM,WAAW,MAAM,MAAM,KAAK;EAChC,SAAS,EACP,QAAQ,gDACT;EACD,QAAQ,YAAY,QAAQ,mCAAmC;EAChE,CAAC;AAEF,KAAI,CAAC,SAAS,IAAI;EAChB,MAAM,aAAa,SAAS,aAAa,IAAI,SAAS,eAAe;AACrE,QAAM,IAAI,MAAM,8BAA8B,SAAS,SAAS,aAAa;;AAG/E,QAAO,MAAM,wBAAwB,UAAU,IAAI;;AAGrD,eAAsB,0BAA0B,UAAkD;CAChG,MAAM,qBAAqB,SAAS,MAAM;AAC1C,KAAI,CAAC,mBACH,OAAM,IAAI,MAAM,yBAAyB;AAG3C,KAAI,uBAAuB,mBAAmB,CAC5C,QAAO;EACL,QAAQ,MAAM,oBAAoB,mBAAmB;EACrD,QAAQ;EACR,UAAU;EACX;AAGH,QAAO;EACL,QAAQ,MAAM,SAAS,oBAAoB,QAAQ;EACnD,QAAQ;EACR,UAAU;EACX;;AAGH,SAAgB,+BAA+B,aAAqB,gBAA4C;CAC9G,MAAM,aAAa,YAAY,MAAM;AACrC,KAAI,CAAC,WACH,OAAM,IAAI,MAAM,iCAAiC;AAEnD,KAAI,uBAAuB,WAAW,CACpC,QAAO;AAET,KAAI,CAAC,eACH,QAAO,QAAQ,WAAW;AAE5B,KAAI,uBAAuB,eAAe,CACxC,QAAO,IAAI,IAAI,YAAY,eAAe,CAAC,UAAU;AAEvD,QAAO,QAAQ,QAAQ,eAAe,EAAE,WAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"template.js","names":[],"sources":["../../../../src/browser/pipeline/template.ts"],"sourcesContent":["/**\n * Pipeline template expression engine.\n *\n * Supports: ${{ args.xxx }}, ${{ last }}, ${{ outputs.0 }}, ${{ vars.name }},\n * ${{ error.message }} and simple pipe filters.\n * Does NOT execute arbitrary JavaScript — only whitelisted expressions.\n */\n\nconst TEMPLATE_RE = /\\$\\{\\{\\s*(.+?)\\s*\\}\\}/g;\n\nexport interface TemplateContext {\n args: Record<string, unknown>;\n last: unknown;\n outputs: unknown[];\n vars: Record<string, unknown>;\n error?: { code?: string; message?: string };\n}\n\nfunction parsePath(path: string): string[] {\n return path\n .replace(/\\[(\\d+)\\]/g, '.$1')\n .split('.')\n .map((part) => part.trim())\n .filter(Boolean);\n}\n\nexport function resolvePath(obj: unknown, path: string): unknown {\n const parts = parsePath(path);\n let current: unknown = obj;\n for (const part of parts) {\n if (current === null || current === undefined) return undefined;\n if (Array.isArray(current)) {\n const index = Number(part);\n if (!Number.isInteger(index)) return undefined;\n current = current[index];\n } else if (typeof current === 'object') {\n current = (current as Record<string, unknown>)[part];\n } else {\n return undefined;\n }\n }\n return current;\n}\n\nfunction applyFilter(value: unknown, filter: string): string {\n switch (filter.trim()) {\n case 'json':\n return JSON.stringify(value, null, 2) ?? 'null';\n case 'string':\n return String(value ?? '');\n case 'number':\n return String(Number(value));\n case 'boolean':\n return String(Boolean(value));\n case 'urlencode':\n return encodeURIComponent(String(value ?? ''));\n default:\n return String(value ?? '');\n }\n}\n\nexport function isTruthyValue(value: unknown): boolean {\n if (value === null || value === undefined || value === false) return false;\n if (typeof value === 'number') return Number.isFinite(value) && value !== 0;\n if (typeof value === 'string') return value.length > 0 && value !== 'false' && value !== '0';\n if (Array.isArray(value)) return value.length > 0;\n return true;\n}\n\nexport function valueContains(actual: unknown, expected: unknown): boolean {\n if (typeof actual === 'string') return actual.includes(String(expected));\n if (Array.isArray(actual)) return actual.some((item) => JSON.stringify(item) === JSON.stringify(expected));\n if (actual && typeof actual === 'object') return JSON.stringify(actual).includes(String(expected));\n return String(actual ?? '').includes(String(expected));\n}\n\nexport function evaluateRawExpression(expr: string, ctx: TemplateContext): unknown {\n // Check for pipe filter: `last | json`\n const pipeIdx = expr.indexOf('|');\n let path = expr;\n let filter: string | undefined;\n if (pipeIdx > 0) {\n path = expr.slice(0, pipeIdx).trim();\n filter = expr.slice(pipeIdx + 1).trim();\n }\n\n let value: unknown;\n\n if (path === 'last') {\n value = ctx.last;\n } else if (path.startsWith('last.')) {\n value = resolvePath(ctx.last, path.slice(5));\n } else if (path.startsWith('args.')) {\n value = resolvePath(ctx.args, path.slice(5));\n } else if (path === 'outputs') {\n value = ctx.outputs;\n } else if (path.startsWith('outputs.')) {\n value = resolvePath(ctx.outputs, path.slice(8));\n } else if (path === 'vars') {\n value = ctx.vars;\n } else if (path.startsWith('vars.')) {\n value = resolvePath(ctx.vars, path.slice(5));\n } else if (path.startsWith('error.')) {\n value = resolvePath(ctx.error, path.slice(6));\n } else if (path === 'error') {\n value = ctx.error?.message ?? '';\n } else {\n value = resolvePath(ctx.args, path);\n if (value === undefined) return `\\${{ ${expr} }}`;\n }\n\n if (filter) {\n return applyFilter(value, filter);\n }\n\n return value;\n}\n\nfunction stringifyTemplateValue(value: unknown): string {\n if (value === undefined || value === null) return '';\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n return JSON.stringify(value);\n}\n\nfunction evaluateExpression(expr: string, ctx: TemplateContext): string {\n return stringifyTemplateValue(evaluateRawExpression(expr, ctx));\n}\n\n/**\n * Resolve all `${{ ... }}` expressions in a string.\n */\nexport function resolveTemplate(template: string, ctx: TemplateContext): string {\n return template.replace(TEMPLATE_RE, (_match, expr: string) => {\n return evaluateExpression(expr.trim(), ctx);\n });\n}\n\nexport function resolveTemplateValue(value: string, ctx: TemplateContext): unknown {\n const trimmed = value.trim();\n const match = /^\\$\\{\\{\\s*(.+?)\\s*\\}\\}$/.exec(trimmed);\n if (!match) return resolveTemplate(value, ctx);\n return evaluateRawExpression(match[1].trim(), ctx);\n}\n\n/**\n * Deep-resolve templates in an object/array/string value.\n */\nexport function resolveTemplateDeep(value: unknown, ctx: TemplateContext): unknown {\n if (typeof value === 'string') {\n return resolveTemplateValue(value, ctx);\n }\n if (Array.isArray(value)) {\n return value.map((item) => resolveTemplateDeep(item, ctx));\n }\n if (value && typeof value === 'object') {\n const result: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n result[resolveTemplate(k, ctx)] = resolveTemplateDeep(v, ctx);\n }\n return result;\n }\n return value;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-ext-install.js","names":[],"sources":["../../../../src/browser/providers/browser-ext-install.ts"],"sourcesContent":["/**\n * Install bundled Chrome extension artifacts into {resolveBinDir()}/browser-ext/.\n * Fixed path — gateway upgrades overwrite in place so Chrome sideload paths stay stable.\n */\n\nimport {\n existsSync,\n mkdirSync,\n readdirSync,\n readFileSync,\n renameSync,\n rmSync,\n statSync,\n writeFileSync,\n} from 'node:fs';\nimport { readFile, readdir, rm } from 'node:fs/promises';\nimport { spawn } from 'node:child_process';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport { PACKAGE_VERSION } from '../../package-version.js';\nimport { resolveBinDir } from '../../config/paths.js';\nimport { resolvePackageRoot } from '../../infra/update-check.js';\nimport { writeTextAtomic } from '../../infra/write-file-atomic.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { assertCacheDir } from '../cache-dir-policy.js';\n\nconst log = createLogger('BrowserExtInstall');\n\nconst META_FILENAME = '.meta.json';\nconst STAGING_MAX_AGE_MS = 60 * 60 * 1000;\nconst INSTALLED_ARTIFACT_NAMES = ['manifest.json', 'popup.html', 'dist', 'icons'] as const;\n\nexport const BROWSER_EXT_REQUIRED_FILES = [\n 'manifest.json',\n 'popup.html',\n 'dist/background.js',\n 'dist/content.js',\n 'dist/popup.js',\n] as const;\n\nexport type BrowserExtBundledFrom = 'npm-dist' | 'git-dev' | 'electron-asar' | 'env-override';\n\nexport interface BrowserExtInstallMeta {\n xopcVersion: string;\n manifestVersion: string;\n source: 'bundled';\n bundledFrom: BrowserExtBundledFrom;\n installedAt: string;\n installPath: string;\n}\n\nexport interface BrowserExtDoctor {\n bundledAvailable: boolean;\n installed: boolean;\n xopcVersion: string;\n installedVersion?: string;\n manifestVersion?: string;\n extensionDir?: string;\n cacheDir: string;\n needsRefresh: boolean;\n needsChromeReload?: boolean;\n bundledFrom?: BrowserExtBundledFrom;\n runtimeExtensionVersion?: string;\n}\n\nexport interface EnsureBrowserExtResult {\n extensionDir: string;\n xopcVersion: string;\n copied: boolean;\n}\n\nfunction moduleDir(): string {\n return dirname(fileURLToPath(import.meta.url));\n}\n\n/** Validate a directory contains a loadable extension tree. */\nexport function validateBrowserExtLayout(dir: string): boolean {\n return BROWSER_EXT_REQUIRED_FILES.every((rel) => existsSync(join(dir, rel)));\n}\n\nfunction readManifestVersion(dir: string): string | undefined {\n try {\n const raw = readFileSync(join(dir, 'manifest.json'), 'utf8');\n const parsed = JSON.parse(raw) as { version?: unknown };\n return typeof parsed.version === 'string' ? parsed.version : undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function readMeta(metaPath: string): Promise<BrowserExtInstallMeta | null> {\n try {\n const raw = await readFile(metaPath, 'utf8');\n const parsed = JSON.parse(raw) as BrowserExtInstallMeta;\n if (parsed && typeof parsed === 'object' && typeof parsed.xopcVersion === 'string') {\n return parsed;\n }\n return null;\n } catch {\n return null;\n }\n}\n\nfunction browserExtRoot(cacheDir: string): string {\n return join(cacheDir, 'browser-ext');\n}\n\nfunction resolveMetaPath(cacheDir: string): string {\n return join(browserExtRoot(cacheDir), META_FILENAME);\n}\n\n/** Resolve the installed extension directory (fixed `browser-ext/` root). */\nexport function resolveInstalledExtensionPath(\n cacheDir: string,\n _meta: BrowserExtInstallMeta | null,\n): string | null {\n const root = browserExtRoot(cacheDir);\n if (validateBrowserExtLayout(root)) {\n return root;\n }\n\n return null;\n}\n\nfunction walkAncestorsForGitDevBundled(start: string): string | null {\n let dir = start;\n for (let i = 0; i < 12; i++) {\n const candidate = join(dir, 'packages/browser-ext');\n if (validateBrowserExtLayout(candidate)) {\n return candidate;\n }\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/**\n * Resolve the bundled extension source directory (read-only).\n */\nexport async function resolveBundledBrowserExtDir(): Promise<{\n dir: string;\n bundledFrom: BrowserExtBundledFrom;\n} | null> {\n const envOverride = process.env.XOPC_BROWSER_EXT_BUNDLED_ROOT?.trim();\n if (envOverride && validateBrowserExtLayout(envOverride)) {\n return { dir: envOverride, bundledFrom: 'env-override' };\n }\n\n const fromModule = join(moduleDir(), '../../../browser-ext');\n if (validateBrowserExtLayout(fromModule)) {\n const root = await resolvePackageRoot();\n const bundledFrom: BrowserExtBundledFrom =\n process.versions.electron && root && root.includes('app.asar') ? 'electron-asar' : 'npm-dist';\n return { dir: fromModule, bundledFrom };\n }\n\n const gitDev = walkAncestorsForGitDevBundled(moduleDir());\n if (gitDev) {\n return { dir: gitDev, bundledFrom: 'git-dev' };\n }\n\n const root = await resolvePackageRoot();\n if (root) {\n const distBundled = join(root, 'dist/browser-ext');\n if (validateBrowserExtLayout(distBundled)) {\n const bundledFrom: BrowserExtBundledFrom =\n process.versions.electron && root.includes('app.asar') ? 'electron-asar' : 'npm-dist';\n return { dir: distBundled, bundledFrom };\n }\n }\n\n return null;\n}\n\nexport function computeNeedsRefresh(params: {\n force?: boolean;\n bundledManifestVersion: string;\n installedPath: string | null;\n meta: BrowserExtInstallMeta | null;\n}): boolean {\n if (params.force) return true;\n if (!params.installedPath || !validateBrowserExtLayout(params.installedPath)) return true;\n\n const installedManifest = readManifestVersion(params.installedPath);\n if (!installedManifest || installedManifest !== params.bundledManifestVersion) return true;\n\n if (!params.meta || params.meta.xopcVersion !== PACKAGE_VERSION) return true;\n\n return false;\n}\n\nasync function cleanupStaleStaging(root: string): Promise<void> {\n if (!existsSync(root)) return;\n let entries: string[];\n try {\n entries = await readdir(root);\n } catch {\n return;\n }\n const now = Date.now();\n for (const name of entries) {\n if (!name.startsWith('.staging-')) continue;\n const full = join(root, name);\n try {\n const st = statSync(full);\n if (now - st.mtimeMs > STAGING_MAX_AGE_MS) {\n await rm(full, { recursive: true, force: true });\n }\n } catch {\n /* */\n }\n }\n}\n\nfunction removeInstalledArtifacts(root: string): void {\n for (const name of INSTALLED_ARTIFACT_NAMES) {\n const full = join(root, name);\n if (existsSync(full)) {\n rmSync(full, { recursive: true, force: true });\n }\n }\n}\n\nfunction promoteStagingToRoot(stagingDir: string, root: string): void {\n removeInstalledArtifacts(root);\n for (const name of readdirSync(stagingDir)) {\n renameSync(join(stagingDir, name), join(root, name));\n }\n rmSync(stagingDir, { recursive: true, force: true });\n if (!validateBrowserExtLayout(root)) {\n throw new Error('Bundled browser extension copy failed validation');\n }\n}\n\n/** Copy one bundled file (read/write works when src is inside Electron app.asar). */\nfunction copyBundledFile(src: string, dest: string): void {\n mkdirSync(dirname(dest), { recursive: true });\n writeFileSync(dest, readFileSync(src));\n}\n\nconst BROWSER_EXT_DIST_FILES = ['background.js', 'content.js', 'popup.js'] as const;\nconst BROWSER_EXT_ICON_FILES = ['icon-16.png', 'icon-32.png', 'icon-48.png', 'icon-128.png'] as const;\n\nfunction copyBundledTree(src: string, dest: string): void {\n mkdirSync(dest, { recursive: true });\n for (const name of ['manifest.json', 'popup.html']) {\n copyBundledFile(join(src, name), join(dest, name));\n }\n for (const file of BROWSER_EXT_DIST_FILES) {\n copyBundledFile(join(src, 'dist', file), join(dest, 'dist', file));\n }\n for (const icon of BROWSER_EXT_ICON_FILES) {\n const iconSrc = join(src, 'icons', icon);\n if (existsSync(iconSrc)) {\n copyBundledFile(iconSrc, join(dest, 'icons', icon));\n }\n }\n if (!validateBrowserExtLayout(dest)) {\n throw new Error('Bundled browser extension copy failed validation');\n }\n}\n\nexport async function browserExtDoctor(opts?: {\n cacheDir?: string;\n runtimeExtensionVersion?: string;\n}): Promise<BrowserExtDoctor> {\n const resolvedCache = opts?.cacheDir?.trim()\n ? assertCacheDir(opts.cacheDir)\n : resolveBinDir();\n const cacheDir = resolvedCache || resolveBinDir();\n\n const bundled = await resolveBundledBrowserExtDir();\n const bundledManifestVersion = bundled ? readManifestVersion(bundled.dir) : undefined;\n const meta = await readMeta(resolveMetaPath(cacheDir));\n const installedPath = resolveInstalledExtensionPath(cacheDir, meta);\n\n const needsRefresh = bundled\n ? computeNeedsRefresh({\n force: false,\n bundledManifestVersion: bundledManifestVersion ?? PACKAGE_VERSION,\n installedPath,\n meta,\n })\n : false;\n\n const installed = Boolean(installedPath) && !needsRefresh;\n const manifestVersion = installedPath ? readManifestVersion(installedPath) : undefined;\n\n let needsChromeReload: boolean | undefined;\n const runtimeVer = opts?.runtimeExtensionVersion?.trim();\n if (runtimeVer && manifestVersion && runtimeVer !== manifestVersion) {\n needsChromeReload = true;\n }\n\n return {\n bundledAvailable: Boolean(bundled),\n installed,\n xopcVersion: PACKAGE_VERSION,\n installedVersion: meta?.xopcVersion,\n manifestVersion,\n extensionDir: installedPath ?? undefined,\n cacheDir,\n needsRefresh,\n needsChromeReload,\n bundledFrom: bundled?.bundledFrom,\n runtimeExtensionVersion: runtimeVer,\n };\n}\n\nexport async function ensureBrowserExtensionArtifacts(opts?: {\n force?: boolean;\n cacheDir?: string;\n}): Promise<EnsureBrowserExtResult> {\n const resolvedCache = opts?.cacheDir?.trim()\n ? assertCacheDir(opts.cacheDir)\n : resolveBinDir();\n const cacheDir = resolvedCache || resolveBinDir();\n\n const bundled = await resolveBundledBrowserExtDir();\n if (!bundled) {\n throw new Error(\n 'Bundled browser extension not found. Reinstall xopc or run from a built checkout (pnpm run build).',\n );\n }\n\n const bundledManifestVersion = readManifestVersion(bundled.dir) ?? PACKAGE_VERSION;\n const root = browserExtRoot(cacheDir);\n mkdirSync(root, { recursive: true });\n await cleanupStaleStaging(root);\n\n const meta = await readMeta(resolveMetaPath(cacheDir));\n const installedPath = resolveInstalledExtensionPath(cacheDir, meta);\n const needsRefresh = computeNeedsRefresh({\n force: opts?.force,\n bundledManifestVersion,\n installedPath,\n meta,\n });\n\n const extensionDir = root;\n\n if (!needsRefresh && installedPath) {\n return {\n extensionDir: installedPath,\n xopcVersion: PACKAGE_VERSION,\n copied: false,\n };\n }\n\n const stagingDir = join(root, `.staging-${process.pid}`);\n\n if (existsSync(stagingDir)) {\n rmSync(stagingDir, { recursive: true, force: true });\n }\n copyBundledTree(bundled.dir, stagingDir);\n promoteStagingToRoot(stagingDir, root);\n\n const nextMeta: BrowserExtInstallMeta = {\n xopcVersion: PACKAGE_VERSION,\n manifestVersion: bundledManifestVersion,\n source: 'bundled',\n bundledFrom: bundled.bundledFrom,\n installedAt: new Date().toISOString(),\n installPath: extensionDir,\n };\n await writeTextAtomic(resolveMetaPath(cacheDir), JSON.stringify(nextMeta, null, 2));\n\n log.info(\n { extensionDir, xopcVersion: PACKAGE_VERSION, bundledFrom: bundled.bundledFrom },\n 'Browser extension artifacts installed',\n );\n\n return {\n extensionDir,\n xopcVersion: PACKAGE_VERSION,\n copied: true,\n };\n}\n\n/** Gateway startup hook: ensure extension artifacts for the fixed extension backend. */\nexport async function ensureBrowserExtensionOnStartup(_config: unknown): Promise<void> {\n await ensureBrowserExtensionArtifacts();\n}\n\nexport async function readInstalledExtensionDir(cacheDir?: string): Promise<string | null> {\n const dir = cacheDir?.trim() ? assertCacheDir(cacheDir) : resolveBinDir();\n const resolved = dir || resolveBinDir();\n const meta = await readMeta(resolveMetaPath(resolved));\n return resolveInstalledExtensionPath(resolved, meta);\n}\n\nexport type BrowserExtensionOpenAction = 'chrome' | 'folder' | 'both';\n\ntype ExtensionManagerBrowser = 'chrome' | 'edge';\n\ninterface ExtensionManagerTarget {\n browser: ExtensionManagerBrowser;\n executablePath: string;\n url: string;\n}\n\nfunction spawnDetached(command: string, args: readonly string[]): void {\n spawn(command, [...args], { stdio: 'ignore', detached: true }).unref();\n}\n\nfunction windowsExtensionManagerCandidates(env: NodeJS.ProcessEnv): ExtensionManagerTarget[] {\n const programFiles = [env.PROGRAMFILES, env['PROGRAMFILES(X86)'], env.LOCALAPPDATA].filter(\n (path): path is string => Boolean(path?.trim()),\n );\n const candidates: ExtensionManagerTarget[] = [];\n\n for (const root of programFiles) {\n candidates.push({\n browser: 'chrome',\n executablePath: join(root, 'Google', 'Chrome', 'Application', 'chrome.exe'),\n url: 'chrome://extensions/',\n });\n }\n for (const root of programFiles) {\n candidates.push({\n browser: 'edge',\n executablePath: join(root, 'Microsoft', 'Edge', 'Application', 'msedge.exe'),\n url: 'edge://extensions/',\n });\n }\n\n return candidates;\n}\n\nexport function resolveWindowsExtensionManager(\n env: NodeJS.ProcessEnv = process.env,\n): ExtensionManagerTarget | null {\n return windowsExtensionManagerCandidates(env).find(({ executablePath }) => existsSync(executablePath)) ?? null;\n}\n\nfunction openBrowserExtensionManager(): ExtensionManagerBrowser | undefined {\n const chromeUrl = 'chrome://extensions/';\n if (process.platform === 'darwin') {\n spawnDetached('open', ['-a', 'Google Chrome', chromeUrl]);\n return 'chrome';\n }\n if (process.platform === 'win32') {\n const target = resolveWindowsExtensionManager();\n if (!target) {\n throw new Error(\n 'No compatible browser found. Install Google Chrome or Microsoft Edge, then try again.',\n );\n }\n spawnDetached(target.executablePath, [target.url]);\n return target.browser;\n }\n spawnDetached('xdg-open', [chromeUrl]);\n return 'chrome';\n}\n\nfunction revealFolderInFileManager(dir: string): void {\n if (process.platform === 'darwin') {\n spawnDetached('open', [dir]);\n return;\n }\n if (process.platform === 'win32') {\n spawnDetached('explorer', [dir]);\n return;\n }\n spawnDetached('xdg-open', [dir]);\n}\n\n/**\n * Open the compatible browser's extension manager and/or reveal the installed extension folder\n * on the gateway host.\n */\nexport async function openBrowserExtensionInstallUi(opts: {\n action: BrowserExtensionOpenAction;\n cacheDir?: string;\n}): Promise<{ extensionDir: string; browser?: ExtensionManagerBrowser }> {\n const doctor = await browserExtDoctor({ cacheDir: opts.cacheDir });\n const dir = doctor.extensionDir;\n if (!dir) {\n throw new Error('Extension not installed. Run xopc browser extension install first.');\n }\n\n let browser: ExtensionManagerBrowser | undefined;\n if (opts.action === 'chrome' || opts.action === 'both') {\n browser = openBrowserExtensionManager();\n }\n if (opts.action === 'folder' || opts.action === 'both') {\n revealFolderInFileManager(dir);\n }\n\n return { extensionDir: dir, browser };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-use.js","names":[],"sources":["../../../../src/browser/providers/browser-use.ts"],"sourcesContent":["import type { Browser, BrowserContext } from 'playwright-core';\n\nimport { createLogger } from '../../utils/logger.js';\n\nimport { loadPlaywrightCoreModule } from './playwright-doctor.js';\n\nimport type { CloudBrowserProvider, CloudBrowserProviderConfig } from './types.js';\n\nconst log = createLogger('BrowserProvider:BrowserUse');\n\n/**\n * Browser Use cloud browser provider.\n *\n * Connects to a Browser Use-managed session via CDP WebSocket.\n * Requires `BROWSER_USE_API_KEY` or config-level `apiKey`.\n *\n * @see https://docs.browser-use.com\n */\nexport class BrowserUseProvider implements CloudBrowserProvider {\n readonly name = 'browser-use';\n\n private browser: Browser | null = null;\n private context: BrowserContext | null = null;\n private sessionId: string | null = null;\n private readonly config: CloudBrowserProviderConfig;\n\n constructor(config: CloudBrowserProviderConfig) {\n this.config = config;\n }\n\n async connect(): Promise<{ browser: Browser; context: BrowserContext }> {\n const apiKey = this.config.apiKey || process.env.BROWSER_USE_API_KEY;\n if (!apiKey) {\n throw new Error('Browser Use API key not configured (set BROWSER_USE_API_KEY or browser.cloudProvider config)');\n }\n\n // Create a Browser Use session via REST API\n const createUrl = 'https://api.browser-use.com/api/v1/sessions';\n const response = await fetch(createUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({}),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => 'unknown');\n throw new Error(`Browser Use session creation failed (${response.status}): ${errorText}`);\n }\n\n const session = (await response.json()) as { session_id: string; ws_url: string };\n this.sessionId = session.session_id;\n\n const pw = await loadPlaywrightCoreModule();\n const chromium = pw.chromium ?? (pw as { default?: { chromium?: (typeof pw)['chromium'] } }).default?.chromium;\n if (!chromium?.connectOverCDP) {\n throw new Error('playwright-core does not support connectOverCDP');\n }\n\n this.browser = await chromium.connectOverCDP(session.ws_url);\n const contexts = this.browser.contexts();\n this.context = contexts.length > 0 ? contexts[0] : await this.browser.newContext();\n\n log.info({ sessionId: this.sessionId }, 'Connected to Browser Use');\n return { browser: this.browser, context: this.context };\n }\n\n async disconnect(): Promise<void> {\n if (this.browser) {\n await this.browser.close().catch(() => {});\n this.browser = null;\n this.context = null;\n log.info({ sessionId: this.sessionId }, 'Disconnected from Browser Use');\n this.sessionId = null;\n }\n }\n\n isConnected(): boolean {\n return this.browser !== null && this.browser.isConnected();\n }\n}\n"],"mappings":";;;;aAEqD;AAMrD,MAAM,MAAM,aAAa,6BAA6B;;;;;;;;;AAUtD,IAAa,qBAAb,MAAgE;CAC9D,OAAgB;CAEhB,UAAkC;CAClC,UAAyC;CACzC,YAAmC;CACnC;CAEA,YAAY,QAAoC;AAC9C,OAAK,SAAS;;CAGhB,MAAM,UAAkE;EACtE,MAAM,SAAS,KAAK,OAAO,UAAU,QAAQ,IAAI;AACjD,MAAI,CAAC,OACH,OAAM,IAAI,MAAM,+FAA+F;EAKjH,MAAM,WAAW,MAAM,MAAM,+CAAW;GACtC,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,eAAe,UAAU;IAC1B;GACD,MAAM,KAAK,UAAU,EAAE,CAAC;GACzB,CAAC;AAEF,MAAI,CAAC,SAAS,IAAI;GAChB,MAAM,YAAY,MAAM,SAAS,MAAM,CAAC,YAAY,UAAU;AAC9D,SAAM,IAAI,MAAM,wCAAwC,SAAS,OAAO,KAAK,YAAY;;EAG3F,MAAM,UAAW,MAAM,SAAS,MAAM;AACtC,OAAK,YAAY,QAAQ;EAEzB,MAAM,KAAK,MAAM,0BAA0B;EAC3C,MAAM,WAAW,GAAG,YAAa,GAA4D,SAAS;AACtG,MAAI,CAAC,UAAU,eACb,OAAM,IAAI,MAAM,kDAAkD;AAGpE,OAAK,UAAU,MAAM,SAAS,eAAe,QAAQ,OAAO;EAC5D,MAAM,WAAW,KAAK,QAAQ,UAAU;AACxC,OAAK,UAAU,SAAS,SAAS,IAAI,SAAS,KAAK,MAAM,KAAK,QAAQ,YAAY;AAElF,MAAI,KAAK,EAAE,WAAW,KAAK,WAAW,EAAE,2BAA2B;AACnE,SAAO;GAAE,SAAS,KAAK;GAAS,SAAS,KAAK;GAAS;;CAGzD,MAAM,aAA4B;AAChC,MAAI,KAAK,SAAS;AAChB,SAAM,KAAK,QAAQ,OAAO,CAAC,YAAY,GAAG;AAC1C,QAAK,UAAU;AACf,QAAK,UAAU;AACf,OAAI,KAAK,EAAE,WAAW,KAAK,WAAW,EAAE,gCAAgC;AACxE,QAAK,YAAY;;;CAIrB,cAAuB;AACrB,SAAO,KAAK,YAAY,QAAQ,KAAK,QAAQ,aAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"browserbase.js","names":[],"sources":["../../../../src/browser/providers/browserbase.ts"],"sourcesContent":["import type { Browser, BrowserContext } from 'playwright-core';\n\nimport { createLogger } from '../../utils/logger.js';\n\nimport { loadPlaywrightCoreModule } from './playwright-doctor.js';\n\nimport type { CloudBrowserProvider, CloudBrowserProviderConfig } from './types.js';\n\nconst log = createLogger('BrowserProvider:Browserbase');\n\n/**\n * Browserbase cloud browser provider.\n *\n * Connects to a Browserbase-managed Chromium instance via CDP WebSocket.\n * Requires `BROWSERBASE_API_KEY` or config-level `apiKey`, plus an optional `projectId`.\n *\n * @see https://docs.browserbase.com\n */\nexport class BrowserbaseProvider implements CloudBrowserProvider {\n readonly name = 'browserbase';\n\n private browser: Browser | null = null;\n private context: BrowserContext | null = null;\n private sessionId: string | null = null;\n private readonly config: CloudBrowserProviderConfig;\n\n constructor(config: CloudBrowserProviderConfig) {\n this.config = config;\n }\n\n async connect(): Promise<{ browser: Browser; context: BrowserContext }> {\n const apiKey = this.config.apiKey || process.env.BROWSERBASE_API_KEY;\n if (!apiKey) {\n throw new Error('Browserbase API key not configured (set BROWSERBASE_API_KEY or browser.cloudProvider config)');\n }\n\n const projectId = this.config.projectId || process.env.BROWSERBASE_PROJECT_ID;\n\n // Create a Browserbase session via REST API\n const createUrl = 'https://www.browserbase.com/v1/sessions';\n const body: Record<string, unknown> = {};\n if (projectId) body.projectId = projectId;\n if (this.config.region) body.region = this.config.region;\n\n const response = await fetch(createUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-bb-api-key': apiKey,\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => 'unknown');\n throw new Error(`Browserbase session creation failed (${response.status}): ${errorText}`);\n }\n\n const session = (await response.json()) as { id: string; connectUrl?: string };\n this.sessionId = session.id;\n\n // Connect via CDP\n const connectUrl =\n session.connectUrl || `wss://connect.browserbase.com?apiKey=${apiKey}&sessionId=${session.id}`;\n\n const pw = await loadPlaywrightCoreModule();\n const chromium = pw.chromium ?? (pw as { default?: { chromium?: (typeof pw)['chromium'] } }).default?.chromium;\n if (!chromium?.connectOverCDP) {\n throw new Error('playwright-core does not support connectOverCDP');\n }\n\n this.browser = await chromium.connectOverCDP(connectUrl);\n const contexts = this.browser.contexts();\n this.context = contexts.length > 0 ? contexts[0] : await this.browser.newContext();\n\n log.info({ sessionId: this.sessionId }, 'Connected to Browserbase');\n return { browser: this.browser, context: this.context };\n }\n\n async disconnect(): Promise<void> {\n if (this.browser) {\n await this.browser.close().catch(() => {});\n this.browser = null;\n this.context = null;\n log.info({ sessionId: this.sessionId }, 'Disconnected from Browserbase');\n this.sessionId = null;\n }\n }\n\n isConnected(): boolean {\n return this.browser !== null && this.browser.isConnected();\n }\n}\n"],"mappings":";;;;aAEqD;AAMrD,MAAM,MAAM,aAAa,8BAA8B;;;;;;;;;AAUvD,IAAa,sBAAb,MAAiE;CAC/D,OAAgB;CAEhB,UAAkC;CAClC,UAAyC;CACzC,YAAmC;CACnC;CAEA,YAAY,QAAoC;AAC9C,OAAK,SAAS;;CAGhB,MAAM,UAAkE;EACtE,MAAM,SAAS,KAAK,OAAO,UAAU,QAAQ,IAAI;AACjD,MAAI,CAAC,OACH,OAAM,IAAI,MAAM,+FAA+F;EAGjH,MAAM,YAAY,KAAK,OAAO,aAAa,QAAQ,IAAI;EAGvD,MAAM,YAAY;EAClB,MAAM,OAAgC,EAAE;AACxC,MAAI,UAAW,MAAK,YAAY;AAChC,MAAI,KAAK,OAAO,OAAQ,MAAK,SAAS,KAAK,OAAO;EAElD,MAAM,WAAW,MAAM,MAAM,WAAW;GACtC,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,gBAAgB;IACjB;GACD,MAAM,KAAK,UAAU,KAAK;GAC3B,CAAC;AAEF,MAAI,CAAC,SAAS,IAAI;GAChB,MAAM,YAAY,MAAM,SAAS,MAAM,CAAC,YAAY,UAAU;AAC9D,SAAM,IAAI,MAAM,wCAAwC,SAAS,OAAO,KAAK,YAAY;;EAG3F,MAAM,UAAW,MAAM,SAAS,MAAM;AACtC,OAAK,YAAY,QAAQ;EAGzB,MAAM,aACJ,QAAQ,cAAc,wCAAwC,OAAO,aAAa,QAAQ;EAE5F,MAAM,KAAK,MAAM,0BAA0B;EAC3C,MAAM,WAAW,GAAG,YAAa,GAA4D,SAAS;AACtG,MAAI,CAAC,UAAU,eACb,OAAM,IAAI,MAAM,kDAAkD;AAGpE,OAAK,UAAU,MAAM,SAAS,eAAe,WAAW;EACxD,MAAM,WAAW,KAAK,QAAQ,UAAU;AACxC,OAAK,UAAU,SAAS,SAAS,IAAI,SAAS,KAAK,MAAM,KAAK,QAAQ,YAAY;AAElF,MAAI,KAAK,EAAE,WAAW,KAAK,WAAW,EAAE,2BAA2B;AACnE,SAAO;GAAE,SAAS,KAAK;GAAS,SAAS,KAAK;GAAS;;CAGzD,MAAM,aAA4B;AAChC,MAAI,KAAK,SAAS;AAChB,SAAM,KAAK,QAAQ,OAAO,CAAC,YAAY,GAAG;AAC1C,QAAK,UAAU;AACf,QAAK,UAAU;AACf,OAAI,KAAK,EAAE,WAAW,KAAK,WAAW,EAAE,gCAAgC;AACxE,QAAK,YAAY;;;CAIrB,cAAuB;AACrB,SAAO,KAAK,YAAY,QAAQ,KAAK,QAAQ,aAAa"}