@xopcai/xopc 0.0.149 → 0.0.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2873) hide show
  1. package/README.md +10 -0
  2. package/README.zh-CN.md +10 -0
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/dashscope/src/image-generation-provider.js +0 -2
  5. package/dist/extensions/demo-memory/src/index.js +0 -2
  6. package/dist/extensions/fal/src/image-generation-provider.js +0 -2
  7. package/dist/extensions/feishu/src/actions/message-action-handler.js +0 -2
  8. package/dist/extensions/feishu/src/adapters/cli-login.js +0 -2
  9. package/dist/extensions/feishu/src/adapters/gateway-setup.js +0 -2
  10. package/dist/extensions/feishu/src/adapters/onboard-cli.js +0 -2
  11. package/dist/extensions/feishu/src/auth/app-registration.js +0 -2
  12. package/dist/extensions/feishu/src/auth/pairing.js +0 -2
  13. package/dist/extensions/feishu/src/auth/paths.js +0 -2
  14. package/dist/extensions/feishu/src/directory/directory-adapter.js +0 -2
  15. package/dist/extensions/feishu/src/format.js +0 -2
  16. package/dist/extensions/feishu/src/index.js +0 -2
  17. package/dist/extensions/feishu/src/outbound/actions.js +0 -2
  18. package/dist/extensions/feishu/src/outbound/media-load.js +0 -2
  19. package/dist/extensions/feishu/src/outbound/outbound-adapter.js +0 -2
  20. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js +0 -2
  21. package/dist/extensions/feishu/src/pairing-config-resolver.js +0 -2
  22. package/dist/extensions/feishu/src/plugin.js +0 -2
  23. package/dist/extensions/feishu/src/schema/config-schema.js +0 -2
  24. package/dist/extensions/feishu/src/state/accounts.js +0 -2
  25. package/dist/extensions/feishu/src/state/message-bindings.js +0 -2
  26. package/dist/extensions/feishu/src/state/thread-bindings.js +0 -2
  27. package/dist/extensions/feishu/src/status/doctor.js +0 -2
  28. package/dist/extensions/feishu/src/status/status-adapter.js +0 -2
  29. package/dist/extensions/feishu/src/streaming/streaming-adapter.js +0 -2
  30. package/dist/extensions/feishu/src/subagent-hooks.js +0 -2
  31. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js +0 -2
  32. package/dist/extensions/feishu/src/tools/docx/docx-color-text.d.ts +6 -3386
  33. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js +0 -2
  34. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.d.ts +16 -16927
  35. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js +0 -2
  36. package/dist/extensions/feishu/src/tools/tools.js +0 -2
  37. package/dist/extensions/feishu/src/transport/client/client.js +2 -4
  38. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js +0 -2
  39. package/dist/extensions/feishu/src/transport/client/lark-sdk.d.ts +3 -0
  40. package/dist/extensions/feishu/src/transport/client/lark-sdk.js +14 -0
  41. package/dist/extensions/feishu/src/transport/reliability/dedupe.js +0 -2
  42. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js +0 -2
  43. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +0 -2
  44. package/dist/extensions/feishu/src/transport/socket-mode/retry.js +0 -2
  45. package/dist/extensions/feishu/src/transport/text/mentions.js +0 -2
  46. package/dist/extensions/feishu/src/transport/webhook/monitor.js +3 -5
  47. package/dist/extensions/feishu/src/ui/config-surface.js +0 -2
  48. package/dist/extensions/feishu/src/workflow-progress.js +0 -2
  49. package/dist/extensions/google/src/image-generation-provider.js +0 -2
  50. package/dist/extensions/minimax/src/image-generation-provider.js +0 -2
  51. package/dist/extensions/openai/src/image-generation-provider.js +0 -2
  52. package/dist/extensions/telegram/src/access-control.js +0 -2
  53. package/dist/extensions/telegram/src/account-manager.js +0 -2
  54. package/dist/extensions/telegram/src/actions/message-actions.js +0 -2
  55. package/dist/extensions/telegram/src/adapters/command-adapter.js +0 -2
  56. package/dist/extensions/telegram/src/adapters/config-adapter.js +0 -2
  57. package/dist/extensions/telegram/src/adapters/debounce-keys.js +0 -2
  58. package/dist/extensions/telegram/src/adapters/gateway-adapter.js +0 -2
  59. package/dist/extensions/telegram/src/adapters/gateway-setup.js +0 -2
  60. package/dist/extensions/telegram/src/adapters/inbound-access.js +0 -2
  61. package/dist/extensions/telegram/src/adapters/index.js +0 -2
  62. package/dist/extensions/telegram/src/adapters/onboard-cli.js +0 -2
  63. package/dist/extensions/telegram/src/adapters/outbound-adapter.js +0 -2
  64. package/dist/extensions/telegram/src/adapters/security-adapter.js +0 -2
  65. package/dist/extensions/telegram/src/adapters/setup-wizard.js +0 -2
  66. package/dist/extensions/telegram/src/adapters/status-adapter.js +0 -2
  67. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +0 -2
  68. package/dist/extensions/telegram/src/api-root.js +0 -2
  69. package/dist/extensions/telegram/src/approval-delivery.js +0 -2
  70. package/dist/extensions/telegram/src/approval-store.js +0 -2
  71. package/dist/extensions/telegram/src/caption.js +0 -2
  72. package/dist/extensions/telegram/src/command-handler.js +0 -2
  73. package/dist/extensions/telegram/src/config-schema.js +0 -2
  74. package/dist/extensions/telegram/src/conversation-id.js +0 -2
  75. package/dist/extensions/telegram/src/dedupe.js +0 -2
  76. package/dist/extensions/telegram/src/delivery-chat-id.js +0 -2
  77. package/dist/extensions/telegram/src/doctor.js +0 -2
  78. package/dist/extensions/telegram/src/draft-stream-lifecycle.js +0 -2
  79. package/dist/extensions/telegram/src/draft-stream-loop.js +0 -2
  80. package/dist/extensions/telegram/src/draft-stream.js +0 -2
  81. package/dist/extensions/telegram/src/errors.js +0 -2
  82. package/dist/extensions/telegram/src/exec-approval-handler.js +0 -2
  83. package/dist/extensions/telegram/src/exec-approvals.js +0 -2
  84. package/dist/extensions/telegram/src/focus-handler.js +0 -2
  85. package/dist/extensions/telegram/src/format.js +0 -2
  86. package/dist/extensions/telegram/src/group-config-resolver.js +0 -2
  87. package/dist/extensions/telegram/src/inbound-coalescer.js +0 -2
  88. package/dist/extensions/telegram/src/inbound-processor.js +0 -2
  89. package/dist/extensions/telegram/src/index.js +0 -2
  90. package/dist/extensions/telegram/src/inline-keyboards.js +0 -2
  91. package/dist/extensions/telegram/src/network-errors.js +0 -2
  92. package/dist/extensions/telegram/src/outbound-sender.js +0 -2
  93. package/dist/extensions/telegram/src/pairing-config-resolver.js +0 -2
  94. package/dist/extensions/telegram/src/plugin-defaults.js +0 -2
  95. package/dist/extensions/telegram/src/plugin.js +0 -2
  96. package/dist/extensions/telegram/src/polling-session.js +0 -2
  97. package/dist/extensions/telegram/src/proxy-fetch.js +0 -2
  98. package/dist/extensions/telegram/src/reactions.js +0 -2
  99. package/dist/extensions/telegram/src/reply-params.js +0 -2
  100. package/dist/extensions/telegram/src/routing-integration.js +0 -2
  101. package/dist/extensions/telegram/src/send-options.js +0 -2
  102. package/dist/extensions/telegram/src/sent-cache.js +0 -2
  103. package/dist/extensions/telegram/src/startup-errors.js +0 -2
  104. package/dist/extensions/telegram/src/telegram-actions.js +0 -2
  105. package/dist/extensions/telegram/src/telegram-draft-errors.js +0 -2
  106. package/dist/extensions/telegram/src/thread-bindings.js +0 -2
  107. package/dist/extensions/telegram/src/timeout-abort.js +0 -2
  108. package/dist/extensions/telegram/src/token-resolver.js +0 -2
  109. package/dist/extensions/telegram/src/update-offset-store.js +0 -2
  110. package/dist/extensions/telegram/src/workflow-progress.js +0 -2
  111. package/dist/extensions/telegram/xopc.extension.json +1 -1
  112. package/dist/extensions/weixin/src/adapters/onboard-cli.js +0 -2
  113. package/dist/extensions/weixin/src/api/api.js +0 -2
  114. package/dist/extensions/weixin/src/api/config-cache.js +0 -2
  115. package/dist/extensions/weixin/src/api/session-guard.js +0 -2
  116. package/dist/extensions/weixin/src/api/types.js +0 -2
  117. package/dist/extensions/weixin/src/auth/accounts.js +0 -2
  118. package/dist/extensions/weixin/src/auth/login-qr.js +0 -2
  119. package/dist/extensions/weixin/src/auth/pairing.js +0 -2
  120. package/dist/extensions/weixin/src/auth/weixin-account-id.js +0 -2
  121. package/dist/extensions/weixin/src/cdn/aes-ecb.js +0 -2
  122. package/dist/extensions/weixin/src/cdn/cdn-upload.js +0 -2
  123. package/dist/extensions/weixin/src/cdn/cdn-url.js +0 -2
  124. package/dist/extensions/weixin/src/cdn/pic-decrypt.js +0 -2
  125. package/dist/extensions/weixin/src/cdn/upload.js +0 -2
  126. package/dist/extensions/weixin/src/cli/gateway-qr-login.js +0 -2
  127. package/dist/extensions/weixin/src/cli/qr-login.js +0 -2
  128. package/dist/extensions/weixin/src/config-schema.js +0 -2
  129. package/dist/extensions/weixin/src/config-surface.js +0 -2
  130. package/dist/extensions/weixin/src/delivery-to.js +0 -2
  131. package/dist/extensions/weixin/src/index.js +0 -2
  132. package/dist/extensions/weixin/src/media/data-url.js +0 -2
  133. package/dist/extensions/weixin/src/media/media-download.js +0 -2
  134. package/dist/extensions/weixin/src/media/mime.js +0 -2
  135. package/dist/extensions/weixin/src/media/silk-transcode.js +0 -2
  136. package/dist/extensions/weixin/src/messaging/context-token-init.js +0 -2
  137. package/dist/extensions/weixin/src/messaging/debug-mode.js +0 -2
  138. package/dist/extensions/weixin/src/messaging/error-notice.js +0 -2
  139. package/dist/extensions/weixin/src/messaging/inbound.js +0 -2
  140. package/dist/extensions/weixin/src/messaging/markdown-filter.js +0 -2
  141. package/dist/extensions/weixin/src/messaging/process-message.js +0 -2
  142. package/dist/extensions/weixin/src/messaging/send-media.js +0 -2
  143. package/dist/extensions/weixin/src/messaging/send.js +0 -2
  144. package/dist/extensions/weixin/src/messaging/slash-commands.js +0 -2
  145. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js +0 -2
  146. package/dist/extensions/weixin/src/monitor/monitor.js +0 -2
  147. package/dist/extensions/weixin/src/outbound-send.js +0 -2
  148. package/dist/extensions/weixin/src/pairing-config-resolver.js +0 -2
  149. package/dist/extensions/weixin/src/plugin.js +0 -2
  150. package/dist/extensions/weixin/src/routing-integration.js +0 -2
  151. package/dist/extensions/weixin/src/storage/state-dir.js +0 -2
  152. package/dist/extensions/weixin/src/storage/sync-buf.js +0 -2
  153. package/dist/extensions/weixin/src/util/logger.js +0 -2
  154. package/dist/extensions/weixin/src/util/random.js +0 -2
  155. package/dist/extensions/weixin/src/util/redact.js +0 -2
  156. package/dist/extensions/weixin/src/workflow-progress.js +0 -2
  157. package/dist/gateway/static/root/assets/{activity-store-B4s0ipx2.js → activity-store-B3YP7y9d.js} +1 -1
  158. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BaP05tRU.js} +1 -1
  159. package/dist/gateway/static/root/assets/{agents-DZDOcgz5.js → agents-QArUBYV7.js} +1 -1
  160. package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-BirUfJgj.js} +1 -1
  161. package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-D5Cg_a6I.js} +1 -1
  162. package/dist/gateway/static/root/assets/{appearance-settings-BNasnY9D.js → appearance-settings-BBsAkJ56.js} +1 -1
  163. package/dist/gateway/static/root/assets/{apps-page-Cmr-Hvm9.js → apps-page-D1uAUndU.js} +1 -1
  164. package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-D3OmrvFx.js} +1 -1
  165. package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-Cgkm_5mb.js} +1 -1
  166. package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CHvxSz-t.js} +1 -1
  167. package/dist/gateway/static/root/assets/{automations-page-TWgUAI8t.js → automations-page-BWQk03Vu.js} +1 -1
  168. package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-dJR5UuzL.js} +1 -1
  169. package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-v4_7o92L.js} +2 -2
  170. package/dist/gateway/static/root/assets/{browser-settings-page-DBsFItW_.js → browser-settings-page-SruFGuBP.js} +1 -1
  171. package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-BcTjPLiD.js} +1 -1
  172. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-CddBf58y.js} +1 -1
  173. package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-BbDlMRm5.js} +1 -1
  174. package/dist/gateway/static/root/assets/{channels-settings-BBkzrBYy.js → channels-settings-WI5tQ5tn.js} +1 -1
  175. package/dist/gateway/static/root/assets/channels-status-swr-Dt2EROlf.js +1 -0
  176. package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BNthqff-.js} +1 -1
  177. package/dist/gateway/static/root/assets/{connectors-page-DLsZCAw7.js → connectors-page-DavHJ6rR.js} +1 -1
  178. package/dist/gateway/static/root/assets/desktop-pet-CVajXkdj.js +1 -0
  179. package/dist/gateway/static/root/assets/desktop-pet-settings-SHI66eIi.js +1 -0
  180. package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-BdWd7m-p.js} +1 -1
  181. package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-CXDhu3Me.js} +1 -1
  182. package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-CLJTGozU.js} +1 -1
  183. package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-ClxpGfzA.js} +1 -1
  184. package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-CDA3ZJ8k.js} +1 -1
  185. package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-DpXL78pS.js} +1 -1
  186. package/dist/gateway/static/root/assets/{gateway-settings-BrxzyVW2.js → gateway-settings-Co-mXFP_.js} +1 -1
  187. package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-D0SU7dte.js} +1 -1
  188. package/dist/gateway/static/root/assets/{goal-create-dialog-DRVRLc5Z.js → goal-create-dialog-BO6G--Ec.js} +1 -1
  189. package/dist/gateway/static/root/assets/{goal-detail-page-8F7NElzP.js → goal-detail-page-DK8eog4h.js} +1 -1
  190. package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-r71aDqix.js} +1 -1
  191. package/dist/gateway/static/root/assets/{goals-page-BaoLiV8G.js → goals-page-AcROW97U.js} +2 -2
  192. package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-CZOLhkTH.js} +1 -1
  193. package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-F9S1gIFo.js} +1 -1
  194. package/dist/gateway/static/root/assets/index-C46C7Xee.css +1 -0
  195. package/dist/gateway/static/root/assets/{index-CH7XN6KY.js → index-IPmCli0N.js} +41 -41
  196. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BHnh5OoY.js → keyboard-shortcuts-settings-B3CUVfZ8.js} +1 -1
  197. package/dist/gateway/static/root/assets/{local-app-workbench-page-Boe8n4zH.js → local-app-workbench-page-HVq6NUvQ.js} +1 -1
  198. package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-n7YJfRkU.js} +1 -1
  199. package/dist/gateway/static/root/assets/{locale-store-BneNAR8R.js → locale-store-BvcHGPHU.js} +1 -1
  200. package/dist/gateway/static/root/assets/{logs-page-Cb4Uptct.js → logs-page-Dgko6r04.js} +1 -1
  201. package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-1mnXr-JA.js} +1 -1
  202. package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-D2bcxXrT.js} +1 -1
  203. package/dist/gateway/static/root/assets/{messages-t1yPaVCt.js → messages-BH7paqYt.js} +2 -2
  204. package/dist/gateway/static/root/assets/{models-hub-panel-CNiUKZUV.js → models-hub-panel-DD0cEfmR.js} +1 -1
  205. package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-Wjc2utlj.js} +1 -1
  206. package/dist/gateway/static/root/assets/{notes-workbench-C9__VkD6.js → notes-workbench-BkA2yg9K.js} +2 -2
  207. package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-vdljrKuG.js} +1 -1
  208. package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-BHki0l-E.js} +1 -1
  209. package/dist/gateway/static/root/assets/{project-detail-page-CZhuB5kO.js → project-detail-page-CXwVNLgg.js} +1 -1
  210. package/dist/gateway/static/root/assets/{projects-page-BOq4WVdR.js → projects-page-DlfvNcLh.js} +1 -1
  211. package/dist/gateway/static/root/assets/{remote-access-hub-BxGq0ebQ.js → remote-access-hub-BQyEX2Ui.js} +1 -1
  212. package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-Vy4EmvEh.js} +1 -1
  213. package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-CVcwC7k_.js} +1 -1
  214. package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-DhMA1vkR.js} +1 -1
  215. package/dist/gateway/static/root/assets/{sessions-page-B6gSU_Au.js → sessions-page-CqQEW8oT.js} +1 -1
  216. package/dist/gateway/static/root/assets/settings-advanced-gate-M8fleFSc.js +1 -0
  217. package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-C0xcL0vB.js} +1 -1
  218. package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-Cgj4iVpx.js} +1 -1
  219. package/dist/gateway/static/root/assets/{settings-loading-skeleton-vitElc-n.js → settings-loading-skeleton-CC_NmD69.js} +1 -1
  220. package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B7_JZ2rM.js} +1 -1
  221. package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CKuQT4SG.js} +1 -1
  222. package/dist/gateway/static/root/assets/{setup-status-panel-BJeA4mmk.js → setup-status-panel-DvR8Y5YN.js} +1 -1
  223. package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-BmVw-6SJ.js} +1 -1
  224. package/dist/gateway/static/root/assets/{shares-settings-DB2KYA2_.js → shares-settings-C0JYYhGx.js} +1 -1
  225. package/dist/gateway/static/root/assets/skill-reload-api-DBFBczqN.js +1 -0
  226. package/dist/gateway/static/root/assets/{skills-page-Pm0fNe_p.js → skills-page-KAI9qBDD.js} +1 -1
  227. package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-D6d8VAk8.js} +1 -1
  228. package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-EbMQ3TYi.js} +1 -1
  229. package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-D63hJX-S.js} +1 -1
  230. package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-D-I-qki9.js} +1 -1
  231. package/dist/gateway/static/root/assets/{user-context-page-DnLqQyRG.js → user-context-page-Cuft-EbR.js} +1 -1
  232. package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-CPaoS8Zl.js} +1 -1
  233. package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-Bs13qcx1.js} +1 -1
  234. package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-3mnkFvPw.js} +1 -1
  235. package/dist/gateway/static/root/assets/{voice-api-key-field-BiFIIWC4.js → voice-api-key-field-C716UEi9.js} +1 -1
  236. package/dist/gateway/static/root/assets/{work-discovery-page-D2-_bC0J.js → work-discovery-page-CFSkHa0v.js} +1 -1
  237. package/dist/gateway/static/root/assets/{work-item-detail-page-B0FPG4eJ.js → work-item-detail-page-DaapBdoZ.js} +1 -1
  238. package/dist/gateway/static/root/assets/{work-page-BDeVxts_.js → work-page-DMtX92vs.js} +1 -1
  239. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BPzS67fU.js → workflow-run-setup-panel-B9FnZNWZ.js} +1 -1
  240. package/dist/gateway/static/root/assets/{workflows-page-xPhmrRLs.js → workflows-page-BgvE0_Iv.js} +1 -1
  241. package/dist/gateway/static/root/favicon.svg +1 -187
  242. package/dist/gateway/static/root/index.html +7 -7
  243. package/dist/gateway/static/root/logo-dark.svg +1 -185
  244. package/dist/gateway/static/root/logo.svg +1 -185
  245. package/dist/package.js +1 -3
  246. package/dist/src/activity/context.js +0 -2
  247. package/dist/src/activity/emitter.js +0 -2
  248. package/dist/src/activity/service.js +0 -2
  249. package/dist/src/agent/agent-manager.js +0 -2
  250. package/dist/src/agent/agent-scope.js +0 -2
  251. package/dist/src/agent/background-review/coordinator.js +0 -2
  252. package/dist/src/agent/background-review/prompts.js +0 -2
  253. package/dist/src/agent/background-review/run-background-review.js +0 -2
  254. package/dist/src/agent/background-review/settings.js +0 -2
  255. package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
  256. package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
  257. package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
  258. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
  259. package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
  260. package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
  261. package/dist/src/agent/capabilities/definitions.js +0 -2
  262. package/dist/src/agent/capabilities/registry.js +0 -2
  263. package/dist/src/agent/child-agent-factory.js +0 -2
  264. package/dist/src/agent/client-error-format.js +0 -2
  265. package/dist/src/agent/code-intelligence/binary.js +0 -2
  266. package/dist/src/agent/code-intelligence/runtime.js +0 -2
  267. package/dist/src/agent/code-intelligence/tools.js +0 -2
  268. package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
  269. package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
  270. package/dist/src/agent/context/project-context.js +0 -2
  271. package/dist/src/agent/context/workspace-seed.js +0 -2
  272. package/dist/src/agent/context/workspace-state.js +0 -2
  273. package/dist/src/agent/context/workspace.js +0 -2
  274. package/dist/src/agent/embedded/run-for-session.js +0 -2
  275. package/dist/src/agent/embedded/run-turn.js +0 -2
  276. package/dist/src/agent/embedded/runs.js +0 -2
  277. package/dist/src/agent/embedded/session-manager-init.js +0 -2
  278. package/dist/src/agent/embedded/session-runner.js +0 -2
  279. package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
  280. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
  281. package/dist/src/agent/embedded/subscribe-session.js +0 -2
  282. package/dist/src/agent/embedded/system-prompt-override.js +0 -2
  283. package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
  284. package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
  285. package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
  286. package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
  287. package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
  288. package/dist/src/agent/failover-error.js +0 -2
  289. package/dist/src/agent/fallback/candidates.js +0 -2
  290. package/dist/src/agent/fallback/reason.js +0 -2
  291. package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
  292. package/dist/src/agent/goals/checklist-judge.js +0 -2
  293. package/dist/src/agent/goals/checklist-types.js +0 -2
  294. package/dist/src/agent/goals/evaluate-turn.js +0 -2
  295. package/dist/src/agent/goals/goal-locale.js +0 -2
  296. package/dist/src/agent/goals/judge.js +0 -2
  297. package/dist/src/agent/goals/persistent-goal-service.js +0 -2
  298. package/dist/src/agent/goals/post-turn.js +0 -2
  299. package/dist/src/agent/goals/state.js +0 -2
  300. package/dist/src/agent/image/generation/bundled-registry.js +0 -2
  301. package/dist/src/agent/image/generation/bundled.js +0 -2
  302. package/dist/src/agent/image/generation/image-assets.js +0 -2
  303. package/dist/src/agent/image/generation/model-ref.js +0 -2
  304. package/dist/src/agent/image/generation/normalization.js +0 -2
  305. package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
  306. package/dist/src/agent/image/generation/provider-registry.js +0 -2
  307. package/dist/src/agent/image/generation/runtime.js +0 -2
  308. package/dist/src/agent/image/image-helpers.js +0 -2
  309. package/dist/src/agent/image/image-model-fallback.js +0 -2
  310. package/dist/src/agent/image/inbound-image-handling.js +0 -2
  311. package/dist/src/agent/image/load-image-media.js +0 -2
  312. package/dist/src/agent/image/tool-model-config.js +0 -2
  313. package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
  314. package/dist/src/agent/image/understanding/provider-registry.js +0 -2
  315. package/dist/src/agent/image/understanding/runtime.js +0 -2
  316. package/dist/src/agent/image/vision-detection.js +0 -2
  317. package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
  318. package/dist/src/agent/inbound/inbound-loop.js +0 -2
  319. package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
  320. package/dist/src/agent/ipc/bus.js +0 -2
  321. package/dist/src/agent/ipc/inbox.js +0 -2
  322. package/dist/src/agent/ipc/socket.js +0 -2
  323. package/dist/src/agent/ipc/types.js +0 -2
  324. package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
  325. package/dist/src/agent/lifecycle/hook-handler.js +0 -2
  326. package/dist/src/agent/lifecycle/manager.js +0 -2
  327. package/dist/src/agent/lifecycle/progress.js +0 -2
  328. package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
  329. package/dist/src/agent/lifecycle/typing.js +0 -2
  330. package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
  331. package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
  332. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
  333. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
  334. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
  335. package/dist/src/agent/mcp/embedded-mcp.js +0 -2
  336. package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
  337. package/dist/src/agent/mcp/mcp-http.js +0 -2
  338. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
  339. package/dist/src/agent/mcp/mcp-stdio.js +0 -2
  340. package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
  341. package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
  342. package/dist/src/agent/mcp/mcp-transport.js +0 -2
  343. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
  344. package/dist/src/agent/media-generation/model-ref.js +0 -2
  345. package/dist/src/agent/media-generation/normalization.types.js +0 -2
  346. package/dist/src/agent/media-generation/runtime-shared.js +0 -2
  347. package/dist/src/agent/memory/agent-message-access.js +0 -2
  348. package/dist/src/agent/memory/builtin-memory-store.js +0 -2
  349. package/dist/src/agent/memory/builtin-provider.js +0 -2
  350. package/dist/src/agent/memory/compaction.js +0 -2
  351. package/dist/src/agent/memory/context/planner.js +0 -2
  352. package/dist/src/agent/memory/context-fence.js +0 -2
  353. package/dist/src/agent/memory/create-memory-manager.js +0 -2
  354. package/dist/src/agent/memory/dreaming/config.js +0 -2
  355. package/dist/src/agent/memory/dreaming/constants.js +0 -2
  356. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
  357. package/dist/src/agent/memory/dreaming/events.js +0 -2
  358. package/dist/src/agent/memory/dreaming/last-run.js +0 -2
  359. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
  360. package/dist/src/agent/memory/dreaming/preview.js +0 -2
  361. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
  362. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
  363. package/dist/src/agent/memory/dreaming/scope.js +0 -2
  364. package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
  365. package/dist/src/agent/memory/dreaming/utils.js +0 -2
  366. package/dist/src/agent/memory/lifecycle.js +0 -2
  367. package/dist/src/agent/memory/manager.js +0 -2
  368. package/dist/src/agent/memory/memory-config.js +0 -2
  369. package/dist/src/agent/memory/message-sanitizer.js +0 -2
  370. package/dist/src/agent/memory/plugin-discovery.js +0 -2
  371. package/dist/src/agent/memory/sensitivity.js +0 -2
  372. package/dist/src/agent/memory/source-origin.js +0 -2
  373. package/dist/src/agent/memory/stub-memory-provider.js +0 -2
  374. package/dist/src/agent/memory/summary-generator.js +0 -2
  375. package/dist/src/agent/memory/understanding/correction.js +0 -2
  376. package/dist/src/agent/memory/understanding/quality.js +0 -2
  377. package/dist/src/agent/memory/understanding/service.js +0 -2
  378. package/dist/src/agent/memory/user-context-coordinator.js +0 -2
  379. package/dist/src/agent/memory/user-message-text.js +0 -2
  380. package/dist/src/agent/memory/window.js +0 -2
  381. package/dist/src/agent/messaging/command-handler.js +0 -2
  382. package/dist/src/agent/messaging/message-router.js +0 -2
  383. package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
  384. package/dist/src/agent/messaging/stream-manager.js +0 -2
  385. package/dist/src/agent/middleware/context.js +0 -2
  386. package/dist/src/agent/middleware/self-verify.js +0 -2
  387. package/dist/src/agent/models/manager.js +0 -2
  388. package/dist/src/agent/models/request-limiter.js +0 -2
  389. package/dist/src/agent/models/selection.js +0 -2
  390. package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
  391. package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
  392. package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
  393. package/dist/src/agent/orchestration/loop-guard.js +0 -2
  394. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
  395. package/dist/src/agent/prompt/cache-boundary.js +0 -2
  396. package/dist/src/agent/prompt/memory/index.js +0 -2
  397. package/dist/src/agent/prompt/safety.js +0 -2
  398. package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
  399. package/dist/src/agent/prompt/sections/behavior.js +0 -2
  400. package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
  401. package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
  402. package/dist/src/agent/prompt/sections/project-context.js +0 -2
  403. package/dist/src/agent/prompt/sections/tooling.js +0 -2
  404. package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
  405. package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
  406. package/dist/src/agent/prompt/subagent-context.js +0 -2
  407. package/dist/src/agent/prompt/system-prompt-params.js +0 -2
  408. package/dist/src/agent/prompt/system-prompt.js +0 -2
  409. package/dist/src/agent/prompt/system-reminder.js +0 -2
  410. package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
  411. package/dist/src/agent/reply/post-compaction-context.js +0 -2
  412. package/dist/src/agent/reply/startup-context.js +0 -2
  413. package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
  414. package/dist/src/agent/sandbox/command-validator.js +0 -2
  415. package/dist/src/agent/sandbox/exec-policy.js +0 -2
  416. package/dist/src/agent/sandbox/path-policy.js +0 -2
  417. package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
  418. package/dist/src/agent/sandbox/types.js +0 -2
  419. package/dist/src/agent/service/async-queue.js +0 -2
  420. package/dist/src/agent/service/btw-query.js +0 -2
  421. package/dist/src/agent/service/build-direct-message-content.js +0 -2
  422. package/dist/src/agent/service/direct-turn-helpers.js +0 -2
  423. package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
  424. package/dist/src/agent/service/process-direct-one-shot.js +0 -2
  425. package/dist/src/agent/service/process-direct-streaming.js +0 -2
  426. package/dist/src/agent/service/session-context-report.js +0 -2
  427. package/dist/src/agent/service/webchat-tts.js +0 -2
  428. package/dist/src/agent/service-inbound-utils.js +0 -2
  429. package/dist/src/agent/service.js +0 -2
  430. package/dist/src/agent/session/session-config-service.js +0 -2
  431. package/dist/src/agent/session/session-context.js +0 -2
  432. package/dist/src/agent/session/session-hydrator.js +0 -2
  433. package/dist/src/agent/session/session-inspector.js +0 -2
  434. package/dist/src/agent/session/session-lifecycle.js +0 -2
  435. package/dist/src/agent/session/session-state-bag.js +0 -2
  436. package/dist/src/agent/session/tracker.js +0 -2
  437. package/dist/src/agent/skills/config.js +0 -2
  438. package/dist/src/agent/skills/filesystem-watcher.js +0 -2
  439. package/dist/src/agent/skills/format-skills-prompt.js +0 -2
  440. package/dist/src/agent/skills/hub-hash.js +0 -2
  441. package/dist/src/agent/skills/hub-lock.js +0 -2
  442. package/dist/src/agent/skills/hub-pull.js +0 -2
  443. package/dist/src/agent/skills/index.js +0 -2
  444. package/dist/src/agent/skills/install-target.js +0 -2
  445. package/dist/src/agent/skills/installer.js +0 -2
  446. package/dist/src/agent/skills/managed-store.js +0 -2
  447. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
  448. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
  449. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
  450. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
  451. package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
  452. package/dist/src/agent/skills/marketplace/registry.js +0 -2
  453. package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
  454. package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
  455. package/dist/src/agent/skills/required-env-vars.js +0 -2
  456. package/dist/src/agent/skills/scanner.js +0 -2
  457. package/dist/src/agent/skills/skill-manage-ops.js +0 -2
  458. package/dist/src/agent/skills/skill-manager.js +0 -2
  459. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
  460. package/dist/src/agent/skills/skill-tool-gating.js +0 -2
  461. package/dist/src/agent/skills/skill-view-path.js +0 -2
  462. package/dist/src/agent/skills/skills-marketplace.js +0 -2
  463. package/dist/src/agent/skills/test-framework.js +0 -2
  464. package/dist/src/agent/skills/watcher.js +0 -2
  465. package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
  466. package/dist/src/agent/source-context/injector.js +0 -2
  467. package/dist/src/agent/source-context/types.js +0 -2
  468. package/dist/src/agent/starter-agents.js +0 -2
  469. package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
  470. package/dist/src/agent/tool-manuals/browser.js +0 -2
  471. package/dist/src/agent/tool-manuals/index.js +0 -2
  472. package/dist/src/agent/tool-manuals/xopc-use.js +0 -2
  473. package/dist/src/agent/tools/apply-patch.js +0 -2
  474. package/dist/src/agent/tools/automation-tool.js +0 -2
  475. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
  476. package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
  477. package/dist/src/agent/tools/chain-tracker.js +0 -2
  478. package/dist/src/agent/tools/clarify-tool.js +0 -2
  479. package/dist/src/agent/tools/cli-clarify.js +0 -2
  480. package/dist/src/agent/tools/communication.js +0 -2
  481. package/dist/src/agent/tools/composio-tool.js +0 -2
  482. package/dist/src/agent/tools/concurrency.js +0 -2
  483. package/dist/src/agent/tools/create-share-tool.js +0 -2
  484. package/dist/src/agent/tools/curated-memory-tool.js +0 -2
  485. package/dist/src/agent/tools/delegate-tool.js +0 -2
  486. package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
  487. package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
  488. package/dist/src/agent/tools/dreaming-tool.js +0 -2
  489. package/dist/src/agent/tools/edit-diff.js +0 -2
  490. package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
  491. package/dist/src/agent/tools/error-tracker.js +0 -2
  492. package/dist/src/agent/tools/exec-command.js +0 -2
  493. package/dist/src/agent/tools/execute-code-tool.js +0 -2
  494. package/dist/src/agent/tools/executor.js +0 -2
  495. package/dist/src/agent/tools/factory.js +0 -2
  496. package/dist/src/agent/tools/find.js +0 -2
  497. package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
  498. package/dist/src/agent/tools/goal-tool.js +0 -2
  499. package/dist/src/agent/tools/grep.js +0 -2
  500. package/dist/src/agent/tools/image-generate-tool.js +0 -2
  501. package/dist/src/agent/tools/image-tool.js +0 -2
  502. package/dist/src/agent/tools/list-dir.js +0 -2
  503. package/dist/src/agent/tools/media-read-tool.js +0 -2
  504. package/dist/src/agent/tools/memory-tool.js +0 -2
  505. package/dist/src/agent/tools/metadata.js +0 -2
  506. package/dist/src/agent/tools/read.js +0 -2
  507. package/dist/src/agent/tools/search/http.js +0 -2
  508. package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
  509. package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
  510. package/dist/src/agent/tools/search/providers/brave.js +0 -2
  511. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
  512. package/dist/src/agent/tools/search/providers/searxng.js +0 -2
  513. package/dist/src/agent/tools/search/providers/tavily.js +0 -2
  514. package/dist/src/agent/tools/search/region.js +0 -2
  515. package/dist/src/agent/tools/search/registry.js +0 -2
  516. package/dist/src/agent/tools/search/resolve-config.js +0 -2
  517. package/dist/src/agent/tools/send-media.js +0 -2
  518. package/dist/src/agent/tools/session-search-tool.js +0 -2
  519. package/dist/src/agent/tools/session-status-tool.js +0 -2
  520. package/dist/src/agent/tools/skill-install-tool.js +0 -2
  521. package/dist/src/agent/tools/skill-manage-tool.js +0 -2
  522. package/dist/src/agent/tools/skills-tools.js +0 -2
  523. package/dist/src/agent/tools/structured-output.js +0 -2
  524. package/dist/src/agent/tools/todo-tool.js +0 -2
  525. package/dist/src/agent/tools/tool-manual-tool.js +0 -2
  526. package/dist/src/agent/tools/tool-paths.js +0 -2
  527. package/dist/src/agent/tools/truncate.js +0 -2
  528. package/dist/src/agent/tools/tts-tool.js +0 -2
  529. package/dist/src/agent/tools/update-plan-tool.js +0 -2
  530. package/dist/src/agent/tools/url-safety.js +0 -2
  531. package/dist/src/agent/tools/usage-analyzer.js +0 -2
  532. package/dist/src/agent/tools/web-extract.js +0 -2
  533. package/dist/src/agent/tools/web.js +4 -4
  534. package/dist/src/agent/tools/workflow-tool.js +0 -2
  535. package/dist/src/agent/tools/write.js +0 -2
  536. package/dist/src/agent/tools/xopc-use-tool.js +0 -2
  537. package/dist/src/agent/transcript/google-api.js +0 -2
  538. package/dist/src/agent/transcript/model-selection.js +0 -2
  539. package/dist/src/agent/transcript/provider-capabilities.js +0 -2
  540. package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
  541. package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
  542. package/dist/src/agent/transcript/thinking-types.js +0 -2
  543. package/dist/src/agent/transcript/thinking.js +0 -2
  544. package/dist/src/agent/transcript/tool-call-id.js +0 -2
  545. package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
  546. package/dist/src/agent/transcript/transcript-policy.js +0 -2
  547. package/dist/src/agent/workflow/agent-progress.js +0 -2
  548. package/dist/src/agent/workflow/builtins/index.js +0 -2
  549. package/dist/src/agent/workflow/catalog.js +0 -2
  550. package/dist/src/agent/workflow/progress-broker.js +0 -2
  551. package/dist/src/agent/workflow/snapshot-empty.js +0 -2
  552. package/dist/src/agent/workflow/snapshot.js +0 -2
  553. package/dist/src/agent/workflow/step-labels.js +0 -2
  554. package/dist/src/agent/workflow/structured-output-tool.js +0 -2
  555. package/dist/src/agent/workflow/subagent-runner.js +0 -2
  556. package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
  557. package/dist/src/agent/workspace-runtime/registry.js +0 -2
  558. package/dist/src/agent-manifest/index.js +0 -2
  559. package/dist/src/agent-manifest/preset-chain.js +0 -2
  560. package/dist/src/agent-manifest/prompt.js +0 -2
  561. package/dist/src/agent-manifest/resolver.js +0 -2
  562. package/dist/src/agent-manifest/schema.js +0 -2
  563. package/dist/src/agent-manifest/validator.js +0 -2
  564. package/dist/src/agent-runtime/boundary-guard.js +0 -2
  565. package/dist/src/agent-runtime/memory-runtime.js +0 -2
  566. package/dist/src/agent-runtime/model-router.js +0 -2
  567. package/dist/src/agent-runtime/run-trace.js +0 -2
  568. package/dist/src/agent-runtime/runtime-profile.js +0 -2
  569. package/dist/src/agent-runtime/tool-registry.js +0 -2
  570. package/dist/src/agent-runtime/workflow-runtime.js +0 -2
  571. package/dist/src/ai-assist/text-assist.js +0 -2
  572. package/dist/src/auth/credentials.js +0 -2
  573. package/dist/src/auth/index.js +0 -2
  574. package/dist/src/auth/oauth/anthropic.js +0 -2
  575. package/dist/src/auth/oauth/github-copilot.js +0 -2
  576. package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
  577. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
  578. package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
  579. package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
  580. package/dist/src/auth/oauth/kimi-coding.js +0 -2
  581. package/dist/src/auth/oauth/minimax-cn.js +0 -2
  582. package/dist/src/auth/oauth/minimax.js +0 -2
  583. package/dist/src/auth/oauth/openai-codex.js +0 -2
  584. package/dist/src/auth/oauth/pkce.js +0 -2
  585. package/dist/src/auth/profiles/oauth.js +0 -2
  586. package/dist/src/auth/profiles/order.js +0 -2
  587. package/dist/src/auth/profiles/profiles.js +0 -2
  588. package/dist/src/auth/profiles/store.js +0 -2
  589. package/dist/src/auth/sync-provider-auth.js +0 -2
  590. package/dist/src/automations/api/routes.js +0 -2
  591. package/dist/src/automations/domain/schedule.js +0 -2
  592. package/dist/src/automations/domain/validation.js +0 -2
  593. package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
  594. package/dist/src/automations/draft/automation-draft-service.js +0 -2
  595. package/dist/src/automations/draft/automation-draft-validator.js +0 -2
  596. package/dist/src/automations/product-events.js +0 -2
  597. package/dist/src/automations/service/action-executor.js +0 -2
  598. package/dist/src/automations/service/automation-service.js +0 -2
  599. package/dist/src/automations/storage/automation-repository.js +0 -2
  600. package/dist/src/automations/storage/automation-run-repository.js +0 -2
  601. package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
  602. package/dist/src/browser/actions/registry.js +0 -2
  603. package/dist/src/browser/backend-from-config.js +0 -2
  604. package/dist/src/browser/browser-command-timeout.js +0 -2
  605. package/dist/src/browser/cache-dir-policy.js +0 -2
  606. package/dist/src/browser/cdp-local-launcher.js +0 -2
  607. package/dist/src/browser/cdp-supervisor.js +0 -2
  608. package/dist/src/browser/free-port.js +0 -2
  609. package/dist/src/browser/humanize.js +0 -2
  610. package/dist/src/browser/install-lock.js +0 -2
  611. package/dist/src/browser/manager.js +0 -2
  612. package/dist/src/browser/pipeline/output.js +0 -2
  613. package/dist/src/browser/pipeline/runner.js +0 -2
  614. package/dist/src/browser/pipeline/schema.js +0 -2
  615. package/dist/src/browser/pipeline/source.js +0 -2
  616. package/dist/src/browser/pipeline/template.js +0 -2
  617. package/dist/src/browser/providers/browser-ext-install.js +0 -2
  618. package/dist/src/browser/providers/browser-use.js +0 -2
  619. package/dist/src/browser/providers/browserbase.js +0 -2
  620. package/dist/src/browser/providers/cloakbrowser.js +0 -2
  621. package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
  622. package/dist/src/browser/providers/extension.js +0 -2
  623. package/dist/src/browser/providers/playwright-doctor.js +13 -4
  624. package/dist/src/browser/providers/playwright-install.js +0 -2
  625. package/dist/src/browser/readiness.js +0 -2
  626. package/dist/src/browser/schemas.js +0 -2
  627. package/dist/src/browser/session-lifecycle.js +0 -2
  628. package/dist/src/browser/snapshot-helpers.js +0 -2
  629. package/dist/src/browser/stealth.js +0 -2
  630. package/dist/src/browser/url-policy.js +0 -2
  631. package/dist/src/capabilities/store-connector.js +0 -2
  632. package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
  633. package/dist/src/channels/attachments/inbound-persist.js +0 -2
  634. package/dist/src/channels/attachments/inbound-types.js +0 -2
  635. package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
  636. package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
  637. package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
  638. package/dist/src/channels/config-helpers.js +0 -2
  639. package/dist/src/channels/envelope-timestamp.js +0 -2
  640. package/dist/src/channels/exec-approval-runtime.js +0 -2
  641. package/dist/src/channels/health-monitor.js +0 -2
  642. package/dist/src/channels/heartbeat-scheduler.js +0 -2
  643. package/dist/src/channels/internal-outbound.js +0 -2
  644. package/dist/src/channels/lifecycle-supervisor.js +0 -2
  645. package/dist/src/channels/manager.js +0 -2
  646. package/dist/src/channels/media.js +0 -2
  647. package/dist/src/channels/outbound/deliver.js +0 -2
  648. package/dist/src/channels/outbound/normalize.js +0 -2
  649. package/dist/src/channels/outbound/persist-store.js +0 -2
  650. package/dist/src/channels/outbound/queue.js +0 -2
  651. package/dist/src/channels/outbound-sender.js +0 -2
  652. package/dist/src/channels/pairing/allow-from-file.js +0 -2
  653. package/dist/src/channels/pairing/approve-cli.js +0 -2
  654. package/dist/src/channels/pairing/pairing-challenge.js +0 -2
  655. package/dist/src/channels/pairing/pairing-constants.js +0 -2
  656. package/dist/src/channels/pairing/pairing-events.js +0 -2
  657. package/dist/src/channels/pairing/pairing-messages.js +0 -2
  658. package/dist/src/channels/pairing/pairing-service.js +0 -2
  659. package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
  660. package/dist/src/channels/pairing/pairing-store.js +0 -2
  661. package/dist/src/channels/pairing/paths.js +0 -2
  662. package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
  663. package/dist/src/channels/pipeline.js +0 -2
  664. package/dist/src/channels/plugin-registry.js +0 -2
  665. package/dist/src/channels/plugins/registry.js +0 -2
  666. package/dist/src/channels/restart-policy.js +0 -2
  667. package/dist/src/channels/security-helpers.js +0 -2
  668. package/dist/src/channels/security.js +0 -2
  669. package/dist/src/channels/setup-wizard-discovery.js +0 -2
  670. package/dist/src/chat-commands/agent-edit.js +0 -2
  671. package/dist/src/chat-commands/builtins/config.js +0 -2
  672. package/dist/src/chat-commands/builtins/context.js +0 -2
  673. package/dist/src/chat-commands/builtins/goal.js +0 -2
  674. package/dist/src/chat-commands/builtins/model.js +0 -2
  675. package/dist/src/chat-commands/builtins/review.js +0 -2
  676. package/dist/src/chat-commands/builtins/session.js +0 -2
  677. package/dist/src/chat-commands/builtins/skill.js +0 -2
  678. package/dist/src/chat-commands/builtins/subgoal.js +0 -2
  679. package/dist/src/chat-commands/builtins/system.js +0 -2
  680. package/dist/src/chat-commands/builtins/thinking.js +0 -2
  681. package/dist/src/chat-commands/builtins/tts.js +0 -2
  682. package/dist/src/chat-commands/builtins/workflow.js +0 -2
  683. package/dist/src/chat-commands/command-parse.js +0 -2
  684. package/dist/src/chat-commands/config-paths.js +0 -2
  685. package/dist/src/chat-commands/config-value.js +0 -2
  686. package/dist/src/chat-commands/context.js +0 -2
  687. package/dist/src/chat-commands/format-output.js +0 -2
  688. package/dist/src/chat-commands/index.js +0 -2
  689. package/dist/src/chat-commands/processor.js +0 -2
  690. package/dist/src/chat-commands/registry.js +0 -2
  691. package/dist/src/chat-commands/session-key.js +0 -2
  692. package/dist/src/cli/argv-invocation.js +0 -2
  693. package/dist/src/cli/argv.js +0 -2
  694. package/dist/src/cli/bin.js +0 -2
  695. package/dist/src/cli/cli-log-level-preset.js +0 -2
  696. package/dist/src/cli/command-catalog.js +0 -2
  697. package/dist/src/cli/command-loaders.js +0 -2
  698. package/dist/src/cli/command-manifest.js +0 -2
  699. package/dist/src/cli/command-path-matches.js +0 -2
  700. package/dist/src/cli/command-path-policy.js +0 -2
  701. package/dist/src/cli/command-startup-policy.js +0 -2
  702. package/dist/src/cli/commands/agent/interactive.js +0 -2
  703. package/dist/src/cli/commands/agent/sessions.js +0 -2
  704. package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
  705. package/dist/src/cli/commands/agent.js +0 -2
  706. package/dist/src/cli/commands/agents.js +0 -2
  707. package/dist/src/cli/commands/auth.js +0 -2
  708. package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
  709. package/dist/src/cli/commands/browser.js +0 -2
  710. package/dist/src/cli/commands/channels.js +0 -2
  711. package/dist/src/cli/commands/config.js +0 -2
  712. package/dist/src/cli/commands/connectors.js +0 -2
  713. package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
  714. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
  715. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
  716. package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
  717. package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
  718. package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
  719. package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
  720. package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
  721. package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
  722. package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
  723. package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
  724. package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
  725. package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
  726. package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
  727. package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
  728. package/dist/src/cli/commands/doctor/flow.js +0 -2
  729. package/dist/src/cli/commands/doctor/format.js +0 -2
  730. package/dist/src/cli/commands/doctor/index.js +0 -2
  731. package/dist/src/cli/commands/extension-create.js +0 -2
  732. package/dist/src/cli/commands/extension-dev.js +0 -2
  733. package/dist/src/cli/commands/extension-marketplace.js +0 -2
  734. package/dist/src/cli/commands/extension-pack.js +0 -2
  735. package/dist/src/cli/commands/extension.js +0 -2
  736. package/dist/src/cli/commands/gateway/call.js +0 -2
  737. package/dist/src/cli/commands/gateway/health.js +0 -2
  738. package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
  739. package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
  740. package/dist/src/cli/commands/gateway/logs.js +0 -2
  741. package/dist/src/cli/commands/gateway/probe.js +0 -2
  742. package/dist/src/cli/commands/gateway/restart-health.js +0 -2
  743. package/dist/src/cli/commands/gateway/restart.js +0 -2
  744. package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
  745. package/dist/src/cli/commands/gateway/service.js +0 -2
  746. package/dist/src/cli/commands/gateway/shared.js +0 -2
  747. package/dist/src/cli/commands/gateway/status.js +0 -2
  748. package/dist/src/cli/commands/gateway/stop.js +0 -2
  749. package/dist/src/cli/commands/gateway/subcommands.js +0 -2
  750. package/dist/src/cli/commands/gateway/token.js +0 -2
  751. package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
  752. package/dist/src/cli/commands/gateway.js +0 -2
  753. package/dist/src/cli/commands/goal.js +0 -2
  754. package/dist/src/cli/commands/image.js +0 -2
  755. package/dist/src/cli/commands/init.js +0 -2
  756. package/dist/src/cli/commands/logs.js +0 -2
  757. package/dist/src/cli/commands/models.js +0 -2
  758. package/dist/src/cli/commands/onboard/channels/index.js +0 -2
  759. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
  760. package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
  761. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
  762. package/dist/src/cli/commands/onboard/gateway.js +0 -2
  763. package/dist/src/cli/commands/onboard/model.js +0 -2
  764. package/dist/src/cli/commands/onboard.js +0 -2
  765. package/dist/src/cli/commands/profile.js +0 -2
  766. package/dist/src/cli/commands/project.js +0 -2
  767. package/dist/src/cli/commands/providers.js +0 -2
  768. package/dist/src/cli/commands/resume.js +0 -2
  769. package/dist/src/cli/commands/search.js +0 -2
  770. package/dist/src/cli/commands/session/actions.js +0 -2
  771. package/dist/src/cli/commands/session/utils.js +0 -2
  772. package/dist/src/cli/commands/session.js +0 -2
  773. package/dist/src/cli/commands/setup-shared/output.js +0 -2
  774. package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
  775. package/dist/src/cli/commands/setup-shared/runner.js +0 -2
  776. package/dist/src/cli/commands/setup-shared/types.js +0 -2
  777. package/dist/src/cli/commands/setup.js +0 -2
  778. package/dist/src/cli/commands/skills-test.js +0 -2
  779. package/dist/src/cli/commands/skills.js +0 -2
  780. package/dist/src/cli/commands/tailscale.js +0 -2
  781. package/dist/src/cli/commands/tui-runner.js +0 -2
  782. package/dist/src/cli/commands/tui.js +0 -2
  783. package/dist/src/cli/commands/tunnel.js +0 -2
  784. package/dist/src/cli/commands/update.js +0 -2
  785. package/dist/src/cli/commands/voice.js +0 -2
  786. package/dist/src/cli/context.js +0 -2
  787. package/dist/src/cli/extension-cli-register.js +0 -2
  788. package/dist/src/cli/gateway-run-argv.js +0 -2
  789. package/dist/src/cli/gateway-run-fast-path.js +0 -2
  790. package/dist/src/cli/index.js +0 -2
  791. package/dist/src/cli/registry.js +0 -2
  792. package/dist/src/cli/templates.js +0 -2
  793. package/dist/src/cli/utils/colors.js +0 -2
  794. package/dist/src/cli/utils/gateway-client-options.js +0 -2
  795. package/dist/src/cli/utils/gateway-client.js +0 -2
  796. package/dist/src/cli/utils/init-workspace-core.js +0 -2
  797. package/dist/src/cli/utils/init-workspace.js +0 -2
  798. package/dist/src/cli/utils/oauth-login.js +0 -2
  799. package/dist/src/cli/utils/oauth-providers.js +0 -2
  800. package/dist/src/cli/utils/session.js +0 -2
  801. package/dist/src/commands/agents.config.js +0 -2
  802. package/dist/src/config/agent-profile.js +0 -2
  803. package/dist/src/config/agent-typed-models.js +0 -2
  804. package/dist/src/config/commands.flags.js +0 -2
  805. package/dist/src/config/default-model.js +0 -2
  806. package/dist/src/config/diff.js +0 -2
  807. package/dist/src/config/gateway-bind.js +0 -2
  808. package/dist/src/config/index.js +0 -2
  809. package/dist/src/config/loader.js +0 -2
  810. package/dist/src/config/mcp-config-normalize.js +0 -2
  811. package/dist/src/config/model-input.js +0 -2
  812. package/dist/src/config/models-json.js +0 -2
  813. package/dist/src/config/paths-state.js +0 -2
  814. package/dist/src/config/paths.js +0 -2
  815. package/dist/src/config/profile.js +0 -2
  816. package/dist/src/config/public-url.js +0 -2
  817. package/dist/src/config/reload.js +0 -2
  818. package/dist/src/config/resolve-config-value.js +0 -2
  819. package/dist/src/config/rules.js +0 -2
  820. package/dist/src/config/runtime-overrides.js +0 -2
  821. package/dist/src/config/schema.js +0 -2
  822. package/dist/src/config/validate-channel-configs.js +0 -2
  823. package/dist/src/config/voice.js +0 -2
  824. package/dist/src/config/web-patch.js +0 -2
  825. package/dist/src/config/workspace-defaults.js +0 -2
  826. package/dist/src/config/workspace-dirs.js +0 -2
  827. package/dist/src/config/workspace-path-helpers.js +0 -2
  828. package/dist/src/config/workspace-path.js +0 -2
  829. package/dist/src/connectors/approval.js +0 -2
  830. package/dist/src/connectors/auth-provider-registry.js +0 -2
  831. package/dist/src/connectors/builtin-catalog.js +0 -2
  832. package/dist/src/connectors/catalog.js +0 -2
  833. package/dist/src/connectors/composio-catalog.js +0 -2
  834. package/dist/src/connectors/composio-logo.js +0 -2
  835. package/dist/src/connectors/composio-sessions.js +9 -5
  836. package/dist/src/connectors/composio-triggers.js +0 -2
  837. package/dist/src/connectors/composio.js +0 -2
  838. package/dist/src/connectors/connector-memory-sync.js +0 -2
  839. package/dist/src/connectors/health.js +0 -2
  840. package/dist/src/connectors/install.js +0 -2
  841. package/dist/src/connectors/instances.js +0 -2
  842. package/dist/src/connectors/integration-strategy.js +0 -2
  843. package/dist/src/connectors/lifecycle.js +0 -2
  844. package/dist/src/connectors/materialize.js +0 -2
  845. package/dist/src/connectors/policy.js +0 -2
  846. package/dist/src/connectors/providers.js +0 -2
  847. package/dist/src/connectors/registries/modelscope.js +0 -2
  848. package/dist/src/connectors/registries/official-mcp.js +0 -2
  849. package/dist/src/connectors/registries/search.js +0 -2
  850. package/dist/src/connectors/registries/smithery.js +0 -2
  851. package/dist/src/connectors/runtime-adapter-registry.js +0 -2
  852. package/dist/src/connectors/secret-store.js +0 -2
  853. package/dist/src/connectors/setup-secrets.js +0 -2
  854. package/dist/src/connectors/supervisor.js +0 -2
  855. package/dist/src/connectors/usage.js +0 -2
  856. package/dist/src/connectors/workflow-preflight.js +0 -2
  857. package/dist/src/daemon/constants.js +0 -2
  858. package/dist/src/daemon/install-plan.js +0 -2
  859. package/dist/src/daemon/launchd.js +0 -2
  860. package/dist/src/daemon/schtasks.js +0 -2
  861. package/dist/src/daemon/service-audit.js +0 -2
  862. package/dist/src/daemon/service.js +0 -2
  863. package/dist/src/daemon/systemd.js +0 -2
  864. package/dist/src/document-understanding/extract.js +0 -2
  865. package/dist/src/errors/index.js +0 -2
  866. package/dist/src/extensions/activation-context.js +0 -2
  867. package/dist/src/extensions/activation-planner.js +0 -2
  868. package/dist/src/extensions/api.js +0 -2
  869. package/dist/src/extensions/bundle-mcp.js +0 -2
  870. package/dist/src/extensions/bundled-extension-activation.js +0 -2
  871. package/dist/src/extensions/diagnostics.js +0 -2
  872. package/dist/src/extensions/discover-extensions.js +0 -2
  873. package/dist/src/extensions/engine-check.js +0 -2
  874. package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
  875. package/dist/src/extensions/extension-registry-impl.js +0 -2
  876. package/dist/src/extensions/health.js +0 -2
  877. package/dist/src/extensions/hooks.js +0 -2
  878. package/dist/src/extensions/index.js +0 -2
  879. package/dist/src/extensions/install-transaction.js +0 -2
  880. package/dist/src/extensions/install.js +0 -2
  881. package/dist/src/extensions/loader.js +0 -2
  882. package/dist/src/extensions/lockfile.js +0 -2
  883. package/dist/src/extensions/manifest-registry.js +0 -2
  884. package/dist/src/extensions/marketplace.js +0 -2
  885. package/dist/src/extensions/media-provider-contracts.js +0 -2
  886. package/dist/src/extensions/normalize-manifest.js +0 -2
  887. package/dist/src/extensions/onboard-helpers.js +0 -2
  888. package/dist/src/extensions/package-contract.js +0 -2
  889. package/dist/src/extensions/sdk/channel-entry.js +0 -2
  890. package/dist/src/extensions/sdk/channel-helpers.js +0 -2
  891. package/dist/src/extensions/sdk/index.js +0 -2
  892. package/dist/src/extensions/sdk/lazy.js +0 -2
  893. package/dist/src/extensions/sdk/testing.js +0 -2
  894. package/dist/src/extensions/security.js +0 -2
  895. package/dist/src/extensions/slots.js +0 -2
  896. package/dist/src/extensions/speech-provider-contracts.js +0 -2
  897. package/dist/src/extensions/store-zip-limits.js +0 -2
  898. package/dist/src/extensions/typed-event-bus.js +0 -2
  899. package/dist/src/extensions/types/hooks.js +0 -2
  900. package/dist/src/extensions/types/providers.js +0 -2
  901. package/dist/src/extensions/update.js +0 -2
  902. package/dist/src/extensions/when-context.js +0 -2
  903. package/dist/src/extensions/when-expression.js +0 -2
  904. package/dist/src/gateway/agent-builtin-tools.js +0 -2
  905. package/dist/src/gateway/agent-run-relay.js +0 -2
  906. package/dist/src/gateway/agents-admin.js +0 -2
  907. package/dist/src/gateway/auth.js +0 -2
  908. package/dist/src/gateway/capability-presets-admin.js +0 -2
  909. package/dist/src/gateway/chat-limits.js +0 -2
  910. package/dist/src/gateway/chat-stream/mapper.js +28 -14
  911. package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
  912. package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
  913. package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
  914. package/dist/src/gateway/clarify-bridge.js +3 -3
  915. package/dist/src/gateway/clarify-runtime.js +0 -2
  916. package/dist/src/gateway/client-ip.js +0 -2
  917. package/dist/src/gateway/config-tools-web.js +0 -2
  918. package/dist/src/gateway/credential.js +0 -2
  919. package/dist/src/gateway/discovery/mdns.js +0 -2
  920. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
  921. package/dist/src/gateway/ensure-network-cors.js +0 -2
  922. package/dist/src/gateway/file-path-classifier.js +0 -2
  923. package/dist/src/gateway/file-reference-registry.js +0 -2
  924. package/dist/src/gateway/global-defaults-admin.js +0 -2
  925. package/dist/src/gateway/heartbeat/service.js +0 -2
  926. package/dist/src/gateway/hono/app.js +0 -2
  927. package/dist/src/gateway/hono/lib/agent-model.js +0 -2
  928. package/dist/src/gateway/hono/lib/config-payload.js +0 -2
  929. package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
  930. package/dist/src/gateway/hono/lib/extension-store.js +0 -2
  931. package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
  932. package/dist/src/gateway/hono/lib/route-logger.js +0 -2
  933. package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
  934. package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
  935. package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
  936. package/dist/src/gateway/hono/lib/static-ui.js +0 -2
  937. package/dist/src/gateway/hono/middleware/auth.js +0 -2
  938. package/dist/src/gateway/hono/middleware/log-context.js +0 -2
  939. package/dist/src/gateway/hono/middleware/logger.js +0 -2
  940. package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
  941. package/dist/src/gateway/hono/middleware/scopes.js +0 -2
  942. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
  943. package/dist/src/gateway/hono/oauth-async.js +0 -2
  944. package/dist/src/gateway/hono/oauth.js +0 -2
  945. package/dist/src/gateway/hono/routes/activity.js +0 -2
  946. package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
  947. package/dist/src/gateway/hono/routes/agents.js +0 -2
  948. package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
  949. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
  950. package/dist/src/gateway/hono/routes/browser-install.js +0 -2
  951. package/dist/src/gateway/hono/routes/browser.js +0 -2
  952. package/dist/src/gateway/hono/routes/capabilities.js +0 -2
  953. package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
  954. package/dist/src/gateway/hono/routes/channels.js +0 -2
  955. package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
  956. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
  957. package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
  958. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
  959. package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
  960. package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
  961. package/dist/src/gateway/hono/routes/config.js +0 -2
  962. package/dist/src/gateway/hono/routes/connectors.js +0 -2
  963. package/dist/src/gateway/hono/routes/doctor.js +0 -2
  964. package/dist/src/gateway/hono/routes/dreaming.js +0 -2
  965. package/dist/src/gateway/hono/routes/exposure.js +0 -2
  966. package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
  967. package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
  968. package/dist/src/gateway/hono/routes/goals.js +0 -2
  969. package/dist/src/gateway/hono/routes/home.js +0 -2
  970. package/dist/src/gateway/hono/routes/host-fs.js +0 -2
  971. package/dist/src/gateway/hono/routes/index.js +0 -2
  972. package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
  973. package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
  974. package/dist/src/gateway/hono/routes/local-apps.js +0 -2
  975. package/dist/src/gateway/hono/routes/logs.js +0 -2
  976. package/dist/src/gateway/hono/routes/mcp.js +0 -2
  977. package/dist/src/gateway/hono/routes/media.js +0 -2
  978. package/dist/src/gateway/hono/routes/memory.js +0 -2
  979. package/dist/src/gateway/hono/routes/migrations.js +0 -2
  980. package/dist/src/gateway/hono/routes/mobile.js +0 -2
  981. package/dist/src/gateway/hono/routes/models.js +0 -2
  982. package/dist/src/gateway/hono/routes/notes.js +3 -3
  983. package/dist/src/gateway/hono/routes/projects.js +0 -2
  984. package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
  985. package/dist/src/gateway/hono/routes/search.js +0 -2
  986. package/dist/src/gateway/hono/routes/sessions.js +0 -2
  987. package/dist/src/gateway/hono/routes/shares.js +0 -2
  988. package/dist/src/gateway/hono/routes/site-shares.js +0 -2
  989. package/dist/src/gateway/hono/routes/status.js +0 -2
  990. package/dist/src/gateway/hono/routes/tui.js +0 -2
  991. package/dist/src/gateway/hono/routes/tunnel.js +0 -2
  992. package/dist/src/gateway/hono/routes/update.js +0 -2
  993. package/dist/src/gateway/hono/routes/voice.js +0 -2
  994. package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
  995. package/dist/src/gateway/hono/routes/workflows.js +0 -2
  996. package/dist/src/gateway/hono/routes/workspace.js +0 -2
  997. package/dist/src/gateway/hono/routes/you.js +0 -2
  998. package/dist/src/gateway/hono/sse-json.js +0 -2
  999. package/dist/src/gateway/hono/sse.js +0 -2
  1000. package/dist/src/gateway/host.js +0 -2
  1001. package/dist/src/gateway/image-capabilities.js +0 -2
  1002. package/dist/src/gateway/listen.js +0 -2
  1003. package/dist/src/gateway/lock.js +0 -2
  1004. package/dist/src/gateway/ports.js +0 -2
  1005. package/dist/src/gateway/protocol.js +0 -2
  1006. package/dist/src/gateway/public-url.js +0 -2
  1007. package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
  1008. package/dist/src/gateway/rate-limit/buckets.js +0 -2
  1009. package/dist/src/gateway/rate-limit/env-flags.js +0 -2
  1010. package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
  1011. package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
  1012. package/dist/src/gateway/respawn.js +0 -2
  1013. package/dist/src/gateway/run-loop.js +0 -2
  1014. package/dist/src/gateway/runtime-config.js +0 -2
  1015. package/dist/src/gateway/security/audit.js +0 -2
  1016. package/dist/src/gateway/security/csp.js +0 -2
  1017. package/dist/src/gateway/security/dangerous-tools.js +0 -2
  1018. package/dist/src/gateway/security/external-content.js +0 -2
  1019. package/dist/src/gateway/security/known-weak-secrets.js +0 -2
  1020. package/dist/src/gateway/security/loopback.js +0 -2
  1021. package/dist/src/gateway/security/operator-scopes.js +0 -2
  1022. package/dist/src/gateway/security/origin-check.js +0 -2
  1023. package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
  1024. package/dist/src/gateway/security/secret-equal.js +0 -2
  1025. package/dist/src/gateway/server-tailscale.js +0 -2
  1026. package/dist/src/gateway/server.js +0 -2
  1027. package/dist/src/gateway/service/agent-runner.js +0 -2
  1028. package/dist/src/gateway/service/config-coordinator.js +0 -2
  1029. package/dist/src/gateway/service/marketplace-service.js +0 -2
  1030. package/dist/src/gateway/service/run-gateway-agent.js +0 -2
  1031. package/dist/src/gateway/service/session-chat-ids.js +0 -2
  1032. package/dist/src/gateway/service/sessions-api.js +0 -2
  1033. package/dist/src/gateway/service/sse-hub.js +0 -2
  1034. package/dist/src/gateway/service.js +0 -2
  1035. package/dist/src/gateway/session-reset-service.js +0 -2
  1036. package/dist/src/gateway/startup-readiness.js +0 -2
  1037. package/dist/src/gateway/startup-trace.js +0 -2
  1038. package/dist/src/gateway/tailscale-auth.js +0 -2
  1039. package/dist/src/gateway/tailscale-lifecycle.js +0 -2
  1040. package/dist/src/gateway/tls-server.js +0 -2
  1041. package/dist/src/gateway/trusted-proxy.js +0 -2
  1042. package/dist/src/gateway/user-turn-input.js +0 -2
  1043. package/dist/src/gateway/workspace-editor-path.js +0 -2
  1044. package/dist/src/gateway/workspace-file-search.js +0 -2
  1045. package/dist/src/gateway/workspace-fs-file-list.js +0 -2
  1046. package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
  1047. package/dist/src/gateway/workspace-ripgrep.js +0 -2
  1048. package/dist/src/gateway/ws-security.js +0 -2
  1049. package/dist/src/generated/bundled-image-generation-providers.js +0 -2
  1050. package/dist/src/goals/goal-contract-draft.js +0 -2
  1051. package/dist/src/goals/goal-evidence-review.js +0 -2
  1052. package/dist/src/goals/goal-notifications.js +0 -2
  1053. package/dist/src/goals/goal-queue-store.js +0 -2
  1054. package/dist/src/goals/goal-runner.js +0 -2
  1055. package/dist/src/goals/goal-service.js +0 -2
  1056. package/dist/src/goals/goal-store.js +0 -2
  1057. package/dist/src/goals/goal-workflow-judge.js +0 -2
  1058. package/dist/src/heartbeat/active-hours.js +0 -2
  1059. package/dist/src/heartbeat/content-check.js +0 -2
  1060. package/dist/src/heartbeat/event-prompt.js +0 -2
  1061. package/dist/src/heartbeat/tokens.js +0 -2
  1062. package/dist/src/heartbeat/wake.js +0 -2
  1063. package/dist/src/i18n/format.js +0 -2
  1064. package/dist/src/i18n/goals-bundle.js +0 -2
  1065. package/dist/src/i18n/locale.js +0 -2
  1066. package/dist/src/i18n/locales/goals.en.js +0 -2
  1067. package/dist/src/i18n/locales/goals.zh.js +0 -2
  1068. package/dist/src/i18n/locales/share-tool.en.js +0 -2
  1069. package/dist/src/i18n/locales/share-tool.zh.js +0 -2
  1070. package/dist/src/i18n/share-tool-bundle.js +0 -2
  1071. package/dist/src/index.js +0 -2
  1072. package/dist/src/infra/brew.js +0 -2
  1073. package/dist/src/infra/bus/queue.js +0 -2
  1074. package/dist/src/infra/debounce.js +0 -2
  1075. package/dist/src/infra/exec.js +0 -2
  1076. package/dist/src/infra/gateway-process-argv.js +0 -2
  1077. package/dist/src/infra/gateway-processes.js +0 -2
  1078. package/dist/src/infra/host-env-security-policy.js +0 -2
  1079. package/dist/src/infra/host-env-security.js +0 -2
  1080. package/dist/src/infra/http-proxy-env.js +0 -2
  1081. package/dist/src/infra/is-main.js +0 -2
  1082. package/dist/src/infra/json-utf8-bytes.js +0 -2
  1083. package/dist/src/infra/node-sqlite.js +0 -2
  1084. package/dist/src/infra/package-json.js +0 -2
  1085. package/dist/src/infra/package-update-steps.js +0 -2
  1086. package/dist/src/infra/path-env.js +0 -2
  1087. package/dist/src/infra/path-prepend.js +0 -2
  1088. package/dist/src/infra/ports.js +0 -2
  1089. package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
  1090. package/dist/src/infra/rate-limit/keyed-store.js +0 -2
  1091. package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
  1092. package/dist/src/infra/restart.js +0 -2
  1093. package/dist/src/infra/retry.js +0 -2
  1094. package/dist/src/infra/run-command.js +0 -2
  1095. package/dist/src/infra/sqlite-errors.js +0 -2
  1096. package/dist/src/infra/ssh-tunnel.js +0 -2
  1097. package/dist/src/infra/stable-node-path.js +0 -2
  1098. package/dist/src/infra/tailscale.js +0 -2
  1099. package/dist/src/infra/undici-fetch.js +0 -2
  1100. package/dist/src/infra/unhandled-rejections.js +0 -2
  1101. package/dist/src/infra/update-channels.js +0 -2
  1102. package/dist/src/infra/update-check.js +0 -2
  1103. package/dist/src/infra/update-global.js +0 -2
  1104. package/dist/src/infra/update-lock.js +0 -2
  1105. package/dist/src/infra/update-log.js +0 -2
  1106. package/dist/src/infra/update-restart.js +0 -2
  1107. package/dist/src/infra/update-runner.js +0 -2
  1108. package/dist/src/infra/update-startup.js +0 -2
  1109. package/dist/src/infra/warning-filter.js +0 -2
  1110. package/dist/src/infra/write-file-atomic.js +0 -2
  1111. package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
  1112. package/dist/src/knowledge/coordinator.js +0 -2
  1113. package/dist/src/knowledge/ingestion-service.js +0 -2
  1114. package/dist/src/local-apps/acceptance.js +0 -2
  1115. package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
  1116. package/dist/src/local-apps/runtime-entry.js +0 -2
  1117. package/dist/src/local-apps/scaffold.js +0 -2
  1118. package/dist/src/local-apps/service.js +0 -2
  1119. package/dist/src/local-apps/store.js +0 -2
  1120. package/dist/src/markdown/chunk.js +0 -2
  1121. package/dist/src/markdown/code-spans.js +0 -2
  1122. package/dist/src/markdown/fences.js +0 -2
  1123. package/dist/src/markdown/frontmatter.js +0 -2
  1124. package/dist/src/markdown/ir.js +0 -2
  1125. package/dist/src/markdown/render.js +0 -2
  1126. package/dist/src/markdown/tables.js +0 -2
  1127. package/dist/src/mcp/channel-bridge.js +0 -2
  1128. package/dist/src/mcp/channel-server.js +0 -2
  1129. package/dist/src/mcp/channel-shared.js +0 -2
  1130. package/dist/src/mcp/channel-tools.js +0 -2
  1131. package/dist/src/mcp/gateway-http-client.js +0 -2
  1132. package/dist/src/media/media-reference.js +0 -2
  1133. package/dist/src/media/paths.js +0 -2
  1134. package/dist/src/media/session-references.js +0 -2
  1135. package/dist/src/media/store.js +0 -2
  1136. package/dist/src/media/uri.js +0 -2
  1137. package/dist/src/media-shared/http/api-key-rotation.js +0 -2
  1138. package/dist/src/media-shared/http/deadline.js +0 -2
  1139. package/dist/src/media-shared/http/private-network.js +0 -2
  1140. package/dist/src/media-shared/http/provider-http-errors.js +0 -2
  1141. package/dist/src/media-shared/http/provider-http.js +0 -2
  1142. package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
  1143. package/dist/src/media-shared/http/ssrf-guard.js +0 -2
  1144. package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
  1145. package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
  1146. package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
  1147. package/dist/src/media-understanding/registry.js +0 -2
  1148. package/dist/src/media-understanding/resolve-entries.js +0 -2
  1149. package/dist/src/media-understanding/runner.js +0 -2
  1150. package/dist/src/migrations/config/default-capability-preset.js +0 -2
  1151. package/dist/src/migrations/registry.js +0 -2
  1152. package/dist/src/migrations/runner.js +0 -2
  1153. package/dist/src/mobile/notification-service.js +0 -2
  1154. package/dist/src/mobile/notification-store.js +0 -2
  1155. package/dist/src/mobile/notification-types.js +0 -2
  1156. package/dist/src/notes/agent-context.js +0 -2
  1157. package/dist/src/notes/attachment-ref.js +0 -2
  1158. package/dist/src/notes/note-attachment-sync.js +0 -2
  1159. package/dist/src/notes/note-index-meta.js +0 -2
  1160. package/dist/src/notes/note-markdown.js +0 -2
  1161. package/dist/src/notes/paths.js +0 -2
  1162. package/dist/src/notes/service.d.ts +3 -1
  1163. package/dist/src/notes/service.js +19 -5
  1164. package/dist/src/notes/store.js +0 -2
  1165. package/dist/src/package-version.js +0 -2
  1166. package/dist/src/pets/factory.d.ts +13 -0
  1167. package/dist/src/pets/factory.js +23 -2
  1168. package/dist/src/pets/manifest.js +0 -2
  1169. package/dist/src/pets/validator.js +0 -2
  1170. package/dist/src/process/kill-tree.js +0 -2
  1171. package/dist/src/project-trust/trust-store.js +0 -2
  1172. package/dist/src/projects/automation-bind.js +0 -2
  1173. package/dist/src/projects/goal-bind.js +0 -2
  1174. package/dist/src/projects/memory-bind.js +0 -2
  1175. package/dist/src/projects/project-agent-suggestion.js +0 -2
  1176. package/dist/src/projects/project-agent.js +0 -2
  1177. package/dist/src/projects/project-kind.js +0 -2
  1178. package/dist/src/projects/project-loop.js +0 -2
  1179. package/dist/src/projects/project-service.js +0 -2
  1180. package/dist/src/projects/project-store.js +0 -2
  1181. package/dist/src/projects/session-bind.js +0 -2
  1182. package/dist/src/projects/workflow-bind.js +0 -2
  1183. package/dist/src/projects/workspace-project.js +0 -2
  1184. package/dist/src/projects/workspace.js +0 -2
  1185. package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
  1186. package/dist/src/providers/auth-runtime/is-configured.js +0 -2
  1187. package/dist/src/providers/auth-runtime/oauth.js +0 -2
  1188. package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
  1189. package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
  1190. package/dist/src/providers/constants.js +0 -2
  1191. package/dist/src/providers/domestic-presets.js +0 -2
  1192. package/dist/src/providers/env-keys.js +0 -2
  1193. package/dist/src/providers/extension-stream-bridge.js +0 -2
  1194. package/dist/src/providers/index.js +0 -2
  1195. package/dist/src/providers/model-call.js +0 -2
  1196. package/dist/src/providers/model-discovery.js +0 -2
  1197. package/dist/src/providers/model-registry.js +0 -2
  1198. package/dist/src/providers/model-supplements.js +0 -2
  1199. package/dist/src/providers/plugin-registry.js +0 -2
  1200. package/dist/src/providers/presentation.js +0 -2
  1201. package/dist/src/remote-access/exposure-guards.js +0 -2
  1202. package/dist/src/remote-access/exposure-manager.js +0 -2
  1203. package/dist/src/review/review-git.js +0 -2
  1204. package/dist/src/review/review-types.js +0 -2
  1205. package/dist/src/routing/account-id.js +0 -2
  1206. package/dist/src/routing/agent-session-key.js +0 -2
  1207. package/dist/src/routing/bindings.js +0 -2
  1208. package/dist/src/routing/index.js +0 -2
  1209. package/dist/src/routing/resolve-route.js +0 -2
  1210. package/dist/src/routing/resolve-tui-session-key.js +0 -2
  1211. package/dist/src/routing/session-key-utils.js +0 -2
  1212. package/dist/src/routing/session-key.js +0 -2
  1213. package/dist/src/session/abort-cutoff.js +0 -2
  1214. package/dist/src/session/chat-export.js +0 -2
  1215. package/dist/src/session/client-history.js +0 -2
  1216. package/dist/src/session/compaction-checkpoints.js +0 -2
  1217. package/dist/src/session/config-store.js +0 -2
  1218. package/dist/src/session/init-session-turn.js +0 -2
  1219. package/dist/src/session/lifecycle-timestamps.js +0 -2
  1220. package/dist/src/session/load-jsonl-entries.js +0 -2
  1221. package/dist/src/session/manager.js +0 -2
  1222. package/dist/src/session/patch-metadata.js +0 -2
  1223. package/dist/src/session/reset-policy.js +0 -2
  1224. package/dist/src/session/reset-triggers.js +0 -2
  1225. package/dist/src/session/reset-type.js +0 -2
  1226. package/dist/src/session/resolve-session.js +0 -2
  1227. package/dist/src/session/session-context-for-llm.js +0 -2
  1228. package/dist/src/session/session-id.js +0 -2
  1229. package/dist/src/session/session-title.js +0 -2
  1230. package/dist/src/session/session-workspace.js +0 -2
  1231. package/dist/src/session/store.js +0 -2
  1232. package/dist/src/session/stored-rows-to-file-entries.js +0 -2
  1233. package/dist/src/session/thinking-resolve.js +0 -2
  1234. package/dist/src/session/transcript-events.js +0 -2
  1235. package/dist/src/session/transcript-format.js +0 -2
  1236. package/dist/src/session/transcript-outline.js +0 -2
  1237. package/dist/src/session/transcript-stats.js +0 -2
  1238. package/dist/src/session/types.js +0 -2
  1239. package/dist/src/session/user-round-delete.js +0 -2
  1240. package/dist/src/share/share-audit.js +0 -2
  1241. package/dist/src/share/share-auto.js +0 -2
  1242. package/dist/src/share/share-config.js +0 -2
  1243. package/dist/src/share/share-landing.js +0 -2
  1244. package/dist/src/share/share-rate-limit.js +0 -2
  1245. package/dist/src/share/share-store.js +0 -2
  1246. package/dist/src/share/share-thumbnail.js +0 -2
  1247. package/dist/src/share/share-types.js +0 -2
  1248. package/dist/src/share/share-url.js +0 -2
  1249. package/dist/src/share/share-zip.js +0 -2
  1250. package/dist/src/share/site-proxy.js +0 -2
  1251. package/dist/src/share/site-share-config.js +0 -2
  1252. package/dist/src/share/site-share-router.js +0 -2
  1253. package/dist/src/share/site-share-store.js +0 -2
  1254. package/dist/src/share/site-share-types.js +0 -2
  1255. package/dist/src/share/site-static-serve.js +0 -2
  1256. package/dist/src/storage/sqlite/activity-repository.js +0 -2
  1257. package/dist/src/storage/sqlite/config-repository.js +0 -2
  1258. package/dist/src/storage/sqlite/connection.js +0 -2
  1259. package/dist/src/storage/sqlite/connector-repository.js +0 -2
  1260. package/dist/src/storage/sqlite/fts.js +0 -2
  1261. package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
  1262. package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
  1263. package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
  1264. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
  1265. package/dist/src/storage/sqlite/migrations/discover.js +0 -2
  1266. package/dist/src/storage/sqlite/migrations/errors.js +0 -2
  1267. package/dist/src/storage/sqlite/migrations/runner.js +0 -2
  1268. package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
  1269. package/dist/src/storage/sqlite/notes-repository.js +0 -2
  1270. package/dist/src/storage/sqlite/paths.js +0 -2
  1271. package/dist/src/storage/sqlite/row-mappers.js +0 -2
  1272. package/dist/src/storage/sqlite/schema-version.js +0 -2
  1273. package/dist/src/storage/sqlite/schema.js +0 -2
  1274. package/dist/src/storage/sqlite/session-metadata.js +0 -2
  1275. package/dist/src/storage/sqlite/session-repository.js +0 -2
  1276. package/dist/src/storage/sqlite/transaction.js +0 -2
  1277. package/dist/src/storage/sqlite/transcript-repository.js +0 -2
  1278. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
  1279. package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
  1280. package/dist/src/tui/backends/embedded-backend.js +0 -2
  1281. package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
  1282. package/dist/src/tui/chat-history.js +0 -2
  1283. package/dist/src/tui/clipboard-image.js +0 -2
  1284. package/dist/src/tui/clipboard-text.js +0 -2
  1285. package/dist/src/tui/components/assistant-message.js +0 -2
  1286. package/dist/src/tui/components/bash-execution.js +0 -2
  1287. package/dist/src/tui/components/bash-summary.js +0 -2
  1288. package/dist/src/tui/components/branch-message-summary.js +0 -2
  1289. package/dist/src/tui/components/branch-summary.js +0 -2
  1290. package/dist/src/tui/components/chat-log.js +0 -2
  1291. package/dist/src/tui/components/compaction-summary.js +0 -2
  1292. package/dist/src/tui/components/custom-editor.js +0 -2
  1293. package/dist/src/tui/components/custom-message.js +0 -2
  1294. package/dist/src/tui/components/dynamic-border.js +0 -2
  1295. package/dist/src/tui/components/extension-dialog.js +0 -2
  1296. package/dist/src/tui/components/fuzzy-filter.js +0 -2
  1297. package/dist/src/tui/components/scoped-models-selector.js +0 -2
  1298. package/dist/src/tui/components/searchable-select-list.js +0 -2
  1299. package/dist/src/tui/components/session-selector.js +0 -2
  1300. package/dist/src/tui/components/settings-selector.js +0 -2
  1301. package/dist/src/tui/components/thinking-selector.js +0 -2
  1302. package/dist/src/tui/components/tool-execution.js +0 -2
  1303. package/dist/src/tui/components/tui-bottom-bar.js +0 -2
  1304. package/dist/src/tui/components/tui-header.js +0 -2
  1305. package/dist/src/tui/components/user-message.js +0 -2
  1306. package/dist/src/tui/components/visual-truncate.js +0 -2
  1307. package/dist/src/tui/extension-host/autocomplete.js +0 -2
  1308. package/dist/src/tui/extension-host/host.js +0 -2
  1309. package/dist/src/tui/extension-host/load-extensions.js +0 -2
  1310. package/dist/src/tui/extension-host/runtime-context.js +0 -2
  1311. package/dist/src/tui/extension-host/runtime.js +0 -2
  1312. package/dist/src/tui/extension-host/surface.js +0 -2
  1313. package/dist/src/tui/extension-host/tool-renderers.js +0 -2
  1314. package/dist/src/tui/format-tui-hotkeys.js +0 -2
  1315. package/dist/src/tui/sse-consumer.js +0 -2
  1316. package/dist/src/tui/theme/dark.js +0 -2
  1317. package/dist/src/tui/theme/light.js +0 -2
  1318. package/dist/src/tui/theme-manager.js +0 -2
  1319. package/dist/src/tui/theme.js +0 -2
  1320. package/dist/src/tui/tool-summary.js +0 -2
  1321. package/dist/src/tui/tui-agent-events.js +0 -2
  1322. package/dist/src/tui/tui-command-formatters.js +0 -2
  1323. package/dist/src/tui/tui-commands.js +0 -2
  1324. package/dist/src/tui/tui-context-usage.js +0 -2
  1325. package/dist/src/tui/tui-extension-user-message.js +0 -2
  1326. package/dist/src/tui/tui-fd-path.js +0 -2
  1327. package/dist/src/tui/tui-file-autocomplete.js +0 -2
  1328. package/dist/src/tui/tui-follow-up-queue.js +0 -2
  1329. package/dist/src/tui/tui-git-branch.js +0 -2
  1330. package/dist/src/tui/tui-keybindings-file.js +0 -2
  1331. package/dist/src/tui/tui-lifecycle.js +0 -2
  1332. package/dist/src/tui/tui-local-shell.js +0 -2
  1333. package/dist/src/tui/tui-model-picker.js +0 -2
  1334. package/dist/src/tui/tui-oauth-login.js +0 -2
  1335. package/dist/src/tui/tui-overlays.js +0 -2
  1336. package/dist/src/tui/tui-picker-overlay.js +0 -2
  1337. package/dist/src/tui/tui-run-state.js +0 -2
  1338. package/dist/src/tui/tui-run-status-format.js +0 -2
  1339. package/dist/src/tui/tui-runtime-hints.js +0 -2
  1340. package/dist/src/tui/tui-scoped-models.js +0 -2
  1341. package/dist/src/tui/tui-session-actions.js +0 -2
  1342. package/dist/src/tui/tui-session-format.js +0 -2
  1343. package/dist/src/tui/tui-session-snapshot.js +0 -2
  1344. package/dist/src/tui/tui-session-stats.js +0 -2
  1345. package/dist/src/tui/tui-settings.js +0 -2
  1346. package/dist/src/tui/tui-skills-autocomplete.js +0 -2
  1347. package/dist/src/tui/tui-startup-resources.js +0 -2
  1348. package/dist/src/tui/tui-startup-text.js +0 -2
  1349. package/dist/src/tui/tui-stdio-filter.js +0 -2
  1350. package/dist/src/tui/tui-submit.js +0 -2
  1351. package/dist/src/tui/tui-suspend.js +0 -2
  1352. package/dist/src/tui/tui-timeline-picker.js +0 -2
  1353. package/dist/src/tui/tui-timeline.js +0 -2
  1354. package/dist/src/tui/tui-tool-diff.js +0 -2
  1355. package/dist/src/tui/tui-tool-result.js +0 -2
  1356. package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
  1357. package/dist/src/tui/tui-transcript-tree.js +0 -2
  1358. package/dist/src/tui/tui-types.js +0 -2
  1359. package/dist/src/tui/tui-workflow-slash.js +0 -2
  1360. package/dist/src/tui/tui.js +0 -2
  1361. package/dist/src/tui/xopc-tui-keybindings.js +0 -2
  1362. package/dist/src/tunnel/broker-client.js +0 -2
  1363. package/dist/src/tunnel/consent.js +0 -2
  1364. package/dist/src/tunnel/enable-lan-pairing.js +0 -2
  1365. package/dist/src/tunnel/env.js +0 -2
  1366. package/dist/src/tunnel/frp-subdomain-host.js +0 -2
  1367. package/dist/src/tunnel/frpc-binary.js +0 -2
  1368. package/dist/src/tunnel/frpc-config.js +0 -2
  1369. package/dist/src/tunnel/frpc-extract.js +0 -2
  1370. package/dist/src/tunnel/frpc-process.js +0 -2
  1371. package/dist/src/tunnel/gateway-lifecycle.js +0 -2
  1372. package/dist/src/tunnel/pair-context.js +0 -2
  1373. package/dist/src/tunnel/pair-url.js +0 -2
  1374. package/dist/src/tunnel/pairing-rate-limit.js +0 -2
  1375. package/dist/src/tunnel/pairing.js +0 -2
  1376. package/dist/src/tunnel/tunnel-audit.js +0 -2
  1377. package/dist/src/tunnel/tunnel-config.js +0 -2
  1378. package/dist/src/tunnel/tunnel-persist.js +0 -2
  1379. package/dist/src/tunnel/tunnel-qr.js +0 -2
  1380. package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
  1381. package/dist/src/tunnel/tunnel-service.js +0 -2
  1382. package/dist/src/tunnel/tunnel-state.js +0 -2
  1383. package/dist/src/tunnel/well-known.js +0 -2
  1384. package/dist/src/user-context/config.js +0 -2
  1385. package/dist/src/user-context/import.js +0 -2
  1386. package/dist/src/user-context/owner.js +0 -2
  1387. package/dist/src/user-context/profile.js +0 -2
  1388. package/dist/src/user-context/projection.js +0 -2
  1389. package/dist/src/user-context/runtime.js +0 -2
  1390. package/dist/src/user-context/source-recommendations.js +0 -2
  1391. package/dist/src/user-context/trust-policy.js +0 -2
  1392. package/dist/src/utils/global-singleton.js +0 -2
  1393. package/dist/src/utils/helpers.js +0 -2
  1394. package/dist/src/utils/index.js +0 -2
  1395. package/dist/src/utils/is-record.js +0 -2
  1396. package/dist/src/utils/logger/audit.js +0 -2
  1397. package/dist/src/utils/logger/config.js +0 -2
  1398. package/dist/src/utils/logger/context.js +0 -2
  1399. package/dist/src/utils/logger/exporters.js +0 -2
  1400. package/dist/src/utils/logger/index.js +0 -2
  1401. package/dist/src/utils/logger/log-store.js +0 -2
  1402. package/dist/src/utils/logger/log-stream.js +0 -2
  1403. package/dist/src/utils/logger/pino-record.js +0 -2
  1404. package/dist/src/utils/logger/redact.js +0 -2
  1405. package/dist/src/utils/logger/rotation.js +0 -2
  1406. package/dist/src/utils/logger/shutdown.js +0 -2
  1407. package/dist/src/utils/logger/stats.js +0 -2
  1408. package/dist/src/utils/logger/streams.js +0 -2
  1409. package/dist/src/utils/logger/types.js +0 -2
  1410. package/dist/src/utils/logger.js +0 -2
  1411. package/dist/src/utils/redact-sensitive-url.js +0 -2
  1412. package/dist/src/utils/sanitize-log.js +0 -2
  1413. package/dist/src/utils/string-coerce.js +0 -2
  1414. package/dist/src/voice/language-profile.js +0 -2
  1415. package/dist/src/voice/local/model-files.js +0 -2
  1416. package/dist/src/voice/local/model-manager.js +0 -2
  1417. package/dist/src/voice/local/models.js +0 -2
  1418. package/dist/src/voice/local/runtime-client.js +0 -2
  1419. package/dist/src/voice/local/runtime-dispatcher.js +0 -2
  1420. package/dist/src/voice/local/runtime-worker.js +12 -4
  1421. package/dist/src/voice/local/wav.js +0 -2
  1422. package/dist/src/voice/metadata/builtin.js +0 -2
  1423. package/dist/src/voice/metadata/registry.js +0 -2
  1424. package/dist/src/voice/stt/availability.js +0 -2
  1425. package/dist/src/voice/stt/config-slice.js +0 -2
  1426. package/dist/src/voice/stt/factory.js +0 -2
  1427. package/dist/src/voice/stt/index.js +0 -2
  1428. package/dist/src/voice/stt/list-providers.js +0 -2
  1429. package/dist/src/voice/stt/mention.js +0 -2
  1430. package/dist/src/voice/stt/preflight.js +0 -2
  1431. package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
  1432. package/dist/src/voice/stt/providers/local-transcription.js +0 -2
  1433. package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
  1434. package/dist/src/voice/stt/transcribe-core.js +0 -2
  1435. package/dist/src/voice/stt/types.js +0 -2
  1436. package/dist/src/voice/tts/audio.js +0 -2
  1437. package/dist/src/voice/tts/config-slice.js +0 -2
  1438. package/dist/src/voice/tts/directives.js +0 -2
  1439. package/dist/src/voice/tts/factory.js +0 -2
  1440. package/dist/src/voice/tts/list-providers.js +0 -2
  1441. package/dist/src/voice/tts/merge-config.js +0 -2
  1442. package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
  1443. package/dist/src/voice/tts/payload.js +0 -2
  1444. package/dist/src/voice/tts/preprocess.js +0 -2
  1445. package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
  1446. package/dist/src/voice/tts/providers/edge-speech.js +0 -2
  1447. package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
  1448. package/dist/src/voice/tts/providers/openai-speech.js +0 -2
  1449. package/dist/src/voice/tts/sentence-boundary.js +0 -2
  1450. package/dist/src/voice/tts/service.js +0 -2
  1451. package/dist/src/voice/tts/speak-core.js +0 -2
  1452. package/dist/src/voice/tts/speech-registry.js +0 -2
  1453. package/dist/src/voice/tts/status-tracker.js +0 -2
  1454. package/dist/src/voice/tts/summarize.js +0 -2
  1455. package/dist/src/voice/tts/types.js +0 -2
  1456. package/dist/src/work-discovery/analyzer.js +0 -2
  1457. package/dist/src/work-discovery/probe.js +0 -2
  1458. package/dist/src/work-discovery/repository.js +0 -2
  1459. package/dist/src/work-discovery/service.js +0 -2
  1460. package/dist/src/work-items/agent-context.js +0 -2
  1461. package/dist/src/work-items/work-item-service.js +0 -2
  1462. package/dist/src/work-items/work-item-store.js +0 -2
  1463. package/dist/src/work-items/work-item-workflow-judge.js +0 -2
  1464. package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
  1465. package/dist/src/workflows/domain/definition-utils.js +0 -2
  1466. package/dist/src/workflows/domain/run.js +0 -2
  1467. package/dist/src/workflows/domain/schema-validation.js +0 -2
  1468. package/dist/src/workflows/domain/validation.js +0 -2
  1469. package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
  1470. package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
  1471. package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
  1472. package/dist/src/workflows/engine/projector.js +0 -2
  1473. package/dist/src/workflows/engine/workflow-engine.js +0 -2
  1474. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
  1475. package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
  1476. package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
  1477. package/dist/src/workflows/service/workflow-run-service.js +1 -3
  1478. package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
  1479. package/dist/src/workflows/service/workflow-session-key.js +0 -2
  1480. package/dist/src/workflows/store/event-store.js +0 -2
  1481. package/dist/src/workflows/store/paths.js +0 -2
  1482. package/dist/src/workflows/store/run-index-store.js +0 -2
  1483. package/dist/src/workflows/store/run-store.js +0 -2
  1484. package/package.json +41 -11
  1485. package/skills/creative/hatch-pet/SKILL.md +1 -0
  1486. package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
  1487. package/dist/extensions/demo-memory/src/index.js.map +0 -1
  1488. package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
  1489. package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
  1490. package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
  1491. package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
  1492. package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
  1493. package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
  1494. package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
  1495. package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
  1496. package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
  1497. package/dist/extensions/feishu/src/format.js.map +0 -1
  1498. package/dist/extensions/feishu/src/index.js.map +0 -1
  1499. package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
  1500. package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
  1501. package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
  1502. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
  1503. package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
  1504. package/dist/extensions/feishu/src/plugin.js.map +0 -1
  1505. package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
  1506. package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
  1507. package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
  1508. package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
  1509. package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
  1510. package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
  1511. package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
  1512. package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
  1513. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
  1514. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
  1515. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
  1516. package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
  1517. package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
  1518. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
  1519. package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
  1520. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
  1521. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
  1522. package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
  1523. package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
  1524. package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
  1525. package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
  1526. package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
  1527. package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
  1528. package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
  1529. package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
  1530. package/dist/extensions/telegram/src/access-control.js.map +0 -1
  1531. package/dist/extensions/telegram/src/account-manager.js.map +0 -1
  1532. package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
  1533. package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
  1534. package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
  1535. package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
  1536. package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
  1537. package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
  1538. package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
  1539. package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
  1540. package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
  1541. package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
  1542. package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
  1543. package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
  1544. package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
  1545. package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
  1546. package/dist/extensions/telegram/src/api-root.js.map +0 -1
  1547. package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
  1548. package/dist/extensions/telegram/src/approval-store.js.map +0 -1
  1549. package/dist/extensions/telegram/src/caption.js.map +0 -1
  1550. package/dist/extensions/telegram/src/command-handler.js.map +0 -1
  1551. package/dist/extensions/telegram/src/config-schema.js.map +0 -1
  1552. package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
  1553. package/dist/extensions/telegram/src/dedupe.js.map +0 -1
  1554. package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
  1555. package/dist/extensions/telegram/src/doctor.js.map +0 -1
  1556. package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
  1557. package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
  1558. package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
  1559. package/dist/extensions/telegram/src/errors.js.map +0 -1
  1560. package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
  1561. package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
  1562. package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
  1563. package/dist/extensions/telegram/src/format.js.map +0 -1
  1564. package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
  1565. package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
  1566. package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
  1567. package/dist/extensions/telegram/src/index.js.map +0 -1
  1568. package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
  1569. package/dist/extensions/telegram/src/network-errors.js.map +0 -1
  1570. package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
  1571. package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
  1572. package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
  1573. package/dist/extensions/telegram/src/plugin.js.map +0 -1
  1574. package/dist/extensions/telegram/src/polling-session.js.map +0 -1
  1575. package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
  1576. package/dist/extensions/telegram/src/reactions.js.map +0 -1
  1577. package/dist/extensions/telegram/src/reply-params.js.map +0 -1
  1578. package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
  1579. package/dist/extensions/telegram/src/send-options.js.map +0 -1
  1580. package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
  1581. package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
  1582. package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
  1583. package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
  1584. package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
  1585. package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
  1586. package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
  1587. package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
  1588. package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
  1589. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
  1590. package/dist/extensions/weixin/src/api/api.js.map +0 -1
  1591. package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
  1592. package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
  1593. package/dist/extensions/weixin/src/api/types.js.map +0 -1
  1594. package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
  1595. package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
  1596. package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
  1597. package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
  1598. package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
  1599. package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
  1600. package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
  1601. package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
  1602. package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
  1603. package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
  1604. package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
  1605. package/dist/extensions/weixin/src/config-schema.js.map +0 -1
  1606. package/dist/extensions/weixin/src/config-surface.js.map +0 -1
  1607. package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
  1608. package/dist/extensions/weixin/src/index.js.map +0 -1
  1609. package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
  1610. package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
  1611. package/dist/extensions/weixin/src/media/mime.js.map +0 -1
  1612. package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
  1613. package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
  1614. package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
  1615. package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
  1616. package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
  1617. package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
  1618. package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
  1619. package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
  1620. package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
  1621. package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
  1622. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
  1623. package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
  1624. package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
  1625. package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
  1626. package/dist/extensions/weixin/src/plugin.js.map +0 -1
  1627. package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
  1628. package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
  1629. package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
  1630. package/dist/extensions/weixin/src/util/logger.js.map +0 -1
  1631. package/dist/extensions/weixin/src/util/random.js.map +0 -1
  1632. package/dist/extensions/weixin/src/util/redact.js.map +0 -1
  1633. package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
  1634. package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
  1635. package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
  1636. package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
  1637. package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
  1638. package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
  1639. package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
  1640. package/dist/gateway/static/root/favicon-icon.svg +0 -187
  1641. package/dist/package.js.map +0 -1
  1642. package/dist/src/activity/context.js.map +0 -1
  1643. package/dist/src/activity/emitter.js.map +0 -1
  1644. package/dist/src/activity/service.js.map +0 -1
  1645. package/dist/src/agent/agent-manager.js.map +0 -1
  1646. package/dist/src/agent/agent-scope.js.map +0 -1
  1647. package/dist/src/agent/background-review/coordinator.js.map +0 -1
  1648. package/dist/src/agent/background-review/prompts.js.map +0 -1
  1649. package/dist/src/agent/background-review/run-background-review.js.map +0 -1
  1650. package/dist/src/agent/background-review/settings.js.map +0 -1
  1651. package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
  1652. package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
  1653. package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
  1654. package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
  1655. package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
  1656. package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
  1657. package/dist/src/agent/capabilities/definitions.js.map +0 -1
  1658. package/dist/src/agent/capabilities/registry.js.map +0 -1
  1659. package/dist/src/agent/child-agent-factory.js.map +0 -1
  1660. package/dist/src/agent/client-error-format.js.map +0 -1
  1661. package/dist/src/agent/code-intelligence/binary.js.map +0 -1
  1662. package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
  1663. package/dist/src/agent/code-intelligence/tools.js.map +0 -1
  1664. package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
  1665. package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
  1666. package/dist/src/agent/context/project-context.js.map +0 -1
  1667. package/dist/src/agent/context/workspace-seed.js.map +0 -1
  1668. package/dist/src/agent/context/workspace-state.js.map +0 -1
  1669. package/dist/src/agent/context/workspace.js.map +0 -1
  1670. package/dist/src/agent/embedded/run-for-session.js.map +0 -1
  1671. package/dist/src/agent/embedded/run-turn.js.map +0 -1
  1672. package/dist/src/agent/embedded/runs.js.map +0 -1
  1673. package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
  1674. package/dist/src/agent/embedded/session-runner.js.map +0 -1
  1675. package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
  1676. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
  1677. package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
  1678. package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
  1679. package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
  1680. package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
  1681. package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
  1682. package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
  1683. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
  1684. package/dist/src/agent/failover-error.js.map +0 -1
  1685. package/dist/src/agent/fallback/candidates.js.map +0 -1
  1686. package/dist/src/agent/fallback/reason.js.map +0 -1
  1687. package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
  1688. package/dist/src/agent/goals/checklist-judge.js.map +0 -1
  1689. package/dist/src/agent/goals/checklist-types.js.map +0 -1
  1690. package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
  1691. package/dist/src/agent/goals/goal-locale.js.map +0 -1
  1692. package/dist/src/agent/goals/judge.js.map +0 -1
  1693. package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
  1694. package/dist/src/agent/goals/post-turn.js.map +0 -1
  1695. package/dist/src/agent/goals/state.js.map +0 -1
  1696. package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
  1697. package/dist/src/agent/image/generation/bundled.js.map +0 -1
  1698. package/dist/src/agent/image/generation/image-assets.js.map +0 -1
  1699. package/dist/src/agent/image/generation/model-ref.js.map +0 -1
  1700. package/dist/src/agent/image/generation/normalization.js.map +0 -1
  1701. package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
  1702. package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
  1703. package/dist/src/agent/image/generation/runtime.js.map +0 -1
  1704. package/dist/src/agent/image/image-helpers.js.map +0 -1
  1705. package/dist/src/agent/image/image-model-fallback.js.map +0 -1
  1706. package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
  1707. package/dist/src/agent/image/load-image-media.js.map +0 -1
  1708. package/dist/src/agent/image/tool-model-config.js.map +0 -1
  1709. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
  1710. package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
  1711. package/dist/src/agent/image/understanding/runtime.js.map +0 -1
  1712. package/dist/src/agent/image/vision-detection.js.map +0 -1
  1713. package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
  1714. package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
  1715. package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
  1716. package/dist/src/agent/ipc/bus.js.map +0 -1
  1717. package/dist/src/agent/ipc/inbox.js.map +0 -1
  1718. package/dist/src/agent/ipc/socket.js.map +0 -1
  1719. package/dist/src/agent/ipc/types.js.map +0 -1
  1720. package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
  1721. package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
  1722. package/dist/src/agent/lifecycle/manager.js.map +0 -1
  1723. package/dist/src/agent/lifecycle/progress.js.map +0 -1
  1724. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
  1725. package/dist/src/agent/lifecycle/typing.js.map +0 -1
  1726. package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
  1727. package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
  1728. package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
  1729. package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
  1730. package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
  1731. package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
  1732. package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
  1733. package/dist/src/agent/mcp/mcp-http.js.map +0 -1
  1734. package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
  1735. package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
  1736. package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
  1737. package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
  1738. package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
  1739. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
  1740. package/dist/src/agent/media-generation/model-ref.js.map +0 -1
  1741. package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
  1742. package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
  1743. package/dist/src/agent/memory/agent-message-access.js.map +0 -1
  1744. package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
  1745. package/dist/src/agent/memory/builtin-provider.js.map +0 -1
  1746. package/dist/src/agent/memory/compaction.js.map +0 -1
  1747. package/dist/src/agent/memory/context/planner.js.map +0 -1
  1748. package/dist/src/agent/memory/context-fence.js.map +0 -1
  1749. package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
  1750. package/dist/src/agent/memory/dreaming/config.js.map +0 -1
  1751. package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
  1752. package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
  1753. package/dist/src/agent/memory/dreaming/events.js.map +0 -1
  1754. package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
  1755. package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
  1756. package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
  1757. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
  1758. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
  1759. package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
  1760. package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
  1761. package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
  1762. package/dist/src/agent/memory/lifecycle.js.map +0 -1
  1763. package/dist/src/agent/memory/manager.js.map +0 -1
  1764. package/dist/src/agent/memory/memory-config.js.map +0 -1
  1765. package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
  1766. package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
  1767. package/dist/src/agent/memory/sensitivity.js.map +0 -1
  1768. package/dist/src/agent/memory/source-origin.js.map +0 -1
  1769. package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
  1770. package/dist/src/agent/memory/summary-generator.js.map +0 -1
  1771. package/dist/src/agent/memory/understanding/correction.js.map +0 -1
  1772. package/dist/src/agent/memory/understanding/quality.js.map +0 -1
  1773. package/dist/src/agent/memory/understanding/service.js.map +0 -1
  1774. package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
  1775. package/dist/src/agent/memory/user-message-text.js.map +0 -1
  1776. package/dist/src/agent/memory/window.js.map +0 -1
  1777. package/dist/src/agent/messaging/command-handler.js.map +0 -1
  1778. package/dist/src/agent/messaging/message-router.js.map +0 -1
  1779. package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
  1780. package/dist/src/agent/messaging/stream-manager.js.map +0 -1
  1781. package/dist/src/agent/middleware/context.js.map +0 -1
  1782. package/dist/src/agent/middleware/self-verify.js.map +0 -1
  1783. package/dist/src/agent/models/manager.js.map +0 -1
  1784. package/dist/src/agent/models/request-limiter.js.map +0 -1
  1785. package/dist/src/agent/models/selection.js.map +0 -1
  1786. package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
  1787. package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
  1788. package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
  1789. package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
  1790. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
  1791. package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
  1792. package/dist/src/agent/prompt/memory/index.js.map +0 -1
  1793. package/dist/src/agent/prompt/safety.js.map +0 -1
  1794. package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
  1795. package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
  1796. package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
  1797. package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
  1798. package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
  1799. package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
  1800. package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
  1801. package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
  1802. package/dist/src/agent/prompt/subagent-context.js.map +0 -1
  1803. package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
  1804. package/dist/src/agent/prompt/system-prompt.js.map +0 -1
  1805. package/dist/src/agent/prompt/system-reminder.js.map +0 -1
  1806. package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
  1807. package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
  1808. package/dist/src/agent/reply/startup-context.js.map +0 -1
  1809. package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
  1810. package/dist/src/agent/sandbox/command-validator.js.map +0 -1
  1811. package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
  1812. package/dist/src/agent/sandbox/path-policy.js.map +0 -1
  1813. package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
  1814. package/dist/src/agent/sandbox/types.js.map +0 -1
  1815. package/dist/src/agent/service/async-queue.js.map +0 -1
  1816. package/dist/src/agent/service/btw-query.js.map +0 -1
  1817. package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
  1818. package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
  1819. package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
  1820. package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
  1821. package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
  1822. package/dist/src/agent/service/session-context-report.js.map +0 -1
  1823. package/dist/src/agent/service/webchat-tts.js.map +0 -1
  1824. package/dist/src/agent/service-inbound-utils.js.map +0 -1
  1825. package/dist/src/agent/service.js.map +0 -1
  1826. package/dist/src/agent/session/session-config-service.js.map +0 -1
  1827. package/dist/src/agent/session/session-context.js.map +0 -1
  1828. package/dist/src/agent/session/session-hydrator.js.map +0 -1
  1829. package/dist/src/agent/session/session-inspector.js.map +0 -1
  1830. package/dist/src/agent/session/session-lifecycle.js.map +0 -1
  1831. package/dist/src/agent/session/session-state-bag.js.map +0 -1
  1832. package/dist/src/agent/session/tracker.js.map +0 -1
  1833. package/dist/src/agent/skills/config.js.map +0 -1
  1834. package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
  1835. package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
  1836. package/dist/src/agent/skills/hub-hash.js.map +0 -1
  1837. package/dist/src/agent/skills/hub-lock.js.map +0 -1
  1838. package/dist/src/agent/skills/hub-pull.js.map +0 -1
  1839. package/dist/src/agent/skills/index.js.map +0 -1
  1840. package/dist/src/agent/skills/install-target.js.map +0 -1
  1841. package/dist/src/agent/skills/installer.js.map +0 -1
  1842. package/dist/src/agent/skills/managed-store.js.map +0 -1
  1843. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
  1844. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
  1845. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
  1846. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
  1847. package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
  1848. package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
  1849. package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
  1850. package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
  1851. package/dist/src/agent/skills/required-env-vars.js.map +0 -1
  1852. package/dist/src/agent/skills/scanner.js.map +0 -1
  1853. package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
  1854. package/dist/src/agent/skills/skill-manager.js.map +0 -1
  1855. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
  1856. package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
  1857. package/dist/src/agent/skills/skill-view-path.js.map +0 -1
  1858. package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
  1859. package/dist/src/agent/skills/test-framework.js.map +0 -1
  1860. package/dist/src/agent/skills/watcher.js.map +0 -1
  1861. package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
  1862. package/dist/src/agent/source-context/injector.js.map +0 -1
  1863. package/dist/src/agent/source-context/types.js.map +0 -1
  1864. package/dist/src/agent/starter-agents.js.map +0 -1
  1865. package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
  1866. package/dist/src/agent/tool-manuals/browser.js.map +0 -1
  1867. package/dist/src/agent/tool-manuals/index.js.map +0 -1
  1868. package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
  1869. package/dist/src/agent/tools/apply-patch.js.map +0 -1
  1870. package/dist/src/agent/tools/automation-tool.js.map +0 -1
  1871. package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
  1872. package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
  1873. package/dist/src/agent/tools/chain-tracker.js.map +0 -1
  1874. package/dist/src/agent/tools/clarify-tool.js.map +0 -1
  1875. package/dist/src/agent/tools/cli-clarify.js.map +0 -1
  1876. package/dist/src/agent/tools/communication.js.map +0 -1
  1877. package/dist/src/agent/tools/composio-tool.js.map +0 -1
  1878. package/dist/src/agent/tools/concurrency.js.map +0 -1
  1879. package/dist/src/agent/tools/create-share-tool.js.map +0 -1
  1880. package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
  1881. package/dist/src/agent/tools/delegate-tool.js.map +0 -1
  1882. package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
  1883. package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
  1884. package/dist/src/agent/tools/edit-diff.js.map +0 -1
  1885. package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
  1886. package/dist/src/agent/tools/error-tracker.js.map +0 -1
  1887. package/dist/src/agent/tools/exec-command.js.map +0 -1
  1888. package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
  1889. package/dist/src/agent/tools/executor.js.map +0 -1
  1890. package/dist/src/agent/tools/factory.js.map +0 -1
  1891. package/dist/src/agent/tools/find.js.map +0 -1
  1892. package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
  1893. package/dist/src/agent/tools/goal-tool.js.map +0 -1
  1894. package/dist/src/agent/tools/grep.js.map +0 -1
  1895. package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
  1896. package/dist/src/agent/tools/image-tool.js.map +0 -1
  1897. package/dist/src/agent/tools/list-dir.js.map +0 -1
  1898. package/dist/src/agent/tools/media-read-tool.js.map +0 -1
  1899. package/dist/src/agent/tools/memory-tool.js.map +0 -1
  1900. package/dist/src/agent/tools/metadata.js.map +0 -1
  1901. package/dist/src/agent/tools/read.js.map +0 -1
  1902. package/dist/src/agent/tools/search/http.js.map +0 -1
  1903. package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
  1904. package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
  1905. package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
  1906. package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
  1907. package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
  1908. package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
  1909. package/dist/src/agent/tools/search/region.js.map +0 -1
  1910. package/dist/src/agent/tools/search/registry.js.map +0 -1
  1911. package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
  1912. package/dist/src/agent/tools/send-media.js.map +0 -1
  1913. package/dist/src/agent/tools/session-search-tool.js.map +0 -1
  1914. package/dist/src/agent/tools/session-status-tool.js.map +0 -1
  1915. package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
  1916. package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
  1917. package/dist/src/agent/tools/skills-tools.js.map +0 -1
  1918. package/dist/src/agent/tools/structured-output.js.map +0 -1
  1919. package/dist/src/agent/tools/todo-tool.js.map +0 -1
  1920. package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
  1921. package/dist/src/agent/tools/tool-paths.js.map +0 -1
  1922. package/dist/src/agent/tools/truncate.js.map +0 -1
  1923. package/dist/src/agent/tools/tts-tool.js.map +0 -1
  1924. package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
  1925. package/dist/src/agent/tools/url-safety.js.map +0 -1
  1926. package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
  1927. package/dist/src/agent/tools/web-extract.js.map +0 -1
  1928. package/dist/src/agent/tools/web.js.map +0 -1
  1929. package/dist/src/agent/tools/workflow-tool.js.map +0 -1
  1930. package/dist/src/agent/tools/write.js.map +0 -1
  1931. package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
  1932. package/dist/src/agent/transcript/google-api.js.map +0 -1
  1933. package/dist/src/agent/transcript/model-selection.js.map +0 -1
  1934. package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
  1935. package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
  1936. package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
  1937. package/dist/src/agent/transcript/thinking-types.js.map +0 -1
  1938. package/dist/src/agent/transcript/thinking.js.map +0 -1
  1939. package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
  1940. package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
  1941. package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
  1942. package/dist/src/agent/workflow/agent-progress.js.map +0 -1
  1943. package/dist/src/agent/workflow/builtins/index.js.map +0 -1
  1944. package/dist/src/agent/workflow/catalog.js.map +0 -1
  1945. package/dist/src/agent/workflow/progress-broker.js.map +0 -1
  1946. package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
  1947. package/dist/src/agent/workflow/snapshot.js.map +0 -1
  1948. package/dist/src/agent/workflow/step-labels.js.map +0 -1
  1949. package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
  1950. package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
  1951. package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
  1952. package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
  1953. package/dist/src/agent-manifest/index.js.map +0 -1
  1954. package/dist/src/agent-manifest/preset-chain.js.map +0 -1
  1955. package/dist/src/agent-manifest/prompt.js.map +0 -1
  1956. package/dist/src/agent-manifest/resolver.js.map +0 -1
  1957. package/dist/src/agent-manifest/schema.js.map +0 -1
  1958. package/dist/src/agent-manifest/validator.js.map +0 -1
  1959. package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
  1960. package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
  1961. package/dist/src/agent-runtime/model-router.js.map +0 -1
  1962. package/dist/src/agent-runtime/run-trace.js.map +0 -1
  1963. package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
  1964. package/dist/src/agent-runtime/tool-registry.js.map +0 -1
  1965. package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
  1966. package/dist/src/ai-assist/text-assist.js.map +0 -1
  1967. package/dist/src/auth/credentials.js.map +0 -1
  1968. package/dist/src/auth/index.js.map +0 -1
  1969. package/dist/src/auth/oauth/anthropic.js.map +0 -1
  1970. package/dist/src/auth/oauth/github-copilot.js.map +0 -1
  1971. package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
  1972. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
  1973. package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
  1974. package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
  1975. package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
  1976. package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
  1977. package/dist/src/auth/oauth/minimax.js.map +0 -1
  1978. package/dist/src/auth/oauth/openai-codex.js.map +0 -1
  1979. package/dist/src/auth/oauth/pkce.js.map +0 -1
  1980. package/dist/src/auth/profiles/oauth.js.map +0 -1
  1981. package/dist/src/auth/profiles/order.js.map +0 -1
  1982. package/dist/src/auth/profiles/profiles.js.map +0 -1
  1983. package/dist/src/auth/profiles/store.js.map +0 -1
  1984. package/dist/src/auth/sync-provider-auth.js.map +0 -1
  1985. package/dist/src/automations/api/routes.js.map +0 -1
  1986. package/dist/src/automations/domain/schedule.js.map +0 -1
  1987. package/dist/src/automations/domain/validation.js.map +0 -1
  1988. package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
  1989. package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
  1990. package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
  1991. package/dist/src/automations/product-events.js.map +0 -1
  1992. package/dist/src/automations/service/action-executor.js.map +0 -1
  1993. package/dist/src/automations/service/automation-service.js.map +0 -1
  1994. package/dist/src/automations/storage/automation-repository.js.map +0 -1
  1995. package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
  1996. package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
  1997. package/dist/src/browser/actions/registry.js.map +0 -1
  1998. package/dist/src/browser/backend-from-config.js.map +0 -1
  1999. package/dist/src/browser/browser-command-timeout.js.map +0 -1
  2000. package/dist/src/browser/cache-dir-policy.js.map +0 -1
  2001. package/dist/src/browser/cdp-local-launcher.js.map +0 -1
  2002. package/dist/src/browser/cdp-supervisor.js.map +0 -1
  2003. package/dist/src/browser/free-port.js.map +0 -1
  2004. package/dist/src/browser/humanize.js.map +0 -1
  2005. package/dist/src/browser/install-lock.js.map +0 -1
  2006. package/dist/src/browser/manager.js.map +0 -1
  2007. package/dist/src/browser/pipeline/output.js.map +0 -1
  2008. package/dist/src/browser/pipeline/runner.js.map +0 -1
  2009. package/dist/src/browser/pipeline/schema.js.map +0 -1
  2010. package/dist/src/browser/pipeline/source.js.map +0 -1
  2011. package/dist/src/browser/pipeline/template.js.map +0 -1
  2012. package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
  2013. package/dist/src/browser/providers/browser-use.js.map +0 -1
  2014. package/dist/src/browser/providers/browserbase.js.map +0 -1
  2015. package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
  2016. package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
  2017. package/dist/src/browser/providers/extension.js.map +0 -1
  2018. package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
  2019. package/dist/src/browser/providers/playwright-install.js.map +0 -1
  2020. package/dist/src/browser/readiness.js.map +0 -1
  2021. package/dist/src/browser/schemas.js.map +0 -1
  2022. package/dist/src/browser/session-lifecycle.js.map +0 -1
  2023. package/dist/src/browser/snapshot-helpers.js.map +0 -1
  2024. package/dist/src/browser/stealth.js.map +0 -1
  2025. package/dist/src/browser/url-policy.js.map +0 -1
  2026. package/dist/src/capabilities/store-connector.js.map +0 -1
  2027. package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
  2028. package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
  2029. package/dist/src/channels/attachments/inbound-types.js.map +0 -1
  2030. package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
  2031. package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
  2032. package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
  2033. package/dist/src/channels/config-helpers.js.map +0 -1
  2034. package/dist/src/channels/envelope-timestamp.js.map +0 -1
  2035. package/dist/src/channels/exec-approval-runtime.js.map +0 -1
  2036. package/dist/src/channels/health-monitor.js.map +0 -1
  2037. package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
  2038. package/dist/src/channels/internal-outbound.js.map +0 -1
  2039. package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
  2040. package/dist/src/channels/manager.js.map +0 -1
  2041. package/dist/src/channels/media.js.map +0 -1
  2042. package/dist/src/channels/outbound/deliver.js.map +0 -1
  2043. package/dist/src/channels/outbound/normalize.js.map +0 -1
  2044. package/dist/src/channels/outbound/persist-store.js.map +0 -1
  2045. package/dist/src/channels/outbound/queue.js.map +0 -1
  2046. package/dist/src/channels/outbound-sender.js.map +0 -1
  2047. package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
  2048. package/dist/src/channels/pairing/approve-cli.js.map +0 -1
  2049. package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
  2050. package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
  2051. package/dist/src/channels/pairing/pairing-events.js.map +0 -1
  2052. package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
  2053. package/dist/src/channels/pairing/pairing-service.js.map +0 -1
  2054. package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
  2055. package/dist/src/channels/pairing/pairing-store.js.map +0 -1
  2056. package/dist/src/channels/pairing/paths.js.map +0 -1
  2057. package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
  2058. package/dist/src/channels/pipeline.js.map +0 -1
  2059. package/dist/src/channels/plugin-registry.js.map +0 -1
  2060. package/dist/src/channels/plugins/registry.js.map +0 -1
  2061. package/dist/src/channels/restart-policy.js.map +0 -1
  2062. package/dist/src/channels/security-helpers.js.map +0 -1
  2063. package/dist/src/channels/security.js.map +0 -1
  2064. package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
  2065. package/dist/src/chat-commands/agent-edit.js.map +0 -1
  2066. package/dist/src/chat-commands/builtins/config.js.map +0 -1
  2067. package/dist/src/chat-commands/builtins/context.js.map +0 -1
  2068. package/dist/src/chat-commands/builtins/goal.js.map +0 -1
  2069. package/dist/src/chat-commands/builtins/model.js.map +0 -1
  2070. package/dist/src/chat-commands/builtins/review.js.map +0 -1
  2071. package/dist/src/chat-commands/builtins/session.js.map +0 -1
  2072. package/dist/src/chat-commands/builtins/skill.js.map +0 -1
  2073. package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
  2074. package/dist/src/chat-commands/builtins/system.js.map +0 -1
  2075. package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
  2076. package/dist/src/chat-commands/builtins/tts.js.map +0 -1
  2077. package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
  2078. package/dist/src/chat-commands/command-parse.js.map +0 -1
  2079. package/dist/src/chat-commands/config-paths.js.map +0 -1
  2080. package/dist/src/chat-commands/config-value.js.map +0 -1
  2081. package/dist/src/chat-commands/context.js.map +0 -1
  2082. package/dist/src/chat-commands/format-output.js.map +0 -1
  2083. package/dist/src/chat-commands/index.js.map +0 -1
  2084. package/dist/src/chat-commands/processor.js.map +0 -1
  2085. package/dist/src/chat-commands/registry.js.map +0 -1
  2086. package/dist/src/chat-commands/session-key.js.map +0 -1
  2087. package/dist/src/cli/argv-invocation.js.map +0 -1
  2088. package/dist/src/cli/argv.js.map +0 -1
  2089. package/dist/src/cli/bin.js.map +0 -1
  2090. package/dist/src/cli/cli-log-level-preset.js.map +0 -1
  2091. package/dist/src/cli/command-catalog.js.map +0 -1
  2092. package/dist/src/cli/command-loaders.js.map +0 -1
  2093. package/dist/src/cli/command-manifest.js.map +0 -1
  2094. package/dist/src/cli/command-path-matches.js.map +0 -1
  2095. package/dist/src/cli/command-path-policy.js.map +0 -1
  2096. package/dist/src/cli/command-startup-policy.js.map +0 -1
  2097. package/dist/src/cli/commands/agent/interactive.js.map +0 -1
  2098. package/dist/src/cli/commands/agent/sessions.js.map +0 -1
  2099. package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
  2100. package/dist/src/cli/commands/agent.js.map +0 -1
  2101. package/dist/src/cli/commands/agents.js.map +0 -1
  2102. package/dist/src/cli/commands/auth.js.map +0 -1
  2103. package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
  2104. package/dist/src/cli/commands/browser.js.map +0 -1
  2105. package/dist/src/cli/commands/channels.js.map +0 -1
  2106. package/dist/src/cli/commands/config.js.map +0 -1
  2107. package/dist/src/cli/commands/connectors.js.map +0 -1
  2108. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
  2109. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
  2110. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
  2111. package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
  2112. package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
  2113. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
  2114. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
  2115. package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
  2116. package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
  2117. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
  2118. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
  2119. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
  2120. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
  2121. package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
  2122. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
  2123. package/dist/src/cli/commands/doctor/flow.js.map +0 -1
  2124. package/dist/src/cli/commands/doctor/format.js.map +0 -1
  2125. package/dist/src/cli/commands/doctor/index.js.map +0 -1
  2126. package/dist/src/cli/commands/extension-create.js.map +0 -1
  2127. package/dist/src/cli/commands/extension-dev.js.map +0 -1
  2128. package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
  2129. package/dist/src/cli/commands/extension-pack.js.map +0 -1
  2130. package/dist/src/cli/commands/extension.js.map +0 -1
  2131. package/dist/src/cli/commands/gateway/call.js.map +0 -1
  2132. package/dist/src/cli/commands/gateway/health.js.map +0 -1
  2133. package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
  2134. package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
  2135. package/dist/src/cli/commands/gateway/logs.js.map +0 -1
  2136. package/dist/src/cli/commands/gateway/probe.js.map +0 -1
  2137. package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
  2138. package/dist/src/cli/commands/gateway/restart.js.map +0 -1
  2139. package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
  2140. package/dist/src/cli/commands/gateway/service.js.map +0 -1
  2141. package/dist/src/cli/commands/gateway/shared.js.map +0 -1
  2142. package/dist/src/cli/commands/gateway/status.js.map +0 -1
  2143. package/dist/src/cli/commands/gateway/stop.js.map +0 -1
  2144. package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
  2145. package/dist/src/cli/commands/gateway/token.js.map +0 -1
  2146. package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
  2147. package/dist/src/cli/commands/gateway.js.map +0 -1
  2148. package/dist/src/cli/commands/goal.js.map +0 -1
  2149. package/dist/src/cli/commands/image.js.map +0 -1
  2150. package/dist/src/cli/commands/init.js.map +0 -1
  2151. package/dist/src/cli/commands/logs.js.map +0 -1
  2152. package/dist/src/cli/commands/models.js.map +0 -1
  2153. package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
  2154. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
  2155. package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
  2156. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
  2157. package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
  2158. package/dist/src/cli/commands/onboard/model.js.map +0 -1
  2159. package/dist/src/cli/commands/onboard.js.map +0 -1
  2160. package/dist/src/cli/commands/profile.js.map +0 -1
  2161. package/dist/src/cli/commands/project.js.map +0 -1
  2162. package/dist/src/cli/commands/providers.js.map +0 -1
  2163. package/dist/src/cli/commands/resume.js.map +0 -1
  2164. package/dist/src/cli/commands/search.js.map +0 -1
  2165. package/dist/src/cli/commands/session/actions.js.map +0 -1
  2166. package/dist/src/cli/commands/session/utils.js.map +0 -1
  2167. package/dist/src/cli/commands/session.js.map +0 -1
  2168. package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
  2169. package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
  2170. package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
  2171. package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
  2172. package/dist/src/cli/commands/setup.js.map +0 -1
  2173. package/dist/src/cli/commands/skills-test.js.map +0 -1
  2174. package/dist/src/cli/commands/skills.js.map +0 -1
  2175. package/dist/src/cli/commands/tailscale.js.map +0 -1
  2176. package/dist/src/cli/commands/tui-runner.js.map +0 -1
  2177. package/dist/src/cli/commands/tui.js.map +0 -1
  2178. package/dist/src/cli/commands/tunnel.js.map +0 -1
  2179. package/dist/src/cli/commands/update.js.map +0 -1
  2180. package/dist/src/cli/commands/voice.js.map +0 -1
  2181. package/dist/src/cli/context.js.map +0 -1
  2182. package/dist/src/cli/extension-cli-register.js.map +0 -1
  2183. package/dist/src/cli/gateway-run-argv.js.map +0 -1
  2184. package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
  2185. package/dist/src/cli/index.js.map +0 -1
  2186. package/dist/src/cli/registry.js.map +0 -1
  2187. package/dist/src/cli/templates.js.map +0 -1
  2188. package/dist/src/cli/utils/colors.js.map +0 -1
  2189. package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
  2190. package/dist/src/cli/utils/gateway-client.js.map +0 -1
  2191. package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
  2192. package/dist/src/cli/utils/init-workspace.js.map +0 -1
  2193. package/dist/src/cli/utils/oauth-login.js.map +0 -1
  2194. package/dist/src/cli/utils/oauth-providers.js.map +0 -1
  2195. package/dist/src/cli/utils/session.js.map +0 -1
  2196. package/dist/src/commands/agents.config.js.map +0 -1
  2197. package/dist/src/config/agent-profile.js.map +0 -1
  2198. package/dist/src/config/agent-typed-models.js.map +0 -1
  2199. package/dist/src/config/commands.flags.js.map +0 -1
  2200. package/dist/src/config/default-model.js.map +0 -1
  2201. package/dist/src/config/diff.js.map +0 -1
  2202. package/dist/src/config/gateway-bind.js.map +0 -1
  2203. package/dist/src/config/index.js.map +0 -1
  2204. package/dist/src/config/loader.js.map +0 -1
  2205. package/dist/src/config/mcp-config-normalize.js.map +0 -1
  2206. package/dist/src/config/model-input.js.map +0 -1
  2207. package/dist/src/config/models-json.js.map +0 -1
  2208. package/dist/src/config/paths-state.js.map +0 -1
  2209. package/dist/src/config/paths.js.map +0 -1
  2210. package/dist/src/config/profile.js.map +0 -1
  2211. package/dist/src/config/public-url.js.map +0 -1
  2212. package/dist/src/config/reload.js.map +0 -1
  2213. package/dist/src/config/resolve-config-value.js.map +0 -1
  2214. package/dist/src/config/rules.js.map +0 -1
  2215. package/dist/src/config/runtime-overrides.js.map +0 -1
  2216. package/dist/src/config/schema.js.map +0 -1
  2217. package/dist/src/config/validate-channel-configs.js.map +0 -1
  2218. package/dist/src/config/voice.js.map +0 -1
  2219. package/dist/src/config/web-patch.js.map +0 -1
  2220. package/dist/src/config/workspace-defaults.js.map +0 -1
  2221. package/dist/src/config/workspace-dirs.js.map +0 -1
  2222. package/dist/src/config/workspace-path-helpers.js.map +0 -1
  2223. package/dist/src/config/workspace-path.js.map +0 -1
  2224. package/dist/src/connectors/approval.js.map +0 -1
  2225. package/dist/src/connectors/auth-provider-registry.js.map +0 -1
  2226. package/dist/src/connectors/builtin-catalog.js.map +0 -1
  2227. package/dist/src/connectors/catalog.js.map +0 -1
  2228. package/dist/src/connectors/composio-catalog.js.map +0 -1
  2229. package/dist/src/connectors/composio-logo.js.map +0 -1
  2230. package/dist/src/connectors/composio-sessions.js.map +0 -1
  2231. package/dist/src/connectors/composio-triggers.js.map +0 -1
  2232. package/dist/src/connectors/composio.js.map +0 -1
  2233. package/dist/src/connectors/connector-memory-sync.js.map +0 -1
  2234. package/dist/src/connectors/health.js.map +0 -1
  2235. package/dist/src/connectors/install.js.map +0 -1
  2236. package/dist/src/connectors/instances.js.map +0 -1
  2237. package/dist/src/connectors/integration-strategy.js.map +0 -1
  2238. package/dist/src/connectors/lifecycle.js.map +0 -1
  2239. package/dist/src/connectors/materialize.js.map +0 -1
  2240. package/dist/src/connectors/policy.js.map +0 -1
  2241. package/dist/src/connectors/providers.js.map +0 -1
  2242. package/dist/src/connectors/registries/modelscope.js.map +0 -1
  2243. package/dist/src/connectors/registries/official-mcp.js.map +0 -1
  2244. package/dist/src/connectors/registries/search.js.map +0 -1
  2245. package/dist/src/connectors/registries/smithery.js.map +0 -1
  2246. package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
  2247. package/dist/src/connectors/secret-store.js.map +0 -1
  2248. package/dist/src/connectors/setup-secrets.js.map +0 -1
  2249. package/dist/src/connectors/supervisor.js.map +0 -1
  2250. package/dist/src/connectors/usage.js.map +0 -1
  2251. package/dist/src/connectors/workflow-preflight.js.map +0 -1
  2252. package/dist/src/daemon/constants.js.map +0 -1
  2253. package/dist/src/daemon/install-plan.js.map +0 -1
  2254. package/dist/src/daemon/launchd.js.map +0 -1
  2255. package/dist/src/daemon/schtasks.js.map +0 -1
  2256. package/dist/src/daemon/service-audit.js.map +0 -1
  2257. package/dist/src/daemon/service.js.map +0 -1
  2258. package/dist/src/daemon/systemd.js.map +0 -1
  2259. package/dist/src/document-understanding/extract.js.map +0 -1
  2260. package/dist/src/errors/index.js.map +0 -1
  2261. package/dist/src/extensions/activation-context.js.map +0 -1
  2262. package/dist/src/extensions/activation-planner.js.map +0 -1
  2263. package/dist/src/extensions/api.js.map +0 -1
  2264. package/dist/src/extensions/bundle-mcp.js.map +0 -1
  2265. package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
  2266. package/dist/src/extensions/diagnostics.js.map +0 -1
  2267. package/dist/src/extensions/discover-extensions.js.map +0 -1
  2268. package/dist/src/extensions/engine-check.js.map +0 -1
  2269. package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
  2270. package/dist/src/extensions/extension-registry-impl.js.map +0 -1
  2271. package/dist/src/extensions/health.js.map +0 -1
  2272. package/dist/src/extensions/hooks.js.map +0 -1
  2273. package/dist/src/extensions/index.js.map +0 -1
  2274. package/dist/src/extensions/install-transaction.js.map +0 -1
  2275. package/dist/src/extensions/install.js.map +0 -1
  2276. package/dist/src/extensions/loader.js.map +0 -1
  2277. package/dist/src/extensions/lockfile.js.map +0 -1
  2278. package/dist/src/extensions/manifest-registry.js.map +0 -1
  2279. package/dist/src/extensions/marketplace.js.map +0 -1
  2280. package/dist/src/extensions/media-provider-contracts.js.map +0 -1
  2281. package/dist/src/extensions/normalize-manifest.js.map +0 -1
  2282. package/dist/src/extensions/onboard-helpers.js.map +0 -1
  2283. package/dist/src/extensions/package-contract.js.map +0 -1
  2284. package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
  2285. package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
  2286. package/dist/src/extensions/sdk/index.js.map +0 -1
  2287. package/dist/src/extensions/sdk/lazy.js.map +0 -1
  2288. package/dist/src/extensions/sdk/testing.js.map +0 -1
  2289. package/dist/src/extensions/security.js.map +0 -1
  2290. package/dist/src/extensions/slots.js.map +0 -1
  2291. package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
  2292. package/dist/src/extensions/store-zip-limits.js.map +0 -1
  2293. package/dist/src/extensions/typed-event-bus.js.map +0 -1
  2294. package/dist/src/extensions/types/hooks.js.map +0 -1
  2295. package/dist/src/extensions/types/providers.js.map +0 -1
  2296. package/dist/src/extensions/update.js.map +0 -1
  2297. package/dist/src/extensions/when-context.js.map +0 -1
  2298. package/dist/src/extensions/when-expression.js.map +0 -1
  2299. package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
  2300. package/dist/src/gateway/agent-run-relay.js.map +0 -1
  2301. package/dist/src/gateway/agents-admin.js.map +0 -1
  2302. package/dist/src/gateway/auth.js.map +0 -1
  2303. package/dist/src/gateway/capability-presets-admin.js.map +0 -1
  2304. package/dist/src/gateway/chat-limits.js.map +0 -1
  2305. package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
  2306. package/dist/src/gateway/clarify-bridge.js.map +0 -1
  2307. package/dist/src/gateway/clarify-runtime.js.map +0 -1
  2308. package/dist/src/gateway/client-ip.js.map +0 -1
  2309. package/dist/src/gateway/config-tools-web.js.map +0 -1
  2310. package/dist/src/gateway/credential.js.map +0 -1
  2311. package/dist/src/gateway/discovery/mdns.js.map +0 -1
  2312. package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
  2313. package/dist/src/gateway/ensure-network-cors.js.map +0 -1
  2314. package/dist/src/gateway/file-path-classifier.js.map +0 -1
  2315. package/dist/src/gateway/file-reference-registry.js.map +0 -1
  2316. package/dist/src/gateway/global-defaults-admin.js.map +0 -1
  2317. package/dist/src/gateway/heartbeat/service.js.map +0 -1
  2318. package/dist/src/gateway/hono/app.js.map +0 -1
  2319. package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
  2320. package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
  2321. package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
  2322. package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
  2323. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
  2324. package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
  2325. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
  2326. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
  2327. package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
  2328. package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
  2329. package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
  2330. package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
  2331. package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
  2332. package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
  2333. package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
  2334. package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
  2335. package/dist/src/gateway/hono/oauth-async.js.map +0 -1
  2336. package/dist/src/gateway/hono/oauth.js.map +0 -1
  2337. package/dist/src/gateway/hono/routes/activity.js.map +0 -1
  2338. package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
  2339. package/dist/src/gateway/hono/routes/agents.js.map +0 -1
  2340. package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
  2341. package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
  2342. package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
  2343. package/dist/src/gateway/hono/routes/browser.js.map +0 -1
  2344. package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
  2345. package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
  2346. package/dist/src/gateway/hono/routes/channels.js.map +0 -1
  2347. package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
  2348. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
  2349. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
  2350. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
  2351. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
  2352. package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
  2353. package/dist/src/gateway/hono/routes/config.js.map +0 -1
  2354. package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
  2355. package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
  2356. package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
  2357. package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
  2358. package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
  2359. package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
  2360. package/dist/src/gateway/hono/routes/goals.js.map +0 -1
  2361. package/dist/src/gateway/hono/routes/home.js.map +0 -1
  2362. package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
  2363. package/dist/src/gateway/hono/routes/index.js.map +0 -1
  2364. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
  2365. package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
  2366. package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
  2367. package/dist/src/gateway/hono/routes/logs.js.map +0 -1
  2368. package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
  2369. package/dist/src/gateway/hono/routes/media.js.map +0 -1
  2370. package/dist/src/gateway/hono/routes/memory.js.map +0 -1
  2371. package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
  2372. package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
  2373. package/dist/src/gateway/hono/routes/models.js.map +0 -1
  2374. package/dist/src/gateway/hono/routes/notes.js.map +0 -1
  2375. package/dist/src/gateway/hono/routes/projects.js.map +0 -1
  2376. package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
  2377. package/dist/src/gateway/hono/routes/search.js.map +0 -1
  2378. package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
  2379. package/dist/src/gateway/hono/routes/shares.js.map +0 -1
  2380. package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
  2381. package/dist/src/gateway/hono/routes/status.js.map +0 -1
  2382. package/dist/src/gateway/hono/routes/tui.js.map +0 -1
  2383. package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
  2384. package/dist/src/gateway/hono/routes/update.js.map +0 -1
  2385. package/dist/src/gateway/hono/routes/voice.js.map +0 -1
  2386. package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
  2387. package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
  2388. package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
  2389. package/dist/src/gateway/hono/routes/you.js.map +0 -1
  2390. package/dist/src/gateway/hono/sse-json.js.map +0 -1
  2391. package/dist/src/gateway/hono/sse.js.map +0 -1
  2392. package/dist/src/gateway/host.js.map +0 -1
  2393. package/dist/src/gateway/image-capabilities.js.map +0 -1
  2394. package/dist/src/gateway/listen.js.map +0 -1
  2395. package/dist/src/gateway/lock.js.map +0 -1
  2396. package/dist/src/gateway/ports.js.map +0 -1
  2397. package/dist/src/gateway/protocol.js.map +0 -1
  2398. package/dist/src/gateway/public-url.js.map +0 -1
  2399. package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
  2400. package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
  2401. package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
  2402. package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
  2403. package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
  2404. package/dist/src/gateway/respawn.js.map +0 -1
  2405. package/dist/src/gateway/run-loop.js.map +0 -1
  2406. package/dist/src/gateway/runtime-config.js.map +0 -1
  2407. package/dist/src/gateway/security/audit.js.map +0 -1
  2408. package/dist/src/gateway/security/csp.js.map +0 -1
  2409. package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
  2410. package/dist/src/gateway/security/external-content.js.map +0 -1
  2411. package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
  2412. package/dist/src/gateway/security/loopback.js.map +0 -1
  2413. package/dist/src/gateway/security/operator-scopes.js.map +0 -1
  2414. package/dist/src/gateway/security/origin-check.js.map +0 -1
  2415. package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
  2416. package/dist/src/gateway/security/secret-equal.js.map +0 -1
  2417. package/dist/src/gateway/server-tailscale.js.map +0 -1
  2418. package/dist/src/gateway/server.js.map +0 -1
  2419. package/dist/src/gateway/service/agent-runner.js.map +0 -1
  2420. package/dist/src/gateway/service/config-coordinator.js.map +0 -1
  2421. package/dist/src/gateway/service/marketplace-service.js.map +0 -1
  2422. package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
  2423. package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
  2424. package/dist/src/gateway/service/sessions-api.js.map +0 -1
  2425. package/dist/src/gateway/service/sse-hub.js.map +0 -1
  2426. package/dist/src/gateway/service.js.map +0 -1
  2427. package/dist/src/gateway/session-reset-service.js.map +0 -1
  2428. package/dist/src/gateway/startup-readiness.js.map +0 -1
  2429. package/dist/src/gateway/startup-trace.js.map +0 -1
  2430. package/dist/src/gateway/tailscale-auth.js.map +0 -1
  2431. package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
  2432. package/dist/src/gateway/tls-server.js.map +0 -1
  2433. package/dist/src/gateway/trusted-proxy.js.map +0 -1
  2434. package/dist/src/gateway/user-turn-input.js.map +0 -1
  2435. package/dist/src/gateway/workspace-editor-path.js.map +0 -1
  2436. package/dist/src/gateway/workspace-file-search.js.map +0 -1
  2437. package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
  2438. package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
  2439. package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
  2440. package/dist/src/gateway/ws-security.js.map +0 -1
  2441. package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
  2442. package/dist/src/goals/goal-contract-draft.js.map +0 -1
  2443. package/dist/src/goals/goal-evidence-review.js.map +0 -1
  2444. package/dist/src/goals/goal-notifications.js.map +0 -1
  2445. package/dist/src/goals/goal-queue-store.js.map +0 -1
  2446. package/dist/src/goals/goal-runner.js.map +0 -1
  2447. package/dist/src/goals/goal-service.js.map +0 -1
  2448. package/dist/src/goals/goal-store.js.map +0 -1
  2449. package/dist/src/goals/goal-workflow-judge.js.map +0 -1
  2450. package/dist/src/heartbeat/active-hours.js.map +0 -1
  2451. package/dist/src/heartbeat/content-check.js.map +0 -1
  2452. package/dist/src/heartbeat/event-prompt.js.map +0 -1
  2453. package/dist/src/heartbeat/tokens.js.map +0 -1
  2454. package/dist/src/heartbeat/wake.js.map +0 -1
  2455. package/dist/src/i18n/format.js.map +0 -1
  2456. package/dist/src/i18n/goals-bundle.js.map +0 -1
  2457. package/dist/src/i18n/locale.js.map +0 -1
  2458. package/dist/src/i18n/locales/goals.en.js.map +0 -1
  2459. package/dist/src/i18n/locales/goals.zh.js.map +0 -1
  2460. package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
  2461. package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
  2462. package/dist/src/i18n/share-tool-bundle.js.map +0 -1
  2463. package/dist/src/index.js.map +0 -1
  2464. package/dist/src/infra/brew.js.map +0 -1
  2465. package/dist/src/infra/bus/queue.js.map +0 -1
  2466. package/dist/src/infra/debounce.js.map +0 -1
  2467. package/dist/src/infra/exec.js.map +0 -1
  2468. package/dist/src/infra/gateway-process-argv.js.map +0 -1
  2469. package/dist/src/infra/gateway-processes.js.map +0 -1
  2470. package/dist/src/infra/host-env-security-policy.js.map +0 -1
  2471. package/dist/src/infra/host-env-security.js.map +0 -1
  2472. package/dist/src/infra/http-proxy-env.js.map +0 -1
  2473. package/dist/src/infra/is-main.js.map +0 -1
  2474. package/dist/src/infra/json-utf8-bytes.js.map +0 -1
  2475. package/dist/src/infra/node-sqlite.js.map +0 -1
  2476. package/dist/src/infra/package-json.js.map +0 -1
  2477. package/dist/src/infra/package-update-steps.js.map +0 -1
  2478. package/dist/src/infra/path-env.js.map +0 -1
  2479. package/dist/src/infra/path-prepend.js.map +0 -1
  2480. package/dist/src/infra/ports.js.map +0 -1
  2481. package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
  2482. package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
  2483. package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
  2484. package/dist/src/infra/restart.js.map +0 -1
  2485. package/dist/src/infra/retry.js.map +0 -1
  2486. package/dist/src/infra/run-command.js.map +0 -1
  2487. package/dist/src/infra/sqlite-errors.js.map +0 -1
  2488. package/dist/src/infra/ssh-tunnel.js.map +0 -1
  2489. package/dist/src/infra/stable-node-path.js.map +0 -1
  2490. package/dist/src/infra/tailscale.js.map +0 -1
  2491. package/dist/src/infra/undici-fetch.js.map +0 -1
  2492. package/dist/src/infra/unhandled-rejections.js.map +0 -1
  2493. package/dist/src/infra/update-channels.js.map +0 -1
  2494. package/dist/src/infra/update-check.js.map +0 -1
  2495. package/dist/src/infra/update-global.js.map +0 -1
  2496. package/dist/src/infra/update-lock.js.map +0 -1
  2497. package/dist/src/infra/update-log.js.map +0 -1
  2498. package/dist/src/infra/update-restart.js.map +0 -1
  2499. package/dist/src/infra/update-runner.js.map +0 -1
  2500. package/dist/src/infra/update-startup.js.map +0 -1
  2501. package/dist/src/infra/warning-filter.js.map +0 -1
  2502. package/dist/src/infra/write-file-atomic.js.map +0 -1
  2503. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
  2504. package/dist/src/knowledge/coordinator.js.map +0 -1
  2505. package/dist/src/knowledge/ingestion-service.js.map +0 -1
  2506. package/dist/src/local-apps/acceptance.js.map +0 -1
  2507. package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
  2508. package/dist/src/local-apps/runtime-entry.js.map +0 -1
  2509. package/dist/src/local-apps/scaffold.js.map +0 -1
  2510. package/dist/src/local-apps/service.js.map +0 -1
  2511. package/dist/src/local-apps/store.js.map +0 -1
  2512. package/dist/src/markdown/chunk.js.map +0 -1
  2513. package/dist/src/markdown/code-spans.js.map +0 -1
  2514. package/dist/src/markdown/fences.js.map +0 -1
  2515. package/dist/src/markdown/frontmatter.js.map +0 -1
  2516. package/dist/src/markdown/ir.js.map +0 -1
  2517. package/dist/src/markdown/render.js.map +0 -1
  2518. package/dist/src/markdown/tables.js.map +0 -1
  2519. package/dist/src/mcp/channel-bridge.js.map +0 -1
  2520. package/dist/src/mcp/channel-server.js.map +0 -1
  2521. package/dist/src/mcp/channel-shared.js.map +0 -1
  2522. package/dist/src/mcp/channel-tools.js.map +0 -1
  2523. package/dist/src/mcp/gateway-http-client.js.map +0 -1
  2524. package/dist/src/media/media-reference.js.map +0 -1
  2525. package/dist/src/media/paths.js.map +0 -1
  2526. package/dist/src/media/session-references.js.map +0 -1
  2527. package/dist/src/media/store.js.map +0 -1
  2528. package/dist/src/media/uri.js.map +0 -1
  2529. package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
  2530. package/dist/src/media-shared/http/deadline.js.map +0 -1
  2531. package/dist/src/media-shared/http/private-network.js.map +0 -1
  2532. package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
  2533. package/dist/src/media-shared/http/provider-http.js.map +0 -1
  2534. package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
  2535. package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
  2536. package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
  2537. package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
  2538. package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
  2539. package/dist/src/media-understanding/registry.js.map +0 -1
  2540. package/dist/src/media-understanding/resolve-entries.js.map +0 -1
  2541. package/dist/src/media-understanding/runner.js.map +0 -1
  2542. package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
  2543. package/dist/src/migrations/registry.js.map +0 -1
  2544. package/dist/src/migrations/runner.js.map +0 -1
  2545. package/dist/src/mobile/notification-service.js.map +0 -1
  2546. package/dist/src/mobile/notification-store.js.map +0 -1
  2547. package/dist/src/mobile/notification-types.js.map +0 -1
  2548. package/dist/src/notes/agent-context.js.map +0 -1
  2549. package/dist/src/notes/attachment-ref.js.map +0 -1
  2550. package/dist/src/notes/note-attachment-sync.js.map +0 -1
  2551. package/dist/src/notes/note-index-meta.js.map +0 -1
  2552. package/dist/src/notes/note-markdown.js.map +0 -1
  2553. package/dist/src/notes/paths.js.map +0 -1
  2554. package/dist/src/notes/service.js.map +0 -1
  2555. package/dist/src/notes/store.js.map +0 -1
  2556. package/dist/src/package-version.js.map +0 -1
  2557. package/dist/src/pets/factory.js.map +0 -1
  2558. package/dist/src/pets/manifest.js.map +0 -1
  2559. package/dist/src/pets/validator.js.map +0 -1
  2560. package/dist/src/process/kill-tree.js.map +0 -1
  2561. package/dist/src/project-trust/trust-store.js.map +0 -1
  2562. package/dist/src/projects/automation-bind.js.map +0 -1
  2563. package/dist/src/projects/goal-bind.js.map +0 -1
  2564. package/dist/src/projects/memory-bind.js.map +0 -1
  2565. package/dist/src/projects/project-agent-suggestion.js.map +0 -1
  2566. package/dist/src/projects/project-agent.js.map +0 -1
  2567. package/dist/src/projects/project-kind.js.map +0 -1
  2568. package/dist/src/projects/project-loop.js.map +0 -1
  2569. package/dist/src/projects/project-service.js.map +0 -1
  2570. package/dist/src/projects/project-store.js.map +0 -1
  2571. package/dist/src/projects/session-bind.js.map +0 -1
  2572. package/dist/src/projects/workflow-bind.js.map +0 -1
  2573. package/dist/src/projects/workspace-project.js.map +0 -1
  2574. package/dist/src/projects/workspace.js.map +0 -1
  2575. package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
  2576. package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
  2577. package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
  2578. package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
  2579. package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
  2580. package/dist/src/providers/constants.js.map +0 -1
  2581. package/dist/src/providers/domestic-presets.js.map +0 -1
  2582. package/dist/src/providers/env-keys.js.map +0 -1
  2583. package/dist/src/providers/extension-stream-bridge.js.map +0 -1
  2584. package/dist/src/providers/index.js.map +0 -1
  2585. package/dist/src/providers/model-call.js.map +0 -1
  2586. package/dist/src/providers/model-discovery.js.map +0 -1
  2587. package/dist/src/providers/model-registry.js.map +0 -1
  2588. package/dist/src/providers/model-supplements.js.map +0 -1
  2589. package/dist/src/providers/plugin-registry.js.map +0 -1
  2590. package/dist/src/providers/presentation.js.map +0 -1
  2591. package/dist/src/remote-access/exposure-guards.js.map +0 -1
  2592. package/dist/src/remote-access/exposure-manager.js.map +0 -1
  2593. package/dist/src/review/review-git.js.map +0 -1
  2594. package/dist/src/review/review-types.js.map +0 -1
  2595. package/dist/src/routing/account-id.js.map +0 -1
  2596. package/dist/src/routing/agent-session-key.js.map +0 -1
  2597. package/dist/src/routing/bindings.js.map +0 -1
  2598. package/dist/src/routing/index.js.map +0 -1
  2599. package/dist/src/routing/resolve-route.js.map +0 -1
  2600. package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
  2601. package/dist/src/routing/session-key-utils.js.map +0 -1
  2602. package/dist/src/routing/session-key.js.map +0 -1
  2603. package/dist/src/session/abort-cutoff.js.map +0 -1
  2604. package/dist/src/session/chat-export.js.map +0 -1
  2605. package/dist/src/session/client-history.js.map +0 -1
  2606. package/dist/src/session/compaction-checkpoints.js.map +0 -1
  2607. package/dist/src/session/config-store.js.map +0 -1
  2608. package/dist/src/session/init-session-turn.js.map +0 -1
  2609. package/dist/src/session/lifecycle-timestamps.js.map +0 -1
  2610. package/dist/src/session/load-jsonl-entries.js.map +0 -1
  2611. package/dist/src/session/manager.js.map +0 -1
  2612. package/dist/src/session/patch-metadata.js.map +0 -1
  2613. package/dist/src/session/reset-policy.js.map +0 -1
  2614. package/dist/src/session/reset-triggers.js.map +0 -1
  2615. package/dist/src/session/reset-type.js.map +0 -1
  2616. package/dist/src/session/resolve-session.js.map +0 -1
  2617. package/dist/src/session/session-context-for-llm.js.map +0 -1
  2618. package/dist/src/session/session-id.js.map +0 -1
  2619. package/dist/src/session/session-title.js.map +0 -1
  2620. package/dist/src/session/session-workspace.js.map +0 -1
  2621. package/dist/src/session/store.js.map +0 -1
  2622. package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
  2623. package/dist/src/session/thinking-resolve.js.map +0 -1
  2624. package/dist/src/session/transcript-events.js.map +0 -1
  2625. package/dist/src/session/transcript-format.js.map +0 -1
  2626. package/dist/src/session/transcript-outline.js.map +0 -1
  2627. package/dist/src/session/transcript-stats.js.map +0 -1
  2628. package/dist/src/session/types.js.map +0 -1
  2629. package/dist/src/session/user-round-delete.js.map +0 -1
  2630. package/dist/src/share/share-audit.js.map +0 -1
  2631. package/dist/src/share/share-auto.js.map +0 -1
  2632. package/dist/src/share/share-config.js.map +0 -1
  2633. package/dist/src/share/share-landing.js.map +0 -1
  2634. package/dist/src/share/share-rate-limit.js.map +0 -1
  2635. package/dist/src/share/share-store.js.map +0 -1
  2636. package/dist/src/share/share-thumbnail.js.map +0 -1
  2637. package/dist/src/share/share-types.js.map +0 -1
  2638. package/dist/src/share/share-url.js.map +0 -1
  2639. package/dist/src/share/share-zip.js.map +0 -1
  2640. package/dist/src/share/site-proxy.js.map +0 -1
  2641. package/dist/src/share/site-share-config.js.map +0 -1
  2642. package/dist/src/share/site-share-router.js.map +0 -1
  2643. package/dist/src/share/site-share-store.js.map +0 -1
  2644. package/dist/src/share/site-share-types.js.map +0 -1
  2645. package/dist/src/share/site-static-serve.js.map +0 -1
  2646. package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
  2647. package/dist/src/storage/sqlite/config-repository.js.map +0 -1
  2648. package/dist/src/storage/sqlite/connection.js.map +0 -1
  2649. package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
  2650. package/dist/src/storage/sqlite/fts.js.map +0 -1
  2651. package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
  2652. package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
  2653. package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
  2654. package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
  2655. package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
  2656. package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
  2657. package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
  2658. package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
  2659. package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
  2660. package/dist/src/storage/sqlite/paths.js.map +0 -1
  2661. package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
  2662. package/dist/src/storage/sqlite/schema-version.js.map +0 -1
  2663. package/dist/src/storage/sqlite/schema.js.map +0 -1
  2664. package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
  2665. package/dist/src/storage/sqlite/session-repository.js.map +0 -1
  2666. package/dist/src/storage/sqlite/transaction.js.map +0 -1
  2667. package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
  2668. package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
  2669. package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
  2670. package/dist/src/tui/backends/embedded-backend.js.map +0 -1
  2671. package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
  2672. package/dist/src/tui/chat-history.js.map +0 -1
  2673. package/dist/src/tui/clipboard-image.js.map +0 -1
  2674. package/dist/src/tui/clipboard-text.js.map +0 -1
  2675. package/dist/src/tui/components/assistant-message.js.map +0 -1
  2676. package/dist/src/tui/components/bash-execution.js.map +0 -1
  2677. package/dist/src/tui/components/bash-summary.js.map +0 -1
  2678. package/dist/src/tui/components/branch-message-summary.js.map +0 -1
  2679. package/dist/src/tui/components/branch-summary.js.map +0 -1
  2680. package/dist/src/tui/components/chat-log.js.map +0 -1
  2681. package/dist/src/tui/components/compaction-summary.js.map +0 -1
  2682. package/dist/src/tui/components/custom-editor.js.map +0 -1
  2683. package/dist/src/tui/components/custom-message.js.map +0 -1
  2684. package/dist/src/tui/components/dynamic-border.js.map +0 -1
  2685. package/dist/src/tui/components/extension-dialog.js.map +0 -1
  2686. package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
  2687. package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
  2688. package/dist/src/tui/components/searchable-select-list.js.map +0 -1
  2689. package/dist/src/tui/components/session-selector.js.map +0 -1
  2690. package/dist/src/tui/components/settings-selector.js.map +0 -1
  2691. package/dist/src/tui/components/thinking-selector.js.map +0 -1
  2692. package/dist/src/tui/components/tool-execution.js.map +0 -1
  2693. package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
  2694. package/dist/src/tui/components/tui-header.js.map +0 -1
  2695. package/dist/src/tui/components/user-message.js.map +0 -1
  2696. package/dist/src/tui/components/visual-truncate.js.map +0 -1
  2697. package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
  2698. package/dist/src/tui/extension-host/host.js.map +0 -1
  2699. package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
  2700. package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
  2701. package/dist/src/tui/extension-host/runtime.js.map +0 -1
  2702. package/dist/src/tui/extension-host/surface.js.map +0 -1
  2703. package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
  2704. package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
  2705. package/dist/src/tui/sse-consumer.js.map +0 -1
  2706. package/dist/src/tui/theme/dark.js.map +0 -1
  2707. package/dist/src/tui/theme/light.js.map +0 -1
  2708. package/dist/src/tui/theme-manager.js.map +0 -1
  2709. package/dist/src/tui/theme.js.map +0 -1
  2710. package/dist/src/tui/tool-summary.js.map +0 -1
  2711. package/dist/src/tui/tui-agent-events.js.map +0 -1
  2712. package/dist/src/tui/tui-command-formatters.js.map +0 -1
  2713. package/dist/src/tui/tui-commands.js.map +0 -1
  2714. package/dist/src/tui/tui-context-usage.js.map +0 -1
  2715. package/dist/src/tui/tui-extension-user-message.js.map +0 -1
  2716. package/dist/src/tui/tui-fd-path.js.map +0 -1
  2717. package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
  2718. package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
  2719. package/dist/src/tui/tui-git-branch.js.map +0 -1
  2720. package/dist/src/tui/tui-keybindings-file.js.map +0 -1
  2721. package/dist/src/tui/tui-lifecycle.js.map +0 -1
  2722. package/dist/src/tui/tui-local-shell.js.map +0 -1
  2723. package/dist/src/tui/tui-model-picker.js.map +0 -1
  2724. package/dist/src/tui/tui-oauth-login.js.map +0 -1
  2725. package/dist/src/tui/tui-overlays.js.map +0 -1
  2726. package/dist/src/tui/tui-picker-overlay.js.map +0 -1
  2727. package/dist/src/tui/tui-run-state.js.map +0 -1
  2728. package/dist/src/tui/tui-run-status-format.js.map +0 -1
  2729. package/dist/src/tui/tui-runtime-hints.js.map +0 -1
  2730. package/dist/src/tui/tui-scoped-models.js.map +0 -1
  2731. package/dist/src/tui/tui-session-actions.js.map +0 -1
  2732. package/dist/src/tui/tui-session-format.js.map +0 -1
  2733. package/dist/src/tui/tui-session-snapshot.js.map +0 -1
  2734. package/dist/src/tui/tui-session-stats.js.map +0 -1
  2735. package/dist/src/tui/tui-settings.js.map +0 -1
  2736. package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
  2737. package/dist/src/tui/tui-startup-resources.js.map +0 -1
  2738. package/dist/src/tui/tui-startup-text.js.map +0 -1
  2739. package/dist/src/tui/tui-stdio-filter.js.map +0 -1
  2740. package/dist/src/tui/tui-submit.js.map +0 -1
  2741. package/dist/src/tui/tui-suspend.js.map +0 -1
  2742. package/dist/src/tui/tui-timeline-picker.js.map +0 -1
  2743. package/dist/src/tui/tui-timeline.js.map +0 -1
  2744. package/dist/src/tui/tui-tool-diff.js.map +0 -1
  2745. package/dist/src/tui/tui-tool-result.js.map +0 -1
  2746. package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
  2747. package/dist/src/tui/tui-transcript-tree.js.map +0 -1
  2748. package/dist/src/tui/tui-types.js.map +0 -1
  2749. package/dist/src/tui/tui-workflow-slash.js.map +0 -1
  2750. package/dist/src/tui/tui.js.map +0 -1
  2751. package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
  2752. package/dist/src/tunnel/broker-client.js.map +0 -1
  2753. package/dist/src/tunnel/consent.js.map +0 -1
  2754. package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
  2755. package/dist/src/tunnel/env.js.map +0 -1
  2756. package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
  2757. package/dist/src/tunnel/frpc-binary.js.map +0 -1
  2758. package/dist/src/tunnel/frpc-config.js.map +0 -1
  2759. package/dist/src/tunnel/frpc-extract.js.map +0 -1
  2760. package/dist/src/tunnel/frpc-process.js.map +0 -1
  2761. package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
  2762. package/dist/src/tunnel/pair-context.js.map +0 -1
  2763. package/dist/src/tunnel/pair-url.js.map +0 -1
  2764. package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
  2765. package/dist/src/tunnel/pairing.js.map +0 -1
  2766. package/dist/src/tunnel/tunnel-audit.js.map +0 -1
  2767. package/dist/src/tunnel/tunnel-config.js.map +0 -1
  2768. package/dist/src/tunnel/tunnel-persist.js.map +0 -1
  2769. package/dist/src/tunnel/tunnel-qr.js.map +0 -1
  2770. package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
  2771. package/dist/src/tunnel/tunnel-service.js.map +0 -1
  2772. package/dist/src/tunnel/tunnel-state.js.map +0 -1
  2773. package/dist/src/tunnel/well-known.js.map +0 -1
  2774. package/dist/src/user-context/config.js.map +0 -1
  2775. package/dist/src/user-context/import.js.map +0 -1
  2776. package/dist/src/user-context/owner.js.map +0 -1
  2777. package/dist/src/user-context/profile.js.map +0 -1
  2778. package/dist/src/user-context/projection.js.map +0 -1
  2779. package/dist/src/user-context/runtime.js.map +0 -1
  2780. package/dist/src/user-context/source-recommendations.js.map +0 -1
  2781. package/dist/src/user-context/trust-policy.js.map +0 -1
  2782. package/dist/src/utils/global-singleton.js.map +0 -1
  2783. package/dist/src/utils/helpers.js.map +0 -1
  2784. package/dist/src/utils/index.js.map +0 -1
  2785. package/dist/src/utils/is-record.js.map +0 -1
  2786. package/dist/src/utils/logger/audit.js.map +0 -1
  2787. package/dist/src/utils/logger/config.js.map +0 -1
  2788. package/dist/src/utils/logger/context.js.map +0 -1
  2789. package/dist/src/utils/logger/exporters.js.map +0 -1
  2790. package/dist/src/utils/logger/index.js.map +0 -1
  2791. package/dist/src/utils/logger/log-store.js.map +0 -1
  2792. package/dist/src/utils/logger/log-stream.js.map +0 -1
  2793. package/dist/src/utils/logger/pino-record.js.map +0 -1
  2794. package/dist/src/utils/logger/redact.js.map +0 -1
  2795. package/dist/src/utils/logger/rotation.js.map +0 -1
  2796. package/dist/src/utils/logger/shutdown.js.map +0 -1
  2797. package/dist/src/utils/logger/stats.js.map +0 -1
  2798. package/dist/src/utils/logger/streams.js.map +0 -1
  2799. package/dist/src/utils/logger/types.js.map +0 -1
  2800. package/dist/src/utils/logger.js.map +0 -1
  2801. package/dist/src/utils/redact-sensitive-url.js.map +0 -1
  2802. package/dist/src/utils/sanitize-log.js.map +0 -1
  2803. package/dist/src/utils/string-coerce.js.map +0 -1
  2804. package/dist/src/voice/language-profile.js.map +0 -1
  2805. package/dist/src/voice/local/model-files.js.map +0 -1
  2806. package/dist/src/voice/local/model-manager.js.map +0 -1
  2807. package/dist/src/voice/local/models.js.map +0 -1
  2808. package/dist/src/voice/local/runtime-client.js.map +0 -1
  2809. package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
  2810. package/dist/src/voice/local/runtime-worker.js.map +0 -1
  2811. package/dist/src/voice/local/wav.js.map +0 -1
  2812. package/dist/src/voice/metadata/builtin.js.map +0 -1
  2813. package/dist/src/voice/metadata/registry.js.map +0 -1
  2814. package/dist/src/voice/stt/availability.js.map +0 -1
  2815. package/dist/src/voice/stt/config-slice.js.map +0 -1
  2816. package/dist/src/voice/stt/factory.js.map +0 -1
  2817. package/dist/src/voice/stt/index.js.map +0 -1
  2818. package/dist/src/voice/stt/list-providers.js.map +0 -1
  2819. package/dist/src/voice/stt/mention.js.map +0 -1
  2820. package/dist/src/voice/stt/preflight.js.map +0 -1
  2821. package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
  2822. package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
  2823. package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
  2824. package/dist/src/voice/stt/transcribe-core.js.map +0 -1
  2825. package/dist/src/voice/stt/types.js.map +0 -1
  2826. package/dist/src/voice/tts/audio.js.map +0 -1
  2827. package/dist/src/voice/tts/config-slice.js.map +0 -1
  2828. package/dist/src/voice/tts/directives.js.map +0 -1
  2829. package/dist/src/voice/tts/factory.js.map +0 -1
  2830. package/dist/src/voice/tts/list-providers.js.map +0 -1
  2831. package/dist/src/voice/tts/merge-config.js.map +0 -1
  2832. package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
  2833. package/dist/src/voice/tts/payload.js.map +0 -1
  2834. package/dist/src/voice/tts/preprocess.js.map +0 -1
  2835. package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
  2836. package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
  2837. package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
  2838. package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
  2839. package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
  2840. package/dist/src/voice/tts/service.js.map +0 -1
  2841. package/dist/src/voice/tts/speak-core.js.map +0 -1
  2842. package/dist/src/voice/tts/speech-registry.js.map +0 -1
  2843. package/dist/src/voice/tts/status-tracker.js.map +0 -1
  2844. package/dist/src/voice/tts/summarize.js.map +0 -1
  2845. package/dist/src/voice/tts/types.js.map +0 -1
  2846. package/dist/src/work-discovery/analyzer.js.map +0 -1
  2847. package/dist/src/work-discovery/probe.js.map +0 -1
  2848. package/dist/src/work-discovery/repository.js.map +0 -1
  2849. package/dist/src/work-discovery/service.js.map +0 -1
  2850. package/dist/src/work-items/agent-context.js.map +0 -1
  2851. package/dist/src/work-items/work-item-service.js.map +0 -1
  2852. package/dist/src/work-items/work-item-store.js.map +0 -1
  2853. package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
  2854. package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
  2855. package/dist/src/workflows/domain/definition-utils.js.map +0 -1
  2856. package/dist/src/workflows/domain/run.js.map +0 -1
  2857. package/dist/src/workflows/domain/schema-validation.js.map +0 -1
  2858. package/dist/src/workflows/domain/validation.js.map +0 -1
  2859. package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
  2860. package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
  2861. package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
  2862. package/dist/src/workflows/engine/projector.js.map +0 -1
  2863. package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
  2864. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
  2865. package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
  2866. package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
  2867. package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
  2868. package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
  2869. package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
  2870. package/dist/src/workflows/store/event-store.js.map +0 -1
  2871. package/dist/src/workflows/store/paths.js.map +0 -1
  2872. package/dist/src/workflows/store/run-index-store.js.map +0 -1
  2873. package/dist/src/workflows/store/run-store.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessions.js","names":[],"sources":["../../../../../src/gateway/hono/routes/sessions.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { Hono } from 'hono';\n\nimport { buildSessionKey } from '../../../routing/session-key.js';\nimport { resolveProjectAgentId } from '../../../projects/index.js';\nimport type { SessionMetadataSeed } from '../../../storage/sqlite/index.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\nimport { createGatewayRouteLogger, logRouteError } from '../lib/route-logger.js';\nimport { messagesToClientHistory } from '../../../session/client-history.js';\nimport type { SessionType } from '../../../session/types.js';\nimport { computeUserRoundDeleteRange } from '../../../session/user-round-delete.js';\nimport { deleteMediaUrisNoLongerReferenced } from '../../../media/session-references.js';\nimport { respondStartupUnavailable } from '../lib/startup-unavailable.js';\nimport type { StartupUnavailableGatewayMethod } from '../../startup-readiness.js';\nimport { evictEmbeddedSessionRunner } from '../../../agent/embedded/session-runner.js';\n\nconst log = createGatewayRouteLogger('Sessions');\n\ntype SessionsStartupMethod = StartupUnavailableGatewayMethod;\n\nconst SESSION_TYPES = new Set<SessionType>(['chat', 'workflow-run', 'workflow-subagent', 'cron', 'heartbeat']);\nconst DEFAULT_SIDEBAR_STALE_DAYS = 60;\n\nfunction isSessionType(value: string): value is SessionType {\n return SESSION_TYPES.has(value as SessionType);\n}\n\nfunction ensureGatewayReadyForSessions(\n c: Parameters<typeof respondStartupUnavailable>[0],\n service: AuthenticatedRouteDeps['service'],\n method: SessionsStartupMethod,\n): Response | null {\n if (service.isGatewayReady()) {\n return null;\n }\n return respondStartupUnavailable(c, method);\n}\n\nfunction parsePositiveInt(value: string | undefined, fallback: number, max: number): number {\n const parsed = value ? Number.parseInt(value, 10) : fallback;\n if (!Number.isFinite(parsed)) return fallback;\n return Math.min(max, Math.max(1, parsed));\n}\n\nfunction parseOffset(value: string | undefined): number {\n const parsed = value ? Number.parseInt(value, 10) : 0;\n return Number.isFinite(parsed) ? Math.max(0, parsed) : 0;\n}\n\nfunction buildDirectSessionMetadata(params: {\n agentId: string;\n source: string;\n accountId: string;\n peerId: string;\n}): SessionMetadataSeed {\n return {\n sourceChannel: params.source,\n sourceChatId: [params.accountId, 'direct', params.peerId].join(':'),\n sessionType: 'chat',\n hiddenFromSessionList: true,\n routing: {\n agentId: params.agentId,\n source: params.source,\n accountId: params.accountId,\n peerKind: 'direct',\n peerId: params.peerId,\n },\n customData: {\n genericNewChatShell: params.source === 'webchat' && params.peerId.startsWith('chat_'),\n },\n };\n}\n\nexport function registerSessionsRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service } = deps;\n\n // ========== Session REST API (/api/sessions) ==========\n\n authenticated.get('/api/sidebar/chat-list', async (c) => {\n const blocked = ensureGatewayReadyForSessions(c, service, 'sessions.list');\n if (blocked) {\n return blocked;\n }\n\n const projectLimit = parsePositiveInt(c.req.query('projectLimit'), 12, 50);\n const projectOffset = parseOffset(c.req.query('projectOffset'));\n const sessionPreviewLimit = parsePositiveInt(c.req.query('sessionPreviewLimit'), 5, 20);\n const inboxLimit = parsePositiveInt(c.req.query('inboxLimit'), 20, 100);\n const inboxOffset = parseOffset(c.req.query('inboxOffset'));\n const staleDays = parsePositiveInt(c.req.query('staleDays'), DEFAULT_SIDEBAR_STALE_DAYS, 3650);\n const updatedAfter = Date.now() - staleDays * 24 * 60 * 60 * 1000;\n const includeSessionKey = c.req.query('includeSessionKey')?.trim() || undefined;\n\n const projects = service.projects.listWithSidebarSessions({\n status: 'active',\n limit: projectLimit,\n offset: projectOffset,\n updatedAfter,\n includePinned: true,\n includeSessionKey,\n });\n const projectItems = await Promise.all(\n projects.items.map(async (project) => {\n const sessions = await service.sessions.listSessions({\n projectId: project.id,\n limit: sessionPreviewLimit,\n offset: 0,\n updatedAfter,\n includePinned: true,\n includeSessionKey,\n sortBy: 'updatedAt',\n sortOrder: 'desc',\n });\n return {\n project,\n sessions: sessions.items,\n sessionTotal: sessions.total,\n sessionHasMore: sessions.hasMore,\n };\n }),\n );\n const inbox = await service.sessions.listSessions({\n unassigned: true,\n limit: inboxLimit,\n offset: inboxOffset,\n updatedAfter,\n includePinned: true,\n includeSessionKey,\n sortBy: 'updatedAt',\n sortOrder: 'desc',\n });\n\n return c.json({\n ok: true,\n projects: {\n items: projectItems,\n total: projects.total,\n limit: projects.limit,\n offset: projects.offset,\n hasMore: projects.hasMore,\n },\n inbox,\n });\n });\n\n // POST /api/sessions - Create a new session. Empty-shell reuse is a client concern.\n authenticated.post('/api/sessions', async (c) => {\n const body = await c.req.json().catch(() => ({}));\n const channel = body.channel || 'webchat';\n const projectId = typeof body.projectId === 'string' && body.projectId.trim() ? body.projectId.trim() : undefined;\n const routingCfg = service.currentConfig;\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ ok: false, error: 'Project not found' }, 404);\n }\n const agentId = resolveProjectAgentId({\n config: routingCfg,\n projects: service.projects,\n explicitAgentId: typeof body.agentId === 'string' ? body.agentId : undefined,\n projectId,\n });\n\n // If a specific chat_id is provided, use it (for advanced use cases).\n if (body.chat_id) {\n const sessionKey = buildSessionKey({\n agentId,\n source: channel,\n accountId: 'default',\n peerKind: 'direct',\n peerId: body.chat_id,\n });\n\n await service.sessionIndexInstance.saveMessages(sessionKey, [], {\n metadata: buildDirectSessionMetadata({\n agentId,\n source: channel,\n accountId: 'default',\n peerId: body.chat_id,\n }),\n });\n if (projectId) {\n service.projects.attachSession(sessionKey, projectId);\n }\n const session = await service.sessions.getSession(sessionKey);\n return c.json({ session }, 201);\n }\n\n const chatId = `chat_${randomUUID()}`;\n const sessionKey = buildSessionKey({\n agentId,\n source: channel,\n accountId: 'default',\n peerKind: 'direct',\n peerId: chatId,\n });\n\n await service.sessionIndexInstance.saveMessages(sessionKey, [], {\n metadata: buildDirectSessionMetadata({\n agentId,\n source: channel,\n accountId: 'default',\n peerId: chatId,\n }),\n });\n\n if (projectId) {\n service.projects.attachSession(sessionKey, projectId);\n }\n const session = await service.sessions.getSession(sessionKey);\n return c.json({ session }, 201);\n });\n\n // GET /api/sessions - List sessions\n authenticated.get('/api/sessions', async (c) => {\n const blocked = ensureGatewayReadyForSessions(c, service, 'sessions.list');\n if (blocked) {\n return blocked;\n }\n const query = c.req.query();\n const sessionTypes = query.types\n ?.split(',')\n .map((value) => value.trim())\n .filter(isSessionType);\n const result = await service.sessions.listSessions({\n status: query.status as any,\n search: query.search,\n channel: query.channel,\n sessionTypes: sessionTypes?.length ? sessionTypes : undefined,\n includeHidden: query.includeHidden === 'true',\n projectId: query.projectId,\n unassigned: query.unassigned === 'true',\n updatedAfter: query.updatedAfter ? parseInt(query.updatedAfter) : undefined,\n includePinned: query.includePinned === 'true',\n includeSessionKey: query.includeSessionKey,\n limit: query.limit ? parseInt(query.limit) : undefined,\n offset: query.offset ? parseInt(query.offset) : undefined,\n });\n return c.json(result);\n });\n\n // GET /api/sessions/stats - Get session stats (must be before /:key)\n authenticated.get('/api/sessions/stats', async (c) => {\n const result = await service.sessions.stats();\n return c.json(result);\n });\n\n // GET /api/sessions/chat-ids - Get unique chat IDs from sessions (must be before /:key)\n authenticated.get('/api/sessions/chat-ids', async (c) => {\n const channel = c.req.query('channel');\n const chatIds = await service.sessions.chatIds(channel || undefined);\n return c.json({ ok: true, payload: { chatIds } });\n });\n\n // GET /api/sessions/resolve?sessionId=... - Resolve OpenClaw-style session id to canonical key.\n authenticated.get('/api/sessions/resolve', async (c) => {\n const result = await service.sessions.resolveSession({\n sessionId: c.req.query('sessionId'),\n sessionKey: c.req.query('sessionKey') ?? c.req.query('key'),\n });\n if (!result) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n return c.json({ ok: true, payload: result });\n });\n\n // POST /api/sessions/resolve - Resolve by JSON body (`sessionId`, `sessionKey`, or `key`).\n authenticated.post('/api/sessions/resolve', async (c) => {\n const body = await c.req.json().catch(() => ({}));\n const result = await service.sessions.resolveSession({\n sessionId: typeof body.sessionId === 'string' ? body.sessionId : undefined,\n sessionKey: typeof body.sessionKey === 'string' ? body.sessionKey : undefined,\n key: typeof body.key === 'string' ? body.key : undefined,\n });\n if (!result) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n return c.json({ ok: true, payload: result });\n });\n\n // GET /api/sessions/:key/run — read-only active webchat agent run (for UI resume)\n authenticated.get('/api/sessions/:key/run', async (c) => {\n const blocked = ensureGatewayReadyForSessions(c, service, 'sessions.run');\n if (blocked) {\n return blocked;\n }\n const key = c.req.param('key');\n const session = await service.sessions.getSession(key);\n if (!session) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n return c.json({ ok: true, payload: service.sessions.getActiveRun(key) });\n });\n\n // GET /api/sessions/:key/agent-config — resolved session agent settings (thinking, etc.)\n authenticated.get('/api/sessions/:key/agent-config', async (c) => {\n const key = c.req.param('key');\n const payload = await service.sessions.getAgentConfig(key);\n return c.json({ ok: true, payload });\n });\n\n authenticated.patch('/api/sessions/:key/agent-config', async (c) => {\n const key = c.req.param('key');\n const body = await c.req.json().catch(() => ({}));\n const result = await service.sessions.patchAgentConfig(key, body);\n if (!result.ok) {\n return c.json({ ok: false, error: result.error }, 400);\n }\n return c.json({ ok: true });\n });\n\n // GET /api/sessions/:key/messages — flattened transcript for TUI / clients\n authenticated.get('/api/sessions/:key/messages', async (c) => {\n const blocked = ensureGatewayReadyForSessions(c, service, 'sessions.messages');\n if (blocked) {\n return blocked;\n }\n const key = c.req.param('key');\n const limitRaw = c.req.query('limit');\n const parsedLimit = limitRaw ? Number.parseInt(limitRaw, 10) : undefined;\n const limit =\n parsedLimit !== undefined && Number.isFinite(parsedLimit)\n ? Math.min(500, Math.max(1, parsedLimit))\n : undefined;\n\n const before = c.req.query('before')?.trim();\n const offsetRaw = c.req.query('offset');\n const parsedOffset = offsetRaw ? Number.parseInt(offsetRaw, 10) : 0;\n const offset = Number.isFinite(parsedOffset) ? Math.max(0, parsedOffset) : 0;\n\n const result = await service.sessions.getMessagePage(key, {\n limit,\n offset,\n ...(before ? { before } : {}),\n });\n if (!result) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n\n const messages = messagesToClientHistory(result.session.messages, { limit });\n return c.json({\n ok: true,\n payload: { messages },\n pagination: result.pagination,\n });\n });\n\n // GET /api/sessions/:key/history — UI chat history page from the newest tail.\n authenticated.get('/api/sessions/:key/history', async (c) => {\n const blocked = ensureGatewayReadyForSessions(c, service, 'sessions.history');\n if (blocked) {\n return blocked;\n }\n const key = c.req.param('key');\n const offsetRaw = c.req.query('offset');\n const limitRaw = c.req.query('limit');\n const before = c.req.query('before')?.trim();\n const parsedOffset = offsetRaw ? Number.parseInt(offsetRaw, 10) : 0;\n const parsedLimit = limitRaw ? Number.parseInt(limitRaw, 10) : 50;\n const offset = Number.isFinite(parsedOffset) ? Math.max(0, parsedOffset) : 0;\n const limit = Number.isFinite(parsedLimit) ? Math.min(200, Math.max(1, parsedLimit)) : 50;\n const result = await service.sessions.getMessagePage(key, {\n offset,\n limit,\n ...(before ? { before } : {}),\n includeContextRows: true,\n });\n\n if (!result) {\n return c.json({ error: 'Session not found' }, 404);\n }\n\n return c.json(result);\n });\n\n // GET /api/sessions/:key/timeline — row-backed conversation outline for Web / TUI navigation.\n authenticated.get('/api/sessions/:key/timeline', async (c) => {\n const blocked = ensureGatewayReadyForSessions(c, service, 'sessions.history');\n if (blocked) {\n return blocked;\n }\n const key = c.req.param('key');\n const items = await service.sessions.getTimeline(key);\n if (!items) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n return c.json({ ok: true, items });\n });\n\n // GET /api/sessions/:key/transcript/window — TUI-focused transcript slice around a row.\n authenticated.get('/api/sessions/:key/transcript/window', async (c) => {\n const blocked = ensureGatewayReadyForSessions(c, service, 'sessions.history');\n if (blocked) {\n return blocked;\n }\n const key = c.req.param('key');\n const rowNumberRaw = c.req.query('rowNumber');\n const rowNumber = rowNumberRaw ? Number.parseInt(rowNumberRaw, 10) : NaN;\n if (!Number.isFinite(rowNumber) || rowNumber < 1) {\n return c.json({ ok: false, error: 'rowNumber must be a positive integer' }, 400);\n }\n const before = parsePositiveInt(c.req.query('before'), 80, 200);\n const after = parsePositiveInt(c.req.query('after'), 120, 200);\n const window = await service.sessions.getTranscriptWindow(key, { rowNumber, before, after });\n if (!window) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n return c.json({ ok: true, payload: window });\n });\n\n // POST /api/sessions/:key/transcript/context — append persisted-only `kind: 'context'` row (not in LLM context)\n authenticated.post('/api/sessions/:key/transcript/context', async (c) => {\n const key = c.req.param('key');\n const meta = await service.sessionIndexInstance.getSessionMetadata(key);\n if (!meta) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n const body = await c.req.json().catch(() => ({}));\n const id = typeof body.id === 'string' && body.id.trim() ? body.id.trim() : undefined;\n const text = typeof body.text === 'string' ? body.text : undefined;\n const data =\n body.data !== undefined && typeof body.data === 'object' && body.data !== null && !Array.isArray(body.data)\n ? (body.data as Record<string, unknown>)\n : undefined;\n await service.sessionIndexInstance.appendTranscriptContextEntry(key, { id, text, data });\n return c.json({ ok: true });\n });\n\n // POST /api/sessions/:key/transcript/label — append label change for a transcript entry.\n authenticated.post('/api/sessions/:key/transcript/label', async (c) => {\n const key = c.req.param('key');\n const meta = await service.sessionIndexInstance.getSessionMetadata(key);\n if (!meta) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n const body = await c.req.json().catch(() => ({}));\n const targetId = typeof body.targetId === 'string' ? body.targetId.trim() : '';\n if (!targetId) {\n return c.json({ ok: false, error: 'targetId is required' }, 400);\n }\n const label = typeof body.label === 'string' && body.label.trim() ? body.label.trim() : undefined;\n await service.sessionIndexInstance.appendTranscriptLabelEntry(key, { targetId, label });\n return c.json({ ok: true });\n });\n\n // POST /api/sessions/:key/transcript/custom — append extension state for TUI replay.\n authenticated.post('/api/sessions/:key/transcript/custom', async (c) => {\n const key = c.req.param('key');\n const meta = await service.sessionIndexInstance.getSessionMetadata(key);\n if (!meta) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n const body = await c.req.json().catch(() => ({}));\n const customType = typeof body.customType === 'string' ? body.customType.trim() : '';\n if (!customType) {\n return c.json({ ok: false, error: 'customType is required' }, 400);\n }\n await service.sessionIndexInstance.appendTranscriptCustomEntry(key, {\n customType,\n data: body.data,\n });\n return c.json({ ok: true });\n });\n\n // POST /api/sessions/:key/transcript/custom-message — append visible extension custom message.\n authenticated.post('/api/sessions/:key/transcript/custom-message', async (c) => {\n const key = c.req.param('key');\n const meta = await service.sessionIndexInstance.getSessionMetadata(key);\n if (!meta) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n const body = await c.req.json().catch(() => ({}));\n const customType = typeof body.customType === 'string' ? body.customType.trim() : '';\n if (!customType) {\n return c.json({ ok: false, error: 'customType is required' }, 400);\n }\n const content =\n typeof body.content === 'string' || Array.isArray(body.content) ? body.content : '';\n await service.sessionIndexInstance.appendTranscriptCustomMessageEntry(key, {\n customType,\n content,\n display: typeof body.display === 'boolean' ? body.display : undefined,\n details: body.details,\n });\n evictEmbeddedSessionRunner(key, 'gateway_custom_message_appended');\n return c.json({ ok: true });\n });\n\n // POST /api/sessions/:key/transcript/bash — append local TUI shell execution.\n authenticated.post('/api/sessions/:key/transcript/bash', async (c) => {\n const key = c.req.param('key');\n const meta = await service.sessionIndexInstance.getSessionMetadata(key);\n if (!meta) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n const body = await c.req.json().catch(() => ({}));\n const command = typeof body.command === 'string' ? body.command.trim() : '';\n if (!command) {\n return c.json({ ok: false, error: 'command is required' }, 400);\n }\n await service.sessionIndexInstance.appendTranscriptBashExecutionEntry(key, {\n command,\n output: typeof body.output === 'string' ? body.output : '',\n exitCode: typeof body.exitCode === 'number' ? body.exitCode : body.exitCode === null ? null : undefined,\n signal: typeof body.signal === 'string' ? body.signal : body.signal === null ? null : undefined,\n excludeFromContext: body.excludeFromContext === true,\n truncated: body.truncated === true,\n fullOutputPath: typeof body.fullOutputPath === 'string' ? body.fullOutputPath : undefined,\n });\n evictEmbeddedSessionRunner(key, 'gateway_bash_execution_appended');\n return c.json({ ok: true });\n });\n\n // GET /api/sessions/:key/compaction/checkpoints — list pre-compaction snapshots (OpenClaw-style)\n authenticated.get('/api/sessions/:key/compaction/checkpoints', async (c) => {\n const key = c.req.param('key');\n const meta = await service.sessionIndexInstance.getSessionMetadata(key);\n if (!meta) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n const checkpoints = await service.sessions.listCompactionCheckpoints(key);\n return c.json({ ok: true, payload: { checkpoints } });\n });\n\n authenticated.get('/api/sessions/:key/compaction/checkpoints/:checkpointId', async (c) => {\n const key = c.req.param('key');\n const checkpointId = c.req.param('checkpointId');\n const checkpoint = await service.sessions.getCompactionCheckpoint(key, checkpointId);\n if (!checkpoint) {\n return c.json({ ok: false, error: 'Checkpoint not found' }, 404);\n }\n return c.json({ ok: true, payload: { checkpoint } });\n });\n\n authenticated.post('/api/sessions/:key/compaction/restore', async (c) => {\n const key = c.req.param('key');\n const body = await c.req.json().catch(() => ({}));\n const checkpointId = typeof body.checkpointId === 'string' ? body.checkpointId.trim() : '';\n if (!checkpointId) {\n return c.json({ ok: false, error: 'checkpointId required' }, 400);\n }\n try {\n await service.sessions.restoreCompactionCheckpoint(key, checkpointId);\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.sessions', { operation: 'restoreCheckpoint', sessionKey: key });\n const msg = err instanceof Error ? err.message : String(err);\n if (msg.includes('not found') || msg.includes('Invalid')) {\n return c.json({ ok: false, error: msg }, 404);\n }\n return c.json({ ok: false, error: msg }, 500);\n }\n const session = await service.sessions.getSession(key);\n if (!session) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n return c.json({ ok: true, session });\n });\n\n authenticated.post('/api/sessions/:key/compaction/run', async (c) => {\n const key = c.req.param('key');\n const session = await service.sessions.getSession(key);\n if (!session) {\n return c.json({ ok: false, error: 'Session not found' }, 404);\n }\n const body = await c.req.json().catch(() => ({}));\n const instructions = typeof body.instructions === 'string' ? body.instructions : undefined;\n const force = typeof body.force === 'boolean' ? body.force : true;\n const result = await service.sessions.runCompaction(key, { instructions, force });\n return c.json({ ok: true, payload: { result } });\n });\n\n // GET /api/sessions/:key - Get single session (must be after /stats and /chat-ids)\n authenticated.get('/api/sessions/:key', async (c) => {\n const key = c.req.param('key');\n const includeRaw = c.req.query('include') ?? '';\n const includeSet = new Set(\n includeRaw\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean),\n );\n const includeTranscript = includeSet.has('transcript');\n const includeTranscriptRows = includeSet.has('transcriptRows');\n const offsetRaw = c.req.query('offset');\n const limitRaw = c.req.query('limit');\n const hasPagingQuery = offsetRaw !== undefined || limitRaw !== undefined;\n\n if (hasPagingQuery) {\n const blocked = ensureGatewayReadyForSessions(c, service, 'sessions.history');\n if (blocked) {\n return blocked;\n }\n const parsedOffset = offsetRaw ? Number.parseInt(offsetRaw, 10) : 0;\n const parsedLimit = limitRaw ? Number.parseInt(limitRaw, 10) : 50;\n const offset = Number.isFinite(parsedOffset) ? Math.max(0, parsedOffset) : 0;\n const limit = Number.isFinite(parsedLimit) ? Math.min(200, Math.max(1, parsedLimit)) : 50;\n const result = await service.sessions.getMessagePage(key, {\n offset,\n limit,\n includeTranscriptSummary: includeTranscript,\n includeTranscriptRows,\n });\n if (!result) {\n return c.json({ error: 'Session not found' }, 404);\n }\n return c.json(result);\n }\n\n const session = await service.sessions.getSession(key, {\n includeTranscriptSummary: includeTranscript,\n includeTranscriptRows,\n });\n if (!session) {\n return c.json({ error: 'Session not found' }, 404);\n }\n return c.json({ session });\n });\n\n // PATCH /api/sessions/:key - Partial metadata (name, tags, customData); OpenClaw-style patch subset\n authenticated.patch('/api/sessions/:key', async (c) => {\n const key = c.req.param('key');\n const body = await c.req.json().catch(() => ({}));\n const patch: {\n name?: string;\n tags?: string[];\n replaceTags?: boolean;\n customData?: Record<string, unknown>;\n } = {};\n if (typeof body.name === 'string') {\n patch.name = body.name;\n }\n if (Array.isArray(body.tags)) {\n patch.tags = body.tags;\n }\n if (typeof body.replaceTags === 'boolean') {\n patch.replaceTags = body.replaceTags;\n }\n if (body.customData !== undefined && typeof body.customData === 'object' && body.customData !== null) {\n patch.customData = body.customData as Record<string, unknown>;\n }\n let requestedProjectId: string | null | undefined;\n if ('projectId' in body) {\n requestedProjectId = typeof body.projectId === 'string' && body.projectId.trim() ? body.projectId.trim() : null;\n if (requestedProjectId && !service.projects.get(requestedProjectId)) {\n return c.json({ ok: false, error: 'Project not found' }, 404);\n }\n }\n const result = await service.sessions.patch(key, patch);\n if (result.ok === false) {\n return c.json({ ok: false, error: result.error }, 404);\n }\n if (requestedProjectId !== undefined) {\n try {\n if (requestedProjectId) {\n service.projects.attachSession(key, requestedProjectId);\n } else {\n service.projects.detachSession(key);\n }\n } catch (error) {\n return c.json({ ok: false, error: error instanceof Error ? error.message : String(error) }, 404);\n }\n }\n\n const session = await service.sessions.getSession(key);\n return c.json({ ok: true, session });\n });\n\n // GET /api/sessions/:key/export - Export session (must be before /:key)\n authenticated.get('/api/sessions/:key/export', async (c) => {\n const key = c.req.param('key');\n const format = c.req.query('format') as any || 'json';\n const result = await service.sessions.export(key, format);\n return c.json(result);\n });\n\n authenticated.post('/api/sessions/import', async (c) => {\n const body = await c.req.json().catch(() => ({}));\n const targetKey = typeof body.targetKey === 'string' ? body.targetKey : '';\n const content = typeof body.content === 'string' ? body.content : '';\n if (!targetKey.trim()) {\n return c.json({ ok: false, error: 'targetKey is required' }, 400);\n }\n if (!content.trim()) {\n return c.json({ ok: false, error: 'content is required' }, 400);\n }\n try {\n const result = await service.sessions.importExport(targetKey, content);\n return c.json({ ok: true, ...result });\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: errorMessage }, 400);\n }\n });\n\n authenticated.post('/api/sessions/:key/btw', async (c) => {\n const key = c.req.param('key');\n const body = await c.req.json().catch(() => ({}));\n const question = typeof body.question === 'string' ? body.question : '';\n const result = await service.sessions.btwQuery(key, question);\n return c.json(result);\n });\n\n authenticated.post('/api/sessions/:key/fork', async (c) => {\n const key = c.req.param('key');\n const body = await c.req.json().catch(() => ({}));\n const targetKey = typeof body.targetKey === 'string' ? body.targetKey : '';\n if (!targetKey.trim()) {\n return c.json({ ok: false, error: 'targetKey is required' }, 400);\n }\n try {\n const result = await service.sessions.fork(key, targetKey);\n return c.json({ ok: true, ...result });\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: errorMessage }, 400);\n }\n });\n\n authenticated.post('/api/sessions/:key/fork-row', async (c) => {\n const key = c.req.param('key');\n const body = await c.req.json().catch(() => ({}));\n const targetKey = typeof body.targetKey === 'string' ? body.targetKey : '';\n const throughRow = typeof body.throughRow === 'number' ? Math.trunc(body.throughRow) : NaN;\n if (!targetKey.trim()) {\n return c.json({ ok: false, error: 'targetKey is required' }, 400);\n }\n if (!Number.isFinite(throughRow) || throughRow < 1) {\n return c.json({ ok: false, error: 'throughRow must be a positive integer' }, 400);\n }\n try {\n const result = await service.sessions.forkRows(key, targetKey, { throughRow });\n return c.json({ ok: true, ...result });\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: errorMessage }, 400);\n }\n });\n\n // DELETE /api/sessions/:key/messages — delete LLM rows by range or by user turn.\n // `userRoundIndex` (0-based among user messages) removes the user row and every following\n // assistant / tool / toolResult row until the next user. Prefer this from the web console so\n // tool loops are not left orphaned after retry/delete.\n authenticated.delete('/api/sessions/:key/messages', async (c) => {\n const key = c.req.param('key');\n const body = await c.req.json().catch(() => ({}));\n const loaded = await service.sessionIndexInstance.loadMessages(key);\n if (!loaded) {\n return c.json({ error: 'Session not found' }, 404);\n }\n\n let startIndex = typeof body.startIndex === 'number' ? body.startIndex : -1;\n let count = typeof body.count === 'number' ? body.count : 0;\n const userRoundIndex =\n typeof body.userRoundIndex === 'number' ? body.userRoundIndex : undefined;\n\n if (userRoundIndex !== undefined) {\n const range = computeUserRoundDeleteRange(loaded, userRoundIndex);\n if (!range) {\n return c.json({ error: 'User round index out of range' }, 400);\n }\n startIndex = range.startIndex;\n count = range.count;\n }\n\n if (startIndex < 0 || count <= 0) {\n return c.json({ error: 'Invalid startIndex or count' }, 400);\n }\n if (startIndex >= loaded.length) {\n return c.json({ error: 'Index out of range' }, 400);\n }\n const deleteCount = Math.min(count, loaded.length - startIndex);\n const removed = loaded.slice(startIndex, startIndex + deleteCount);\n const next = loaded.slice(0, startIndex).concat(loaded.slice(startIndex + deleteCount));\n await service.sessionIndexInstance.saveMessages(key, next);\n await deleteMediaUrisNoLongerReferenced({ removed, remaining: next });\n return c.json({ ok: true, deleted: deleteCount });\n });\n\n // POST /api/sessions/:key/reset - Reset session (archive transcript, new session id; keep key + overrides)\n authenticated.post('/api/sessions/:key/reset', async (c) => {\n const blocked = ensureGatewayReadyForSessions(c, service, 'sessions.reset');\n if (blocked) {\n return blocked;\n }\n const key = c.req.param('key');\n const result = await service.sessions.reset(key);\n if (result.ok === false) {\n const status = result.error === 'Session not found' ? 404 : 400;\n return c.json({ ok: false, error: result.error }, status);\n }\n const session = await service.sessions.getSession(key);\n return c.json({\n ok: true,\n reset: true,\n sessionId: result.sessionId,\n previousSessionId: result.previousSessionId,\n session,\n });\n });\n\n // DELETE /api/sessions/:key - Delete session (removes key from index)\n authenticated.delete('/api/sessions/:key', async (c) => {\n const key = c.req.param('key');\n const result = await service.sessions.delete(key);\n return c.json(result);\n });\n\n // POST /api/sessions/:key/archive - Archive session\n authenticated.post('/api/sessions/:key/archive', async (c) => {\n const key = c.req.param('key');\n const result = await service.sessions.archive(key);\n return c.json(result);\n });\n\n // POST /api/sessions/:key/unarchive - Unarchive session\n authenticated.post('/api/sessions/:key/unarchive', async (c) => {\n const key = c.req.param('key');\n const result = await service.sessions.unarchive(key);\n return c.json(result);\n });\n\n // POST /api/sessions/:key/pin - Pin session\n authenticated.post('/api/sessions/:key/pin', async (c) => {\n const key = c.req.param('key');\n const result = await service.sessions.pin(key);\n return c.json(result);\n });\n\n // POST /api/sessions/:key/unpin - Unpin session\n authenticated.post('/api/sessions/:key/unpin', async (c) => {\n const key = c.req.param('key');\n const result = await service.sessions.unpin(key);\n return c.json(result);\n });\n\n // POST /api/sessions/:key/rename - Rename session\n authenticated.post('/api/sessions/:key/rename', async (c) => {\n const key = c.req.param('key');\n\n const body = await c.req.json();\n const { name } = body;\n const result = await service.sessions.rename(key, name);\n return c.json(result);\n });\n\n // ========== Subagent REST API (/api/subagents) ==========\n\n // GET /api/subagents - List subagent sessions\n authenticated.get('/api/subagents', async (c) => {\n const query = c.req.query();\n const result = await service.sessions.listSubagents({\n limit: query.limit ? parseInt(query.limit) : undefined,\n offset: query.offset ? parseInt(query.offset) : undefined,\n });\n return c.json(result);\n });\n\n // GET /api/subagents/:key - Get subagent session detail\n authenticated.get('/api/subagents/:key', async (c) => {\n const key = c.req.param('key');\n // Verify it's a subagent session\n if (!key.startsWith('subagent:')) {\n return c.json({ error: 'Not a subagent session' }, 400);\n }\n const includeRaw = c.req.query('include') ?? '';\n const includeSet = new Set(\n includeRaw\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean),\n );\n const session = await service.sessions.getSession(key, {\n includeTranscriptSummary: includeSet.has('transcript'),\n includeTranscriptRows: includeSet.has('transcriptRows'),\n });\n if (!session) {\n return c.json({ error: 'Subagent session not found' }, 404);\n }\n return c.json({ session });\n });\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"shares.js","names":[],"sources":["../../../../../src/gateway/hono/routes/shares.ts"],"sourcesContent":["import type { Context, Hono } from 'hono';\nimport { createReadStream } from 'node:fs';\nimport { stat } from 'node:fs/promises';\nimport { createHash } from 'node:crypto';\nimport { Readable } from 'node:stream';\n\nimport { extractToken } from '../../auth.js';\nimport { getClientIpFromHeaders } from '../../security/loopback.js';\nimport { getShareStore, shareResponseContentType } from '../../../share/share-store.js';\nimport { getSiteShareStore } from '../../../share/site-share-store.js';\nimport { resolveSiteShareConfig } from '../../../share/site-share-config.js';\nimport { resolveShareUrl, resolveSiteShareUrl } from '../../../share/share-url.js';\nimport { resolveReverseProxyPublicUrl } from '../../public-url.js';\nimport { consumeSharePublicLimit } from '../../../share/share-rate-limit.js';\nimport { logShareAudit } from '../../../share/share-audit.js';\nimport {\n renderShareLandingPage,\n renderShareExpiredPage,\n renderFolderLandingPage,\n} from '../../../share/share-landing.js';\nimport type { ShareExpiredReason } from '../../../share/share-landing.js';\nimport type { ShareConfig, ShareRecord } from '../../../share/share-types.js';\nimport { resolveGatewayEffectiveHost } from '../../../config/gateway-bind.js';\nimport { SHARE_CONFIG_DEFAULTS } from '../../../share/share-types.js';\nimport { createZipStream, planDirectoryFiles } from '../../../share/share-zip.js';\nimport {\n audienceDefaults,\n cleanupStagedSite,\n decideShareKind,\n forgetStagedSite,\n makeDescription,\n makeTitle,\n probeShareTarget,\n rememberStagedSite,\n stageSingleHtmlAsSite,\n type ShareAudience,\n type ShareAutoMode,\n} from '../../../share/share-auto.js';\nimport {\n deleteThumbnail,\n placeholderSvg,\n readThumbnail,\n scheduleThumbnail,\n thumbnailContentType,\n thumbnailExists,\n} from '../../../share/share-thumbnail.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\nimport type { GatewayService } from '../../service.js';\n\nfunction getShareUrlContext(service: GatewayService) {\n const gateway = service.currentConfig.gateway;\n return {\n gatewayHost: resolveGatewayEffectiveHost(service.currentConfig),\n gatewayPort: gateway.port ?? 18790,\n reverseProxyPublicUrl: resolveReverseProxyPublicUrl(service.currentConfig),\n };\n}\n\nfunction thumbnailRenderContext(service: GatewayService) {\n const cfg = { ...SHARE_CONFIG_DEFAULTS, ...resolveShareConfig(service) };\n const port = service.currentConfig.gateway.port ?? 18790;\n // Always use loopback for the internal renderer — never the public tunnel URL.\n const internalBaseUrl = cfg.thumbnail.internalGatewayUrl ?? `http://127.0.0.1:${port}`;\n return { config: cfg.thumbnail, internalBaseUrl };\n}\n\nfunction resolveShareConfig(service: GatewayService): Partial<ShareConfig> {\n const raw = (service.currentConfig.gateway as Record<string, unknown>)?.share;\n if (!raw || typeof raw !== 'object') return {};\n return raw as Partial<ShareConfig>;\n}\n\nfunction hashGatewayToken(token: string): string {\n return createHash('sha256').update(token, 'utf8').digest('hex').slice(0, 12);\n}\n\nconst MAX_CONCURRENT_DOWNLOADS_PER_TOKEN = 5;\nconst activeDownloads = new Map<string, number>();\nconst activeZipStreams = new Map<string, number>();\n\nfunction acquireDownloadSlot(token: string): boolean {\n const current = activeDownloads.get(token) ?? 0;\n if (current >= MAX_CONCURRENT_DOWNLOADS_PER_TOKEN) return false;\n activeDownloads.set(token, current + 1);\n return true;\n}\n\nfunction releaseDownloadSlot(token: string): void {\n const current = activeDownloads.get(token) ?? 0;\n if (current <= 1) activeDownloads.delete(token);\n else activeDownloads.set(token, current - 1);\n}\n\nfunction acquireZipSlot(token: string, limit: number): boolean {\n const current = activeZipStreams.get(token) ?? 0;\n if (current >= limit) return false;\n activeZipStreams.set(token, current + 1);\n return true;\n}\n\nfunction releaseZipSlot(token: string): void {\n const current = activeZipStreams.get(token) ?? 0;\n if (current <= 1) activeZipStreams.delete(token);\n else activeZipStreams.set(token, current - 1);\n}\n\n/**\n * Whether the browser can render this MIME natively (when served with\n * `Content-Disposition: inline`). Honours the per-deployment whitelist so\n * admins can block specific types.\n */\nfunction isPreviewableInline(mime: string, whitelist: string[]): boolean {\n return whitelist.includes(mime);\n}\n\n/**\n * Whether the type benefits from being rendered through the SPA preview page\n * (e.g. markdown — the browser would otherwise show raw source). Independent\n * of the inline whitelist: SPA preview pulls the bytes via the share API and\n * renders client-side, so admins control reach via TTL/maxViews, not MIME.\n */\nfunction isRichSpaPreviewable(mime: string): boolean {\n return (\n mime === 'text/markdown' ||\n mime === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ||\n mime === 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n );\n}\n\nfunction rfc5987ContentDisposition(disposition: 'inline' | 'attachment', fileName: string): string {\n const ascii = fileName.replace(/[^\\x20-\\x7e]/g, '_').replace(/\"/g, '');\n const utf8 = encodeURIComponent(fileName);\n return `${disposition}; filename=\"${ascii}\"; filename*=UTF-8''${utf8}`;\n}\n\n// ── Public routes (no auth required) ──────────────────────────────────────────\n\nexport function registerSharePublicRoutes(app: Hono, service: GatewayService): void {\n const store = getShareStore(resolveShareConfig(service));\n\n /** Landing page — does NOT consume downloadCount. */\n app.get('/s/:token', async (c) => {\n const clientIp = getClientIpFromHeaders({ get: (n: string) => c.req.header(n) ?? undefined });\n const rateResult = consumeSharePublicLimit(clientIp);\n if (!rateResult.allowed) {\n c.header('Retry-After', String(Math.ceil(rateResult.retryAfterMs / 1000)));\n return c.text('Too many requests', 429);\n }\n\n const token = c.req.param('token');\n const record = store.getByToken(token);\n if (!record) return c.html(renderShareExpiredPage('not_found'), 404);\n\n const validation = store.validateAccess(record);\n if (!validation.valid) {\n logShareAudit(\n 'share.access_denied',\n { shareId: record.id, tokenPrefix: token.slice(0, 8), reason: validation.reason, clientIp },\n `Share access denied: ${validation.reason}`,\n );\n return c.html(renderShareExpiredPage(validation.reason as ShareExpiredReason), 410);\n }\n\n if (record.kind === 'directory') {\n return renderDirectoryLanding(c, store, service, record, token);\n }\n\n // File: support direct download / inline preview shortcuts\n if (c.req.query('dl') === '1') {\n return handleFileDownload(c, store, record, clientIp);\n }\n if (c.req.query('inline') === '1') {\n const cfg = { ...SHARE_CONFIG_DEFAULTS, ...resolveShareConfig(service) };\n if (cfg.inlinePreviewMimes.includes(record.mimeType)) {\n return handleFileDownload(c, store, record, clientIp, true);\n }\n }\n\n const downloadPath = `/s/${token}/download`;\n const cfg = { ...SHARE_CONFIG_DEFAULTS, ...resolveShareConfig(service) };\n const previewable = isPreviewableInline(record.mimeType, cfg.inlinePreviewMimes);\n const richPreviewable = isRichSpaPreviewable(record.mimeType);\n const og = buildLandingOg(service, record);\n return c.html(\n renderShareLandingPage(record, downloadPath, {\n inlineUrl: previewable ? `/s/${token}?inline=1` : null,\n previewUrl: richPreviewable ? `/#/share/${encodeURIComponent(token)}` : null,\n og,\n }),\n );\n });\n\n /** Single-file download — POST so unfurl/scrapers don't consume views. */\n app.post('/s/:token/download', async (c) => {\n const clientIp = getClientIpFromHeaders({ get: (n: string) => c.req.header(n) ?? undefined });\n const rateResult = consumeSharePublicLimit(clientIp);\n if (!rateResult.allowed) {\n c.header('Retry-After', String(Math.ceil(rateResult.retryAfterMs / 1000)));\n return c.text('Too many requests', 429);\n }\n\n const token = c.req.param('token');\n const record = store.getByToken(token);\n if (!record) return c.html(renderShareExpiredPage('not_found'), 404);\n\n const validation = store.validateAccess(record);\n if (!validation.valid) {\n logShareAudit(\n 'share.access_denied',\n { shareId: record.id, tokenPrefix: token.slice(0, 8), reason: validation.reason, clientIp },\n `Share download denied: ${validation.reason}`,\n );\n return c.html(renderShareExpiredPage(validation.reason as ShareExpiredReason), 410);\n }\n\n if (record.kind === 'directory') {\n return c.html(renderShareExpiredPage('not_found'), 404);\n }\n return handleFileDownload(c, store, record, clientIp);\n });\n\n /** Directory child file (GET — preview counts as download per product). */\n app.get('/s/:token/file', async (c) => {\n const clientIp = getClientIpFromHeaders({ get: (n: string) => c.req.header(n) ?? undefined });\n const rateResult = consumeSharePublicLimit(clientIp);\n if (!rateResult.allowed) {\n c.header('Retry-After', String(Math.ceil(rateResult.retryAfterMs / 1000)));\n return c.text('Too many requests', 429);\n }\n\n const token = c.req.param('token');\n const record = store.getByToken(token);\n if (!record) return c.html(renderShareExpiredPage('not_found'), 404);\n if (record.kind !== 'directory') return c.html(renderShareExpiredPage('not_found'), 404);\n\n const validation = store.validateAccess(record);\n if (!validation.valid) {\n return c.html(renderShareExpiredPage(validation.reason as ShareExpiredReason), 410);\n }\n\n const relPath = c.req.query('path') ?? '';\n const inline = c.req.query('inline') === '1' || c.req.query('dl') !== '1';\n return handleDirectoryFile(c, store, service, record, relPath, clientIp, inline);\n });\n\n /** Directory JSON listing. */\n app.get('/s/:token/tree', async (c) => {\n const clientIp = getClientIpFromHeaders({ get: (n: string) => c.req.header(n) ?? undefined });\n const rateResult = consumeSharePublicLimit(clientIp);\n if (!rateResult.allowed) {\n c.header('Retry-After', String(Math.ceil(rateResult.retryAfterMs / 1000)));\n return c.text('Too many requests', 429);\n }\n\n const token = c.req.param('token');\n const record = store.getByToken(token);\n if (!record) return c.json({ ok: false, error: { message: 'not_found' } }, 404);\n if (record.kind !== 'directory') return c.json({ ok: false, error: { message: 'not_directory' } }, 400);\n\n const validation = store.validateAccess(record);\n if (!validation.valid) {\n return c.json({ ok: false, error: { message: validation.reason } }, 410);\n }\n\n const path = c.req.query('path') ?? '';\n // Tree HTML browser pages: render landing for the sub-path\n if ((c.req.header('accept') ?? '').includes('text/html')) {\n return renderDirectoryLanding(c, store, service, record, token, path);\n }\n try {\n const listing = await store.listDirectory(record, path);\n return c.json({ ok: true, payload: listing });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 400);\n }\n });\n\n /** Folder ZIP download (whole share or sub-path). */\n app.get('/s/:token/zip', async (c) => {\n const clientIp = getClientIpFromHeaders({ get: (n: string) => c.req.header(n) ?? undefined });\n const rateResult = consumeSharePublicLimit(clientIp);\n if (!rateResult.allowed) {\n c.header('Retry-After', String(Math.ceil(rateResult.retryAfterMs / 1000)));\n return c.text('Too many requests', 429);\n }\n\n const token = c.req.param('token');\n const record = store.getByToken(token);\n if (!record) return c.html(renderShareExpiredPage('not_found'), 404);\n if (record.kind !== 'directory') return c.html(renderShareExpiredPage('not_found'), 404);\n\n const validation = store.validateAccess(record);\n if (!validation.valid) {\n return c.html(renderShareExpiredPage(validation.reason as ShareExpiredReason), 410);\n }\n\n return handleDirectoryZip(c, store, service, record, c.req.query('path') ?? '', clientIp);\n });\n\n /** Metadata (for link preview cards / unfurl). Does NOT consume views. */\n app.get('/s/:token/meta', async (c) => {\n const clientIp = getClientIpFromHeaders({ get: (n: string) => c.req.header(n) ?? undefined });\n const rateResult = consumeSharePublicLimit(clientIp);\n if (!rateResult.allowed) {\n c.header('Retry-After', String(Math.ceil(rateResult.retryAfterMs / 1000)));\n return c.text('Too many requests', 429);\n }\n\n const token = c.req.param('token');\n const record = store.getByToken(token);\n if (!record) return c.json({ valid: false }, 404);\n\n const validation = store.validateAccess(record);\n const remainingViews = record.maxViews !== null ? Math.max(0, record.maxViews - record.downloadCount) : null;\n\n return c.json({\n kind: record.kind,\n fileName: record.fileName,\n fileSize: record.fileSize,\n mimeType: record.mimeType,\n description: record.description ?? null,\n expiresAt: record.expiresAt,\n remainingViews,\n valid: validation.valid,\n directory: record.directory ?? null,\n });\n });\n\n /** HEAD check. */\n app.on('HEAD', '/s/:token', async (c) => {\n const token = c.req.param('token');\n const record = store.getByToken(token);\n if (!record) return c.body(null, 404);\n const validation = store.validateAccess(record);\n return c.body(null, validation.valid ? 200 : 410);\n });\n\n /** Thumbnail (jpeg/png/svg) — does NOT consume views. */\n app.get('/s/:token/thumbnail', async (c) => {\n const clientIp = getClientIpFromHeaders({ get: (n: string) => c.req.header(n) ?? undefined });\n const rateResult = consumeSharePublicLimit(clientIp);\n if (!rateResult.allowed) {\n c.header('Retry-After', String(Math.ceil(rateResult.retryAfterMs / 1000)));\n return c.text('Too many requests', 429);\n }\n const token = c.req.param('token');\n const record = store.getByToken(token);\n if (!record) return c.body(null, 404);\n const validation = store.validateAccess(record);\n if (!validation.valid) return c.body(null, 410);\n\n const cached = await readThumbnail(token);\n if (cached) {\n return new Response(cached, {\n status: 200,\n headers: {\n 'Content-Type': thumbnailContentType(cached),\n 'Cache-Control': 'public, max-age=300',\n 'X-Content-Type-Options': 'nosniff',\n },\n });\n }\n // Schedule and return a placeholder so social-card scrapers always get an image.\n scheduleThumbnail({ scope: 'file', token, recordId: record.id }, thumbnailRenderContext(service));\n const placeholder = placeholderSvg(record.fileName, record.kind === 'directory' ? 'folder' : 'file');\n return new Response(placeholder, {\n status: 200,\n headers: {\n 'Content-Type': 'image/svg+xml; charset=utf-8',\n 'Cache-Control': 'public, max-age=10',\n 'X-Content-Type-Options': 'nosniff',\n },\n });\n });\n\n app.on('HEAD', '/s/:token/thumbnail', async (c) => {\n const token = c.req.param('token');\n const record = store.getByToken(token);\n if (!record) return c.body(null, 404);\n const validation = store.validateAccess(record);\n if (!validation.valid) return c.body(null, 410);\n const ready = await thumbnailExists(token);\n return c.body(null, ready ? 200 : 202);\n });\n\n /** Site-share thumbnail. Shape mirrors /s/:token/thumbnail. */\n app.get('/site/:token/thumbnail', async (c) => {\n const clientIp = getClientIpFromHeaders({ get: (n: string) => c.req.header(n) ?? undefined });\n const rateResult = consumeSharePublicLimit(clientIp);\n if (!rateResult.allowed) {\n c.header('Retry-After', String(Math.ceil(rateResult.retryAfterMs / 1000)));\n return c.text('Too many requests', 429);\n }\n const token = c.req.param('token');\n const siteStore = getSiteShareStore(resolveSiteShareConfig(service));\n const record = siteStore.getByToken(token);\n if (!record) return c.body(null, 404);\n const validation = siteStore.validateAccess(record);\n if (!validation.valid) return c.body(null, 410);\n\n const cached = await readThumbnail(token);\n if (cached) {\n return new Response(cached, {\n status: 200,\n headers: {\n 'Content-Type': thumbnailContentType(cached),\n 'Cache-Control': 'public, max-age=300',\n 'X-Content-Type-Options': 'nosniff',\n },\n });\n }\n scheduleThumbnail({ scope: 'site', token, recordId: record.id }, thumbnailRenderContext(service));\n const placeholder = placeholderSvg(record.description ?? 'site share', 'html');\n return new Response(placeholder, {\n status: 200,\n headers: {\n 'Content-Type': 'image/svg+xml; charset=utf-8',\n 'Cache-Control': 'public, max-age=10',\n 'X-Content-Type-Options': 'nosniff',\n },\n });\n });\n\n app.on('HEAD', '/site/:token/thumbnail', async (c) => {\n const token = c.req.param('token');\n const ready = await thumbnailExists(token);\n return c.body(null, ready ? 200 : 202);\n });\n\n // Wire share-store cleanup → drop on-disk thumbnail file.\n store.setCleanupHook((rec) => {\n void deleteThumbnail(rec.token);\n });\n}\n\n// ── Authenticated routes ──────────────────────────────────────────────────────\n\nexport function registerShareRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service } = deps;\n const store = getShareStore(resolveShareConfig(service));\n const siteStoreEager = getSiteShareStore(resolveSiteShareConfig(service));\n // Register once: when a site share is revoked / expires, drop its staging dir (if any).\n siteStoreEager.setCleanupHook((rec) => {\n const dir = forgetStagedSite(rec.id);\n if (dir) void cleanupStagedSite(dir);\n });\n\n authenticated.post('/api/shares', async (c) => {\n const gatewayToken = extractToken({ authorization: c.req.header('authorization') ?? undefined });\n if (!gatewayToken) return c.json({ ok: false, error: { message: 'Token required' } }, 401);\n\n let body: Record<string, unknown>;\n try {\n body = (await c.req.json()) as Record<string, unknown>;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON' } }, 400);\n }\n\n const path = typeof body.path === 'string' ? body.path.trim() : '';\n if (!path) return c.json({ ok: false, error: { message: 'Missing path' } }, 400);\n\n const sessionKey = typeof body.sessionKey === 'string' ? body.sessionKey.trim() : undefined;\n const agentId = typeof body.agentId === 'string' ? body.agentId.trim() : undefined;\n\n const workspaceRoot = await resolveWorkspaceRootForShare(service, sessionKey, agentId);\n if (!workspaceRoot) {\n return c.json({ ok: false, error: { message: 'Workspace not configured' } }, 400);\n }\n\n const ttlMs = typeof body.ttlMs === 'number' ? body.ttlMs : undefined;\n const maxViews = body.maxViews === null ? null : typeof body.maxViews === 'number' ? body.maxViews : undefined;\n const description = typeof body.description === 'string' ? body.description.trim() || undefined : undefined;\n const kind = body.kind === 'directory' || body.kind === 'file' ? body.kind : undefined;\n const directoryMode = body.directoryMode === 'zip-only' ? 'zip-only' : body.directoryMode === 'browse' ? 'browse' : undefined;\n const followSymlinks = body.followSymlinks === true;\n const maxFileCount = typeof body.maxFileCount === 'number' ? body.maxFileCount : undefined;\n const maxFolderSize = typeof body.maxFolderSize === 'number' ? body.maxFolderSize : undefined;\n const maxDepth = typeof body.maxDepth === 'number' ? body.maxDepth : undefined;\n\n try {\n store.updateConfig(resolveShareConfig(service));\n const record = await store.create({\n path,\n ttlMs,\n maxViews,\n description,\n sessionKey,\n agentId,\n workspaceRoot,\n gatewayTokenHash: hashGatewayToken(gatewayToken),\n kind,\n directoryMode,\n followSymlinks,\n maxFileCount,\n maxFolderSize,\n maxDepth,\n });\n\n const urlCtx = getShareUrlContext(service);\n const resolved = resolveShareUrl(record.token, urlCtx);\n\n return c.json(\n {\n ok: true,\n payload: {\n id: record.id,\n token: record.token,\n kind: record.kind,\n shareUrl: resolved.shareUrl,\n lanUrl: resolved.lanUrl,\n reachability: resolved.reachability,\n reachabilityHint: resolved.reachabilityHint,\n expiresAt: record.expiresAt,\n maxViews: record.maxViews,\n fileName: record.fileName,\n fileSize: record.fileSize,\n directory: record.directory ?? null,\n },\n },\n 201,\n );\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 400);\n }\n });\n\n /**\n * Smart share — picks file vs site, fills sensible defaults, returns the\n * payload the mobile share-sheet needs (title, description, thumbnailUrl,\n * reachability) in a single round-trip.\n */\n authenticated.post('/api/shares/auto', async (c) => {\n const gatewayToken = extractToken({ authorization: c.req.header('authorization') ?? undefined });\n if (!gatewayToken) return c.json({ ok: false, error: { message: 'Token required' } }, 401);\n\n let body: Record<string, unknown>;\n try {\n body = (await c.req.json()) as Record<string, unknown>;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON' } }, 400);\n }\n\n const path = typeof body.path === 'string' ? body.path.trim() : '';\n if (!path) return c.json({ ok: false, error: { message: 'Missing path' } }, 400);\n const sessionKey = typeof body.sessionKey === 'string' ? body.sessionKey.trim() : undefined;\n const agentId = typeof body.agentId === 'string' ? body.agentId.trim() : undefined;\n const mode = (typeof body.mode === 'string' && ['auto', 'force-file', 'force-site', 'force-zip'].includes(body.mode))\n ? (body.mode as ShareAutoMode)\n : 'auto';\n const audience: ShareAudience | undefined =\n body.audience === 'friend' || body.audience === 'colleague' || body.audience === 'public'\n ? body.audience\n : undefined;\n const title = typeof body.title === 'string' ? body.title : undefined;\n const description = typeof body.description === 'string' ? body.description : undefined;\n const ttlOverride = typeof body.ttlMs === 'number' ? body.ttlMs : undefined;\n const maxViewsOverride =\n body.maxViews === null ? null : typeof body.maxViews === 'number' ? body.maxViews : undefined;\n const wantThumbnail = body.thumbnail !== false;\n\n const workspaceRoot = await resolveWorkspaceRootForShare(service, sessionKey, agentId);\n if (!workspaceRoot) {\n return c.json({ ok: false, error: { message: 'Workspace not configured' } }, 400);\n }\n\n let probe;\n try {\n probe = await probeShareTarget(workspaceRoot, path);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 400);\n }\n\n let decision;\n try {\n decision = decideShareKind(probe, mode);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 400);\n }\n\n const defaults = audienceDefaults(audience);\n const ttlMs = ttlOverride ?? defaults.ttlMs;\n const maxViews = maxViewsOverride !== undefined ? maxViewsOverride : defaults.maxViews;\n const tokenHash = hashGatewayToken(gatewayToken);\n const urlCtx = getShareUrlContext(service);\n\n try {\n if (decision.kind === 'site') {\n const siteStore = getSiteShareStore(resolveSiteShareConfig(service));\n // Single HTML file → stage into a temp dir as index.html so it can be\n // served as a site (recipient lands on a rendered page, not the\n // file-landing). The staging dir is auto-cleaned on revoke/expire.\n let sitePath = path;\n let stagedDir: string | null = null;\n if (probe.kind === 'file') {\n const staged = await stageSingleHtmlAsSite(workspaceRoot, probe.absolutePath);\n sitePath = staged.relativePath;\n stagedDir = staged.stagingDir;\n }\n const siteRec = await siteStore.create({\n kind: 'static',\n path: sitePath,\n ttlMs,\n description,\n subdomain: typeof body.subdomain === 'string' ? body.subdomain : undefined,\n spaFallback: true,\n rewriteMode: 'html-css',\n sessionKey,\n agentId,\n workspaceRoot,\n gatewayTokenHash: tokenHash,\n });\n if (stagedDir) rememberStagedSite(siteRec.id, stagedDir);\n const cfg = siteStore.getConfig();\n const subdomainLabel = siteRec.subdomain ?? siteRec.token;\n const resolved = resolveSiteShareUrl({\n ...urlCtx,\n token: siteRec.token,\n subdomainLabel,\n publicHostSuffix: cfg.publicHostSuffix,\n });\n if (wantThumbnail) {\n scheduleThumbnail({ scope: 'site', token: siteRec.token, recordId: siteRec.id }, thumbnailRenderContext(service));\n siteStore.setThumbnailStatus(siteRec.id, 'pending');\n }\n const titleOut = makeTitle(probe.kind === 'directory' ? path.split('/').pop() || path : path, title);\n return c.json({\n ok: true,\n payload: {\n share: {\n id: siteRec.id,\n kind: 'site',\n title: titleOut,\n description: makeDescription({ audience, expiresAt: siteRec.expiresAt, override: description }),\n shareUrl: resolved.shareUrl,\n lanUrl: null,\n reachability: resolved.reachability,\n reachabilityHint: resolved.reachabilityHint,\n expiresAt: siteRec.expiresAt,\n maxViews: null,\n },\n thumbnail: {\n url: wantThumbnail ? resolved.thumbnailUrl : '',\n status: wantThumbnail ? 'pending' : 'unavailable',\n width: SHARE_CONFIG_DEFAULTS.thumbnail.viewportWidth,\n height: SHARE_CONFIG_DEFAULTS.thumbnail.viewportHeight,\n },\n routing: { reason: decision.reason, hint: decision.hint },\n },\n }, 201);\n }\n\n return await createFileShareResponse({\n c, service, store, probe, decision,\n ttlMs, maxViews, title, description, audience,\n workspaceRoot, tokenHash, urlCtx, wantThumbnail,\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 400);\n }\n });\n\n authenticated.get('/api/shares', async (c) => {\n store.updateConfig(resolveShareConfig(service));\n const shares = store.getAllShares();\n const urlCtx = getShareUrlContext(service);\n const now = Date.now();\n\n const items = shares.map((r) => {\n const resolved = resolveShareUrl(r.token, urlCtx);\n const expired = now >= new Date(r.expiresAt).getTime();\n return {\n id: r.id,\n kind: r.kind,\n fileName: r.fileName,\n workspaceRelativePath: r.workspaceRelativePath,\n shareUrl: resolved.shareUrl,\n lanUrl: resolved.lanUrl,\n reachability: resolved.reachability,\n createdAt: r.createdAt,\n expiresAt: r.expiresAt,\n downloadCount: r.downloadCount,\n maxViews: r.maxViews,\n revoked: r.revoked,\n expired,\n description: r.description ?? null,\n fileSize: r.fileSize,\n mimeType: r.mimeType,\n directory: r.directory ?? null,\n };\n });\n\n return c.json({ ok: true, payload: { shares: items } });\n });\n\n authenticated.get('/api/shares/:id', async (c) => {\n const id = c.req.param('id');\n const record = store.getById(id);\n if (!record) return c.json({ ok: false, error: { message: 'Not found' } }, 404);\n\n const urlCtx = getShareUrlContext(service);\n const resolved = resolveShareUrl(record.token, urlCtx);\n const expired = Date.now() >= new Date(record.expiresAt).getTime();\n\n return c.json({\n ok: true,\n payload: {\n ...record,\n token: undefined,\n shareUrl: resolved.shareUrl,\n lanUrl: resolved.lanUrl,\n reachability: resolved.reachability,\n expired,\n },\n });\n });\n\n authenticated.delete('/api/shares/:id', async (c) => {\n const id = c.req.param('id');\n const success = store.revoke(id);\n if (!success) return c.json({ ok: false, error: { message: 'Not found' } }, 404);\n return c.json({ ok: true });\n });\n\n authenticated.delete('/api/shares', async (c) => {\n let body: Record<string, unknown> = {};\n try {\n body = (await c.req.json()) as Record<string, unknown>;\n } catch {\n /* empty body = no-op */\n }\n\n if (body.expired === true) {\n const count = store.revokeExpired();\n return c.json({ ok: true, payload: { revokedCount: count } });\n }\n\n const ids = Array.isArray(body.ids) ? (body.ids as string[]).filter((x) => typeof x === 'string') : [];\n if (ids.length === 0) {\n return c.json({ ok: false, error: { message: 'Provide ids array or expired: true' } }, 400);\n }\n const count = store.revokeMany(ids);\n return c.json({ ok: true, payload: { revokedCount: count } });\n });\n\n authenticated.patch('/api/shares/:id', async (c) => {\n const id = c.req.param('id');\n let body: Record<string, unknown>;\n try {\n body = (await c.req.json()) as Record<string, unknown>;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON' } }, 400);\n }\n\n const patch: { extendTtlMs?: number; maxViews?: number | null } = {};\n if (typeof body.extendTtlMs === 'number') patch.extendTtlMs = body.extendTtlMs;\n if (body.maxViews === null || typeof body.maxViews === 'number') patch.maxViews = body.maxViews as number | null;\n\n const updated = store.update(id, patch);\n if (!updated) return c.json({ ok: false, error: { message: 'Not found' } }, 404);\n\n const urlCtx = getShareUrlContext(service);\n const resolved = resolveShareUrl(updated.token, urlCtx);\n\n return c.json({\n ok: true,\n payload: {\n id: updated.id,\n expiresAt: updated.expiresAt,\n maxViews: updated.maxViews,\n shareUrl: resolved.shareUrl,\n },\n });\n });\n}\n\n// ── Directory landing / file / zip helpers ────────────────────────────────────\n\nasync function renderDirectoryLanding(\n c: Context,\n store: ReturnType<typeof getShareStore>,\n service: GatewayService,\n record: ShareRecord,\n token: string,\n subPath = '',\n): Promise<Response> {\n store.updateConfig(resolveShareConfig(service));\n const urls = {\n tree: (p: string) => (p ? `/s/${token}/tree?path=${encodeURIComponent(p)}` : `/s/${token}`),\n file: (p: string) => `/s/${token}/file?path=${encodeURIComponent(p)}`,\n zip: (p: string) => (p ? `/s/${token}/zip?path=${encodeURIComponent(p)}` : `/s/${token}/zip`),\n };\n\n let listing: import('../../../share/share-store.js').DirectoryListing | null = null;\n if (record.directory?.mode !== 'zip-only') {\n try {\n listing = await store.listDirectory(record, subPath);\n } catch (err) {\n logShareAudit(\n 'share.access_denied',\n { shareId: record.id, tokenPrefix: record.token.slice(0, 8), subPath, reason: String(err) },\n `Directory listing failed`,\n );\n return c.html(renderShareExpiredPage('not_found'), 404);\n }\n }\n const og = buildLandingOg(service, record);\n return c.html(renderFolderLandingPage(record, listing, urls, { og })) as unknown as Response;\n}\n\nfunction buildLandingOg(service: GatewayService, record: ShareRecord) {\n const resolved = resolveShareUrl(record.token, getShareUrlContext(service));\n // Only emit OG tags when the share is genuinely public — otherwise WeChat\n // and friends would silently fall back to \"no preview\" on unreachable URLs.\n if (resolved.reachability !== 'public') return undefined;\n return {\n absoluteShareUrl: resolved.shareUrl,\n absoluteThumbnailUrl: `${resolved.shareUrl}/thumbnail`,\n title: record.fileName,\n description: record.description ?? undefined,\n };\n}\n\nasync function handleDirectoryFile(\n c: Context,\n store: ReturnType<typeof getShareStore>,\n service: GatewayService,\n record: ShareRecord,\n relPath: string,\n clientIp: string,\n inline: boolean,\n): Promise<Response> {\n if (!acquireDownloadSlot(record.token)) {\n return new Response('Too many concurrent downloads for this share', { status: 429 });\n }\n\n try {\n const resolved = await store.resolveDirectoryChild(record, relPath);\n if (resolved.ok !== true) {\n logShareAudit(\n 'share.access_denied',\n { shareId: record.id, tokenPrefix: record.token.slice(0, 8), reason: resolved.reason, clientIp, relPath },\n `Directory child resolution failed: ${resolved.reason}`,\n );\n return c.html(renderShareExpiredPage('not_found'), 404);\n }\n const integrity = await store.validateFileIntegrity(record);\n if (!integrity.valid) {\n return c.html(renderShareExpiredPage((integrity.reason ?? 'file_deleted') as ShareExpiredReason), 410);\n }\n\n const fileStat = await stat(resolved.absolutePath);\n if (!fileStat.isFile()) {\n return c.html(renderShareExpiredPage('not_found'), 404);\n }\n\n // Re-check size against configured max\n store.updateConfig(resolveShareConfig(service));\n const cfg = store.getConfig();\n if (fileStat.size > cfg.maxFileSize) {\n return c.html(renderShareExpiredPage('not_found'), 410);\n }\n\n // Inline preview MIME guard\n const cfgPreview = { ...SHARE_CONFIG_DEFAULTS, ...resolveShareConfig(service) };\n const baseName = relPath.split('/').pop() || record.fileName;\n const { resolveMimeType } = await import('../../../share/share-store.js');\n const mime = resolveMimeType(baseName);\n const useInline = inline && cfgPreview.inlinePreviewMimes.includes(mime);\n\n store.incrementDownloadCount(record.id);\n logShareAudit(\n 'share.access',\n { shareId: record.id, tokenPrefix: record.token.slice(0, 8), clientIp, relPath, mode: useInline ? 'inline' : 'attachment' },\n `Directory file served: ${baseName}`,\n );\n\n const stream = createReadStream(resolved.absolutePath);\n const webStream = Readable.toWeb(stream) as ReadableStream;\n const disposition = rfc5987ContentDisposition(useInline ? 'inline' : 'attachment', baseName);\n\n return new Response(webStream, {\n status: 200,\n headers: {\n 'Content-Type': shareResponseContentType(mime),\n 'Content-Disposition': disposition,\n 'Content-Length': String(fileStat.size),\n 'Cache-Control': 'private, no-store',\n 'X-Content-Type-Options': 'nosniff',\n 'X-Frame-Options': 'DENY',\n 'Referrer-Policy': 'no-referrer',\n },\n });\n } finally {\n releaseDownloadSlot(record.token);\n }\n}\n\nasync function handleDirectoryZip(\n c: Context,\n store: ReturnType<typeof getShareStore>,\n service: GatewayService,\n record: ShareRecord,\n subPath: string,\n clientIp: string,\n): Promise<Response> {\n store.updateConfig(resolveShareConfig(service));\n const cfg = store.getConfig();\n const zipLimit = cfg.directory.zipConcurrency;\n if (!acquireZipSlot(record.token, zipLimit)) {\n return new Response('Too many concurrent ZIP streams for this share', { status: 429 });\n }\n\n try {\n const resolved = await store.resolveDirectoryChild(record, subPath);\n if (resolved.ok !== true) {\n return c.html(renderShareExpiredPage('not_found'), 404);\n }\n const integrity = await store.validateFileIntegrity(record);\n if (!integrity.valid) {\n return c.html(renderShareExpiredPage((integrity.reason ?? 'file_deleted') as ShareExpiredReason), 410);\n }\n\n const files = await planDirectoryFiles(record, {\n rootRelativePath: subPath,\n maxFileCount: cfg.directory.maxFileCount,\n maxFolderSize: cfg.directory.maxFolderSize,\n followSymlinks: record.directory?.followSymlinks ?? false,\n maxDepth: record.directory?.maxDepth ?? cfg.directory.maxDepth,\n });\n\n store.incrementDownloadCount(record.id);\n logShareAudit(\n 'share.access',\n { shareId: record.id, tokenPrefix: record.token.slice(0, 8), clientIp, mode: 'zip', subPath, fileCount: files.length },\n `Directory zip served: ${record.fileName}${subPath ? '/' + subPath : ''}`,\n );\n\n const zipName = subPath\n ? `${record.fileName}-${subPath.replace(/[\\\\/]/g, '_')}.zip`\n : `${record.fileName}.zip`;\n const stream = createZipStream({ files });\n const webStream = Readable.toWeb(stream) as ReadableStream;\n\n return new Response(webStream, {\n status: 200,\n headers: {\n 'Content-Type': 'application/zip',\n 'Content-Disposition': rfc5987ContentDisposition('attachment', zipName),\n 'Cache-Control': 'private, no-store',\n 'X-Content-Type-Options': 'nosniff',\n 'X-Frame-Options': 'DENY',\n 'Referrer-Policy': 'no-referrer',\n },\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return new Response(`zip build failed: ${message}`, { status: 500 });\n } finally {\n releaseZipSlot(record.token);\n }\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nasync function createFileShareResponse(args: {\n c: Context;\n service: GatewayService;\n store: ReturnType<typeof getShareStore>;\n probe: Awaited<ReturnType<typeof probeShareTarget>>;\n decision: ReturnType<typeof decideShareKind>;\n ttlMs: number;\n maxViews: number | null | undefined;\n title?: string;\n description?: string;\n audience?: ShareAudience;\n workspaceRoot: string;\n tokenHash: string;\n urlCtx: ReturnType<typeof getShareUrlContext>;\n wantThumbnail: boolean;\n}): Promise<Response> {\n const { c, service, store, probe, decision, ttlMs, maxViews, title, description, audience, workspaceRoot, tokenHash, urlCtx, wantThumbnail } = args;\n store.updateConfig(resolveShareConfig(service));\n const record = await store.create({\n path: relPathFromAbs(workspaceRoot, probe.absolutePath),\n workspaceRoot,\n gatewayTokenHash: tokenHash,\n ttlMs,\n maxViews: maxViews === undefined ? undefined : maxViews,\n description,\n kind: probe.kind === 'directory' ? 'directory' : 'file',\n directoryMode: decision.kind === 'zip' ? 'zip-only' : (probe.kind === 'directory' ? 'browse' : undefined),\n });\n const resolved = resolveShareUrl(record.token, urlCtx);\n const titleOut = makeTitle(record.fileName, title);\n const descOut = makeDescription({ audience, expiresAt: record.expiresAt, override: description });\n const thumbnailUrl = wantThumbnail\n ? `${resolved.shareUrl}/thumbnail`\n : '';\n if (wantThumbnail) {\n scheduleThumbnail({ scope: 'file', token: record.token, recordId: record.id }, thumbnailRenderContext(service));\n store.setThumbnailStatus(record.id, 'pending');\n }\n return c.json({\n ok: true,\n payload: {\n share: {\n id: record.id,\n kind: decision.kind,\n title: titleOut,\n description: descOut,\n shareUrl: resolved.shareUrl,\n lanUrl: resolved.lanUrl,\n reachability: resolved.reachability,\n reachabilityHint: resolved.reachabilityHint,\n expiresAt: record.expiresAt,\n maxViews: record.maxViews,\n },\n thumbnail: {\n url: thumbnailUrl,\n status: wantThumbnail ? 'pending' : 'unavailable',\n width: SHARE_CONFIG_DEFAULTS.thumbnail.viewportWidth,\n height: SHARE_CONFIG_DEFAULTS.thumbnail.viewportHeight,\n },\n routing: { reason: decision.reason, hint: decision.hint },\n },\n }, 201) as unknown as Response;\n}\n\nfunction relPathFromAbs(workspaceRoot: string, abs: string): string {\n const root = workspaceRoot.replace(/[\\\\/]+$/, '');\n if (abs === root) return '';\n if (abs.startsWith(`${root}/`)) return abs.slice(root.length + 1);\n if (abs.startsWith(`${root}\\\\`)) return abs.slice(root.length + 1).replace(/\\\\/g, '/');\n // Fall back to basename — store.create will resolve again under workspace.\n return abs.split(/[\\\\/]/).pop() ?? abs;\n}\n\nasync function resolveWorkspaceRootForShare(\n service: GatewayService,\n sessionKey: string | undefined,\n agentId: string | undefined,\n): Promise<string | null> {\n const cfg = service.currentConfig;\n\n if (sessionKey) {\n try {\n return await service.sessions.getEffectiveWorkspacePath(sessionKey);\n } catch {\n /* fall through to agentId */\n }\n }\n\n const { getWorkspacePath } = await import('../../../config/workspace-path-helpers.js');\n const { resolveAgentWorkspaceDir, normalizeAgentId, resolveDefaultAgentId } = await import(\n '../../../agent/agent-scope.js'\n );\n\n if (agentId) {\n const normalized = normalizeAgentId(agentId);\n return resolveAgentWorkspaceDir(cfg, normalized);\n }\n\n const root = getWorkspacePath(cfg);\n if (root) return root;\n\n const defaultId = resolveDefaultAgentId(cfg);\n return resolveAgentWorkspaceDir(cfg, defaultId);\n}\n\nasync function handleFileDownload(\n c: Context,\n store: ReturnType<typeof getShareStore>,\n record: ShareRecord,\n clientIp: string,\n inline = false,\n): Promise<Response> {\n if (!acquireDownloadSlot(record.token)) {\n return new Response('Too many concurrent downloads for this share', { status: 429 });\n }\n\n try {\n const integrity = await store.validateFileIntegrity(record);\n if (!integrity.valid) {\n logShareAudit(\n 'share.access_denied',\n { shareId: record.id, tokenPrefix: record.token.slice(0, 8), reason: integrity.reason, clientIp },\n `Share file integrity check failed: ${integrity.reason}`,\n );\n return new Response(renderShareExpiredPage((integrity.reason ?? 'file_deleted') as ShareExpiredReason), {\n status: 410,\n headers: { 'Content-Type': 'text/html; charset=utf-8' },\n });\n }\n\n store.incrementDownloadCount(record.id);\n\n logShareAudit(\n 'share.access',\n { shareId: record.id, tokenPrefix: record.token.slice(0, 8), clientIp, downloadCount: record.downloadCount },\n `Share downloaded: ${record.fileName}`,\n );\n\n const fileStat = await stat(record.absolutePath);\n const stream = createReadStream(record.absolutePath);\n const webStream = Readable.toWeb(stream) as ReadableStream;\n const disposition = rfc5987ContentDisposition(inline ? 'inline' : 'attachment', record.fileName);\n\n return new Response(webStream, {\n status: 200,\n headers: {\n 'Content-Type': shareResponseContentType(record.mimeType),\n 'Content-Disposition': disposition,\n 'Content-Length': String(fileStat.size),\n 'Cache-Control': 'private, no-store',\n 'X-Content-Type-Options': 'nosniff',\n 'X-Frame-Options': 'DENY',\n 'Referrer-Policy': 'no-referrer',\n },\n });\n } finally {\n releaseDownloadSlot(record.token);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"site-shares.js","names":[],"sources":["../../../../../src/gateway/hono/routes/site-shares.ts"],"sourcesContent":["import type { Hono } from 'hono';\nimport { createHash } from 'node:crypto';\n\nimport { extractToken } from '../../auth.js';\nimport { getSiteShareStore } from '../../../share/site-share-store.js';\nimport { resolveSiteShareConfig } from '../../../share/site-share-config.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\nimport { resolveGatewayEffectiveHost } from '../../../config/gateway-bind.js';\n\nfunction hashGatewayToken(token: string): string {\n return createHash('sha256').update(token, 'utf8').digest('hex').slice(0, 12);\n}\n\nfunction buildShareUrls(\n record: import('../../../share/site-share-types.js').SiteShareRecord,\n publicHostSuffix: string,\n gatewayHost: string,\n gatewayPort: number,\n): { publicUrl: string; subpathUrl: string } {\n const label = record.subdomain ?? record.token;\n const publicUrl = `https://${label}.${publicHostSuffix}/`;\n const subpathUrl = `http://${gatewayHost}:${gatewayPort}/site/${record.token}/`;\n return { publicUrl, subpathUrl };\n}\n\nexport function registerSiteShareRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service } = deps;\n const store = getSiteShareStore(resolveSiteShareConfig(service));\n\n async function resolveWorkspaceRoot(\n sessionKey: string | undefined,\n agentId: string | undefined,\n ): Promise<string | null> {\n const cfg = service.currentConfig;\n if (sessionKey) {\n try {\n return await service.sessions.getEffectiveWorkspacePath(sessionKey);\n } catch {\n /* fall through */\n }\n }\n const { getWorkspacePath } = await import('../../../config/workspace-path-helpers.js');\n const { resolveAgentWorkspaceDir, normalizeAgentId, resolveDefaultAgentId } = await import(\n '../../../agent/agent-scope.js'\n );\n if (agentId) {\n const normalized = normalizeAgentId(agentId);\n return resolveAgentWorkspaceDir(cfg, normalized);\n }\n const root = getWorkspacePath(cfg);\n if (root) return root;\n const defaultId = resolveDefaultAgentId(cfg);\n return resolveAgentWorkspaceDir(cfg, defaultId);\n }\n\n authenticated.post('/api/site-shares', async (c) => {\n const gatewayToken = extractToken({ authorization: c.req.header('authorization') ?? undefined });\n if (!gatewayToken) return c.json({ ok: false, error: { message: 'Token required' } }, 401);\n\n let body: Record<string, unknown>;\n try {\n body = (await c.req.json()) as Record<string, unknown>;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON' } }, 400);\n }\n\n const kind = body.kind === 'static' || body.kind === 'proxy' ? body.kind : null;\n if (!kind) return c.json({ ok: false, error: { message: \"kind must be 'static' or 'proxy'\" } }, 400);\n\n const sessionKey = typeof body.sessionKey === 'string' ? body.sessionKey.trim() : undefined;\n const agentId = typeof body.agentId === 'string' ? body.agentId.trim() : undefined;\n const path = typeof body.path === 'string' ? body.path.trim() : undefined;\n const upstreamUrl = typeof body.upstreamUrl === 'string' ? body.upstreamUrl.trim() : undefined;\n const ttlMs = typeof body.ttlMs === 'number' ? body.ttlMs : undefined;\n const description = typeof body.description === 'string' ? body.description.trim() || undefined : undefined;\n const subdomain = typeof body.subdomain === 'string' ? body.subdomain.trim() || undefined : undefined;\n const maxRequests =\n body.maxRequests === null\n ? null\n : typeof body.maxRequests === 'number'\n ? body.maxRequests\n : undefined;\n const spaFallback = typeof body.spaFallback === 'boolean' ? body.spaFallback : undefined;\n const rewriteMode =\n body.rewriteMode === 'none' || body.rewriteMode === 'html-only' || body.rewriteMode === 'html-css'\n ? body.rewriteMode\n : undefined;\n const forwardWebSocket = typeof body.forwardWebSocket === 'boolean' ? body.forwardWebSocket : undefined;\n\n let workspaceRoot: string | null = null;\n if (kind === 'static') {\n workspaceRoot = await resolveWorkspaceRoot(sessionKey, agentId);\n if (!workspaceRoot) {\n return c.json({ ok: false, error: { message: 'Workspace not configured' } }, 400);\n }\n }\n\n try {\n store.updateConfig(resolveSiteShareConfig(service));\n const record = await store.create({\n kind,\n path,\n upstreamUrl,\n ttlMs,\n description,\n subdomain,\n maxRequests,\n spaFallback,\n rewriteMode,\n forwardWebSocket,\n sessionKey,\n agentId,\n workspaceRoot,\n gatewayTokenHash: hashGatewayToken(gatewayToken),\n });\n\n const cfg = store.getConfig();\n const gw = service.currentConfig.gateway;\n const urls = buildShareUrls(record, cfg.publicHostSuffix, resolveGatewayEffectiveHost(service.currentConfig), gw.port ?? 18790);\n\n return c.json(\n {\n ok: true,\n payload: {\n id: record.id,\n token: record.token,\n subdomain: record.subdomain,\n kind: record.source.kind,\n createdAt: record.createdAt,\n expiresAt: record.expiresAt,\n description: record.description ?? null,\n maxRequests: record.maxRequests,\n publicUrl: urls.publicUrl,\n subpathUrl: urls.subpathUrl,\n },\n },\n 201,\n );\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 400);\n }\n });\n\n authenticated.get('/api/site-shares', (c) => {\n store.updateConfig(resolveSiteShareConfig(service));\n const cfg = store.getConfig();\n const gw = service.currentConfig.gateway;\n const gatewayHost = resolveGatewayEffectiveHost(service.currentConfig);\n const gatewayPort = gw.port ?? 18790;\n const items = store.getAllShares().map((r) => {\n const urls = buildShareUrls(r, cfg.publicHostSuffix, gatewayHost, gatewayPort);\n const expired = Date.now() >= new Date(r.expiresAt).getTime();\n return {\n id: r.id,\n token: r.token,\n subdomain: r.subdomain,\n kind: r.source.kind,\n createdAt: r.createdAt,\n expiresAt: r.expiresAt,\n revoked: r.revoked,\n expired,\n description: r.description ?? null,\n requestCount: r.requestCount,\n uniqueClientCount: r.uniqueClientCount,\n maxRequests: r.maxRequests,\n source: r.source,\n publicUrl: urls.publicUrl,\n subpathUrl: urls.subpathUrl,\n };\n });\n return c.json({ ok: true, payload: { shares: items } });\n });\n\n authenticated.get('/api/site-shares/:id', (c) => {\n const id = c.req.param('id');\n const record = store.getById(id);\n if (!record) return c.json({ ok: false, error: { message: 'Not found' } }, 404);\n const cfg = store.getConfig();\n const gw = service.currentConfig.gateway;\n const urls = buildShareUrls(record, cfg.publicHostSuffix, resolveGatewayEffectiveHost(service.currentConfig), gw.port ?? 18790);\n return c.json({\n ok: true,\n payload: {\n ...record,\n ...urls,\n expired: Date.now() >= new Date(record.expiresAt).getTime(),\n },\n });\n });\n\n authenticated.delete('/api/site-shares/:id', (c) => {\n const id = c.req.param('id');\n const ok = store.revoke(id);\n if (!ok) return c.json({ ok: false, error: { message: 'Not found' } }, 404);\n return c.json({ ok: true });\n });\n\n authenticated.delete('/api/site-shares', async (c) => {\n let body: Record<string, unknown> = {};\n try {\n body = (await c.req.json()) as Record<string, unknown>;\n } catch {\n /* empty */\n }\n if (body.expired === true) {\n const count = store.revokeExpired();\n return c.json({ ok: true, payload: { revokedCount: count } });\n }\n const ids = Array.isArray(body.ids) ? (body.ids as string[]).filter((x) => typeof x === 'string') : [];\n if (ids.length === 0) {\n return c.json({ ok: false, error: { message: 'Provide ids array or expired: true' } }, 400);\n }\n const count = store.revokeMany(ids);\n return c.json({ ok: true, payload: { revokedCount: count } });\n });\n\n authenticated.patch('/api/site-shares/:id', async (c) => {\n const id = c.req.param('id');\n let body: Record<string, unknown>;\n try {\n body = (await c.req.json()) as Record<string, unknown>;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON' } }, 400);\n }\n const patch: { extendTtlMs?: number; maxRequests?: number | null } = {};\n if (typeof body.extendTtlMs === 'number') patch.extendTtlMs = body.extendTtlMs;\n if (body.maxRequests === null || typeof body.maxRequests === 'number') {\n patch.maxRequests = body.maxRequests as number | null;\n }\n const updated = store.update(id, patch);\n if (!updated) return c.json({ ok: false, error: { message: 'Not found' } }, 404);\n return c.json({ ok: true, payload: { id: updated.id, expiresAt: updated.expiresAt, maxRequests: updated.maxRequests } });\n });\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","names":[],"sources":["../../../../../src/gateway/hono/routes/status.ts"],"sourcesContent":["import type { Context } from 'hono';\nimport type { Hono } from 'hono';\n\nimport type { Config } from '../../../config/schema.js';\nimport { isSTTAvailable } from '../../../voice/stt/index.js';\nimport { mergeSttConfigFromAppConfig } from '../../../channels/attachments/voice-stt-webchat.js';\nimport { getDefaultModelSync, resolveModel } from '../../../providers/index.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\nfunction isRefineAvailable(config: Config | undefined): boolean {\n if (!config) return false;\n for (const candidate of [\n process.env.XOPC_VOICE_REFINE_MODEL?.trim(),\n 'openai/gpt-5.6-luna',\n 'google/gemini-3.5-flash',\n ]) {\n if (!candidate) continue;\n try {\n resolveModel(candidate);\n return true;\n } catch { /* next */ }\n }\n try {\n resolveModel(getDefaultModelSync(config));\n return true;\n } catch {\n return false;\n }\n}\n\nfunction buildStatusPayload(service: AuthenticatedRouteDeps['service']) {\n const health = service.getHealth();\n const rows = service.getChannelsStatus();\n const channels: Record<string, { status: string }> = {};\n for (const row of rows) {\n const status = !row.enabled ? 'disabled' : row.connected ? 'connected' : 'disconnected';\n channels[row.name] = { status };\n }\n\n const config = service.currentConfig as Config | undefined;\n const sttConfig = config\n ? mergeSttConfigFromAppConfig(config.tools?.media?.audio, config.tools?.media)\n : undefined;\n\n return {\n status: health.status,\n version: health.version,\n channels,\n uptime: health.uptime,\n voice: {\n sttAvailable: sttConfig ? isSTTAvailable(sttConfig) : false,\n sttEnabled: sttConfig?.enabled === true,\n sttProvider: sttConfig?.provider ?? null,\n localModelId:\n sttConfig?.provider === 'xopc-local' &&\n typeof sttConfig.providers?.['xopc-local']?.model === 'string'\n ? sttConfig.providers['xopc-local'].model\n : null,\n refineAvailable: isRefineAvailable(config),\n },\n };\n}\n\nexport function registerStatusRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service, strictRateLimitMiddleware } = deps;\n\n const handler = (c: Context) => c.json(buildStatusPayload(service));\n\n authenticated.get('/status', handler);\n authenticated.get('/api/status', handler);\n\n /**\n * POST /api/gateway/restart — respawn gateway process when supported (foreground `xopc gateway`).\n */\n authenticated.post('/api/gateway/restart', strictRateLimitMiddleware, (c) => {\n const result = service.triggerGatewayProcessRestart();\n if (!result.ok) {\n return c.json({ ok: false, error: result.mode, message: result.message ?? 'Restart failed' }, 400);\n }\n return c.json({ ok: true, payload: { mode: result.mode } });\n });\n}\n"],"mappings":";;;;;gBAMgF;AAGhF,SAAS,kBAAkB,QAAqC;AAC9D,KAAI,CAAC,OAAQ,QAAO;AACpB,MAAK,MAAM,aAAa;EACtB,QAAQ,IAAI,yBAAyB,MAAM;EAC3C;EACA;EACD,EAAE;AACD,MAAI,CAAC,UAAW;AAChB,MAAI;AACF,gBAAa,UAAU;AACvB,UAAO;UACD;;AAEV,KAAI;AACF,eAAa,oBAAoB,OAAO,CAAC;AACzC,SAAO;SACD;AACN,SAAO;;;AAIX,SAAS,mBAAmB,SAA4C;CACtE,MAAM,SAAS,QAAQ,WAAW;CAClC,MAAM,OAAO,QAAQ,mBAAmB;CACxC,MAAM,WAA+C,EAAE;AACvD,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,SAAS,CAAC,IAAI,UAAU,aAAa,IAAI,YAAY,cAAc;AACzE,WAAS,IAAI,QAAQ,EAAE,QAAQ;;CAGjC,MAAM,SAAS,QAAQ;CACvB,MAAM,YAAY,SACd,4BAA4B,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,GAC5E,KAAA;AAEJ,QAAO;EACL,QAAQ,OAAO;EACf,SAAS,OAAO;EAChB;EACA,QAAQ,OAAO;EACf,OAAO;GACL,cAAc,YAAY,eAAe,UAAU,GAAG;GACtD,YAAY,WAAW,YAAY;GACnC,aAAa,WAAW,YAAY;GACpC,cACE,WAAW,aAAa,gBACxB,OAAO,UAAU,YAAY,eAAe,UAAU,WAClD,UAAU,UAAU,cAAc,QAClC;GACN,iBAAiB,kBAAkB,OAAO;GAC3C;EACF;;AAGH,SAAgB,qBAAqB,eAAqB,MAAoC;CAC5F,MAAM,EAAE,SAAS,8BAA8B;CAE/C,MAAM,WAAW,MAAe,EAAE,KAAK,mBAAmB,QAAQ,CAAC;AAEnE,eAAc,IAAI,WAAW,QAAQ;AACrC,eAAc,IAAI,eAAe,QAAQ;;;;AAKzC,eAAc,KAAK,wBAAwB,4BAA4B,MAAM;EAC3E,MAAM,SAAS,QAAQ,8BAA8B;AACrD,MAAI,CAAC,OAAO,GACV,QAAO,EAAE,KAAK;GAAE,IAAI;GAAO,OAAO,OAAO;GAAM,SAAS,OAAO,WAAW;GAAkB,EAAE,IAAI;AAEpG,SAAO,EAAE,KAAK;GAAE,IAAI;GAAM,SAAS,EAAE,MAAM,OAAO,MAAM;GAAE,CAAC;GAC3D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui.js","names":[],"sources":["../../../../../src/gateway/hono/routes/tui.ts"],"sourcesContent":["import type { Hono } from 'hono';\n\nimport type { Config } from '../../../config/schema.js';\nimport { collectTuiStartupResources } from '../../../tui/tui-startup-resources.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\nexport function registerTuiRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n authenticated.get('/api/tui/startup-resources', (c) => {\n const sessionKey = c.req.query('sessionKey')?.trim() || undefined;\n const payload = collectTuiStartupResources(deps.service.currentConfig as Config, sessionKey);\n return c.json({ ok: true, payload });\n });\n}\n"],"mappings":";;AAMA,SAAgB,kBAAkB,eAAqB,MAAoC;AACzF,eAAc,IAAI,+BAA+B,MAAM;EACrD,MAAM,aAAa,EAAE,IAAI,MAAM,aAAa,EAAE,MAAM,IAAI,KAAA;EACxD,MAAM,UAAU,2BAA2B,KAAK,QAAQ,eAAyB,WAAW;AAC5F,SAAO,EAAE,KAAK;GAAE,IAAI;GAAM;GAAS,CAAC;GACpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnel.js","names":[],"sources":["../../../../../src/gateway/hono/routes/tunnel.ts"],"sourcesContent":["import type { Hono, MiddlewareHandler } from 'hono';\n\nimport type { Config } from '../../../config/schema.js';\nimport { resolveGatewayEffectiveHost } from '../../../config/gateway-bind.js';\nimport { extractToken } from '../../auth.js';\nimport {\n assertTunnelMayStart,\n getTunnelConsentState,\n TUNNEL_CONSENT_REQUIRED_CODE,\n TunnelConsentError,\n} from '../../../tunnel/consent.js';\nimport { hashGatewayToken } from '../../../tunnel/tunnel-service.js';\nimport { configureTunnelFromGatewayConfig } from '../../../tunnel/gateway-lifecycle.js';\nimport {\n getTunnelRegistrationSecretMeta,\n readTunnelRegistrationSecretFromConfigOnly,\n resolveTunnelBrokerUrl,\n} from '../../../tunnel/env.js';\nimport { getTunnelService } from '../../../tunnel/index.js';\nimport { createPairingSecret, exchangePairingSecretOnce, getCachedPairingExchange } from '../../../tunnel/pairing.js';\nimport { buildMobilePairContext } from '../../../tunnel/pair-context.js';\nimport { applyLanPairingGatewayPatch } from '../../../tunnel/enable-lan-pairing.js';\nimport {\n buildMobileConnectUrlOrder,\n resolveMobilePairLanUrl,\n validateMobilePairBaseUrl,\n} from '../../../tunnel/pair-url.js';\nimport { consumePairingExchangeFailLimit } from '../../../tunnel/pairing-rate-limit.js';\nimport { loadTunnelState } from '../../../tunnel/tunnel-state.js';\nimport { logTunnelAudit } from '../../../tunnel/tunnel-audit.js';\nimport { resolveReverseProxyPublicUrl } from '../../public-url.js';\nimport { validatePublicUrl } from '../../../config/public-url.js';\nimport {\n applyTunnelConsentToConfig,\n setTunnelEnabledInConfig,\n} from '../../../tunnel/tunnel-config.js';\nimport { consumeTunnelMutationLimit } from '../../../tunnel/tunnel-rate-limit.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\nimport type { GatewayService } from '../../service.js';\nimport { getClientIpFromHeaders } from '../../security/loopback.js';\n\nasync function configureTunnelFromService(\n deps: AuthenticatedRouteDeps,\n opts?: { force?: boolean },\n): Promise<void> {\n await configureTunnelFromGatewayConfig(deps.service.currentConfig, opts);\n}\n\nfunction enrichTunnelStatus(config: Config, status: ReturnType<ReturnType<typeof getTunnelService>['getStatus']>) {\n const consent = getTunnelConsentState(config);\n const brokerUrl = resolveTunnelBrokerUrl(config.tunnel?.brokerUrl);\n const registrationSecret = getTunnelRegistrationSecretMeta(config, process.env, brokerUrl);\n return {\n ...status,\n consentRequired: consent.consentRequired,\n consent: {\n currentVersion: consent.currentVersion,\n acceptedVersion: consent.acceptedVersion,\n acceptedAt: consent.acceptedAt,\n valid: consent.valid,\n },\n canAutoStart: consent.canAutoStart,\n registrationSecret,\n };\n}\n\nfunction requireGatewayToken(c: { req: { header: (name: string) => string | undefined } }): string | null {\n return (\n extractToken({\n authorization: c.req.header('authorization') ?? undefined,\n }) ?? null\n );\n}\n\nfunction createTunnelMutationRateLimitMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n const token = requireGatewayToken(c);\n if (!token) {\n return c.json({ error: 'Gateway token required' }, 401);\n }\n const result = consumeTunnelMutationLimit(token);\n if (!result.allowed) {\n c.header('Retry-After', String(Math.ceil(result.retryAfterMs / 1000)));\n return c.json(\n {\n error: 'Too many tunnel operations. Try again later.',\n code: 'TUNNEL_RATE_LIMITED',\n retryAfterMs: result.retryAfterMs,\n },\n 429,\n );\n }\n await next();\n };\n}\n\nexport function registerTunnelPublicRoutes(app: Hono, service: GatewayService): void {\n app.get('/api/tunnel/pair/ping', async (c) => {\n const config = service.currentConfig as Config;\n const tunnel = getTunnelService();\n const status = tunnel.getStatus();\n const context = buildMobilePairContext({\n config,\n tunnelPublicUrl: status.publicUrl,\n tunnelConnected: status.state === 'connected',\n reverseProxyPublicUrl: resolveReverseProxyPublicUrl(config),\n });\n return c.json({\n ok: true,\n service: 'xopc-gateway',\n mobilePairing: true,\n port: context.port,\n bindMode: context.bindMode,\n listenHost: context.listenHost,\n pairingReady: context.pairingReady,\n blockReason: context.blockReason ?? null,\n tunnelConnected: status.state === 'connected',\n reverseProxyConfigured: Boolean(resolveReverseProxyPublicUrl(config)),\n connectUrls: context.connectUrls,\n });\n });\n\n app.post('/api/tunnel/pair/validate-url', async (c) => {\n let body: { baseUrl?: unknown };\n try {\n body = (await c.req.json()) as { baseUrl?: unknown };\n } catch {\n return c.json({ error: 'Invalid JSON body' }, 400);\n }\n const baseUrl = typeof body.baseUrl === 'string' ? body.baseUrl : '';\n const result = validateMobilePairBaseUrl(baseUrl);\n if (result.ok === false) {\n return c.json({\n ok: false,\n code: result.code,\n message: result.message,\n });\n }\n return c.json({\n ok: true,\n url: result.url,\n loopback: false,\n probePath: '/api/tunnel/pair/ping',\n });\n });\n\n app.post('/api/tunnel/exchange-token', async (c) => {\n const clientIp =\n getClientIpFromHeaders({\n get: (name: string) => c.req.header(name) ?? undefined,\n }) ?? 'unknown';\n\n let body: { pairingSecret?: unknown };\n try {\n body = (await c.req.json()) as { pairingSecret?: unknown };\n } catch {\n return c.json({ error: 'Invalid JSON body' }, 400);\n }\n\n const pairingSecret = typeof body.pairingSecret === 'string' ? body.pairingSecret.trim() : '';\n if (!pairingSecret) {\n return c.json({ error: 'pairingSecret required' }, 400);\n }\n\n const cached = getCachedPairingExchange(pairingSecret);\n if (cached) {\n logTunnelAudit(\n 'tunnel.exchange_token',\n { ok: true, clientIp, phase: 'pairing_exchange', replay: true },\n 'Pairing secret replayed (duplicate mobile exchange)',\n );\n return c.json(cached);\n }\n\n const token = service.getAuthToken();\n if (!token) {\n return c.json({ error: 'Gateway token not configured' }, 500);\n }\n\n const persisted = loadTunnelState();\n const config = service.currentConfig as Config;\n const tunnelUrl = persisted?.publicUrl?.trim() || null;\n const reverseProxyUrl = resolveReverseProxyPublicUrl(config);\n const lanUrl = resolveMobilePairLanUrl(config);\n const connectUrls = buildMobileConnectUrlOrder({\n reverseProxyUrl,\n baseUrl: reverseProxyUrl ?? tunnelUrl,\n lanUrl,\n tunnelUrl,\n });\n // Mobile prefers HTTPS user-deployed URL over FRP broker when both exist.\n const advertisedBaseUrl = reverseProxyUrl ?? tunnelUrl;\n\n const payload = await exchangePairingSecretOnce(pairingSecret, () => ({\n token,\n baseUrl: advertisedBaseUrl,\n lanUrl,\n connectUrls,\n }));\n\n if (!payload) {\n const limited = consumePairingExchangeFailLimit(clientIp);\n if (!limited.allowed) {\n c.header('Retry-After', String(Math.ceil(limited.retryAfterMs / 1000)));\n }\n logTunnelAudit(\n 'tunnel.exchange_token',\n { ok: false, clientIp, phase: 'pairing_exchange' },\n 'Pairing exchange denied: invalid or expired secret',\n );\n return c.json({ error: 'Invalid or expired pairing secret', code: 'PAIRING_INVALID' }, 401);\n }\n\n logTunnelAudit(\n 'tunnel.exchange_token',\n { ok: true, clientIp, subdomain: persisted?.subdomain ?? null, phase: 'pairing_exchange' },\n 'Pairing secret exchanged for gateway token',\n );\n return c.json(payload);\n });\n}\n\nexport function registerTunnelRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { strictRateLimitMiddleware } = deps;\n const tunnel = getTunnelService();\n const tunnelMutationLimit = createTunnelMutationRateLimitMiddleware();\n\n authenticated.get('/api/tunnel/pair/context', async (c) => {\n await configureTunnelFromService(deps);\n const config = deps.service.currentConfig as Config;\n const status = tunnel.getStatus();\n const context = buildMobilePairContext({\n config,\n tunnelPublicUrl: status.publicUrl,\n tunnelConnected: status.state === 'connected',\n reverseProxyPublicUrl: resolveReverseProxyPublicUrl(config),\n });\n return c.json(context);\n });\n\n authenticated.post('/api/tunnel/pair/enable-lan', tunnelMutationLimit, async (c) => {\n const token = requireGatewayToken(c);\n if (!token) return c.json({ error: 'Gateway token required' }, 401);\n\n const config = deps.service.currentConfig as Config;\n const patchResult = applyLanPairingGatewayPatch(config);\n if (patchResult.ok === false) {\n return c.json({ ok: false, error: { message: patchResult.message, code: 'LAN_PAIRING_CONFIG' } }, 400);\n }\n\n if (patchResult.changed) {\n const saveResult = await deps.service.saveConfig(config);\n if (!saveResult.saved) {\n return c.json(\n { ok: false, error: { message: saveResult.error ?? 'Failed to save config', code: 'SAVE_FAILED' } },\n 500,\n );\n }\n logTunnelAudit(\n 'tunnel.enable_lan_pairing',\n { gatewayTokenHash: hashGatewayToken(token).slice(0, 12) },\n 'Gateway bind switched to LAN for mobile pairing',\n );\n }\n\n const status = tunnel.getStatus();\n let context = buildMobilePairContext({\n config: deps.service.currentConfig as Config,\n tunnelPublicUrl: status.publicUrl,\n tunnelConnected: status.state === 'connected',\n reverseProxyPublicUrl: resolveReverseProxyPublicUrl(deps.service.currentConfig as Config),\n });\n\n if (patchResult.changed) {\n context = {\n ...context,\n pairingReady: false,\n blockReason: 'GATEWAY_LOOPBACK_ONLY',\n };\n }\n\n return c.json({\n ok: true,\n requiresRestart: patchResult.changed,\n context,\n });\n });\n\n authenticated.post('/api/tunnel/pair', tunnelMutationLimit, async (c) => {\n await configureTunnelFromService(deps);\n const token = requireGatewayToken(c);\n if (!token) return c.json({ error: 'Gateway token required' }, 401);\n\n const { secret, expiresAt } = createPairingSecret();\n logTunnelAudit(\n 'tunnel.pair',\n {\n expiresAt: expiresAt.toISOString(),\n gatewayTokenHash: hashGatewayToken(token).slice(0, 12),\n },\n 'Mobile pairing session created',\n );\n return c.json({ pairingSecret: secret, expiresAt: expiresAt.toISOString() });\n });\n\n /**\n * Probe a candidate reverse-proxy URL before persisting it. The check round-trips\n * a `GET /api/tunnel/pair/ping` and validates the response identifies as\n * `service: 'xopc-gateway'`. Surface-area errors are mapped to stable codes so\n * the UI can render targeted hints (TLS / DNS / wrong service / blocked path).\n */\n authenticated.post('/api/tunnel/pair/probe-public', tunnelMutationLimit, async (c) => {\n const token = requireGatewayToken(c);\n if (!token) return c.json({ error: 'Gateway token required' }, 401);\n\n let body: { url?: unknown };\n try {\n body = (await c.req.json()) as { url?: unknown };\n } catch {\n return c.json({ ok: false, code: 'INVALID_JSON', message: 'Invalid JSON body' }, 400);\n }\n const raw = typeof body.url === 'string' ? body.url : '';\n const validation = validatePublicUrl(raw);\n if (validation.ok === false) {\n return c.json({ ok: false, code: validation.code, message: validation.message });\n }\n\n const pingUrl = `${validation.url}/api/tunnel/pair/ping`;\n const startedAt = Date.now();\n let response: Response;\n try {\n response = await fetch(pingUrl, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n signal: AbortSignal.timeout(5000),\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n // Node's fetch surfaces TLS errors as TypeError with cause; map heuristically.\n const lower = message.toLowerCase();\n let code: 'TIMEOUT' | 'TLS_INVALID' | 'DNS_OR_CONN_REFUSED' | 'NETWORK_ERROR' = 'NETWORK_ERROR';\n if (lower.includes('timeout') || lower.includes('aborted')) code = 'TIMEOUT';\n else if (lower.includes('certificate') || lower.includes('cert') || lower.includes('tls') || lower.includes('ssl')) {\n code = 'TLS_INVALID';\n } else if (lower.includes('enotfound') || lower.includes('econnrefused') || lower.includes('eai_again')) {\n code = 'DNS_OR_CONN_REFUSED';\n }\n return c.json({ ok: false, code, message });\n }\n\n if (response.status === 401 || response.status === 403) {\n return c.json({ ok: false, code: 'AUTH_BLOCKED', message: `Reverse proxy returned ${response.status}` });\n }\n if (!response.ok) {\n return c.json({ ok: false, code: 'HTTP_ERROR', message: `HTTP ${response.status}` });\n }\n let parsed: { service?: unknown; mobilePairing?: unknown } | null = null;\n try {\n parsed = (await response.json()) as { service?: unknown; mobilePairing?: unknown };\n } catch {\n return c.json({ ok: false, code: 'NOT_XOPC_GATEWAY', message: 'Response was not JSON' });\n }\n if (!parsed || parsed.service !== 'xopc-gateway') {\n return c.json({\n ok: false,\n code: 'NOT_XOPC_GATEWAY',\n message: 'Endpoint did not identify as an xopc gateway',\n });\n }\n return c.json({\n ok: true,\n url: validation.url,\n latencyMs: Date.now() - startedAt,\n mobilePairing: parsed.mobilePairing === true,\n });\n });\n\n authenticated.get('/api/tunnel/status', async (c) => {\n await configureTunnelFromService(deps);\n const config = deps.service.currentConfig as Config;\n return c.json(enrichTunnelStatus(config, tunnel.getStatus()));\n });\n\n authenticated.post('/api/tunnel/consent', tunnelMutationLimit, async (c) => {\n const token = requireGatewayToken(c);\n if (!token) return c.json({ error: 'Gateway token required' }, 401);\n\n const config = deps.service.currentConfig as Config;\n applyTunnelConsentToConfig(config);\n const result = await deps.service.saveConfig(config);\n if (!result.saved) {\n return c.json({ ok: false, error: result.error ?? 'Failed to save config' }, 500);\n }\n const consent = getTunnelConsentState(config);\n logTunnelAudit(\n 'tunnel.consent',\n {\n consentVersion: consent.currentVersion,\n gatewayTokenHash: hashGatewayToken(token).slice(0, 12),\n },\n 'Remote access security consent recorded',\n );\n return c.json({\n ok: true,\n consent: {\n currentVersion: consent.currentVersion,\n acceptedVersion: consent.acceptedVersion,\n acceptedAt: consent.acceptedAt,\n valid: consent.valid,\n },\n });\n });\n\n authenticated.post('/api/tunnel/start', tunnelMutationLimit, async (c) => {\n await configureTunnelFromService(deps, { force: true });\n const config = deps.service.currentConfig as Config;\n const token = requireGatewayToken(c);\n if (!token) return c.json({ error: 'Gateway token required' }, 401);\n\n try {\n assertTunnelMayStart(config);\n } catch (err) {\n if (err instanceof TunnelConsentError) {\n logTunnelAudit(\n 'tunnel.start_denied',\n { reason: TUNNEL_CONSENT_REQUIRED_CODE, gatewayTokenHash: hashGatewayToken(token).slice(0, 12) },\n 'Tunnel start denied: consent required',\n );\n return c.json({ error: err.message, code: TUNNEL_CONSENT_REQUIRED_CODE }, 403);\n }\n throw err;\n }\n\n const gateway = config.gateway;\n const port = gateway.port ?? 18790;\n try {\n const qr = await tunnel.start(port, token);\n setTunnelEnabledInConfig(config, true);\n await deps.service.saveConfig(config);\n const status = tunnel.getStatus();\n return c.json({\n publicUrl: qr.publicUrl,\n subdomain: status.subdomain,\n qrPayload: qr.qrPayload,\n lanUrl: qr.lanUrl,\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ error: message }, 500);\n }\n });\n\n authenticated.post('/api/tunnel/stop', tunnelMutationLimit, async (c) => {\n await configureTunnelFromService(deps);\n const config = deps.service.currentConfig as Config;\n let release = false;\n try {\n const body = (await c.req.json().catch(() => ({}))) as { release?: unknown };\n release = body.release === true;\n } catch {\n release = false;\n }\n const { released } = await tunnel.stop({ release });\n setTunnelEnabledInConfig(config, false);\n await deps.service.saveConfig(config);\n return c.json({ ok: true, released });\n });\n\n authenticated.get('/api/tunnel/qr', async (c) => {\n await configureTunnelFromService(deps);\n const gateway = deps.service.currentConfig.gateway;\n const port = gateway.port ?? 18790;\n const host = resolveGatewayEffectiveHost(deps.service.currentConfig);\n const token = requireGatewayToken(c);\n if (!token) return c.json({ error: 'Gateway token required' }, 401);\n const qr = await tunnel.buildQr(port, host);\n return c.json(qr);\n });\n\n authenticated.get('/api/tunnel/transport-status', async (c) => {\n await configureTunnelFromService(deps);\n return c.json({\n transport: { tls: 'broker_terminated' as const },\n });\n });\n\n /**\n * POST /api/tunnel/reveal-registration-secret — plaintext only when stored in config file.\n */\n authenticated.post('/api/tunnel/reveal-registration-secret', strictRateLimitMiddleware, async (c) => {\n const config = deps.service.currentConfig as Config;\n const registrationSecret = readTunnelRegistrationSecretFromConfigOnly(config);\n return c.json({\n ok: true,\n payload: {\n registrationSecret,\n source: registrationSecret ? ('config' as const) : ('none' as const),\n },\n });\n });\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","names":[],"sources":["../../../../../src/gateway/hono/routes/update.ts"],"sourcesContent":["import type { Hono } from 'hono';\nimport { streamSSE } from 'hono/streaming';\n\nimport { loadConfig } from '../../../config/index.js';\nimport { acquireUpdateLock } from '../../../infra/update-lock.js';\nimport {\n DEFAULT_PACKAGE_CHANNEL,\n normalizeUpdateChannel,\n type UpdateChannel,\n} from '../../../infra/update-channels.js';\nimport {\n formatUpdateApiResult,\n runGatewayUpdateWithPostSteps,\n type UpdateRunResult,\n} from '../../../infra/update-runner.js';\nimport { getUpdateAvailable, runGatewayUpdateCheck } from '../../../infra/update-startup.js';\nimport { PACKAGE_VERSION } from '../../../package-version.js';\nimport { createGatewayRouteLogger } from '../lib/route-logger.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\nconst log = createGatewayRouteLogger('Update');\n\nfunction mapUpdateFailure(result: UpdateRunResult, channel: UpdateChannel) {\n const apiResult = formatUpdateApiResult(result, channel);\n const message =\n typeof apiResult.message === 'string'\n ? apiResult.message\n : result.reason ?? 'Update failed';\n return { apiResult, message };\n}\n\nexport function registerUpdateRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { strictRateLimitMiddleware, service } = deps;\n\n authenticated.get('/api/update/status', (c) => {\n const update = getUpdateAvailable();\n return c.json({\n ok: true,\n payload: {\n currentVersion: PACKAGE_VERSION,\n updateAvailable: update !== null,\n latestVersion: update?.latestVersion ?? null,\n channel: update?.channel ?? null,\n },\n });\n });\n\n authenticated.post('/api/update/check', strictRateLimitMiddleware, async (c) => {\n const config = loadConfig(service.getHealth().configPath);\n await runGatewayUpdateCheck({\n config,\n force: true,\n onUpdateAvailableChange: (update) => {\n service.emit('update.available', update);\n },\n });\n const result = getUpdateAvailable();\n return c.json({\n ok: true,\n payload: {\n currentVersion: PACKAGE_VERSION,\n updateAvailable: result !== null,\n latestVersion: result?.latestVersion ?? null,\n channel: result?.channel ?? null,\n },\n });\n });\n\n authenticated.post('/api/update/run', strictRateLimitMiddleware, async (c) => {\n const config = loadConfig(service.getHealth().configPath);\n const channel = normalizeUpdateChannel(config.update?.channel) ?? DEFAULT_PACKAGE_CHANNEL;\n\n const lock = await acquireUpdateLock('gateway');\n if (!lock) {\n return c.json(\n { ok: false, error: 'busy', message: 'Another update is already in progress.' },\n 409,\n );\n }\n\n try {\n log.info({ channel }, 'Gateway: starting in-process update');\n const result = await runGatewayUpdateWithPostSteps({\n channel,\n cwd: process.cwd(),\n argv1: process.argv[1],\n triggerInProcessRestart: () => service.triggerGatewayProcessRestart(),\n });\n const apiResult = formatUpdateApiResult(result, channel);\n if (result.status === 'error') {\n const { message } = mapUpdateFailure(result, channel);\n log.warn({ channel, reason: result.reason }, 'Gateway: update failed');\n return c.json({\n ok: false,\n error: 'update-failed',\n message,\n result: apiResult,\n });\n }\n log.info({ channel, mode: result.mode }, 'Gateway: update finished');\n return c.json({ ok: true, result: apiResult });\n } catch (err) {\n log.error({ err, channel }, 'Gateway: update threw');\n return c.json(\n {\n ok: false,\n error: 'internal',\n message: err instanceof Error ? err.message : String(err),\n },\n 500,\n );\n } finally {\n await lock.release();\n }\n });\n\n authenticated.post('/api/update/run/stream', strictRateLimitMiddleware, async (c) => {\n const config = loadConfig(service.getHealth().configPath);\n const channel = normalizeUpdateChannel(config.update?.channel) ?? DEFAULT_PACKAGE_CHANNEL;\n\n return streamSSE(c, async (stream) => {\n const lock = await acquireUpdateLock('gateway');\n if (!lock) {\n await stream.writeSSE({\n event: 'result',\n data: JSON.stringify({\n ok: false,\n error: 'busy',\n message: 'Another update is already in progress.',\n }),\n });\n return;\n }\n\n try {\n log.info({ channel }, 'Gateway: starting streamed in-process update');\n const result = await runGatewayUpdateWithPostSteps({\n channel,\n cwd: process.cwd(),\n argv1: process.argv[1],\n triggerInProcessRestart: () => service.triggerGatewayProcessRestart(),\n progress: {\n onStepStart: async (step) => {\n await stream.writeSSE({\n event: 'progress',\n data: JSON.stringify({\n line: `[${step.index + 1}/${step.total}] ${step.name}: ${step.command}`,\n source: 'stdout',\n }),\n });\n },\n onStepComplete: async (step) => {\n if (step.stderrTail) {\n await stream.writeSSE({\n event: 'progress',\n data: JSON.stringify({ line: step.stderrTail, source: 'stderr' }),\n });\n }\n },\n },\n });\n\n const apiResult = formatUpdateApiResult(result, channel);\n if (result.status === 'error') {\n const { message } = mapUpdateFailure(result, channel);\n await stream.writeSSE({\n event: 'result',\n data: JSON.stringify({\n ok: false,\n error: 'update-failed',\n message,\n result: apiResult,\n reason: result.reason,\n }),\n });\n return;\n }\n\n await stream.writeSSE({\n event: 'result',\n data: JSON.stringify({ ok: true, result: apiResult }),\n });\n } catch (err) {\n log.error({ err, channel }, 'Gateway: streamed update threw');\n await stream.writeSSE({\n event: 'result',\n data: JSON.stringify({\n ok: false,\n error: 'internal',\n message: err instanceof Error ? err.message : String(err),\n }),\n });\n } finally {\n await lock.release();\n }\n });\n });\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"voice.js","names":[],"sources":["../../../../../src/gateway/hono/routes/voice.ts"],"sourcesContent":["/**\n * Voice routes — POST /api/voice/transcriptions (multipart) and legacy\n * POST /api/voice/transcribe (JSON/base64).\n *\n * The endpoints share one execution path that:\n * 1. Runs the configured STT provider and fallback chain\n * 2. Optionally runs LLM refine on the raw transcript\n * 3. Returns { raw, refined?, language }\n *\n * LLM refinement is opt-in through `voice.input.refinement`.\n */\n\nimport type { Context, Hono } from 'hono';\nimport { type UserMessage } from '@earendil-works/pi-ai/compat';\n\nimport type { Config } from '../../../config/schema.js';\nimport { getDefaultModelSync, resolveModel } from '../../../providers/index.js';\nimport { completeWithResolvedCredentials } from '../../../providers/model-call.js';\nimport { isSTTAvailable, transcribe } from '../../../voice/stt/index.js';\nimport { isTTSAvailable, mergeTtsConfigFromAppConfig, speak } from '../../../voice/tts/index.js';\nimport { listTtsProvidersForApi } from '../../../voice/tts/list-providers.js';\nimport { listSttProvidersForApi } from '../../../voice/stt/list-providers.js';\nimport { mergeSttConfigFromAppConfig } from '../../../channels/attachments/voice-stt-webchat.js';\nimport { resolveSttProviderConfigSlice } from '../../../voice/stt/config-slice.js';\nimport { resolveTtsProviderConfigSlice } from '../../../voice/tts/config-slice.js';\nimport {\n listLocalVoiceModelStatuses,\n removeLocalVoiceModel,\n startLocalVoiceModelInstall,\n} from '../../../voice/local/model-manager.js';\nimport { getLocalVoiceRuntimeClient } from '../../../voice/local/runtime-client.js';\nimport { createGatewayRouteLogger } from '../lib/route-logger.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\nconst log = createGatewayRouteLogger('Voice');\n\nfunction readVoiceApiKeyFromConfigFileOnly(\n cfg: Config,\n kind: 'stt' | 'tts',\n providerId: string,\n): string | undefined {\n const id = providerId.trim();\n if (!id) return undefined;\n const slice =\n kind === 'stt'\n ? resolveSttProviderConfigSlice(id, cfg.tools?.media?.audio)\n : resolveTtsProviderConfigSlice(id, cfg.messages?.tts);\n const key = slice.apiKey;\n return typeof key === 'string' && key.trim() ? key.trim() : undefined;\n}\n\nconst REFINE_TIMEOUT_MS = 15_000;\nconst MAX_AUDIO_BYTES = 25 * 1024 * 1024; // 25 MB\nconst MAX_SPEECH_TEXT_LENGTH = 1_200;\n\nfunction speechMimeType(format: string): string {\n if (format === 'opus' || format === 'ogg') return 'audio/ogg';\n if (format === 'mp3' || format === 'mpeg') return 'audio/mpeg';\n if (format === 'wav') return 'audio/wav';\n return `audio/${format}`;\n}\n\nconst LIGHT_REFINE_PROMPT = `你是语音转文字后处理助手。将语音转写原文整理为高质量文本输入。\n\n规则:\n1. 修正明显的语音识别错误\n2. 添加正确的标点符号\n3. 去除口语赘词(嗯、啊、那个、就是说、然后就是)\n4. 保持原意不变,不要扩写或改变语义\n5. 如果原文已经很好,原样输出\n6. 只输出整理后的文字,不要解释`;\n\nconst PUNCTUATION_REFINE_PROMPT = `为语音转写原文补充标点和合理分段。不要删词、改写、扩写或改变语义。只输出处理后的文字。`;\n\nfunction resolveRefineModel(\n config: Config | undefined,\n configuredRef?: string,\n): ReturnType<typeof resolveModel> | null {\n if (configuredRef) {\n try {\n return resolveModel(configuredRef);\n } catch {\n log.warn({ modelRef: configuredRef }, 'Configured voice refinement model is invalid');\n return null;\n }\n }\n const envRef = process.env.XOPC_VOICE_REFINE_MODEL?.trim();\n if (envRef) {\n try {\n return resolveModel(envRef);\n } catch { /* fall through */ }\n }\n for (const candidate of ['openai/gpt-5.6-luna', 'google/gemini-3.5-flash']) {\n try {\n return resolveModel(candidate);\n } catch { /* next */ }\n }\n try {\n return resolveModel(getDefaultModelSync(config));\n } catch {\n return null;\n }\n}\n\nasync function refineTranscript(\n raw: string,\n config: Config | undefined,\n signal?: AbortSignal,\n): Promise<string | undefined> {\n if (!raw.trim()) return undefined;\n\n const refinement = config?.voice?.input?.refinement;\n const mode = refinement?.mode ?? 'off';\n if (mode === 'off') return undefined;\n\n const instruction =\n mode === 'punctuation'\n ? PUNCTUATION_REFINE_PROMPT\n : mode === 'custom'\n ? refinement?.customInstruction?.trim()\n : LIGHT_REFINE_PROMPT;\n if (!instruction) {\n log.warn('Custom voice refinement is enabled without an instruction; returning raw only');\n return undefined;\n }\n\n const model = resolveRefineModel(config, refinement?.model);\n if (!model) {\n log.debug('No LLM model available for voice refine; returning raw only');\n return undefined;\n }\n\n try {\n const userMsg: UserMessage = {\n role: 'user',\n content: `${instruction}\\n\\n原文:${raw}`,\n timestamp: Date.now(),\n };\n\n const timeoutSignal =\n typeof AbortSignal !== 'undefined' && typeof AbortSignal.timeout === 'function'\n ? AbortSignal.timeout(REFINE_TIMEOUT_MS)\n : undefined;\n const mergedSignal =\n signal && timeoutSignal && typeof AbortSignal.any === 'function'\n ? AbortSignal.any([signal, timeoutSignal])\n : signal ?? timeoutSignal;\n\n const result = await completeWithResolvedCredentials(\n model,\n { messages: [userMsg] },\n {\n maxTokens: Math.min(raw.length * 3, 4096),\n temperature: 0.2,\n signal: mergedSignal as AbortSignal,\n },\n );\n\n let out = '';\n if (Array.isArray(result.content)) {\n for (const c of result.content) {\n if (c && typeof c === 'object' && (c as { type?: string }).type === 'text') {\n out += String((c as { text?: string }).text || '');\n }\n }\n }\n\n const refined = out.trim();\n if (!refined || refined === raw.trim()) return undefined;\n return refined;\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n log.warn({ errorMessage: msg }, 'Voice refine failed; returning raw only');\n return undefined;\n }\n}\n\nexport function registerVoiceRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service, strictRateLimitMiddleware } = deps;\n\n authenticated.post('/api/voice/language', strictRateLimitMiddleware, async (c) => {\n let body: { language?: unknown } = {};\n try {\n body = (await c.req.json()) as typeof body;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON body' } }, 400);\n }\n if (body.language !== 'en' && body.language !== 'zh') {\n return c.json({ ok: false, error: { message: 'language must be \"en\" or \"zh\"' } }, 400);\n }\n const payload = await service.syncVoiceLanguage(body.language);\n if (payload.error) {\n return c.json({ ok: false, error: { message: payload.error } }, 500);\n }\n return c.json({ ok: true, payload });\n });\n\n /**\n * GET /api/voice/providers\n *\n * Lists registered SpeechProviderPlugin ids with configured state for the\n * current gateway config (OpenClaw `tts.providers` equivalent).\n */\n authenticated.get('/api/voice/providers', (c) => {\n const config = service.currentConfig as Config;\n const payload = listTtsProvidersForApi(config);\n return c.json({ ok: true, payload });\n });\n\n /**\n * GET /api/voice/stt-providers\n *\n * Lists registered MediaUnderstandingProvider ids with configured state for\n * the current gateway config (OpenClaw `tools.media.audio.providers` equivalent).\n */\n authenticated.get('/api/voice/stt-providers', (c) => {\n const config = service.currentConfig as Config;\n const payload = listSttProvidersForApi(config);\n return c.json({ ok: true, payload });\n });\n\n authenticated.get('/api/voice/local/status', async (c) => {\n const models = await listLocalVoiceModelStatuses();\n try {\n const runtime = await getLocalVoiceRuntimeClient().request<{\n ok: boolean;\n protocolVersion: number;\n engine: string;\n }>('health', {}, { timeoutMs: 10_000, stopOnTimeout: false });\n return c.json({ ok: true, payload: { runtime: { ...runtime, ready: true }, models } });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return c.json({\n ok: true,\n payload: { runtime: { ready: false, error: message }, models },\n });\n }\n });\n\n authenticated.post(\n '/api/voice/local/models/:modelId/install',\n strictRateLimitMiddleware,\n (c) => {\n try {\n const status = startLocalVoiceModelInstall(c.req.param('modelId'));\n return c.json({ ok: true, payload: { model: status } }, 202);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return c.json({ ok: false, error: { message } }, 400);\n }\n },\n );\n\n authenticated.delete(\n '/api/voice/local/models/:modelId',\n strictRateLimitMiddleware,\n async (c) => {\n try {\n await removeLocalVoiceModel(c.req.param('modelId'));\n return c.json({ ok: true });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return c.json({ ok: false, error: { message } }, 400);\n }\n },\n );\n\n /**\n * POST /api/voice/reveal-api-key — return plaintext voice provider apiKey from config file only.\n * Body: `{ kind: 'stt' | 'tts', provider: string }`\n */\n authenticated.post('/api/voice/reveal-api-key', strictRateLimitMiddleware, async (c) => {\n let body: { kind?: unknown; provider?: unknown } = {};\n try {\n body = (await c.req.json()) as typeof body;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON body' } }, 400);\n }\n const kind = body.kind === 'stt' || body.kind === 'tts' ? body.kind : null;\n const provider = typeof body.provider === 'string' ? body.provider.trim() : '';\n if (!kind) {\n return c.json({ ok: false, error: { message: 'kind must be \"stt\" or \"tts\"' } }, 400);\n }\n if (!provider) {\n return c.json({ ok: false, error: { message: 'provider is required' } }, 400);\n }\n\n const cfg = service.currentConfig as Config;\n const apiKey = readVoiceApiKeyFromConfigFileOnly(cfg, kind, provider);\n return c.json({\n ok: true,\n payload: {\n kind,\n provider,\n apiKey: apiKey ?? null,\n source: apiKey ? ('config' as const) : ('none' as const),\n },\n });\n });\n\n /** Generate one bounded read-aloud chunk as binary audio. */\n authenticated.post('/api/voice/speech', strictRateLimitMiddleware, async (c) => {\n let body: { text?: unknown; language?: unknown; voice?: unknown } = {};\n try {\n body = (await c.req.json()) as typeof body;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON body' } }, 400);\n }\n\n const text = typeof body.text === 'string' ? body.text.trim() : '';\n if (!text) {\n return c.json({ ok: false, error: { message: 'text is required' } }, 400);\n }\n if (text.length > MAX_SPEECH_TEXT_LENGTH) {\n return c.json({ ok: false, error: { message: `text exceeds ${MAX_SPEECH_TEXT_LENGTH} characters` } }, 400);\n }\n\n const language = typeof body.language === 'string' ? body.language.trim() : '';\n const voice = typeof body.voice === 'string' ? body.voice.trim() : '';\n if (language && !/^[a-z]{2,3}(?:-[A-Z]{2})?$/.test(language)) {\n return c.json({ ok: false, error: { message: 'language must be a valid locale' } }, 400);\n }\n if (voice.length > 100) {\n return c.json({ ok: false, error: { message: 'voice exceeds 100 characters' } }, 400);\n }\n\n const config = service.currentConfig as Config;\n const baseTtsConfig = mergeTtsConfigFromAppConfig(config.messages?.tts);\n const provider = baseTtsConfig.provider;\n const languageVoice = language.startsWith('en')\n ? 'en-US-MichelleNeural'\n : language.startsWith('zh')\n ? 'zh-CN-XiaoxiaoNeural'\n : undefined;\n const providerOverride = provider === 'edge'\n ? {\n ...(language ? { lang: language } : {}),\n ...(voice || languageVoice ? { voice: voice || languageVoice } : {}),\n }\n : {};\n const ttsConfig = {\n ...baseTtsConfig,\n enabled: true,\n providers: {\n ...(baseTtsConfig.providers ?? {}),\n [provider]: {\n ...(baseTtsConfig.providers?.[provider] ?? {}),\n ...providerOverride,\n },\n },\n };\n\n if (!isTTSAvailable(ttsConfig)) {\n return c.json({ ok: false, error: { message: `TTS provider \\\"${provider}\\\" is not configured.` } }, 503);\n }\n\n try {\n const result = await speak(text, ttsConfig, {\n appConfig: config,\n parseDirectives: false,\n signal: c.req.raw.signal,\n tts: voice ? { voice } : undefined,\n });\n if (!result.audio.length) {\n throw new Error(`TTS provider \\\"${result.provider}\\\" returned empty audio`);\n }\n return new Response(new Uint8Array(result.audio), {\n headers: {\n 'Content-Type': speechMimeType(result.format),\n 'Content-Length': String(result.audio.length),\n 'Cache-Control': 'private, no-store',\n 'X-Content-Type-Options': 'nosniff',\n 'X-Voice-Provider': result.provider,\n ...(language ? { 'X-Voice-Language': language } : {}),\n },\n });\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n if (!c.req.raw.signal.aborted) {\n log.error({ err: error, provider, textLength: text.length }, `Voice speech generation failed: ${msg}`);\n }\n return c.json({ ok: false, error: { message: `Speech generation failed: ${msg}` } }, 502);\n }\n });\n\n /**\n * POST /api/voice/tts-test\n *\n * Body: { text: string, provider?: string, model?: string, voice?: string }\n * Response: { ok: true, payload: { audio: string, format: string, provider: string } }\n */\n authenticated.post('/api/voice/tts-test', strictRateLimitMiddleware, async (c) => {\n let body: { text?: unknown; provider?: unknown; model?: unknown; voice?: unknown; providerConfig?: unknown } = {};\n try {\n body = (await c.req.json()) as typeof body;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON body' } }, 400);\n }\n\n const text = typeof body.text === 'string' ? body.text.trim() : '';\n if (!text) {\n return c.json({ ok: false, error: { message: 'text is required' } }, 400);\n }\n if (text.length > 1000) {\n return c.json({ ok: false, error: { message: 'text exceeds 1000 characters' } }, 400);\n }\n\n const config = service.currentConfig as Config;\n const baseTtsConfig = mergeTtsConfigFromAppConfig(config.messages?.tts);\n const provider = typeof body.provider === 'string' && body.provider.trim() ? body.provider.trim() : baseTtsConfig.provider;\n const providerConfig =\n body.providerConfig && typeof body.providerConfig === 'object' && !Array.isArray(body.providerConfig)\n ? (body.providerConfig as Record<string, unknown>)\n : undefined;\n const ttsConfig = {\n ...baseTtsConfig,\n enabled: true,\n provider,\n providers: {\n ...(baseTtsConfig.providers ?? {}),\n ...(providerConfig ? { [provider]: { ...(baseTtsConfig.providers?.[provider] ?? {}), ...providerConfig } } : {}),\n },\n fallback: { enabled: false, order: [provider] },\n };\n\n if (!isTTSAvailable(ttsConfig)) {\n return c.json({\n ok: false,\n error: { message: `TTS provider \"${provider}\" is not configured.` },\n }, 503);\n }\n\n try {\n const startedAt = Date.now();\n const result = await speak(text, ttsConfig, {\n appConfig: config,\n parseDirectives: false,\n tts: {\n ...(typeof body.model === 'string' && body.model.trim() ? { model: body.model.trim() } : {}),\n ...(typeof body.voice === 'string' && body.voice.trim() ? { voice: body.voice.trim() } : {}),\n },\n });\n if (!result.audio.length) {\n throw new Error(`TTS provider \"${result.provider}\" returned empty audio`);\n }\n const mimeType =\n result.format === 'opus' || result.format === 'ogg'\n ? 'audio/ogg'\n : result.format === 'mp3' || result.format === 'mpeg'\n ? 'audio/mpeg'\n : result.format === 'wav'\n ? 'audio/wav'\n : `audio/${result.format}`;\n return c.json({\n ok: true,\n payload: {\n audio: result.audio.toString('base64'),\n mimeType,\n format: result.format,\n provider: result.provider,\n latencyMs: Date.now() - startedAt,\n audioSize: result.audio.length,\n },\n });\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n log.error({ errorMessage: msg, provider }, 'Voice TTS test failed');\n return c.json({ ok: false, error: { message: `TTS test failed: ${msg}` } }, 502);\n }\n });\n\n type TranscriptionInput = {\n audioBuffer: Buffer;\n mimeType: string;\n fileName: string;\n language?: string;\n };\n\n const runTranscription = async (c: Context, input: TranscriptionInput) => {\n if (!input.audioBuffer.length) {\n return c.json({ ok: false, error: { message: 'Empty audio data' } }, 400);\n }\n if (input.audioBuffer.length > MAX_AUDIO_BYTES) {\n return c.json({ ok: false, error: { message: 'Audio data exceeds 25 MB limit' } }, 400);\n }\n if (!input.mimeType.toLowerCase().startsWith('audio/')) {\n return c.json({ ok: false, error: { message: 'Uploaded file must have an audio MIME type' } }, 400);\n }\n\n const config = service.currentConfig as Config;\n const sttConfig = mergeSttConfigFromAppConfig(\n config.tools?.media?.audio,\n config.tools?.media,\n );\n if (!isSTTAvailable(sttConfig)) {\n return c.json({\n ok: false,\n error: { message: 'STT is not configured. Enable STT in gateway config (tools.media.audio).' },\n }, 503);\n }\n\n const startedAt = Date.now();\n try {\n const result = await transcribe(input.audioBuffer, sttConfig, {\n language: input.language || (sttConfig.provider === 'alibaba' ? 'zh' : undefined),\n mime: input.mimeType,\n fileName: input.fileName,\n signal: c.req.raw.signal,\n });\n const raw = result.text;\n const detectedLanguage = result.language ?? input.language;\n const refined = raw.trim()\n ? await refineTranscript(raw, config, c.req.raw.signal)\n : undefined;\n return c.json({\n ok: true,\n payload: {\n raw,\n ...(refined ? { refined } : {}),\n ...(detectedLanguage ? { language: detectedLanguage } : {}),\n provider: result.provider,\n attempts: result.attempts,\n latencyMs: Date.now() - startedAt,\n },\n });\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n if (!c.req.raw.signal.aborted) {\n log.error({ err: error, mimeType: input.mimeType, fileName: input.fileName }, `Voice transcription failed: ${msg}`);\n }\n return c.json({ ok: false, error: { message: `Transcription failed: ${msg}` } }, 502);\n }\n };\n\n /** Multipart endpoint used by browser and future native clients. */\n authenticated.post('/api/voice/transcriptions', strictRateLimitMiddleware, async (c) => {\n const contentLength = Number(c.req.header('content-length') ?? 0);\n if (Number.isFinite(contentLength) && contentLength > MAX_AUDIO_BYTES + 1024 * 1024) {\n return c.json({ ok: false, error: { message: 'Audio data exceeds 25 MB limit' } }, 413);\n }\n let form: FormData;\n try {\n form = await c.req.formData();\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid multipart form data' } }, 400);\n }\n const audio = form.get('audio');\n if (!(audio instanceof Blob)) {\n return c.json({ ok: false, error: { message: 'Missing required file field: audio' } }, 400);\n }\n const languageValue = form.get('language');\n const language = typeof languageValue === 'string' && languageValue.trim()\n ? languageValue.trim()\n : undefined;\n const fileName = 'name' in audio && typeof audio.name === 'string' && audio.name.trim()\n ? audio.name.trim()\n : `audio-${Date.now()}`;\n return runTranscription(c, {\n audioBuffer: Buffer.from(await audio.arrayBuffer()),\n mimeType: audio.type || 'audio/webm',\n fileName,\n ...(language ? { language } : {}),\n });\n });\n\n /** Legacy JSON/base64 endpoint retained for mobile and external clients. */\n authenticated.post('/api/voice/transcribe', strictRateLimitMiddleware, async (c) => {\n let body: { audio?: unknown; mimeType?: unknown; language?: unknown; fileName?: unknown } = {};\n try {\n body = (await c.req.json()) as typeof body;\n } catch {\n return c.json({ ok: false, error: { message: 'Invalid JSON body' } }, 400);\n }\n if (typeof body.audio !== 'string' || !body.audio.trim()) {\n return c.json({ ok: false, error: { message: 'Missing required field: audio (base64)' } }, 400);\n }\n if (typeof body.mimeType !== 'string' || !body.mimeType.trim()) {\n return c.json({ ok: false, error: { message: 'Missing required field: mimeType' } }, 400);\n }\n const encoded = body.audio.replace(/\\s/g, '');\n if (encoded.length % 4 === 1 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) {\n return c.json({ ok: false, error: { message: 'Invalid base64 audio data' } }, 400);\n }\n const language = typeof body.language === 'string' && body.language.trim()\n ? body.language.trim()\n : undefined;\n const fileName = typeof body.fileName === 'string' && body.fileName.trim()\n ? body.fileName.trim()\n : `audio-${Date.now()}`;\n return runTranscription(c, {\n audioBuffer: Buffer.from(encoded, 'base64'),\n mimeType: body.mimeType.trim(),\n fileName,\n ...(language ? { language } : {}),\n });\n });\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"work-discovery.js","names":[],"sources":["../../../../../src/gateway/hono/routes/work-discovery.ts"],"sourcesContent":["import type { Hono } from 'hono';\n\nimport { getAgentDefaultModelRef } from '../../../config/schema.js';\nimport { isLocalModelBaseUrl } from '../../../providers/model-call.js';\nimport { resolveModel } from '../../../providers/index.js';\nimport { previewWorkDiscoveryRoot, WORK_DISCOVERY_SCAN_POLICY_VERSION } from '../../../work-discovery/probe.js';\nimport { WorkDiscoveryService } from '../../../work-discovery/service.js';\nimport type { WorkDiscoveryRecognitionDecision, WorkDiscoverySource } from '../../../work-discovery/types.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\nconst services = new WeakMap<AuthenticatedRouteDeps['service'], WorkDiscoveryService>();\n\nfunction workDiscoveryService(deps: AuthenticatedRouteDeps): WorkDiscoveryService {\n const existing = services.get(deps.service);\n if (existing) return existing;\n const service = new WorkDiscoveryService({\n projects: deps.service.projects,\n sessions: deps.service.sessionIndexInstance,\n getConfig: () => deps.service.currentConfig,\n emit: (type, payload) => deps.service.emit(type, payload),\n });\n services.set(deps.service, service);\n return service;\n}\n\nfunction stringField(body: unknown, field: string): string {\n if (!body || typeof body !== 'object') return '';\n const value = (body as Record<string, unknown>)[field];\n return typeof value === 'string' ? value.trim() : '';\n}\n\nexport function registerWorkDiscoveryRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const service = workDiscoveryService(deps);\n const limited = deps.strictRateLimitMiddleware;\n\n authenticated.get('/api/onboarding/work-discovery', (c) => c.json({\n enabled: service.isEnabled(),\n state: service.getOnboardingState(),\n }));\n\n authenticated.patch('/api/onboarding/work-discovery', async (c) => {\n const body = await c.req.json().catch(() => null);\n if (stringField(body, 'status') !== 'dismissed') {\n return c.json({ ok: false, error: 'Only dismissed status is accepted' }, 400);\n }\n return c.json({ ok: true, state: service.dismissOnboarding() });\n });\n\n authenticated.post('/api/work-discovery/preview', limited, async (c) => {\n if (!service.isEnabled()) return c.json({ ok: false, error: 'Work discovery is disabled' }, 404);\n const body = await c.req.json().catch(() => null);\n const rootPath = stringField(body, 'rootPath');\n if (!rootPath) return c.json({ ok: false, error: 'Missing rootPath' }, 400);\n try {\n const preview = await previewWorkDiscoveryRoot(rootPath);\n const modelRef = getAgentDefaultModelRef(deps.service.currentConfig);\n if (!modelRef) return c.json({ ok: false, error: 'No default model configured' }, 409);\n const model = resolveModel(modelRef);\n return c.json({\n ok: true,\n preview: {\n ...preview,\n exists: true,\n readable: true,\n provider: model.provider,\n remoteModel: !isLocalModelBaseUrl(model.baseUrl),\n policyVersion: WORK_DISCOVERY_SCAN_POLICY_VERSION,\n },\n });\n } catch (error) {\n return c.json({ ok: false, error: error instanceof Error ? error.message : String(error) }, 400);\n }\n });\n\n authenticated.post('/api/work-discovery/runs', limited, async (c) => {\n if (!service.isEnabled()) return c.json({ ok: false, error: 'Work discovery is disabled' }, 404);\n const body = await c.req.json().catch(() => null);\n const rootPath = stringField(body, 'rootPath');\n const idempotencyKey = stringField(body, 'idempotencyKey');\n const requestedSource = stringField(body, 'source');\n const source: WorkDiscoverySource = requestedSource === 'manual_selected_directory'\n ? 'manual_selected_directory'\n : 'onboarding_selected_directory';\n if (!rootPath || !idempotencyKey) {\n return c.json({ ok: false, error: 'Missing rootPath or idempotencyKey' }, 400);\n }\n try {\n const run = await service.startRun({ rootPath, source, idempotencyKey });\n return c.json({ ok: true, run }, 202);\n } catch (error) {\n return c.json({ ok: false, error: error instanceof Error ? error.message : String(error) }, 400);\n }\n });\n\n authenticated.get('/api/work-discovery/runs/:runId', (c) => {\n const run = service.getRun(c.req.param('runId'));\n return run ? c.json({ ok: true, run }) : c.json({ ok: false, error: 'Run not found' }, 404);\n });\n\n authenticated.post('/api/work-discovery/runs/:runId/cancel', (c) => {\n const run = service.cancelRun(c.req.param('runId'));\n return run ? c.json({ ok: true, run }) : c.json({ ok: false, error: 'Run not found' }, 404);\n });\n\n authenticated.post('/api/work-discovery/runs/:runId/retry', (c) => {\n const run = service.retryRun(c.req.param('runId'));\n return run ? c.json({ ok: true, run }) : c.json({ ok: false, error: 'Run not found' }, 404);\n });\n\n authenticated.post('/api/work-discovery/runs/:runId/recognition-feedback', async (c) => {\n const body = await c.req.json().catch(() => null);\n const decision = stringField(body, 'decision');\n if (!['confirmed', 'corrected', 'different_goal', 'dismissed'].includes(decision)) {\n return c.json({ ok: false, error: 'Invalid recognition decision' }, 400);\n }\n try {\n const run = await service.submitRecognitionFeedback({\n runId: c.req.param('runId'),\n decision: decision as WorkDiscoveryRecognitionDecision,\n ...(stringField(body, 'correctedIntent') ? { correctedIntent: stringField(body, 'correctedIntent') } : {}),\n });\n return run ? c.json({ ok: true, run }) : c.json({ ok: false, error: 'Completed run not found' }, 404);\n } catch (error) {\n return c.json({ ok: false, error: error instanceof Error ? error.message : String(error) }, 400);\n }\n });\n\n authenticated.post('/api/work-discovery/runs/:runId/suggestions/:suggestionId/select', (c) => {\n const run = service.selectSuggestion(c.req.param('runId'), c.req.param('suggestionId'));\n return run ? c.json({ ok: true }) : c.json({ ok: false, error: 'Suggestion not found' }, 404);\n });\n}\n"],"mappings":"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"}