@xopcai/xopc 0.0.149 → 0.0.151

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 (2914) 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-uu1xu9Pl.js} +1 -1
  158. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BuO-OVfD.js} +1 -1
  159. package/dist/gateway/static/root/assets/agents-Bpv3h31T.js +2 -0
  160. package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-CwL38LEV.js} +1 -1
  161. package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-B6OU3Eol.js} +1 -1
  162. package/dist/gateway/static/root/assets/appearance-settings-BaP4GFvN.js +1 -0
  163. package/dist/gateway/static/root/assets/apps-page-DZKNIMRg.js +1 -0
  164. package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-CJX3zIh_.js} +1 -1
  165. package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-CI1ejk_l.js} +1 -1
  166. package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CjmhICbv.js} +1 -1
  167. package/dist/gateway/static/root/assets/automations-page-BtZl3B8m.js +6 -0
  168. package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-CZ8nOXqK.js} +1 -1
  169. package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-BoSfyS_j.js} +46 -46
  170. package/dist/gateway/static/root/assets/browser-settings-page-CL1UiPcb.js +8 -0
  171. package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-XzDKxPZ8.js} +1 -1
  172. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-Dc_uHYgl.js} +2 -2
  173. package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-DYLBAhFF.js} +1 -1
  174. package/dist/gateway/static/root/assets/channels-settings-mALvXpJj.js +1 -0
  175. package/dist/gateway/static/root/assets/channels-status-swr-CZuEsO5b.js +1 -0
  176. package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BSjlInHT.js} +1 -1
  177. package/dist/gateway/static/root/assets/connectors-page-Cm_E3mmI.js +2 -0
  178. package/dist/gateway/static/root/assets/desktop-pet-DcJc91-C.js +1 -0
  179. package/dist/gateway/static/root/assets/desktop-pet-settings-CdeqTa3Q.js +1 -0
  180. package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-Cp3fpm0k.js} +1 -1
  181. package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-Bwj1O3zr.js} +3 -3
  182. package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-D_1xpKbZ.js} +1 -1
  183. package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-CqZNCj96.js} +1 -1
  184. package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-5MWbtQaQ.js} +1 -1
  185. package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-Co_IaS34.js} +1 -1
  186. package/dist/gateway/static/root/assets/gateway-settings-kmeWm2Pt.js +1 -0
  187. package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-BM_xvzl0.js} +1 -1
  188. package/dist/gateway/static/root/assets/goal-create-dialog-FoO-R4_U.js +1 -0
  189. package/dist/gateway/static/root/assets/goal-detail-page-CkJq7N5g.js +4 -0
  190. package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-DrtsYjXz.js} +1 -1
  191. package/dist/gateway/static/root/assets/goals-page-DRAN-R64.js +2 -0
  192. package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-wq9TKhIZ.js} +1 -1
  193. package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-B5zDoHbo.js} +1 -1
  194. package/dist/gateway/static/root/assets/index-DIlxvrlG.css +1 -0
  195. package/dist/gateway/static/root/assets/index-apLU0Hun.js +196 -0
  196. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-3tC9iD21.js +1 -0
  197. package/dist/gateway/static/root/assets/local-app-workbench-page-CT-vDTLK.js +2 -0
  198. package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-B9ruF9GV.js} +1 -1
  199. package/dist/gateway/static/root/assets/locale-store-GfSwnwIZ.js +1 -0
  200. package/dist/gateway/static/root/assets/logs-page-Ca1X8X2P.js +7 -0
  201. package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-CzuhSQAB.js} +1 -1
  202. package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-a3R4y-EL.js} +1 -1
  203. package/dist/gateway/static/root/assets/messages-B0B40tpO.js +5 -0
  204. package/dist/gateway/static/root/assets/models-hub-panel-CbTlz9Of.js +2 -0
  205. package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-BCxDy2dV.js} +1 -1
  206. package/dist/gateway/static/root/assets/notes-workbench-z6sBX9B2.js +4 -0
  207. package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-CJfk6M78.js} +1 -1
  208. package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-MFopTSgF.js} +1 -1
  209. package/dist/gateway/static/root/assets/project-detail-page-DU29deIr.js +1 -0
  210. package/dist/gateway/static/root/assets/projects-page-Ck3DLTlZ.js +1 -0
  211. package/dist/gateway/static/root/assets/remote-access-hub-gLsLyAyi.js +1 -0
  212. package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-D0uhU3Z8.js} +1 -1
  213. package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-NGOH-7wV.js} +1 -1
  214. package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-BJz5LoqG.js} +1 -1
  215. package/dist/gateway/static/root/assets/schemas-DgQq6Z5S.js +64 -0
  216. package/dist/gateway/static/root/assets/sessions-page-TmNoWpa_.js +1 -0
  217. package/dist/gateway/static/root/assets/settings-advanced-gate-CtPhh2m9.js +1 -0
  218. package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-oDnUHnX_.js} +1 -1
  219. package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-DND90dDt.js} +1 -1
  220. package/dist/gateway/static/root/assets/settings-loading-skeleton-CEJtaoQp.js +1 -0
  221. package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B1LJlRi9.js} +1 -1
  222. package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CsrLuDsW.js} +1 -1
  223. package/dist/gateway/static/root/assets/setup-status-panel-BPCJPHHY.js +1 -0
  224. package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-C1PwLh-p.js} +1 -1
  225. package/dist/gateway/static/root/assets/shares-settings-DCuqr7js.js +1 -0
  226. package/dist/gateway/static/root/assets/skill-reload-api-kn1Vypcy.js +1 -0
  227. package/dist/gateway/static/root/assets/skills-page-k6VIqTkK.js +2 -0
  228. package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-BEsrEkSx.js} +1 -1
  229. package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-Bi6hMBDb.js} +1 -1
  230. package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-dOypdlMf.js} +1 -1
  231. package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-f8A-PVuq.js} +1 -1
  232. package/dist/gateway/static/root/assets/user-context-page-B9Y_Ciav.js +1 -0
  233. package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-DGC38Lx7.js} +1 -1
  234. package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-DFkZ-tan.js} +1 -1
  235. package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-CEIYZihF.js} +1 -1
  236. package/dist/gateway/static/root/assets/voice-api-key-field-DK6gaQsA.js +1 -0
  237. package/dist/gateway/static/root/assets/work-discovery-page-DSJb9Kq7.js +1 -0
  238. package/dist/gateway/static/root/assets/work-item-detail-page-DVavwV3D.js +1 -0
  239. package/dist/gateway/static/root/assets/work-page-foJDp0nz.js +1 -0
  240. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYqZpFCC.js +3 -0
  241. package/dist/gateway/static/root/assets/workflows-page-DgO0WAzs.js +11 -0
  242. package/dist/gateway/static/root/favicon.svg +1 -187
  243. package/dist/gateway/static/root/index.html +8 -7
  244. package/dist/gateway/static/root/logo-dark.svg +1 -185
  245. package/dist/gateway/static/root/logo.svg +1 -185
  246. package/dist/package.js +1 -3
  247. package/dist/src/activity/context.js +0 -2
  248. package/dist/src/activity/emitter.js +0 -2
  249. package/dist/src/activity/service.js +0 -2
  250. package/dist/src/agent/agent-manager.d.ts +1 -0
  251. package/dist/src/agent/agent-manager.js +1 -2
  252. package/dist/src/agent/agent-scope.js +0 -2
  253. package/dist/src/agent/background-review/coordinator.js +0 -2
  254. package/dist/src/agent/background-review/prompts.js +0 -2
  255. package/dist/src/agent/background-review/run-background-review.js +0 -2
  256. package/dist/src/agent/background-review/settings.js +0 -2
  257. package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
  258. package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
  259. package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
  260. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
  261. package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
  262. package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
  263. package/dist/src/agent/capabilities/definitions.js +0 -2
  264. package/dist/src/agent/capabilities/registry.js +0 -2
  265. package/dist/src/agent/child-agent-factory.js +0 -2
  266. package/dist/src/agent/client-error-format.js +0 -2
  267. package/dist/src/agent/code-intelligence/binary.js +0 -2
  268. package/dist/src/agent/code-intelligence/runtime.js +0 -2
  269. package/dist/src/agent/code-intelligence/tools.js +0 -2
  270. package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
  271. package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
  272. package/dist/src/agent/context/project-context.js +0 -2
  273. package/dist/src/agent/context/workspace-seed.js +0 -2
  274. package/dist/src/agent/context/workspace-state.js +0 -2
  275. package/dist/src/agent/context/workspace.js +0 -2
  276. package/dist/src/agent/embedded/run-for-session.js +0 -2
  277. package/dist/src/agent/embedded/run-turn.js +0 -2
  278. package/dist/src/agent/embedded/runs.js +0 -2
  279. package/dist/src/agent/embedded/session-manager-init.js +0 -2
  280. package/dist/src/agent/embedded/session-runner.js +0 -2
  281. package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
  282. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
  283. package/dist/src/agent/embedded/subscribe-session.js +0 -2
  284. package/dist/src/agent/embedded/system-prompt-override.js +0 -2
  285. package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
  286. package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
  287. package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
  288. package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
  289. package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
  290. package/dist/src/agent/failover-error.js +0 -2
  291. package/dist/src/agent/fallback/candidates.js +0 -2
  292. package/dist/src/agent/fallback/reason.js +0 -2
  293. package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
  294. package/dist/src/agent/goals/checklist-judge.js +0 -2
  295. package/dist/src/agent/goals/checklist-types.js +0 -2
  296. package/dist/src/agent/goals/evaluate-turn.js +0 -2
  297. package/dist/src/agent/goals/goal-locale.js +0 -2
  298. package/dist/src/agent/goals/judge.js +0 -2
  299. package/dist/src/agent/goals/persistent-goal-service.js +0 -2
  300. package/dist/src/agent/goals/post-turn.js +0 -2
  301. package/dist/src/agent/goals/state.js +0 -2
  302. package/dist/src/agent/image/generation/bundled-registry.js +0 -2
  303. package/dist/src/agent/image/generation/bundled.js +0 -2
  304. package/dist/src/agent/image/generation/image-assets.js +0 -2
  305. package/dist/src/agent/image/generation/model-ref.js +0 -2
  306. package/dist/src/agent/image/generation/normalization.js +0 -2
  307. package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
  308. package/dist/src/agent/image/generation/provider-registry.js +0 -2
  309. package/dist/src/agent/image/generation/runtime.js +0 -2
  310. package/dist/src/agent/image/image-helpers.js +0 -2
  311. package/dist/src/agent/image/image-model-fallback.js +0 -2
  312. package/dist/src/agent/image/inbound-image-handling.js +0 -2
  313. package/dist/src/agent/image/load-image-media.js +0 -2
  314. package/dist/src/agent/image/tool-model-config.js +0 -2
  315. package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
  316. package/dist/src/agent/image/understanding/provider-registry.js +0 -2
  317. package/dist/src/agent/image/understanding/runtime.js +0 -2
  318. package/dist/src/agent/image/vision-detection.js +0 -2
  319. package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
  320. package/dist/src/agent/inbound/inbound-loop.js +0 -2
  321. package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
  322. package/dist/src/agent/ipc/bus.js +0 -2
  323. package/dist/src/agent/ipc/inbox.js +0 -2
  324. package/dist/src/agent/ipc/socket.js +0 -2
  325. package/dist/src/agent/ipc/types.js +0 -2
  326. package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
  327. package/dist/src/agent/lifecycle/hook-handler.js +0 -2
  328. package/dist/src/agent/lifecycle/manager.js +0 -2
  329. package/dist/src/agent/lifecycle/progress.js +0 -2
  330. package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
  331. package/dist/src/agent/lifecycle/typing.js +0 -2
  332. package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
  333. package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
  334. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
  335. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
  336. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
  337. package/dist/src/agent/mcp/embedded-mcp.js +0 -2
  338. package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
  339. package/dist/src/agent/mcp/mcp-http.js +0 -2
  340. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
  341. package/dist/src/agent/mcp/mcp-stdio.js +0 -2
  342. package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
  343. package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
  344. package/dist/src/agent/mcp/mcp-transport.js +0 -2
  345. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
  346. package/dist/src/agent/media-generation/model-ref.js +0 -2
  347. package/dist/src/agent/media-generation/normalization.types.js +0 -2
  348. package/dist/src/agent/media-generation/runtime-shared.js +0 -2
  349. package/dist/src/agent/memory/agent-message-access.js +0 -2
  350. package/dist/src/agent/memory/builtin-memory-store.js +0 -2
  351. package/dist/src/agent/memory/builtin-provider.js +0 -2
  352. package/dist/src/agent/memory/compaction.js +0 -2
  353. package/dist/src/agent/memory/context/planner.js +0 -2
  354. package/dist/src/agent/memory/context-fence.js +0 -2
  355. package/dist/src/agent/memory/create-memory-manager.js +0 -2
  356. package/dist/src/agent/memory/dreaming/config.js +0 -2
  357. package/dist/src/agent/memory/dreaming/constants.js +0 -2
  358. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
  359. package/dist/src/agent/memory/dreaming/events.js +0 -2
  360. package/dist/src/agent/memory/dreaming/last-run.js +0 -2
  361. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
  362. package/dist/src/agent/memory/dreaming/preview.js +0 -2
  363. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
  364. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
  365. package/dist/src/agent/memory/dreaming/scope.js +0 -2
  366. package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
  367. package/dist/src/agent/memory/dreaming/utils.js +0 -2
  368. package/dist/src/agent/memory/lifecycle.js +0 -2
  369. package/dist/src/agent/memory/manager.js +0 -2
  370. package/dist/src/agent/memory/memory-config.js +0 -2
  371. package/dist/src/agent/memory/message-sanitizer.js +0 -2
  372. package/dist/src/agent/memory/plugin-discovery.js +0 -2
  373. package/dist/src/agent/memory/sensitivity.js +0 -2
  374. package/dist/src/agent/memory/source-origin.js +0 -2
  375. package/dist/src/agent/memory/stub-memory-provider.js +0 -2
  376. package/dist/src/agent/memory/summary-generator.js +0 -2
  377. package/dist/src/agent/memory/understanding/correction.js +0 -2
  378. package/dist/src/agent/memory/understanding/quality.js +0 -2
  379. package/dist/src/agent/memory/understanding/service.js +0 -2
  380. package/dist/src/agent/memory/user-context-coordinator.js +0 -2
  381. package/dist/src/agent/memory/user-message-text.js +0 -2
  382. package/dist/src/agent/memory/window.js +0 -2
  383. package/dist/src/agent/messaging/command-handler.js +0 -2
  384. package/dist/src/agent/messaging/message-router.js +0 -2
  385. package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
  386. package/dist/src/agent/messaging/stream-manager.js +0 -2
  387. package/dist/src/agent/middleware/context.js +0 -2
  388. package/dist/src/agent/middleware/self-verify.js +0 -2
  389. package/dist/src/agent/models/manager.js +0 -2
  390. package/dist/src/agent/models/request-limiter.js +0 -2
  391. package/dist/src/agent/models/selection.js +0 -2
  392. package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
  393. package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
  394. package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
  395. package/dist/src/agent/orchestration/loop-guard.js +0 -2
  396. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
  397. package/dist/src/agent/prompt/cache-boundary.js +0 -2
  398. package/dist/src/agent/prompt/memory/index.js +0 -2
  399. package/dist/src/agent/prompt/safety.js +0 -2
  400. package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
  401. package/dist/src/agent/prompt/sections/behavior.js +0 -2
  402. package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
  403. package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
  404. package/dist/src/agent/prompt/sections/project-context.js +0 -2
  405. package/dist/src/agent/prompt/sections/tooling.js +0 -2
  406. package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
  407. package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
  408. package/dist/src/agent/prompt/subagent-context.js +0 -2
  409. package/dist/src/agent/prompt/system-prompt-params.js +0 -2
  410. package/dist/src/agent/prompt/system-prompt.js +0 -2
  411. package/dist/src/agent/prompt/system-reminder.js +0 -2
  412. package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
  413. package/dist/src/agent/reply/post-compaction-context.js +0 -2
  414. package/dist/src/agent/reply/startup-context.js +0 -2
  415. package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
  416. package/dist/src/agent/sandbox/command-validator.js +0 -2
  417. package/dist/src/agent/sandbox/exec-policy.js +0 -2
  418. package/dist/src/agent/sandbox/path-policy.js +0 -2
  419. package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
  420. package/dist/src/agent/sandbox/types.js +0 -2
  421. package/dist/src/agent/service/async-queue.js +0 -2
  422. package/dist/src/agent/service/btw-query.js +0 -2
  423. package/dist/src/agent/service/build-direct-message-content.js +0 -2
  424. package/dist/src/agent/service/direct-turn-helpers.js +0 -2
  425. package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
  426. package/dist/src/agent/service/process-direct-one-shot.js +0 -2
  427. package/dist/src/agent/service/process-direct-streaming.js +0 -2
  428. package/dist/src/agent/service/session-context-report.js +0 -2
  429. package/dist/src/agent/service/webchat-tts.js +0 -2
  430. package/dist/src/agent/service-inbound-utils.js +0 -2
  431. package/dist/src/agent/service.js +1 -2
  432. package/dist/src/agent/service.types.d.ts +2 -0
  433. package/dist/src/agent/session/session-config-service.js +0 -2
  434. package/dist/src/agent/session/session-context.js +0 -2
  435. package/dist/src/agent/session/session-hydrator.js +0 -2
  436. package/dist/src/agent/session/session-inspector.js +0 -2
  437. package/dist/src/agent/session/session-lifecycle.js +0 -2
  438. package/dist/src/agent/session/session-state-bag.js +0 -2
  439. package/dist/src/agent/session/tracker.js +0 -2
  440. package/dist/src/agent/skills/config.js +0 -2
  441. package/dist/src/agent/skills/filesystem-watcher.js +0 -2
  442. package/dist/src/agent/skills/format-skills-prompt.js +0 -2
  443. package/dist/src/agent/skills/hub-hash.js +0 -2
  444. package/dist/src/agent/skills/hub-lock.js +0 -2
  445. package/dist/src/agent/skills/hub-pull.js +0 -2
  446. package/dist/src/agent/skills/index.js +0 -2
  447. package/dist/src/agent/skills/install-target.js +0 -2
  448. package/dist/src/agent/skills/installer.js +0 -2
  449. package/dist/src/agent/skills/managed-store.js +0 -2
  450. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
  451. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
  452. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
  453. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
  454. package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
  455. package/dist/src/agent/skills/marketplace/registry.js +0 -2
  456. package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
  457. package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
  458. package/dist/src/agent/skills/required-env-vars.js +0 -2
  459. package/dist/src/agent/skills/scanner.js +0 -2
  460. package/dist/src/agent/skills/skill-manage-ops.js +0 -2
  461. package/dist/src/agent/skills/skill-manager.js +0 -2
  462. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
  463. package/dist/src/agent/skills/skill-tool-gating.js +0 -2
  464. package/dist/src/agent/skills/skill-view-path.js +0 -2
  465. package/dist/src/agent/skills/skills-marketplace.js +0 -2
  466. package/dist/src/agent/skills/test-framework.js +0 -2
  467. package/dist/src/agent/skills/watcher.js +0 -2
  468. package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
  469. package/dist/src/agent/source-context/injector.js +0 -2
  470. package/dist/src/agent/source-context/types.js +0 -2
  471. package/dist/src/agent/starter-agents.js +0 -2
  472. package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
  473. package/dist/src/agent/tool-manuals/browser.js +0 -2
  474. package/dist/src/agent/tool-manuals/index.js +0 -2
  475. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  476. package/dist/src/agent/tool-manuals/xopc-use.js +41 -4
  477. package/dist/src/agent/tools/apply-patch.js +0 -2
  478. package/dist/src/agent/tools/automation-tool.js +45 -8
  479. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
  480. package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
  481. package/dist/src/agent/tools/chain-tracker.js +0 -2
  482. package/dist/src/agent/tools/clarify-tool.js +0 -2
  483. package/dist/src/agent/tools/cli-clarify.js +0 -2
  484. package/dist/src/agent/tools/communication.js +0 -2
  485. package/dist/src/agent/tools/composio-tool.js +0 -2
  486. package/dist/src/agent/tools/concurrency.js +0 -2
  487. package/dist/src/agent/tools/create-share-tool.js +0 -2
  488. package/dist/src/agent/tools/curated-memory-tool.js +0 -2
  489. package/dist/src/agent/tools/delegate-tool.js +0 -2
  490. package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
  491. package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
  492. package/dist/src/agent/tools/dreaming-tool.js +0 -2
  493. package/dist/src/agent/tools/edit-diff.js +0 -2
  494. package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
  495. package/dist/src/agent/tools/error-tracker.js +0 -2
  496. package/dist/src/agent/tools/exec-command.js +0 -2
  497. package/dist/src/agent/tools/execute-code-tool.js +0 -2
  498. package/dist/src/agent/tools/executor.js +0 -2
  499. package/dist/src/agent/tools/factory.d.ts +2 -0
  500. package/dist/src/agent/tools/factory.js +3 -4
  501. package/dist/src/agent/tools/find.js +0 -2
  502. package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
  503. package/dist/src/agent/tools/goal-tool.d.ts +7 -1
  504. package/dist/src/agent/tools/goal-tool.js +34 -7
  505. package/dist/src/agent/tools/grep.js +0 -2
  506. package/dist/src/agent/tools/image-generate-tool.js +0 -2
  507. package/dist/src/agent/tools/image-tool.js +0 -2
  508. package/dist/src/agent/tools/list-dir.js +0 -2
  509. package/dist/src/agent/tools/media-read-tool.js +0 -2
  510. package/dist/src/agent/tools/memory-tool.js +0 -2
  511. package/dist/src/agent/tools/metadata.js +0 -2
  512. package/dist/src/agent/tools/read.js +0 -2
  513. package/dist/src/agent/tools/search/http.js +0 -2
  514. package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
  515. package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
  516. package/dist/src/agent/tools/search/providers/brave.js +0 -2
  517. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
  518. package/dist/src/agent/tools/search/providers/searxng.js +0 -2
  519. package/dist/src/agent/tools/search/providers/tavily.js +0 -2
  520. package/dist/src/agent/tools/search/region.js +0 -2
  521. package/dist/src/agent/tools/search/registry.js +0 -2
  522. package/dist/src/agent/tools/search/resolve-config.js +0 -2
  523. package/dist/src/agent/tools/send-media.js +0 -2
  524. package/dist/src/agent/tools/session-search-tool.js +0 -2
  525. package/dist/src/agent/tools/session-status-tool.js +0 -2
  526. package/dist/src/agent/tools/skill-install-tool.js +0 -2
  527. package/dist/src/agent/tools/skill-manage-tool.js +0 -2
  528. package/dist/src/agent/tools/skills-tools.js +0 -2
  529. package/dist/src/agent/tools/structured-output.js +0 -2
  530. package/dist/src/agent/tools/todo-tool.js +0 -2
  531. package/dist/src/agent/tools/tool-manual-tool.js +0 -2
  532. package/dist/src/agent/tools/tool-paths.js +0 -2
  533. package/dist/src/agent/tools/truncate.js +0 -2
  534. package/dist/src/agent/tools/tts-tool.js +0 -2
  535. package/dist/src/agent/tools/update-plan-tool.js +0 -2
  536. package/dist/src/agent/tools/url-safety.js +0 -2
  537. package/dist/src/agent/tools/usage-analyzer.js +0 -2
  538. package/dist/src/agent/tools/web-extract.js +0 -2
  539. package/dist/src/agent/tools/web.js +4 -4
  540. package/dist/src/agent/tools/workflow-tool.js +32 -4
  541. package/dist/src/agent/tools/write.js +23 -5
  542. package/dist/src/agent/tools/xopc-use-tool.d.ts +6 -2
  543. package/dist/src/agent/tools/xopc-use-tool.js +216 -8
  544. package/dist/src/agent/transcript/google-api.js +0 -2
  545. package/dist/src/agent/transcript/model-selection.js +0 -2
  546. package/dist/src/agent/transcript/provider-capabilities.js +0 -2
  547. package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
  548. package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
  549. package/dist/src/agent/transcript/thinking-types.js +0 -2
  550. package/dist/src/agent/transcript/thinking.js +0 -2
  551. package/dist/src/agent/transcript/tool-call-id.js +0 -2
  552. package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
  553. package/dist/src/agent/transcript/transcript-policy.js +0 -2
  554. package/dist/src/agent/workflow/agent-progress.js +0 -2
  555. package/dist/src/agent/workflow/builtins/index.js +0 -2
  556. package/dist/src/agent/workflow/catalog.js +0 -2
  557. package/dist/src/agent/workflow/progress-broker.js +0 -2
  558. package/dist/src/agent/workflow/snapshot-empty.js +0 -2
  559. package/dist/src/agent/workflow/snapshot.js +0 -2
  560. package/dist/src/agent/workflow/step-labels.js +0 -2
  561. package/dist/src/agent/workflow/structured-output-tool.js +0 -2
  562. package/dist/src/agent/workflow/subagent-runner.js +0 -2
  563. package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
  564. package/dist/src/agent/workspace-runtime/registry.js +0 -2
  565. package/dist/src/agent-manifest/index.js +0 -2
  566. package/dist/src/agent-manifest/preset-chain.js +0 -2
  567. package/dist/src/agent-manifest/prompt.js +0 -2
  568. package/dist/src/agent-manifest/resolver.js +0 -2
  569. package/dist/src/agent-manifest/schema.js +0 -2
  570. package/dist/src/agent-manifest/validator.js +0 -2
  571. package/dist/src/agent-runtime/boundary-guard.js +0 -2
  572. package/dist/src/agent-runtime/memory-runtime.js +0 -2
  573. package/dist/src/agent-runtime/model-router.js +0 -2
  574. package/dist/src/agent-runtime/run-trace.js +0 -2
  575. package/dist/src/agent-runtime/runtime-profile.js +0 -2
  576. package/dist/src/agent-runtime/tool-registry.js +0 -2
  577. package/dist/src/agent-runtime/workflow-runtime.js +0 -2
  578. package/dist/src/ai-assist/text-assist.js +0 -2
  579. package/dist/src/auth/credentials.js +0 -2
  580. package/dist/src/auth/index.js +0 -2
  581. package/dist/src/auth/oauth/anthropic.js +0 -2
  582. package/dist/src/auth/oauth/github-copilot.js +0 -2
  583. package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
  584. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
  585. package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
  586. package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
  587. package/dist/src/auth/oauth/kimi-coding.js +0 -2
  588. package/dist/src/auth/oauth/minimax-cn.js +0 -2
  589. package/dist/src/auth/oauth/minimax.js +0 -2
  590. package/dist/src/auth/oauth/openai-codex.js +0 -2
  591. package/dist/src/auth/oauth/pkce.js +0 -2
  592. package/dist/src/auth/profiles/oauth.js +0 -2
  593. package/dist/src/auth/profiles/order.js +0 -2
  594. package/dist/src/auth/profiles/profiles.js +0 -2
  595. package/dist/src/auth/profiles/store.js +0 -2
  596. package/dist/src/auth/sync-provider-auth.js +0 -2
  597. package/dist/src/automations/api/routes.js +0 -2
  598. package/dist/src/automations/domain/schedule.js +0 -2
  599. package/dist/src/automations/domain/validation.js +0 -2
  600. package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
  601. package/dist/src/automations/draft/automation-draft-service.js +0 -2
  602. package/dist/src/automations/draft/automation-draft-validator.js +0 -2
  603. package/dist/src/automations/product-events.js +0 -2
  604. package/dist/src/automations/service/action-executor.js +0 -2
  605. package/dist/src/automations/service/automation-service.js +0 -2
  606. package/dist/src/automations/storage/automation-repository.js +0 -2
  607. package/dist/src/automations/storage/automation-run-repository.js +0 -2
  608. package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
  609. package/dist/src/browser/actions/registry.js +0 -2
  610. package/dist/src/browser/backend-from-config.js +0 -2
  611. package/dist/src/browser/browser-command-timeout.js +0 -2
  612. package/dist/src/browser/cache-dir-policy.js +0 -2
  613. package/dist/src/browser/cdp-local-launcher.js +0 -2
  614. package/dist/src/browser/cdp-supervisor.js +0 -2
  615. package/dist/src/browser/free-port.js +0 -2
  616. package/dist/src/browser/humanize.js +0 -2
  617. package/dist/src/browser/install-lock.js +0 -2
  618. package/dist/src/browser/manager.js +0 -2
  619. package/dist/src/browser/pipeline/output.js +0 -2
  620. package/dist/src/browser/pipeline/runner.js +0 -2
  621. package/dist/src/browser/pipeline/schema.js +0 -2
  622. package/dist/src/browser/pipeline/source.js +0 -2
  623. package/dist/src/browser/pipeline/template.js +0 -2
  624. package/dist/src/browser/providers/browser-ext-install.js +0 -2
  625. package/dist/src/browser/providers/browser-use.js +0 -2
  626. package/dist/src/browser/providers/browserbase.js +0 -2
  627. package/dist/src/browser/providers/cloakbrowser.js +0 -2
  628. package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
  629. package/dist/src/browser/providers/extension.js +0 -2
  630. package/dist/src/browser/providers/playwright-doctor.js +13 -4
  631. package/dist/src/browser/providers/playwright-install.js +0 -2
  632. package/dist/src/browser/readiness.js +0 -2
  633. package/dist/src/browser/schemas.js +0 -2
  634. package/dist/src/browser/session-lifecycle.js +0 -2
  635. package/dist/src/browser/snapshot-helpers.js +0 -2
  636. package/dist/src/browser/stealth.js +0 -2
  637. package/dist/src/browser/url-policy.js +0 -2
  638. package/dist/src/capabilities/store-connector.js +0 -2
  639. package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
  640. package/dist/src/channels/attachments/inbound-persist.js +0 -2
  641. package/dist/src/channels/attachments/inbound-types.js +0 -2
  642. package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
  643. package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
  644. package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
  645. package/dist/src/channels/config-helpers.js +0 -2
  646. package/dist/src/channels/envelope-timestamp.js +0 -2
  647. package/dist/src/channels/exec-approval-runtime.js +0 -2
  648. package/dist/src/channels/health-monitor.js +0 -2
  649. package/dist/src/channels/heartbeat-scheduler.js +0 -2
  650. package/dist/src/channels/internal-outbound.js +0 -2
  651. package/dist/src/channels/lifecycle-supervisor.js +0 -2
  652. package/dist/src/channels/manager.js +0 -2
  653. package/dist/src/channels/media.js +0 -2
  654. package/dist/src/channels/outbound/deliver.js +0 -2
  655. package/dist/src/channels/outbound/normalize.js +0 -2
  656. package/dist/src/channels/outbound/persist-store.js +0 -2
  657. package/dist/src/channels/outbound/queue.js +0 -2
  658. package/dist/src/channels/outbound-sender.js +0 -2
  659. package/dist/src/channels/pairing/allow-from-file.js +0 -2
  660. package/dist/src/channels/pairing/approve-cli.js +0 -2
  661. package/dist/src/channels/pairing/pairing-challenge.js +0 -2
  662. package/dist/src/channels/pairing/pairing-constants.js +0 -2
  663. package/dist/src/channels/pairing/pairing-events.js +0 -2
  664. package/dist/src/channels/pairing/pairing-messages.js +0 -2
  665. package/dist/src/channels/pairing/pairing-service.js +0 -2
  666. package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
  667. package/dist/src/channels/pairing/pairing-store.js +0 -2
  668. package/dist/src/channels/pairing/paths.js +0 -2
  669. package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
  670. package/dist/src/channels/pipeline.js +0 -2
  671. package/dist/src/channels/plugin-registry.js +0 -2
  672. package/dist/src/channels/plugins/registry.js +0 -2
  673. package/dist/src/channels/restart-policy.js +0 -2
  674. package/dist/src/channels/security-helpers.js +0 -2
  675. package/dist/src/channels/security.js +0 -2
  676. package/dist/src/channels/setup-wizard-discovery.js +0 -2
  677. package/dist/src/chat-commands/agent-edit.js +0 -2
  678. package/dist/src/chat-commands/builtins/config.js +0 -2
  679. package/dist/src/chat-commands/builtins/context.js +0 -2
  680. package/dist/src/chat-commands/builtins/goal.js +0 -2
  681. package/dist/src/chat-commands/builtins/model.js +0 -2
  682. package/dist/src/chat-commands/builtins/review.js +0 -2
  683. package/dist/src/chat-commands/builtins/session.js +0 -2
  684. package/dist/src/chat-commands/builtins/skill.js +0 -2
  685. package/dist/src/chat-commands/builtins/subgoal.js +0 -2
  686. package/dist/src/chat-commands/builtins/system.js +0 -2
  687. package/dist/src/chat-commands/builtins/thinking.js +0 -2
  688. package/dist/src/chat-commands/builtins/tts.js +0 -2
  689. package/dist/src/chat-commands/builtins/workflow.js +0 -2
  690. package/dist/src/chat-commands/command-parse.js +0 -2
  691. package/dist/src/chat-commands/config-paths.js +0 -2
  692. package/dist/src/chat-commands/config-value.js +0 -2
  693. package/dist/src/chat-commands/context.js +0 -2
  694. package/dist/src/chat-commands/format-output.js +0 -2
  695. package/dist/src/chat-commands/index.js +0 -2
  696. package/dist/src/chat-commands/processor.js +0 -2
  697. package/dist/src/chat-commands/registry.js +0 -2
  698. package/dist/src/chat-commands/session-key.js +0 -2
  699. package/dist/src/cli/argv-invocation.js +0 -2
  700. package/dist/src/cli/argv.js +0 -2
  701. package/dist/src/cli/bin.js +0 -2
  702. package/dist/src/cli/cli-log-level-preset.js +0 -2
  703. package/dist/src/cli/command-catalog.js +0 -2
  704. package/dist/src/cli/command-loaders.js +0 -2
  705. package/dist/src/cli/command-manifest.js +0 -2
  706. package/dist/src/cli/command-path-matches.js +0 -2
  707. package/dist/src/cli/command-path-policy.js +0 -2
  708. package/dist/src/cli/command-startup-policy.js +0 -2
  709. package/dist/src/cli/commands/agent/interactive.js +0 -2
  710. package/dist/src/cli/commands/agent/sessions.js +0 -2
  711. package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
  712. package/dist/src/cli/commands/agent.js +0 -2
  713. package/dist/src/cli/commands/agents.js +0 -2
  714. package/dist/src/cli/commands/auth.js +0 -2
  715. package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
  716. package/dist/src/cli/commands/browser.js +0 -2
  717. package/dist/src/cli/commands/channels.js +0 -2
  718. package/dist/src/cli/commands/config.js +0 -2
  719. package/dist/src/cli/commands/connectors.js +0 -2
  720. package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
  721. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
  722. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
  723. package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
  724. package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
  725. package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
  726. package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
  727. package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
  728. package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
  729. package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
  730. package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
  731. package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
  732. package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
  733. package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
  734. package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
  735. package/dist/src/cli/commands/doctor/flow.js +0 -2
  736. package/dist/src/cli/commands/doctor/format.js +0 -2
  737. package/dist/src/cli/commands/doctor/index.js +0 -2
  738. package/dist/src/cli/commands/extension-create.js +0 -2
  739. package/dist/src/cli/commands/extension-dev.js +0 -2
  740. package/dist/src/cli/commands/extension-marketplace.js +0 -2
  741. package/dist/src/cli/commands/extension-pack.js +0 -2
  742. package/dist/src/cli/commands/extension.js +0 -2
  743. package/dist/src/cli/commands/gateway/call.js +0 -2
  744. package/dist/src/cli/commands/gateway/health.js +0 -2
  745. package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
  746. package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
  747. package/dist/src/cli/commands/gateway/logs.js +0 -2
  748. package/dist/src/cli/commands/gateway/probe.js +0 -2
  749. package/dist/src/cli/commands/gateway/restart-health.js +0 -2
  750. package/dist/src/cli/commands/gateway/restart.js +0 -2
  751. package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
  752. package/dist/src/cli/commands/gateway/service.js +0 -2
  753. package/dist/src/cli/commands/gateway/shared.js +0 -2
  754. package/dist/src/cli/commands/gateway/status.js +0 -2
  755. package/dist/src/cli/commands/gateway/stop.js +0 -2
  756. package/dist/src/cli/commands/gateway/subcommands.js +0 -2
  757. package/dist/src/cli/commands/gateway/token.js +0 -2
  758. package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
  759. package/dist/src/cli/commands/gateway.js +0 -2
  760. package/dist/src/cli/commands/goal.js +0 -2
  761. package/dist/src/cli/commands/image.js +0 -2
  762. package/dist/src/cli/commands/init.js +0 -2
  763. package/dist/src/cli/commands/logs.js +0 -2
  764. package/dist/src/cli/commands/models.js +0 -2
  765. package/dist/src/cli/commands/onboard/channels/index.js +0 -2
  766. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
  767. package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
  768. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
  769. package/dist/src/cli/commands/onboard/gateway.js +0 -2
  770. package/dist/src/cli/commands/onboard/model.js +0 -2
  771. package/dist/src/cli/commands/onboard.js +0 -2
  772. package/dist/src/cli/commands/profile.js +0 -2
  773. package/dist/src/cli/commands/project.js +0 -2
  774. package/dist/src/cli/commands/providers.js +0 -2
  775. package/dist/src/cli/commands/resume.js +0 -2
  776. package/dist/src/cli/commands/search.js +0 -2
  777. package/dist/src/cli/commands/session/actions.js +0 -2
  778. package/dist/src/cli/commands/session/utils.js +0 -2
  779. package/dist/src/cli/commands/session.js +0 -2
  780. package/dist/src/cli/commands/setup-shared/output.js +0 -2
  781. package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
  782. package/dist/src/cli/commands/setup-shared/runner.js +0 -2
  783. package/dist/src/cli/commands/setup-shared/types.js +0 -2
  784. package/dist/src/cli/commands/setup.js +0 -2
  785. package/dist/src/cli/commands/skills-test.js +0 -2
  786. package/dist/src/cli/commands/skills.js +0 -2
  787. package/dist/src/cli/commands/tailscale.js +0 -2
  788. package/dist/src/cli/commands/tui-runner.js +0 -2
  789. package/dist/src/cli/commands/tui.js +0 -2
  790. package/dist/src/cli/commands/tunnel.js +0 -2
  791. package/dist/src/cli/commands/update.js +0 -2
  792. package/dist/src/cli/commands/voice.js +0 -2
  793. package/dist/src/cli/context.js +0 -2
  794. package/dist/src/cli/extension-cli-register.js +0 -2
  795. package/dist/src/cli/gateway-run-argv.js +0 -2
  796. package/dist/src/cli/gateway-run-fast-path.js +0 -2
  797. package/dist/src/cli/index.js +0 -2
  798. package/dist/src/cli/registry.js +0 -2
  799. package/dist/src/cli/templates.js +0 -2
  800. package/dist/src/cli/utils/colors.js +0 -2
  801. package/dist/src/cli/utils/gateway-client-options.js +0 -2
  802. package/dist/src/cli/utils/gateway-client.js +0 -2
  803. package/dist/src/cli/utils/init-workspace-core.js +0 -2
  804. package/dist/src/cli/utils/init-workspace.js +0 -2
  805. package/dist/src/cli/utils/oauth-login.js +0 -2
  806. package/dist/src/cli/utils/oauth-providers.js +0 -2
  807. package/dist/src/cli/utils/session.js +0 -2
  808. package/dist/src/commands/agents.config.js +0 -2
  809. package/dist/src/config/agent-profile.js +0 -2
  810. package/dist/src/config/agent-typed-models.js +0 -2
  811. package/dist/src/config/commands.flags.js +0 -2
  812. package/dist/src/config/default-model.js +0 -2
  813. package/dist/src/config/diff.js +0 -2
  814. package/dist/src/config/gateway-bind.js +0 -2
  815. package/dist/src/config/index.js +0 -2
  816. package/dist/src/config/loader.js +0 -2
  817. package/dist/src/config/mcp-config-normalize.js +0 -2
  818. package/dist/src/config/model-input.js +0 -2
  819. package/dist/src/config/models-json.js +0 -2
  820. package/dist/src/config/paths-state.js +0 -2
  821. package/dist/src/config/paths.js +0 -2
  822. package/dist/src/config/profile.js +0 -2
  823. package/dist/src/config/public-url.js +0 -2
  824. package/dist/src/config/reload.js +0 -2
  825. package/dist/src/config/resolve-config-value.js +0 -2
  826. package/dist/src/config/rules.js +0 -2
  827. package/dist/src/config/runtime-overrides.js +0 -2
  828. package/dist/src/config/schema.js +0 -2
  829. package/dist/src/config/validate-channel-configs.js +0 -2
  830. package/dist/src/config/voice.js +0 -2
  831. package/dist/src/config/web-patch.js +0 -2
  832. package/dist/src/config/workspace-defaults.js +0 -2
  833. package/dist/src/config/workspace-dirs.js +0 -2
  834. package/dist/src/config/workspace-path-helpers.js +0 -2
  835. package/dist/src/config/workspace-path.js +0 -2
  836. package/dist/src/connectors/approval.js +0 -2
  837. package/dist/src/connectors/auth-provider-registry.js +0 -2
  838. package/dist/src/connectors/builtin-catalog.js +0 -2
  839. package/dist/src/connectors/catalog.js +0 -2
  840. package/dist/src/connectors/composio-catalog.js +0 -2
  841. package/dist/src/connectors/composio-logo.js +0 -2
  842. package/dist/src/connectors/composio-sessions.js +9 -5
  843. package/dist/src/connectors/composio-triggers.js +0 -2
  844. package/dist/src/connectors/composio.js +0 -2
  845. package/dist/src/connectors/connector-memory-sync.js +0 -2
  846. package/dist/src/connectors/health.js +0 -2
  847. package/dist/src/connectors/install.js +0 -2
  848. package/dist/src/connectors/instances.js +0 -2
  849. package/dist/src/connectors/integration-strategy.js +0 -2
  850. package/dist/src/connectors/lifecycle.js +0 -2
  851. package/dist/src/connectors/materialize.js +0 -2
  852. package/dist/src/connectors/policy.js +0 -2
  853. package/dist/src/connectors/providers.js +0 -2
  854. package/dist/src/connectors/registries/modelscope.js +0 -2
  855. package/dist/src/connectors/registries/official-mcp.js +0 -2
  856. package/dist/src/connectors/registries/search.js +0 -2
  857. package/dist/src/connectors/registries/smithery.js +0 -2
  858. package/dist/src/connectors/runtime-adapter-registry.js +0 -2
  859. package/dist/src/connectors/secret-store.js +0 -2
  860. package/dist/src/connectors/setup-secrets.js +0 -2
  861. package/dist/src/connectors/supervisor.js +0 -2
  862. package/dist/src/connectors/usage.js +0 -2
  863. package/dist/src/connectors/workflow-preflight.js +0 -2
  864. package/dist/src/daemon/constants.js +0 -2
  865. package/dist/src/daemon/install-plan.js +0 -2
  866. package/dist/src/daemon/launchd.js +0 -2
  867. package/dist/src/daemon/schtasks.js +0 -2
  868. package/dist/src/daemon/service-audit.js +0 -2
  869. package/dist/src/daemon/service.js +0 -2
  870. package/dist/src/daemon/systemd.js +0 -2
  871. package/dist/src/document-understanding/extract.js +0 -2
  872. package/dist/src/errors/index.js +0 -2
  873. package/dist/src/extensions/activation-context.js +0 -2
  874. package/dist/src/extensions/activation-planner.js +0 -2
  875. package/dist/src/extensions/api.js +0 -2
  876. package/dist/src/extensions/bundle-mcp.js +0 -2
  877. package/dist/src/extensions/bundled-extension-activation.js +0 -2
  878. package/dist/src/extensions/diagnostics.js +0 -2
  879. package/dist/src/extensions/discover-extensions.js +0 -2
  880. package/dist/src/extensions/engine-check.js +0 -2
  881. package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
  882. package/dist/src/extensions/extension-registry-impl.js +0 -2
  883. package/dist/src/extensions/health.js +0 -2
  884. package/dist/src/extensions/hooks.js +0 -2
  885. package/dist/src/extensions/index.js +0 -2
  886. package/dist/src/extensions/install-transaction.js +0 -2
  887. package/dist/src/extensions/install.js +0 -2
  888. package/dist/src/extensions/loader.js +0 -2
  889. package/dist/src/extensions/lockfile.js +0 -2
  890. package/dist/src/extensions/manifest-registry.js +0 -2
  891. package/dist/src/extensions/marketplace.js +0 -2
  892. package/dist/src/extensions/media-provider-contracts.js +0 -2
  893. package/dist/src/extensions/normalize-manifest.js +0 -2
  894. package/dist/src/extensions/onboard-helpers.js +0 -2
  895. package/dist/src/extensions/package-contract.js +0 -2
  896. package/dist/src/extensions/sdk/channel-entry.js +0 -2
  897. package/dist/src/extensions/sdk/channel-helpers.js +0 -2
  898. package/dist/src/extensions/sdk/index.js +0 -2
  899. package/dist/src/extensions/sdk/lazy.js +0 -2
  900. package/dist/src/extensions/sdk/testing.js +0 -2
  901. package/dist/src/extensions/security.js +0 -2
  902. package/dist/src/extensions/slots.js +0 -2
  903. package/dist/src/extensions/speech-provider-contracts.js +0 -2
  904. package/dist/src/extensions/store-zip-limits.js +0 -2
  905. package/dist/src/extensions/typed-event-bus.js +0 -2
  906. package/dist/src/extensions/types/hooks.js +0 -2
  907. package/dist/src/extensions/types/providers.js +0 -2
  908. package/dist/src/extensions/update.js +0 -2
  909. package/dist/src/extensions/when-context.js +0 -2
  910. package/dist/src/extensions/when-expression.js +0 -2
  911. package/dist/src/gateway/agent-builtin-tools.js +0 -2
  912. package/dist/src/gateway/agent-run-relay.js +0 -2
  913. package/dist/src/gateway/agents-admin.js +0 -2
  914. package/dist/src/gateway/auth.js +0 -2
  915. package/dist/src/gateway/capability-presets-admin.js +0 -2
  916. package/dist/src/gateway/chat-limits.js +0 -2
  917. package/dist/src/gateway/chat-stream/mapper.js +28 -14
  918. package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
  919. package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
  920. package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
  921. package/dist/src/gateway/clarify-bridge.js +3 -3
  922. package/dist/src/gateway/clarify-runtime.js +0 -2
  923. package/dist/src/gateway/client-ip.js +0 -2
  924. package/dist/src/gateway/config-tools-web.js +0 -2
  925. package/dist/src/gateway/credential.js +0 -2
  926. package/dist/src/gateway/discovery/mdns.js +0 -2
  927. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
  928. package/dist/src/gateway/ensure-network-cors.js +0 -2
  929. package/dist/src/gateway/file-path-classifier.js +0 -2
  930. package/dist/src/gateway/file-reference-registry.js +0 -2
  931. package/dist/src/gateway/global-defaults-admin.js +0 -2
  932. package/dist/src/gateway/heartbeat/service.js +0 -2
  933. package/dist/src/gateway/hono/app.js +0 -2
  934. package/dist/src/gateway/hono/lib/agent-model.js +0 -2
  935. package/dist/src/gateway/hono/lib/config-payload.js +0 -2
  936. package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
  937. package/dist/src/gateway/hono/lib/extension-store.js +0 -2
  938. package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
  939. package/dist/src/gateway/hono/lib/route-logger.js +0 -2
  940. package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
  941. package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
  942. package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
  943. package/dist/src/gateway/hono/lib/static-ui.js +0 -2
  944. package/dist/src/gateway/hono/middleware/auth.js +0 -2
  945. package/dist/src/gateway/hono/middleware/log-context.js +0 -2
  946. package/dist/src/gateway/hono/middleware/logger.js +0 -2
  947. package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
  948. package/dist/src/gateway/hono/middleware/scopes.js +0 -2
  949. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
  950. package/dist/src/gateway/hono/oauth-async.js +0 -2
  951. package/dist/src/gateway/hono/oauth.js +0 -2
  952. package/dist/src/gateway/hono/routes/activity.js +0 -2
  953. package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
  954. package/dist/src/gateway/hono/routes/agents.js +0 -2
  955. package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
  956. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
  957. package/dist/src/gateway/hono/routes/browser-install.js +0 -2
  958. package/dist/src/gateway/hono/routes/browser.js +0 -2
  959. package/dist/src/gateway/hono/routes/capabilities.js +0 -2
  960. package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
  961. package/dist/src/gateway/hono/routes/channels.js +0 -2
  962. package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
  963. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
  964. package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
  965. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
  966. package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
  967. package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
  968. package/dist/src/gateway/hono/routes/config.js +0 -2
  969. package/dist/src/gateway/hono/routes/connectors.js +0 -2
  970. package/dist/src/gateway/hono/routes/doctor.js +0 -2
  971. package/dist/src/gateway/hono/routes/dreaming.js +0 -2
  972. package/dist/src/gateway/hono/routes/exposure.js +0 -2
  973. package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
  974. package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
  975. package/dist/src/gateway/hono/routes/goals.js +0 -2
  976. package/dist/src/gateway/hono/routes/home.js +0 -2
  977. package/dist/src/gateway/hono/routes/host-fs.js +0 -2
  978. package/dist/src/gateway/hono/routes/index.js +0 -2
  979. package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
  980. package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
  981. package/dist/src/gateway/hono/routes/local-apps.js +0 -2
  982. package/dist/src/gateway/hono/routes/logs.js +0 -2
  983. package/dist/src/gateway/hono/routes/mcp.js +0 -2
  984. package/dist/src/gateway/hono/routes/media.js +0 -2
  985. package/dist/src/gateway/hono/routes/memory.js +0 -2
  986. package/dist/src/gateway/hono/routes/migrations.js +0 -2
  987. package/dist/src/gateway/hono/routes/mobile.js +0 -2
  988. package/dist/src/gateway/hono/routes/models.js +0 -2
  989. package/dist/src/gateway/hono/routes/notes.js +3 -3
  990. package/dist/src/gateway/hono/routes/projects.js +0 -2
  991. package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
  992. package/dist/src/gateway/hono/routes/search.js +0 -2
  993. package/dist/src/gateway/hono/routes/sessions.js +0 -2
  994. package/dist/src/gateway/hono/routes/shares.js +0 -2
  995. package/dist/src/gateway/hono/routes/site-shares.js +0 -2
  996. package/dist/src/gateway/hono/routes/status.js +0 -2
  997. package/dist/src/gateway/hono/routes/tui.js +0 -2
  998. package/dist/src/gateway/hono/routes/tunnel.js +0 -2
  999. package/dist/src/gateway/hono/routes/update.js +0 -2
  1000. package/dist/src/gateway/hono/routes/voice.js +0 -2
  1001. package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
  1002. package/dist/src/gateway/hono/routes/workflows.js +0 -2
  1003. package/dist/src/gateway/hono/routes/workspace.js +0 -2
  1004. package/dist/src/gateway/hono/routes/you.js +0 -2
  1005. package/dist/src/gateway/hono/sse-json.js +0 -2
  1006. package/dist/src/gateway/hono/sse.js +0 -2
  1007. package/dist/src/gateway/host.js +0 -2
  1008. package/dist/src/gateway/image-capabilities.js +0 -2
  1009. package/dist/src/gateway/listen.js +0 -2
  1010. package/dist/src/gateway/lock.js +0 -2
  1011. package/dist/src/gateway/ports.js +0 -2
  1012. package/dist/src/gateway/protocol.js +0 -2
  1013. package/dist/src/gateway/public-url.js +0 -2
  1014. package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
  1015. package/dist/src/gateway/rate-limit/buckets.js +0 -2
  1016. package/dist/src/gateway/rate-limit/env-flags.js +0 -2
  1017. package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
  1018. package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
  1019. package/dist/src/gateway/respawn.js +0 -2
  1020. package/dist/src/gateway/run-loop.js +0 -2
  1021. package/dist/src/gateway/runtime-config.js +0 -2
  1022. package/dist/src/gateway/security/audit.js +0 -2
  1023. package/dist/src/gateway/security/csp.js +0 -2
  1024. package/dist/src/gateway/security/dangerous-tools.js +0 -2
  1025. package/dist/src/gateway/security/external-content.js +0 -2
  1026. package/dist/src/gateway/security/known-weak-secrets.js +0 -2
  1027. package/dist/src/gateway/security/loopback.js +0 -2
  1028. package/dist/src/gateway/security/operator-scopes.js +0 -2
  1029. package/dist/src/gateway/security/origin-check.js +0 -2
  1030. package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
  1031. package/dist/src/gateway/security/secret-equal.js +0 -2
  1032. package/dist/src/gateway/server-tailscale.js +0 -2
  1033. package/dist/src/gateway/server.js +0 -2
  1034. package/dist/src/gateway/service/agent-runner.js +0 -2
  1035. package/dist/src/gateway/service/config-coordinator.js +0 -2
  1036. package/dist/src/gateway/service/marketplace-service.js +0 -2
  1037. package/dist/src/gateway/service/run-gateway-agent.js +0 -2
  1038. package/dist/src/gateway/service/session-chat-ids.js +0 -2
  1039. package/dist/src/gateway/service/sessions-api.js +0 -2
  1040. package/dist/src/gateway/service/sse-hub.js +0 -2
  1041. package/dist/src/gateway/service.js +1 -2
  1042. package/dist/src/gateway/session-reset-service.js +0 -2
  1043. package/dist/src/gateway/startup-readiness.js +0 -2
  1044. package/dist/src/gateway/startup-trace.js +0 -2
  1045. package/dist/src/gateway/tailscale-auth.js +0 -2
  1046. package/dist/src/gateway/tailscale-lifecycle.js +0 -2
  1047. package/dist/src/gateway/tls-server.js +0 -2
  1048. package/dist/src/gateway/trusted-proxy.js +0 -2
  1049. package/dist/src/gateway/user-turn-input.js +0 -2
  1050. package/dist/src/gateway/workspace-editor-path.js +0 -2
  1051. package/dist/src/gateway/workspace-file-search.js +0 -2
  1052. package/dist/src/gateway/workspace-fs-file-list.js +0 -2
  1053. package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
  1054. package/dist/src/gateway/workspace-ripgrep.js +0 -2
  1055. package/dist/src/gateway/ws-security.js +0 -2
  1056. package/dist/src/generated/bundled-image-generation-providers.js +0 -2
  1057. package/dist/src/goals/goal-contract-draft.js +0 -2
  1058. package/dist/src/goals/goal-evidence-review.js +0 -2
  1059. package/dist/src/goals/goal-notifications.js +0 -2
  1060. package/dist/src/goals/goal-queue-store.js +0 -2
  1061. package/dist/src/goals/goal-runner.js +0 -2
  1062. package/dist/src/goals/goal-service.js +0 -2
  1063. package/dist/src/goals/goal-store.js +0 -2
  1064. package/dist/src/goals/goal-workflow-judge.js +0 -2
  1065. package/dist/src/heartbeat/active-hours.js +0 -2
  1066. package/dist/src/heartbeat/content-check.js +0 -2
  1067. package/dist/src/heartbeat/event-prompt.js +0 -2
  1068. package/dist/src/heartbeat/tokens.js +0 -2
  1069. package/dist/src/heartbeat/wake.js +0 -2
  1070. package/dist/src/i18n/format.js +0 -2
  1071. package/dist/src/i18n/goals-bundle.js +0 -2
  1072. package/dist/src/i18n/locale.js +0 -2
  1073. package/dist/src/i18n/locales/goals.en.js +0 -2
  1074. package/dist/src/i18n/locales/goals.zh.js +0 -2
  1075. package/dist/src/i18n/locales/share-tool.en.js +0 -2
  1076. package/dist/src/i18n/locales/share-tool.zh.js +0 -2
  1077. package/dist/src/i18n/share-tool-bundle.js +0 -2
  1078. package/dist/src/index.js +0 -2
  1079. package/dist/src/infra/brew.js +0 -2
  1080. package/dist/src/infra/bus/queue.js +0 -2
  1081. package/dist/src/infra/debounce.js +0 -2
  1082. package/dist/src/infra/exec.js +0 -2
  1083. package/dist/src/infra/gateway-process-argv.js +0 -2
  1084. package/dist/src/infra/gateway-processes.js +0 -2
  1085. package/dist/src/infra/host-env-security-policy.js +0 -2
  1086. package/dist/src/infra/host-env-security.js +0 -2
  1087. package/dist/src/infra/http-proxy-env.js +0 -2
  1088. package/dist/src/infra/is-main.js +0 -2
  1089. package/dist/src/infra/json-utf8-bytes.js +0 -2
  1090. package/dist/src/infra/node-sqlite.js +0 -2
  1091. package/dist/src/infra/package-json.js +0 -2
  1092. package/dist/src/infra/package-update-steps.js +0 -2
  1093. package/dist/src/infra/path-env.js +0 -2
  1094. package/dist/src/infra/path-prepend.js +0 -2
  1095. package/dist/src/infra/ports.js +0 -2
  1096. package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
  1097. package/dist/src/infra/rate-limit/keyed-store.js +0 -2
  1098. package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
  1099. package/dist/src/infra/restart.js +0 -2
  1100. package/dist/src/infra/retry.js +0 -2
  1101. package/dist/src/infra/run-command.js +0 -2
  1102. package/dist/src/infra/sqlite-errors.js +0 -2
  1103. package/dist/src/infra/ssh-tunnel.js +0 -2
  1104. package/dist/src/infra/stable-node-path.js +0 -2
  1105. package/dist/src/infra/tailscale.js +0 -2
  1106. package/dist/src/infra/undici-fetch.js +0 -2
  1107. package/dist/src/infra/unhandled-rejections.js +0 -2
  1108. package/dist/src/infra/update-channels.js +0 -2
  1109. package/dist/src/infra/update-check.js +0 -2
  1110. package/dist/src/infra/update-global.js +0 -2
  1111. package/dist/src/infra/update-lock.js +0 -2
  1112. package/dist/src/infra/update-log.js +0 -2
  1113. package/dist/src/infra/update-restart.js +0 -2
  1114. package/dist/src/infra/update-runner.js +0 -2
  1115. package/dist/src/infra/update-startup.js +0 -2
  1116. package/dist/src/infra/warning-filter.js +0 -2
  1117. package/dist/src/infra/write-file-atomic.js +0 -2
  1118. package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
  1119. package/dist/src/knowledge/coordinator.js +0 -2
  1120. package/dist/src/knowledge/ingestion-service.js +0 -2
  1121. package/dist/src/local-apps/acceptance.js +0 -2
  1122. package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
  1123. package/dist/src/local-apps/runtime-entry.js +0 -2
  1124. package/dist/src/local-apps/scaffold.js +0 -2
  1125. package/dist/src/local-apps/service.js +0 -2
  1126. package/dist/src/local-apps/store.js +0 -2
  1127. package/dist/src/markdown/chunk.js +0 -2
  1128. package/dist/src/markdown/code-spans.js +0 -2
  1129. package/dist/src/markdown/fences.js +0 -2
  1130. package/dist/src/markdown/frontmatter.js +0 -2
  1131. package/dist/src/markdown/ir.js +0 -2
  1132. package/dist/src/markdown/render.js +0 -2
  1133. package/dist/src/markdown/tables.js +0 -2
  1134. package/dist/src/mcp/channel-bridge.js +0 -2
  1135. package/dist/src/mcp/channel-server.js +0 -2
  1136. package/dist/src/mcp/channel-shared.js +0 -2
  1137. package/dist/src/mcp/channel-tools.js +0 -2
  1138. package/dist/src/mcp/gateway-http-client.js +0 -2
  1139. package/dist/src/media/media-reference.js +0 -2
  1140. package/dist/src/media/paths.js +0 -2
  1141. package/dist/src/media/session-references.js +0 -2
  1142. package/dist/src/media/store.js +0 -2
  1143. package/dist/src/media/uri.js +0 -2
  1144. package/dist/src/media-shared/http/api-key-rotation.js +0 -2
  1145. package/dist/src/media-shared/http/deadline.js +0 -2
  1146. package/dist/src/media-shared/http/private-network.js +0 -2
  1147. package/dist/src/media-shared/http/provider-http-errors.js +0 -2
  1148. package/dist/src/media-shared/http/provider-http.js +0 -2
  1149. package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
  1150. package/dist/src/media-shared/http/ssrf-guard.js +0 -2
  1151. package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
  1152. package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
  1153. package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
  1154. package/dist/src/media-understanding/registry.js +0 -2
  1155. package/dist/src/media-understanding/resolve-entries.js +0 -2
  1156. package/dist/src/media-understanding/runner.js +0 -2
  1157. package/dist/src/migrations/config/default-capability-preset.js +0 -2
  1158. package/dist/src/migrations/registry.js +0 -2
  1159. package/dist/src/migrations/runner.js +0 -2
  1160. package/dist/src/mobile/notification-service.js +0 -2
  1161. package/dist/src/mobile/notification-store.js +0 -2
  1162. package/dist/src/mobile/notification-types.js +0 -2
  1163. package/dist/src/notes/agent-context.js +0 -2
  1164. package/dist/src/notes/attachment-ref.js +0 -2
  1165. package/dist/src/notes/note-attachment-sync.js +0 -2
  1166. package/dist/src/notes/note-index-meta.js +0 -2
  1167. package/dist/src/notes/note-markdown.js +0 -2
  1168. package/dist/src/notes/paths.js +0 -2
  1169. package/dist/src/notes/service.d.ts +3 -1
  1170. package/dist/src/notes/service.js +19 -5
  1171. package/dist/src/notes/store.js +0 -2
  1172. package/dist/src/package-version.js +0 -2
  1173. package/dist/src/pets/factory.d.ts +13 -0
  1174. package/dist/src/pets/factory.js +23 -2
  1175. package/dist/src/pets/manifest.js +0 -2
  1176. package/dist/src/pets/validator.js +0 -2
  1177. package/dist/src/process/kill-tree.js +0 -2
  1178. package/dist/src/project-trust/trust-store.js +0 -2
  1179. package/dist/src/projects/automation-bind.js +0 -2
  1180. package/dist/src/projects/goal-bind.js +0 -2
  1181. package/dist/src/projects/memory-bind.js +0 -2
  1182. package/dist/src/projects/project-agent-suggestion.js +0 -2
  1183. package/dist/src/projects/project-agent.js +0 -2
  1184. package/dist/src/projects/project-kind.js +0 -2
  1185. package/dist/src/projects/project-loop.js +0 -2
  1186. package/dist/src/projects/project-service.js +0 -2
  1187. package/dist/src/projects/project-store.js +0 -2
  1188. package/dist/src/projects/session-bind.js +0 -2
  1189. package/dist/src/projects/workflow-bind.js +0 -2
  1190. package/dist/src/projects/workspace-project.js +0 -2
  1191. package/dist/src/projects/workspace.js +0 -2
  1192. package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
  1193. package/dist/src/providers/auth-runtime/is-configured.js +0 -2
  1194. package/dist/src/providers/auth-runtime/oauth.js +0 -2
  1195. package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
  1196. package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
  1197. package/dist/src/providers/constants.js +0 -2
  1198. package/dist/src/providers/domestic-presets.js +0 -2
  1199. package/dist/src/providers/env-keys.js +0 -2
  1200. package/dist/src/providers/extension-stream-bridge.js +0 -2
  1201. package/dist/src/providers/index.js +0 -2
  1202. package/dist/src/providers/model-call.js +0 -2
  1203. package/dist/src/providers/model-discovery.js +0 -2
  1204. package/dist/src/providers/model-registry.js +0 -2
  1205. package/dist/src/providers/model-supplements.js +0 -2
  1206. package/dist/src/providers/plugin-registry.js +0 -2
  1207. package/dist/src/providers/presentation.js +0 -2
  1208. package/dist/src/remote-access/exposure-guards.js +0 -2
  1209. package/dist/src/remote-access/exposure-manager.js +0 -2
  1210. package/dist/src/review/review-git.js +0 -2
  1211. package/dist/src/review/review-types.js +0 -2
  1212. package/dist/src/routing/account-id.js +0 -2
  1213. package/dist/src/routing/agent-session-key.js +0 -2
  1214. package/dist/src/routing/bindings.js +0 -2
  1215. package/dist/src/routing/index.js +0 -2
  1216. package/dist/src/routing/resolve-route.js +0 -2
  1217. package/dist/src/routing/resolve-tui-session-key.js +0 -2
  1218. package/dist/src/routing/session-key-utils.js +0 -2
  1219. package/dist/src/routing/session-key.js +0 -2
  1220. package/dist/src/session/abort-cutoff.js +0 -2
  1221. package/dist/src/session/chat-export.js +0 -2
  1222. package/dist/src/session/client-history.js +0 -2
  1223. package/dist/src/session/compaction-checkpoints.js +0 -2
  1224. package/dist/src/session/config-store.js +0 -2
  1225. package/dist/src/session/init-session-turn.js +0 -2
  1226. package/dist/src/session/lifecycle-timestamps.js +0 -2
  1227. package/dist/src/session/load-jsonl-entries.js +0 -2
  1228. package/dist/src/session/manager.js +0 -2
  1229. package/dist/src/session/patch-metadata.js +0 -2
  1230. package/dist/src/session/reset-policy.js +0 -2
  1231. package/dist/src/session/reset-triggers.js +0 -2
  1232. package/dist/src/session/reset-type.js +0 -2
  1233. package/dist/src/session/resolve-session.js +0 -2
  1234. package/dist/src/session/session-context-for-llm.js +0 -2
  1235. package/dist/src/session/session-id.js +0 -2
  1236. package/dist/src/session/session-title.js +0 -2
  1237. package/dist/src/session/session-workspace.js +0 -2
  1238. package/dist/src/session/store.js +0 -2
  1239. package/dist/src/session/stored-rows-to-file-entries.js +0 -2
  1240. package/dist/src/session/thinking-resolve.js +0 -2
  1241. package/dist/src/session/transcript-events.js +0 -2
  1242. package/dist/src/session/transcript-format.js +0 -2
  1243. package/dist/src/session/transcript-outline.js +0 -2
  1244. package/dist/src/session/transcript-stats.js +0 -2
  1245. package/dist/src/session/types.js +0 -2
  1246. package/dist/src/session/user-round-delete.js +0 -2
  1247. package/dist/src/share/share-audit.js +0 -2
  1248. package/dist/src/share/share-auto.js +0 -2
  1249. package/dist/src/share/share-config.js +0 -2
  1250. package/dist/src/share/share-landing.js +0 -2
  1251. package/dist/src/share/share-rate-limit.js +0 -2
  1252. package/dist/src/share/share-store.js +0 -2
  1253. package/dist/src/share/share-thumbnail.js +0 -2
  1254. package/dist/src/share/share-types.js +0 -2
  1255. package/dist/src/share/share-url.js +0 -2
  1256. package/dist/src/share/share-zip.js +0 -2
  1257. package/dist/src/share/site-proxy.js +0 -2
  1258. package/dist/src/share/site-share-config.js +0 -2
  1259. package/dist/src/share/site-share-router.js +0 -2
  1260. package/dist/src/share/site-share-store.js +0 -2
  1261. package/dist/src/share/site-share-types.js +0 -2
  1262. package/dist/src/share/site-static-serve.js +0 -2
  1263. package/dist/src/storage/sqlite/activity-repository.js +0 -2
  1264. package/dist/src/storage/sqlite/config-repository.js +0 -2
  1265. package/dist/src/storage/sqlite/connection.js +0 -2
  1266. package/dist/src/storage/sqlite/connector-repository.js +0 -2
  1267. package/dist/src/storage/sqlite/fts.js +0 -2
  1268. package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
  1269. package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
  1270. package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
  1271. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
  1272. package/dist/src/storage/sqlite/migrations/discover.js +0 -2
  1273. package/dist/src/storage/sqlite/migrations/errors.js +0 -2
  1274. package/dist/src/storage/sqlite/migrations/runner.js +0 -2
  1275. package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
  1276. package/dist/src/storage/sqlite/notes-repository.js +0 -2
  1277. package/dist/src/storage/sqlite/paths.js +0 -2
  1278. package/dist/src/storage/sqlite/row-mappers.js +0 -2
  1279. package/dist/src/storage/sqlite/schema-version.js +0 -2
  1280. package/dist/src/storage/sqlite/schema.js +0 -2
  1281. package/dist/src/storage/sqlite/session-metadata.js +0 -2
  1282. package/dist/src/storage/sqlite/session-repository.js +0 -2
  1283. package/dist/src/storage/sqlite/transaction.js +0 -2
  1284. package/dist/src/storage/sqlite/transcript-repository.js +0 -2
  1285. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
  1286. package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
  1287. package/dist/src/tui/backends/embedded-backend.js +0 -2
  1288. package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
  1289. package/dist/src/tui/chat-history.js +0 -2
  1290. package/dist/src/tui/clipboard-image.js +0 -2
  1291. package/dist/src/tui/clipboard-text.js +0 -2
  1292. package/dist/src/tui/components/assistant-message.js +0 -2
  1293. package/dist/src/tui/components/bash-execution.js +0 -2
  1294. package/dist/src/tui/components/bash-summary.js +0 -2
  1295. package/dist/src/tui/components/branch-message-summary.js +0 -2
  1296. package/dist/src/tui/components/branch-summary.js +0 -2
  1297. package/dist/src/tui/components/chat-log.js +0 -2
  1298. package/dist/src/tui/components/compaction-summary.js +0 -2
  1299. package/dist/src/tui/components/custom-editor.js +0 -2
  1300. package/dist/src/tui/components/custom-message.js +0 -2
  1301. package/dist/src/tui/components/dynamic-border.js +0 -2
  1302. package/dist/src/tui/components/extension-dialog.js +0 -2
  1303. package/dist/src/tui/components/fuzzy-filter.js +0 -2
  1304. package/dist/src/tui/components/scoped-models-selector.js +0 -2
  1305. package/dist/src/tui/components/searchable-select-list.js +0 -2
  1306. package/dist/src/tui/components/session-selector.js +0 -2
  1307. package/dist/src/tui/components/settings-selector.js +0 -2
  1308. package/dist/src/tui/components/thinking-selector.js +0 -2
  1309. package/dist/src/tui/components/tool-execution.js +0 -2
  1310. package/dist/src/tui/components/tui-bottom-bar.js +0 -2
  1311. package/dist/src/tui/components/tui-header.js +0 -2
  1312. package/dist/src/tui/components/user-message.js +0 -2
  1313. package/dist/src/tui/components/visual-truncate.js +0 -2
  1314. package/dist/src/tui/extension-host/autocomplete.js +0 -2
  1315. package/dist/src/tui/extension-host/host.js +0 -2
  1316. package/dist/src/tui/extension-host/load-extensions.js +0 -2
  1317. package/dist/src/tui/extension-host/runtime-context.js +0 -2
  1318. package/dist/src/tui/extension-host/runtime.js +0 -2
  1319. package/dist/src/tui/extension-host/surface.js +0 -2
  1320. package/dist/src/tui/extension-host/tool-renderers.js +0 -2
  1321. package/dist/src/tui/format-tui-hotkeys.js +0 -2
  1322. package/dist/src/tui/sse-consumer.js +0 -2
  1323. package/dist/src/tui/theme/dark.js +0 -2
  1324. package/dist/src/tui/theme/light.js +0 -2
  1325. package/dist/src/tui/theme-manager.js +0 -2
  1326. package/dist/src/tui/theme.js +0 -2
  1327. package/dist/src/tui/tool-summary.js +0 -2
  1328. package/dist/src/tui/tui-agent-events.js +0 -2
  1329. package/dist/src/tui/tui-command-formatters.js +0 -2
  1330. package/dist/src/tui/tui-commands.js +0 -2
  1331. package/dist/src/tui/tui-context-usage.js +0 -2
  1332. package/dist/src/tui/tui-extension-user-message.js +0 -2
  1333. package/dist/src/tui/tui-fd-path.js +0 -2
  1334. package/dist/src/tui/tui-file-autocomplete.js +0 -2
  1335. package/dist/src/tui/tui-follow-up-queue.js +0 -2
  1336. package/dist/src/tui/tui-git-branch.js +0 -2
  1337. package/dist/src/tui/tui-keybindings-file.js +0 -2
  1338. package/dist/src/tui/tui-lifecycle.js +0 -2
  1339. package/dist/src/tui/tui-local-shell.js +0 -2
  1340. package/dist/src/tui/tui-model-picker.js +0 -2
  1341. package/dist/src/tui/tui-oauth-login.js +0 -2
  1342. package/dist/src/tui/tui-overlays.js +0 -2
  1343. package/dist/src/tui/tui-picker-overlay.js +0 -2
  1344. package/dist/src/tui/tui-run-state.js +0 -2
  1345. package/dist/src/tui/tui-run-status-format.js +0 -2
  1346. package/dist/src/tui/tui-runtime-hints.js +0 -2
  1347. package/dist/src/tui/tui-scoped-models.js +0 -2
  1348. package/dist/src/tui/tui-session-actions.js +0 -2
  1349. package/dist/src/tui/tui-session-format.js +0 -2
  1350. package/dist/src/tui/tui-session-snapshot.js +0 -2
  1351. package/dist/src/tui/tui-session-stats.js +0 -2
  1352. package/dist/src/tui/tui-settings.js +0 -2
  1353. package/dist/src/tui/tui-skills-autocomplete.js +0 -2
  1354. package/dist/src/tui/tui-startup-resources.js +0 -2
  1355. package/dist/src/tui/tui-startup-text.js +0 -2
  1356. package/dist/src/tui/tui-stdio-filter.js +0 -2
  1357. package/dist/src/tui/tui-submit.js +0 -2
  1358. package/dist/src/tui/tui-suspend.js +0 -2
  1359. package/dist/src/tui/tui-timeline-picker.js +0 -2
  1360. package/dist/src/tui/tui-timeline.js +0 -2
  1361. package/dist/src/tui/tui-tool-diff.js +0 -2
  1362. package/dist/src/tui/tui-tool-result.js +0 -2
  1363. package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
  1364. package/dist/src/tui/tui-transcript-tree.js +0 -2
  1365. package/dist/src/tui/tui-types.js +0 -2
  1366. package/dist/src/tui/tui-workflow-slash.js +0 -2
  1367. package/dist/src/tui/tui.js +0 -2
  1368. package/dist/src/tui/xopc-tui-keybindings.js +0 -2
  1369. package/dist/src/tunnel/broker-client.js +0 -2
  1370. package/dist/src/tunnel/consent.js +0 -2
  1371. package/dist/src/tunnel/enable-lan-pairing.js +0 -2
  1372. package/dist/src/tunnel/env.js +0 -2
  1373. package/dist/src/tunnel/frp-subdomain-host.js +0 -2
  1374. package/dist/src/tunnel/frpc-binary.js +0 -2
  1375. package/dist/src/tunnel/frpc-config.js +0 -2
  1376. package/dist/src/tunnel/frpc-extract.js +0 -2
  1377. package/dist/src/tunnel/frpc-process.js +0 -2
  1378. package/dist/src/tunnel/gateway-lifecycle.js +0 -2
  1379. package/dist/src/tunnel/pair-context.js +0 -2
  1380. package/dist/src/tunnel/pair-url.js +0 -2
  1381. package/dist/src/tunnel/pairing-rate-limit.js +0 -2
  1382. package/dist/src/tunnel/pairing.js +0 -2
  1383. package/dist/src/tunnel/tunnel-audit.js +0 -2
  1384. package/dist/src/tunnel/tunnel-config.js +0 -2
  1385. package/dist/src/tunnel/tunnel-persist.js +0 -2
  1386. package/dist/src/tunnel/tunnel-qr.js +0 -2
  1387. package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
  1388. package/dist/src/tunnel/tunnel-service.js +0 -2
  1389. package/dist/src/tunnel/tunnel-state.js +0 -2
  1390. package/dist/src/tunnel/well-known.js +0 -2
  1391. package/dist/src/user-context/config.js +0 -2
  1392. package/dist/src/user-context/import.js +0 -2
  1393. package/dist/src/user-context/owner.js +0 -2
  1394. package/dist/src/user-context/profile.js +0 -2
  1395. package/dist/src/user-context/projection.js +0 -2
  1396. package/dist/src/user-context/runtime.js +0 -2
  1397. package/dist/src/user-context/source-recommendations.js +0 -2
  1398. package/dist/src/user-context/trust-policy.js +0 -2
  1399. package/dist/src/utils/global-singleton.js +0 -2
  1400. package/dist/src/utils/helpers.js +0 -2
  1401. package/dist/src/utils/index.js +0 -2
  1402. package/dist/src/utils/is-record.js +0 -2
  1403. package/dist/src/utils/logger/audit.js +0 -2
  1404. package/dist/src/utils/logger/config.js +0 -2
  1405. package/dist/src/utils/logger/context.js +0 -2
  1406. package/dist/src/utils/logger/exporters.js +0 -2
  1407. package/dist/src/utils/logger/index.js +0 -2
  1408. package/dist/src/utils/logger/log-store.js +0 -2
  1409. package/dist/src/utils/logger/log-stream.js +0 -2
  1410. package/dist/src/utils/logger/pino-record.js +0 -2
  1411. package/dist/src/utils/logger/redact.js +0 -2
  1412. package/dist/src/utils/logger/rotation.js +0 -2
  1413. package/dist/src/utils/logger/shutdown.js +0 -2
  1414. package/dist/src/utils/logger/stats.js +0 -2
  1415. package/dist/src/utils/logger/streams.js +0 -2
  1416. package/dist/src/utils/logger/types.js +0 -2
  1417. package/dist/src/utils/logger.js +0 -2
  1418. package/dist/src/utils/redact-sensitive-url.js +0 -2
  1419. package/dist/src/utils/sanitize-log.js +0 -2
  1420. package/dist/src/utils/string-coerce.js +0 -2
  1421. package/dist/src/voice/language-profile.js +0 -2
  1422. package/dist/src/voice/local/model-files.js +0 -2
  1423. package/dist/src/voice/local/model-manager.js +0 -2
  1424. package/dist/src/voice/local/models.js +0 -2
  1425. package/dist/src/voice/local/runtime-client.js +0 -2
  1426. package/dist/src/voice/local/runtime-dispatcher.js +0 -2
  1427. package/dist/src/voice/local/runtime-worker.js +12 -4
  1428. package/dist/src/voice/local/wav.js +0 -2
  1429. package/dist/src/voice/metadata/builtin.js +0 -2
  1430. package/dist/src/voice/metadata/registry.js +0 -2
  1431. package/dist/src/voice/stt/availability.js +0 -2
  1432. package/dist/src/voice/stt/config-slice.js +0 -2
  1433. package/dist/src/voice/stt/factory.js +0 -2
  1434. package/dist/src/voice/stt/index.js +0 -2
  1435. package/dist/src/voice/stt/list-providers.js +0 -2
  1436. package/dist/src/voice/stt/mention.js +0 -2
  1437. package/dist/src/voice/stt/preflight.js +0 -2
  1438. package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
  1439. package/dist/src/voice/stt/providers/local-transcription.js +0 -2
  1440. package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
  1441. package/dist/src/voice/stt/transcribe-core.js +0 -2
  1442. package/dist/src/voice/stt/types.js +0 -2
  1443. package/dist/src/voice/tts/audio.js +0 -2
  1444. package/dist/src/voice/tts/config-slice.js +0 -2
  1445. package/dist/src/voice/tts/directives.js +0 -2
  1446. package/dist/src/voice/tts/factory.js +0 -2
  1447. package/dist/src/voice/tts/list-providers.js +0 -2
  1448. package/dist/src/voice/tts/merge-config.js +0 -2
  1449. package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
  1450. package/dist/src/voice/tts/payload.js +0 -2
  1451. package/dist/src/voice/tts/preprocess.js +0 -2
  1452. package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
  1453. package/dist/src/voice/tts/providers/edge-speech.js +0 -2
  1454. package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
  1455. package/dist/src/voice/tts/providers/openai-speech.js +0 -2
  1456. package/dist/src/voice/tts/sentence-boundary.js +0 -2
  1457. package/dist/src/voice/tts/service.js +0 -2
  1458. package/dist/src/voice/tts/speak-core.js +0 -2
  1459. package/dist/src/voice/tts/speech-registry.js +0 -2
  1460. package/dist/src/voice/tts/status-tracker.js +0 -2
  1461. package/dist/src/voice/tts/summarize.js +0 -2
  1462. package/dist/src/voice/tts/types.js +0 -2
  1463. package/dist/src/work-discovery/analyzer.js +0 -2
  1464. package/dist/src/work-discovery/probe.js +0 -2
  1465. package/dist/src/work-discovery/repository.js +0 -2
  1466. package/dist/src/work-discovery/service.js +0 -2
  1467. package/dist/src/work-items/agent-context.js +0 -2
  1468. package/dist/src/work-items/work-item-service.js +0 -2
  1469. package/dist/src/work-items/work-item-store.js +0 -2
  1470. package/dist/src/work-items/work-item-workflow-judge.js +0 -2
  1471. package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
  1472. package/dist/src/workflows/domain/definition-utils.js +0 -2
  1473. package/dist/src/workflows/domain/run.js +0 -2
  1474. package/dist/src/workflows/domain/schema-validation.js +0 -2
  1475. package/dist/src/workflows/domain/validation.js +0 -2
  1476. package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
  1477. package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
  1478. package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
  1479. package/dist/src/workflows/engine/projector.js +0 -2
  1480. package/dist/src/workflows/engine/workflow-engine.js +0 -2
  1481. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
  1482. package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
  1483. package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
  1484. package/dist/src/workflows/service/workflow-run-service.js +1 -3
  1485. package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
  1486. package/dist/src/workflows/service/workflow-session-key.js +0 -2
  1487. package/dist/src/workflows/store/event-store.js +0 -2
  1488. package/dist/src/workflows/store/paths.js +0 -2
  1489. package/dist/src/workflows/store/run-index-store.js +0 -2
  1490. package/dist/src/workflows/store/run-store.js +0 -2
  1491. package/package.json +43 -12
  1492. package/skills/creative/hatch-pet/SKILL.md +1 -0
  1493. package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
  1494. package/dist/extensions/demo-memory/src/index.js.map +0 -1
  1495. package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
  1496. package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
  1497. package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
  1498. package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
  1499. package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
  1500. package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
  1501. package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
  1502. package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
  1503. package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
  1504. package/dist/extensions/feishu/src/format.js.map +0 -1
  1505. package/dist/extensions/feishu/src/index.js.map +0 -1
  1506. package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
  1507. package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
  1508. package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
  1509. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
  1510. package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
  1511. package/dist/extensions/feishu/src/plugin.js.map +0 -1
  1512. package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
  1513. package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
  1514. package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
  1515. package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
  1516. package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
  1517. package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
  1518. package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
  1519. package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
  1520. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
  1521. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
  1522. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
  1523. package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
  1524. package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
  1525. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
  1526. package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
  1527. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
  1528. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
  1529. package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
  1530. package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
  1531. package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
  1532. package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
  1533. package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
  1534. package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
  1535. package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
  1536. package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
  1537. package/dist/extensions/telegram/src/access-control.js.map +0 -1
  1538. package/dist/extensions/telegram/src/account-manager.js.map +0 -1
  1539. package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
  1540. package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
  1541. package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
  1542. package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
  1543. package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
  1544. package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
  1545. package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
  1546. package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
  1547. package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
  1548. package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
  1549. package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
  1550. package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
  1551. package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
  1552. package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
  1553. package/dist/extensions/telegram/src/api-root.js.map +0 -1
  1554. package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
  1555. package/dist/extensions/telegram/src/approval-store.js.map +0 -1
  1556. package/dist/extensions/telegram/src/caption.js.map +0 -1
  1557. package/dist/extensions/telegram/src/command-handler.js.map +0 -1
  1558. package/dist/extensions/telegram/src/config-schema.js.map +0 -1
  1559. package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
  1560. package/dist/extensions/telegram/src/dedupe.js.map +0 -1
  1561. package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
  1562. package/dist/extensions/telegram/src/doctor.js.map +0 -1
  1563. package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
  1564. package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
  1565. package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
  1566. package/dist/extensions/telegram/src/errors.js.map +0 -1
  1567. package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
  1568. package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
  1569. package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
  1570. package/dist/extensions/telegram/src/format.js.map +0 -1
  1571. package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
  1572. package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
  1573. package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
  1574. package/dist/extensions/telegram/src/index.js.map +0 -1
  1575. package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
  1576. package/dist/extensions/telegram/src/network-errors.js.map +0 -1
  1577. package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
  1578. package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
  1579. package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
  1580. package/dist/extensions/telegram/src/plugin.js.map +0 -1
  1581. package/dist/extensions/telegram/src/polling-session.js.map +0 -1
  1582. package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
  1583. package/dist/extensions/telegram/src/reactions.js.map +0 -1
  1584. package/dist/extensions/telegram/src/reply-params.js.map +0 -1
  1585. package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
  1586. package/dist/extensions/telegram/src/send-options.js.map +0 -1
  1587. package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
  1588. package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
  1589. package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
  1590. package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
  1591. package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
  1592. package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
  1593. package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
  1594. package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
  1595. package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
  1596. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
  1597. package/dist/extensions/weixin/src/api/api.js.map +0 -1
  1598. package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
  1599. package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
  1600. package/dist/extensions/weixin/src/api/types.js.map +0 -1
  1601. package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
  1602. package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
  1603. package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
  1604. package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
  1605. package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
  1606. package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
  1607. package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
  1608. package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
  1609. package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
  1610. package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
  1611. package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
  1612. package/dist/extensions/weixin/src/config-schema.js.map +0 -1
  1613. package/dist/extensions/weixin/src/config-surface.js.map +0 -1
  1614. package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
  1615. package/dist/extensions/weixin/src/index.js.map +0 -1
  1616. package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
  1617. package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
  1618. package/dist/extensions/weixin/src/media/mime.js.map +0 -1
  1619. package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
  1620. package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
  1621. package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
  1622. package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
  1623. package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
  1624. package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
  1625. package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
  1626. package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
  1627. package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
  1628. package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
  1629. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
  1630. package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
  1631. package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
  1632. package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
  1633. package/dist/extensions/weixin/src/plugin.js.map +0 -1
  1634. package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
  1635. package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
  1636. package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
  1637. package/dist/extensions/weixin/src/util/logger.js.map +0 -1
  1638. package/dist/extensions/weixin/src/util/random.js.map +0 -1
  1639. package/dist/extensions/weixin/src/util/redact.js.map +0 -1
  1640. package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
  1641. package/dist/gateway/static/root/assets/agents-DZDOcgz5.js +0 -2
  1642. package/dist/gateway/static/root/assets/appearance-settings-BNasnY9D.js +0 -1
  1643. package/dist/gateway/static/root/assets/apps-page-Cmr-Hvm9.js +0 -1
  1644. package/dist/gateway/static/root/assets/automations-page-TWgUAI8t.js +0 -6
  1645. package/dist/gateway/static/root/assets/browser-settings-page-DBsFItW_.js +0 -8
  1646. package/dist/gateway/static/root/assets/channels-settings-BBkzrBYy.js +0 -1
  1647. package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
  1648. package/dist/gateway/static/root/assets/connectors-page-DLsZCAw7.js +0 -2
  1649. package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
  1650. package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
  1651. package/dist/gateway/static/root/assets/gateway-settings-BrxzyVW2.js +0 -1
  1652. package/dist/gateway/static/root/assets/goal-create-dialog-DRVRLc5Z.js +0 -1
  1653. package/dist/gateway/static/root/assets/goal-detail-page-8F7NElzP.js +0 -4
  1654. package/dist/gateway/static/root/assets/goals-page-BaoLiV8G.js +0 -2
  1655. package/dist/gateway/static/root/assets/index-CH7XN6KY.js +0 -259
  1656. package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
  1657. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BHnh5OoY.js +0 -1
  1658. package/dist/gateway/static/root/assets/local-app-workbench-page-Boe8n4zH.js +0 -2
  1659. package/dist/gateway/static/root/assets/locale-store-BneNAR8R.js +0 -1
  1660. package/dist/gateway/static/root/assets/logs-page-Cb4Uptct.js +0 -7
  1661. package/dist/gateway/static/root/assets/messages-t1yPaVCt.js +0 -5
  1662. package/dist/gateway/static/root/assets/models-hub-panel-CNiUKZUV.js +0 -2
  1663. package/dist/gateway/static/root/assets/notes-workbench-C9__VkD6.js +0 -4
  1664. package/dist/gateway/static/root/assets/project-detail-page-CZhuB5kO.js +0 -1
  1665. package/dist/gateway/static/root/assets/projects-page-BOq4WVdR.js +0 -1
  1666. package/dist/gateway/static/root/assets/remote-access-hub-BxGq0ebQ.js +0 -1
  1667. package/dist/gateway/static/root/assets/sessions-page-B6gSU_Au.js +0 -1
  1668. package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
  1669. package/dist/gateway/static/root/assets/settings-loading-skeleton-vitElc-n.js +0 -1
  1670. package/dist/gateway/static/root/assets/setup-status-panel-BJeA4mmk.js +0 -1
  1671. package/dist/gateway/static/root/assets/shares-settings-DB2KYA2_.js +0 -1
  1672. package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
  1673. package/dist/gateway/static/root/assets/skills-page-Pm0fNe_p.js +0 -2
  1674. package/dist/gateway/static/root/assets/user-context-page-DnLqQyRG.js +0 -1
  1675. package/dist/gateway/static/root/assets/voice-api-key-field-BiFIIWC4.js +0 -1
  1676. package/dist/gateway/static/root/assets/work-discovery-page-D2-_bC0J.js +0 -1
  1677. package/dist/gateway/static/root/assets/work-item-detail-page-B0FPG4eJ.js +0 -1
  1678. package/dist/gateway/static/root/assets/work-page-BDeVxts_.js +0 -1
  1679. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BPzS67fU.js +0 -3
  1680. package/dist/gateway/static/root/assets/workflows-page-xPhmrRLs.js +0 -11
  1681. package/dist/gateway/static/root/favicon-icon.svg +0 -187
  1682. package/dist/package.js.map +0 -1
  1683. package/dist/src/activity/context.js.map +0 -1
  1684. package/dist/src/activity/emitter.js.map +0 -1
  1685. package/dist/src/activity/service.js.map +0 -1
  1686. package/dist/src/agent/agent-manager.js.map +0 -1
  1687. package/dist/src/agent/agent-scope.js.map +0 -1
  1688. package/dist/src/agent/background-review/coordinator.js.map +0 -1
  1689. package/dist/src/agent/background-review/prompts.js.map +0 -1
  1690. package/dist/src/agent/background-review/run-background-review.js.map +0 -1
  1691. package/dist/src/agent/background-review/settings.js.map +0 -1
  1692. package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
  1693. package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
  1694. package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
  1695. package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
  1696. package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
  1697. package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
  1698. package/dist/src/agent/capabilities/definitions.js.map +0 -1
  1699. package/dist/src/agent/capabilities/registry.js.map +0 -1
  1700. package/dist/src/agent/child-agent-factory.js.map +0 -1
  1701. package/dist/src/agent/client-error-format.js.map +0 -1
  1702. package/dist/src/agent/code-intelligence/binary.js.map +0 -1
  1703. package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
  1704. package/dist/src/agent/code-intelligence/tools.js.map +0 -1
  1705. package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
  1706. package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
  1707. package/dist/src/agent/context/project-context.js.map +0 -1
  1708. package/dist/src/agent/context/workspace-seed.js.map +0 -1
  1709. package/dist/src/agent/context/workspace-state.js.map +0 -1
  1710. package/dist/src/agent/context/workspace.js.map +0 -1
  1711. package/dist/src/agent/embedded/run-for-session.js.map +0 -1
  1712. package/dist/src/agent/embedded/run-turn.js.map +0 -1
  1713. package/dist/src/agent/embedded/runs.js.map +0 -1
  1714. package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
  1715. package/dist/src/agent/embedded/session-runner.js.map +0 -1
  1716. package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
  1717. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
  1718. package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
  1719. package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
  1720. package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
  1721. package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
  1722. package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
  1723. package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
  1724. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
  1725. package/dist/src/agent/failover-error.js.map +0 -1
  1726. package/dist/src/agent/fallback/candidates.js.map +0 -1
  1727. package/dist/src/agent/fallback/reason.js.map +0 -1
  1728. package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
  1729. package/dist/src/agent/goals/checklist-judge.js.map +0 -1
  1730. package/dist/src/agent/goals/checklist-types.js.map +0 -1
  1731. package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
  1732. package/dist/src/agent/goals/goal-locale.js.map +0 -1
  1733. package/dist/src/agent/goals/judge.js.map +0 -1
  1734. package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
  1735. package/dist/src/agent/goals/post-turn.js.map +0 -1
  1736. package/dist/src/agent/goals/state.js.map +0 -1
  1737. package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
  1738. package/dist/src/agent/image/generation/bundled.js.map +0 -1
  1739. package/dist/src/agent/image/generation/image-assets.js.map +0 -1
  1740. package/dist/src/agent/image/generation/model-ref.js.map +0 -1
  1741. package/dist/src/agent/image/generation/normalization.js.map +0 -1
  1742. package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
  1743. package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
  1744. package/dist/src/agent/image/generation/runtime.js.map +0 -1
  1745. package/dist/src/agent/image/image-helpers.js.map +0 -1
  1746. package/dist/src/agent/image/image-model-fallback.js.map +0 -1
  1747. package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
  1748. package/dist/src/agent/image/load-image-media.js.map +0 -1
  1749. package/dist/src/agent/image/tool-model-config.js.map +0 -1
  1750. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
  1751. package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
  1752. package/dist/src/agent/image/understanding/runtime.js.map +0 -1
  1753. package/dist/src/agent/image/vision-detection.js.map +0 -1
  1754. package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
  1755. package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
  1756. package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
  1757. package/dist/src/agent/ipc/bus.js.map +0 -1
  1758. package/dist/src/agent/ipc/inbox.js.map +0 -1
  1759. package/dist/src/agent/ipc/socket.js.map +0 -1
  1760. package/dist/src/agent/ipc/types.js.map +0 -1
  1761. package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
  1762. package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
  1763. package/dist/src/agent/lifecycle/manager.js.map +0 -1
  1764. package/dist/src/agent/lifecycle/progress.js.map +0 -1
  1765. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
  1766. package/dist/src/agent/lifecycle/typing.js.map +0 -1
  1767. package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
  1768. package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
  1769. package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
  1770. package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
  1771. package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
  1772. package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
  1773. package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
  1774. package/dist/src/agent/mcp/mcp-http.js.map +0 -1
  1775. package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
  1776. package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
  1777. package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
  1778. package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
  1779. package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
  1780. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
  1781. package/dist/src/agent/media-generation/model-ref.js.map +0 -1
  1782. package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
  1783. package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
  1784. package/dist/src/agent/memory/agent-message-access.js.map +0 -1
  1785. package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
  1786. package/dist/src/agent/memory/builtin-provider.js.map +0 -1
  1787. package/dist/src/agent/memory/compaction.js.map +0 -1
  1788. package/dist/src/agent/memory/context/planner.js.map +0 -1
  1789. package/dist/src/agent/memory/context-fence.js.map +0 -1
  1790. package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
  1791. package/dist/src/agent/memory/dreaming/config.js.map +0 -1
  1792. package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
  1793. package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
  1794. package/dist/src/agent/memory/dreaming/events.js.map +0 -1
  1795. package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
  1796. package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
  1797. package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
  1798. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
  1799. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
  1800. package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
  1801. package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
  1802. package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
  1803. package/dist/src/agent/memory/lifecycle.js.map +0 -1
  1804. package/dist/src/agent/memory/manager.js.map +0 -1
  1805. package/dist/src/agent/memory/memory-config.js.map +0 -1
  1806. package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
  1807. package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
  1808. package/dist/src/agent/memory/sensitivity.js.map +0 -1
  1809. package/dist/src/agent/memory/source-origin.js.map +0 -1
  1810. package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
  1811. package/dist/src/agent/memory/summary-generator.js.map +0 -1
  1812. package/dist/src/agent/memory/understanding/correction.js.map +0 -1
  1813. package/dist/src/agent/memory/understanding/quality.js.map +0 -1
  1814. package/dist/src/agent/memory/understanding/service.js.map +0 -1
  1815. package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
  1816. package/dist/src/agent/memory/user-message-text.js.map +0 -1
  1817. package/dist/src/agent/memory/window.js.map +0 -1
  1818. package/dist/src/agent/messaging/command-handler.js.map +0 -1
  1819. package/dist/src/agent/messaging/message-router.js.map +0 -1
  1820. package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
  1821. package/dist/src/agent/messaging/stream-manager.js.map +0 -1
  1822. package/dist/src/agent/middleware/context.js.map +0 -1
  1823. package/dist/src/agent/middleware/self-verify.js.map +0 -1
  1824. package/dist/src/agent/models/manager.js.map +0 -1
  1825. package/dist/src/agent/models/request-limiter.js.map +0 -1
  1826. package/dist/src/agent/models/selection.js.map +0 -1
  1827. package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
  1828. package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
  1829. package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
  1830. package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
  1831. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
  1832. package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
  1833. package/dist/src/agent/prompt/memory/index.js.map +0 -1
  1834. package/dist/src/agent/prompt/safety.js.map +0 -1
  1835. package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
  1836. package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
  1837. package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
  1838. package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
  1839. package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
  1840. package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
  1841. package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
  1842. package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
  1843. package/dist/src/agent/prompt/subagent-context.js.map +0 -1
  1844. package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
  1845. package/dist/src/agent/prompt/system-prompt.js.map +0 -1
  1846. package/dist/src/agent/prompt/system-reminder.js.map +0 -1
  1847. package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
  1848. package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
  1849. package/dist/src/agent/reply/startup-context.js.map +0 -1
  1850. package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
  1851. package/dist/src/agent/sandbox/command-validator.js.map +0 -1
  1852. package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
  1853. package/dist/src/agent/sandbox/path-policy.js.map +0 -1
  1854. package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
  1855. package/dist/src/agent/sandbox/types.js.map +0 -1
  1856. package/dist/src/agent/service/async-queue.js.map +0 -1
  1857. package/dist/src/agent/service/btw-query.js.map +0 -1
  1858. package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
  1859. package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
  1860. package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
  1861. package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
  1862. package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
  1863. package/dist/src/agent/service/session-context-report.js.map +0 -1
  1864. package/dist/src/agent/service/webchat-tts.js.map +0 -1
  1865. package/dist/src/agent/service-inbound-utils.js.map +0 -1
  1866. package/dist/src/agent/service.js.map +0 -1
  1867. package/dist/src/agent/session/session-config-service.js.map +0 -1
  1868. package/dist/src/agent/session/session-context.js.map +0 -1
  1869. package/dist/src/agent/session/session-hydrator.js.map +0 -1
  1870. package/dist/src/agent/session/session-inspector.js.map +0 -1
  1871. package/dist/src/agent/session/session-lifecycle.js.map +0 -1
  1872. package/dist/src/agent/session/session-state-bag.js.map +0 -1
  1873. package/dist/src/agent/session/tracker.js.map +0 -1
  1874. package/dist/src/agent/skills/config.js.map +0 -1
  1875. package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
  1876. package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
  1877. package/dist/src/agent/skills/hub-hash.js.map +0 -1
  1878. package/dist/src/agent/skills/hub-lock.js.map +0 -1
  1879. package/dist/src/agent/skills/hub-pull.js.map +0 -1
  1880. package/dist/src/agent/skills/index.js.map +0 -1
  1881. package/dist/src/agent/skills/install-target.js.map +0 -1
  1882. package/dist/src/agent/skills/installer.js.map +0 -1
  1883. package/dist/src/agent/skills/managed-store.js.map +0 -1
  1884. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
  1885. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
  1886. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
  1887. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
  1888. package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
  1889. package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
  1890. package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
  1891. package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
  1892. package/dist/src/agent/skills/required-env-vars.js.map +0 -1
  1893. package/dist/src/agent/skills/scanner.js.map +0 -1
  1894. package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
  1895. package/dist/src/agent/skills/skill-manager.js.map +0 -1
  1896. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
  1897. package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
  1898. package/dist/src/agent/skills/skill-view-path.js.map +0 -1
  1899. package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
  1900. package/dist/src/agent/skills/test-framework.js.map +0 -1
  1901. package/dist/src/agent/skills/watcher.js.map +0 -1
  1902. package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
  1903. package/dist/src/agent/source-context/injector.js.map +0 -1
  1904. package/dist/src/agent/source-context/types.js.map +0 -1
  1905. package/dist/src/agent/starter-agents.js.map +0 -1
  1906. package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
  1907. package/dist/src/agent/tool-manuals/browser.js.map +0 -1
  1908. package/dist/src/agent/tool-manuals/index.js.map +0 -1
  1909. package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
  1910. package/dist/src/agent/tools/apply-patch.js.map +0 -1
  1911. package/dist/src/agent/tools/automation-tool.js.map +0 -1
  1912. package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
  1913. package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
  1914. package/dist/src/agent/tools/chain-tracker.js.map +0 -1
  1915. package/dist/src/agent/tools/clarify-tool.js.map +0 -1
  1916. package/dist/src/agent/tools/cli-clarify.js.map +0 -1
  1917. package/dist/src/agent/tools/communication.js.map +0 -1
  1918. package/dist/src/agent/tools/composio-tool.js.map +0 -1
  1919. package/dist/src/agent/tools/concurrency.js.map +0 -1
  1920. package/dist/src/agent/tools/create-share-tool.js.map +0 -1
  1921. package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
  1922. package/dist/src/agent/tools/delegate-tool.js.map +0 -1
  1923. package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
  1924. package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
  1925. package/dist/src/agent/tools/edit-diff.js.map +0 -1
  1926. package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
  1927. package/dist/src/agent/tools/error-tracker.js.map +0 -1
  1928. package/dist/src/agent/tools/exec-command.js.map +0 -1
  1929. package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
  1930. package/dist/src/agent/tools/executor.js.map +0 -1
  1931. package/dist/src/agent/tools/factory.js.map +0 -1
  1932. package/dist/src/agent/tools/find.js.map +0 -1
  1933. package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
  1934. package/dist/src/agent/tools/goal-tool.js.map +0 -1
  1935. package/dist/src/agent/tools/grep.js.map +0 -1
  1936. package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
  1937. package/dist/src/agent/tools/image-tool.js.map +0 -1
  1938. package/dist/src/agent/tools/list-dir.js.map +0 -1
  1939. package/dist/src/agent/tools/media-read-tool.js.map +0 -1
  1940. package/dist/src/agent/tools/memory-tool.js.map +0 -1
  1941. package/dist/src/agent/tools/metadata.js.map +0 -1
  1942. package/dist/src/agent/tools/read.js.map +0 -1
  1943. package/dist/src/agent/tools/search/http.js.map +0 -1
  1944. package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
  1945. package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
  1946. package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
  1947. package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
  1948. package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
  1949. package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
  1950. package/dist/src/agent/tools/search/region.js.map +0 -1
  1951. package/dist/src/agent/tools/search/registry.js.map +0 -1
  1952. package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
  1953. package/dist/src/agent/tools/send-media.js.map +0 -1
  1954. package/dist/src/agent/tools/session-search-tool.js.map +0 -1
  1955. package/dist/src/agent/tools/session-status-tool.js.map +0 -1
  1956. package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
  1957. package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
  1958. package/dist/src/agent/tools/skills-tools.js.map +0 -1
  1959. package/dist/src/agent/tools/structured-output.js.map +0 -1
  1960. package/dist/src/agent/tools/todo-tool.js.map +0 -1
  1961. package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
  1962. package/dist/src/agent/tools/tool-paths.js.map +0 -1
  1963. package/dist/src/agent/tools/truncate.js.map +0 -1
  1964. package/dist/src/agent/tools/tts-tool.js.map +0 -1
  1965. package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
  1966. package/dist/src/agent/tools/url-safety.js.map +0 -1
  1967. package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
  1968. package/dist/src/agent/tools/web-extract.js.map +0 -1
  1969. package/dist/src/agent/tools/web.js.map +0 -1
  1970. package/dist/src/agent/tools/workflow-tool.js.map +0 -1
  1971. package/dist/src/agent/tools/write.js.map +0 -1
  1972. package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
  1973. package/dist/src/agent/transcript/google-api.js.map +0 -1
  1974. package/dist/src/agent/transcript/model-selection.js.map +0 -1
  1975. package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
  1976. package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
  1977. package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
  1978. package/dist/src/agent/transcript/thinking-types.js.map +0 -1
  1979. package/dist/src/agent/transcript/thinking.js.map +0 -1
  1980. package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
  1981. package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
  1982. package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
  1983. package/dist/src/agent/workflow/agent-progress.js.map +0 -1
  1984. package/dist/src/agent/workflow/builtins/index.js.map +0 -1
  1985. package/dist/src/agent/workflow/catalog.js.map +0 -1
  1986. package/dist/src/agent/workflow/progress-broker.js.map +0 -1
  1987. package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
  1988. package/dist/src/agent/workflow/snapshot.js.map +0 -1
  1989. package/dist/src/agent/workflow/step-labels.js.map +0 -1
  1990. package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
  1991. package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
  1992. package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
  1993. package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
  1994. package/dist/src/agent-manifest/index.js.map +0 -1
  1995. package/dist/src/agent-manifest/preset-chain.js.map +0 -1
  1996. package/dist/src/agent-manifest/prompt.js.map +0 -1
  1997. package/dist/src/agent-manifest/resolver.js.map +0 -1
  1998. package/dist/src/agent-manifest/schema.js.map +0 -1
  1999. package/dist/src/agent-manifest/validator.js.map +0 -1
  2000. package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
  2001. package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
  2002. package/dist/src/agent-runtime/model-router.js.map +0 -1
  2003. package/dist/src/agent-runtime/run-trace.js.map +0 -1
  2004. package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
  2005. package/dist/src/agent-runtime/tool-registry.js.map +0 -1
  2006. package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
  2007. package/dist/src/ai-assist/text-assist.js.map +0 -1
  2008. package/dist/src/auth/credentials.js.map +0 -1
  2009. package/dist/src/auth/index.js.map +0 -1
  2010. package/dist/src/auth/oauth/anthropic.js.map +0 -1
  2011. package/dist/src/auth/oauth/github-copilot.js.map +0 -1
  2012. package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
  2013. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
  2014. package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
  2015. package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
  2016. package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
  2017. package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
  2018. package/dist/src/auth/oauth/minimax.js.map +0 -1
  2019. package/dist/src/auth/oauth/openai-codex.js.map +0 -1
  2020. package/dist/src/auth/oauth/pkce.js.map +0 -1
  2021. package/dist/src/auth/profiles/oauth.js.map +0 -1
  2022. package/dist/src/auth/profiles/order.js.map +0 -1
  2023. package/dist/src/auth/profiles/profiles.js.map +0 -1
  2024. package/dist/src/auth/profiles/store.js.map +0 -1
  2025. package/dist/src/auth/sync-provider-auth.js.map +0 -1
  2026. package/dist/src/automations/api/routes.js.map +0 -1
  2027. package/dist/src/automations/domain/schedule.js.map +0 -1
  2028. package/dist/src/automations/domain/validation.js.map +0 -1
  2029. package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
  2030. package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
  2031. package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
  2032. package/dist/src/automations/product-events.js.map +0 -1
  2033. package/dist/src/automations/service/action-executor.js.map +0 -1
  2034. package/dist/src/automations/service/automation-service.js.map +0 -1
  2035. package/dist/src/automations/storage/automation-repository.js.map +0 -1
  2036. package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
  2037. package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
  2038. package/dist/src/browser/actions/registry.js.map +0 -1
  2039. package/dist/src/browser/backend-from-config.js.map +0 -1
  2040. package/dist/src/browser/browser-command-timeout.js.map +0 -1
  2041. package/dist/src/browser/cache-dir-policy.js.map +0 -1
  2042. package/dist/src/browser/cdp-local-launcher.js.map +0 -1
  2043. package/dist/src/browser/cdp-supervisor.js.map +0 -1
  2044. package/dist/src/browser/free-port.js.map +0 -1
  2045. package/dist/src/browser/humanize.js.map +0 -1
  2046. package/dist/src/browser/install-lock.js.map +0 -1
  2047. package/dist/src/browser/manager.js.map +0 -1
  2048. package/dist/src/browser/pipeline/output.js.map +0 -1
  2049. package/dist/src/browser/pipeline/runner.js.map +0 -1
  2050. package/dist/src/browser/pipeline/schema.js.map +0 -1
  2051. package/dist/src/browser/pipeline/source.js.map +0 -1
  2052. package/dist/src/browser/pipeline/template.js.map +0 -1
  2053. package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
  2054. package/dist/src/browser/providers/browser-use.js.map +0 -1
  2055. package/dist/src/browser/providers/browserbase.js.map +0 -1
  2056. package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
  2057. package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
  2058. package/dist/src/browser/providers/extension.js.map +0 -1
  2059. package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
  2060. package/dist/src/browser/providers/playwright-install.js.map +0 -1
  2061. package/dist/src/browser/readiness.js.map +0 -1
  2062. package/dist/src/browser/schemas.js.map +0 -1
  2063. package/dist/src/browser/session-lifecycle.js.map +0 -1
  2064. package/dist/src/browser/snapshot-helpers.js.map +0 -1
  2065. package/dist/src/browser/stealth.js.map +0 -1
  2066. package/dist/src/browser/url-policy.js.map +0 -1
  2067. package/dist/src/capabilities/store-connector.js.map +0 -1
  2068. package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
  2069. package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
  2070. package/dist/src/channels/attachments/inbound-types.js.map +0 -1
  2071. package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
  2072. package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
  2073. package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
  2074. package/dist/src/channels/config-helpers.js.map +0 -1
  2075. package/dist/src/channels/envelope-timestamp.js.map +0 -1
  2076. package/dist/src/channels/exec-approval-runtime.js.map +0 -1
  2077. package/dist/src/channels/health-monitor.js.map +0 -1
  2078. package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
  2079. package/dist/src/channels/internal-outbound.js.map +0 -1
  2080. package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
  2081. package/dist/src/channels/manager.js.map +0 -1
  2082. package/dist/src/channels/media.js.map +0 -1
  2083. package/dist/src/channels/outbound/deliver.js.map +0 -1
  2084. package/dist/src/channels/outbound/normalize.js.map +0 -1
  2085. package/dist/src/channels/outbound/persist-store.js.map +0 -1
  2086. package/dist/src/channels/outbound/queue.js.map +0 -1
  2087. package/dist/src/channels/outbound-sender.js.map +0 -1
  2088. package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
  2089. package/dist/src/channels/pairing/approve-cli.js.map +0 -1
  2090. package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
  2091. package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
  2092. package/dist/src/channels/pairing/pairing-events.js.map +0 -1
  2093. package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
  2094. package/dist/src/channels/pairing/pairing-service.js.map +0 -1
  2095. package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
  2096. package/dist/src/channels/pairing/pairing-store.js.map +0 -1
  2097. package/dist/src/channels/pairing/paths.js.map +0 -1
  2098. package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
  2099. package/dist/src/channels/pipeline.js.map +0 -1
  2100. package/dist/src/channels/plugin-registry.js.map +0 -1
  2101. package/dist/src/channels/plugins/registry.js.map +0 -1
  2102. package/dist/src/channels/restart-policy.js.map +0 -1
  2103. package/dist/src/channels/security-helpers.js.map +0 -1
  2104. package/dist/src/channels/security.js.map +0 -1
  2105. package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
  2106. package/dist/src/chat-commands/agent-edit.js.map +0 -1
  2107. package/dist/src/chat-commands/builtins/config.js.map +0 -1
  2108. package/dist/src/chat-commands/builtins/context.js.map +0 -1
  2109. package/dist/src/chat-commands/builtins/goal.js.map +0 -1
  2110. package/dist/src/chat-commands/builtins/model.js.map +0 -1
  2111. package/dist/src/chat-commands/builtins/review.js.map +0 -1
  2112. package/dist/src/chat-commands/builtins/session.js.map +0 -1
  2113. package/dist/src/chat-commands/builtins/skill.js.map +0 -1
  2114. package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
  2115. package/dist/src/chat-commands/builtins/system.js.map +0 -1
  2116. package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
  2117. package/dist/src/chat-commands/builtins/tts.js.map +0 -1
  2118. package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
  2119. package/dist/src/chat-commands/command-parse.js.map +0 -1
  2120. package/dist/src/chat-commands/config-paths.js.map +0 -1
  2121. package/dist/src/chat-commands/config-value.js.map +0 -1
  2122. package/dist/src/chat-commands/context.js.map +0 -1
  2123. package/dist/src/chat-commands/format-output.js.map +0 -1
  2124. package/dist/src/chat-commands/index.js.map +0 -1
  2125. package/dist/src/chat-commands/processor.js.map +0 -1
  2126. package/dist/src/chat-commands/registry.js.map +0 -1
  2127. package/dist/src/chat-commands/session-key.js.map +0 -1
  2128. package/dist/src/cli/argv-invocation.js.map +0 -1
  2129. package/dist/src/cli/argv.js.map +0 -1
  2130. package/dist/src/cli/bin.js.map +0 -1
  2131. package/dist/src/cli/cli-log-level-preset.js.map +0 -1
  2132. package/dist/src/cli/command-catalog.js.map +0 -1
  2133. package/dist/src/cli/command-loaders.js.map +0 -1
  2134. package/dist/src/cli/command-manifest.js.map +0 -1
  2135. package/dist/src/cli/command-path-matches.js.map +0 -1
  2136. package/dist/src/cli/command-path-policy.js.map +0 -1
  2137. package/dist/src/cli/command-startup-policy.js.map +0 -1
  2138. package/dist/src/cli/commands/agent/interactive.js.map +0 -1
  2139. package/dist/src/cli/commands/agent/sessions.js.map +0 -1
  2140. package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
  2141. package/dist/src/cli/commands/agent.js.map +0 -1
  2142. package/dist/src/cli/commands/agents.js.map +0 -1
  2143. package/dist/src/cli/commands/auth.js.map +0 -1
  2144. package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
  2145. package/dist/src/cli/commands/browser.js.map +0 -1
  2146. package/dist/src/cli/commands/channels.js.map +0 -1
  2147. package/dist/src/cli/commands/config.js.map +0 -1
  2148. package/dist/src/cli/commands/connectors.js.map +0 -1
  2149. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
  2150. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
  2151. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
  2152. package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
  2153. package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
  2154. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
  2155. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
  2156. package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
  2157. package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
  2158. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
  2159. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
  2160. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
  2161. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
  2162. package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
  2163. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
  2164. package/dist/src/cli/commands/doctor/flow.js.map +0 -1
  2165. package/dist/src/cli/commands/doctor/format.js.map +0 -1
  2166. package/dist/src/cli/commands/doctor/index.js.map +0 -1
  2167. package/dist/src/cli/commands/extension-create.js.map +0 -1
  2168. package/dist/src/cli/commands/extension-dev.js.map +0 -1
  2169. package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
  2170. package/dist/src/cli/commands/extension-pack.js.map +0 -1
  2171. package/dist/src/cli/commands/extension.js.map +0 -1
  2172. package/dist/src/cli/commands/gateway/call.js.map +0 -1
  2173. package/dist/src/cli/commands/gateway/health.js.map +0 -1
  2174. package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
  2175. package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
  2176. package/dist/src/cli/commands/gateway/logs.js.map +0 -1
  2177. package/dist/src/cli/commands/gateway/probe.js.map +0 -1
  2178. package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
  2179. package/dist/src/cli/commands/gateway/restart.js.map +0 -1
  2180. package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
  2181. package/dist/src/cli/commands/gateway/service.js.map +0 -1
  2182. package/dist/src/cli/commands/gateway/shared.js.map +0 -1
  2183. package/dist/src/cli/commands/gateway/status.js.map +0 -1
  2184. package/dist/src/cli/commands/gateway/stop.js.map +0 -1
  2185. package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
  2186. package/dist/src/cli/commands/gateway/token.js.map +0 -1
  2187. package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
  2188. package/dist/src/cli/commands/gateway.js.map +0 -1
  2189. package/dist/src/cli/commands/goal.js.map +0 -1
  2190. package/dist/src/cli/commands/image.js.map +0 -1
  2191. package/dist/src/cli/commands/init.js.map +0 -1
  2192. package/dist/src/cli/commands/logs.js.map +0 -1
  2193. package/dist/src/cli/commands/models.js.map +0 -1
  2194. package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
  2195. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
  2196. package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
  2197. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
  2198. package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
  2199. package/dist/src/cli/commands/onboard/model.js.map +0 -1
  2200. package/dist/src/cli/commands/onboard.js.map +0 -1
  2201. package/dist/src/cli/commands/profile.js.map +0 -1
  2202. package/dist/src/cli/commands/project.js.map +0 -1
  2203. package/dist/src/cli/commands/providers.js.map +0 -1
  2204. package/dist/src/cli/commands/resume.js.map +0 -1
  2205. package/dist/src/cli/commands/search.js.map +0 -1
  2206. package/dist/src/cli/commands/session/actions.js.map +0 -1
  2207. package/dist/src/cli/commands/session/utils.js.map +0 -1
  2208. package/dist/src/cli/commands/session.js.map +0 -1
  2209. package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
  2210. package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
  2211. package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
  2212. package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
  2213. package/dist/src/cli/commands/setup.js.map +0 -1
  2214. package/dist/src/cli/commands/skills-test.js.map +0 -1
  2215. package/dist/src/cli/commands/skills.js.map +0 -1
  2216. package/dist/src/cli/commands/tailscale.js.map +0 -1
  2217. package/dist/src/cli/commands/tui-runner.js.map +0 -1
  2218. package/dist/src/cli/commands/tui.js.map +0 -1
  2219. package/dist/src/cli/commands/tunnel.js.map +0 -1
  2220. package/dist/src/cli/commands/update.js.map +0 -1
  2221. package/dist/src/cli/commands/voice.js.map +0 -1
  2222. package/dist/src/cli/context.js.map +0 -1
  2223. package/dist/src/cli/extension-cli-register.js.map +0 -1
  2224. package/dist/src/cli/gateway-run-argv.js.map +0 -1
  2225. package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
  2226. package/dist/src/cli/index.js.map +0 -1
  2227. package/dist/src/cli/registry.js.map +0 -1
  2228. package/dist/src/cli/templates.js.map +0 -1
  2229. package/dist/src/cli/utils/colors.js.map +0 -1
  2230. package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
  2231. package/dist/src/cli/utils/gateway-client.js.map +0 -1
  2232. package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
  2233. package/dist/src/cli/utils/init-workspace.js.map +0 -1
  2234. package/dist/src/cli/utils/oauth-login.js.map +0 -1
  2235. package/dist/src/cli/utils/oauth-providers.js.map +0 -1
  2236. package/dist/src/cli/utils/session.js.map +0 -1
  2237. package/dist/src/commands/agents.config.js.map +0 -1
  2238. package/dist/src/config/agent-profile.js.map +0 -1
  2239. package/dist/src/config/agent-typed-models.js.map +0 -1
  2240. package/dist/src/config/commands.flags.js.map +0 -1
  2241. package/dist/src/config/default-model.js.map +0 -1
  2242. package/dist/src/config/diff.js.map +0 -1
  2243. package/dist/src/config/gateway-bind.js.map +0 -1
  2244. package/dist/src/config/index.js.map +0 -1
  2245. package/dist/src/config/loader.js.map +0 -1
  2246. package/dist/src/config/mcp-config-normalize.js.map +0 -1
  2247. package/dist/src/config/model-input.js.map +0 -1
  2248. package/dist/src/config/models-json.js.map +0 -1
  2249. package/dist/src/config/paths-state.js.map +0 -1
  2250. package/dist/src/config/paths.js.map +0 -1
  2251. package/dist/src/config/profile.js.map +0 -1
  2252. package/dist/src/config/public-url.js.map +0 -1
  2253. package/dist/src/config/reload.js.map +0 -1
  2254. package/dist/src/config/resolve-config-value.js.map +0 -1
  2255. package/dist/src/config/rules.js.map +0 -1
  2256. package/dist/src/config/runtime-overrides.js.map +0 -1
  2257. package/dist/src/config/schema.js.map +0 -1
  2258. package/dist/src/config/validate-channel-configs.js.map +0 -1
  2259. package/dist/src/config/voice.js.map +0 -1
  2260. package/dist/src/config/web-patch.js.map +0 -1
  2261. package/dist/src/config/workspace-defaults.js.map +0 -1
  2262. package/dist/src/config/workspace-dirs.js.map +0 -1
  2263. package/dist/src/config/workspace-path-helpers.js.map +0 -1
  2264. package/dist/src/config/workspace-path.js.map +0 -1
  2265. package/dist/src/connectors/approval.js.map +0 -1
  2266. package/dist/src/connectors/auth-provider-registry.js.map +0 -1
  2267. package/dist/src/connectors/builtin-catalog.js.map +0 -1
  2268. package/dist/src/connectors/catalog.js.map +0 -1
  2269. package/dist/src/connectors/composio-catalog.js.map +0 -1
  2270. package/dist/src/connectors/composio-logo.js.map +0 -1
  2271. package/dist/src/connectors/composio-sessions.js.map +0 -1
  2272. package/dist/src/connectors/composio-triggers.js.map +0 -1
  2273. package/dist/src/connectors/composio.js.map +0 -1
  2274. package/dist/src/connectors/connector-memory-sync.js.map +0 -1
  2275. package/dist/src/connectors/health.js.map +0 -1
  2276. package/dist/src/connectors/install.js.map +0 -1
  2277. package/dist/src/connectors/instances.js.map +0 -1
  2278. package/dist/src/connectors/integration-strategy.js.map +0 -1
  2279. package/dist/src/connectors/lifecycle.js.map +0 -1
  2280. package/dist/src/connectors/materialize.js.map +0 -1
  2281. package/dist/src/connectors/policy.js.map +0 -1
  2282. package/dist/src/connectors/providers.js.map +0 -1
  2283. package/dist/src/connectors/registries/modelscope.js.map +0 -1
  2284. package/dist/src/connectors/registries/official-mcp.js.map +0 -1
  2285. package/dist/src/connectors/registries/search.js.map +0 -1
  2286. package/dist/src/connectors/registries/smithery.js.map +0 -1
  2287. package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
  2288. package/dist/src/connectors/secret-store.js.map +0 -1
  2289. package/dist/src/connectors/setup-secrets.js.map +0 -1
  2290. package/dist/src/connectors/supervisor.js.map +0 -1
  2291. package/dist/src/connectors/usage.js.map +0 -1
  2292. package/dist/src/connectors/workflow-preflight.js.map +0 -1
  2293. package/dist/src/daemon/constants.js.map +0 -1
  2294. package/dist/src/daemon/install-plan.js.map +0 -1
  2295. package/dist/src/daemon/launchd.js.map +0 -1
  2296. package/dist/src/daemon/schtasks.js.map +0 -1
  2297. package/dist/src/daemon/service-audit.js.map +0 -1
  2298. package/dist/src/daemon/service.js.map +0 -1
  2299. package/dist/src/daemon/systemd.js.map +0 -1
  2300. package/dist/src/document-understanding/extract.js.map +0 -1
  2301. package/dist/src/errors/index.js.map +0 -1
  2302. package/dist/src/extensions/activation-context.js.map +0 -1
  2303. package/dist/src/extensions/activation-planner.js.map +0 -1
  2304. package/dist/src/extensions/api.js.map +0 -1
  2305. package/dist/src/extensions/bundle-mcp.js.map +0 -1
  2306. package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
  2307. package/dist/src/extensions/diagnostics.js.map +0 -1
  2308. package/dist/src/extensions/discover-extensions.js.map +0 -1
  2309. package/dist/src/extensions/engine-check.js.map +0 -1
  2310. package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
  2311. package/dist/src/extensions/extension-registry-impl.js.map +0 -1
  2312. package/dist/src/extensions/health.js.map +0 -1
  2313. package/dist/src/extensions/hooks.js.map +0 -1
  2314. package/dist/src/extensions/index.js.map +0 -1
  2315. package/dist/src/extensions/install-transaction.js.map +0 -1
  2316. package/dist/src/extensions/install.js.map +0 -1
  2317. package/dist/src/extensions/loader.js.map +0 -1
  2318. package/dist/src/extensions/lockfile.js.map +0 -1
  2319. package/dist/src/extensions/manifest-registry.js.map +0 -1
  2320. package/dist/src/extensions/marketplace.js.map +0 -1
  2321. package/dist/src/extensions/media-provider-contracts.js.map +0 -1
  2322. package/dist/src/extensions/normalize-manifest.js.map +0 -1
  2323. package/dist/src/extensions/onboard-helpers.js.map +0 -1
  2324. package/dist/src/extensions/package-contract.js.map +0 -1
  2325. package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
  2326. package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
  2327. package/dist/src/extensions/sdk/index.js.map +0 -1
  2328. package/dist/src/extensions/sdk/lazy.js.map +0 -1
  2329. package/dist/src/extensions/sdk/testing.js.map +0 -1
  2330. package/dist/src/extensions/security.js.map +0 -1
  2331. package/dist/src/extensions/slots.js.map +0 -1
  2332. package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
  2333. package/dist/src/extensions/store-zip-limits.js.map +0 -1
  2334. package/dist/src/extensions/typed-event-bus.js.map +0 -1
  2335. package/dist/src/extensions/types/hooks.js.map +0 -1
  2336. package/dist/src/extensions/types/providers.js.map +0 -1
  2337. package/dist/src/extensions/update.js.map +0 -1
  2338. package/dist/src/extensions/when-context.js.map +0 -1
  2339. package/dist/src/extensions/when-expression.js.map +0 -1
  2340. package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
  2341. package/dist/src/gateway/agent-run-relay.js.map +0 -1
  2342. package/dist/src/gateway/agents-admin.js.map +0 -1
  2343. package/dist/src/gateway/auth.js.map +0 -1
  2344. package/dist/src/gateway/capability-presets-admin.js.map +0 -1
  2345. package/dist/src/gateway/chat-limits.js.map +0 -1
  2346. package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
  2347. package/dist/src/gateway/clarify-bridge.js.map +0 -1
  2348. package/dist/src/gateway/clarify-runtime.js.map +0 -1
  2349. package/dist/src/gateway/client-ip.js.map +0 -1
  2350. package/dist/src/gateway/config-tools-web.js.map +0 -1
  2351. package/dist/src/gateway/credential.js.map +0 -1
  2352. package/dist/src/gateway/discovery/mdns.js.map +0 -1
  2353. package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
  2354. package/dist/src/gateway/ensure-network-cors.js.map +0 -1
  2355. package/dist/src/gateway/file-path-classifier.js.map +0 -1
  2356. package/dist/src/gateway/file-reference-registry.js.map +0 -1
  2357. package/dist/src/gateway/global-defaults-admin.js.map +0 -1
  2358. package/dist/src/gateway/heartbeat/service.js.map +0 -1
  2359. package/dist/src/gateway/hono/app.js.map +0 -1
  2360. package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
  2361. package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
  2362. package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
  2363. package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
  2364. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
  2365. package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
  2366. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
  2367. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
  2368. package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
  2369. package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
  2370. package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
  2371. package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
  2372. package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
  2373. package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
  2374. package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
  2375. package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
  2376. package/dist/src/gateway/hono/oauth-async.js.map +0 -1
  2377. package/dist/src/gateway/hono/oauth.js.map +0 -1
  2378. package/dist/src/gateway/hono/routes/activity.js.map +0 -1
  2379. package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
  2380. package/dist/src/gateway/hono/routes/agents.js.map +0 -1
  2381. package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
  2382. package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
  2383. package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
  2384. package/dist/src/gateway/hono/routes/browser.js.map +0 -1
  2385. package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
  2386. package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
  2387. package/dist/src/gateway/hono/routes/channels.js.map +0 -1
  2388. package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
  2389. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
  2390. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
  2391. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
  2392. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
  2393. package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
  2394. package/dist/src/gateway/hono/routes/config.js.map +0 -1
  2395. package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
  2396. package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
  2397. package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
  2398. package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
  2399. package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
  2400. package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
  2401. package/dist/src/gateway/hono/routes/goals.js.map +0 -1
  2402. package/dist/src/gateway/hono/routes/home.js.map +0 -1
  2403. package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
  2404. package/dist/src/gateway/hono/routes/index.js.map +0 -1
  2405. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
  2406. package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
  2407. package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
  2408. package/dist/src/gateway/hono/routes/logs.js.map +0 -1
  2409. package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
  2410. package/dist/src/gateway/hono/routes/media.js.map +0 -1
  2411. package/dist/src/gateway/hono/routes/memory.js.map +0 -1
  2412. package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
  2413. package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
  2414. package/dist/src/gateway/hono/routes/models.js.map +0 -1
  2415. package/dist/src/gateway/hono/routes/notes.js.map +0 -1
  2416. package/dist/src/gateway/hono/routes/projects.js.map +0 -1
  2417. package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
  2418. package/dist/src/gateway/hono/routes/search.js.map +0 -1
  2419. package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
  2420. package/dist/src/gateway/hono/routes/shares.js.map +0 -1
  2421. package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
  2422. package/dist/src/gateway/hono/routes/status.js.map +0 -1
  2423. package/dist/src/gateway/hono/routes/tui.js.map +0 -1
  2424. package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
  2425. package/dist/src/gateway/hono/routes/update.js.map +0 -1
  2426. package/dist/src/gateway/hono/routes/voice.js.map +0 -1
  2427. package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
  2428. package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
  2429. package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
  2430. package/dist/src/gateway/hono/routes/you.js.map +0 -1
  2431. package/dist/src/gateway/hono/sse-json.js.map +0 -1
  2432. package/dist/src/gateway/hono/sse.js.map +0 -1
  2433. package/dist/src/gateway/host.js.map +0 -1
  2434. package/dist/src/gateway/image-capabilities.js.map +0 -1
  2435. package/dist/src/gateway/listen.js.map +0 -1
  2436. package/dist/src/gateway/lock.js.map +0 -1
  2437. package/dist/src/gateway/ports.js.map +0 -1
  2438. package/dist/src/gateway/protocol.js.map +0 -1
  2439. package/dist/src/gateway/public-url.js.map +0 -1
  2440. package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
  2441. package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
  2442. package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
  2443. package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
  2444. package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
  2445. package/dist/src/gateway/respawn.js.map +0 -1
  2446. package/dist/src/gateway/run-loop.js.map +0 -1
  2447. package/dist/src/gateway/runtime-config.js.map +0 -1
  2448. package/dist/src/gateway/security/audit.js.map +0 -1
  2449. package/dist/src/gateway/security/csp.js.map +0 -1
  2450. package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
  2451. package/dist/src/gateway/security/external-content.js.map +0 -1
  2452. package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
  2453. package/dist/src/gateway/security/loopback.js.map +0 -1
  2454. package/dist/src/gateway/security/operator-scopes.js.map +0 -1
  2455. package/dist/src/gateway/security/origin-check.js.map +0 -1
  2456. package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
  2457. package/dist/src/gateway/security/secret-equal.js.map +0 -1
  2458. package/dist/src/gateway/server-tailscale.js.map +0 -1
  2459. package/dist/src/gateway/server.js.map +0 -1
  2460. package/dist/src/gateway/service/agent-runner.js.map +0 -1
  2461. package/dist/src/gateway/service/config-coordinator.js.map +0 -1
  2462. package/dist/src/gateway/service/marketplace-service.js.map +0 -1
  2463. package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
  2464. package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
  2465. package/dist/src/gateway/service/sessions-api.js.map +0 -1
  2466. package/dist/src/gateway/service/sse-hub.js.map +0 -1
  2467. package/dist/src/gateway/service.js.map +0 -1
  2468. package/dist/src/gateway/session-reset-service.js.map +0 -1
  2469. package/dist/src/gateway/startup-readiness.js.map +0 -1
  2470. package/dist/src/gateway/startup-trace.js.map +0 -1
  2471. package/dist/src/gateway/tailscale-auth.js.map +0 -1
  2472. package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
  2473. package/dist/src/gateway/tls-server.js.map +0 -1
  2474. package/dist/src/gateway/trusted-proxy.js.map +0 -1
  2475. package/dist/src/gateway/user-turn-input.js.map +0 -1
  2476. package/dist/src/gateway/workspace-editor-path.js.map +0 -1
  2477. package/dist/src/gateway/workspace-file-search.js.map +0 -1
  2478. package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
  2479. package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
  2480. package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
  2481. package/dist/src/gateway/ws-security.js.map +0 -1
  2482. package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
  2483. package/dist/src/goals/goal-contract-draft.js.map +0 -1
  2484. package/dist/src/goals/goal-evidence-review.js.map +0 -1
  2485. package/dist/src/goals/goal-notifications.js.map +0 -1
  2486. package/dist/src/goals/goal-queue-store.js.map +0 -1
  2487. package/dist/src/goals/goal-runner.js.map +0 -1
  2488. package/dist/src/goals/goal-service.js.map +0 -1
  2489. package/dist/src/goals/goal-store.js.map +0 -1
  2490. package/dist/src/goals/goal-workflow-judge.js.map +0 -1
  2491. package/dist/src/heartbeat/active-hours.js.map +0 -1
  2492. package/dist/src/heartbeat/content-check.js.map +0 -1
  2493. package/dist/src/heartbeat/event-prompt.js.map +0 -1
  2494. package/dist/src/heartbeat/tokens.js.map +0 -1
  2495. package/dist/src/heartbeat/wake.js.map +0 -1
  2496. package/dist/src/i18n/format.js.map +0 -1
  2497. package/dist/src/i18n/goals-bundle.js.map +0 -1
  2498. package/dist/src/i18n/locale.js.map +0 -1
  2499. package/dist/src/i18n/locales/goals.en.js.map +0 -1
  2500. package/dist/src/i18n/locales/goals.zh.js.map +0 -1
  2501. package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
  2502. package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
  2503. package/dist/src/i18n/share-tool-bundle.js.map +0 -1
  2504. package/dist/src/index.js.map +0 -1
  2505. package/dist/src/infra/brew.js.map +0 -1
  2506. package/dist/src/infra/bus/queue.js.map +0 -1
  2507. package/dist/src/infra/debounce.js.map +0 -1
  2508. package/dist/src/infra/exec.js.map +0 -1
  2509. package/dist/src/infra/gateway-process-argv.js.map +0 -1
  2510. package/dist/src/infra/gateway-processes.js.map +0 -1
  2511. package/dist/src/infra/host-env-security-policy.js.map +0 -1
  2512. package/dist/src/infra/host-env-security.js.map +0 -1
  2513. package/dist/src/infra/http-proxy-env.js.map +0 -1
  2514. package/dist/src/infra/is-main.js.map +0 -1
  2515. package/dist/src/infra/json-utf8-bytes.js.map +0 -1
  2516. package/dist/src/infra/node-sqlite.js.map +0 -1
  2517. package/dist/src/infra/package-json.js.map +0 -1
  2518. package/dist/src/infra/package-update-steps.js.map +0 -1
  2519. package/dist/src/infra/path-env.js.map +0 -1
  2520. package/dist/src/infra/path-prepend.js.map +0 -1
  2521. package/dist/src/infra/ports.js.map +0 -1
  2522. package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
  2523. package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
  2524. package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
  2525. package/dist/src/infra/restart.js.map +0 -1
  2526. package/dist/src/infra/retry.js.map +0 -1
  2527. package/dist/src/infra/run-command.js.map +0 -1
  2528. package/dist/src/infra/sqlite-errors.js.map +0 -1
  2529. package/dist/src/infra/ssh-tunnel.js.map +0 -1
  2530. package/dist/src/infra/stable-node-path.js.map +0 -1
  2531. package/dist/src/infra/tailscale.js.map +0 -1
  2532. package/dist/src/infra/undici-fetch.js.map +0 -1
  2533. package/dist/src/infra/unhandled-rejections.js.map +0 -1
  2534. package/dist/src/infra/update-channels.js.map +0 -1
  2535. package/dist/src/infra/update-check.js.map +0 -1
  2536. package/dist/src/infra/update-global.js.map +0 -1
  2537. package/dist/src/infra/update-lock.js.map +0 -1
  2538. package/dist/src/infra/update-log.js.map +0 -1
  2539. package/dist/src/infra/update-restart.js.map +0 -1
  2540. package/dist/src/infra/update-runner.js.map +0 -1
  2541. package/dist/src/infra/update-startup.js.map +0 -1
  2542. package/dist/src/infra/warning-filter.js.map +0 -1
  2543. package/dist/src/infra/write-file-atomic.js.map +0 -1
  2544. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
  2545. package/dist/src/knowledge/coordinator.js.map +0 -1
  2546. package/dist/src/knowledge/ingestion-service.js.map +0 -1
  2547. package/dist/src/local-apps/acceptance.js.map +0 -1
  2548. package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
  2549. package/dist/src/local-apps/runtime-entry.js.map +0 -1
  2550. package/dist/src/local-apps/scaffold.js.map +0 -1
  2551. package/dist/src/local-apps/service.js.map +0 -1
  2552. package/dist/src/local-apps/store.js.map +0 -1
  2553. package/dist/src/markdown/chunk.js.map +0 -1
  2554. package/dist/src/markdown/code-spans.js.map +0 -1
  2555. package/dist/src/markdown/fences.js.map +0 -1
  2556. package/dist/src/markdown/frontmatter.js.map +0 -1
  2557. package/dist/src/markdown/ir.js.map +0 -1
  2558. package/dist/src/markdown/render.js.map +0 -1
  2559. package/dist/src/markdown/tables.js.map +0 -1
  2560. package/dist/src/mcp/channel-bridge.js.map +0 -1
  2561. package/dist/src/mcp/channel-server.js.map +0 -1
  2562. package/dist/src/mcp/channel-shared.js.map +0 -1
  2563. package/dist/src/mcp/channel-tools.js.map +0 -1
  2564. package/dist/src/mcp/gateway-http-client.js.map +0 -1
  2565. package/dist/src/media/media-reference.js.map +0 -1
  2566. package/dist/src/media/paths.js.map +0 -1
  2567. package/dist/src/media/session-references.js.map +0 -1
  2568. package/dist/src/media/store.js.map +0 -1
  2569. package/dist/src/media/uri.js.map +0 -1
  2570. package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
  2571. package/dist/src/media-shared/http/deadline.js.map +0 -1
  2572. package/dist/src/media-shared/http/private-network.js.map +0 -1
  2573. package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
  2574. package/dist/src/media-shared/http/provider-http.js.map +0 -1
  2575. package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
  2576. package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
  2577. package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
  2578. package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
  2579. package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
  2580. package/dist/src/media-understanding/registry.js.map +0 -1
  2581. package/dist/src/media-understanding/resolve-entries.js.map +0 -1
  2582. package/dist/src/media-understanding/runner.js.map +0 -1
  2583. package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
  2584. package/dist/src/migrations/registry.js.map +0 -1
  2585. package/dist/src/migrations/runner.js.map +0 -1
  2586. package/dist/src/mobile/notification-service.js.map +0 -1
  2587. package/dist/src/mobile/notification-store.js.map +0 -1
  2588. package/dist/src/mobile/notification-types.js.map +0 -1
  2589. package/dist/src/notes/agent-context.js.map +0 -1
  2590. package/dist/src/notes/attachment-ref.js.map +0 -1
  2591. package/dist/src/notes/note-attachment-sync.js.map +0 -1
  2592. package/dist/src/notes/note-index-meta.js.map +0 -1
  2593. package/dist/src/notes/note-markdown.js.map +0 -1
  2594. package/dist/src/notes/paths.js.map +0 -1
  2595. package/dist/src/notes/service.js.map +0 -1
  2596. package/dist/src/notes/store.js.map +0 -1
  2597. package/dist/src/package-version.js.map +0 -1
  2598. package/dist/src/pets/factory.js.map +0 -1
  2599. package/dist/src/pets/manifest.js.map +0 -1
  2600. package/dist/src/pets/validator.js.map +0 -1
  2601. package/dist/src/process/kill-tree.js.map +0 -1
  2602. package/dist/src/project-trust/trust-store.js.map +0 -1
  2603. package/dist/src/projects/automation-bind.js.map +0 -1
  2604. package/dist/src/projects/goal-bind.js.map +0 -1
  2605. package/dist/src/projects/memory-bind.js.map +0 -1
  2606. package/dist/src/projects/project-agent-suggestion.js.map +0 -1
  2607. package/dist/src/projects/project-agent.js.map +0 -1
  2608. package/dist/src/projects/project-kind.js.map +0 -1
  2609. package/dist/src/projects/project-loop.js.map +0 -1
  2610. package/dist/src/projects/project-service.js.map +0 -1
  2611. package/dist/src/projects/project-store.js.map +0 -1
  2612. package/dist/src/projects/session-bind.js.map +0 -1
  2613. package/dist/src/projects/workflow-bind.js.map +0 -1
  2614. package/dist/src/projects/workspace-project.js.map +0 -1
  2615. package/dist/src/projects/workspace.js.map +0 -1
  2616. package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
  2617. package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
  2618. package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
  2619. package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
  2620. package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
  2621. package/dist/src/providers/constants.js.map +0 -1
  2622. package/dist/src/providers/domestic-presets.js.map +0 -1
  2623. package/dist/src/providers/env-keys.js.map +0 -1
  2624. package/dist/src/providers/extension-stream-bridge.js.map +0 -1
  2625. package/dist/src/providers/index.js.map +0 -1
  2626. package/dist/src/providers/model-call.js.map +0 -1
  2627. package/dist/src/providers/model-discovery.js.map +0 -1
  2628. package/dist/src/providers/model-registry.js.map +0 -1
  2629. package/dist/src/providers/model-supplements.js.map +0 -1
  2630. package/dist/src/providers/plugin-registry.js.map +0 -1
  2631. package/dist/src/providers/presentation.js.map +0 -1
  2632. package/dist/src/remote-access/exposure-guards.js.map +0 -1
  2633. package/dist/src/remote-access/exposure-manager.js.map +0 -1
  2634. package/dist/src/review/review-git.js.map +0 -1
  2635. package/dist/src/review/review-types.js.map +0 -1
  2636. package/dist/src/routing/account-id.js.map +0 -1
  2637. package/dist/src/routing/agent-session-key.js.map +0 -1
  2638. package/dist/src/routing/bindings.js.map +0 -1
  2639. package/dist/src/routing/index.js.map +0 -1
  2640. package/dist/src/routing/resolve-route.js.map +0 -1
  2641. package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
  2642. package/dist/src/routing/session-key-utils.js.map +0 -1
  2643. package/dist/src/routing/session-key.js.map +0 -1
  2644. package/dist/src/session/abort-cutoff.js.map +0 -1
  2645. package/dist/src/session/chat-export.js.map +0 -1
  2646. package/dist/src/session/client-history.js.map +0 -1
  2647. package/dist/src/session/compaction-checkpoints.js.map +0 -1
  2648. package/dist/src/session/config-store.js.map +0 -1
  2649. package/dist/src/session/init-session-turn.js.map +0 -1
  2650. package/dist/src/session/lifecycle-timestamps.js.map +0 -1
  2651. package/dist/src/session/load-jsonl-entries.js.map +0 -1
  2652. package/dist/src/session/manager.js.map +0 -1
  2653. package/dist/src/session/patch-metadata.js.map +0 -1
  2654. package/dist/src/session/reset-policy.js.map +0 -1
  2655. package/dist/src/session/reset-triggers.js.map +0 -1
  2656. package/dist/src/session/reset-type.js.map +0 -1
  2657. package/dist/src/session/resolve-session.js.map +0 -1
  2658. package/dist/src/session/session-context-for-llm.js.map +0 -1
  2659. package/dist/src/session/session-id.js.map +0 -1
  2660. package/dist/src/session/session-title.js.map +0 -1
  2661. package/dist/src/session/session-workspace.js.map +0 -1
  2662. package/dist/src/session/store.js.map +0 -1
  2663. package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
  2664. package/dist/src/session/thinking-resolve.js.map +0 -1
  2665. package/dist/src/session/transcript-events.js.map +0 -1
  2666. package/dist/src/session/transcript-format.js.map +0 -1
  2667. package/dist/src/session/transcript-outline.js.map +0 -1
  2668. package/dist/src/session/transcript-stats.js.map +0 -1
  2669. package/dist/src/session/types.js.map +0 -1
  2670. package/dist/src/session/user-round-delete.js.map +0 -1
  2671. package/dist/src/share/share-audit.js.map +0 -1
  2672. package/dist/src/share/share-auto.js.map +0 -1
  2673. package/dist/src/share/share-config.js.map +0 -1
  2674. package/dist/src/share/share-landing.js.map +0 -1
  2675. package/dist/src/share/share-rate-limit.js.map +0 -1
  2676. package/dist/src/share/share-store.js.map +0 -1
  2677. package/dist/src/share/share-thumbnail.js.map +0 -1
  2678. package/dist/src/share/share-types.js.map +0 -1
  2679. package/dist/src/share/share-url.js.map +0 -1
  2680. package/dist/src/share/share-zip.js.map +0 -1
  2681. package/dist/src/share/site-proxy.js.map +0 -1
  2682. package/dist/src/share/site-share-config.js.map +0 -1
  2683. package/dist/src/share/site-share-router.js.map +0 -1
  2684. package/dist/src/share/site-share-store.js.map +0 -1
  2685. package/dist/src/share/site-share-types.js.map +0 -1
  2686. package/dist/src/share/site-static-serve.js.map +0 -1
  2687. package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
  2688. package/dist/src/storage/sqlite/config-repository.js.map +0 -1
  2689. package/dist/src/storage/sqlite/connection.js.map +0 -1
  2690. package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
  2691. package/dist/src/storage/sqlite/fts.js.map +0 -1
  2692. package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
  2693. package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
  2694. package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
  2695. package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
  2696. package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
  2697. package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
  2698. package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
  2699. package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
  2700. package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
  2701. package/dist/src/storage/sqlite/paths.js.map +0 -1
  2702. package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
  2703. package/dist/src/storage/sqlite/schema-version.js.map +0 -1
  2704. package/dist/src/storage/sqlite/schema.js.map +0 -1
  2705. package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
  2706. package/dist/src/storage/sqlite/session-repository.js.map +0 -1
  2707. package/dist/src/storage/sqlite/transaction.js.map +0 -1
  2708. package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
  2709. package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
  2710. package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
  2711. package/dist/src/tui/backends/embedded-backend.js.map +0 -1
  2712. package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
  2713. package/dist/src/tui/chat-history.js.map +0 -1
  2714. package/dist/src/tui/clipboard-image.js.map +0 -1
  2715. package/dist/src/tui/clipboard-text.js.map +0 -1
  2716. package/dist/src/tui/components/assistant-message.js.map +0 -1
  2717. package/dist/src/tui/components/bash-execution.js.map +0 -1
  2718. package/dist/src/tui/components/bash-summary.js.map +0 -1
  2719. package/dist/src/tui/components/branch-message-summary.js.map +0 -1
  2720. package/dist/src/tui/components/branch-summary.js.map +0 -1
  2721. package/dist/src/tui/components/chat-log.js.map +0 -1
  2722. package/dist/src/tui/components/compaction-summary.js.map +0 -1
  2723. package/dist/src/tui/components/custom-editor.js.map +0 -1
  2724. package/dist/src/tui/components/custom-message.js.map +0 -1
  2725. package/dist/src/tui/components/dynamic-border.js.map +0 -1
  2726. package/dist/src/tui/components/extension-dialog.js.map +0 -1
  2727. package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
  2728. package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
  2729. package/dist/src/tui/components/searchable-select-list.js.map +0 -1
  2730. package/dist/src/tui/components/session-selector.js.map +0 -1
  2731. package/dist/src/tui/components/settings-selector.js.map +0 -1
  2732. package/dist/src/tui/components/thinking-selector.js.map +0 -1
  2733. package/dist/src/tui/components/tool-execution.js.map +0 -1
  2734. package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
  2735. package/dist/src/tui/components/tui-header.js.map +0 -1
  2736. package/dist/src/tui/components/user-message.js.map +0 -1
  2737. package/dist/src/tui/components/visual-truncate.js.map +0 -1
  2738. package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
  2739. package/dist/src/tui/extension-host/host.js.map +0 -1
  2740. package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
  2741. package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
  2742. package/dist/src/tui/extension-host/runtime.js.map +0 -1
  2743. package/dist/src/tui/extension-host/surface.js.map +0 -1
  2744. package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
  2745. package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
  2746. package/dist/src/tui/sse-consumer.js.map +0 -1
  2747. package/dist/src/tui/theme/dark.js.map +0 -1
  2748. package/dist/src/tui/theme/light.js.map +0 -1
  2749. package/dist/src/tui/theme-manager.js.map +0 -1
  2750. package/dist/src/tui/theme.js.map +0 -1
  2751. package/dist/src/tui/tool-summary.js.map +0 -1
  2752. package/dist/src/tui/tui-agent-events.js.map +0 -1
  2753. package/dist/src/tui/tui-command-formatters.js.map +0 -1
  2754. package/dist/src/tui/tui-commands.js.map +0 -1
  2755. package/dist/src/tui/tui-context-usage.js.map +0 -1
  2756. package/dist/src/tui/tui-extension-user-message.js.map +0 -1
  2757. package/dist/src/tui/tui-fd-path.js.map +0 -1
  2758. package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
  2759. package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
  2760. package/dist/src/tui/tui-git-branch.js.map +0 -1
  2761. package/dist/src/tui/tui-keybindings-file.js.map +0 -1
  2762. package/dist/src/tui/tui-lifecycle.js.map +0 -1
  2763. package/dist/src/tui/tui-local-shell.js.map +0 -1
  2764. package/dist/src/tui/tui-model-picker.js.map +0 -1
  2765. package/dist/src/tui/tui-oauth-login.js.map +0 -1
  2766. package/dist/src/tui/tui-overlays.js.map +0 -1
  2767. package/dist/src/tui/tui-picker-overlay.js.map +0 -1
  2768. package/dist/src/tui/tui-run-state.js.map +0 -1
  2769. package/dist/src/tui/tui-run-status-format.js.map +0 -1
  2770. package/dist/src/tui/tui-runtime-hints.js.map +0 -1
  2771. package/dist/src/tui/tui-scoped-models.js.map +0 -1
  2772. package/dist/src/tui/tui-session-actions.js.map +0 -1
  2773. package/dist/src/tui/tui-session-format.js.map +0 -1
  2774. package/dist/src/tui/tui-session-snapshot.js.map +0 -1
  2775. package/dist/src/tui/tui-session-stats.js.map +0 -1
  2776. package/dist/src/tui/tui-settings.js.map +0 -1
  2777. package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
  2778. package/dist/src/tui/tui-startup-resources.js.map +0 -1
  2779. package/dist/src/tui/tui-startup-text.js.map +0 -1
  2780. package/dist/src/tui/tui-stdio-filter.js.map +0 -1
  2781. package/dist/src/tui/tui-submit.js.map +0 -1
  2782. package/dist/src/tui/tui-suspend.js.map +0 -1
  2783. package/dist/src/tui/tui-timeline-picker.js.map +0 -1
  2784. package/dist/src/tui/tui-timeline.js.map +0 -1
  2785. package/dist/src/tui/tui-tool-diff.js.map +0 -1
  2786. package/dist/src/tui/tui-tool-result.js.map +0 -1
  2787. package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
  2788. package/dist/src/tui/tui-transcript-tree.js.map +0 -1
  2789. package/dist/src/tui/tui-types.js.map +0 -1
  2790. package/dist/src/tui/tui-workflow-slash.js.map +0 -1
  2791. package/dist/src/tui/tui.js.map +0 -1
  2792. package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
  2793. package/dist/src/tunnel/broker-client.js.map +0 -1
  2794. package/dist/src/tunnel/consent.js.map +0 -1
  2795. package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
  2796. package/dist/src/tunnel/env.js.map +0 -1
  2797. package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
  2798. package/dist/src/tunnel/frpc-binary.js.map +0 -1
  2799. package/dist/src/tunnel/frpc-config.js.map +0 -1
  2800. package/dist/src/tunnel/frpc-extract.js.map +0 -1
  2801. package/dist/src/tunnel/frpc-process.js.map +0 -1
  2802. package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
  2803. package/dist/src/tunnel/pair-context.js.map +0 -1
  2804. package/dist/src/tunnel/pair-url.js.map +0 -1
  2805. package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
  2806. package/dist/src/tunnel/pairing.js.map +0 -1
  2807. package/dist/src/tunnel/tunnel-audit.js.map +0 -1
  2808. package/dist/src/tunnel/tunnel-config.js.map +0 -1
  2809. package/dist/src/tunnel/tunnel-persist.js.map +0 -1
  2810. package/dist/src/tunnel/tunnel-qr.js.map +0 -1
  2811. package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
  2812. package/dist/src/tunnel/tunnel-service.js.map +0 -1
  2813. package/dist/src/tunnel/tunnel-state.js.map +0 -1
  2814. package/dist/src/tunnel/well-known.js.map +0 -1
  2815. package/dist/src/user-context/config.js.map +0 -1
  2816. package/dist/src/user-context/import.js.map +0 -1
  2817. package/dist/src/user-context/owner.js.map +0 -1
  2818. package/dist/src/user-context/profile.js.map +0 -1
  2819. package/dist/src/user-context/projection.js.map +0 -1
  2820. package/dist/src/user-context/runtime.js.map +0 -1
  2821. package/dist/src/user-context/source-recommendations.js.map +0 -1
  2822. package/dist/src/user-context/trust-policy.js.map +0 -1
  2823. package/dist/src/utils/global-singleton.js.map +0 -1
  2824. package/dist/src/utils/helpers.js.map +0 -1
  2825. package/dist/src/utils/index.js.map +0 -1
  2826. package/dist/src/utils/is-record.js.map +0 -1
  2827. package/dist/src/utils/logger/audit.js.map +0 -1
  2828. package/dist/src/utils/logger/config.js.map +0 -1
  2829. package/dist/src/utils/logger/context.js.map +0 -1
  2830. package/dist/src/utils/logger/exporters.js.map +0 -1
  2831. package/dist/src/utils/logger/index.js.map +0 -1
  2832. package/dist/src/utils/logger/log-store.js.map +0 -1
  2833. package/dist/src/utils/logger/log-stream.js.map +0 -1
  2834. package/dist/src/utils/logger/pino-record.js.map +0 -1
  2835. package/dist/src/utils/logger/redact.js.map +0 -1
  2836. package/dist/src/utils/logger/rotation.js.map +0 -1
  2837. package/dist/src/utils/logger/shutdown.js.map +0 -1
  2838. package/dist/src/utils/logger/stats.js.map +0 -1
  2839. package/dist/src/utils/logger/streams.js.map +0 -1
  2840. package/dist/src/utils/logger/types.js.map +0 -1
  2841. package/dist/src/utils/logger.js.map +0 -1
  2842. package/dist/src/utils/redact-sensitive-url.js.map +0 -1
  2843. package/dist/src/utils/sanitize-log.js.map +0 -1
  2844. package/dist/src/utils/string-coerce.js.map +0 -1
  2845. package/dist/src/voice/language-profile.js.map +0 -1
  2846. package/dist/src/voice/local/model-files.js.map +0 -1
  2847. package/dist/src/voice/local/model-manager.js.map +0 -1
  2848. package/dist/src/voice/local/models.js.map +0 -1
  2849. package/dist/src/voice/local/runtime-client.js.map +0 -1
  2850. package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
  2851. package/dist/src/voice/local/runtime-worker.js.map +0 -1
  2852. package/dist/src/voice/local/wav.js.map +0 -1
  2853. package/dist/src/voice/metadata/builtin.js.map +0 -1
  2854. package/dist/src/voice/metadata/registry.js.map +0 -1
  2855. package/dist/src/voice/stt/availability.js.map +0 -1
  2856. package/dist/src/voice/stt/config-slice.js.map +0 -1
  2857. package/dist/src/voice/stt/factory.js.map +0 -1
  2858. package/dist/src/voice/stt/index.js.map +0 -1
  2859. package/dist/src/voice/stt/list-providers.js.map +0 -1
  2860. package/dist/src/voice/stt/mention.js.map +0 -1
  2861. package/dist/src/voice/stt/preflight.js.map +0 -1
  2862. package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
  2863. package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
  2864. package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
  2865. package/dist/src/voice/stt/transcribe-core.js.map +0 -1
  2866. package/dist/src/voice/stt/types.js.map +0 -1
  2867. package/dist/src/voice/tts/audio.js.map +0 -1
  2868. package/dist/src/voice/tts/config-slice.js.map +0 -1
  2869. package/dist/src/voice/tts/directives.js.map +0 -1
  2870. package/dist/src/voice/tts/factory.js.map +0 -1
  2871. package/dist/src/voice/tts/list-providers.js.map +0 -1
  2872. package/dist/src/voice/tts/merge-config.js.map +0 -1
  2873. package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
  2874. package/dist/src/voice/tts/payload.js.map +0 -1
  2875. package/dist/src/voice/tts/preprocess.js.map +0 -1
  2876. package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
  2877. package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
  2878. package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
  2879. package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
  2880. package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
  2881. package/dist/src/voice/tts/service.js.map +0 -1
  2882. package/dist/src/voice/tts/speak-core.js.map +0 -1
  2883. package/dist/src/voice/tts/speech-registry.js.map +0 -1
  2884. package/dist/src/voice/tts/status-tracker.js.map +0 -1
  2885. package/dist/src/voice/tts/summarize.js.map +0 -1
  2886. package/dist/src/voice/tts/types.js.map +0 -1
  2887. package/dist/src/work-discovery/analyzer.js.map +0 -1
  2888. package/dist/src/work-discovery/probe.js.map +0 -1
  2889. package/dist/src/work-discovery/repository.js.map +0 -1
  2890. package/dist/src/work-discovery/service.js.map +0 -1
  2891. package/dist/src/work-items/agent-context.js.map +0 -1
  2892. package/dist/src/work-items/work-item-service.js.map +0 -1
  2893. package/dist/src/work-items/work-item-store.js.map +0 -1
  2894. package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
  2895. package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
  2896. package/dist/src/workflows/domain/definition-utils.js.map +0 -1
  2897. package/dist/src/workflows/domain/run.js.map +0 -1
  2898. package/dist/src/workflows/domain/schema-validation.js.map +0 -1
  2899. package/dist/src/workflows/domain/validation.js.map +0 -1
  2900. package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
  2901. package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
  2902. package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
  2903. package/dist/src/workflows/engine/projector.js.map +0 -1
  2904. package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
  2905. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
  2906. package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
  2907. package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
  2908. package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
  2909. package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
  2910. package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
  2911. package/dist/src/workflows/store/event-store.js.map +0 -1
  2912. package/dist/src/workflows/store/paths.js.map +0 -1
  2913. package/dist/src/workflows/store/run-index-store.js.map +0 -1
  2914. package/dist/src/workflows/store/run-store.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloakbrowser.js","names":["osPlatform","osArch"],"sources":["../../../../src/browser/providers/cloakbrowser.ts"],"sourcesContent":["/**\n * CloakBrowser provider — anti-fingerprint Chromium with stealth capabilities.\n *\n * Manages CloakBrowser binary download, stealth launch, CDP connection,\n * keep-open process reuse, and temporary profile lifecycle.\n *\n * Ported from brocli's cloak.rs to TypeScript, using Playwright's connectOverCDP\n * to produce a standard Browser/BrowserContext pair.\n */\n\nimport { createHash } from 'node:crypto';\nimport { createReadStream, createWriteStream } from 'node:fs';\nimport { mkdir, mkdtemp, rm, stat } from 'node:fs/promises';\nimport { platform as osPlatform, arch as osArch, tmpdir } from 'node:os';\nimport { join, resolve } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\nimport { Readable, Transform } from 'node:stream';\nimport { ChildProcess, spawn } from 'node:child_process';\n\nimport AdmZip from 'adm-zip';\nimport type { Browser, BrowserContext } from 'playwright-core';\n\nimport type { BrowserInstallProgress } from '../install-progress.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { resolveBinDir } from '../../config/paths.js';\nimport { assertCacheDir, expandHome } from '../cache-dir-policy.js';\nimport { pickFreePort } from '../free-port.js';\nimport { loadPlaywrightCoreModule } from './playwright-doctor.js';\nimport {\n buildStealthArgs,\n filterCloakBrowserExtraArgs,\n generateFingerprintSeed,\n makeExecutable,\n removeQuarantineAttr,\n WEBDRIVER_OVERRIDE_SCRIPT,\n} from '../stealth.js';\nimport type { CloakBrowserConfig } from './types.js';\n\nconst log = createLogger('CloakBrowser');\n\n// ── Platform info ───────────────────────────────────────────────────────────\n\ninterface PlatformInfo {\n tag: string;\n chromiumVersion: string;\n archiveExt: string;\n executableRelativePath: string;\n fingerprintPlatform: string;\n /**\n * Expected SHA-256 of the downloaded archive (lowercase hex). Empty string =\n * verification opt-out for this platform; warned but not fatal. To populate:\n * download the archive once, run `shasum -a 256 <file>`, paste here.\n */\n expectedSha256: string;\n}\n\nconst DOWNLOAD_BASE_URL = 'https://cloakbrowser.dev';\nconst GITHUB_DOWNLOAD_BASE_URL = 'https://github.com/CloakHQ/CloakBrowser/releases/download';\nconst XOPC_CLOAKBROWSER_PROXY_BASE =\n process.env.XOPC_CLOAKBROWSER_DOWNLOAD_BASE?.trim().replace(/\\/$/, '') ||\n 'https://xopc.ai/api/cloakbrowser/download';\nconst READY_TIMEOUT_MS = 45_000;\nconst READY_POLL_INTERVAL_MS = 300;\nconst DEFAULT_KEEP_OPEN_CDP_PORT = 9222;\n\nconst PLATFORMS: Record<string, PlatformInfo> = {\n 'darwin-arm64': {\n tag: 'darwin-arm64',\n chromiumVersion: '145.0.7632.109.2',\n archiveExt: '.tar.gz',\n executableRelativePath: 'Chromium.app/Contents/MacOS/Chromium',\n fingerprintPlatform: 'macos',\n expectedSha256: '',\n },\n 'darwin-x64': {\n tag: 'darwin-x64',\n chromiumVersion: '145.0.7632.109.2',\n archiveExt: '.tar.gz',\n executableRelativePath: 'Chromium.app/Contents/MacOS/Chromium',\n fingerprintPlatform: 'macos',\n expectedSha256: '',\n },\n 'linux-arm64': {\n tag: 'linux-arm64',\n chromiumVersion: '146.0.7680.177.4',\n archiveExt: '.tar.gz',\n executableRelativePath: 'chrome',\n fingerprintPlatform: 'windows',\n expectedSha256: '',\n },\n 'linux-x64': {\n tag: 'linux-x64',\n chromiumVersion: '146.0.7680.177.4',\n archiveExt: '.tar.gz',\n executableRelativePath: 'chrome',\n fingerprintPlatform: 'windows',\n expectedSha256: '',\n },\n 'win32-x64': {\n tag: 'windows-x64',\n chromiumVersion: '146.0.7680.177.4',\n archiveExt: '.zip',\n executableRelativePath: 'chrome.exe',\n fingerprintPlatform: 'windows',\n expectedSha256: '',\n },\n};\n\nfunction detectPlatform(): PlatformInfo {\n const os = osPlatform();\n const architecture = osArch();\n const archMap: Record<string, string> = { arm64: 'arm64', x64: 'x64' };\n const key = `${os}-${archMap[architecture] ?? architecture}`;\n const info = PLATFORMS[key];\n if (!info) {\n throw new Error(`Unsupported CloakBrowser platform: ${os}/${architecture}`);\n }\n return info;\n}\n\n/** Test-only: enumerate platform manifests. */\nexport function listCloakBrowserPlatforms(): PlatformInfo[] {\n return Object.values(PLATFORMS);\n}\n\nfunction archiveDownloadUrls(platformInfo: PlatformInfo): string[] {\n const archiveName = `cloakbrowser-${platformInfo.tag}${platformInfo.archiveExt}`;\n return [\n `${XOPC_CLOAKBROWSER_PROXY_BASE}/${archiveName}`,\n `${GITHUB_DOWNLOAD_BASE_URL}/chromium-v${platformInfo.chromiumVersion}/${archiveName}`,\n `${DOWNLOAD_BASE_URL}/download/${archiveName}`,\n ];\n}\n\n/** Test-only: resolved download URLs for a platform manifest (proxy first). */\nexport function cloakBrowserArchiveDownloadUrls(platformInfo: PlatformInfo): string[] {\n return archiveDownloadUrls(platformInfo);\n}\n\nasync function sha256OfFile(path: string): Promise<string> {\n const hash = createHash('sha256');\n await pipeline(createReadStream(path), hash);\n return hash.digest('hex');\n}\n\n// ── Binary management ───────────────────────────────────────────────────────\n\nconst CLOAKBROWSER_DIR_NAME = 'cloakbrowser';\n\n/** Default CloakBrowser home: ~/.xopc/bin/cloakbrowser (chromium-v*, profiles/, …). */\nexport function defaultCloakBrowserCacheDir(): string {\n return join(resolveBinDir(), CLOAKBROWSER_DIR_NAME);\n}\n\n/** Resolve configured or default CloakBrowser cache root. */\nexport function resolveCloakBrowserCacheDir(configured?: string): string {\n if (configured?.trim()) {\n const resolved = assertCacheDir(configured.trim());\n // Legacy configs used ~/.xopc/bin — normalize to ~/.xopc/bin/cloakbrowser.\n if (resolve(resolved) === resolve(resolveBinDir())) {\n return defaultCloakBrowserCacheDir();\n }\n return resolved;\n }\n return defaultCloakBrowserCacheDir();\n}\n\nasync function resolveCloakExecutablePath(\n cacheDir: string,\n platformInfo: PlatformInfo,\n configuredBinaryPath?: string,\n): Promise<{ execPath: string; installed: boolean; customBinaryPath: boolean }> {\n const trimmed = configuredBinaryPath?.trim();\n const autoPath = binaryPath(cacheDir, platformInfo);\n if (!trimmed) {\n return {\n execPath: autoPath,\n installed: await fileExists(autoPath),\n customBinaryPath: false,\n };\n }\n\n const customPath = resolve(expandHome(trimmed));\n if (await fileExists(customPath)) {\n return { execPath: customPath, installed: true, customBinaryPath: true };\n }\n\n if (await fileExists(autoPath)) {\n return { execPath: autoPath, installed: true, customBinaryPath: true };\n }\n\n return { execPath: customPath, installed: false, customBinaryPath: true };\n}\n\nfunction binaryDir(cacheDir: string, platformInfo: PlatformInfo): string {\n return join(cacheDir, `chromium-v${platformInfo.chromiumVersion}`);\n}\n\nfunction binaryPath(cacheDir: string, platformInfo: PlatformInfo): string {\n return join(binaryDir(cacheDir, platformInfo), platformInfo.executableRelativePath);\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await stat(path);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction runCommand(command: string, args: string[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, { stdio: ['ignore', 'ignore', 'pipe'] });\n let stderr = '';\n child.stderr?.on('data', (data: Buffer) => {\n stderr += data.toString();\n });\n child.once('error', reject);\n child.once('exit', (code, signal) => {\n if (code === 0) {\n resolve();\n return;\n }\n const reason = signal ? `signal ${signal}` : `exit code ${code ?? 'unknown'}`;\n const detail = stderr.trim() ? `: ${stderr.trim().slice(0, 500)}` : '';\n reject(new Error(`${command} failed with ${reason}${detail}`));\n });\n });\n}\n\nasync function extractArchive(archivePath: string, targetDir: string, platformInfo: PlatformInfo): Promise<void> {\n if (platformInfo.archiveExt === '.tar.gz') {\n await runCommand('tar', ['-xzf', archivePath, '-C', targetDir]);\n return;\n }\n\n if (platformInfo.archiveExt === '.zip') {\n const zip = new AdmZip(archivePath);\n zip.extractAllTo(targetDir, true);\n return;\n }\n\n throw new Error(`Unsupported CloakBrowser archive format: ${platformInfo.archiveExt}`);\n}\n\n/**\n * Download and extract CloakBrowser binary.\n *\n * After download, verifies SHA-256 against the platform manifest when one is\n * present. Set `XOPC_CLOAKBROWSER_SKIP_HASH=1` to bypass (development only;\n * the gateway logs a warning when the env var is honoured).\n */\nasync function downloadArchiveToFile(\n url: string,\n archivePath: string,\n onProgress?: (progress: BrowserInstallProgress) => void | Promise<void>,\n signal?: AbortSignal,\n): Promise<void> {\n if (signal?.aborted) throw new Error('Install cancelled');\n\n const response = await fetch(url, { redirect: 'follow', signal });\n if (!response.ok || !response.body) {\n throw new Error(`download returned HTTP ${response.status}`);\n }\n\n const contentLength = response.headers.get('content-length');\n const totalBytes =\n contentLength && Number.isFinite(Number(contentLength)) ? Number(contentLength) : null;\n let bytesReceived = 0;\n\n let lastReportAt = 0;\n const report = (force = false) => {\n const now = Date.now();\n if (!force && now - lastReportAt < 250) return;\n lastReportAt = now;\n void onProgress?.({\n phase: 'downloading',\n message: 'Downloading CloakBrowser archive',\n bytesReceived,\n totalBytes,\n percent:\n totalBytes && totalBytes > 0\n ? Math.min(100, Math.round((bytesReceived / totalBytes) * 100))\n : null,\n });\n };\n\n report(true);\n\n const nodeStream = Readable.fromWeb(response.body as Parameters<typeof Readable.fromWeb>[0]);\n const counting = new Transform({\n transform(chunk, _encoding, callback) {\n bytesReceived += chunk.length;\n report();\n callback(null, chunk);\n },\n });\n\n await pipeline(nodeStream, counting, createWriteStream(archivePath));\n report(true);\n}\n\nasync function downloadBinary(\n cacheDir: string,\n platformInfo: PlatformInfo,\n onProgress?: (progress: BrowserInstallProgress) => void | Promise<void>,\n signal?: AbortSignal,\n): Promise<string> {\n const targetDir = binaryDir(cacheDir, platformInfo);\n const execPath = binaryPath(cacheDir, platformInfo);\n\n if (await fileExists(execPath)) {\n log.info({ path: execPath }, 'CloakBrowser binary already cached');\n await onProgress?.({ phase: 'ready', message: 'CloakBrowser binary already cached', percent: 100 });\n return execPath;\n }\n\n await mkdir(cacheDir, { recursive: true });\n await onProgress?.({ phase: 'starting', message: 'Preparing CloakBrowser download' });\n\n const archiveName = `cloakbrowser-${platformInfo.tag}${platformInfo.archiveExt}`;\n const urls = archiveDownloadUrls(platformInfo);\n const expectedSha256 = platformInfo.expectedSha256.trim().toLowerCase();\n const skipHash = process.env.XOPC_CLOAKBROWSER_SKIP_HASH === '1';\n\n log.info({ version: platformInfo.chromiumVersion, platform: platformInfo.tag }, 'Downloading CloakBrowser...');\n\n let downloadError: Error | undefined;\n for (const url of urls) {\n if (signal?.aborted) throw new Error('Install cancelled');\n const stagingDir = await mkdtemp(join(cacheDir, '.download-'));\n const archivePath = join(stagingDir, archiveName);\n try {\n await downloadArchiveToFile(url, archivePath, onProgress, signal);\n\n if (expectedSha256) {\n if (signal?.aborted) throw new Error('Install cancelled');\n await onProgress?.({ phase: 'verifying', message: 'Verifying SHA-256 checksum' });\n const actual = await sha256OfFile(archivePath);\n if (actual !== expectedSha256) {\n throw new Error(\n `SHA-256 mismatch: expected ${expectedSha256}, got ${actual}. Aborted to avoid running unverified binary.`,\n );\n }\n log.info({ archivePath }, 'SHA-256 verified');\n } else if (skipHash) {\n log.warn(\n { platform: platformInfo.tag, version: platformInfo.chromiumVersion },\n 'CloakBrowser SHA-256 verification skipped (XOPC_CLOAKBROWSER_SKIP_HASH=1)',\n );\n } else {\n log.warn(\n { platform: platformInfo.tag, version: platformInfo.chromiumVersion },\n 'CloakBrowser manifest has no expectedSha256; integrity NOT verified',\n );\n }\n\n await onProgress?.({ phase: 'extracting', message: 'Extracting CloakBrowser archive' });\n log.info({ archivePath }, 'Extracting CloakBrowser archive...');\n await rm(targetDir, { recursive: true, force: true }).catch(() => {});\n await mkdir(targetDir, { recursive: true });\n await extractArchive(archivePath, targetDir, platformInfo);\n\n if (!(await fileExists(execPath))) {\n throw new Error(`archive did not contain expected executable: ${execPath}`);\n }\n\n await makeExecutable(execPath);\n await removeQuarantineAttr(execPath);\n await rm(stagingDir, { recursive: true, force: true }).catch(() => {});\n\n await onProgress?.({ phase: 'ready', message: 'CloakBrowser binary ready', percent: 100 });\n log.info({ path: execPath }, 'CloakBrowser binary ready');\n return execPath;\n } catch (e) {\n await rm(stagingDir, { recursive: true, force: true }).catch(() => {});\n await rm(targetDir, { recursive: true, force: true }).catch(() => {});\n downloadError = e instanceof Error ? e : new Error(String(e));\n log.debug({ url, errorMessage: downloadError.message }, 'Download attempt failed');\n }\n }\n\n throw new Error(\n `Failed to download CloakBrowser v${platformInfo.chromiumVersion} for ${platformInfo.tag}: ${downloadError?.message ?? 'all URLs failed'}`,\n );\n}\n\n// ── CDP endpoint discovery ──────────────────────────────────────────────────\n\nasync function waitForCdpEndpoint(port: number): Promise<string> {\n const deadline = Date.now() + READY_TIMEOUT_MS;\n\n while (Date.now() < deadline) {\n try {\n const response = await fetch(`http://127.0.0.1:${port}/json/version`);\n if (response.ok) {\n const data = (await response.json()) as { webSocketDebuggerUrl?: string };\n if (data.webSocketDebuggerUrl) {\n return data.webSocketDebuggerUrl;\n }\n }\n } catch {\n // Not ready yet\n }\n await new Promise((resolve) => setTimeout(resolve, READY_POLL_INTERVAL_MS));\n }\n\n throw new Error(`CloakBrowser did not expose CDP page within ${READY_TIMEOUT_MS / 1000}s on port ${port}`);\n}\n\n/** Try to find an existing CDP page endpoint on the given port. */\nasync function reuseOrCreatePageEndpoint(port: number): Promise<string | null> {\n try {\n const response = await fetch(`http://127.0.0.1:${port}/json/list`, {\n signal: AbortSignal.timeout(2000),\n });\n if (!response.ok) return null;\n const pages = (await response.json()) as Array<{ webSocketDebuggerUrl?: string; type?: string }>;\n const page = pages.find((p) => p.type === 'page' && p.webSocketDebuggerUrl);\n if (page?.webSocketDebuggerUrl) return page.webSocketDebuggerUrl;\n\n // No pages — create one\n const newResponse = await fetch(`http://127.0.0.1:${port}/json/new`);\n if (newResponse.ok) {\n const newPage = (await newResponse.json()) as { webSocketDebuggerUrl?: string };\n if (newPage.webSocketDebuggerUrl) return newPage.webSocketDebuggerUrl;\n }\n } catch {\n // Not running\n }\n return null;\n}\n\n// ── Provider ────────────────────────────────────────────────────────────────\n\nexport interface CloakBrowserLaunchResult {\n browser?: Browser;\n context?: BrowserContext;\n childProcess: ChildProcess | null;\n temporaryProfileDir: string | null;\n cdpPort: number;\n userDataDir: string;\n reused: boolean;\n pid: number | null;\n}\n\nfunction resolveCloakBrowserProfilePaths(\n config: CloakBrowserConfig,\n cacheDir: string,\n): { userDataDir: string; temporaryProfileDir: string | null } {\n if (config.userDataDir) {\n return { userDataDir: config.userDataDir, temporaryProfileDir: null };\n }\n if (config.temporaryProfile) {\n const userDataDir = join(tmpdir(), `xopc-cloakbrowser-${process.pid}-${generateFingerprintSeed()}`);\n return { userDataDir, temporaryProfileDir: userDataDir };\n }\n return { userDataDir: join(cacheDir, 'profiles', 'default'), temporaryProfileDir: null };\n}\n\n/** Resolve the persistent profile directory agents use (not ephemeral temp dirs). */\nexport function resolveCloakBrowserPersistentProfileDir(config: CloakBrowserConfig = {}): string {\n if (config.userDataDir) return config.userDataDir;\n const cacheDir = resolveCloakBrowserCacheDir(config.cacheDir);\n return join(cacheDir, 'profiles', 'default');\n}\n\nexport interface CloakBrowserRuntimeStatus {\n running: boolean;\n port: number;\n userDataDir: string;\n temporaryProfile: boolean;\n}\n\nasync function probeCdpPort(port: number): Promise<boolean> {\n try {\n const response = await fetch(`http://127.0.0.1:${port}/json/version`, {\n signal: AbortSignal.timeout(2000),\n });\n return response.ok;\n } catch {\n return false;\n }\n}\n\n/** Probe whether CloakBrowser CDP is listening on the configured keep-open port. */\nexport async function probeCloakBrowserRuntime(\n config: CloakBrowserConfig = {},\n): Promise<CloakBrowserRuntimeStatus> {\n const keepOpen = config.keepOpen ?? true;\n const cdpPort = config.cdpPort ?? (keepOpen ? DEFAULT_KEEP_OPEN_CDP_PORT : DEFAULT_KEEP_OPEN_CDP_PORT);\n const cacheDir = resolveCloakBrowserCacheDir(config.cacheDir);\n const { userDataDir } = resolveCloakBrowserProfilePaths(config, cacheDir);\n const running = await probeCdpPort(cdpPort);\n return {\n running,\n port: cdpPort,\n userDataDir,\n temporaryProfile: config.temporaryProfile === true,\n };\n}\n\nfunction launchResultMeta(\n cdpPort: number,\n userDataDir: string,\n reused: boolean,\n pid: number | null,\n childProcess: ChildProcess | null,\n temporaryProfileDir: string | null,\n): Pick<\n CloakBrowserLaunchResult,\n 'cdpPort' | 'userDataDir' | 'reused' | 'pid' | 'childProcess' | 'temporaryProfileDir'\n> {\n return { cdpPort, userDataDir, reused, pid, childProcess, temporaryProfileDir };\n}\n\n/**\n * Launch or connect to a CloakBrowser instance and return a Playwright Browser + Context.\n */\nexport async function launchCloakBrowser(\n config: CloakBrowserConfig = {},\n): Promise<CloakBrowserLaunchResult> {\n const platformInfo = detectPlatform();\n const cacheDir = resolveCloakBrowserCacheDir(config.cacheDir);\n const keepOpen = config.keepOpen ?? true;\n const reuseExisting = config.reuseExisting ?? keepOpen;\n\n // Resolve binary\n const configuredBinary = config.binaryPath?.trim() || undefined;\n const execPath = configuredBinary\n ? (await resolveCloakExecutablePath(cacheDir, platformInfo, configuredBinary)).execPath\n : await downloadBinary(cacheDir, platformInfo, config.onProgress, config.signal);\n if (configuredBinary) {\n await makeExecutable(execPath);\n await removeQuarantineAttr(execPath);\n }\n\n // Resolve CDP port\n const cdpPort = config.cdpPort ?? (keepOpen ? DEFAULT_KEEP_OPEN_CDP_PORT : await pickFreePort());\n const skipPlaywrightConnect = config.skipPlaywrightConnect === true;\n const { userDataDir, temporaryProfileDir: plannedTempProfileDir } = resolveCloakBrowserProfilePaths(\n config,\n cacheDir,\n );\n\n // Try to reuse existing instance\n if (reuseExisting) {\n const existingEndpoint = await reuseOrCreatePageEndpoint(cdpPort);\n if (existingEndpoint) {\n log.info({ port: cdpPort }, 'Reusing existing CloakBrowser instance');\n const meta = launchResultMeta(cdpPort, userDataDir, true, null, null, null);\n if (skipPlaywrightConnect) {\n return meta;\n }\n const pw = await loadPlaywrightCoreModule();\n const chromium = pw.chromium ?? (pw as { default?: { chromium?: (typeof pw)['chromium'] } }).default?.chromium;\n if (!chromium?.connectOverCDP) throw new Error('playwright-core does not support connectOverCDP');\n\n const wsUrl = `ws://127.0.0.1:${cdpPort}`;\n // connectOverCDP wants the browser-level WS URL\n const versionResp = await fetch(`http://127.0.0.1:${cdpPort}/json/version`);\n const versionData = (await versionResp.json()) as { webSocketDebuggerUrl?: string };\n const browserWsUrl = versionData.webSocketDebuggerUrl ?? wsUrl;\n\n const browser = await chromium.connectOverCDP(browserWsUrl);\n const contexts = browser.contexts();\n const context = contexts.length > 0 ? contexts[0] : await browser.newContext();\n\n // Inject stealth script\n await context.addInitScript(WEBDRIVER_OVERRIDE_SCRIPT);\n\n return { browser, context, ...meta };\n }\n }\n\n // Resolve user data dir for a new launch\n let temporaryProfileDir: string | null = plannedTempProfileDir;\n await mkdir(userDataDir, { recursive: true });\n\n // Build launch args\n const stealthArgs = buildStealthArgs(filterCloakBrowserExtraArgs(config.extraArgs ?? []), {\n timezone: config.timezone,\n locale: config.locale,\n webrtcIp: config.webrtcIp,\n fingerprintPlatform: config.fingerprintPlatform ?? platformInfo.fingerprintPlatform,\n });\n\n const launchArgs = [\n `--remote-debugging-address=127.0.0.1`,\n `--remote-debugging-port=${cdpPort}`,\n `--user-data-dir=${userDataDir}`,\n '--no-first-run',\n '--no-default-browser-check',\n ...stealthArgs,\n ];\n\n if (config.headless) {\n launchArgs.push('--headless=new');\n }\n\n // macOS keychain bypass\n if (osPlatform() === 'darwin') {\n launchArgs.push('--use-mock-keychain');\n }\n\n await config.onProgress?.({ phase: 'running', message: 'Launching CloakBrowser for verification' });\n if (config.signal?.aborted) throw new Error('Install cancelled');\n\n log.info(\n { execPath, port: cdpPort, headless: !!config.headless, keepOpen },\n 'Launching CloakBrowser',\n );\n\n // Spawn browser process\n const child = spawn(execPath, launchArgs, {\n stdio: ['ignore', 'ignore', 'ignore'],\n detached: keepOpen, // Detach so it survives parent exit if keep-open\n });\n\n let onLaunchError: ((error: Error) => void) | null = null;\n let onLaunchExit: ((code: number | null, signal: NodeJS.Signals | null) => void) | null = null;\n const launchFailure = new Promise<never>((_resolve, reject) => {\n onLaunchError = (error) => {\n reject(new Error(`Failed to launch CloakBrowser at ${execPath}: ${error.message}`));\n };\n onLaunchExit = (code, signal) => {\n const reason = signal ? `signal ${signal}` : `exit code ${code ?? 'unknown'}`;\n reject(new Error(`CloakBrowser exited before CDP became ready (${reason})`));\n };\n child.once('error', onLaunchError);\n child.once('exit', onLaunchExit);\n });\n\n if (keepOpen) {\n child.unref();\n }\n\n // Wait for CDP to become available\n let browserWsUrl: string;\n try {\n browserWsUrl = await Promise.race([waitForCdpEndpoint(cdpPort), launchFailure]);\n if (onLaunchError) child.off('error', onLaunchError);\n if (onLaunchExit) child.off('exit', onLaunchExit);\n } catch (e) {\n if (onLaunchError) child.off('error', onLaunchError);\n if (onLaunchExit) child.off('exit', onLaunchExit);\n child.kill();\n if (temporaryProfileDir) {\n await rm(temporaryProfileDir, { recursive: true, force: true }).catch(() => {});\n }\n throw e;\n }\n\n // Get browser-level WS URL\n let browserLevelWsUrl: string;\n try {\n const versionResp = await fetch(`http://127.0.0.1:${cdpPort}/json/version`);\n const versionData = (await versionResp.json()) as { webSocketDebuggerUrl?: string };\n browserLevelWsUrl = versionData.webSocketDebuggerUrl ?? browserWsUrl;\n } catch {\n browserLevelWsUrl = browserWsUrl;\n }\n\n const meta = launchResultMeta(\n cdpPort,\n userDataDir,\n false,\n child.pid ?? null,\n keepOpen ? null : child,\n temporaryProfileDir,\n );\n\n if (skipPlaywrightConnect) {\n log.info({ port: cdpPort, pid: child.pid }, 'CloakBrowser launched (CDP only)');\n return meta;\n }\n\n // Connect Playwright over CDP\n const pw = await loadPlaywrightCoreModule();\n const chromium = pw.chromium ?? (pw as { default?: { chromium?: (typeof pw)['chromium'] } }).default?.chromium;\n if (!chromium?.connectOverCDP) {\n child.kill();\n throw new Error('playwright-core does not support connectOverCDP');\n }\n\n const browser = await chromium.connectOverCDP(browserLevelWsUrl);\n const contexts = browser.contexts();\n const context = contexts.length > 0 ? contexts[0] : await browser.newContext();\n\n // Inject stealth overrides\n await context.addInitScript(WEBDRIVER_OVERRIDE_SCRIPT);\n\n log.info({ port: cdpPort, pid: child.pid }, 'CloakBrowser launched and connected');\n\n return {\n browser,\n context,\n ...meta,\n };\n}\n\n/**\n * Cleanup a CloakBrowser session — kill process and remove temp profile if applicable.\n */\nexport async function cleanupCloakBrowser(\n childProcess: ChildProcess | null,\n temporaryProfileDir: string | null,\n): Promise<void> {\n if (childProcess) {\n childProcess.kill();\n // Wait briefly for exit\n await new Promise<void>((resolve) => {\n const timer = setTimeout(resolve, 2000);\n childProcess.once('exit', () => {\n clearTimeout(timer);\n resolve();\n });\n });\n }\n if (temporaryProfileDir) {\n await rm(temporaryProfileDir, { recursive: true, force: true }).catch(() => {});\n log.debug({ dir: temporaryProfileDir }, 'Cleaned up temporary profile');\n }\n}\n\n// ── Doctor / status ─────────────────────────────────────────────────────────\n\nexport interface CloakBrowserDoctorResult {\n installed: boolean;\n version: string | null;\n binaryPath: string | null;\n platform: string;\n cacheDir: string;\n expectedSha256: string;\n /** Primary URL the install flow would fetch from. */\n downloadUrl: string;\n /** Fallback URLs (rendered as alternatives in the install confirm dialog). */\n fallbackUrls: string[];\n /** True when `binaryPath` was user-supplied (UI should surface a warning). */\n customBinaryPath: boolean;\n}\n\n/**\n * Download (if needed), launch headlessly to verify, then return doctor status.\n * Used by gateway install endpoints and CLI.\n */\nexport async function installCloakBrowser(\n config: CloakBrowserConfig = {},\n): Promise<CloakBrowserDoctorResult> {\n const result = await launchCloakBrowser({\n headless: true,\n temporaryProfile: true,\n keepOpen: false,\n cacheDir: config.cacheDir,\n binaryPath: config.binaryPath,\n onProgress: config.onProgress,\n signal: config.signal,\n });\n await result.browser?.close().catch(() => {});\n await cleanupCloakBrowser(result.childProcess, result.temporaryProfileDir);\n return cloakBrowserDoctor({ cacheDir: config.cacheDir, binaryPath: config.binaryPath });\n}\n\n/** Check CloakBrowser installation status. */\nexport async function cloakBrowserDoctor(\n config: CloakBrowserConfig = {},\n): Promise<CloakBrowserDoctorResult> {\n const platformInfo = detectPlatform();\n const cacheDir = resolveCloakBrowserCacheDir(config.cacheDir);\n const { execPath, installed, customBinaryPath } = await resolveCloakExecutablePath(\n cacheDir,\n platformInfo,\n config.binaryPath,\n );\n const [primary, ...fallbacks] = archiveDownloadUrls(platformInfo);\n\n return {\n installed,\n version: installed ? platformInfo.chromiumVersion : null,\n binaryPath: installed ? execPath : null,\n platform: platformInfo.tag,\n cacheDir,\n expectedSha256: platformInfo.expectedSha256,\n downloadUrl: primary ?? '',\n fallbackUrls: fallbacks,\n customBinaryPath,\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension-ws-acquire.js","names":[],"sources":["../../../../src/browser/providers/extension-ws-acquire.ts"],"sourcesContent":["/**\n * Single shared HTTP + WebSocket listener for the Chrome extension bridge.\n * Gateway and BrowserManager both need the server; only one process may bind a port.\n */\n\nimport type { ExtensionBrowserProvider, ExtensionProviderConfig } from './extension.js';\n\nconst DEFAULT_PORT = 19820;\nconst DEFAULT_HOST = '127.0.0.1';\nconst DEFAULT_CONNECTION_TIMEOUT = 30_000;\nconst DEFAULT_COMMAND_TIMEOUT = 30_000;\n\nlet mutexTail: Promise<void> = Promise.resolve();\n\nfunction withExclusive<T>(fn: () => Promise<T>): Promise<T> {\n const prev = mutexTail;\n let unlock!: () => void;\n mutexTail = new Promise<void>((resolve) => {\n unlock = resolve;\n });\n return prev.then(() => fn()).finally(unlock);\n}\n\ntype ServerState = {\n key: string;\n provider: ExtensionBrowserProvider;\n refCount: number;\n};\n\nlet state: ServerState | null = null;\n\nexport type ExtensionBrowserServerSnapshot = {\n active: boolean;\n refCount: number;\n key: string | null;\n};\n\nexport function getExtensionBrowserServerSnapshot(): ExtensionBrowserServerSnapshot {\n if (!state) {\n return { active: false, refCount: 0, key: null };\n }\n return { active: true, refCount: state.refCount, key: state.key };\n}\n\nexport function getExtensionBrowserProvider(): ExtensionBrowserProvider | null {\n return state?.provider ?? null;\n}\n\n/** Shut down the shared listener regardless of remaining ref counts (settings UI stop). */\nexport async function forceShutdownExtensionBrowserServer(): Promise<boolean> {\n return withExclusive(async () => {\n if (!state) return false;\n await state.provider.shutdown();\n state = null;\n return true;\n });\n}\n\nfunction normalizeConfig(config?: ExtensionProviderConfig): Required<ExtensionProviderConfig> {\n return {\n port: config?.port ?? DEFAULT_PORT,\n host: config?.host ?? DEFAULT_HOST,\n connectionTimeout: config?.connectionTimeout ?? DEFAULT_CONNECTION_TIMEOUT,\n commandTimeout: config?.commandTimeout ?? DEFAULT_COMMAND_TIMEOUT,\n };\n}\n\nfunction serverKey(c: Required<ExtensionProviderConfig>): string {\n return `${c.host}:${c.port}`;\n}\n\n/**\n * Increment ref count and return the shared provider plus a one-shot release.\n * First acquire starts the listener; further acquires reuse it (same host:port).\n */\nexport function acquireExtensionBrowserServer(config?: ExtensionProviderConfig): Promise<{\n provider: ExtensionBrowserProvider;\n release: () => Promise<void>;\n}> {\n return withExclusive(async () => {\n const full = normalizeConfig(config);\n const key = serverKey(full);\n\n if (state && state.key !== key) {\n throw new Error(\n `Chrome extension bridge is already listening on ${state.key}; stop it before using ${key}.`,\n );\n }\n\n if (!state) {\n const { ExtensionBrowserProvider } = await import('./extension.js');\n const provider = new ExtensionBrowserProvider(full);\n await provider.start();\n state = { key, provider, refCount: 0 };\n }\n\n state.refCount++;\n let released = false;\n const release = async () => {\n await withExclusive(async () => {\n if (released || !state) return;\n released = true;\n state.refCount--;\n if (state.refCount <= 0) {\n await state.provider.shutdown();\n state = null;\n }\n });\n };\n\n return { provider: state.provider, release };\n });\n}\n"],"mappings":";AAOA,MAAM,eAAe;AACrB,MAAM,eAAe;AACrB,MAAM,6BAA6B;AACnC,MAAM,0BAA0B;AAEhC,IAAI,YAA2B,QAAQ,SAAS;AAEhD,SAAS,cAAiB,IAAkC;CAC1D,MAAM,OAAO;CACb,IAAI;AACJ,aAAY,IAAI,SAAe,YAAY;AACzC,WAAS;GACT;AACF,QAAO,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,OAAO;;AAS9C,IAAI,QAA4B;AAQhC,SAAgB,oCAAoE;AAClF,KAAI,CAAC,MACH,QAAO;EAAE,QAAQ;EAAO,UAAU;EAAG,KAAK;EAAM;AAElD,QAAO;EAAE,QAAQ;EAAM,UAAU,MAAM;EAAU,KAAK,MAAM;EAAK;;AAGnE,SAAgB,8BAA+D;AAC7E,QAAO,OAAO,YAAY;;;AAI5B,eAAsB,sCAAwD;AAC5E,QAAO,cAAc,YAAY;AAC/B,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,MAAM,SAAS,UAAU;AAC/B,UAAQ;AACR,SAAO;GACP;;AAGJ,SAAS,gBAAgB,QAAqE;AAC5F,QAAO;EACL,MAAM,QAAQ,QAAQ;EACtB,MAAM,QAAQ,QAAQ;EACtB,mBAAmB,QAAQ,qBAAqB;EAChD,gBAAgB,QAAQ,kBAAkB;EAC3C;;AAGH,SAAS,UAAU,GAA8C;AAC/D,QAAO,GAAG,EAAE,KAAK,GAAG,EAAE;;;;;;AAOxB,SAAgB,8BAA8B,QAG3C;AACD,QAAO,cAAc,YAAY;EAC/B,MAAM,OAAO,gBAAgB,OAAO;EACpC,MAAM,MAAM,UAAU,KAAK;AAE3B,MAAI,SAAS,MAAM,QAAQ,IACzB,OAAM,IAAI,MACR,mDAAmD,MAAM,IAAI,yBAAyB,IAAI,GAC3F;AAGH,MAAI,CAAC,OAAO;GACV,MAAM,EAAE,6BAA6B,MAAM,OAAO;GAClD,MAAM,WAAW,IAAI,yBAAyB,KAAK;AACnD,SAAM,SAAS,OAAO;AACtB,WAAQ;IAAE;IAAK;IAAU,UAAU;IAAG;;AAGxC,QAAM;EACN,IAAI,WAAW;EACf,MAAM,UAAU,YAAY;AAC1B,SAAM,cAAc,YAAY;AAC9B,QAAI,YAAY,CAAC,MAAO;AACxB,eAAW;AACX,UAAM;AACN,QAAI,MAAM,YAAY,GAAG;AACvB,WAAM,MAAM,SAAS,UAAU;AAC/B,aAAQ;;KAEV;;AAGJ,SAAO;GAAE,UAAU,MAAM;GAAU;GAAS;GAC5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension.js","names":[],"sources":["../../../../src/browser/providers/extension.ts"],"sourcesContent":["/**\n * Extension browser provider — connects to the xopc Chrome Extension via WebSocket.\n *\n * The xopc process starts a WebSocket server; the Chrome Extension connects as a client.\n * Commands are sent over the WS connection and results are returned asynchronously.\n */\n\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('ExtensionProvider');\n\n// ── Protocol types (mirrored from packages/browser-ext/src/protocol.ts) ──\n\nexport type ExtensionAction =\n | 'open' | 'navigate' | 'reload' | 'back' | 'forward' | 'get_url' | 'get_title'\n | 'state' | 'snapshot' | 'screenshot' | 'content'\n | 'evaluate'\n | 'click' | 'type' | 'scroll' | 'wait'\n | 'query_selector' | 'query_selector_all' | 'wait_for_selector'\n | 'mouse_move' | 'mouse_click' | 'mouse_down' | 'mouse_up' | 'mouse_wheel'\n | 'keys' | 'keyboard_type' | 'keyboard_down' | 'keyboard_up' | 'keyboard_insert_text'\n | 'get_bounding_box' | 'get_element_text' | 'get_element_attribute'\n | 'get_elements_count' | 'set_input_files' | 'scroll_into_view'\n | 'set_viewport_size' | 'get_viewport_size'\n | 'network_start' | 'network_events' | 'network_stop'\n | 'dialog'\n | 'get_cookies' | 'set_cookies' | 'clear_cookies'\n | 'close' | 'new_tab' | 'list_tabs'\n | 'cdp'\n | 'ping';\n\nexport interface ExtensionCommand {\n id: string;\n action: ExtensionAction;\n tabId?: number;\n args?: Record<string, unknown>;\n timeout?: number;\n}\n\nexport interface ExtensionResult {\n id: string;\n ok: boolean;\n data?: unknown;\n error?: string;\n durationMs?: number;\n}\n\n// ── Configuration ────────────────────────────────────────────────────\n\nexport interface ExtensionProviderConfig {\n /** WebSocket server port. Default: 19820. */\n port?: number;\n /** Host to bind. Default: 127.0.0.1. */\n host?: string;\n /** Timeout waiting for extension connection (ms). Default: 30000. */\n connectionTimeout?: number;\n /** Default command timeout (ms). Default: 30000. */\n commandTimeout?: number;\n}\n\nconst DEFAULT_PORT = 19820;\nconst DEFAULT_HOST = '127.0.0.1';\nconst DEFAULT_CONNECTION_TIMEOUT = 30_000;\nconst DEFAULT_COMMAND_TIMEOUT = 30_000;\n\n// ── Provider ─────────────────────────────────────────────────────────\n\ninterface PendingRequest {\n resolve: (result: ExtensionResult) => void;\n reject: (error: Error) => void;\n timer: ReturnType<typeof setTimeout>;\n}\n\n/**\n * Manages a WebSocket server that the Chrome Extension connects to.\n * Sends commands and receives results over the connection.\n */\nexport class ExtensionBrowserProvider {\n readonly name = 'extension';\n\n private server: import('http').Server | null = null;\n private wss: unknown = null; // WebSocketServer instance\n private clientWs: unknown = null; // connected client WebSocket\n private pending = new Map<string, PendingRequest>();\n private commandCounter = 0;\n private connected = false;\n private readonly config: Required<ExtensionProviderConfig>;\n private connectionWaiters: Array<{ resolve: () => void; reject: (e: Error) => void }> = [];\n\n constructor(config?: ExtensionProviderConfig) {\n this.config = {\n port: config?.port ?? DEFAULT_PORT,\n host: config?.host ?? DEFAULT_HOST,\n connectionTimeout: config?.connectionTimeout ?? DEFAULT_CONNECTION_TIMEOUT,\n commandTimeout: config?.commandTimeout ?? DEFAULT_COMMAND_TIMEOUT,\n };\n }\n\n /** Start the WebSocket server and wait for the extension to connect. */\n async start(): Promise<void> {\n if (this.server) return;\n\n // Handle CJS/ESM interop: tsx wraps CJS modules so WebSocketServer may need `.default`\n const wsModule: Record<string, unknown> = await import('ws') as never;\n let WssClass = wsModule.WebSocketServer;\n if (typeof WssClass !== 'function') {\n const def = wsModule.default as Record<string, unknown> | undefined;\n WssClass = def?.WebSocketServer ?? def;\n }\n if (typeof WssClass !== 'function') {\n throw new Error('Failed to resolve WebSocketServer from \"ws\" package');\n }\n const WebSocketServer = WssClass as unknown as new (opts: Record<string, unknown>) => unknown;\n const http = await import('node:http');\n\n this.server = http.createServer((_req, res) => {\n res.writeHead(200, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ ok: true, connected: this.connected }));\n });\n\n this.wss = new WebSocketServer({ server: this.server, path: '/browser-ext' });\n\n (this.wss as { on: Function }).on('connection', (ws: unknown) => {\n log.info('Chrome Extension connected');\n this.clientWs = ws;\n this.connected = true;\n\n // Resolve any pending connection waiters\n for (const waiter of this.connectionWaiters) {\n waiter.resolve();\n }\n this.connectionWaiters = [];\n\n (ws as { on: Function }).on('message', (data: Buffer | string) => {\n this._handleMessage(data.toString());\n });\n\n (ws as { on: Function }).on('close', () => {\n log.warn('Chrome Extension disconnected');\n this.clientWs = null;\n this.connected = false;\n // Reject all pending requests\n for (const [id, req] of this.pending) {\n clearTimeout(req.timer);\n req.reject(new Error('Extension disconnected'));\n this.pending.delete(id);\n }\n });\n });\n\n const wssEmitter = this.wss as import('node:events').EventEmitter;\n\n await new Promise<void>((resolve, reject) => {\n let settled = false;\n\n const disposeFailedStart = async () => {\n if (this.wss) {\n try {\n (this.wss as { close: (cb?: () => void) => void }).close();\n } catch {\n /* */\n }\n this.wss = null;\n }\n if (this.server) {\n await new Promise<void>((r) => {\n this.server!.close(() => r());\n });\n this.server = null;\n }\n };\n\n const onStartError = (err: Error) => {\n if (settled) return;\n settled = true;\n this.server!.removeListener('error', onStartError);\n wssEmitter.removeListener('error', onStartError);\n void disposeFailedStart().then(() => reject(err));\n };\n\n const onListening = () => {\n if (settled) return;\n settled = true;\n this.server!.removeListener('error', onStartError);\n wssEmitter.removeListener('error', onStartError);\n\n log.info({ port: this.config.port, host: this.config.host }, 'Extension WS server started');\n\n const onRuntimeError = (err: Error) => {\n log.error({ err }, 'Extension WS bridge runtime error');\n };\n this.server!.on('error', onRuntimeError);\n wssEmitter.on('error', onRuntimeError);\n\n resolve();\n };\n\n // `listen` failures may surface on `http.Server` or on `ws` WebSocketServer; only\n // attaching `server.on('error')` leaves `error` on `wss` unhandled (process crash).\n this.server!.on('error', onStartError);\n wssEmitter.on('error', onStartError);\n this.server!.listen(this.config.port, this.config.host, onListening);\n });\n }\n\n /** Wait for the Chrome Extension to connect. */\n async waitForConnection(timeoutMs?: number): Promise<void> {\n if (this.connected) return;\n\n const timeout = timeoutMs ?? this.config.connectionTimeout;\n return new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n const idx = this.connectionWaiters.findIndex(w => w.resolve === resolve);\n if (idx >= 0) this.connectionWaiters.splice(idx, 1);\n reject(new Error(`Extension connection timeout after ${timeout}ms. Is the Chrome Extension installed and enabled?`));\n }, timeout);\n\n this.connectionWaiters.push({\n resolve: () => { clearTimeout(timer); resolve(); },\n reject: (e) => { clearTimeout(timer); reject(e); },\n });\n });\n }\n\n /** Send a command to the extension and wait for the result. */\n async sendCommand(action: ExtensionAction, args?: Record<string, unknown>, options?: { tabId?: number; timeout?: number }): Promise<ExtensionResult> {\n if (!this.connected || !this.clientWs) {\n throw new Error('Extension not connected. Ensure the Chrome Extension is installed and connected.');\n }\n\n const id = `cmd_${++this.commandCounter}_${Date.now()}`;\n const cmd: ExtensionCommand = {\n id,\n action,\n args,\n tabId: options?.tabId,\n timeout: options?.timeout ?? this.config.commandTimeout,\n };\n\n return new Promise<ExtensionResult>((resolve, reject) => {\n const timer = setTimeout(() => {\n this.pending.delete(id);\n reject(new Error(`Command timeout: ${action} (${cmd.timeout}ms)`));\n }, cmd.timeout!);\n\n this.pending.set(id, { resolve, reject, timer });\n\n try {\n (this.clientWs as { send: Function }).send(JSON.stringify(cmd));\n } catch (e) {\n clearTimeout(timer);\n this.pending.delete(id);\n reject(e instanceof Error ? e : new Error(String(e)));\n }\n });\n }\n\n /** Whether the extension is currently connected. */\n isConnected(): boolean {\n return this.connected;\n }\n\n /** Close the Chrome Extension client without stopping the WebSocket server. */\n disconnectClient(): void {\n if (!this.clientWs) return;\n try {\n (this.clientWs as { close: () => void }).close();\n } catch {\n /* */\n }\n }\n\n /** Shutdown the WebSocket server. */\n async shutdown(): Promise<void> {\n // Reject pending waiters\n for (const waiter of this.connectionWaiters) {\n waiter.reject(new Error('Provider shutting down'));\n }\n this.connectionWaiters = [];\n\n // Reject pending requests\n for (const [id, req] of this.pending) {\n clearTimeout(req.timer);\n req.reject(new Error('Provider shutting down'));\n this.pending.delete(id);\n }\n\n if (this.clientWs) {\n try { (this.clientWs as { close: Function }).close(); } catch { /* */ }\n this.clientWs = null;\n }\n\n if (this.wss) {\n try { (this.wss as { close: Function }).close(); } catch { /* */ }\n this.wss = null;\n }\n\n if (this.server) {\n await new Promise<void>((resolve) => {\n this.server!.close(() => resolve());\n });\n this.server = null;\n }\n\n this.connected = false;\n log.info('Extension provider shut down');\n }\n\n private _handleMessage(raw: string): void {\n try {\n const msg = JSON.parse(raw);\n\n // Status events from extension (fire-and-forget, no pending match)\n if (msg.type === 'status') {\n log.debug(msg, 'Extension status');\n return;\n }\n\n // Network events\n if (msg.type === 'network_event') {\n log.debug({ listenerId: msg.listenerId, eventType: msg.eventType }, 'Network event');\n return;\n }\n\n // Command result\n const id = msg.id as string;\n const pending = this.pending.get(id);\n if (pending) {\n clearTimeout(pending.timer);\n this.pending.delete(id);\n pending.resolve(msg as ExtensionResult);\n }\n } catch (e) {\n log.error({ err: e }, 'Failed to parse extension message');\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"playwright-doctor.js","names":[],"sources":["../../../../src/browser/providers/playwright-doctor.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { stat } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nexport interface PlaywrightChromiumDoctorResult {\n installed: boolean;\n executablePath?: string | null;\n reason?: string;\n}\n\n/** Root directory of the `playwright-core` package (Electron extraResources or node_modules). */\nexport function resolvePlaywrightCoreRoot(): string {\n const envRoot = process.env.XOPC_PLAYWRIGHT_CORE_ROOT?.trim();\n if (envRoot) {\n const pkgJson = join(envRoot, 'package.json');\n if (!existsSync(pkgJson)) {\n throw new Error(`playwright-core package.json not found under XOPC_PLAYWRIGHT_CORE_ROOT (${envRoot})`);\n }\n return envRoot;\n }\n\n const require = createRequire(fileURLToPath(import.meta.url));\n const pkgJson = require.resolve('playwright-core/package.json');\n return dirname(pkgJson);\n}\n\n/** Absolute path to bundled `playwright-core/cli.js` (same revision as runtime). */\nexport function resolvePlaywrightCoreCliPath(): string {\n return join(resolvePlaywrightCoreRoot(), 'cli.js');\n}\n\n/** Load playwright-core (Electron extraResources or node_modules). */\nexport async function loadPlaywrightCoreModule(): Promise<typeof import('playwright-core')> {\n const envRoot = process.env.XOPC_PLAYWRIGHT_CORE_ROOT?.trim();\n if (envRoot) {\n const entry = join(envRoot, 'index.js');\n const require = createRequire(import.meta.url);\n return require(entry) as typeof import('playwright-core');\n }\n return import('playwright-core');\n}\n\n/** Check whether playwright-core's default Chromium revision is on disk. */\nexport async function playwrightChromiumDoctor(): Promise<PlaywrightChromiumDoctorResult> {\n try {\n const pw = await loadPlaywrightCoreModule();\n const chromium = pw.chromium\n ?? (pw as { default?: { chromium?: (typeof pw)['chromium'] } }).default?.chromium;\n if (!chromium?.executablePath) {\n return { installed: false, reason: 'playwright-core missing' };\n }\n\n let executablePath: string;\n try {\n executablePath = chromium.executablePath();\n } catch (err) {\n return {\n installed: false,\n reason: err instanceof Error ? err.message : String(err),\n };\n }\n\n try {\n const st = await stat(executablePath);\n return { installed: st.isFile(), executablePath };\n } catch {\n return {\n installed: false,\n executablePath,\n reason: 'Chromium executable not found on disk',\n };\n }\n } catch (e) {\n return { installed: false, reason: e instanceof Error ? e.message : String(e) };\n }\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,4BAAoC;CAClD,MAAM,UAAU,QAAQ,IAAI,2BAA2B,MAAM;AAC7D,KAAI,SAAS;AAEX,MAAI,CAAC,WADW,KAAK,SAAS,eACP,CAAC,CACtB,OAAM,IAAI,MAAM,2EAA2E,QAAQ,GAAG;AAExG,SAAO;;AAKT,QAAO,QAFS,cAAc,cAAc,OAAO,KAAK,IAAI,CACrC,CAAC,QAAQ,+BACV,CAAC;;;AAIzB,SAAgB,+BAAuC;AACrD,QAAO,KAAK,2BAA2B,EAAE,SAAS;;;AAIpD,eAAsB,2BAAsE;CAC1F,MAAM,UAAU,QAAQ,IAAI,2BAA2B,MAAM;AAC7D,KAAI,SAAS;EACX,MAAM,QAAQ,KAAK,SAAS,WAAW;AAEvC,SADgB,cAAc,OAAO,KAAK,IAC5B,CAAC,MAAM;;AAEvB,QAAO,OAAO;;;AAIhB,eAAsB,2BAAoE;AACxF,KAAI;EACF,MAAM,KAAK,MAAM,0BAA0B;EAC3C,MAAM,WAAW,GAAG,YACd,GAA4D,SAAS;AAC3E,MAAI,CAAC,UAAU,eACb,QAAO;GAAE,WAAW;GAAO,QAAQ;GAA2B;EAGhE,IAAI;AACJ,MAAI;AACF,oBAAiB,SAAS,gBAAgB;WACnC,KAAK;AACZ,UAAO;IACL,WAAW;IACX,QAAQ,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;IACzD;;AAGH,MAAI;AAEF,UAAO;IAAE,YAAW,MADH,KAAK,eAAe,EACd,QAAQ;IAAE;IAAgB;UAC3C;AACN,UAAO;IACL,WAAW;IACX;IACA,QAAQ;IACT;;UAEI,GAAG;AACV,SAAO;GAAE,WAAW;GAAO,QAAQ,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;GAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"playwright-install.js","names":[],"sources":["../../../../src/browser/providers/playwright-install.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\n\nimport type { BrowserInstallProgress } from '../install-progress.js';\n\nimport {\n playwrightChromiumDoctor,\n resolvePlaywrightCoreCliPath,\n type PlaywrightChromiumDoctorResult,\n} from './playwright-doctor.js';\n\nconst DEFAULT_TIMEOUT_MS = 10 * 60 * 1000;\n\nexport type PlaywrightInstallResult = PlaywrightChromiumDoctorResult;\n\nfunction parsePercentFromLine(line: string): number | null {\n const match = line.match(/(\\d{1,3})%/);\n if (!match) return null;\n const n = Number(match[1]);\n return Number.isFinite(n) ? Math.min(100, Math.max(0, n)) : null;\n}\n\n/**\n * Install Chromium for the bundled `playwright-core` revision (not `npx playwright`).\n */\nexport async function runPlaywrightChromiumInstallWithProgress(opts: {\n onProgress: (progress: BrowserInstallProgress) => void | Promise<void>;\n timeoutMs?: number;\n signal?: AbortSignal;\n}): Promise<void> {\n const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const cliPath = resolvePlaywrightCoreCliPath();\n const stdoutChunks: string[] = [];\n const stderrChunks: string[] = [];\n\n if (opts.signal?.aborted) {\n throw new Error('Install cancelled');\n }\n\n await opts.onProgress({\n phase: 'starting',\n message: 'Starting Playwright Chromium install (playwright-core)',\n });\n\n await new Promise<void>((resolve, reject) => {\n const child = spawn(process.execPath, [cliPath, 'install', 'chromium'], {\n stdio: ['ignore', 'pipe', 'pipe'],\n env: process.env,\n });\n\n const timer = setTimeout(() => {\n child.kill('SIGTERM');\n reject(new Error(`Playwright install timed out after ${Math.round(timeoutMs / 1000)}s`));\n }, timeoutMs);\n\n const onAbort = () => {\n clearTimeout(timer);\n child.kill('SIGTERM');\n reject(new Error('Install cancelled'));\n };\n opts.signal?.addEventListener('abort', onAbort, { once: true });\n\n const emitLine = (source: 'stdout' | 'stderr', line: string) => {\n const trimmed = line.trim();\n if (!trimmed) return;\n if (source === 'stdout') stdoutChunks.push(trimmed);\n else stderrChunks.push(trimmed);\n const percent = parsePercentFromLine(trimmed);\n void opts.onProgress({\n phase: 'running',\n message: trimmed,\n line: trimmed,\n source,\n percent,\n });\n };\n\n let stdoutBuf = '';\n let stderrBuf = '';\n\n child.stdout?.on('data', (chunk: Buffer) => {\n stdoutBuf += chunk.toString();\n let idx: number;\n while ((idx = stdoutBuf.indexOf('\\n')) !== -1) {\n const line = stdoutBuf.slice(0, idx);\n stdoutBuf = stdoutBuf.slice(idx + 1);\n emitLine('stdout', line);\n }\n });\n\n child.stderr?.on('data', (chunk: Buffer) => {\n stderrBuf += chunk.toString();\n let idx: number;\n while ((idx = stderrBuf.indexOf('\\n')) !== -1) {\n const line = stderrBuf.slice(0, idx);\n stderrBuf = stderrBuf.slice(idx + 1);\n emitLine('stderr', line);\n }\n });\n\n child.once('error', (err) => {\n clearTimeout(timer);\n opts.signal?.removeEventListener('abort', onAbort);\n reject(err);\n });\n\n child.once('close', (code, signal) => {\n clearTimeout(timer);\n opts.signal?.removeEventListener('abort', onAbort);\n if (stdoutBuf.trim()) emitLine('stdout', stdoutBuf);\n if (stderrBuf.trim()) emitLine('stderr', stderrBuf);\n\n if (code === 0) {\n resolve();\n return;\n }\n\n if (opts.signal?.aborted) {\n reject(new Error('Install cancelled'));\n return;\n }\n\n const reason = signal ? `signal ${signal}` : `exit code ${code ?? 'unknown'}`;\n const detail = [stderrChunks.join('\\n'), stdoutChunks.join('\\n')]\n .filter((part) => part.trim())\n .join('\\n')\n .slice(0, 4000);\n reject(new Error(detail || `Playwright install failed with ${reason}`));\n });\n });\n\n await opts.onProgress({ phase: 'ready', message: 'Chromium installed', percent: 100 });\n}\n\n/** Install Chromium and return doctor status for the bundled playwright-core revision. */\nexport async function installPlaywrightChromium(opts?: {\n onProgress?: (progress: BrowserInstallProgress) => void | Promise<void>;\n timeoutMs?: number;\n}): Promise<PlaywrightInstallResult> {\n await runPlaywrightChromiumInstallWithProgress({\n onProgress: opts?.onProgress ?? (() => {}),\n timeoutMs: opts?.timeoutMs,\n });\n const doctor = await playwrightChromiumDoctor();\n if (!doctor.installed) {\n throw new Error(doctor.reason ?? 'Chromium not found after install');\n }\n return doctor;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readiness.js","names":[],"sources":["../../../src/browser/readiness.ts"],"sourcesContent":["/**\n * Backend readiness preflight for the `browser_use` tool.\n *\n * Reuses the same doctor functions that power the Settings → Browser page so\n * the agent never tries to launch a backend that the UI already knows is\n * broken. Produces a structured signal the chat surface can render as a\n * \"Setup browser\" card instead of a bare error string.\n */\n\nimport type { Config } from '../config/schema.js';\n\nimport { resolveBrowserBackendFromConfig } from './backend-from-config.js';\nimport type { CloakBrowserConfig, ExtensionConnectionConfig } from './providers/types.js';\nimport { createLogger } from '../utils/logger.js';\n\nconst log = createLogger('browser-readiness');\n\nexport type BrowserBackendKind =\n | 'extension'\n | 'local'\n | 'cloakbrowser'\n | 'cdp'\n | 'cloud';\n\nexport type BrowserNotReadyReason =\n | 'extension_not_installed'\n | 'extension_bridge_offline'\n | 'extension_not_connected'\n | 'local_chromium_missing'\n | 'cloakbrowser_not_installed'\n | 'cdp_unreachable'\n | 'cloud_api_key_missing';\n\nexport interface BrowserSetupHint {\n backend: BrowserBackendKind;\n reason: BrowserNotReadyReason;\n /** Raw probe diagnostic; surfaced behind a disclosure for debugging. */\n detail?: string;\n /** Deep link into Settings → Browser focused on the right backend tab. */\n deepLink: string;\n}\n\nexport class BrowserNotReadyError extends Error {\n constructor(public readonly hint: BrowserSetupHint) {\n super(`Browser backend \"${hint.backend}\" not ready: ${hint.reason}`);\n this.name = 'BrowserNotReadyError';\n }\n}\n\n/** Map backend → settings tab id (matches `BROWSER_BACKEND_TABS` on the web side). */\nexport function buildBrowserSetupDeepLink(backend: BrowserBackendKind): string {\n return `/settings/agent-browser?tab=${backend}`;\n}\n\nfunction hint(\n backend: BrowserBackendKind,\n reason: BrowserNotReadyReason,\n detail?: string,\n): BrowserSetupHint {\n return { backend, reason, detail, deepLink: buildBrowserSetupDeepLink(backend) };\n}\n\nasync function checkExtension(config: ExtensionConnectionConfig | undefined): Promise<BrowserSetupHint | null> {\n try {\n const { browserExtDoctor } = await import('./providers/browser-ext-install.js');\n const doctor = await browserExtDoctor();\n if (!doctor.installed) {\n return hint('extension', 'extension_not_installed', 'extension artifacts not on disk');\n }\n } catch (e) {\n return hint('extension', 'extension_not_installed', e instanceof Error ? e.message : String(e));\n }\n\n const host = config?.host?.trim() || '127.0.0.1';\n const port =\n typeof config?.port === 'number' && config.port >= 1024 && config.port <= 65535\n ? Math.floor(config.port)\n : 19820;\n\n try {\n const { getExtensionBrowserServerSnapshot } = await import(\n './providers/extension-ws-acquire.js'\n );\n const snapshot = getExtensionBrowserServerSnapshot();\n if (snapshot.active) {\n // Probe the HTTP `/` health endpoint to read `.connected`.\n try {\n const res = await fetch(`http://${host}:${port}/`, {\n signal: AbortSignal.timeout(2000),\n });\n const data = (await res.json().catch(() => null)) as { connected?: boolean } | null;\n if (data?.connected) return null;\n return hint(\n 'extension',\n 'extension_not_connected',\n 'WS bridge is listening but no Chrome Extension client connected yet',\n );\n } catch {\n // Bridge claims active but health probe failed — treat as offline.\n return hint('extension', 'extension_bridge_offline', `health probe failed on ${host}:${port}`);\n }\n }\n return hint('extension', 'extension_bridge_offline', `bridge not started on ${host}:${port}`);\n } catch (e) {\n return hint(\n 'extension',\n 'extension_bridge_offline',\n e instanceof Error ? e.message : String(e),\n );\n }\n}\n\nasync function checkLocal(): Promise<BrowserSetupHint | null> {\n try {\n const { playwrightChromiumDoctor } = await import('./providers/playwright-doctor.js');\n const doctor = await playwrightChromiumDoctor();\n if (!doctor.installed) {\n return hint(\n 'local',\n 'local_chromium_missing',\n doctor.reason ?? 'Chromium binary not found on disk',\n );\n }\n return null;\n } catch (e) {\n return hint('local', 'local_chromium_missing', e instanceof Error ? e.message : String(e));\n }\n}\n\nasync function checkCloak(config: CloakBrowserConfig | undefined): Promise<BrowserSetupHint | null> {\n try {\n const { cloakBrowserDoctor } = await import('./providers/cloakbrowser.js');\n const doctor = await cloakBrowserDoctor({\n ...(config?.cacheDir ? { cacheDir: config.cacheDir } : {}),\n ...(config?.binaryPath ? { binaryPath: config.binaryPath } : {}),\n });\n if (!doctor.installed) {\n return hint(\n 'cloakbrowser',\n 'cloakbrowser_not_installed',\n `CloakBrowser binary not found (cacheDir=${doctor.cacheDir})`,\n );\n }\n return null;\n } catch (e) {\n return hint(\n 'cloakbrowser',\n 'cloakbrowser_not_installed',\n e instanceof Error ? e.message : String(e),\n );\n }\n}\n\nasync function checkCdp(cdpUrl: string): Promise<BrowserSetupHint | null> {\n let httpBase: URL;\n try {\n httpBase = new URL(cdpUrl);\n httpBase.protocol = httpBase.protocol === 'wss:' ? 'https:' : 'http:';\n httpBase.pathname = '/json/version';\n httpBase.search = '';\n httpBase.hash = '';\n } catch (e) {\n return hint('cdp', 'cdp_unreachable', `invalid cdpUrl: ${e instanceof Error ? e.message : String(e)}`);\n }\n try {\n const res = await fetch(httpBase.toString(), { signal: AbortSignal.timeout(2000) });\n if (!res.ok) {\n return hint('cdp', 'cdp_unreachable', `HTTP ${res.status} from ${httpBase.toString()}`);\n }\n return null;\n } catch (e) {\n return hint('cdp', 'cdp_unreachable', e instanceof Error ? e.message : String(e));\n }\n}\n\nfunction checkCloud(params: {\n apiKey?: string;\n providerType: 'browserbase' | 'browser-use';\n}): BrowserSetupHint | null {\n if (params.apiKey?.trim()) return null;\n const envKey =\n params.providerType === 'browserbase'\n ? process.env.BROWSERBASE_API_KEY?.trim()\n : process.env.BROWSER_USE_API_KEY?.trim();\n if (envKey) return null;\n return hint(\n 'cloud',\n 'cloud_api_key_missing',\n `no API key configured for ${params.providerType}`,\n );\n}\n\n/**\n * Probe the currently-configured browser backend. Returns `null` when ready.\n *\n * Probe budget is small (filesystem stats + loopback fetches with a 2s timeout)\n * so it's safe to call before every `browser_use` invocation — but callers\n * typically cache the result for a few seconds to handle bursts.\n */\nexport async function checkBrowserReadiness(\n cfg: Config | undefined,\n): Promise<BrowserNotReadyError | null> {\n const backend = resolveBrowserBackendFromConfig(cfg);\n let probe: BrowserSetupHint | null = null;\n try {\n switch (backend.mode) {\n case 'extension':\n probe = await checkExtension(backend.config);\n break;\n case 'local':\n probe = await checkLocal();\n break;\n case 'cloakbrowser':\n probe = await checkCloak(backend.config);\n break;\n case 'cdp':\n probe = await checkCdp(backend.config.wsEndpoint);\n break;\n case 'cloud':\n probe = checkCloud({ providerType: backend.config.type, apiKey: backend.config.apiKey });\n break;\n }\n } catch (e) {\n log.warn({ err: e, backend: backend.mode }, 'Readiness probe threw unexpectedly');\n return null;\n }\n return probe ? new BrowserNotReadyError(probe) : null;\n}\n"],"mappings":";;;;aAakD;AAElD,MAAM,MAAM,aAAa,oBAAoB;AA2B7C,IAAa,uBAAb,cAA0C,MAAM;CAC9C,YAAY,MAAwC;AAClD,QAAM,oBAAoB,KAAK,QAAQ,eAAe,KAAK,SAAS;AAD1C,OAAA,OAAA;AAE1B,OAAK,OAAO;;;;AAKhB,SAAgB,0BAA0B,SAAqC;AAC7E,QAAO,+BAA+B;;AAGxC,SAAS,KACP,SACA,QACA,QACkB;AAClB,QAAO;EAAE;EAAS;EAAQ;EAAQ,UAAU,0BAA0B,QAAQ;EAAE;;AAGlF,eAAe,eAAe,QAAiF;AAC7G,KAAI;EACF,MAAM,EAAE,qBAAqB,MAAM,OAAO;AAE1C,MAAI,EAAC,MADgB,kBAAkB,EAC3B,UACV,QAAO,KAAK,aAAa,2BAA2B,kCAAkC;UAEjF,GAAG;AACV,SAAO,KAAK,aAAa,2BAA2B,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE,CAAC;;CAGjG,MAAM,OAAO,QAAQ,MAAM,MAAM,IAAI;CACrC,MAAM,OACJ,OAAO,QAAQ,SAAS,YAAY,OAAO,QAAQ,QAAQ,OAAO,QAAQ,QACtE,KAAK,MAAM,OAAO,KAAK,GACvB;AAEN,KAAI;EACF,MAAM,EAAE,sCAAsC,MAAM,OAClD;AAGF,MADiB,mCACL,CAAC,OAEX,KAAI;AAKF,QAAI,OADgB,MAHF,MAAM,UAAU,KAAK,GAAG,KAAK,IAAI,EACjD,QAAQ,YAAY,QAAQ,IAAK,EAClC,CAAC,EACsB,MAAM,CAAC,YAAY,KAAK,GACtC,UAAW,QAAO;AAC5B,UAAO,KACL,aACA,2BACA,sEACD;UACK;AAEN,UAAO,KAAK,aAAa,4BAA4B,0BAA0B,KAAK,GAAG,OAAO;;AAGlG,SAAO,KAAK,aAAa,4BAA4B,yBAAyB,KAAK,GAAG,OAAO;UACtF,GAAG;AACV,SAAO,KACL,aACA,4BACA,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE,CAC3C;;;AAIL,eAAe,aAA+C;AAC5D,KAAI;EACF,MAAM,EAAE,6BAA6B,MAAM,OAAO;EAClD,MAAM,SAAS,MAAM,0BAA0B;AAC/C,MAAI,CAAC,OAAO,UACV,QAAO,KACL,SACA,0BACA,OAAO,UAAU,oCAClB;AAEH,SAAO;UACA,GAAG;AACV,SAAO,KAAK,SAAS,0BAA0B,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE,CAAC;;;AAI9F,eAAe,WAAW,QAA0E;AAClG,KAAI;EACF,MAAM,EAAE,uBAAuB,MAAM,OAAO;EAC5C,MAAM,SAAS,MAAM,mBAAmB;GACtC,GAAI,QAAQ,WAAW,EAAE,UAAU,OAAO,UAAU,GAAG,EAAE;GACzD,GAAI,QAAQ,aAAa,EAAE,YAAY,OAAO,YAAY,GAAG,EAAE;GAChE,CAAC;AACF,MAAI,CAAC,OAAO,UACV,QAAO,KACL,gBACA,8BACA,2CAA2C,OAAO,SAAS,GAC5D;AAEH,SAAO;UACA,GAAG;AACV,SAAO,KACL,gBACA,8BACA,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE,CAC3C;;;AAIL,eAAe,SAAS,QAAkD;CACxE,IAAI;AACJ,KAAI;AACF,aAAW,IAAI,IAAI,OAAO;AAC1B,WAAS,WAAW,SAAS,aAAa,SAAS,WAAW;AAC9D,WAAS,WAAW;AACpB,WAAS,SAAS;AAClB,WAAS,OAAO;UACT,GAAG;AACV,SAAO,KAAK,OAAO,mBAAmB,mBAAmB,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE,GAAG;;AAExG,KAAI;EACF,MAAM,MAAM,MAAM,MAAM,SAAS,UAAU,EAAE,EAAE,QAAQ,YAAY,QAAQ,IAAK,EAAE,CAAC;AACnF,MAAI,CAAC,IAAI,GACP,QAAO,KAAK,OAAO,mBAAmB,QAAQ,IAAI,OAAO,QAAQ,SAAS,UAAU,GAAG;AAEzF,SAAO;UACA,GAAG;AACV,SAAO,KAAK,OAAO,mBAAmB,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE,CAAC;;;AAIrF,SAAS,WAAW,QAGQ;AAC1B,KAAI,OAAO,QAAQ,MAAM,CAAE,QAAO;AAKlC,KAHE,OAAO,iBAAiB,gBACpB,QAAQ,IAAI,qBAAqB,MAAM,GACvC,QAAQ,IAAI,qBAAqB,MAAM,CACjC,QAAO;AACnB,QAAO,KACL,SACA,yBACA,6BAA6B,OAAO,eACrC;;;;;;;;;AAUH,eAAsB,sBACpB,KACsC;CACtC,MAAM,UAAU,gCAAgC,IAAI;CACpD,IAAI,QAAiC;AACrC,KAAI;AACF,UAAQ,QAAQ,MAAhB;GACE,KAAK;AACH,YAAQ,MAAM,eAAe,QAAQ,OAAO;AAC5C;GACF,KAAK;AACH,YAAQ,MAAM,YAAY;AAC1B;GACF,KAAK;AACH,YAAQ,MAAM,WAAW,QAAQ,OAAO;AACxC;GACF,KAAK;AACH,YAAQ,MAAM,SAAS,QAAQ,OAAO,WAAW;AACjD;GACF,KAAK;AACH,YAAQ,WAAW;KAAE,cAAc,QAAQ,OAAO;KAAM,QAAQ,QAAQ,OAAO;KAAQ,CAAC;AACxF;;UAEG,GAAG;AACV,MAAI,KAAK;GAAE,KAAK;GAAG,SAAS,QAAQ;GAAM,EAAE,qCAAqC;AACjF,SAAO;;AAET,QAAO,QAAQ,IAAI,qBAAqB,MAAM,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas.js","names":[],"sources":["../../../src/browser/schemas.ts"],"sourcesContent":["import { Type } from '@sinclair/typebox';\n\nexport const BrowserNavigateSchema = Type.Object({\n url: Type.String({ description: 'URL to navigate to' }),\n waitFor: Type.Optional(\n Type.Union(\n [Type.Literal('load'), Type.Literal('domcontentloaded'), Type.Literal('networkidle')],\n {\n description: 'Wait condition (default: domcontentloaded)',\n },\n ),\n ),\n});\n\nexport const BrowserSnapshotSchema = Type.Object({\n selector: Type.Optional(\n Type.String({ description: 'CSS selector to snapshot a specific element. Omit for full page.' }),\n ),\n maxLength: Type.Optional(\n Type.Number({ description: 'Max characters in snapshot (default: 30000)', default: 30000 }),\n ),\n});\n\nexport const BrowserClickSchema = Type.Object({\n selector: Type.Optional(Type.String({ description: 'CSS selector of the element to click' })),\n text: Type.Optional(\n Type.String({ description: 'Visible text of the element to click (uses getByText)' }),\n ),\n role: Type.Optional(\n Type.String({\n description: 'ARIA role and accessible name, e.g. \"button:Submit\" (uses getByRole)',\n }),\n ),\n});\n\nexport const BrowserTypeSchema = Type.Object({\n selector: Type.Optional(Type.String({ description: 'CSS selector of the input field' })),\n label: Type.Optional(Type.String({ description: 'Label text of the input field (uses getByLabel)' })),\n text: Type.String({ description: 'Text to type into the field' }),\n pressEnter: Type.Optional(\n Type.Boolean({ description: 'Press Enter after typing (default: false)' }),\n ),\n});\n\nexport const BrowserScrollSchema = Type.Object({\n direction: Type.Union([Type.Literal('down'), Type.Literal('up')], {\n description: 'Scroll direction',\n }),\n amount: Type.Optional(\n Type.Number({ description: 'Pixels to scroll (default: 500)', default: 500 }),\n ),\n});\n\nexport const BrowserScreenshotSchema = Type.Object({\n selector: Type.Optional(\n Type.String({ description: 'CSS selector to screenshot a specific element. Omit for full page.' }),\n ),\n description: Type.Optional(\n Type.String({ description: 'What to look for in the screenshot (passed to the vision model)' }),\n ),\n});\n\nexport const BrowserBackSchema = Type.Object({\n waitFor: Type.Optional(\n Type.Union(\n [Type.Literal('load'), Type.Literal('domcontentloaded'), Type.Literal('networkidle')],\n { description: 'Wait condition after going back (default: domcontentloaded)' },\n ),\n ),\n});\n\nexport const BrowserPressSchema = Type.Object({\n key: Type.String({\n description:\n 'Key or key combination to press, e.g. \"Enter\", \"Tab\", \"Escape\", \"ArrowDown\", \"Control+A\", \"Shift+Enter\"',\n }),\n});\n\nexport const BrowserConsoleSchema = Type.Object({\n javascript: Type.Optional(\n Type.String({\n description:\n 'JavaScript expression to evaluate in the page context. The return value is serialized to JSON.',\n }),\n ),\n});\n\nexport const BrowserGetImagesSchema = Type.Object({\n selector: Type.Optional(\n Type.String({ description: 'CSS selector to limit image extraction scope. Omit for full page.' }),\n ),\n maxImages: Type.Optional(\n Type.Number({ description: 'Max images to return (default: 20)', default: 20 }),\n ),\n});\n\nexport const BrowserCloseSchema = Type.Object({});\n\nexport const BrowserVisionSchema = Type.Object({\n prompt: Type.Optional(\n Type.String({\n description:\n 'What to analyze in the screenshot (default: describe the visible UI state). Requires an available image model.',\n }),\n ),\n selector: Type.Optional(\n Type.String({ description: 'CSS selector to screenshot a specific element. Omit for full page.' }),\n ),\n});\n\nexport const BrowserDialogSchema = Type.Object({\n action: Type.Union([Type.Literal('accept'), Type.Literal('dismiss')], {\n description: 'Whether to accept or dismiss the dialog',\n }),\n promptText: Type.Optional(\n Type.String({ description: 'Text to enter into a prompt() dialog before accepting' }),\n ),\n});\n\nexport const BrowserCdpSchema = Type.Object({\n method: Type.String({\n description: 'CDP method name, e.g. \"Runtime.evaluate\", \"Page.captureScreenshot\"',\n }),\n params: Type.Optional(\n Type.Record(Type.String(), Type.Unknown(), {\n description: 'CDP method parameters as a JSON object',\n }),\n ),\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-lifecycle.js","names":[],"sources":["../../../src/browser/session-lifecycle.ts"],"sourcesContent":["import type { BrowserContext, Page } from 'playwright-core';\n\nimport { createLogger } from '../utils/logger.js';\n\nconst log = createLogger('BrowserLifecycle');\n\n// ── Session Recording (Playwright Tracing) ──────────────────────────────────\n\nexport interface TracingOptions {\n /** Enable session recording. Default: false. */\n enabled: boolean;\n /** Directory to save trace files. */\n outputDir: string;\n /** Include screenshots in trace. Default: true. */\n screenshots?: boolean;\n /** Include DOM snapshots in trace. Default: false (large files). */\n snapshots?: boolean;\n}\n\nconst DEFAULT_TRACING: TracingOptions = {\n enabled: false,\n outputDir: '/tmp/xopc-traces',\n screenshots: true,\n snapshots: false,\n};\n\n/**\n * Start Playwright tracing on a browser context for session recording.\n * Captures network, actions, and optionally screenshots/snapshots.\n */\nexport async function startTracing(\n context: BrowserContext,\n options?: Partial<TracingOptions>,\n): Promise<void> {\n const opts = { ...DEFAULT_TRACING, ...options };\n if (!opts.enabled) return;\n\n try {\n await context.tracing.start({\n screenshots: opts.screenshots ?? true,\n snapshots: opts.snapshots ?? false,\n });\n log.info({ outputDir: opts.outputDir }, 'Session tracing started');\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n log.warn({ errorMessage: msg }, `Failed to start tracing: ${msg}`);\n }\n}\n\n/**\n * Stop tracing and save the trace file.\n *\n * @returns Path to the saved trace file, or undefined if tracing was not active.\n */\nexport async function stopTracing(\n context: BrowserContext,\n options?: Partial<TracingOptions>,\n): Promise<string | undefined> {\n const opts = { ...DEFAULT_TRACING, ...options };\n if (!opts.enabled) return undefined;\n\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-');\n const tracePath = `${opts.outputDir}/trace-${timestamp}.zip`;\n\n try {\n const { mkdir } = await import('node:fs/promises');\n await mkdir(opts.outputDir, { recursive: true });\n await context.tracing.stop({ path: tracePath });\n log.info({ tracePath }, 'Session trace saved');\n return tracePath;\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n log.warn({ errorMessage: msg }, `Failed to save trace: ${msg}`);\n return undefined;\n }\n}\n\n// ── Bot Detection Warning ───────────────────────────────────────────────────\n\n/**\n * Known bot detection indicators in page content or response headers.\n * When detected, we log a warning so the agent/user can adjust strategy.\n */\nconst BOT_DETECTION_PATTERNS = [\n // Common CAPTCHA / challenge pages\n /captcha/i,\n /recaptcha/i,\n /hcaptcha/i,\n /cloudflare.*challenge/i,\n /please verify you are (a )?human/i,\n /access denied/i,\n /403 forbidden/i,\n /blocked.*bot/i,\n /automated.*browser/i,\n /unusual.*traffic/i,\n // Additional detection signals (aligned with CloakBrowser fingerprint checks)\n /just a moment/i,\n /checking your browser/i,\n /security check/i,\n /verify.*not.*robot/i,\n /turnstile/i,\n /browser.*verification/i,\n];\n\nexport interface BotDetectionResult {\n detected: boolean;\n indicators: string[];\n}\n\n/**\n * Check a page for signs of bot detection / CAPTCHA challenge.\n * Returns indicators found. Non-blocking — for advisory logging only.\n */\nexport async function checkBotDetection(page: Page): Promise<BotDetectionResult> {\n const indicators: string[] = [];\n\n try {\n const title = await page.title();\n const bodyText = await page.evaluate(\n () => (globalThis as unknown as { document: { body: { innerText: string } } }).document.body.innerText.slice(0, 2000),\n ).catch(() => '');\n\n const combined = `${title}\\n${bodyText}`;\n\n for (const pattern of BOT_DETECTION_PATTERNS) {\n const match = combined.match(pattern);\n if (match) {\n indicators.push(match[0]);\n }\n }\n\n if (indicators.length > 0) {\n log.warn(\n { url: page.url(), indicators },\n `Bot detection likely: ${indicators.join(', ')}`,\n );\n }\n } catch {\n // Page may be navigating or closed — ignore.\n }\n\n return { detected: indicators.length > 0, indicators };\n}\n\n// ── Orphan Process Cleanup ──────────────────────────────────────────────────\n\n/**\n * Kill orphan Chromium processes that may have been left behind by crashed sessions.\n *\n * This is a best-effort cleanup. On macOS/Linux, searches for chromium/chrome\n * processes with the `--no-sandbox` flag (which xopc adds to all launches).\n *\n * @returns Number of processes killed.\n */\nexport async function cleanupOrphanProcesses(): Promise<number> {\n const { exec } = await import('node:child_process');\n const { promisify } = await import('node:util');\n const execAsync = promisify(exec);\n\n let killed = 0;\n try {\n // Find chromium processes launched with our specific args\n const { stdout } = await execAsync(\n 'ps aux | grep -E \"chromium|chrome\" | grep \"no-sandbox\" | grep -v grep',\n ).catch(() => ({ stdout: '' }));\n\n const lines = stdout.trim().split('\\n').filter(Boolean);\n\n for (const line of lines) {\n const parts = line.trim().split(/\\s+/);\n const pid = Number(parts[1]);\n if (!pid || pid === process.pid) continue;\n\n try {\n process.kill(pid, 'SIGTERM');\n killed++;\n log.info({ pid }, 'Killed orphan browser process');\n } catch {\n // Process may have already exited\n }\n }\n\n if (killed > 0) {\n log.info({ killed }, `Cleaned up ${killed} orphan browser process(es)`);\n }\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n log.debug({ errorMessage: msg }, 'Orphan cleanup skipped or failed');\n }\n\n return killed;\n}\n"],"mappings":";;;aAEkD;AAElD,MAAM,MAAM,aAAa,mBAAmB;AAe5C,MAAM,kBAAkC;CACtC,SAAS;CACT,WAAW;CACX,aAAa;CACb,WAAW;CACZ;;;;;AAMD,eAAsB,aACpB,SACA,SACe;CACf,MAAM,OAAO;EAAE,GAAG;EAAiB,GAAG;EAAS;AAC/C,KAAI,CAAC,KAAK,QAAS;AAEnB,KAAI;AACF,QAAM,QAAQ,QAAQ,MAAM;GAC1B,aAAa,KAAK,eAAe;GACjC,WAAW,KAAK,aAAa;GAC9B,CAAC;AACF,MAAI,KAAK,EAAE,WAAW,KAAK,WAAW,EAAE,0BAA0B;UAC3D,GAAG;EACV,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;AACtD,MAAI,KAAK,EAAE,cAAc,KAAK,EAAE,4BAA4B,MAAM;;;;;;;;AAStE,eAAsB,YACpB,SACA,SAC6B;CAC7B,MAAM,OAAO;EAAE,GAAG;EAAiB,GAAG;EAAS;AAC/C,KAAI,CAAC,KAAK,QAAS,QAAO,KAAA;CAE1B,MAAM,6BAAY,IAAI,MAAM,EAAC,aAAa,CAAC,QAAQ,SAAS,IAAI;CAChE,MAAM,YAAY,GAAG,KAAK,UAAU,SAAS,UAAU;AAEvD,KAAI;EACF,MAAM,EAAE,UAAU,MAAM,OAAO;AAC/B,QAAM,MAAM,KAAK,WAAW,EAAE,WAAW,MAAM,CAAC;AAChD,QAAM,QAAQ,QAAQ,KAAK,EAAE,MAAM,WAAW,CAAC;AAC/C,MAAI,KAAK,EAAE,WAAW,EAAE,sBAAsB;AAC9C,SAAO;UACA,GAAG;EACV,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;AACtD,MAAI,KAAK,EAAE,cAAc,KAAK,EAAE,yBAAyB,MAAM;AAC/D;;;;;;;AAUJ,MAAM,yBAAyB;CAE7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACA;CACD;;;;;AAWD,eAAsB,kBAAkB,MAAyC;CAC/E,MAAM,aAAuB,EAAE;AAE/B,KAAI;EAMF,MAAM,WAAW,GAAG,MALA,KAAK,OAAO,CAKN,IAAI,MAJP,KAAK,eACnB,WAAwE,SAAS,KAAK,UAAU,MAAM,GAAG,IAAK,CACtH,CAAC,YAAY,GAAG;AAIjB,OAAK,MAAM,WAAW,wBAAwB;GAC5C,MAAM,QAAQ,SAAS,MAAM,QAAQ;AACrC,OAAI,MACF,YAAW,KAAK,MAAM,GAAG;;AAI7B,MAAI,WAAW,SAAS,EACtB,KAAI,KACF;GAAE,KAAK,KAAK,KAAK;GAAE;GAAY,EAC/B,yBAAyB,WAAW,KAAK,KAAK,GAC/C;SAEG;AAIR,QAAO;EAAE,UAAU,WAAW,SAAS;EAAG;EAAY;;;;;;;;;;AAaxD,eAAsB,yBAA0C;CAC9D,MAAM,EAAE,SAAS,MAAM,OAAO;CAC9B,MAAM,EAAE,cAAc,MAAM,OAAO;CACnC,MAAM,YAAY,UAAU,KAAK;CAEjC,IAAI,SAAS;AACb,KAAI;EAEF,MAAM,EAAE,WAAW,MAAM,UACvB,4EACD,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE;EAE/B,MAAM,QAAQ,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,OAAO,QAAQ;AAEvD,OAAK,MAAM,QAAQ,OAAO;GACxB,MAAM,QAAQ,KAAK,MAAM,CAAC,MAAM,MAAM;GACtC,MAAM,MAAM,OAAO,MAAM,GAAG;AAC5B,OAAI,CAAC,OAAO,QAAQ,QAAQ,IAAK;AAEjC,OAAI;AACF,YAAQ,KAAK,KAAK,UAAU;AAC5B;AACA,QAAI,KAAK,EAAE,KAAK,EAAE,gCAAgC;WAC5C;;AAKV,MAAI,SAAS,EACX,KAAI,KAAK,EAAE,QAAQ,EAAE,cAAc,OAAO,6BAA6B;UAElE,GAAG;EACV,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;AACtD,MAAI,MAAM,EAAE,cAAc,KAAK,EAAE,mCAAmC;;AAGtE,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot-helpers.js","names":[],"sources":["../../../src/browser/snapshot-helpers.ts"],"sourcesContent":["/**\n * Snapshot intelligence helpers — structure-aware truncation for ARIA snapshots.\n *\n * ARIA snapshots use indentation-based YAML-like trees. Naive character-based\n * truncation can split in the middle of a node, making the output confusing.\n * These helpers preserve tree-node boundaries and provide metadata.\n */\n\n/**\n * Truncate an ARIA snapshot at a line boundary, preserving complete tree nodes.\n *\n * Strategy:\n * 1. If the text is within `maxLength`, return as-is.\n * 2. Find the last newline before `maxLength`.\n * 3. Walk backwards to find a line at indentation level ≤ 2 (top-level nodes),\n * ensuring we don't cut inside a deeply nested subtree.\n * 4. Append a truncation notice with stats.\n */\nexport function truncateSnapshotAtBoundary(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n\n // Find the last newline before the limit\n let cutoff = text.lastIndexOf('\\n', maxLength);\n if (cutoff <= 0) {\n // No newline found — fall back to hard cut\n return `${text.slice(0, maxLength)}\\n... (truncated)`;\n }\n\n // Try to cut at a top-level node boundary (indent ≤ 2 spaces)\n // by walking backwards up to 2000 chars to find a clean cut point.\n const searchStart = Math.max(0, cutoff - 2000);\n const lines = text.slice(searchStart, cutoff).split('\\n');\n\n let bestCutIndex = cutoff;\n let accumulated = cutoff;\n\n for (let i = lines.length - 1; i >= 0; i--) {\n const line = lines[i];\n const indent = line.search(/\\S/);\n // A line with indent ≤ 2 or an empty line marks a clean boundary\n if (indent >= 0 && indent <= 2) {\n bestCutIndex = accumulated;\n break;\n }\n accumulated -= line.length + 1; // +1 for newline\n }\n\n const truncated = text.slice(0, bestCutIndex);\n const totalLines = text.split('\\n').length;\n const shownLines = truncated.split('\\n').length;\n const omittedLines = totalLines - shownLines;\n\n return `${truncated}\\n... (truncated: showing ${shownLines} of ${totalLines} lines, ${omittedLines} lines omitted)`;\n}\n\n/**\n * Produce a compact summary header for a snapshot.\n * Counts interactive elements (links, buttons, inputs) to help the agent\n * understand page complexity at a glance.\n */\nexport function snapshotSummaryHeader(snapshotText: string, pageUrl: string): string {\n const lines = snapshotText.split('\\n');\n const totalLines = lines.length;\n\n let linkCount = 0;\n let buttonCount = 0;\n let inputCount = 0;\n let imageCount = 0;\n\n for (const line of lines) {\n const trimmed = line.trimStart();\n if (trimmed.startsWith('- link ') || trimmed.startsWith('- link:')) linkCount++;\n if (trimmed.startsWith('- button ') || trimmed.startsWith('- button:')) buttonCount++;\n if (trimmed.startsWith('- textbox ') || trimmed.startsWith('- textbox:') ||\n trimmed.startsWith('- searchbox ') || trimmed.startsWith('- combobox ')) inputCount++;\n if (trimmed.startsWith('- img ') || trimmed.startsWith('- img:')) imageCount++;\n }\n\n const parts = [`Page: ${pageUrl}`, `Snapshot: ${totalLines} lines`];\n const counts: string[] = [];\n if (linkCount > 0) counts.push(`${linkCount} links`);\n if (buttonCount > 0) counts.push(`${buttonCount} buttons`);\n if (inputCount > 0) counts.push(`${inputCount} inputs`);\n if (imageCount > 0) counts.push(`${imageCount} images`);\n if (counts.length > 0) {\n parts.push(`Interactive: ${counts.join(', ')}`);\n }\n\n return parts.join(' | ');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAgB,2BAA2B,MAAc,WAA2B;AAClF,KAAI,KAAK,UAAU,UAAW,QAAO;CAGrC,IAAI,SAAS,KAAK,YAAY,MAAM,UAAU;AAC9C,KAAI,UAAU,EAEZ,QAAO,GAAG,KAAK,MAAM,GAAG,UAAU,CAAC;CAKrC,MAAM,cAAc,KAAK,IAAI,GAAG,SAAS,IAAK;CAC9C,MAAM,QAAQ,KAAK,MAAM,aAAa,OAAO,CAAC,MAAM,KAAK;CAEzD,IAAI,eAAe;CACnB,IAAI,cAAc;AAElB,MAAK,IAAI,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;EAC1C,MAAM,OAAO,MAAM;EACnB,MAAM,SAAS,KAAK,OAAO,KAAK;AAEhC,MAAI,UAAU,KAAK,UAAU,GAAG;AAC9B,kBAAe;AACf;;AAEF,iBAAe,KAAK,SAAS;;CAG/B,MAAM,YAAY,KAAK,MAAM,GAAG,aAAa;CAC7C,MAAM,aAAa,KAAK,MAAM,KAAK,CAAC;CACpC,MAAM,aAAa,UAAU,MAAM,KAAK,CAAC;AAGzC,QAAO,GAAG,UAAU,4BAA4B,WAAW,MAAM,WAAW,UAFvD,aAAa,WAEiE;;;;;;;AAQrG,SAAgB,sBAAsB,cAAsB,SAAyB;CACnF,MAAM,QAAQ,aAAa,MAAM,KAAK;CACtC,MAAM,aAAa,MAAM;CAEzB,IAAI,YAAY;CAChB,IAAI,cAAc;CAClB,IAAI,aAAa;CACjB,IAAI,aAAa;AAEjB,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,UAAU,KAAK,WAAW;AAChC,MAAI,QAAQ,WAAW,UAAU,IAAI,QAAQ,WAAW,UAAU,CAAE;AACpE,MAAI,QAAQ,WAAW,YAAY,IAAI,QAAQ,WAAW,YAAY,CAAE;AACxE,MAAI,QAAQ,WAAW,aAAa,IAAI,QAAQ,WAAW,aAAa,IACpE,QAAQ,WAAW,eAAe,IAAI,QAAQ,WAAW,cAAc,CAAE;AAC7E,MAAI,QAAQ,WAAW,SAAS,IAAI,QAAQ,WAAW,SAAS,CAAE;;CAGpE,MAAM,QAAQ,CAAC,SAAS,WAAW,aAAa,WAAW,QAAQ;CACnE,MAAM,SAAmB,EAAE;AAC3B,KAAI,YAAY,EAAG,QAAO,KAAK,GAAG,UAAU,QAAQ;AACpD,KAAI,cAAc,EAAG,QAAO,KAAK,GAAG,YAAY,UAAU;AAC1D,KAAI,aAAa,EAAG,QAAO,KAAK,GAAG,WAAW,SAAS;AACvD,KAAI,aAAa,EAAG,QAAO,KAAK,GAAG,WAAW,SAAS;AACvD,KAAI,OAAO,SAAS,EAClB,OAAM,KAAK,gBAAgB,OAAO,KAAK,KAAK,GAAG;AAGjD,QAAO,MAAM,KAAK,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stealth.js","names":["osPlatform"],"sources":["../../../src/browser/stealth.ts"],"sourcesContent":["/**\n * Stealth launch utilities for anti-detection browser automation.\n *\n * Provides argument deduplication, fingerprint seed generation, and\n * macOS quarantine attribute removal. Shared by CloakBrowser provider\n * and enhanced local launch paths.\n */\n\nimport { exec } from 'node:child_process';\nimport { stat, chmod } from 'node:fs/promises';\nimport { platform as osPlatform } from 'node:os';\nimport { promisify } from 'node:util';\n\nimport { createLogger } from '../utils/logger.js';\n\nconst execAsync = promisify(exec);\nconst log = createLogger('BrowserStealth');\n\n// ── Stealth launch args ─────────────────────────────────────────────────────\n\nexport interface StealthOptions {\n /** Timezone to emulate (e.g. \"America/New_York\"). */\n timezone?: string;\n /** Locale to emulate (e.g. \"en-US\"). */\n locale?: string;\n /** Public IP for WebRTC leak prevention. */\n webrtcIp?: string;\n /** Platform to emulate in fingerprint (e.g. \"windows\", \"macos\"). */\n fingerprintPlatform?: string;\n}\n\n/**\n * Default Chromium args that reduce automation detectability for CloakBrowser.\n * Does not include `--no-sandbox` — CloakBrowser rejects it with an infobar warning.\n */\nconst BASE_STEALTH_ARGS = [\n '--disable-blink-features=AutomationControlled',\n '--disable-infobars',\n '--disable-dev-shm-usage',\n '--disable-background-networking',\n '--disable-default-apps',\n '--disable-extensions-except=',\n '--disable-sync',\n '--metrics-recording-only',\n '--no-first-run',\n];\n\n/** Flags CloakBrowser does not support (shown as unsupported infobar if passed). */\nconst CLOAK_UNSUPPORTED_FLAGS = new Set(['--no-sandbox', '--disable-setuid-sandbox']);\n\n/** Strip sandbox flags before passing user extraArgs to CloakBrowser. */\nexport function filterCloakBrowserExtraArgs(extraArgs: string[] = []): string[] {\n return extraArgs.filter((arg) => !CLOAK_UNSUPPORTED_FLAGS.has(arg.split('=')[0] ?? arg));\n}\n\n/**\n * Build stealth launch args with deduplication.\n * User `extraArgs` override any default args with the same `--key=` prefix.\n */\nexport function buildStealthArgs(\n extraArgs: string[] = [],\n options: StealthOptions = {},\n): string[] {\n const argsMap = new Map<string, string>();\n const positionalArgs: string[] = [];\n\n // Insert defaults\n for (const arg of BASE_STEALTH_ARGS) {\n const eqIdx = arg.indexOf('=');\n if (eqIdx >= 0) {\n argsMap.set(arg.slice(0, eqIdx), arg);\n } else {\n positionalArgs.push(arg);\n }\n }\n\n // Optional geo/locale/fingerprint args\n const fingerprintPlatform = options.fingerprintPlatform ?? detectFingerprintPlatform();\n argsMap.set('--fingerprint', `--fingerprint=${generateFingerprintSeed()}`);\n argsMap.set('--fingerprint-platform', `--fingerprint-platform=${fingerprintPlatform}`);\n\n if (options.timezone) {\n argsMap.set('--fingerprint-timezone', `--fingerprint-timezone=${options.timezone}`);\n }\n if (options.locale) {\n argsMap.set('--lang', `--lang=${options.locale}`);\n argsMap.set('--fingerprint-locale', `--fingerprint-locale=${options.locale}`);\n }\n if (options.webrtcIp) {\n argsMap.set('--fingerprint-webrtc-ip', `--fingerprint-webrtc-ip=${options.webrtcIp}`);\n }\n\n // User extra args override defaults (last wins)\n for (const arg of extraArgs) {\n const eqIdx = arg.indexOf('=');\n if (eqIdx >= 0) {\n argsMap.set(arg.slice(0, eqIdx), arg);\n } else {\n positionalArgs.push(arg);\n }\n }\n\n // Collect: positional first, then key=value args (sorted for determinism)\n const kvArgs = [...argsMap.values()].sort();\n return [...positionalArgs, ...kvArgs];\n}\n\n/**\n * Basic stealth args for the local Playwright launcher (less aggressive than CloakBrowser).\n * Does not include fingerprint or geo args — just reduces automation signals.\n */\nexport function buildLocalStealthArgs(extraArgs: string[] = []): string[] {\n const baseArgs = [\n '--disable-blink-features=AutomationControlled',\n '--no-sandbox',\n '--disable-setuid-sandbox',\n ];\n\n const seen = new Set<string>();\n const result: string[] = [];\n\n // Extra args take priority — process them first to track keys\n for (const arg of extraArgs) {\n const key = arg.split('=')[0];\n if (!seen.has(key)) {\n seen.add(key);\n result.push(arg);\n }\n }\n\n for (const arg of baseArgs) {\n const key = arg.split('=')[0];\n if (!seen.has(key)) {\n seen.add(key);\n result.push(arg);\n }\n }\n\n return result;\n}\n\n// ── Fingerprint seed ────────────────────────────────────────────────────────\n\n/** Generate a timestamp-based fingerprint seed for CloakBrowser. */\nexport function generateFingerprintSeed(): number {\n return Date.now();\n}\n\n/** Detect the fingerprint platform based on the current OS. */\nfunction detectFingerprintPlatform(): string {\n const os = osPlatform();\n switch (os) {\n case 'darwin': return 'macos';\n case 'win32': return 'windows';\n default: return 'windows'; // Linux defaults to windows fingerprint to avoid detection\n }\n}\n\n// ── macOS quarantine removal ────────────────────────────────────────────────\n\n/**\n * Remove the `com.apple.quarantine` extended attribute from a file or app bundle on macOS.\n * Files downloaded from the internet are tagged with this attribute, causing Gatekeeper\n * to block unsigned binaries. Without this, CloakBrowser silently fails to launch.\n *\n * Non-fatal — logs and returns on any error.\n */\nexport async function removeQuarantineAttr(path: string): Promise<void> {\n if (osPlatform() !== 'darwin') return;\n\n // Walk up to find .app bundle root\n const target = findAppBundle(path) ?? path;\n\n log.debug({ target }, 'Removing com.apple.quarantine');\n try {\n const { stderr } = await execAsync(`xattr -rd com.apple.quarantine \"${target}\"`);\n if (stderr?.trim()) {\n log.debug({ stderr: stderr.trim() }, 'xattr stderr (non-fatal)');\n }\n log.debug('Quarantine attribute removed');\n } catch {\n log.debug('xattr command failed or attribute not set (non-fatal)');\n }\n}\n\n/** Find the .app bundle root by walking up from an executable path. */\nfunction findAppBundle(executablePath: string): string | undefined {\n const parts = executablePath.split('/');\n for (let i = parts.length - 1; i >= 0; i--) {\n if (parts[i].endsWith('.app')) {\n return parts.slice(0, i + 1).join('/');\n }\n }\n return undefined;\n}\n\n// ── navigator.webdriver override ────────────────────────────────────────────\n\n/**\n * JavaScript snippet to inject into every new page to hide automation signals.\n * Removes `navigator.webdriver` and patches other detectable properties.\n */\nexport const WEBDRIVER_OVERRIDE_SCRIPT = `\nObject.defineProperty(navigator, 'webdriver', { get: () => undefined });\nif (navigator.plugins.length === 0) {\n Object.defineProperty(navigator, 'plugins', {\n get: () => [1, 2, 3, 4, 5],\n });\n}\nObject.defineProperty(navigator, 'languages', {\n get: () => ['en-US', 'en'],\n});\nwindow.chrome = window.chrome || {};\nwindow.chrome.runtime = window.chrome.runtime || {};\n`;\n\n// ── Make executable (cross-platform) ────────────────────────────────────────\n\n/** Ensure a binary file has executable permissions (Unix only, no-op on Windows). */\nexport async function makeExecutable(path: string): Promise<void> {\n if (osPlatform() === 'win32') return;\n try {\n const stats = await stat(path);\n const mode = stats.mode | 0o111; // Add +x for owner/group/others\n await chmod(path, mode);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n log.warn({ path, errorMessage: msg }, `Failed to chmod binary: ${msg}`);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"url-policy.js","names":[],"sources":["../../../src/browser/url-policy.ts"],"sourcesContent":["import { isIPv4, isIPv6 } from 'node:net';\n\n/**\n * Cloud metadata hostnames that are ALWAYS blocked regardless of any config toggle.\n * These are credential-exfiltration targets for SSRF attacks and have zero legitimate\n * agent use cases. Aligned with hermes-agent `_BLOCKED_HOSTNAMES`.\n */\nconst ALWAYS_BLOCKED_HOSTNAMES = new Set([\n 'metadata.google.internal',\n 'metadata.goog',\n]);\n\n/**\n * Cloud metadata / IMDS IPv4 addresses — always blocked regardless of `allowPrivateUrls`.\n * Covers AWS, GCP, Azure, DigitalOcean, Oracle, Alibaba Cloud, and ECS task metadata.\n */\nconst ALWAYS_BLOCKED_IPV4 = new Set([\n '169.254.169.254', // AWS/GCP/Azure/DO/Oracle metadata\n '169.254.170.2', // AWS ECS task metadata (IAM creds)\n '169.254.169.253', // Azure IMDS wire server\n '100.100.100.200', // Alibaba Cloud metadata\n]);\n\n/**\n * Regex to detect API keys / tokens embedded in URLs.\n * Catches common prefixes: sk-ant-, sk-, OPENAI_API_KEY=, key=, token=, etc.\n * A prompt injection could trick the agent into navigating to\n * `https://evil.com/steal?key=sk-ant-...` to exfiltrate secrets.\n */\nconst API_KEY_PATTERN =\n /(?:sk-ant-|sk-[a-zA-Z0-9]{20,}|OPENAI_API_KEY|ANTHROPIC_API_KEY|api[_-]?key\\s*=\\s*[a-zA-Z0-9_-]{20,}|bearer\\s+[a-zA-Z0-9_.-]{20,})/i;\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\n/**\n * SSRF-style guard for browser navigation.\n *\n * Validates: protocol (http/https), no embedded credentials, no private IPs,\n * no cloud metadata endpoints, no API key exfiltration attempts.\n *\n * @param raw URL string from the agent\n * @param options.allowPrivateUrls When true, skip private-IP blocking (cloud metadata still blocked)\n */\nexport function assertBrowserUrlAllowed(\n raw: string,\n options?: { allowPrivateUrls?: boolean },\n): void {\n const parsed = parseAndValidateUrl(raw);\n assertNotApiKeyExfiltration(raw);\n assertNotAlwaysBlocked(parsed.hostname);\n assertNotPrivate(parsed.hostname, options?.allowPrivateUrls ?? false);\n}\n\n/**\n * Check whether a URL targets an always-blocked cloud metadata endpoint.\n * Used for post-redirect verification — the navigate tool checks the *final* URL\n * after redirects, not just the initial one.\n *\n * Returns `true` (= blocked) for:\n * - Hostnames in {@link ALWAYS_BLOCKED_HOSTNAMES}\n * - IPs in {@link ALWAYS_BLOCKED_IPV4}\n * - Any address in the 169.254.0.0/16 link-local range\n */\nexport function isAlwaysBlockedUrl(raw: string): boolean {\n try {\n const url = new URL(raw.trim());\n const host = url.hostname.toLowerCase();\n if (ALWAYS_BLOCKED_HOSTNAMES.has(host)) return true;\n if (ALWAYS_BLOCKED_IPV4.has(host)) return true;\n if (isIPv4(host) && isLinkLocal(host)) return true;\n return false;\n } catch {\n return false;\n }\n}\n\n/**\n * Check whether a URL contains patterns that look like API keys or tokens.\n * Prevents prompt-injection exfiltration via browser navigation.\n */\nexport function containsApiKeyPattern(raw: string): boolean {\n try {\n const decoded = decodeURIComponent(raw);\n return API_KEY_PATTERN.test(raw) || API_KEY_PATTERN.test(decoded);\n } catch {\n return API_KEY_PATTERN.test(raw);\n }\n}\n\n/**\n * Validate a final URL after redirect — blocks private/internal targets\n * that the original URL may have redirected to.\n *\n * @returns Error message string if blocked, `undefined` if safe.\n */\nexport function checkPostRedirectUrl(\n finalUrl: string,\n options?: { allowPrivateUrls?: boolean },\n): string | undefined {\n if (isAlwaysBlockedUrl(finalUrl)) {\n return 'Blocked: redirect landed on a cloud metadata endpoint';\n }\n\n if (options?.allowPrivateUrls) return undefined;\n\n try {\n const url = new URL(finalUrl.trim());\n const host = url.hostname.toLowerCase();\n\n if (host === 'localhost' || host.endsWith('.localhost')) {\n return 'Blocked: redirect landed on localhost';\n }\n if (isIPv4(host) && isBlockedIPv4(host)) {\n return 'Blocked: redirect landed on a private/internal address';\n }\n if (isIPv6(host) && isBlockedIPv6(host)) {\n return 'Blocked: redirect landed on a private/loopback IPv6 address';\n }\n if (host.endsWith('.local') || host.endsWith('.internal')) {\n return 'Blocked: redirect landed on an internal hostname';\n }\n } catch {\n // Malformed final URL — let it through; browser will fail on its own.\n }\n return undefined;\n}\n\n// ── Internal helpers ──────────────────────────────────────────────────────────\n\nfunction parseAndValidateUrl(raw: string): URL {\n let url: URL;\n try {\n url = new URL(raw.trim());\n } catch {\n throw new Error('Invalid URL');\n }\n\n if (url.username || url.password) {\n throw new Error('URLs with embedded credentials are not allowed');\n }\n\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n throw new Error('Only http and https URLs are allowed');\n }\n\n if (!url.hostname) {\n throw new Error('Missing hostname');\n }\n\n return url;\n}\n\nfunction assertNotApiKeyExfiltration(raw: string): void {\n if (containsApiKeyPattern(raw)) {\n throw new Error(\n 'Blocked: URL contains what appears to be an API key or token. Secrets must not be sent in URLs.',\n );\n }\n}\n\nfunction assertNotAlwaysBlocked(hostname: string): void {\n const host = hostname.toLowerCase();\n if (ALWAYS_BLOCKED_HOSTNAMES.has(host)) {\n throw new Error('Blocked: cloud metadata endpoint');\n }\n if (ALWAYS_BLOCKED_IPV4.has(host)) {\n throw new Error('Blocked: cloud metadata address');\n }\n if (isIPv4(host) && isLinkLocal(host)) {\n throw new Error('Blocked: link-local address (cloud metadata range)');\n }\n}\n\nfunction assertNotPrivate(hostname: string, allowPrivate: boolean): void {\n const host = hostname.toLowerCase();\n\n if (host === 'localhost' || host.endsWith('.localhost')) {\n throw new Error('Blocked: localhost');\n }\n\n if (isIPv4(host)) {\n if (!allowPrivate && isBlockedIPv4(host)) {\n throw new Error('Blocked: private or non-public IPv4 address');\n }\n return;\n }\n\n if (isIPv6(host)) {\n if (!allowPrivate && isBlockedIPv6(host)) {\n throw new Error('Blocked: private or loopback IPv6 address');\n }\n return;\n }\n\n if (host.endsWith('.local') || host.endsWith('.internal')) {\n throw new Error('Blocked: internal hostname');\n }\n}\n\nfunction isLinkLocal(host: string): boolean {\n const parts = host.split('.').map((p) => Number(p));\n if (parts.length !== 4) return false;\n return parts[0] === 169 && parts[1] === 254;\n}\n\nfunction isBlockedIPv4(host: string): boolean {\n const parts = host.split('.').map((p) => Number(p));\n if (parts.length !== 4 || parts.some((n) => !Number.isInteger(n) || n < 0 || n > 255)) {\n return true;\n }\n const [a, b] = parts;\n if (a === 10) return true;\n if (a === 127) return true;\n if (a === 0) return true;\n if (a === 169 && b === 254) return true;\n if (a === 192 && b === 168) return true;\n if (a === 172 && b >= 16 && b <= 31) return true;\n if (a === 100 && b >= 64 && b <= 127) return true; // CGNAT 100.64.0.0/10\n return false;\n}\n\nfunction isBlockedIPv6(host: string): boolean {\n const h = host.toLowerCase().replace(/^\\[|\\]$/g, '');\n if (h === '::1') return true;\n if (h.startsWith('fe80:')) return true; // link-local\n if (h.startsWith('fc') || h.startsWith('fd')) return true; // ULA fc00::/7\n return false;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"store-connector.js","names":[],"sources":["../../../src/capabilities/store-connector.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { isIP } from 'node:net';\n\nimport AdmZip from 'adm-zip';\n\nimport type { Config } from '../config/schema.js';\nimport { installConnectorDefinition } from '../connectors/install.js';\nimport type {\n ConnectorDefinition,\n ConnectorInstallInput,\n ConnectorPermissions,\n} from '../connectors/types.js';\nimport {\n downloadConnectorStoreZipBuffer,\n fetchStoreConnectorPackageDetail,\n listConnectorPackages,\n resolveSkillsStoreBaseUrl,\n type SkillsStoreListParams,\n} from '../agent/skills/marketplace/adapters/store/store-api-client.js';\n\ntype JsonRecord = Record<string, unknown>;\n\nexport type StoreConnectorInstallPlan = {\n packageName: string;\n version: string;\n definition: ConnectorDefinition;\n permissions: ConnectorPermissions;\n requiresRestart: false;\n};\n\nfunction asRecord(value: unknown, label: string): JsonRecord {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error(`${label} must be an object.`);\n }\n return value as JsonRecord;\n}\n\nfunction asString(value: unknown, label: string): string {\n if (typeof value !== 'string' || !value.trim()) {\n throw new Error(`${label} must be a non-empty string.`);\n }\n return value.trim();\n}\n\nfunction asStringArray(value: unknown, label: string): string[] {\n if (!Array.isArray(value) || value.some((item) => typeof item !== 'string' || !item.trim())) {\n throw new Error(`${label} must be an array of non-empty strings.`);\n }\n return value.map((item) => item.trim());\n}\n\nconst NPM_PACKAGE_NAME = /^(?:@[a-z0-9][a-z0-9._-]*\\/)?[a-z0-9][a-z0-9._-]*$/;\nconst EXACT_SEMVER = /^v?(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$/;\n\nfunction assertSafeRemoteUrl(value: unknown): string {\n const urlString = asString(value, 'Connector MCP endpoint');\n let url: URL;\n try {\n url = new URL(urlString);\n } catch {\n throw new Error('Connector MCP endpoint must be a valid URL.');\n }\n const hostname = url.hostname.toLowerCase().replace(/^\\[|\\]$/g, '');\n if (\n url.protocol !== 'https:' ||\n url.username ||\n url.password ||\n hostname === 'localhost' ||\n hostname.endsWith('.localhost') ||\n isIP(hostname)\n ) {\n throw new Error('Store connectors must use a public HTTPS MCP endpoint.');\n }\n return url.toString();\n}\n\nfunction readPermissions(value: unknown, isLocal: boolean): ConnectorPermissions {\n const permissions = asRecord(value, 'Connector permissions');\n if (permissions.localExec !== isLocal) {\n if (isLocal) throw new Error('Local Store connectors must explicitly allow local command execution.');\n throw new Error('Store connectors must explicitly deny local command execution.');\n }\n const filesystem = permissions.filesystem === undefined\n ? []\n : asStringArray(permissions.filesystem, 'Connector filesystem permissions');\n if (filesystem.length > 0) {\n throw new Error('Store connectors cannot request filesystem access.');\n }\n const networkDomains = asStringArray(permissions.networkDomains, 'Connector network domains');\n if (!isLocal && networkDomains.length === 0) {\n throw new Error('Store connectors must declare at least one network domain.');\n }\n return {\n ...(permissions.data === undefined ? {} : { data: asStringArray(permissions.data, 'Connector data permissions') }),\n networkDomains,\n localExec: isLocal,\n filesystem,\n };\n}\n\nfunction readPinnedLocalRuntime(runtime: JsonRecord, template: JsonRecord): { registry: 'npm'; name: string; version: string } | null {\n if (runtime.localPackage === undefined) return null;\n const localPackage = asRecord(runtime.localPackage, 'Connector localPackage');\n if (localPackage.registry !== 'npm') {\n throw new Error('Local Store connectors must use the npm registry.');\n }\n const name = asString(localPackage.name, 'Connector local package name');\n const version = asString(localPackage.version, 'Connector local package version');\n if (!NPM_PACKAGE_NAME.test(name) || !EXACT_SEMVER.test(version)) {\n throw new Error('Local Store connectors must use a valid exact npm package version.');\n }\n if (template.command !== 'npx' ||\n JSON.stringify(asStringArray(template.args, 'Connector local MCP arguments')) !== JSON.stringify(['--yes', `${name}@${version}`])) {\n throw new Error('Local Store connectors must use the pinned npx launch form.');\n }\n for (const field of ['url', 'env', 'cwd', 'workingDirectory', 'headers', 'transport']) {\n if (field in template) throw new Error('Local Store connectors cannot define additional MCP process fields.');\n }\n return { registry: 'npm', name, version };\n}\n\nfunction readConnectorManifest(\n value: unknown,\n packageName: string,\n version: string,\n sha256: string,\n): ConnectorDefinition {\n const manifest = asRecord(value, 'Connector manifest');\n if (asString(manifest.id, 'Connector id') !== packageName) {\n throw new Error('Connector manifest id does not match the store package name.');\n }\n const runtime = asRecord(manifest.runtime, 'Connector runtime');\n if (runtime.type !== 'mcp') {\n throw new Error('Store connectors must use the MCP runtime.');\n }\n const serverTemplate = asRecord(runtime.serverTemplate, 'Connector MCP serverTemplate');\n const localPackage = readPinnedLocalRuntime(runtime, serverTemplate);\n const transport = serverTemplate.transport;\n if (!localPackage && transport !== 'streamable-http' && transport !== 'sse') {\n throw new Error('Store connectors must use streamable-http or sse transport.');\n }\n const auth = asRecord(manifest.auth, 'Connector auth');\n const authMode = auth.mode;\n if (authMode !== 'none' && authMode !== 'apiKey') {\n throw new Error('Store connectors support only none or apiKey authentication.');\n }\n const normalizedAuth: ConnectorDefinition['auth'] = { mode: authMode };\n const category = asString(manifest.category, 'Connector category');\n if (!['code', 'docs', 'browser', 'data', 'automation', 'custom'].includes(category)) {\n throw new Error(`Unsupported connector category: ${category}`);\n }\n const capabilities = asStringArray(manifest.capabilities, 'Connector capabilities');\n const allowedCapabilities = new Set([\n 'tools', 'resources', 'prompts', 'context', 'events', 'auth.apiKey',\n 'runtime.mcp.stdio', 'runtime.mcp.sse', 'runtime.mcp.streamableHttp',\n ]);\n if (capabilities.some((capability) => !allowedCapabilities.has(capability))) {\n throw new Error('Connector manifest contains an unsupported capability.');\n }\n const setup = manifest.setup === undefined ? {} : asRecord(manifest.setup, 'Connector setup');\n const permissions = readPermissions(manifest.permissions, Boolean(localPackage));\n const endpoint = localPackage ? undefined : assertSafeRemoteUrl(serverTemplate.url);\n const hostname = endpoint ? new URL(endpoint).hostname : undefined;\n if (hostname && permissions.networkDomains?.length && !permissions.networkDomains.includes(hostname)) {\n throw new Error('Connector network permissions must include the MCP endpoint host.');\n }\n\n return {\n id: packageName,\n version,\n displayName: asString(manifest.displayName, 'Connector displayName'),\n description: asString(manifest.description, 'Connector description'),\n category: category as ConnectorDefinition['category'],\n kind: 'mcp',\n source: 'store',\n capabilities: capabilities as ConnectorDefinition['capabilities'],\n ...(Array.isArray(manifest.tags) ? { tags: asStringArray(manifest.tags, 'Connector tags') } : {}),\n auth: normalizedAuth,\n setup: setup as ConnectorDefinition['setup'],\n runtime: {\n type: 'mcp',\n serverId: asString(runtime.serverId, 'Connector MCP serverId'),\n serverTemplate: localPackage ? serverTemplate : { ...serverTemplate, url: endpoint },\n ...(localPackage ? { localPackage } : {}),\n },\n permissions,\n provenance: { packageName, sha256 },\n };\n}\n\nfunction readConnectorManifestFromArchive(buffer: Buffer): unknown {\n let archive: AdmZip;\n try {\n archive = new AdmZip(buffer);\n } catch {\n throw new Error('Store connector artifact is not a valid zip archive.');\n }\n const entry = archive.getEntries().find((candidate) => {\n const path = candidate.entryName.replace(/\\\\/g, '/').replace(/^\\/+/, '');\n return !candidate.isDirectory && (path === 'xopc.connector.json' || path.endsWith('/xopc.connector.json'));\n });\n if (!entry) {\n throw new Error('Store connector artifact is missing xopc.connector.json.');\n }\n try {\n return JSON.parse(entry.getData().toString('utf8'));\n } catch {\n throw new Error('Store connector manifest is not valid JSON.');\n }\n}\n\nexport async function listStoreConnectors(config: Config, params: SkillsStoreListParams) {\n return listConnectorPackages(resolveSkillsStoreBaseUrl(config), params);\n}\n\nexport async function getStoreConnectorInstallPlan(\n config: Config,\n packageName: string,\n version?: string,\n): Promise<StoreConnectorInstallPlan> {\n const storeBaseUrl = resolveSkillsStoreBaseUrl(config);\n const detail = await fetchStoreConnectorPackageDetail(storeBaseUrl, packageName, version);\n const sha256 = detail.latestVersion.sha256;\n if (!sha256 || !/^[a-f0-9]{64}$/i.test(sha256)) {\n throw new Error('Store connector version is missing a valid SHA-256 checksum.');\n }\n const archive = await downloadConnectorStoreZipBuffer(storeBaseUrl, detail.latestVersion.downloadUrl);\n const actualSha256 = createHash('sha256').update(archive).digest('hex');\n if (actualSha256 !== sha256.toLowerCase()) {\n throw new Error('Store connector artifact checksum verification failed.');\n }\n const artifactManifest = readConnectorManifestFromArchive(archive);\n const definition = readConnectorManifest(\n artifactManifest,\n detail.name,\n detail.latestVersion.version,\n actualSha256,\n );\n const storeManifest = readConnectorManifest(\n detail.latestVersion.manifest,\n detail.name,\n detail.latestVersion.version,\n actualSha256,\n );\n if (JSON.stringify(definition.runtime) !== JSON.stringify(storeManifest.runtime)) {\n throw new Error('Store connector metadata does not match its verified artifact.');\n }\n return {\n packageName: detail.name,\n version: detail.latestVersion.version,\n permissions: definition.permissions ?? {},\n requiresRestart: false,\n definition,\n };\n}\n\nexport async function installStoreConnector(\n config: Config,\n packageName: string,\n input: ConnectorInstallInput,\n version?: string,\n) {\n const plan = await getStoreConnectorInstallPlan(config, packageName, version);\n const instance = await installConnectorDefinition(config, plan.definition, input);\n return { instance, plan };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"attachment-classifiers.js","names":[],"sources":["../../../../src/channels/attachments/attachment-classifiers.ts"],"sourcesContent":["const VISION_IMAGE_MIME_TYPES = new Set([\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n]);\n\nexport function isSupportedVisionImageMimeType(mimeType: string | undefined): boolean {\n const normalized = mimeType?.split(';')[0]?.trim().toLowerCase();\n return normalized ? VISION_IMAGE_MIME_TYPES.has(normalized) : false;\n}\n\nexport function isImageInboundAttachment(att: {\n type?: string;\n mimeType?: string;\n}): boolean {\n if (att.mimeType) {\n return isSupportedVisionImageMimeType(att.mimeType);\n }\n\n return (\n att.type === 'image' ||\n att.type === 'photo'\n );\n}\n\nexport function isVoiceInboundAttachment(att: { type?: string; mimeType?: string }): boolean {\n return (\n att.type === 'voice' ||\n att.type === 'audio' ||\n att.mimeType?.startsWith('audio/') === true\n );\n}\n"],"mappings":";AAAA,MAAM,0BAA0B,IAAI,IAAI;CACtC;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAgB,+BAA+B,UAAuC;CACpF,MAAM,aAAa,UAAU,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,aAAa;AAChE,QAAO,aAAa,wBAAwB,IAAI,WAAW,GAAG;;AAGhE,SAAgB,yBAAyB,KAG7B;AACV,KAAI,IAAI,SACN,QAAO,+BAA+B,IAAI,SAAS;AAGrD,QACE,IAAI,SAAS,WACb,IAAI,SAAS;;AAIjB,SAAgB,yBAAyB,KAAoD;AAC3F,QACE,IAAI,SAAS,WACb,IAAI,SAAS,WACb,IAAI,UAAU,WAAW,SAAS,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbound-persist.js","names":[],"sources":["../../../../src/channels/attachments/inbound-persist.ts"],"sourcesContent":["/**\n * Persist inbound uploads to the global media store (`{stateDir}/media/inbound/`).\n */\n\nimport { createLogger } from '../../utils/logger.js';\nimport {\n MEDIA_MAX_BYTES,\n parseMediaUri,\n readMediaReference,\n resolveMediaReference,\n saveMediaBuffer,\n} from '../../media/index.js';\nimport type { InboundAttachmentInput, MediaRef } from '../../media/types.js';\nimport { mediaRefFromUri, toMediaRef } from './inbound-types.js';\n\nconst log = createLogger('InboundPersist');\n\nexport type { InboundAttachmentInput, MediaRef } from '../../media/types.js';\nexport { isImageInboundAttachment, isVoiceInboundAttachment } from './attachment-classifiers.js';\nexport { toMediaRef, mediaRefFromUri } from './inbound-types.js';\n\n/** Decode base64 or data-URL payload (composer wire + voice STT). */\nexport function decodeInboundAttachmentBase64(data: string): Buffer {\n const trimmed = data.trim();\n const b64 = trimmed.startsWith('data:') ? (trimmed.split(/base64,/)[1] ?? trimmed) : trimmed;\n return Buffer.from(b64.replace(/\\s/g, ''), 'base64');\n}\n\n/**\n * Write attachments with binary `data` to the media store; returns metadata-only refs.\n */\nexport async function persistInboundAttachments(\n attachments: InboundAttachmentInput[] | undefined,\n opts?: {\n maxBytes?: number;\n resolveUri?: (uri: string, attachment: InboundAttachmentInput) => Promise<{\n buffer: Buffer;\n path: string;\n mimeType: string;\n name: string;\n size: number;\n } | null>;\n },\n): Promise<MediaRef[] | undefined> {\n if (!attachments?.length) return undefined;\n\n const maxBytes = opts?.maxBytes ?? MEDIA_MAX_BYTES;\n const out: MediaRef[] = [];\n\n for (const att of attachments) {\n if (att.uri?.trim()) {\n const uri = att.uri.trim();\n if (uri.startsWith('media://')) {\n const resolved = await resolveMediaReference(uri);\n out.push(\n mediaRefFromUri(att, resolved.uri, resolved.path, resolved.bucket, resolved.id),\n );\n } else {\n const resolved = await opts?.resolveUri?.(uri, att);\n if (!resolved) {\n throw new Error(`Inbound attachment \"${att.name ?? 'file'}\" has unsupported uri`);\n }\n const saved = await saveMediaBuffer(resolved.buffer, {\n contentType: resolved.mimeType,\n bucket: 'inbound',\n maxBytes,\n originalFilename: resolved.name,\n });\n out.push(toMediaRef({ ...att, mimeType: resolved.mimeType, name: resolved.name, size: resolved.size }, saved));\n }\n continue;\n }\n\n if (!att.data || att.data.length === 0) {\n throw new Error(`Inbound attachment \"${att.name ?? 'file'}\" is missing data and uri`);\n }\n\n const buf = decodeInboundAttachmentBase64(att.data);\n const saved = await saveMediaBuffer(buf, {\n contentType: att.mimeType,\n bucket: 'inbound',\n maxBytes,\n originalFilename: att.name,\n });\n\n log.debug({ uri: saved.uri, bytes: saved.size, name: att.name }, 'Inbound attachment persisted');\n\n out.push(toMediaRef(att, saved));\n }\n\n return out.length ? out : undefined;\n}\n\n/** Read attachment bytes by media URI (voice STT, tools). */\nexport async function readInboundAttachmentBuffer(uri: string): Promise<Buffer> {\n const { buffer } = await readMediaReference(uri);\n return buffer;\n}\n\nexport function assertMediaUri(uri: string): void {\n parseMediaUri(uri);\n}\n"],"mappings":";;;;;;;;aAIqD;AAWrD,MAAM,MAAM,aAAa,iBAAiB;;AAO1C,SAAgB,8BAA8B,MAAsB;CAClE,MAAM,UAAU,KAAK,MAAM;CAC3B,MAAM,MAAM,QAAQ,WAAW,QAAQ,GAAI,QAAQ,MAAM,UAAU,CAAC,MAAM,UAAW;AACrF,QAAO,OAAO,KAAK,IAAI,QAAQ,OAAO,GAAG,EAAE,SAAS;;;;;AAMtD,eAAsB,0BACpB,aACA,MAUiC;AACjC,KAAI,CAAC,aAAa,OAAQ,QAAO,KAAA;CAEjC,MAAM,WAAW,MAAM,YAAA;CACvB,MAAM,MAAkB,EAAE;AAE1B,MAAK,MAAM,OAAO,aAAa;AAC7B,MAAI,IAAI,KAAK,MAAM,EAAE;GACnB,MAAM,MAAM,IAAI,IAAI,MAAM;AAC1B,OAAI,IAAI,WAAW,WAAW,EAAE;IAC9B,MAAM,WAAW,MAAM,sBAAsB,IAAI;AACjD,QAAI,KACF,gBAAgB,KAAK,SAAS,KAAK,SAAS,MAAM,SAAS,QAAQ,SAAS,GAAG,CAChF;UACI;IACL,MAAM,WAAW,MAAM,MAAM,aAAa,KAAK,IAAI;AACnD,QAAI,CAAC,SACH,OAAM,IAAI,MAAM,uBAAuB,IAAI,QAAQ,OAAO,uBAAuB;IAEnF,MAAM,QAAQ,MAAM,gBAAgB,SAAS,QAAQ;KACnD,aAAa,SAAS;KACtB,QAAQ;KACR;KACA,kBAAkB,SAAS;KAC5B,CAAC;AACF,QAAI,KAAK,WAAW;KAAE,GAAG;KAAK,UAAU,SAAS;KAAU,MAAM,SAAS;KAAM,MAAM,SAAS;KAAM,EAAE,MAAM,CAAC;;AAEhH;;AAGF,MAAI,CAAC,IAAI,QAAQ,IAAI,KAAK,WAAW,EACnC,OAAM,IAAI,MAAM,uBAAuB,IAAI,QAAQ,OAAO,2BAA2B;EAIvF,MAAM,QAAQ,MAAM,gBADR,8BAA8B,IAAI,KACP,EAAE;GACvC,aAAa,IAAI;GACjB,QAAQ;GACR;GACA,kBAAkB,IAAI;GACvB,CAAC;AAEF,MAAI,MAAM;GAAE,KAAK,MAAM;GAAK,OAAO,MAAM;GAAM,MAAM,IAAI;GAAM,EAAE,+BAA+B;AAEhG,MAAI,KAAK,WAAW,KAAK,MAAM,CAAC;;AAGlC,QAAO,IAAI,SAAS,MAAM,KAAA;;;AAI5B,eAAsB,4BAA4B,KAA8B;CAC9E,MAAM,EAAE,WAAW,MAAM,mBAAmB,IAAI;AAChD,QAAO;;AAGT,SAAgB,eAAe,KAAmB;AAChD,eAAc,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbound-types.js","names":[],"sources":["../../../../src/channels/attachments/inbound-types.ts"],"sourcesContent":["import type { InboundAttachmentInput, MediaRef } from '../../media/types.js';\nimport {\n isImageInboundAttachment,\n isVoiceInboundAttachment,\n} from './attachment-classifiers.js';\n\nexport type { InboundAttachmentInput, MediaRef } from '../../media/types.js';\nexport { isImageInboundAttachment, isVoiceInboundAttachment };\n\nexport function toMediaRef(\n att: InboundAttachmentInput,\n saved: { id: string; bucket: MediaRef['bucket']; uri: string; path: string; size: number; contentType: string },\n): MediaRef {\n return {\n id: saved.id,\n bucket: saved.bucket,\n type: att.type,\n mimeType: att.mimeType?.trim() || saved.contentType,\n name: att.name?.trim() || 'file',\n size: att.size ?? saved.size,\n uri: saved.uri,\n path: saved.path,\n };\n}\n\nexport function mediaRefFromUri(\n att: InboundAttachmentInput,\n uri: string,\n path: string,\n bucket: MediaRef['bucket'],\n id: string,\n): MediaRef {\n return {\n id,\n bucket,\n type: att.type,\n mimeType: att.mimeType?.trim() || 'application/octet-stream',\n name: att.name?.trim() || 'file',\n size: att.size ?? 0,\n uri,\n path,\n };\n}\n"],"mappings":";;AASA,SAAgB,WACd,KACA,OACU;AACV,QAAO;EACL,IAAI,MAAM;EACV,QAAQ,MAAM;EACd,MAAM,IAAI;EACV,UAAU,IAAI,UAAU,MAAM,IAAI,MAAM;EACxC,MAAM,IAAI,MAAM,MAAM,IAAI;EAC1B,MAAM,IAAI,QAAQ,MAAM;EACxB,KAAK,MAAM;EACX,MAAM,MAAM;EACb;;AAGH,SAAgB,gBACd,KACA,KACA,MACA,QACA,IACU;AACV,QAAO;EACL;EACA;EACA,MAAM,IAAI;EACV,UAAU,IAAI,UAAU,MAAM,IAAI;EAClC,MAAM,IAAI,MAAM,MAAM,IAAI;EAC1B,MAAM,IAAI,QAAQ;EAClB;EACA;EACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"outbound-tts-persist.js","names":[],"sources":["../../../../src/channels/attachments/outbound-tts-persist.ts"],"sourcesContent":["/**\n * Persist outbound TTS audio to `{stateDir}/media/tts/`.\n */\n\nimport { createLogger } from '../../utils/logger.js';\nimport { saveMediaBuffer } from '../../media/index.js';\nimport type { MediaRef } from '../../media/types.js';\n\nconst log = createLogger('OutboundTtsPersist');\n\nfunction extForFormat(format: string): string {\n const f = format.toLowerCase();\n if (f === 'opus' || f === 'ogg') return '.ogg';\n if (f === 'mp3' || f === 'mpeg') return '.mp3';\n if (f === 'wav') return '.wav';\n return '.bin';\n}\n\nfunction mimeForFormat(format: string): string {\n const f = format.toLowerCase();\n if (f === 'opus' || f === 'ogg') return 'audio/ogg';\n if (f === 'mp3' || f === 'mpeg') return 'audio/mpeg';\n if (f === 'wav') return 'audio/wav';\n return 'application/octet-stream';\n}\n\nexport async function persistOutboundTtsAudio(\n audioBuffer: Buffer,\n format: string,\n): Promise<MediaRef> {\n const ext = extForFormat(format);\n const saved = await saveMediaBuffer(audioBuffer, {\n contentType: mimeForFormat(format),\n bucket: 'tts',\n originalFilename: `assist${ext}`,\n });\n\n log.debug({ uri: saved.uri, bytes: saved.size }, 'TTS audio persisted');\n\n return {\n id: saved.id,\n bucket: 'tts',\n type: 'voice',\n mimeType: saved.contentType,\n name: saved.id,\n size: saved.size,\n uri: saved.uri,\n path: saved.path,\n };\n}\n"],"mappings":";;;;aAIqD;AAIrD,MAAM,MAAM,aAAa,qBAAqB;AAE9C,SAAS,aAAa,QAAwB;CAC5C,MAAM,IAAI,OAAO,aAAa;AAC9B,KAAI,MAAM,UAAU,MAAM,MAAO,QAAO;AACxC,KAAI,MAAM,SAAS,MAAM,OAAQ,QAAO;AACxC,KAAI,MAAM,MAAO,QAAO;AACxB,QAAO;;AAGT,SAAS,cAAc,QAAwB;CAC7C,MAAM,IAAI,OAAO,aAAa;AAC9B,KAAI,MAAM,UAAU,MAAM,MAAO,QAAO;AACxC,KAAI,MAAM,SAAS,MAAM,OAAQ,QAAO;AACxC,KAAI,MAAM,MAAO,QAAO;AACxB,QAAO;;AAGT,eAAsB,wBACpB,aACA,QACmB;CACnB,MAAM,MAAM,aAAa,OAAO;CAChC,MAAM,QAAQ,MAAM,gBAAgB,aAAa;EAC/C,aAAa,cAAc,OAAO;EAClC,QAAQ;EACR,kBAAkB,SAAS;EAC5B,CAAC;AAEF,KAAI,MAAM;EAAE,KAAK,MAAM;EAAK,OAAO,MAAM;EAAM,EAAE,sBAAsB;AAEvE,QAAO;EACL,IAAI,MAAM;EACV,QAAQ;EACR,MAAM;EACN,UAAU,MAAM;EAChB,MAAM,MAAM;EACZ,MAAM,MAAM;EACZ,KAAK,MAAM;EACX,MAAM,MAAM;EACb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"voice-stt-webchat.js","names":[],"sources":["../../../../src/channels/attachments/voice-stt-webchat.ts"],"sourcesContent":["/**\n * STT for webchat voice attachments: merge transcripts into user text and track inbound voice for TTS trigger.\n */\n\nimport type { STTConfig } from '../../voice/stt/types.js';\nimport { DEFAULT_STT_CONFIG } from '../../voice/stt/types.js';\nimport { isSTTAvailable, transcribe } from '../../voice/stt/index.js';\nimport {\n decodeInboundAttachmentBase64,\n readInboundAttachmentBuffer,\n type InboundAttachmentInput,\n type MediaRef,\n} from './inbound-persist.js';\n\nconst STT_MAX_BYTES = 25 * 1024 * 1024;\n\nfunction mergeSttProviders(\n base: STTConfig['providers'],\n patch: STTConfig['providers'],\n): STTConfig['providers'] {\n if (!base && !patch) return undefined;\n const merged: Record<string, Record<string, unknown>> = { ...(base ?? {}) };\n for (const [id, slice] of Object.entries(patch ?? {})) {\n merged[id] = { ...(merged[id] ?? {}), ...slice };\n }\n return merged;\n}\n\nexport function mergeSttConfigFromAppConfig(\n stt: Partial<STTConfig> | undefined,\n toolsMedia?: { models?: STTConfig['sharedModels'] },\n): STTConfig {\n const p = stt ?? {};\n return {\n ...DEFAULT_STT_CONFIG,\n ...p,\n providers: mergeSttProviders(DEFAULT_STT_CONFIG.providers, p.providers),\n fallback: { ...DEFAULT_STT_CONFIG.fallback!, ...p.fallback },\n ...(toolsMedia?.models?.length ? { sharedModels: toolsMedia.models } : {}),\n };\n}\n\nexport function isVoiceLikeAttachment(att: InboundAttachmentInput | MediaRef): boolean {\n if (att.type === 'voice') return true;\n const m = att.mimeType?.toLowerCase() ?? '';\n return m.startsWith('audio/');\n}\n\nexport async function mergeVoiceTranscriptsIntoUserText(\n prepared: (InboundAttachmentInput | MediaRef)[] | undefined,\n userText: string,\n sttConfig: STTConfig,\n opts?: { skipVoiceTranscription?: boolean },\n): Promise<{ text: string; inboundVoice: boolean; voiceTranscripts: string[] }> {\n if (!prepared?.length) {\n return { text: userText, inboundVoice: false, voiceTranscripts: [] };\n }\n\n const hasVoice = prepared.some(isVoiceLikeAttachment);\n if (!hasVoice) {\n return { text: userText, inboundVoice: false, voiceTranscripts: [] };\n }\n\n if (opts?.skipVoiceTranscription === true) {\n return { text: userText, inboundVoice: true, voiceTranscripts: [] };\n }\n\n if (!isSTTAvailable(sttConfig)) {\n return { text: userText, inboundVoice: true, voiceTranscripts: [] };\n }\n\n const transcripts: string[] = [];\n\n for (const att of prepared) {\n if (!isVoiceLikeAttachment(att)) continue;\n\n let buf: Buffer | null = null;\n if ('uri' in att && att.uri?.trim()) {\n try {\n buf = await readInboundAttachmentBuffer(att.uri.trim());\n } catch {\n buf = null;\n }\n } else if ('data' in att && att.data) {\n try {\n buf = decodeInboundAttachmentBase64(att.data);\n } catch {\n buf = null;\n }\n }\n\n if (!buf || buf.length === 0) {\n transcripts.push('[Voice: empty]');\n continue;\n }\n if (buf.length > STT_MAX_BYTES) {\n transcripts.push('[Voice: file too large]');\n continue;\n }\n\n try {\n const r = await transcribe(buf, sttConfig, {\n language: sttConfig.provider === 'alibaba' ? 'zh' : undefined,\n });\n transcripts.push(r.text.trim() || '[Voice: no speech detected]');\n } catch {\n transcripts.push('[STT failed]');\n }\n }\n\n const merged = [transcripts.filter(Boolean).join('\\n'), userText.trim()].filter(Boolean).join('\\n\\n');\n return { text: merged || userText, inboundVoice: true, voiceTranscripts: transcripts };\n}\n"],"mappings":";;;;;;AAcA,MAAM,gBAAgB,KAAK,OAAO;AAElC,SAAS,kBACP,MACA,OACwB;AACxB,KAAI,CAAC,QAAQ,CAAC,MAAO,QAAO,KAAA;CAC5B,MAAM,SAAkD,EAAE,GAAI,QAAQ,EAAE,EAAG;AAC3E,MAAK,MAAM,CAAC,IAAI,UAAU,OAAO,QAAQ,SAAS,EAAE,CAAC,CACnD,QAAO,MAAM;EAAE,GAAI,OAAO,OAAO,EAAE;EAAG,GAAG;EAAO;AAElD,QAAO;;AAGT,SAAgB,4BACd,KACA,YACW;CACX,MAAM,IAAI,OAAO,EAAE;AACnB,QAAO;EACL,GAAG;EACH,GAAG;EACH,WAAW,kBAAkB,mBAAmB,WAAW,EAAE,UAAU;EACvE,UAAU;GAAE,GAAG,mBAAmB;GAAW,GAAG,EAAE;GAAU;EAC5D,GAAI,YAAY,QAAQ,SAAS,EAAE,cAAc,WAAW,QAAQ,GAAG,EAAE;EAC1E;;AAGH,SAAgB,sBAAsB,KAAiD;AACrF,KAAI,IAAI,SAAS,QAAS,QAAO;AAEjC,SADU,IAAI,UAAU,aAAa,IAAI,IAChC,WAAW,SAAS;;AAG/B,eAAsB,kCACpB,UACA,UACA,WACA,MAC8E;AAC9E,KAAI,CAAC,UAAU,OACb,QAAO;EAAE,MAAM;EAAU,cAAc;EAAO,kBAAkB,EAAE;EAAE;AAItE,KAAI,CADa,SAAS,KAAK,sBAClB,CACX,QAAO;EAAE,MAAM;EAAU,cAAc;EAAO,kBAAkB,EAAE;EAAE;AAGtE,KAAI,MAAM,2BAA2B,KACnC,QAAO;EAAE,MAAM;EAAU,cAAc;EAAM,kBAAkB,EAAE;EAAE;AAGrE,KAAI,CAAC,eAAe,UAAU,CAC5B,QAAO;EAAE,MAAM;EAAU,cAAc;EAAM,kBAAkB,EAAE;EAAE;CAGrE,MAAM,cAAwB,EAAE;AAEhC,MAAK,MAAM,OAAO,UAAU;AAC1B,MAAI,CAAC,sBAAsB,IAAI,CAAE;EAEjC,IAAI,MAAqB;AACzB,MAAI,SAAS,OAAO,IAAI,KAAK,MAAM,CACjC,KAAI;AACF,SAAM,MAAM,4BAA4B,IAAI,IAAI,MAAM,CAAC;UACjD;AACN,SAAM;;WAEC,UAAU,OAAO,IAAI,KAC9B,KAAI;AACF,SAAM,8BAA8B,IAAI,KAAK;UACvC;AACN,SAAM;;AAIV,MAAI,CAAC,OAAO,IAAI,WAAW,GAAG;AAC5B,eAAY,KAAK,iBAAiB;AAClC;;AAEF,MAAI,IAAI,SAAS,eAAe;AAC9B,eAAY,KAAK,0BAA0B;AAC3C;;AAGF,MAAI;GACF,MAAM,IAAI,MAAM,WAAW,KAAK,WAAW,EACzC,UAAU,UAAU,aAAa,YAAY,OAAO,KAAA,GACrD,CAAC;AACF,eAAY,KAAK,EAAE,KAAK,MAAM,IAAI,8BAA8B;UAC1D;AACN,eAAY,KAAK,eAAe;;;AAKpC,QAAO;EAAE,MADM,CAAC,YAAY,OAAO,QAAQ,CAAC,KAAK,KAAK,EAAE,SAAS,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,OACzE,IAAI;EAAU,cAAc;EAAM,kBAAkB;EAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"channel-catalog-service.js","names":[],"sources":["../../../../src/channels/catalog/channel-catalog-service.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport type { Config } from '../../config/schema.js';\nimport { resolveStateDir } from '../../config/paths-state.js';\nimport {\n buildExtensionMetadataSnapshot,\n resolveExtensionLoaderOptionsFromConfig,\n} from '../../extensions/extension-metadata-snapshot.js';\nimport type { ExtensionMetadataSnapshot } from '../../extensions/extension-metadata-snapshot.js';\nimport type { ManifestRegistryEntry } from '../../extensions/manifest-registry.js';\nimport type { ChannelContributionDeclaration } from '../../extensions/types/manifest.js';\n\nimport type { ChannelCatalog, ChannelCatalogEntry, ChannelSetupIssue, ChannelSetupStatus } from './channel-catalog-types.js';\n\ntype BuildChannelCatalogOptions = {\n locale?: string;\n};\n\nconst DEFAULT_CONFIG_SCHEMA: Record<string, unknown> = {\n type: 'object',\n additionalProperties: true,\n};\n\nfunction normalizeChannelId(raw: string): string {\n return raw.trim().toLowerCase();\n}\n\nfunction normalizeLocale(raw: string | undefined): string | undefined {\n const value = raw?.trim().toLowerCase().replace('_', '-');\n return value || undefined;\n}\n\nfunction localeCandidates(raw: string | undefined): string[] {\n const locale = normalizeLocale(raw);\n if (!locale) return [];\n const base = locale.split('-')[0];\n return base && base !== locale ? [locale, base] : [locale];\n}\n\nfunction normalizeConfigPath(channelId: string, raw: string | undefined): `channels.${string}` {\n const expected = `channels.${channelId}` as const;\n if (!raw) return expected;\n const trimmed = raw.trim();\n if (!trimmed.startsWith('channels.')) return expected;\n return trimmed as `channels.${string}`;\n}\n\nfunction configChannelKey(entry: ChannelCatalogEntry | undefined, channelId: string): string {\n const path = entry?.configPath;\n if (path?.startsWith('channels.')) {\n return path.slice('channels.'.length).split('.')[0] || channelId;\n }\n return channelId;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction hasNonEmptyString(value: unknown): boolean {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nfunction readTextFileIfPresent(filePath: string | undefined): string {\n if (!filePath?.trim()) return '';\n try {\n return readFileSync(filePath.trim(), 'utf8').trim();\n } catch {\n return '';\n }\n}\n\nfunction readJsonFileIfPresent(filePath: string): unknown {\n try {\n if (!existsSync(filePath)) return undefined;\n return JSON.parse(readFileSync(filePath, 'utf8')) as unknown;\n } catch {\n return undefined;\n }\n}\n\nfunction resolveTelegramToken(account: Record<string, unknown>): string {\n const inline = typeof account.botToken === 'string' ? account.botToken.trim() : '';\n if (inline) return inline;\n return readTextFileIfPresent(typeof account.tokenFile === 'string' ? account.tokenFile : undefined);\n}\n\nfunction resolveWeixinAccountIds(raw: unknown): string[] {\n const accounts = isRecord(raw) && isRecord(raw.accounts) ? Object.keys(raw.accounts) : [];\n const indexed = readJsonFileIfPresent(join(resolveStateDir(), 'weixin', 'accounts.json'));\n if (!Array.isArray(indexed)) return accounts;\n return [...new Set([\n ...indexed.filter((id): id is string => typeof id === 'string' && id.trim() !== ''),\n ...accounts,\n ])];\n}\n\nfunction hasConfiguredWeixinAccount(raw: unknown): boolean {\n const accounts = isRecord(raw) && isRecord(raw.accounts) ? raw.accounts : {};\n for (const accountId of resolveWeixinAccountIds(raw)) {\n const accountCfg = accounts[accountId];\n if (isRecord(accountCfg) && accountCfg.enabled === false) continue;\n const accountData = readJsonFileIfPresent(join(resolveStateDir(), 'weixin', 'accounts', `${accountId}.json`));\n if (isRecord(accountData) && hasNonEmptyString(accountData.token)) return true;\n }\n return false;\n}\n\nfunction hasConfiguredTelegramCredential(raw: unknown): boolean {\n if (!isRecord(raw)) return false;\n const accounts = raw.accounts;\n if (!isRecord(accounts)) return false;\n return Object.values(accounts).some((account) => {\n if (!isRecord(account) || account.enabled === false) return false;\n return hasNonEmptyString(resolveTelegramToken(account));\n });\n}\n\nfunction hasConfiguredFeishuCredential(raw: unknown): boolean {\n if (!isRecord(raw)) return false;\n const hasRootCredentials = hasNonEmptyString(raw.appId) && hasNonEmptyString(raw.appSecret);\n if (hasRootCredentials) return true;\n const accounts = raw.accounts;\n if (!isRecord(accounts)) return false;\n return Object.values(accounts).some((account) => {\n if (!isRecord(account) || account.enabled === false) return false;\n const appId = hasNonEmptyString(account.appId) ? account.appId : raw.appId;\n const appSecret = hasNonEmptyString(account.appSecret) ? account.appSecret : raw.appSecret;\n return hasNonEmptyString(appId) && hasNonEmptyString(appSecret);\n });\n}\n\nfunction issue(params: {\n code: string;\n fieldPath?: string;\n message: string;\n action?: ChannelSetupIssue['action'];\n}): ChannelSetupIssue {\n return {\n code: params.code,\n severity: 'required',\n fieldPath: params.fieldPath,\n message: params.message,\n action: params.action ?? 'open_config',\n };\n}\n\nfunction readConfigPath(value: unknown, path: string): unknown {\n let current = value;\n for (const part of path.split('.')) {\n if (!isRecord(current)) return undefined;\n current = current[part];\n }\n return current;\n}\n\nfunction isEmptyConfigValue(value: unknown): boolean {\n if (value === undefined || value === null) return true;\n if (typeof value === 'string') return value.trim().length === 0;\n if (Array.isArray(value)) return value.length === 0;\n return false;\n}\n\nfunction schemaFieldTitle(schema: Record<string, unknown>, path: string): string {\n let current: unknown = schema;\n for (const part of path.split('.')) {\n if (!isRecord(current)) break;\n const props = current.properties;\n if (!isRecord(props)) break;\n current = props[part];\n }\n if (isRecord(current) && typeof current.title === 'string' && current.title.trim()) {\n return current.title.trim();\n }\n return path;\n}\n\nfunction collectRequiredSchemaIssues(\n entry: ChannelCatalogEntry | undefined,\n raw: unknown,\n): ChannelSetupIssue[] {\n const schema = entry?.configSchema;\n if (!isRecord(schema)) return [];\n const required = schema.required;\n if (!Array.isArray(required)) return [];\n return required\n .map(String)\n .filter((fieldPath) => fieldPath !== 'enabled')\n .filter((fieldPath) => isEmptyConfigValue(readConfigPath(raw, fieldPath)))\n .map((fieldPath) => issue({\n code: 'config.missing_required',\n fieldPath,\n message: `Missing required field: ${schemaFieldTitle(schema, fieldPath)}.`,\n }));\n}\n\nfunction collectChannelSetupIssues(\n id: string,\n raw: unknown,\n entry: ChannelCatalogEntry | undefined,\n): ChannelSetupIssue[] {\n if (id === 'telegram' && !hasConfiguredTelegramCredential(raw)) {\n return [issue({\n code: 'telegram.missing_credential',\n fieldPath: 'accounts.default.botToken',\n message: 'Telegram requires at least one enabled account with a Bot Token or token file.',\n action: 'open_config',\n })];\n }\n if (id === 'weixin' && !hasConfiguredWeixinAccount(raw)) {\n return [issue({\n code: 'weixin.missing_account',\n fieldPath: 'accounts',\n message: 'Weixin requires at least one logged-in account before it can run.',\n action: 'run_setup',\n })];\n }\n if ((id === 'feishu' || id === 'lark') && !hasConfiguredFeishuCredential(raw)) {\n return [issue({\n code: 'feishu.missing_credentials',\n fieldPath: 'appId',\n message: 'Feishu/Lark requires App ID and App Secret credentials.',\n action: 'open_config',\n })];\n }\n return collectRequiredSchemaIssues(entry, raw);\n}\n\nfunction hasChannelSetupOutsideConfig(id: string, raw: unknown): boolean {\n return id === 'weixin' && hasConfiguredWeixinAccount(raw);\n}\n\nfunction withoutUndefined(value: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(Object.entries(value).filter(([, item]) => item !== undefined));\n}\n\nfunction mergeObjectMap<T extends Record<string, unknown>>(base: T | undefined, override: T | undefined): T | undefined {\n if (!base && !override) return undefined;\n if (!base) return override ? withoutUndefined(override) as T : undefined;\n if (!override) return base;\n const out: Record<string, unknown> = { ...base };\n for (const [key, value] of Object.entries(override)) {\n if (value === undefined) continue;\n out[key] = isRecord(out[key]) && isRecord(value)\n ? { ...out[key], ...withoutUndefined(value) }\n : value;\n }\n return out as T;\n}\n\nfunction mergeRecordDeep(base: Record<string, unknown>, override: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = { ...base };\n for (const [key, value] of Object.entries(override)) {\n if (value === undefined) continue;\n out[key] = isRecord(out[key]) && isRecord(value)\n ? mergeRecordDeep(out[key], value)\n : value;\n }\n return out;\n}\n\nfunction mergeJsonSchema(base: Record<string, unknown> | undefined, override: Record<string, unknown> | undefined) {\n if (!base && !override) return undefined;\n if (!base) return override ? withoutUndefined(override) : undefined;\n if (!override) return base;\n return mergeRecordDeep(base, override);\n}\n\nfunction mergeChannelUi(\n base: ChannelContributionDeclaration['ui'],\n override: ChannelContributionDeclaration['ui'],\n): ChannelContributionDeclaration['ui'] {\n if (!base && !override) return undefined;\n return {\n ...(base ?? {}),\n ...(override ?? {}),\n card: mergeObjectMap(base?.card, override?.card),\n modal: mergeObjectMap(base?.modal, override?.modal),\n };\n}\n\nfunction localizeContribution(\n contribution: ChannelContributionDeclaration,\n locale: string | undefined,\n): ChannelContributionDeclaration {\n const i18n = contribution.i18n;\n if (!i18n) return contribution;\n const override = localeCandidates(locale).map((key) => i18n[key]).find(Boolean);\n if (!override) return contribution;\n return {\n ...contribution,\n label: override.label ?? contribution.label,\n description: override.description ?? contribution.description,\n configSchema: mergeJsonSchema(contribution.configSchema, override.configSchema),\n uiHints: mergeObjectMap(contribution.uiHints, override.uiHints),\n actions: mergeObjectMap(contribution.actions, override.actions),\n ui: mergeChannelUi(contribution.ui, override.ui),\n };\n}\n\nfunction toCatalogEntry(params: {\n extension: ManifestRegistryEntry;\n channelId: string;\n contribution: ChannelContributionDeclaration;\n locale?: string;\n}): ChannelCatalogEntry {\n const contribution = localizeContribution(params.contribution, params.locale);\n const id = normalizeChannelId(params.channelId);\n return {\n id,\n extensionId: params.extension.id,\n source: params.extension.source,\n path: params.extension.path,\n label: contribution.label,\n description: contribution.description,\n docsPath: contribution.docsPath,\n order: contribution.order ?? 999,\n configPath: normalizeConfigPath(id, contribution.configPath),\n capabilities: contribution.capabilities ?? {},\n configSchema: contribution.configSchema ?? DEFAULT_CONFIG_SCHEMA,\n uiHints: contribution.uiHints ?? {},\n actions: contribution.actions ?? {},\n ui: contribution.ui,\n };\n}\n\nexport function buildChannelCatalogFromSnapshot(\n snapshot: ExtensionMetadataSnapshot,\n options: BuildChannelCatalogOptions = {},\n): ChannelCatalog {\n const byId = new Map<string, ChannelCatalogEntry>();\n for (const extension of snapshot.manifestRegistry.getAllEntries()) {\n const contributions = extension.manifest.channelContributions ?? {};\n for (const [channelId, contribution] of Object.entries(contributions)) {\n const entry = toCatalogEntry({ extension, channelId, contribution, locale: options.locale });\n byId.set(entry.id, entry);\n }\n }\n const entries = Array.from(byId.values()).toSorted((a, b) => {\n if (a.order !== b.order) return a.order - b.order;\n return a.id.localeCompare(b.id);\n });\n return { entries, byId };\n}\n\nexport function buildChannelCatalogForConfig(config: Config, options: BuildChannelCatalogOptions = {}): ChannelCatalog {\n const snapshot = buildExtensionMetadataSnapshot(resolveExtensionLoaderOptionsFromConfig(config), config);\n return buildChannelCatalogFromSnapshot(snapshot, options);\n}\n\nexport function getChannelSetupStatus(\n config: Config,\n channelId: string,\n entry?: ChannelCatalogEntry,\n): ChannelSetupStatus {\n const id = normalizeChannelId(channelId);\n const configKey = normalizeChannelId(configChannelKey(entry, id));\n const raw = (config.channels as Record<string, unknown> | undefined)?.[configKey];\n const enabled = isRecord(raw) && raw.enabled === true;\n const issues = collectChannelSetupIssues(id, raw, entry);\n const hasAnyConfig = isRecord(raw) ? Object.keys(raw).some((key) => key !== 'enabled') : Boolean(raw);\n const ready = issues.length === 0 && (enabled || hasAnyConfig || hasChannelSetupOutsideConfig(id, raw));\n return {\n enabled,\n ready,\n state: enabled ? (ready ? 'ready' : 'needs_setup') : 'disabled',\n issues,\n };\n}\n\nexport function isChannelConfigured(config: Config, channelId: string): boolean {\n return getChannelSetupStatus(config, channelId).ready;\n}\n\nexport function getConfiguredChannelIds(config: Config): string[] {\n return Object.keys(config.channels ?? {})\n .map(normalizeChannelId)\n .filter((id) => id && isChannelConfigured(config, id));\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-helpers.js","names":[],"sources":["../../../src/channels/config-helpers.ts"],"sourcesContent":["/**\n * Channel config adapter factories.\n */\n\nimport type { Config } from '../config/schema.js';\nimport type { ChannelConfigAdapter } from './plugin-types.js';\n\nexport function createTopLevelChannelConfigAdapter<ResolvedAccount>(params: {\n sectionKey: string;\n resolveAccount: (cfg: Config) => ResolvedAccount;\n deleteMode?: 'remove-section' | 'clear-fields';\n resolveAllowFrom?: (account: ResolvedAccount) => Array<string | number> | undefined;\n formatAllowFrom?: (allowFrom: Array<string | number>) => string[];\n}): ChannelConfigAdapter<ResolvedAccount> {\n return {\n listAccountIds: () => ['default'],\n resolveAccount: (cfg) => params.resolveAccount(cfg),\n defaultAccountId: () => 'default',\n isEnabled: (account) => (account as { enabled?: boolean }).enabled !== false,\n resolveAllowFrom: params.resolveAllowFrom\n ? ({ cfg }) => params.resolveAllowFrom!(params.resolveAccount(cfg))\n : undefined,\n formatAllowFrom: params.formatAllowFrom\n ? ({ allowFrom }) => params.formatAllowFrom!(allowFrom)\n : undefined,\n };\n}\n\nexport function createScopedChannelConfigAdapter<ResolvedAccount>(params: {\n sectionKey: string;\n listAccountIds: (cfg: Config) => string[];\n resolveAccount: (cfg: Config, accountId?: string | null) => ResolvedAccount;\n defaultAccountId: (cfg: Config) => string;\n resolveAllowFrom: (account: ResolvedAccount) => Array<string | number> | undefined;\n formatAllowFrom: (allowFrom: Array<string | number>) => string[];\n}): ChannelConfigAdapter<ResolvedAccount> {\n return {\n listAccountIds: params.listAccountIds,\n resolveAccount: params.resolveAccount,\n defaultAccountId: params.defaultAccountId,\n isEnabled: (account) => (account as { enabled?: boolean }).enabled !== false,\n resolveAllowFrom: ({ cfg, accountId }) =>\n params.resolveAllowFrom(params.resolveAccount(cfg, accountId)),\n formatAllowFrom: ({ allowFrom }) => params.formatAllowFrom(allowFrom),\n };\n}\n\nexport function createHybridChannelConfigAdapter<ResolvedAccount>(params: {\n sectionKey: string;\n listAccountIds: (cfg: Config) => string[];\n resolveAccount: (cfg: Config, accountId?: string | null) => ResolvedAccount;\n resolveAllowFrom?: (account: ResolvedAccount) => Array<string | number> | undefined;\n formatAllowFrom?: (allowFrom: Array<string | number>) => string[];\n}): ChannelConfigAdapter<ResolvedAccount> {\n return {\n listAccountIds: params.listAccountIds,\n resolveAccount: params.resolveAccount,\n defaultAccountId: () => 'default',\n isEnabled: (account) => (account as { enabled?: boolean }).enabled !== false,\n resolveAllowFrom: params.resolveAllowFrom\n ? ({ cfg, accountId }) => params.resolveAllowFrom!(params.resolveAccount(cfg, accountId))\n : undefined,\n formatAllowFrom: params.formatAllowFrom\n ? ({ allowFrom }) => params.formatAllowFrom!(allowFrom)\n : undefined,\n };\n}\n"],"mappings":";AAOA,SAAgB,mCAAoD,QAM1B;AACxC,QAAO;EACL,sBAAsB,CAAC,UAAU;EACjC,iBAAiB,QAAQ,OAAO,eAAe,IAAI;EACnD,wBAAwB;EACxB,YAAY,YAAa,QAAkC,YAAY;EACvE,kBAAkB,OAAO,oBACpB,EAAE,UAAU,OAAO,iBAAkB,OAAO,eAAe,IAAI,CAAC,GACjE,KAAA;EACJ,iBAAiB,OAAO,mBACnB,EAAE,gBAAgB,OAAO,gBAAiB,UAAU,GACrD,KAAA;EACL;;AAGH,SAAgB,iCAAkD,QAOxB;AACxC,QAAO;EACL,gBAAgB,OAAO;EACvB,gBAAgB,OAAO;EACvB,kBAAkB,OAAO;EACzB,YAAY,YAAa,QAAkC,YAAY;EACvE,mBAAmB,EAAE,KAAK,gBACxB,OAAO,iBAAiB,OAAO,eAAe,KAAK,UAAU,CAAC;EAChE,kBAAkB,EAAE,gBAAgB,OAAO,gBAAgB,UAAU;EACtE;;AAGH,SAAgB,iCAAkD,QAMxB;AACxC,QAAO;EACL,gBAAgB,OAAO;EACvB,gBAAgB,OAAO;EACvB,wBAAwB;EACxB,YAAY,YAAa,QAAkC,YAAY;EACvE,kBAAkB,OAAO,oBACpB,EAAE,KAAK,gBAAgB,OAAO,iBAAkB,OAAO,eAAe,KAAK,UAAU,CAAC,GACvF,KAAA;EACJ,iBAAiB,OAAO,mBACnB,EAAE,gBAAgB,OAAO,gBAAiB,UAAU,GACrD,KAAA;EACL"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"envelope-timestamp.js","names":[],"sources":["../../../src/channels/envelope-timestamp.ts"],"sourcesContent":["export function formatEnvelopeTimestamp(timezone?: string, now: Date = new Date()): string {\n try {\n const resolvedTimezone =\n timezone?.trim() || Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC';\n const parts = new Intl.DateTimeFormat('en-US', {\n timeZone: resolvedTimezone,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n timeZoneName: 'short',\n }).formatToParts(now);\n\n const map: Record<string, string> = {};\n for (const part of parts) {\n if (part.type !== 'literal') {\n map[part.type] = part.value;\n }\n }\n\n const year = map.year ?? '';\n const month = map.month ?? '';\n const day = map.day ?? '';\n const hour = map.hour ?? '';\n const minute = map.minute ?? '';\n const tzName = map.timeZoneName ?? '';\n\n if (!year || !month || !day || !hour || !minute) {\n return `${now.toISOString().slice(0, 16).replace('T', ' ')} UTC`;\n }\n\n return `${year}-${month}-${day} ${hour}:${minute}${tzName ? ` ${tzName}` : ''}`;\n } catch {\n return `${now.toISOString().slice(0, 16).replace('T', ' ')} UTC`;\n }\n}\n\nexport function prependEnvelopeTimestamp(content: string, timezone?: string): string {\n const text = content.trim();\n if (!text) {\n return content;\n }\n const timestamp = formatEnvelopeTimestamp(timezone);\n return `[${timestamp}] ${content}`;\n}\n\n/** Matches `[YYYY-MM-DD HH:MM]` plus optional ` TZ` inside brackets, as produced by {@link prependEnvelopeTimestamp}. */\nconst ENVELOPE_TIMESTAMP_PREFIX_RE =\n /^\\[\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}(?:\\s+[^\\]]+)?\\]\\s*/;\n\n/**\n * Remove a single leading envelope timestamp prefix from inbound text (session auto-title, etc.).\n * Does not strip arbitrary `[…]` — only the date+time-shaped prefix from {@link formatEnvelopeTimestamp}.\n */\nexport function stripEnvelopeTimestampPrefix(text: string): string {\n return text.replace(ENVELOPE_TIMESTAMP_PREFIX_RE, '');\n}\n\n"],"mappings":";AAAA,SAAgB,wBAAwB,UAAmB,sBAAY,IAAI,MAAM,EAAU;AACzF,KAAI;EACF,MAAM,mBACJ,UAAU,MAAM,IAAI,KAAK,gBAAgB,CAAC,iBAAiB,CAAC,YAAY;EAC1E,MAAM,QAAQ,IAAI,KAAK,eAAe,SAAS;GAC7C,UAAU;GACV,MAAM;GACN,OAAO;GACP,KAAK;GACL,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,cAAc;GACf,CAAC,CAAC,cAAc,IAAI;EAErB,MAAM,MAA8B,EAAE;AACtC,OAAK,MAAM,QAAQ,MACjB,KAAI,KAAK,SAAS,UAChB,KAAI,KAAK,QAAQ,KAAK;EAI1B,MAAM,OAAO,IAAI,QAAQ;EACzB,MAAM,QAAQ,IAAI,SAAS;EAC3B,MAAM,MAAM,IAAI,OAAO;EACvB,MAAM,OAAO,IAAI,QAAQ;EACzB,MAAM,SAAS,IAAI,UAAU;EAC7B,MAAM,SAAS,IAAI,gBAAgB;AAEnC,MAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OACvC,QAAO,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC;AAG7D,SAAO,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,SAAS,IAAI,WAAW;SACrE;AACN,SAAO,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC;;;AAI/D,SAAgB,yBAAyB,SAAiB,UAA2B;AAEnF,KAAI,CADS,QAAQ,MACZ,CACP,QAAO;AAGT,QAAO,IADW,wBAAwB,SACtB,CAAC,IAAI;;;AAI3B,MAAM,+BACJ;;;;;AAMF,SAAgB,6BAA6B,MAAsB;AACjE,QAAO,KAAK,QAAQ,8BAA8B,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec-approval-runtime.js","names":[],"sources":["../../../src/channels/exec-approval-runtime.ts"],"sourcesContent":["/**\n * Channel exec-approval gate — plugins register handlers; agent runtime invokes before risky tools.\n */\n\nimport type { Config } from '../config/schema.js';\n\nexport interface ExecApprovalRequestPayload {\n sessionKey: string;\n channel: string;\n chatId: string;\n accountId?: string;\n toolName: string;\n summary: string;\n details?: Record<string, unknown>;\n}\n\nexport interface ExecApprovalHandler {\n isEnabled(cfg: Config, params: { channel: string; accountId?: string }): boolean;\n requestApproval(cfg: Config, payload: ExecApprovalRequestPayload): Promise<boolean>;\n}\n\nconst handlers = new Map<string, ExecApprovalHandler>();\n\nexport function registerChannelExecApprovalHandler(channelId: string, handler: ExecApprovalHandler): () => void {\n handlers.set(channelId, handler);\n return () => handlers.delete(channelId);\n}\n\nexport async function maybeRequestChannelExecApproval(params: {\n cfg: Config;\n payload: ExecApprovalRequestPayload;\n}): Promise<{ required: boolean; approved: boolean; reason?: string }> {\n const handler = handlers.get(params.payload.channel);\n if (!handler) {\n return { required: false, approved: true };\n }\n if (!handler.isEnabled(params.cfg, { channel: params.payload.channel, accountId: params.payload.accountId })) {\n return { required: false, approved: true };\n }\n const approved = await handler.requestApproval(params.cfg, params.payload);\n return {\n required: true,\n approved,\n reason: approved ? undefined : 'Exec approval denied or timed out',\n };\n}\n"],"mappings":";AAqBA,MAAM,2BAAW,IAAI,KAAkC;AAEvD,SAAgB,mCAAmC,WAAmB,SAA0C;AAC9G,UAAS,IAAI,WAAW,QAAQ;AAChC,cAAa,SAAS,OAAO,UAAU;;AAGzC,eAAsB,gCAAgC,QAGiB;CACrE,MAAM,UAAU,SAAS,IAAI,OAAO,QAAQ,QAAQ;AACpD,KAAI,CAAC,QACH,QAAO;EAAE,UAAU;EAAO,UAAU;EAAM;AAE5C,KAAI,CAAC,QAAQ,UAAU,OAAO,KAAK;EAAE,SAAS,OAAO,QAAQ;EAAS,WAAW,OAAO,QAAQ;EAAW,CAAC,CAC1G,QAAO;EAAE,UAAU;EAAO,UAAU;EAAM;CAE5C,MAAM,WAAW,MAAM,QAAQ,gBAAgB,OAAO,KAAK,OAAO,QAAQ;AAC1E,QAAO;EACL,UAAU;EACV;EACA,QAAQ,WAAW,KAAA,IAAY;EAChC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"health-monitor.js","names":[],"sources":["../../../src/channels/health-monitor.ts"],"sourcesContent":["/**\n * Optional per-account health tracking for channel runtimes.\n */\n\nexport interface ChannelHealthState {\n healthy: boolean;\n lastCheckAt?: number;\n detail?: string;\n}\n\nexport class ChannelHealthMonitor {\n private state = new Map<string, ChannelHealthState>();\n\n set(channelId: string, accountId: string, next: ChannelHealthState): void {\n this.state.set(`${channelId}:${accountId}`, next);\n }\n\n get(channelId: string, accountId: string): ChannelHealthState | undefined {\n return this.state.get(`${channelId}:${accountId}`);\n }\n\n /** Snapshot for diagnostics / `getRuntimeSnapshot()`. */\n toJSON(): Record<string, ChannelHealthState> {\n return Object.fromEntries(this.state);\n }\n}\n"],"mappings":";AAUA,IAAa,uBAAb,MAAkC;CAChC,wBAAgB,IAAI,KAAiC;CAErD,IAAI,WAAmB,WAAmB,MAAgC;AACxE,OAAK,MAAM,IAAI,GAAG,UAAU,GAAG,aAAa,KAAK;;CAGnD,IAAI,WAAmB,WAAmD;AACxE,SAAO,KAAK,MAAM,IAAI,GAAG,UAAU,GAAG,YAAY;;;CAIpD,SAA6C;AAC3C,SAAO,OAAO,YAAY,KAAK,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"heartbeat-scheduler.js","names":[],"sources":["../../../src/channels/heartbeat-scheduler.ts"],"sourcesContent":["/**\n * ChannelHeartbeatScheduler — runs per-account heartbeat probes for plugins\n * that expose a `heartbeat.check(...)` hook, records the result in the shared\n * {@link ChannelHealthMonitor}, and asks the lifecycle supervisor for a soft\n * restart when a check fails (rate-limited to once per minute per channel).\n *\n * Previously this lived as `_scheduleHeartbeat` + `_clearHeartbeatTimers` +\n * `_softRestartChannel` + two private Maps on `ChannelManager`. Extracting it\n * makes the heartbeat policy testable in isolation and lets the lifecycle\n * supervisor focus on plugin start/stop without worrying about timer wiring.\n */\n\nimport type { Config } from '../config/schema.js';\n\nimport type { ChannelPlugin } from './plugin-types.js';\nimport type { ChannelHealthMonitor } from './health-monitor.js';\nimport { createLogger } from '../utils/logger.js';\n\nconst log = createLogger('ChannelHeartbeatScheduler');\n\n/** Minimum gap between successive soft-restart attempts for the same channel. */\nconst HEARTBEAT_RESTART_THROTTLE_MS = 60_000;\n\nexport interface ChannelHeartbeatSchedulerOptions {\n /** Effective config snapshot (per-account listing comes from `plugin.config.listAccountIds(cfg)`). */\n getConfig: () => Config;\n /** Shared health monitor that channel APIs surface to the UI. */\n healthMonitor: ChannelHealthMonitor;\n /**\n * Triggered when a check fails AND we are past the restart-throttle window.\n * The supervisor performs `stop()` + `startPlugin()`; the scheduler does not\n * touch plugin lifecycle directly.\n */\n requestSoftRestart: (channelId: string) => void;\n}\n\nexport class ChannelHeartbeatScheduler {\n private readonly opts: ChannelHeartbeatSchedulerOptions;\n /** Key shape: `${pluginId}:${accountId}`. */\n private readonly timers = new Map<string, ReturnType<typeof setInterval>>();\n private readonly lastRestartAt = new Map<string, number>();\n\n constructor(opts: ChannelHeartbeatSchedulerOptions) {\n this.opts = opts;\n }\n\n /** Register heartbeat checks for every account exposed by the plugin. */\n schedule(plugin: ChannelPlugin): void {\n const hb = plugin.heartbeat;\n if (!hb) return;\n\n this.clear(plugin.id);\n\n let accountIds: string[];\n try {\n accountIds = plugin.config.listAccountIds(this.opts.getConfig());\n } catch (err) {\n log.warn({ channel: plugin.id, err }, 'Heartbeat: failed to list accounts');\n return;\n }\n\n for (const accountId of accountIds) {\n const key = `${plugin.id}:${accountId}`;\n const timer = setInterval(\n () => void this.runProbe(plugin, accountId),\n hb.intervalMs,\n );\n this.timers.set(key, timer);\n }\n }\n\n /** Drop every probe scheduled for `pluginId` (called on stop / soft-restart). */\n clear(pluginId: string): void {\n const prefix = `${pluginId}:`;\n for (const key of [...this.timers.keys()]) {\n if (!key.startsWith(prefix)) continue;\n clearInterval(this.timers.get(key)!);\n this.timers.delete(key);\n }\n }\n\n /** Test helper / process shutdown. */\n clearAll(): void {\n for (const timer of this.timers.values()) {\n clearInterval(timer);\n }\n this.timers.clear();\n this.lastRestartAt.clear();\n }\n\n private async runProbe(plugin: ChannelPlugin, accountId: string): Promise<void> {\n const hb = plugin.heartbeat;\n if (!hb) return;\n const cfg = this.opts.getConfig();\n try {\n const r = await hb.check({ cfg, accountId });\n this.opts.healthMonitor.set(plugin.id, accountId, {\n healthy: r.healthy,\n lastCheckAt: Date.now(),\n detail:\n typeof r.details === 'string'\n ? r.details\n : r.details != null\n ? JSON.stringify(r.details)\n : undefined,\n });\n if (!r.healthy) {\n log.warn(\n { channel: plugin.id, accountId, detail: r.details },\n 'Channel heartbeat unhealthy',\n );\n const now = Date.now();\n const last = this.lastRestartAt.get(plugin.id) ?? 0;\n if (now - last < HEARTBEAT_RESTART_THROTTLE_MS) {\n return;\n }\n this.lastRestartAt.set(plugin.id, now);\n this.opts.requestSoftRestart(plugin.id);\n }\n } catch (err) {\n this.opts.healthMonitor.set(plugin.id, accountId, {\n healthy: false,\n lastCheckAt: Date.now(),\n detail: err instanceof Error ? err.message : String(err),\n });\n log.error({ channel: plugin.id, accountId, err }, 'Channel heartbeat check failed');\n }\n }\n}\n"],"mappings":";;;aAgBkD;AAElD,MAAM,MAAM,aAAa,4BAA4B;;AAGrD,MAAM,gCAAgC;AAetC,IAAa,4BAAb,MAAuC;CACrC;;CAEA,yBAA0B,IAAI,KAA6C;CAC3E,gCAAiC,IAAI,KAAqB;CAE1D,YAAY,MAAwC;AAClD,OAAK,OAAO;;;CAId,SAAS,QAA6B;EACpC,MAAM,KAAK,OAAO;AAClB,MAAI,CAAC,GAAI;AAET,OAAK,MAAM,OAAO,GAAG;EAErB,IAAI;AACJ,MAAI;AACF,gBAAa,OAAO,OAAO,eAAe,KAAK,KAAK,WAAW,CAAC;WACzD,KAAK;AACZ,OAAI,KAAK;IAAE,SAAS,OAAO;IAAI;IAAK,EAAE,qCAAqC;AAC3E;;AAGF,OAAK,MAAM,aAAa,YAAY;GAClC,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG;GAC5B,MAAM,QAAQ,kBACN,KAAK,KAAK,SAAS,QAAQ,UAAU,EAC3C,GAAG,WACJ;AACD,QAAK,OAAO,IAAI,KAAK,MAAM;;;;CAK/B,MAAM,UAAwB;EAC5B,MAAM,SAAS,GAAG,SAAS;AAC3B,OAAK,MAAM,OAAO,CAAC,GAAG,KAAK,OAAO,MAAM,CAAC,EAAE;AACzC,OAAI,CAAC,IAAI,WAAW,OAAO,CAAE;AAC7B,iBAAc,KAAK,OAAO,IAAI,IAAI,CAAE;AACpC,QAAK,OAAO,OAAO,IAAI;;;;CAK3B,WAAiB;AACf,OAAK,MAAM,SAAS,KAAK,OAAO,QAAQ,CACtC,eAAc,MAAM;AAEtB,OAAK,OAAO,OAAO;AACnB,OAAK,cAAc,OAAO;;CAG5B,MAAc,SAAS,QAAuB,WAAkC;EAC9E,MAAM,KAAK,OAAO;AAClB,MAAI,CAAC,GAAI;EACT,MAAM,MAAM,KAAK,KAAK,WAAW;AACjC,MAAI;GACF,MAAM,IAAI,MAAM,GAAG,MAAM;IAAE;IAAK;IAAW,CAAC;AAC5C,QAAK,KAAK,cAAc,IAAI,OAAO,IAAI,WAAW;IAChD,SAAS,EAAE;IACX,aAAa,KAAK,KAAK;IACvB,QACE,OAAO,EAAE,YAAY,WACjB,EAAE,UACF,EAAE,WAAW,OACX,KAAK,UAAU,EAAE,QAAQ,GACzB,KAAA;IACT,CAAC;AACF,OAAI,CAAC,EAAE,SAAS;AACd,QAAI,KACF;KAAE,SAAS,OAAO;KAAI;KAAW,QAAQ,EAAE;KAAS,EACpD,8BACD;IACD,MAAM,MAAM,KAAK,KAAK;AAEtB,QAAI,OADS,KAAK,cAAc,IAAI,OAAO,GAAG,IAAI,KACjC,8BACf;AAEF,SAAK,cAAc,IAAI,OAAO,IAAI,IAAI;AACtC,SAAK,KAAK,mBAAmB,OAAO,GAAG;;WAElC,KAAK;AACZ,QAAK,KAAK,cAAc,IAAI,OAAO,IAAI,WAAW;IAChD,SAAS;IACT,aAAa,KAAK,KAAK;IACvB,QAAQ,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;IACzD,CAAC;AACF,OAAI,MAAM;IAAE,SAAS,OAAO;IAAI;IAAW;IAAK,EAAE,iCAAiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"internal-outbound.js","names":[],"sources":["../../../src/channels/internal-outbound.ts"],"sourcesContent":["/**\n * Synthetic `OutboundMessage.channel` for internal agent runs (e.g. heartbeat without delivery).\n * {@link ChannelManager.send} drops these without treating them as unknown plugins.\n */\nexport const INTERNAL_OUTBOUND_DROP_CHANNEL = '__xopc_internal';\n"],"mappings":";;;;;AAIA,MAAa,iCAAiC"}