@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":"deadline.js","names":[],"sources":["../../../../src/media-shared/http/deadline.ts"],"sourcesContent":["/**\n * Deadline / timeout aggregation for provider HTTP calls.\n *\n * A \"deadline\" combines:\n * - per-call timeout (caller-supplied, ms)\n * - provider-default timeout (cfg.providers.<id>.request.timeoutMs, ms)\n * - upstream AbortSignal (e.g. agent cancellation)\n *\n * The effective timeout is the **smaller** of the per-call value and the\n * provider default; abort is propagated from upstream.\n */\n\nexport interface DeadlineInput {\n /** Per-call timeout (ms). Wins when smaller than {@link providerDefaultMs}. */\n timeoutMs?: number;\n /** Provider-default timeout (ms), e.g. from config. */\n providerDefaultMs?: number;\n /** Upstream cancellation. */\n signal?: AbortSignal;\n}\n\nexport interface ResolvedDeadline {\n /** Final timeout in ms, or undefined when neither side specified one. */\n timeoutMs: number | undefined;\n /** Combined AbortSignal that fires on timeout OR upstream abort. */\n signal: AbortSignal;\n /** Manual cleanup (clear timer, detach listener). Always safe to call. */\n cleanup: () => void;\n}\n\n/**\n * Pick the smallest *positive* timeout among the inputs.\n *\n * - Negative / zero / non-finite values are ignored.\n * - Returns undefined when no valid timeout is supplied.\n */\n/**\n * Effective positive timeout for outbound provider calls, or `fallbackMs` when\n * neither per-call nor provider-default timeouts are set.\n */\nexport function pickTimeoutMsOrFallback(\n timeoutMs: number | undefined,\n providerDefaultMs: number | undefined,\n fallbackMs: number,\n): number {\n return pickEffectiveTimeoutMs({ timeoutMs, providerDefaultMs }) ?? fallbackMs;\n}\n\nexport function pickEffectiveTimeoutMs(input: DeadlineInput): number | undefined {\n const candidates: number[] = [];\n if (typeof input.timeoutMs === 'number' && Number.isFinite(input.timeoutMs) && input.timeoutMs > 0) {\n candidates.push(input.timeoutMs);\n }\n if (\n typeof input.providerDefaultMs === 'number' &&\n Number.isFinite(input.providerDefaultMs) &&\n input.providerDefaultMs > 0\n ) {\n candidates.push(input.providerDefaultMs);\n }\n if (candidates.length === 0) return undefined;\n return Math.min(...candidates);\n}\n\n/**\n * Build a combined deadline.\n *\n * Always returns a fresh {@link AbortController} so that callers can pass\n * `signal` directly to `fetch()` without leaking listeners on long-lived\n * upstream signals.\n */\nexport function resolveDeadline(input: DeadlineInput): ResolvedDeadline {\n const controller = new AbortController();\n const timeoutMs = pickEffectiveTimeoutMs(input);\n const cleanups: Array<() => void> = [];\n\n if (timeoutMs !== undefined) {\n const timer = setTimeout(() => {\n controller.abort(new TimeoutAbortError(timeoutMs));\n }, timeoutMs);\n // Allow the Node process to exit even if a deadline is pending.\n if (typeof (timer as unknown as { unref?: () => void }).unref === 'function') {\n (timer as unknown as { unref: () => void }).unref();\n }\n cleanups.push(() => clearTimeout(timer));\n }\n\n const upstream = input.signal;\n if (upstream) {\n if (upstream.aborted) {\n controller.abort(upstream.reason);\n } else {\n const onAbort = () => controller.abort(upstream.reason);\n upstream.addEventListener('abort', onAbort, { once: true });\n cleanups.push(() => upstream.removeEventListener('abort', onAbort));\n }\n }\n\n return {\n timeoutMs,\n signal: controller.signal,\n cleanup: () => {\n for (const fn of cleanups) {\n try {\n fn();\n } catch {\n /* ignore */\n }\n }\n },\n };\n}\n\n/** Concrete error class so callers can distinguish deadline-aborts from upstream-aborts. */\nexport class TimeoutAbortError extends Error {\n readonly timeoutMs: number;\n constructor(timeoutMs: number) {\n super(`Provider HTTP call timed out after ${timeoutMs}ms`);\n this.name = 'TimeoutAbortError';\n this.timeoutMs = timeoutMs;\n }\n}\n\nexport function isTimeoutAbortError(e: unknown): e is TimeoutAbortError {\n return e instanceof TimeoutAbortError;\n}\n"],"mappings":";;;;;;;;;;;AAwCA,SAAgB,wBACd,WACA,mBACA,YACQ;AACR,QAAO,uBAAuB;EAAE;EAAW;EAAmB,CAAC,IAAI;;AAGrE,SAAgB,uBAAuB,OAA0C;CAC/E,MAAM,aAAuB,EAAE;AAC/B,KAAI,OAAO,MAAM,cAAc,YAAY,OAAO,SAAS,MAAM,UAAU,IAAI,MAAM,YAAY,EAC/F,YAAW,KAAK,MAAM,UAAU;AAElC,KACE,OAAO,MAAM,sBAAsB,YACnC,OAAO,SAAS,MAAM,kBAAkB,IACxC,MAAM,oBAAoB,EAE1B,YAAW,KAAK,MAAM,kBAAkB;AAE1C,KAAI,WAAW,WAAW,EAAG,QAAO,KAAA;AACpC,QAAO,KAAK,IAAI,GAAG,WAAW;;;;;;;;;AAUhC,SAAgB,gBAAgB,OAAwC;CACtE,MAAM,aAAa,IAAI,iBAAiB;CACxC,MAAM,YAAY,uBAAuB,MAAM;CAC/C,MAAM,WAA8B,EAAE;AAEtC,KAAI,cAAc,KAAA,GAAW;EAC3B,MAAM,QAAQ,iBAAiB;AAC7B,cAAW,MAAM,IAAI,kBAAkB,UAAU,CAAC;KACjD,UAAU;AAEb,MAAI,OAAQ,MAA4C,UAAU,WAC/D,OAA2C,OAAO;AAErD,WAAS,WAAW,aAAa,MAAM,CAAC;;CAG1C,MAAM,WAAW,MAAM;AACvB,KAAI,SACF,KAAI,SAAS,QACX,YAAW,MAAM,SAAS,OAAO;MAC5B;EACL,MAAM,gBAAgB,WAAW,MAAM,SAAS,OAAO;AACvD,WAAS,iBAAiB,SAAS,SAAS,EAAE,MAAM,MAAM,CAAC;AAC3D,WAAS,WAAW,SAAS,oBAAoB,SAAS,QAAQ,CAAC;;AAIvE,QAAO;EACL;EACA,QAAQ,WAAW;EACnB,eAAe;AACb,QAAK,MAAM,MAAM,SACf,KAAI;AACF,QAAI;WACE;;EAKb;;;AAIH,IAAa,oBAAb,cAAuC,MAAM;CAC3C;CACA,YAAY,WAAmB;AAC7B,QAAM,sCAAsC,UAAU,IAAI;AAC1D,OAAK,OAAO;AACZ,OAAK,YAAY;;;AAIrB,SAAgB,oBAAoB,GAAoC;AACtE,QAAO,aAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"private-network.js","names":[],"sources":["../../../../src/media-shared/http/private-network.ts"],"sourcesContent":["/**\n * SSRF / private-network protection for provider HTTP calls.\n *\n * Provider URLs are mostly user-controllable (cfg.providers.<id>.baseUrl,\n * imageBaseUrl, etc.). Without a guard a malicious config could make xopc\n * fetch internal services (169.254.x.x metadata, 127.0.0.1, RFC1918, …).\n *\n * Policy:\n * - default: allow only http(s) + non-private hosts\n * - dev: allow loopback when XOPC_PROVIDER_HTTP_ALLOW_LOOPBACK=1\n * - test: same as dev; vitest sets NODE_ENV=test\n */\n\nimport { isIP } from 'node:net';\n\nimport type { SsrfGuardOptions } from './ssrf-guard.js';\n\nexport interface PrivateNetworkPolicy {\n /** Permit 127.0.0.0/8, ::1, localhost. Default false. */\n allowLoopback?: boolean;\n /** Permit RFC1918 / link-local / unique-local. Default false. */\n allowPrivate?: boolean;\n /** Extra explicit hostname allowlist (exact match). */\n allowHosts?: ReadonlyArray<string>;\n}\n\nexport class BlockedPrivateNetworkError extends Error {\n readonly url: string;\n readonly host: string;\n constructor(url: string, host: string, reason: string) {\n super(`Provider HTTP call blocked: ${reason} (host=${host}, url=${url})`);\n this.name = 'BlockedPrivateNetworkError';\n this.url = url;\n this.host = host;\n }\n}\n\n/** Map URL-layer private-network policy into SSRF guard options for `fetchWithTimeoutGuarded`. */\nexport function privateNetworkPolicyToSsrfGuardOptions(policy?: PrivateNetworkPolicy): SsrfGuardOptions {\n const p = policy === undefined ? defaultPolicy() : policy;\n return {\n allowPrivateNetwork: Boolean(p.allowPrivate || p.allowLoopback),\n hostnameAllowlist: p.allowHosts,\n };\n}\n\nexport function defaultPolicy(): PrivateNetworkPolicy {\n const env = process.env;\n const allowLoopback =\n env.XOPC_PROVIDER_HTTP_ALLOW_LOOPBACK === '1' ||\n env.XOPC_PROVIDER_HTTP_ALLOW_LOOPBACK === 'true' ||\n env.NODE_ENV === 'test';\n const allowPrivate =\n env.XOPC_PROVIDER_HTTP_ALLOW_PRIVATE === '1' || env.XOPC_PROVIDER_HTTP_ALLOW_PRIVATE === 'true';\n return { allowLoopback, allowPrivate };\n}\n\n/**\n * Throws {@link BlockedPrivateNetworkError} when the URL targets a private host\n * not permitted by the policy. Returns silently otherwise.\n *\n * Note: This is a best-effort guard at the URL layer. A truly hostile host\n * could still resolve a public name to a private IP via DNS rebinding; for\n * production deployments behind untrusted user input, also enforce egress\n * firewall rules.\n */\nexport function assertNotPrivateNetwork(rawUrl: string, policy: PrivateNetworkPolicy = defaultPolicy()): void {\n let url: URL;\n try {\n url = new URL(rawUrl);\n } catch {\n throw new BlockedPrivateNetworkError(rawUrl, '', 'invalid URL');\n }\n\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n throw new BlockedPrivateNetworkError(rawUrl, url.hostname, `unsupported protocol \"${url.protocol}\"`);\n }\n\n const host = url.hostname.toLowerCase();\n if (policy.allowHosts?.includes(host)) return;\n\n const cls = classifyHost(host);\n switch (cls) {\n case 'public':\n return;\n case 'loopback':\n if (policy.allowLoopback) return;\n throw new BlockedPrivateNetworkError(rawUrl, host, 'loopback address');\n case 'private':\n if (policy.allowPrivate) return;\n throw new BlockedPrivateNetworkError(rawUrl, host, 'private address');\n case 'link-local':\n if (policy.allowPrivate) return;\n throw new BlockedPrivateNetworkError(rawUrl, host, 'link-local address');\n case 'invalid':\n throw new BlockedPrivateNetworkError(rawUrl, host, 'invalid host');\n }\n}\n\nexport type HostClass = 'public' | 'loopback' | 'private' | 'link-local' | 'invalid';\n\n/** Classify a hostname/IP literal. Hostnames are conservatively treated as `public`. */\nexport function classifyHost(host: string): HostClass {\n if (!host) return 'invalid';\n const lower = host.toLowerCase();\n if (lower === 'localhost' || lower.endsWith('.localhost')) return 'loopback';\n\n const ipKind = isIP(lower);\n if (ipKind === 0) {\n // Hostname; cannot cheaply resolve here, treat as public.\n return 'public';\n }\n if (ipKind === 4) return classifyIPv4(lower);\n return classifyIPv6(lower);\n}\n\nfunction classifyIPv4(ip: string): HostClass {\n const parts = ip.split('.').map((s) => Number.parseInt(s, 10));\n if (parts.length !== 4 || parts.some((n) => !Number.isInteger(n) || n < 0 || n > 255)) {\n return 'invalid';\n }\n const [a, b] = parts;\n if (a === 127) return 'loopback';\n if (a === 10) return 'private';\n if (a === 172 && b >= 16 && b <= 31) return 'private';\n if (a === 192 && b === 168) return 'private';\n if (a === 169 && b === 254) return 'link-local';\n if (a === 0) return 'invalid';\n if (a === 100 && b >= 64 && b <= 127) return 'private'; // CGNAT 100.64.0.0/10\n return 'public';\n}\n\nfunction classifyIPv6(ip: string): HostClass {\n const lower = ip.toLowerCase();\n if (lower === '::1') return 'loopback';\n if (lower === '::') return 'invalid';\n if (lower.startsWith('fe80:')) return 'link-local';\n if (lower.startsWith('fc') || lower.startsWith('fd')) return 'private'; // unique-local fc00::/7\n if (lower.startsWith('::ffff:')) {\n // IPv4-mapped\n const v4 = lower.slice('::ffff:'.length);\n if (isIP(v4) === 4) return classifyIPv4(v4);\n }\n return 'public';\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-http-errors.js","names":[],"sources":["../../../../src/media-shared/http/provider-http-errors.ts"],"sourcesContent":["/**\n * Provider HTTP error formatting helpers.\n *\n * Ported from openclaw/src/agents/provider-http-errors.ts (commit baseline 2026-05-08).\n *\n * DECISION (per docs/voice-rearchitecture.md §6):\n * - Body read is hard-capped at 16 KiB to avoid memory blowups on misbehaving\n * providers that return huge HTML 5xx pages.\n * - Both `error.message` (OpenAI shape) and `error.detail` (DashScope shape) are\n * normalized into a single human-readable string for logs.\n * - Request id is taken from `x-request-id` first, then `request-id` (Alibaba uses\n * the latter on some endpoints).\n */\n\nconst DEFAULT_BODY_READ_LIMIT_BYTES = 16 * 1024;\nconst DEFAULT_DETAIL_TRUNCATION_LIMIT = 220;\n\nfunction asObject(value: unknown): Record<string, unknown> | undefined {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction trimToUndefined(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nexport function truncateErrorDetail(detail: string, limit = DEFAULT_DETAIL_TRUNCATION_LIMIT): string {\n return detail.length <= limit ? detail : `${detail.slice(0, limit - 1)}…`;\n}\n\nexport async function readResponseTextLimited(\n response: Response,\n limitBytes: number = DEFAULT_BODY_READ_LIMIT_BYTES,\n): Promise<string> {\n if (limitBytes <= 0) {\n return '';\n }\n const reader = response.body?.getReader();\n if (!reader) {\n return '';\n }\n\n const decoder = new TextDecoder();\n let total = 0;\n let text = '';\n let reachedLimit = false;\n\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n break;\n }\n if (!value || value.byteLength === 0) {\n continue;\n }\n const remaining = limitBytes - total;\n if (remaining <= 0) {\n reachedLimit = true;\n break;\n }\n const chunk = value.byteLength > remaining ? value.subarray(0, remaining) : value;\n total += chunk.byteLength;\n text += decoder.decode(chunk, { stream: true });\n if (total >= limitBytes) {\n reachedLimit = true;\n break;\n }\n }\n text += decoder.decode();\n } finally {\n if (reachedLimit) {\n await reader.cancel().catch(() => {});\n }\n }\n\n return text;\n}\n\n/** Best-effort vendor `code` + human message from a JSON error body (image providers, failover). */\nexport function extractVendorErrorFields(body: string): { code?: string; message?: string } {\n if (!body) return {};\n let parsed: unknown;\n try {\n parsed = JSON.parse(body);\n } catch {\n return {};\n }\n if (!parsed || typeof parsed !== 'object') return {};\n const o = parsed as Record<string, unknown>;\n\n if (o.error && typeof o.error === 'object') {\n const e = o.error as Record<string, unknown>;\n const message = typeof e.message === 'string' ? e.message : undefined;\n const code = typeof e.code === 'string' ? e.code : typeof e.type === 'string' ? e.type : undefined;\n if (message || code) return { message, code };\n }\n\n if (typeof o.code === 'string' && typeof o.message === 'string') {\n return { code: o.code, message: o.message };\n }\n\n if (o.base_resp && typeof o.base_resp === 'object') {\n const br = o.base_resp as Record<string, unknown>;\n const sc = br.status_code;\n const sm = br.status_msg;\n if (typeof sm === 'string') {\n return {\n code: typeof sc === 'number' || typeof sc === 'string' ? String(sc) : undefined,\n message: sm,\n };\n }\n }\n\n if (typeof o.message === 'string') return { message: o.message };\n\n return {};\n}\n\nexport function formatProviderErrorPayload(payload: unknown): string | undefined {\n const root = asObject(payload);\n const detailObject = asObject(root?.detail);\n const subject = asObject(root?.error) ?? detailObject ?? root;\n if (!subject) {\n return undefined;\n }\n const message =\n trimToUndefined(subject.message) ??\n trimToUndefined(subject.detail) ??\n trimToUndefined(root?.message) ??\n trimToUndefined(root?.error) ??\n trimToUndefined(root?.detail);\n const type = trimToUndefined(subject.type);\n const code = trimToUndefined(subject.code) ?? trimToUndefined(subject.status);\n const metadata = [type ? `type=${type}` : undefined, code ? `code=${code}` : undefined]\n .filter((value): value is string => Boolean(value))\n .join(', ');\n if (message && metadata) {\n return `${truncateErrorDetail(message)} [${metadata}]`;\n }\n if (message) {\n return truncateErrorDetail(message);\n }\n if (metadata) {\n return `[${metadata}]`;\n }\n return undefined;\n}\n\nexport async function extractProviderErrorDetail(response: Response): Promise<string | undefined> {\n const rawBody = trimToUndefined(await readResponseTextLimited(response));\n if (!rawBody) {\n return undefined;\n }\n try {\n return formatProviderErrorPayload(JSON.parse(rawBody)) ?? truncateErrorDetail(rawBody);\n } catch {\n return truncateErrorDetail(rawBody);\n }\n}\n\nexport function extractProviderRequestId(response: Response): string | undefined {\n return (\n trimToUndefined(response.headers.get('x-request-id')) ??\n trimToUndefined(response.headers.get('request-id'))\n );\n}\n\nexport interface ProviderHttpErrorParts {\n label: string;\n status: number;\n detail?: string;\n requestId?: string;\n /** Prefix in front of the status code, e.g. \"HTTP \" for non-provider transports. */\n statusPrefix?: string;\n /** Vendor error code when JSON body could be parsed (OpenAI, DashScope, MiniMax, …). */\n code?: string;\n /** Request URL for diagnostics (image-generation assertOk path). */\n url?: string;\n /** Raw body preview for non-JSON failures (image-generation assertOk path). */\n bodyPreview?: string;\n /**\n * When set, used as {@link Error.message} verbatim instead of\n * {@link formatProviderHttpErrorMessage}.\n */\n messageOverride?: string;\n}\n\nexport function formatProviderHttpErrorMessage(parts: ProviderHttpErrorParts): string {\n if (parts.messageOverride) {\n return parts.messageOverride;\n }\n const { label, status, detail, requestId, statusPrefix = '', code } = parts;\n const codeSuffix = code ? ` [code=${code}]` : '';\n return (\n `${label} (${statusPrefix}${status})` +\n (detail ? `: ${detail}` : '') +\n codeSuffix +\n (requestId ? ` [request_id=${requestId}]` : '')\n );\n}\n\n/**\n * ProviderHttpError carries the parsed status / detail / requestId so callers\n * (e.g. STT runner, TTS fallback chain) can classify failures without re-parsing.\n */\nexport class ProviderHttpError extends Error {\n readonly status: number;\n readonly detail?: string;\n readonly requestId?: string;\n readonly label: string;\n readonly code?: string;\n readonly url?: string;\n readonly bodyPreview?: string;\n\n constructor(parts: ProviderHttpErrorParts) {\n super(formatProviderHttpErrorMessage(parts));\n this.name = 'ProviderHttpError';\n this.status = parts.status;\n this.detail = parts.detail;\n this.requestId = parts.requestId;\n this.label = parts.label;\n this.code = parts.code;\n this.url = parts.url;\n this.bodyPreview = parts.bodyPreview;\n }\n}\n\nexport async function createProviderHttpError(\n response: Response,\n label: string,\n options?: { statusPrefix?: string },\n): Promise<ProviderHttpError> {\n const rawBody = trimToUndefined(await readResponseTextLimited(response));\n const vendor = rawBody ? extractVendorErrorFields(rawBody) : {};\n let detail: string | undefined;\n if (rawBody) {\n try {\n detail = formatProviderErrorPayload(JSON.parse(rawBody)) ?? truncateErrorDetail(rawBody);\n } catch {\n detail = truncateErrorDetail(rawBody);\n }\n }\n const requestId = extractProviderRequestId(response);\n return new ProviderHttpError({\n label,\n status: response.status,\n detail,\n requestId,\n statusPrefix: options?.statusPrefix,\n code: vendor.code,\n });\n}\n\nexport async function assertOkOrThrowProviderError(response: Response, label: string): Promise<void> {\n if (response.ok) {\n return;\n }\n throw await createProviderHttpError(response, label);\n}\n\nexport async function assertOkOrThrowHttpError(response: Response, label: string): Promise<void> {\n if (response.ok) {\n return;\n }\n throw await createProviderHttpError(response, label, { statusPrefix: 'HTTP ' });\n}\n\n/**\n * Throws {@link ProviderHttpError} when the response is not OK; otherwise returns\n * the response. Body is consumed on failure (do not re-read).\n *\n * Used by bundled image-generation HTTP helpers (vendor code extraction + body preview).\n */\nexport async function assertOk(res: Response, contextUrl?: string): Promise<Response> {\n if (res.ok) return res;\n const url = contextUrl ?? res.url;\n const bodyPreview = trimToUndefined(await readResponseTextLimited(res));\n const { code, message } = extractVendorErrorFields(bodyPreview ?? '');\n const finalMessage = `Provider HTTP ${res.status} ${res.statusText}: ${\n message || bodyPreview || '(empty body)'\n }`;\n throw new ProviderHttpError({\n label: url,\n status: res.status,\n code,\n url,\n bodyPreview,\n detail: message,\n requestId: extractProviderRequestId(res),\n messageOverride: finalMessage,\n });\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-http.js","names":["setTimeoutPromise"],"sources":["../../../../src/media-shared/http/provider-http.ts"],"sourcesContent":["/**\n * Shared provider HTTP client (voice, STT/TTS, image-generation extensions).\n *\n * Wraps `globalThis.fetch` with SSRF guard (`assertSafeUrl`), timeout + signal\n * merge, and standardized errors via `assertOkOrThrowProviderError`.\n */\n\nimport { setTimeout as setTimeoutPromise } from 'node:timers/promises';\n\nimport { assertOkOrThrowProviderError } from './provider-http-errors.js';\nimport { assertSafeUrl, type SsrfGuardOptions } from './ssrf-guard.js';\n\nfunction mergeHeadersRecord(\n input?: Record<string, string> | Headers,\n): Record<string, string> {\n const out: Record<string, string> = {};\n if (!input) {\n return out;\n }\n if (input instanceof Headers) {\n input.forEach((value, key) => {\n out[key.toLowerCase()] = value;\n });\n return out;\n }\n for (const [k, v] of Object.entries(input)) {\n if (typeof v === 'string') {\n out[k.toLowerCase()] = v;\n }\n }\n return out;\n}\n\nexport interface ProviderHttpRequestConfig extends SsrfGuardOptions {\n /** Hard timeout in milliseconds. Required: callers must always specify. */\n timeoutMs: number;\n /** Extra abort signal (e.g. from caller cancellation). Merged with timeout signal. */\n signal?: AbortSignal;\n /**\n * Label used in thrown ProviderHttpError messages. Should look like\n * \"OpenAI TTS\", \"dashscope\", or \"Alibaba paraformer-v2 transcription\".\n */\n label: string;\n}\n\nexport interface FetchWithGuardOptions extends ProviderHttpRequestConfig {\n /** Pre-built RequestInit; URL is the first positional argument. */\n init?: RequestInit;\n}\n\n/**\n * fetch + SSRF guard + timeout. Returns the raw Response (caller decides whether\n * to assertOk / parse / stream). Throws SsrfBlockedError on guard failure.\n */\nexport async function fetchWithTimeoutGuarded(\n url: string | URL,\n options: FetchWithGuardOptions,\n): Promise<Response> {\n await assertSafeUrl(url, options);\n\n const controller = new AbortController();\n const timeoutHandle = setTimeout(() => controller.abort(), options.timeoutMs);\n\n const callerSignal = options.signal;\n if (callerSignal) {\n if (callerSignal.aborted) {\n controller.abort(callerSignal.reason);\n } else {\n callerSignal.addEventListener('abort', () => controller.abort(callerSignal.reason), {\n once: true,\n });\n }\n }\n\n try {\n return await fetch(url, { ...options.init, signal: controller.signal });\n } finally {\n clearTimeout(timeoutHandle);\n }\n}\n\nexport interface PostJsonRequestOptions extends ProviderHttpRequestConfig {\n body: unknown;\n headers?: Record<string, string> | Headers;\n}\n\nexport async function postJsonRequest(\n url: string | URL,\n options: PostJsonRequestOptions,\n): Promise<Response> {\n const headers = mergeHeadersRecord(options.headers);\n if (!headers['content-type']) {\n headers['content-type'] = 'application/json';\n }\n if (!headers.accept) {\n headers.accept = 'application/json';\n }\n const response = await fetchWithTimeoutGuarded(url, {\n ...options,\n init: {\n method: 'POST',\n headers,\n body: JSON.stringify(options.body),\n },\n });\n await assertOkOrThrowProviderError(response, options.label);\n return response;\n}\n\nexport interface PostMultipartRequestOptions extends ProviderHttpRequestConfig {\n body: FormData;\n headers?: Record<string, string> | Headers;\n}\n\nexport async function postMultipartRequest(\n url: string | URL,\n options: PostMultipartRequestOptions,\n): Promise<Response> {\n const headers = mergeHeadersRecord(options.headers);\n const response = await fetchWithTimeoutGuarded(url, {\n ...options,\n init: {\n method: 'POST',\n headers,\n body: options.body,\n },\n });\n await assertOkOrThrowProviderError(response, options.label);\n return response;\n}\n\nexport interface GetJsonRequestOptions extends ProviderHttpRequestConfig {\n headers?: Record<string, string> | Headers;\n}\n\nexport async function getJsonRequest(\n url: string | URL,\n options: GetJsonRequestOptions,\n): Promise<Response> {\n const headers = mergeHeadersRecord(options.headers);\n if (!headers.accept) {\n headers.accept = 'application/json';\n }\n const response = await fetchWithTimeoutGuarded(url, {\n ...options,\n init: { method: 'GET', headers },\n });\n await assertOkOrThrowProviderError(response, options.label);\n return response;\n}\n\n/**\n * Normalize a base URL: trim trailing slash, force http(s) scheme.\n */\nexport function normalizeBaseUrl(baseUrl: string): string {\n const trimmed = baseUrl.trim().replace(/\\/+$/, '');\n const parsed = new URL(trimmed);\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new Error(`Provider base URL must be http(s): \"${baseUrl}\"`);\n }\n return trimmed;\n}\n\nexport interface ProviderOperationDeadline {\n deadlineMs: number;\n assertNotExpired(): void;\n remainingMs(): number;\n}\n\nexport function createProviderOperationDeadline(timeoutMs: number): ProviderOperationDeadline {\n const deadlineMs = Date.now() + timeoutMs;\n return {\n deadlineMs,\n assertNotExpired() {\n if (Date.now() > deadlineMs) {\n throw new Error(`Provider operation exceeded ${timeoutMs}ms timeout`);\n }\n },\n remainingMs() {\n return Math.max(0, deadlineMs - Date.now());\n },\n };\n}\n\nexport async function waitProviderOperationPollInterval(\n intervalMs: number,\n signal?: AbortSignal,\n): Promise<void> {\n if (intervalMs <= 0) {\n return;\n }\n await setTimeoutPromise(intervalMs, undefined, { signal });\n}\n"],"mappings":";;;;;;;;;;AAYA,SAAS,mBACP,OACwB;CACxB,MAAM,MAA8B,EAAE;AACtC,KAAI,CAAC,MACH,QAAO;AAET,KAAI,iBAAiB,SAAS;AAC5B,QAAM,SAAS,OAAO,QAAQ;AAC5B,OAAI,IAAI,aAAa,IAAI;IACzB;AACF,SAAO;;AAET,MAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,MAAM,CACxC,KAAI,OAAO,MAAM,SACf,KAAI,EAAE,aAAa,IAAI;AAG3B,QAAO;;;;;;AAwBT,eAAsB,wBACpB,KACA,SACmB;AACnB,OAAM,cAAc,KAAK,QAAQ;CAEjC,MAAM,aAAa,IAAI,iBAAiB;CACxC,MAAM,gBAAgB,iBAAiB,WAAW,OAAO,EAAE,QAAQ,UAAU;CAE7E,MAAM,eAAe,QAAQ;AAC7B,KAAI,aACF,KAAI,aAAa,QACf,YAAW,MAAM,aAAa,OAAO;KAErC,cAAa,iBAAiB,eAAe,WAAW,MAAM,aAAa,OAAO,EAAE,EAClF,MAAM,MACP,CAAC;AAIN,KAAI;AACF,SAAO,MAAM,MAAM,KAAK;GAAE,GAAG,QAAQ;GAAM,QAAQ,WAAW;GAAQ,CAAC;WAC/D;AACR,eAAa,cAAc;;;AAS/B,eAAsB,gBACpB,KACA,SACmB;CACnB,MAAM,UAAU,mBAAmB,QAAQ,QAAQ;AACnD,KAAI,CAAC,QAAQ,gBACX,SAAQ,kBAAkB;AAE5B,KAAI,CAAC,QAAQ,OACX,SAAQ,SAAS;CAEnB,MAAM,WAAW,MAAM,wBAAwB,KAAK;EAClD,GAAG;EACH,MAAM;GACJ,QAAQ;GACR;GACA,MAAM,KAAK,UAAU,QAAQ,KAAK;GACnC;EACF,CAAC;AACF,OAAM,6BAA6B,UAAU,QAAQ,MAAM;AAC3D,QAAO;;AAQT,eAAsB,qBACpB,KACA,SACmB;CACnB,MAAM,UAAU,mBAAmB,QAAQ,QAAQ;CACnD,MAAM,WAAW,MAAM,wBAAwB,KAAK;EAClD,GAAG;EACH,MAAM;GACJ,QAAQ;GACR;GACA,MAAM,QAAQ;GACf;EACF,CAAC;AACF,OAAM,6BAA6B,UAAU,QAAQ,MAAM;AAC3D,QAAO;;AAOT,eAAsB,eACpB,KACA,SACmB;CACnB,MAAM,UAAU,mBAAmB,QAAQ,QAAQ;AACnD,KAAI,CAAC,QAAQ,OACX,SAAQ,SAAS;CAEnB,MAAM,WAAW,MAAM,wBAAwB,KAAK;EAClD,GAAG;EACH,MAAM;GAAE,QAAQ;GAAO;GAAS;EACjC,CAAC;AACF,OAAM,6BAA6B,UAAU,QAAQ,MAAM;AAC3D,QAAO;;;;;AAMT,SAAgB,iBAAiB,SAAyB;CACxD,MAAM,UAAU,QAAQ,MAAM,CAAC,QAAQ,QAAQ,GAAG;CAClD,MAAM,SAAS,IAAI,IAAI,QAAQ;AAC/B,KAAI,OAAO,aAAa,WAAW,OAAO,aAAa,SACrD,OAAM,IAAI,MAAM,uCAAuC,QAAQ,GAAG;AAEpE,QAAO;;AAST,SAAgB,gCAAgC,WAA8C;CAC5F,MAAM,aAAa,KAAK,KAAK,GAAG;AAChC,QAAO;EACL;EACA,mBAAmB;AACjB,OAAI,KAAK,KAAK,GAAG,WACf,OAAM,IAAI,MAAM,+BAA+B,UAAU,YAAY;;EAGzE,cAAc;AACZ,UAAO,KAAK,IAAI,GAAG,aAAa,KAAK,KAAK,CAAC;;EAE9C;;AAGH,eAAsB,kCACpB,YACA,QACe;AACf,KAAI,cAAc,EAChB;AAEF,OAAMA,aAAkB,YAAY,KAAA,GAAW,EAAE,QAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-provider-http-request-config.js","names":[],"sources":["../../../../src/media-shared/http/resolve-provider-http-request-config.ts"],"sourcesContent":["/**\n * Resolve per-provider HTTP defaults from {@link Config}.\n *\n * Lookup order for `request.timeoutMs` and `request.headers`:\n * 1. cfg.providers.<id>.request.{timeoutMs|headers} (typed schema field — not yet present in Step 1)\n * 2. cfg.providers.<id>.{timeoutMs|headers} (loose / future)\n * 3. fallbacks supplied by caller\n *\n * In Step 1 the Zod schema does not yet declare these fields. We still parse\n * defensively from `unknown` so this module is forward-compatible: when Step 4\n * adds the schema fields, no consumer changes are needed.\n */\n\nimport type { Config } from '../../config/schema.js';\n\nexport interface ResolvedProviderHttpDefaults {\n /** Default per-call timeout in ms (provider-level), or undefined. */\n timeoutMs?: number;\n /** Default headers merged into every request. Lower-case keys recommended. */\n headers: Record<string, string>;\n}\n\nexport interface ResolveProviderHttpRequestConfigOptions {\n /** Provider id, e.g. \"openai\", \"dashscope\", \"minimax\". */\n providerId: string;\n /** Active xopc config (optional). */\n cfg?: Config;\n /** Built-in defaults (e.g. 60_000ms). Used only if config provides nothing. */\n fallbackTimeoutMs?: number;\n /** Built-in headers (e.g. User-Agent). Caller request headers still win. */\n fallbackHeaders?: Record<string, string>;\n}\n\nexport function resolveProviderHttpRequestConfig(\n options: ResolveProviderHttpRequestConfigOptions,\n): ResolvedProviderHttpDefaults {\n const provider = readProviderEntry(options.cfg, options.providerId);\n const request = readRequestEntry(provider);\n\n const timeoutMs =\n pickPositiveInt(request?.timeoutMs) ??\n pickPositiveInt(provider?.timeoutMs) ??\n pickPositiveInt(options.fallbackTimeoutMs);\n\n const headers: Record<string, string> = {};\n for (const src of [options.fallbackHeaders, provider?.headers, request?.headers]) {\n if (!src) continue;\n for (const [k, v] of Object.entries(src)) {\n if (typeof v === 'string' && v.length > 0) {\n headers[k] = v;\n }\n }\n }\n\n return { timeoutMs, headers };\n}\n\nfunction readProviderEntry(cfg: Config | undefined, id: string): LooseProviderEntry | undefined {\n // `cfg.providers` is not declared on the Zod schema yet; read defensively.\n const providers = (cfg as unknown as { providers?: Record<string, unknown> } | undefined)?.providers;\n if (!providers || typeof providers !== 'object') return undefined;\n const entry = (providers as Record<string, unknown>)[id];\n if (!entry || typeof entry !== 'object') return undefined;\n return entry as LooseProviderEntry;\n}\n\nfunction readRequestEntry(provider: LooseProviderEntry | undefined): LooseRequestEntry | undefined {\n if (!provider) return undefined;\n const request = provider.request;\n if (!request || typeof request !== 'object') return undefined;\n return request as LooseRequestEntry;\n}\n\nfunction pickPositiveInt(v: unknown): number | undefined {\n if (typeof v !== 'number' || !Number.isFinite(v) || v <= 0) return undefined;\n return Math.floor(v);\n}\n\ninterface LooseProviderEntry {\n apiKey?: unknown;\n baseUrl?: unknown;\n region?: unknown;\n headers?: Record<string, unknown>;\n timeoutMs?: unknown;\n request?: unknown;\n [k: string]: unknown;\n}\n\ninterface LooseRequestEntry {\n timeoutMs?: unknown;\n headers?: Record<string, unknown>;\n}\n"],"mappings":";AAiCA,SAAgB,iCACd,SAC8B;CAC9B,MAAM,WAAW,kBAAkB,QAAQ,KAAK,QAAQ,WAAW;CACnE,MAAM,UAAU,iBAAiB,SAAS;CAE1C,MAAM,YACJ,gBAAgB,SAAS,UAAU,IACnC,gBAAgB,UAAU,UAAU,IACpC,gBAAgB,QAAQ,kBAAkB;CAE5C,MAAM,UAAkC,EAAE;AAC1C,MAAK,MAAM,OAAO;EAAC,QAAQ;EAAiB,UAAU;EAAS,SAAS;EAAQ,EAAE;AAChF,MAAI,CAAC,IAAK;AACV,OAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,IAAI,CACtC,KAAI,OAAO,MAAM,YAAY,EAAE,SAAS,EACtC,SAAQ,KAAK;;AAKnB,QAAO;EAAE;EAAW;EAAS;;AAG/B,SAAS,kBAAkB,KAAyB,IAA4C;CAE9F,MAAM,YAAa,KAAwE;AAC3F,KAAI,CAAC,aAAa,OAAO,cAAc,SAAU,QAAO,KAAA;CACxD,MAAM,QAAS,UAAsC;AACrD,KAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO,KAAA;AAChD,QAAO;;AAGT,SAAS,iBAAiB,UAAyE;AACjG,KAAI,CAAC,SAAU,QAAO,KAAA;CACtB,MAAM,UAAU,SAAS;AACzB,KAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO,KAAA;AACpD,QAAO;;AAGT,SAAS,gBAAgB,GAAgC;AACvD,KAAI,OAAO,MAAM,YAAY,CAAC,OAAO,SAAS,EAAE,IAAI,KAAK,EAAG,QAAO,KAAA;AACnE,QAAO,KAAK,MAAM,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ssrf-guard.js","names":["dnsLookup"],"sources":["../../../../src/media-shared/http/ssrf-guard.ts"],"sourcesContent":["/**\n * SSRF guard for voice / media-understanding HTTP calls.\n *\n * DECISION (per docs/voice-rearchitecture.md §6):\n * - xopc does not currently ship the full openclaw SSRF infra (pinned dispatcher,\n * legacy private-network opt-in, etc.). For v2.0 we adopt a deliberately lean\n * guard that is sufficient for \"developer-controlled provider base URLs\":\n * 1. Reject non-http(s) schemes.\n * 2. Reject IP literals or hostnames that resolve to private / loopback /\n * link-local / metadata addresses unless `allowPrivateNetwork` is true.\n * 3. Resolve the hostname BEFORE handing the request to fetch (DNS pinning)\n * and reuse the resolved IP for the actual connection — closes the\n * classic DNS-rebinding window without requiring a custom dispatcher.\n * - Why not port openclaw's pinned dispatcher (undici): xopc is committed to\n * plain `globalThis.fetch` (Node 22 native) per AGENTS.md \"Node >= 22\"; we\n * accept the slightly weaker guarantee in exchange for zero new dependencies.\n * - Tests under src/media-shared/http/__tests__/ssrf-guard.test.ts cover all\n * private CIDR ranges + IPv6 link-local + metadata IPs (169.254.169.254).\n */\n\nimport { lookup as dnsLookup } from 'node:dns';\nimport { isIP } from 'node:net';\nimport { promisify } from 'node:util';\n\nconst dnsLookupAsync = promisify(dnsLookup);\n\nexport class SsrfBlockedError extends Error {\n readonly url: string;\n readonly reason: string;\n\n constructor(url: string, reason: string) {\n super(`SSRF guard blocked URL \"${url}\": ${reason}`);\n this.name = 'SsrfBlockedError';\n this.url = url;\n this.reason = reason;\n }\n}\n\nexport interface SsrfGuardOptions {\n /** Opt-in: allow private/loopback/link-local hosts. Default false. */\n allowPrivateNetwork?: boolean;\n /**\n * Optional explicit hostname allowlist. If set, ONLY these hostnames are\n * permitted regardless of `allowPrivateNetwork`. Useful for production\n * deployments that pin to one or two known provider domains.\n */\n hostnameAllowlist?: readonly string[];\n}\n\nconst PRIVATE_IPV4_CIDR_PATTERNS: ReadonlyArray<(parts: number[]) => boolean> = [\n // 10.0.0.0/8\n (parts) => parts[0] === 10,\n // 172.16.0.0/12\n (parts) => parts[0] === 172 && parts[1] >= 16 && parts[1] <= 31,\n // 192.168.0.0/16\n (parts) => parts[0] === 192 && parts[1] === 168,\n // 127.0.0.0/8 (loopback)\n (parts) => parts[0] === 127,\n // 169.254.0.0/16 (link-local + AWS / GCP metadata 169.254.169.254)\n (parts) => parts[0] === 169 && parts[1] === 254,\n // 100.64.0.0/10 (CGNAT)\n (parts) => parts[0] === 100 && parts[1] >= 64 && parts[1] <= 127,\n // 0.0.0.0/8\n (parts) => parts[0] === 0,\n];\n\nexport function isPrivateIpv4(ip: string): boolean {\n if (isIP(ip) !== 4) {\n return false;\n }\n const parts = ip.split('.').map((octet) => Number.parseInt(octet, 10));\n if (parts.length !== 4 || parts.some((octet) => Number.isNaN(octet))) {\n return false;\n }\n for (const matcher of PRIVATE_IPV4_CIDR_PATTERNS) {\n if (matcher(parts)) {\n return true;\n }\n }\n return false;\n}\n\nexport function isPrivateIpv6(ip: string): boolean {\n if (isIP(ip) !== 6) {\n return false;\n }\n const lower = ip.toLowerCase();\n // ::1 loopback\n if (lower === '::1' || lower === '0:0:0:0:0:0:0:1') {\n return true;\n }\n // fc00::/7 unique local\n if (/^f[cd][0-9a-f]{2}:/.test(lower)) {\n return true;\n }\n // fe80::/10 link-local\n if (/^fe[89ab][0-9a-f]:/.test(lower)) {\n return true;\n }\n // ::ffff:<ipv4-mapped> — defer to the IPv4 check\n const v4Mapped = lower.match(/^::ffff:([0-9.]+)$/);\n if (v4Mapped && isIP(v4Mapped[1]) === 4) {\n return isPrivateIpv4(v4Mapped[1]);\n }\n return false;\n}\n\nexport function isPrivateIpAddress(ip: string): boolean {\n return isPrivateIpv4(ip) || isPrivateIpv6(ip);\n}\n\nexport interface ResolvedSsrfTarget {\n /** The original URL string. */\n url: string;\n /** The resolved IP that should actually be connected to. */\n resolvedIp: string;\n /** The address family (4 or 6). */\n family: 4 | 6;\n}\n\n/**\n * Validate `url`, resolve its hostname via DNS, and return the resolved IP so\n * the caller can pin the request to that exact IP (closes DNS-rebinding window).\n *\n * Throws SsrfBlockedError when:\n * - scheme is not http(s)\n * - hostname is an explicit IP literal that targets a private range (and the\n * caller did not opt in)\n * - hostname resolves to a private IP (and the caller did not opt in)\n * - hostnameAllowlist is set and the hostname is not on it\n */\nexport async function assertSafeUrl(\n url: string | URL,\n options: SsrfGuardOptions = {},\n): Promise<ResolvedSsrfTarget> {\n const parsed = url instanceof URL ? url : new URL(url);\n const urlString = parsed.toString();\n\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new SsrfBlockedError(urlString, `unsupported scheme \"${parsed.protocol}\"`);\n }\n\n const hostname = parsed.hostname;\n if (!hostname) {\n throw new SsrfBlockedError(urlString, 'missing hostname');\n }\n\n if (options.hostnameAllowlist && options.hostnameAllowlist.length > 0) {\n const lower = hostname.toLowerCase();\n const allowed = options.hostnameAllowlist.some((entry) => lower === entry.toLowerCase());\n if (!allowed) {\n throw new SsrfBlockedError(urlString, `hostname \"${hostname}\" not in allowlist`);\n }\n }\n\n const literalFamily = isIP(hostname);\n if (literalFamily !== 0) {\n if (!options.allowPrivateNetwork && isPrivateIpAddress(hostname)) {\n throw new SsrfBlockedError(urlString, `IP literal \"${hostname}\" targets a private network`);\n }\n return { url: urlString, resolvedIp: hostname, family: literalFamily as 4 | 6 };\n }\n\n let address: string;\n let family: number;\n try {\n const resolved = await dnsLookupAsync(hostname);\n address = resolved.address;\n family = resolved.family;\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new SsrfBlockedError(urlString, `DNS lookup failed: ${reason}`);\n }\n\n if (!options.allowPrivateNetwork && isPrivateIpAddress(address)) {\n throw new SsrfBlockedError(\n urlString,\n `hostname \"${hostname}\" resolved to private IP \"${address}\"`,\n );\n }\n\n return { url: urlString, resolvedIp: address, family: family as 4 | 6 };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-server.js","names":[],"sources":["../../../../../src/media-shared/http/test-helpers/mock-server.ts"],"sourcesContent":["/**\n * In-process HTTP mock server for voice / media-understanding tests.\n *\n * DECISION (per docs/voice-rearchitecture.md §14):\n * - Tests must NOT hit real provider endpoints. We spin up an ephemeral HTTP\n * server (random port on 127.0.0.1) and assert request/response shapes.\n * - SSRF tests intentionally bind to 127.0.0.1 (private). Tests that exercise\n * the SSRF guard pass `allowPrivateNetwork: true` to the production code.\n * - This helper is import-only from `__tests__/` files — never from runtime\n * code. Kept under the runtime tree (not test/) so vitest picks it up via\n * the existing co-located test discovery.\n */\n\nimport { createServer, type IncomingMessage, type Server, type ServerResponse } from 'node:http';\nimport { AddressInfo } from 'node:net';\n\nexport interface MockResponseSpec {\n status?: number;\n headers?: Record<string, string>;\n /** Response body as string, Buffer, or async iterable for streaming. */\n body?: string | Buffer | AsyncIterable<Uint8Array>;\n /** Artificial delay before sending headers (ms). Useful for timeout tests. */\n delayMs?: number;\n}\n\nexport interface MockRequestRecord {\n method: string;\n path: string;\n headers: Record<string, string | string[] | undefined>;\n body: Buffer;\n receivedAt: number;\n}\n\nexport type MockHandler = (\n req: IncomingMessage,\n bodyBuffer: Buffer,\n) => Promise<MockResponseSpec> | MockResponseSpec;\n\nexport interface MockServerHandle {\n /** Base URL like http://127.0.0.1:51234 (no trailing slash). */\n baseUrl: string;\n /** Recorded requests in receive order. */\n requests: MockRequestRecord[];\n /** Stop the server. Idempotent. */\n close(): Promise<void>;\n /** Replace the handler at runtime (e.g. flip from 401 → 200 in rotation tests). */\n setHandler(handler: MockHandler): void;\n}\n\nasync function readRequestBody(req: IncomingMessage): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) {\n chunks.push(chunk as Buffer);\n }\n return Buffer.concat(chunks);\n}\n\nasync function writeResponse(res: ServerResponse, spec: MockResponseSpec): Promise<void> {\n if (spec.delayMs && spec.delayMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, spec.delayMs));\n }\n const status = spec.status ?? 200;\n const headers = spec.headers ?? {};\n res.writeHead(status, headers);\n\n const body = spec.body;\n if (body === undefined) {\n res.end();\n return;\n }\n if (typeof body === 'string' || Buffer.isBuffer(body)) {\n res.end(body);\n return;\n }\n // AsyncIterable<Uint8Array> — stream chunks.\n for await (const chunk of body) {\n if (!res.write(chunk)) {\n await new Promise<void>((resolve) => res.once('drain', resolve));\n }\n }\n res.end();\n}\n\n/**\n * Start an HTTP mock server bound to 127.0.0.1 on an ephemeral port. The\n * returned handle exposes the base URL, recorded requests, and a `close()`\n * method tests should call in `afterEach` / `afterAll`.\n */\nexport async function startMockServer(initialHandler: MockHandler): Promise<MockServerHandle> {\n const requests: MockRequestRecord[] = [];\n let activeHandler: MockHandler = initialHandler;\n\n const server: Server = createServer((req, res) => {\n void (async () => {\n const body = await readRequestBody(req);\n requests.push({\n method: req.method ?? 'GET',\n path: req.url ?? '/',\n headers: req.headers as Record<string, string | string[] | undefined>,\n body,\n receivedAt: Date.now(),\n });\n try {\n const spec = await activeHandler(req, body);\n await writeResponse(res, spec);\n } catch (error) {\n if (!res.headersSent) {\n res.writeHead(500, { 'content-type': 'application/json' });\n }\n res.end(JSON.stringify({ error: { message: String(error) } }));\n }\n })();\n });\n\n await new Promise<void>((resolve) => server.listen(0, '127.0.0.1', resolve));\n const addr = server.address() as AddressInfo;\n const baseUrl = `http://127.0.0.1:${addr.port}`;\n\n return {\n baseUrl,\n requests,\n setHandler(next) {\n activeHandler = next;\n },\n async close() {\n await new Promise<void>((resolve, reject) =>\n server.close((err) => (err ? reject(err) : resolve())),\n );\n },\n };\n}\n\n/**\n * Convenience builder: cycle through a fixed sequence of responses (used by\n * key-rotation tests where call N gets 401 and call N+1 gets 200).\n */\nexport function cycleHandlers(specs: readonly MockResponseSpec[]): MockHandler {\n let index = 0;\n return () => {\n const spec = specs[Math.min(index, specs.length - 1)];\n index += 1;\n return spec;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;AAiDA,eAAe,gBAAgB,KAAuC;CACpE,MAAM,SAAmB,EAAE;AAC3B,YAAW,MAAM,SAAS,IACxB,QAAO,KAAK,MAAgB;AAE9B,QAAO,OAAO,OAAO,OAAO;;AAG9B,eAAe,cAAc,KAAqB,MAAuC;AACvF,KAAI,KAAK,WAAW,KAAK,UAAU,EACjC,OAAM,IAAI,SAAS,YAAY,WAAW,SAAS,KAAK,QAAQ,CAAC;CAEnE,MAAM,SAAS,KAAK,UAAU;CAC9B,MAAM,UAAU,KAAK,WAAW,EAAE;AAClC,KAAI,UAAU,QAAQ,QAAQ;CAE9B,MAAM,OAAO,KAAK;AAClB,KAAI,SAAS,KAAA,GAAW;AACtB,MAAI,KAAK;AACT;;AAEF,KAAI,OAAO,SAAS,YAAY,OAAO,SAAS,KAAK,EAAE;AACrD,MAAI,IAAI,KAAK;AACb;;AAGF,YAAW,MAAM,SAAS,KACxB,KAAI,CAAC,IAAI,MAAM,MAAM,CACnB,OAAM,IAAI,SAAe,YAAY,IAAI,KAAK,SAAS,QAAQ,CAAC;AAGpE,KAAI,KAAK;;;;;;;AAQX,eAAsB,gBAAgB,gBAAwD;CAC5F,MAAM,WAAgC,EAAE;CACxC,IAAI,gBAA6B;CAEjC,MAAM,SAAiB,cAAc,KAAK,QAAQ;AAChD,GAAM,YAAY;GAChB,MAAM,OAAO,MAAM,gBAAgB,IAAI;AACvC,YAAS,KAAK;IACZ,QAAQ,IAAI,UAAU;IACtB,MAAM,IAAI,OAAO;IACjB,SAAS,IAAI;IACb;IACA,YAAY,KAAK,KAAK;IACvB,CAAC;AACF,OAAI;AAEF,UAAM,cAAc,KAAK,MADN,cAAc,KAAK,KAAK,CACb;YACvB,OAAO;AACd,QAAI,CAAC,IAAI,YACP,KAAI,UAAU,KAAK,EAAE,gBAAgB,oBAAoB,CAAC;AAE5D,QAAI,IAAI,KAAK,UAAU,EAAE,OAAO,EAAE,SAAS,OAAO,MAAM,EAAE,EAAE,CAAC,CAAC;;MAE9D;GACJ;AAEF,OAAM,IAAI,SAAe,YAAY,OAAO,OAAO,GAAG,aAAa,QAAQ,CAAC;AAI5E,QAAO;EACL,SAAA,oBAJW,OAAO,SACoB,CAAC;EAIvC;EACA,WAAW,MAAM;AACf,mBAAgB;;EAElB,MAAM,QAAQ;AACZ,SAAM,IAAI,SAAe,SAAS,WAChC,OAAO,OAAO,QAAS,MAAM,OAAO,IAAI,GAAG,SAAS,CAAE,CACvD;;EAEJ;;;;;;AAOH,SAAgB,cAAc,OAAiD;CAC7E,IAAI,QAAQ;AACZ,cAAa;EACX,MAAM,OAAO,MAAM,KAAK,IAAI,OAAO,MAAM,SAAS,EAAE;AACpD,WAAS;AACT,SAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"audio-transcription-runner.js","names":[],"sources":["../../../src/media-understanding/audio-transcription-runner.ts"],"sourcesContent":["/**\n * Audio transcription entry point.\n *\n * Thin facade over `runCapability({ capability: 'audio' })` that:\n * 1. Builds the per-provider AudioTranscriptionRequest from\n * `cfg.tools.media.audio`.\n * 2. Resolves the api key / base URL / per-provider model from config + env.\n * 3. Returns a normalized `{ transcript, attempts }` shape so the agent /\n * channel layer doesn't see the registry plumbing.\n */\n\nimport { createLogger } from '../utils/logger.js';\n\nimport { runCapability } from './runner.js';\nimport type {\n AudioTranscriptionRequest,\n CapabilityAttachmentInput,\n MediaUnderstandingDecision,\n MediaUnderstandingProvider,\n} from './types.js';\n// Re-export to keep callers' import paths short.\nexport type { AudioTranscriptionRequest, AudioTranscriptionResult } from './types.js';\n\nconst log = createLogger('AudioTranscriptionRunner');\n\nexport interface AudioProviderResolvedConfig {\n /** Provider id (must match a registered MediaUnderstandingProvider id). */\n id: string;\n apiKey?: string;\n baseUrl?: string;\n model?: string;\n language?: string;\n prompt?: string;\n query?: Record<string, string | number | boolean>;\n headers?: Record<string, string>;\n /** Provider-specific extra fields preserved as-is. */\n extra?: Record<string, unknown>;\n}\n\nexport interface RunAudioTranscriptionOptions {\n /** Pre-resolved provider configs in the order to try them. */\n providers: readonly AudioProviderResolvedConfig[];\n /** Audio buffers to transcribe. */\n attachments: readonly CapabilityAttachmentInput[];\n /** Hard timeout per provider call (ms). */\n timeoutMs: number;\n signal?: AbortSignal;\n}\n\nexport interface RunAudioTranscriptionResult {\n /** First successful transcript across attachments (joined when multiple). */\n transcript?: string;\n /** Per-attachment outputs (preserves order). */\n outputs: Array<{ attachmentIndex: number; text: string; provider: string; model?: string }>;\n decision: MediaUnderstandingDecision;\n}\n\nexport async function runAudioTranscription(\n options: RunAudioTranscriptionOptions,\n): Promise<RunAudioTranscriptionResult> {\n if (options.providers.length === 0) {\n log.warn(\n { attachmentCount: options.attachments.length },\n 'No audio providers configured; transcription disabled',\n );\n }\n\n // Index resolved configs by provider id for quick lookup inside buildRequest.\n const configById = new Map<string, AudioProviderResolvedConfig>();\n for (const cfg of options.providers) {\n configById.set(cfg.id.toLowerCase(), cfg);\n }\n\n const result = await runCapability({\n capability: 'audio',\n attachments: options.attachments,\n providerOrder: options.providers.map((cfg) => cfg.id),\n signal: options.signal,\n buildRequest: ({ provider, attachment }) =>\n buildAudioRequest({\n provider,\n attachment,\n config: configById.get(provider.id.toLowerCase()),\n timeoutMs: options.timeoutMs,\n signal: options.signal,\n }),\n });\n\n // Aggregate transcripts by attachment order.\n const outputs = result.outputs.map((entry) => ({\n attachmentIndex: entry.attachmentIndex,\n text: entry.text,\n provider: entry.provider,\n ...(entry.model ? { model: entry.model } : {}),\n }));\n\n const transcript =\n outputs.length === 0\n ? undefined\n : outputs\n .slice()\n .sort((a, b) => a.attachmentIndex - b.attachmentIndex)\n .map((o) => o.text)\n .join('\\n')\n .trim() || undefined;\n\n return { transcript, outputs, decision: result.decision };\n}\n\nfunction buildAudioRequest(params: {\n provider: MediaUnderstandingProvider;\n attachment: CapabilityAttachmentInput;\n config?: AudioProviderResolvedConfig;\n timeoutMs: number;\n signal?: AbortSignal;\n}): AudioTranscriptionRequest | undefined {\n const { provider, attachment, config, timeoutMs, signal } = params;\n if (!config) {\n log.debug(\n { providerId: provider.id, attachmentIndex: attachment.attachmentIndex },\n `No resolved config for provider \"${provider.id}\"; skipping`,\n );\n return undefined;\n }\n const requiresApiKey = provider.requiresApiKey !== false;\n if (requiresApiKey && !config.apiKey) {\n log.debug(\n { providerId: provider.id, attachmentIndex: attachment.attachmentIndex },\n `Provider \"${provider.id}\" has no apiKey; skipping`,\n );\n return undefined;\n }\n return {\n buffer: attachment.buffer,\n fileName: attachment.fileName,\n ...(attachment.mime ? { mime: attachment.mime } : {}),\n ...(config.apiKey ? { apiKey: config.apiKey } : {}),\n ...(config.baseUrl ? { baseUrl: config.baseUrl } : {}),\n ...(config.headers ? { headers: config.headers } : {}),\n ...(config.model ?? provider.defaultModels?.audio\n ? { model: config.model ?? provider.defaultModels?.audio }\n : {}),\n ...(config.language ? { language: config.language } : {}),\n ...(config.prompt ? { prompt: config.prompt } : {}),\n ...(config.query ? { query: config.query } : {}),\n timeoutMs,\n ...(signal ? { signal } : {}),\n };\n}\n"],"mappings":";;;;aAWkD;AAYlD,MAAM,MAAM,aAAa,2BAA2B;AAkCpD,eAAsB,sBACpB,SACsC;AACtC,KAAI,QAAQ,UAAU,WAAW,EAC/B,KAAI,KACF,EAAE,iBAAiB,QAAQ,YAAY,QAAQ,EAC/C,wDACD;CAIH,MAAM,6BAAa,IAAI,KAA0C;AACjE,MAAK,MAAM,OAAO,QAAQ,UACxB,YAAW,IAAI,IAAI,GAAG,aAAa,EAAE,IAAI;CAG3C,MAAM,SAAS,MAAM,cAAc;EACjC,YAAY;EACZ,aAAa,QAAQ;EACrB,eAAe,QAAQ,UAAU,KAAK,QAAQ,IAAI,GAAG;EACrD,QAAQ,QAAQ;EAChB,eAAe,EAAE,UAAU,iBACzB,kBAAkB;GAChB;GACA;GACA,QAAQ,WAAW,IAAI,SAAS,GAAG,aAAa,CAAC;GACjD,WAAW,QAAQ;GACnB,QAAQ,QAAQ;GACjB,CAAC;EACL,CAAC;CAGF,MAAM,UAAU,OAAO,QAAQ,KAAK,WAAW;EAC7C,iBAAiB,MAAM;EACvB,MAAM,MAAM;EACZ,UAAU,MAAM;EAChB,GAAI,MAAM,QAAQ,EAAE,OAAO,MAAM,OAAO,GAAG,EAAE;EAC9C,EAAE;AAYH,QAAO;EAAE,YATP,QAAQ,WAAW,IACf,KAAA,IACA,QACG,OAAO,CACP,MAAM,GAAG,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,CACrD,KAAK,MAAM,EAAE,KAAK,CAClB,KAAK,KAAK,CACV,MAAM,IAAI,KAAA;EAEE;EAAS,UAAU,OAAO;EAAU;;AAG3D,SAAS,kBAAkB,QAMe;CACxC,MAAM,EAAE,UAAU,YAAY,QAAQ,WAAW,WAAW;AAC5D,KAAI,CAAC,QAAQ;AACX,MAAI,MACF;GAAE,YAAY,SAAS;GAAI,iBAAiB,WAAW;GAAiB,EACxE,oCAAoC,SAAS,GAAG,aACjD;AACD;;AAGF,KADuB,SAAS,mBAAmB,SAC7B,CAAC,OAAO,QAAQ;AACpC,MAAI,MACF;GAAE,YAAY,SAAS;GAAI,iBAAiB,WAAW;GAAiB,EACxE,aAAa,SAAS,GAAG,2BAC1B;AACD;;AAEF,QAAO;EACL,QAAQ,WAAW;EACnB,UAAU,WAAW;EACrB,GAAI,WAAW,OAAO,EAAE,MAAM,WAAW,MAAM,GAAG,EAAE;EACpD,GAAI,OAAO,SAAS,EAAE,QAAQ,OAAO,QAAQ,GAAG,EAAE;EAClD,GAAI,OAAO,UAAU,EAAE,SAAS,OAAO,SAAS,GAAG,EAAE;EACrD,GAAI,OAAO,UAAU,EAAE,SAAS,OAAO,SAAS,GAAG,EAAE;EACrD,GAAI,OAAO,SAAS,SAAS,eAAe,QACxC,EAAE,OAAO,OAAO,SAAS,SAAS,eAAe,OAAO,GACxD,EAAE;EACN,GAAI,OAAO,WAAW,EAAE,UAAU,OAAO,UAAU,GAAG,EAAE;EACxD,GAAI,OAAO,SAAS,EAAE,QAAQ,OAAO,QAAQ,GAAG,EAAE;EAClD,GAAI,OAAO,QAAQ,EAAE,OAAO,OAAO,OAAO,GAAG,EAAE;EAC/C;EACA,GAAI,SAAS,EAAE,QAAQ,GAAG,EAAE;EAC7B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-compatible-audio.js","names":[],"sources":["../../../src/media-understanding/openai-compatible-audio.ts"],"sourcesContent":["/**\n * OpenAI-compatible `/audio/transcriptions` helper for STT providers and extensions.\n */\n\nimport path from 'node:path';\n\nimport { normalizeBaseUrl, postMultipartRequest } from '../media-shared/http/index.js';\n\nimport type {\n AudioTranscriptionRequest,\n AudioTranscriptionResult,\n MediaUnderstandingProvider,\n} from './types.js';\nimport { registerMediaUnderstandingProvider } from './registry.js';\n\ntype OpenAiCompatibleAudioParams = AudioTranscriptionRequest & {\n defaultBaseUrl: string;\n defaultModel: string;\n provider?: string;\n label?: string;\n};\n\nexport function resolveAudioTranscriptionUploadFileName(fileName?: string, mime?: string): string {\n const trimmed = fileName?.trim();\n const baseName = trimmed ? path.basename(trimmed) : 'audio';\n const lowerMime = mime?.trim().toLowerCase();\n\n if (/\\.aac$/i.test(baseName)) {\n return `${baseName.slice(0, -4) || 'audio'}.m4a`;\n }\n if (!path.extname(baseName) && lowerMime === 'audio/aac') {\n return `${baseName || 'audio'}.m4a`;\n }\n return baseName;\n}\n\nexport function buildAudioTranscriptionFormData(params: {\n buffer: Buffer;\n fileName?: string;\n mime?: string;\n fields?: Record<string, string | number | boolean | undefined>;\n}): FormData {\n const form = new FormData();\n const bytes = new Uint8Array(params.buffer);\n const blob = new Blob([bytes], {\n type: params.mime ?? 'application/octet-stream',\n });\n form.append('file', blob, resolveAudioTranscriptionUploadFileName(params.fileName, params.mime));\n for (const [name, value] of Object.entries(params.fields ?? {})) {\n const text = typeof value === 'string' ? value.trim() : value == null ? '' : String(value);\n if (text) {\n form.append(name, text);\n }\n }\n return form;\n}\n\nfunction resolveModel(model: string | undefined, fallback: string): string {\n const trimmed = model?.trim();\n return trimmed || fallback;\n}\n\nfunction requireTranscriptionText(text: string | undefined, message: string): string {\n const trimmed = text?.trim();\n if (!trimmed) {\n throw new Error(message);\n }\n return trimmed;\n}\n\nexport async function transcribeOpenAiCompatibleAudio(\n params: OpenAiCompatibleAudioParams,\n): Promise<AudioTranscriptionResult> {\n const baseUrl = normalizeBaseUrl(params.baseUrl ?? params.defaultBaseUrl);\n const url = `${baseUrl}/audio/transcriptions`;\n const model = resolveModel(params.model, params.defaultModel);\n const headers: Record<string, string> = {\n authorization: `Bearer ${params.apiKey}`,\n ...(params.headers ?? {}),\n };\n const form = buildAudioTranscriptionFormData({\n buffer: params.buffer,\n fileName: params.fileName,\n mime: params.mime,\n fields: {\n model,\n language: params.language,\n prompt: params.prompt,\n },\n });\n\n const response = await postMultipartRequest(url, {\n timeoutMs: params.timeoutMs,\n label: params.label ?? `${params.provider ?? 'openai'} STT`,\n headers,\n body: form,\n });\n\n const payload = (await response.json()) as { text?: string };\n const text = requireTranscriptionText(\n payload.text,\n 'Audio transcription response missing text',\n );\n return { text, model };\n}\n\nexport interface OpenAiCompatibleAudioProviderOptions {\n id: string;\n aliases?: readonly string[];\n envKey?: string;\n defaultBaseUrl: string;\n defaultModel: string;\n autoPriority?: number;\n label?: string;\n}\n\n/** Factory for OpenAI `/audio/transcriptions`-compatible STT extension providers. */\nexport function createOpenAiCompatibleAudioProvider(\n options: OpenAiCompatibleAudioProviderOptions,\n): MediaUnderstandingProvider {\n return {\n id: options.id,\n aliases: options.aliases,\n capabilities: ['audio'],\n envKey: options.envKey,\n defaultModels: { audio: options.defaultModel },\n autoPriority: { audio: options.autoPriority ?? 50 },\n transcribeAudio: (req: AudioTranscriptionRequest) => {\n if (!req.apiKey) {\n throw new Error(`${options.label ?? options.id} STT API key missing`);\n }\n return transcribeOpenAiCompatibleAudio({\n ...req,\n defaultBaseUrl: options.defaultBaseUrl,\n defaultModel: options.defaultModel,\n provider: options.id,\n label: options.label,\n });\n },\n };\n}\n\nexport function registerOpenAiCompatibleAudioProvider(\n options: OpenAiCompatibleAudioProviderOptions,\n): () => void {\n return registerMediaUnderstandingProvider(createOpenAiCompatibleAudioProvider(options));\n}\n"],"mappings":";;;;;;;;AAsBA,SAAgB,wCAAwC,UAAmB,MAAuB;CAChG,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,WAAW,UAAU,KAAK,SAAS,QAAQ,GAAG;CACpD,MAAM,YAAY,MAAM,MAAM,CAAC,aAAa;AAE5C,KAAI,UAAU,KAAK,SAAS,CAC1B,QAAO,GAAG,SAAS,MAAM,GAAG,GAAG,IAAI,QAAQ;AAE7C,KAAI,CAAC,KAAK,QAAQ,SAAS,IAAI,cAAc,YAC3C,QAAO,GAAG,YAAY,QAAQ;AAEhC,QAAO;;AAGT,SAAgB,gCAAgC,QAKnC;CACX,MAAM,OAAO,IAAI,UAAU;CAC3B,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO;CAC3C,MAAM,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,EAC7B,MAAM,OAAO,QAAQ,4BACtB,CAAC;AACF,MAAK,OAAO,QAAQ,MAAM,wCAAwC,OAAO,UAAU,OAAO,KAAK,CAAC;AAChG,MAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,OAAO,UAAU,EAAE,CAAC,EAAE;EAC/D,MAAM,OAAO,OAAO,UAAU,WAAW,MAAM,MAAM,GAAG,SAAS,OAAO,KAAK,OAAO,MAAM;AAC1F,MAAI,KACF,MAAK,OAAO,MAAM,KAAK;;AAG3B,QAAO;;AAGT,SAAS,aAAa,OAA2B,UAA0B;AAEzE,QADgB,OAAO,MAAM,IACX;;AAGpB,SAAS,yBAAyB,MAA0B,SAAyB;CACnF,MAAM,UAAU,MAAM,MAAM;AAC5B,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,QAAQ;AAE1B,QAAO;;AAGT,eAAsB,gCACpB,QACmC;CAEnC,MAAM,MAAM,GADI,iBAAiB,OAAO,WAAW,OAAO,eACpC,CAAC;CACvB,MAAM,QAAQ,aAAa,OAAO,OAAO,OAAO,aAAa;CAC7D,MAAM,UAAkC;EACtC,eAAe,UAAU,OAAO;EAChC,GAAI,OAAO,WAAW,EAAE;EACzB;CACD,MAAM,OAAO,gCAAgC;EAC3C,QAAQ,OAAO;EACf,UAAU,OAAO;EACjB,MAAM,OAAO;EACb,QAAQ;GACN;GACA,UAAU,OAAO;GACjB,QAAQ,OAAO;GAChB;EACF,CAAC;AAcF,QAAO;EAAE,MAJI,0BACX,OAFqB,MAPA,qBAAqB,KAAK;GAC/C,WAAW,OAAO;GAClB,OAAO,OAAO,SAAS,GAAG,OAAO,YAAY,SAAS;GACtD;GACA,MAAM;GACP,CAAC,EAE8B,MAAM,EAE5B,MACR,4CAEW;EAAE;EAAO;;;AAcxB,SAAgB,oCACd,SAC4B;AAC5B,QAAO;EACL,IAAI,QAAQ;EACZ,SAAS,QAAQ;EACjB,cAAc,CAAC,QAAQ;EACvB,QAAQ,QAAQ;EAChB,eAAe,EAAE,OAAO,QAAQ,cAAc;EAC9C,cAAc,EAAE,OAAO,QAAQ,gBAAgB,IAAI;EACnD,kBAAkB,QAAmC;AACnD,OAAI,CAAC,IAAI,OACP,OAAM,IAAI,MAAM,GAAG,QAAQ,SAAS,QAAQ,GAAG,sBAAsB;AAEvE,UAAO,gCAAgC;IACrC,GAAG;IACH,gBAAgB,QAAQ;IACxB,cAAc,QAAQ;IACtB,UAAU,QAAQ;IAClB,OAAO,QAAQ;IAChB,CAAC;;EAEL;;AAGH,SAAgB,sCACd,SACY;AACZ,QAAO,mCAAmC,oCAAoC,QAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","names":[],"sources":["../../../src/media-understanding/registry.ts"],"sourcesContent":["/**\n * MediaUnderstandingProviderRegistry — central lookup for STT/image/video\n * provider plugins.\n *\n * Mirrors the SpeechProviderRegistry pattern at src/voice/tts/speech-registry.ts\n * intentionally — same registration semantics, same alias handling, same\n * conflict-warn-and-overwrite policy.\n *\n * DECISION: The two registries are kept separate (rather than a single\n * \"media provider\" registry) because:\n * 1. SpeechProviderPlugin and MediaUnderstandingProvider have different\n * method shapes (synthesize vs transcribeAudio + describeImage).\n * 2. Many vendors implement only one side (Edge TTS has no STT; Whisper has\n * no TTS), so a unified registry would require a sparse capability matrix\n * anyway.\n * 3. Discovery UIs naturally split by direction (TTS list vs STT list).\n *\n * When a vendor implements BOTH (e.g. OpenAI), the registration code creates\n * two separate plugin objects sharing config — this stays explicit and avoids\n * \"is this method on this object?\" guessing in callers.\n */\n\nimport { createLogger } from '../utils/logger.js';\n\nimport type { MediaCapability, MediaUnderstandingProvider } from './types.js';\n\nconst log = createLogger('MediaUnderstandingRegistry');\n\nconst registry = new Map<string, MediaUnderstandingProvider>();\n\nfunction normalizeId(id: string): string {\n return id.trim().toLowerCase();\n}\n\nfunction indexProvider(provider: MediaUnderstandingProvider): string[] {\n const keys = [normalizeId(provider.id)];\n for (const alias of provider.aliases ?? []) {\n keys.push(normalizeId(alias));\n }\n return keys;\n}\n\nexport function registerMediaUnderstandingProvider(\n provider: MediaUnderstandingProvider,\n): () => void {\n const keys = indexProvider(provider);\n const conflicts = keys.filter((key) => registry.has(key));\n if (conflicts.length > 0) {\n log.warn(\n { providerId: provider.id, conflicts },\n `Media-understanding provider \"${provider.id}\" overrides existing registration(s): ${conflicts.join(', ')}`,\n );\n }\n for (const key of keys) {\n registry.set(key, provider);\n }\n return () => {\n for (const key of keys) {\n const current = registry.get(key);\n if (current === provider) {\n registry.delete(key);\n }\n }\n };\n}\n\nexport function getMediaUnderstandingProvider(id: string): MediaUnderstandingProvider | undefined {\n return registry.get(normalizeId(id));\n}\n\nexport function listMediaUnderstandingProviders(): MediaUnderstandingProvider[] {\n const seen = new Set<MediaUnderstandingProvider>();\n const result: MediaUnderstandingProvider[] = [];\n for (const provider of registry.values()) {\n if (!seen.has(provider)) {\n seen.add(provider);\n result.push(provider);\n }\n }\n return result;\n}\n\n/**\n * List providers that DECLARE the requested capability via `capabilities[]`\n * AND have an actual method implementation. The runner uses this to build\n * the per-capability fallback chain.\n */\nexport function listProvidersForCapability(\n capability: MediaCapability,\n): MediaUnderstandingProvider[] {\n const methodKey =\n capability === 'audio'\n ? 'transcribeAudio'\n : capability === 'image'\n ? 'describeImage'\n : 'describeVideo';\n return listMediaUnderstandingProviders().filter((provider) => {\n const declared = provider.capabilities?.includes(capability) ?? false;\n const implemented =\n typeof (provider as unknown as Record<string, unknown>)[methodKey] === 'function';\n return declared && implemented;\n });\n}\n\n/** Test-only: clear the registry. Not exported from the package barrel. */\nexport function _clearMediaUnderstandingRegistryForTests(): void {\n registry.clear();\n}\n"],"mappings":";;;aAsBkD;AAIlD,MAAM,MAAM,aAAa,6BAA6B;AAEtD,MAAM,2BAAW,IAAI,KAAyC;AAE9D,SAAS,YAAY,IAAoB;AACvC,QAAO,GAAG,MAAM,CAAC,aAAa;;AAGhC,SAAS,cAAc,UAAgD;CACrE,MAAM,OAAO,CAAC,YAAY,SAAS,GAAG,CAAC;AACvC,MAAK,MAAM,SAAS,SAAS,WAAW,EAAE,CACxC,MAAK,KAAK,YAAY,MAAM,CAAC;AAE/B,QAAO;;AAGT,SAAgB,mCACd,UACY;CACZ,MAAM,OAAO,cAAc,SAAS;CACpC,MAAM,YAAY,KAAK,QAAQ,QAAQ,SAAS,IAAI,IAAI,CAAC;AACzD,KAAI,UAAU,SAAS,EACrB,KAAI,KACF;EAAE,YAAY,SAAS;EAAI;EAAW,EACtC,iCAAiC,SAAS,GAAG,wCAAwC,UAAU,KAAK,KAAK,GAC1G;AAEH,MAAK,MAAM,OAAO,KAChB,UAAS,IAAI,KAAK,SAAS;AAE7B,cAAa;AACX,OAAK,MAAM,OAAO,KAEhB,KADgB,SAAS,IAAI,IAClB,KAAK,SACd,UAAS,OAAO,IAAI;;;AAM5B,SAAgB,8BAA8B,IAAoD;AAChG,QAAO,SAAS,IAAI,YAAY,GAAG,CAAC;;AAGtC,SAAgB,kCAAgE;CAC9E,MAAM,uBAAO,IAAI,KAAiC;CAClD,MAAM,SAAuC,EAAE;AAC/C,MAAK,MAAM,YAAY,SAAS,QAAQ,CACtC,KAAI,CAAC,KAAK,IAAI,SAAS,EAAE;AACvB,OAAK,IAAI,SAAS;AAClB,SAAO,KAAK,SAAS;;AAGzB,QAAO;;;;;;;AAQT,SAAgB,2BACd,YAC8B;CAC9B,MAAM,YACJ,eAAe,UACX,oBACA,eAAe,UACb,kBACA;AACR,QAAO,iCAAiC,CAAC,QAAQ,aAAa;EAC5D,MAAM,WAAW,SAAS,cAAc,SAAS,WAAW,IAAI;EAChE,MAAM,cACJ,OAAQ,SAAgD,eAAe;AACzE,SAAO,YAAY;GACnB;;;AAIJ,SAAgB,2CAAiD;AAC/D,UAAS,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-entries.js","names":[],"sources":["../../../src/media-understanding/resolve-entries.ts"],"sourcesContent":["/**\n * Resolve configured media model entries for a capability.\n *\n * Ported subset of openclaw/src/media-understanding/resolve.ts (`resolveModelEntries`).\n */\n\nimport { listMediaUnderstandingProviders } from './registry.js';\nimport type { MediaCapability, MediaUnderstandingModelEntry } from './types.js';\n\nexport function resolveModelEntries(params: {\n capability: MediaCapability;\n capabilityModels?: readonly MediaUnderstandingModelEntry[];\n sharedModels?: readonly MediaUnderstandingModelEntry[];\n}): MediaUnderstandingModelEntry[] {\n const registry = new Map(\n listMediaUnderstandingProviders().map((provider) => [provider.id.toLowerCase(), provider]),\n );\n\n const entries = [\n ...(params.capabilityModels ?? []).map((entry) => ({ entry, source: 'capability' as const })),\n ...(params.sharedModels ?? []).map((entry) => ({ entry, source: 'shared' as const })),\n ];\n if (entries.length === 0) {\n return [];\n }\n\n return entries\n .filter(({ entry, source }) => {\n if (entry.type === 'cli') {\n return false;\n }\n const providerId = entry.provider?.trim().toLowerCase();\n if (!providerId && !entry.command) {\n return source === 'capability';\n }\n const caps = entry.capabilities;\n if (!caps || caps.length === 0) {\n if (source === 'shared') {\n return false;\n }\n return true;\n }\n if (!caps.includes(params.capability)) {\n return false;\n }\n if (providerId && !registry.has(providerId)) {\n return source === 'capability';\n }\n return true;\n })\n .map(({ entry }) => entry);\n}\n"],"mappings":";;;;;;;AASA,SAAgB,oBAAoB,QAID;CACjC,MAAM,WAAW,IAAI,IACnB,iCAAiC,CAAC,KAAK,aAAa,CAAC,SAAS,GAAG,aAAa,EAAE,SAAS,CAAC,CAC3F;CAED,MAAM,UAAU,CACd,IAAI,OAAO,oBAAoB,EAAE,EAAE,KAAK,WAAW;EAAE;EAAO,QAAQ;EAAuB,EAAE,EAC7F,IAAI,OAAO,gBAAgB,EAAE,EAAE,KAAK,WAAW;EAAE;EAAO,QAAQ;EAAmB,EAAE,CACtF;AACD,KAAI,QAAQ,WAAW,EACrB,QAAO,EAAE;AAGX,QAAO,QACJ,QAAQ,EAAE,OAAO,aAAa;AAC7B,MAAI,MAAM,SAAS,MACjB,QAAO;EAET,MAAM,aAAa,MAAM,UAAU,MAAM,CAAC,aAAa;AACvD,MAAI,CAAC,cAAc,CAAC,MAAM,QACxB,QAAO,WAAW;EAEpB,MAAM,OAAO,MAAM;AACnB,MAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAC9B,OAAI,WAAW,SACb,QAAO;AAET,UAAO;;AAET,MAAI,CAAC,KAAK,SAAS,OAAO,WAAW,CACnC,QAAO;AAET,MAAI,cAAc,CAAC,SAAS,IAAI,WAAW,CACzC,QAAO,WAAW;AAEpB,SAAO;GACP,CACD,KAAK,EAAE,YAAY,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","names":[],"sources":["../../../src/media-understanding/runner.ts"],"sourcesContent":["/**\n * MediaUnderstanding capability runner.\n *\n * Orchestrates per-attachment fallback across providers for one capability\n * (audio / image / video). For each attachment:\n * 1. Build the candidate provider list from the registry, ordered by\n * autoPriority (lower = first), with caller-supplied `providerOrder`\n * overriding when set.\n * 2. Try providers in order. A provider is SKIPPED when it does not declare\n * the requested capability OR does not implement the corresponding method.\n * 3. The first provider whose capability call resolves successfully wins;\n * its output is recorded as `chosen`. Failures are recorded as attempts\n * and the next provider is tried.\n * 4. When ALL providers for an attachment fail, the attachment outcome is\n * `failed`; when no provider was even eligible (capability not registered),\n * it's `disabled`.\n *\n * DECISION (per docs/voice-rearchitecture.md §5):\n * - This is a thin runner only. xopc v2.0 ships ONLY audio; image/video\n * branches exist as type-level fall-throughs (the runner happily handles\n * them once a provider registers describeImage / describeVideo, but no\n * image-specific helpers — like multi-image batching — live here yet).\n * - We deliberately do NOT port openclaw's `MediaAttachmentCache` (which\n * handles temp-file extraction, SSRF re-validation on remote URLs, etc.).\n * For xopc v2.0 the caller is expected to pre-load the buffer; remote URL\n * fetching is the caller's responsibility (typically the channel adapter\n * does this before invoking the runner).\n */\n\nimport { createLogger } from '../utils/logger.js';\n\nimport { listProvidersForCapability } from './registry.js';\nimport type {\n AudioTranscriptionRequest,\n AudioTranscriptionResult,\n CapabilityAttachmentInput,\n ImageDescriptionRequest,\n ImageDescriptionResult,\n MediaCapability,\n MediaUnderstandingAttachmentDecision,\n MediaUnderstandingKind,\n MediaUnderstandingModelDecision,\n MediaUnderstandingOutput,\n MediaUnderstandingProvider,\n MediaUnderstandingResult,\n VideoDescriptionRequest,\n VideoDescriptionResult,\n} from './types.js';\n\nconst log = createLogger('MediaUnderstandingRunner');\n\nexport type { CapabilityAttachmentInput } from './types.js';\n\nexport interface RunCapabilityOptions {\n capability: MediaCapability;\n attachments: readonly CapabilityAttachmentInput[];\n /** Caller-supplied ordering. When set, overrides registry autoPriority. */\n providerOrder?: readonly string[];\n /**\n * Per-provider request builder. Returned shape MUST match the capability:\n * audio → AudioTranscriptionRequest\n * image → ImageDescriptionRequest\n * video → VideoDescriptionRequest\n * The runner does not synthesize api keys / urls — that's the caller's job\n * (typically reads from cfg.tools.media.audio.providers[providerId]).\n */\n buildRequest: (params: {\n provider: MediaUnderstandingProvider;\n attachment: CapabilityAttachmentInput;\n }) =>\n | AudioTranscriptionRequest\n | ImageDescriptionRequest\n | VideoDescriptionRequest\n | undefined;\n /** Optional global timeout signal (e.g. from agent-level cancellation). */\n signal?: AbortSignal;\n}\n\nconst KIND_BY_CAPABILITY: Record<MediaCapability, MediaUnderstandingKind> = {\n audio: 'audio.transcription',\n image: 'image.description',\n video: 'video.description',\n};\n\nfunction orderProviders(\n providers: MediaUnderstandingProvider[],\n capability: MediaCapability,\n override?: readonly string[],\n): MediaUnderstandingProvider[] {\n if (override && override.length > 0) {\n const lookup = new Map(providers.map((p) => [p.id.toLowerCase(), p]));\n const ordered: MediaUnderstandingProvider[] = [];\n const used = new Set<string>();\n for (const id of override) {\n const provider = lookup.get(id.toLowerCase());\n if (provider && !used.has(provider.id)) {\n ordered.push(provider);\n used.add(provider.id);\n }\n }\n // Append any registered providers not in the override (preserves capability\n // availability when the override list is incomplete).\n for (const provider of providers) {\n if (!used.has(provider.id)) {\n ordered.push(provider);\n }\n }\n return ordered;\n }\n return [...providers].sort((a, b) => {\n const aPriority = a.autoPriority?.[capability] ?? Number.MAX_SAFE_INTEGER;\n const bPriority = b.autoPriority?.[capability] ?? Number.MAX_SAFE_INTEGER;\n return aPriority - bPriority;\n });\n}\n\nfunction pickMethod(\n provider: MediaUnderstandingProvider,\n capability: MediaCapability,\n): ((req: never) => Promise<{ text: string; model?: string }>) | undefined {\n if (capability === 'audio') {\n return provider.transcribeAudio as (\n req: AudioTranscriptionRequest,\n ) => Promise<AudioTranscriptionResult>;\n }\n if (capability === 'image') {\n return provider.describeImage as (\n req: ImageDescriptionRequest,\n ) => Promise<ImageDescriptionResult>;\n }\n return provider.describeVideo as (\n req: VideoDescriptionRequest,\n ) => Promise<VideoDescriptionResult>;\n}\n\nexport async function runCapability(\n options: RunCapabilityOptions,\n): Promise<MediaUnderstandingResult> {\n const eligibleProviders = listProvidersForCapability(options.capability);\n\n // Capability outcome is 'disabled' when no registered provider implements it.\n if (eligibleProviders.length === 0) {\n log.debug(\n { capability: options.capability },\n `No providers registered for capability \"${options.capability}\"`,\n );\n return {\n decision: {\n capability: options.capability,\n outcome: 'disabled',\n attachments: options.attachments.map((a) => ({\n attachmentIndex: a.attachmentIndex,\n attempts: [],\n })),\n },\n outputs: [],\n };\n }\n\n if (options.attachments.length === 0) {\n return {\n decision: { capability: options.capability, outcome: 'no-attachment', attachments: [] },\n outputs: [],\n };\n }\n\n const providers = orderProviders(eligibleProviders, options.capability, options.providerOrder);\n const attachmentDecisions: MediaUnderstandingAttachmentDecision[] = [];\n const outputs: MediaUnderstandingOutput[] = [];\n\n for (const attachment of options.attachments) {\n options.signal?.throwIfAborted();\n\n const attempts: MediaUnderstandingModelDecision[] = [];\n let chosen: MediaUnderstandingModelDecision | undefined;\n\n for (const provider of providers) {\n const method = pickMethod(provider, options.capability);\n if (!method) {\n // Defensive: registry filter should already exclude these. Recorded as\n // skipped so callers can diagnose registry/method mismatches.\n attempts.push({\n provider: provider.id,\n type: 'provider',\n outcome: 'skipped',\n reason: `provider \"${provider.id}\" missing method for capability \"${options.capability}\"`,\n });\n continue;\n }\n const request = options.buildRequest({ provider, attachment });\n if (!request) {\n attempts.push({\n provider: provider.id,\n type: 'provider',\n outcome: 'skipped',\n reason: 'caller buildRequest returned undefined (likely missing config)',\n });\n continue;\n }\n const startedAt = Date.now();\n try {\n // We narrow `method` by capability above; cast through `unknown` to keep\n // a single call site without per-capability ceremony.\n const callResult = await (method as (req: unknown) => Promise<{ text: string; model?: string }>)(\n request,\n );\n const text = callResult.text?.trim() ?? '';\n if (!text) {\n attempts.push({\n provider: provider.id,\n type: 'provider',\n outcome: 'failed',\n reason: 'empty transcription/description text',\n model: callResult.model,\n latencyMs: Date.now() - startedAt,\n });\n continue;\n }\n chosen = {\n provider: provider.id,\n type: 'provider',\n outcome: 'success',\n model: callResult.model,\n latencyMs: Date.now() - startedAt,\n };\n attempts.push(chosen);\n outputs.push({\n kind: KIND_BY_CAPABILITY[options.capability],\n attachmentIndex: attachment.attachmentIndex,\n text,\n provider: provider.id,\n model: callResult.model,\n });\n break;\n } catch (error) {\n if (options.signal?.aborted) {\n throw error;\n }\n const reason = error instanceof Error ? error.message : String(error);\n log.warn(\n {\n err: error,\n providerId: provider.id,\n capability: options.capability,\n attachmentIndex: attachment.attachmentIndex,\n },\n `Provider \"${provider.id}\" failed for ${options.capability}: ${reason}`,\n );\n attempts.push({\n provider: provider.id,\n type: 'provider',\n outcome: 'failed',\n reason,\n latencyMs: Date.now() - startedAt,\n });\n }\n }\n\n attachmentDecisions.push({\n attachmentIndex: attachment.attachmentIndex,\n attempts,\n ...(chosen ? { chosen } : {}),\n });\n }\n\n const overallOutcome = attachmentDecisions.every((d) => d.chosen)\n ? 'success'\n : attachmentDecisions.some((d) => d.chosen)\n ? 'success' // partial success — at least one attachment succeeded\n : 'failed';\n\n return {\n decision: {\n capability: options.capability,\n outcome: overallOutcome,\n attachments: attachmentDecisions,\n },\n outputs,\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-capability-preset.js","names":[],"sources":["../../../../src/migrations/config/default-capability-preset.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs';\n\nimport {\n CapabilityPresetSchema,\n DEFAULT_CAPABILITY_PRESET_ID,\n type CapabilityPreset,\n} from '../../agent-manifest/schema.js';\nimport { ConfigSchema, type Config } from '../../config/schema.js';\nimport type { Migration, MigrationContext, MigrationPlanItem } from '../types.js';\n\nexport const DEFAULT_CAPABILITY_PRESET_MIGRATION_ID = '2026-07-ensure-default-capability-preset';\n\nexport function createDefaultCapabilityPreset(): CapabilityPreset {\n return {\n id: DEFAULT_CAPABILITY_PRESET_ID,\n name: 'Global defaults',\n description: 'Default capabilities inherited by every agent.',\n version: 1,\n models: {\n defaultRole: 'deep',\n roles: {},\n },\n };\n}\n\nexport function ensureDefaultCapabilityPresetInitialized(config: Config): { config: Config; changed: boolean } {\n const agents = config.agents;\n const capabilityPresets = { ...(agents.capabilityPresets ?? {}) };\n let changed = false;\n\n if (!capabilityPresets[DEFAULT_CAPABILITY_PRESET_ID]) {\n capabilityPresets[DEFAULT_CAPABILITY_PRESET_ID] = createDefaultCapabilityPreset();\n changed = true;\n }\n\n const defaultPreset = agents.defaultPreset?.trim() || DEFAULT_CAPABILITY_PRESET_ID;\n if (defaultPreset !== agents.defaultPreset) {\n changed = true;\n }\n\n if (!changed) return { config, changed: false };\n\n return {\n config: ConfigSchema.parse({\n ...config,\n agents: {\n ...agents,\n defaultPreset,\n capabilityPresets,\n },\n }),\n changed: true,\n };\n}\n\nfunction planned(message: string, details?: Record<string, unknown>): MigrationPlanItem {\n return {\n id: DEFAULT_CAPABILITY_PRESET_MIGRATION_ID,\n title: 'Initialize global default capability preset',\n kind: 'config',\n safety: 'auto',\n status: 'planned',\n message,\n details,\n };\n}\n\nfunction conflict(message: string, details?: Record<string, unknown>): MigrationPlanItem {\n return {\n id: DEFAULT_CAPABILITY_PRESET_MIGRATION_ID,\n title: 'Initialize global default capability preset',\n kind: 'config',\n safety: 'manual',\n status: 'conflict',\n message,\n details,\n };\n}\n\nfunction readRawConfigObject(configPath: string): Record<string, unknown> | null {\n if (!existsSync(configPath)) return null;\n const raw = readFileSync(configPath, 'utf8');\n const parsed = JSON.parse(raw) as unknown;\n if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new Error('Config root must be an object');\n }\n return parsed as Record<string, unknown>;\n}\n\nexport const defaultCapabilityPresetMigration: Migration = {\n id: DEFAULT_CAPABILITY_PRESET_MIGRATION_ID,\n kind: 'config',\n safety: 'auto',\n\n detect(ctx: MigrationContext): MigrationPlanItem | null {\n const raw = readRawConfigObject(ctx.configPath);\n if (!raw) return null;\n\n const rawAgents = raw.agents;\n if (rawAgents !== undefined && (rawAgents === null || typeof rawAgents !== 'object' || Array.isArray(rawAgents))) {\n return conflict('agents config is not an object; cannot initialize global defaults automatically.');\n }\n\n const agents = (rawAgents ?? {}) as Record<string, unknown>;\n const rawPresets = agents.capabilityPresets;\n if (rawPresets !== undefined && (rawPresets === null || typeof rawPresets !== 'object' || Array.isArray(rawPresets))) {\n return conflict('agents.capabilityPresets is not an object; cannot initialize global defaults automatically.');\n }\n\n const presets = (rawPresets ?? {}) as Record<string, unknown>;\n const existingDefault = presets[DEFAULT_CAPABILITY_PRESET_ID];\n if (existingDefault !== undefined) {\n const parsedPreset = CapabilityPresetSchema.safeParse(existingDefault);\n if (!parsedPreset.success) {\n return conflict('Existing default capability preset is invalid; please repair it manually.', {\n issues: parsedPreset.error.issues.slice(0, 5).map((issue) => ({\n path: issue.path.join('.'),\n message: issue.message,\n })),\n });\n }\n }\n\n const needsDefaultPresetPointer = typeof agents.defaultPreset !== 'string' || agents.defaultPreset.trim().length === 0;\n const needsDefaultPresetObject = existingDefault === undefined;\n if (!needsDefaultPresetPointer && !needsDefaultPresetObject) return null;\n\n return planned('Global default capability preset is missing and will be initialized.', {\n addDefaultPresetPointer: needsDefaultPresetPointer,\n addDefaultPresetObject: needsDefaultPresetObject,\n });\n },\n\n apply(ctx: MigrationContext): MigrationPlanItem {\n const detected = this.detect(ctx);\n if (!detected) {\n return {\n id: this.id,\n title: 'Initialize global default capability preset',\n kind: 'config',\n safety: 'auto',\n status: 'not_needed',\n message: 'Global default capability preset is already initialized.',\n };\n }\n if (detected.status === 'conflict') return detected;\n\n const raw = readRawConfigObject(ctx.configPath);\n const parsed = ConfigSchema.parse(raw ?? undefined);\n const ensured = ensureDefaultCapabilityPresetInitialized(parsed);\n if (!ensured.changed) {\n return { ...detected, status: 'not_needed', message: 'Global default capability preset is already initialized.' };\n }\n\n return {\n ...detected,\n status: 'applied',\n message: 'Initialized global default capability preset.',\n details: { ...detected.details, config: ensured.config },\n };\n },\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","names":[],"sources":["../../../src/migrations/registry.ts"],"sourcesContent":["import type { Migration } from './types.js';\n\nexport type RegisteredMigration = {\n source: string;\n migration: Migration;\n};\n\nconst registeredMigrations = new Map<string, RegisteredMigration>();\n\nexport function registerMigration(source: string, migration: Migration): void {\n registeredMigrations.set(`${source}:${migration.id}`, { source, migration });\n}\n\nexport function unregisterMigrationsForSource(source: string): void {\n for (const [key, value] of registeredMigrations.entries()) {\n if (value.source === source) registeredMigrations.delete(key);\n }\n}\n\nexport function listRegisteredMigrations(): RegisteredMigration[] {\n return [...registeredMigrations.values()];\n}\n"],"mappings":";AAOA,MAAM,uCAAuB,IAAI,KAAkC;AAEnE,SAAgB,kBAAkB,QAAgB,WAA4B;AAC5E,sBAAqB,IAAI,GAAG,OAAO,GAAG,UAAU,MAAM;EAAE;EAAQ;EAAW,CAAC;;AAG9E,SAAgB,8BAA8B,QAAsB;AAClE,MAAK,MAAM,CAAC,KAAK,UAAU,qBAAqB,SAAS,CACvD,KAAI,MAAM,WAAW,OAAQ,sBAAqB,OAAO,IAAI;;AAIjE,SAAgB,2BAAkD;AAChE,QAAO,CAAC,GAAG,qBAAqB,QAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","names":[],"sources":["../../../src/migrations/runner.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\n\nimport { ConfigSchema, type Config } from '../config/schema.js';\nimport { createLogger } from '../utils/logger.js';\nimport { defaultCapabilityPresetMigration } from './config/default-capability-preset.js';\nimport { listRegisteredMigrations } from './registry.js';\nimport type { Migration, MigrationContext, MigrationLedger, MigrationPlanItem } from './types.js';\n\nconst log = createLogger('Migrations');\nconst MIGRATION_LEDGER_FILENAME = 'migrations.json';\nconst CONFIG_BACKUP_COUNT = 10;\n\nconst CONFIG_MIGRATIONS: readonly Migration[] = [defaultCapabilityPresetMigration];\nexport const CORE_MIGRATIONS: readonly Migration[] = [...CONFIG_MIGRATIONS];\n\nfunction listAllMigrations(): Migration[] {\n return [...CORE_MIGRATIONS, ...listRegisteredMigrations().map((entry) => entry.migration)];\n}\n\nexport type MigrationApplyMode = 'auto-safe' | 'doctor-fix' | 'manual';\n\nexport interface MigrationApplyResult {\n items: MigrationPlanItem[];\n changed: boolean;\n}\n\nfunction publicItem(item: MigrationPlanItem): MigrationPlanItem {\n if (!item.details || !Object.hasOwn(item.details, 'config')) return item;\n const { config: _config, ...details } = item.details;\n return { ...item, details };\n}\n\nfunction makeContext(configPath: string, stateDir?: string): MigrationContext {\n return { configPath, stateDir: stateDir ?? dirname(configPath), now: new Date() };\n}\n\nfunction rotateConfigBackupsSync(configPath: string): void {\n const backupBase = `${configPath}.bak`;\n for (let index = CONFIG_BACKUP_COUNT - 1; index >= 1; index--) {\n const source = index === 1 ? backupBase : `${backupBase}.${index - 1}`;\n const target = `${backupBase}.${index}`;\n if (existsSync(source)) {\n try { renameSync(source, target); } catch { /* best effort */ }\n }\n }\n}\n\nfunction writeConfigWithBackupSync(configPath: string, config: Config): void {\n const validated = ConfigSchema.parse(config);\n mkdirSync(dirname(configPath), { recursive: true });\n if (existsSync(configPath)) {\n rotateConfigBackupsSync(configPath);\n try {\n writeFileSync(`${configPath}.bak`, readFileSync(configPath, 'utf8'), 'utf8');\n } catch {\n // best-effort backup; atomic write below still proceeds\n }\n }\n const tmp = `${configPath}.tmp-${process.pid}-${Date.now()}`;\n writeFileSync(tmp, `${JSON.stringify(validated, null, 2)}\\n`, 'utf8');\n renameSync(tmp, configPath);\n}\n\nfunction resolveLedgerPath(ctx: MigrationContext): string | null {\n if (!ctx.stateDir) return null;\n return join(ctx.stateDir, MIGRATION_LEDGER_FILENAME);\n}\n\nfunction readLedger(ctx: MigrationContext): MigrationLedger {\n const ledgerPath = resolveLedgerPath(ctx);\n if (!ledgerPath || !existsSync(ledgerPath)) return { version: 1, runs: [] };\n try {\n const parsed = JSON.parse(readFileSync(ledgerPath, 'utf8')) as Partial<MigrationLedger>;\n if (parsed.version === 1 && Array.isArray(parsed.runs)) {\n return { version: 1, runs: parsed.runs as MigrationLedger['runs'] };\n }\n } catch {\n // Corrupt migration ledgers should never block runtime startup.\n }\n return { version: 1, runs: [] };\n}\n\nfunction appendLedgerRun(ctx: MigrationContext, item: MigrationPlanItem): void {\n const ledgerPath = resolveLedgerPath(ctx);\n if (!ledgerPath) return;\n try {\n const ledger = readLedger(ctx);\n ledger.runs.push({\n id: item.id,\n status: item.status,\n appliedAt: (ctx.now ?? new Date()).toISOString(),\n message: item.message,\n });\n mkdirSync(dirname(ledgerPath), { recursive: true });\n writeFileSync(ledgerPath, `${JSON.stringify(ledger, null, 2)}\\n`, 'utf8');\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n log.warn({ err, errorMessage: em, path: ledgerPath }, `Failed to write migration ledger: ${em}`);\n }\n}\n\nfunction shouldApply(item: MigrationPlanItem, mode: MigrationApplyMode): boolean {\n if (item.status !== 'planned') return false;\n if (mode === 'manual') return true;\n return item.safety === 'auto';\n}\n\nexport function detectMigrations(configPath: string, options: { stateDir?: string } = {}): MigrationPlanItem[] {\n const ctx = makeContext(configPath, options.stateDir);\n const items: MigrationPlanItem[] = [];\n for (const migration of listAllMigrations()) {\n try {\n const item = migration.detect(ctx);\n if (item) items.push(publicItem(item));\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n items.push({\n id: migration.id,\n title: migration.id,\n kind: migration.kind,\n safety: migration.safety,\n status: 'error',\n message: `Migration detection failed: ${em}`,\n });\n }\n }\n return items;\n}\n\nexport function applyMigrations(\n configPath: string,\n options: { stateDir?: string; mode?: MigrationApplyMode } = {},\n): MigrationApplyResult {\n const ctx = makeContext(configPath, options.stateDir);\n const mode = options.mode ?? 'auto-safe';\n const results: MigrationPlanItem[] = [];\n let changed = false;\n\n for (const migration of listAllMigrations()) {\n let detected: MigrationPlanItem | null;\n try {\n detected = migration.detect(ctx);\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n results.push({\n id: migration.id,\n title: migration.id,\n kind: migration.kind,\n safety: migration.safety,\n status: 'error',\n message: `Migration detection failed: ${em}`,\n });\n continue;\n }\n\n if (!detected) continue;\n if (!shouldApply(detected, mode)) {\n results.push(publicItem(detected));\n continue;\n }\n\n try {\n const applied = migration.apply(ctx);\n const nextConfig = applied.details?.config;\n if (applied.status === 'applied' && nextConfig) {\n writeConfigWithBackupSync(configPath, ConfigSchema.parse(nextConfig));\n changed = true;\n appendLedgerRun(ctx, applied);\n }\n results.push(publicItem(applied));\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n results.push({\n ...detected,\n status: 'error',\n message: `Migration apply failed: ${em}`,\n });\n }\n }\n\n return { items: results, changed };\n}\n\nexport function runBootstrapMigrationsSync(configPath: string, options: { stateDir?: string } = {}): MigrationApplyResult {\n if (!existsSync(configPath)) return { items: [], changed: false };\n const result = applyMigrations(configPath, { ...options, mode: 'auto-safe' });\n if (result.changed) {\n log.info({ configPath, count: result.items.filter((item) => item.status === 'applied').length }, 'Applied bootstrap migrations');\n }\n return result;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-service.js","names":[],"sources":["../../../src/mobile/notification-service.ts"],"sourcesContent":["import { createLogger } from '../utils/logger.js';\nimport type { AutomationRun } from '../automations/domain/types.js';\n\nimport {\n createMobileActivityEvent,\n disableMobileDeviceForPushToken,\n listEnabledMobileDevices,\n} from './notification-store.js';\nimport type {\n MobileActivityEvent,\n MobileNotificationEventType,\n} from './notification-types.js';\n\nconst log = createLogger('MobileNotifications');\nconst EXPO_PUSH_URL = 'https://exp.host/--/api/v2/push/send';\n\ntype GoalPayload = {\n goal?: { id?: unknown; title?: unknown; activeSessionKey?: unknown };\n goalId?: unknown;\n status?: unknown;\n};\n\ntype ExpoPushResult = { status?: string; details?: { error?: string } };\n\nfunction shouldDeliver(type: MobileNotificationEventType, preferences: {\n needsInput: boolean;\n failed: boolean;\n completed: boolean;\n automationFailed: boolean;\n}): boolean {\n if (type === 'goal.needs_input') return preferences.needsInput;\n if (type === 'goal.blocked') return preferences.failed;\n if (type === 'automation.failed') return preferences.automationFailed;\n return preferences.completed;\n}\n\nfunction goalEvent(payload: unknown): Omit<MobileActivityEvent, 'id' | 'createdAt'> | null {\n if (!payload || typeof payload !== 'object') return null;\n const data = payload as GoalPayload;\n const goal = data.goal;\n const goalId = typeof goal?.id === 'string' ? goal.id : typeof data.goalId === 'string' ? data.goalId : '';\n const status = typeof data.status === 'string' ? data.status : '';\n if (!goalId || !['needs_input', 'blocked', 'done'].includes(status)) return null;\n const type: MobileNotificationEventType = status === 'needs_input'\n ? 'goal.needs_input'\n : status === 'blocked'\n ? 'goal.blocked'\n : 'goal.completed';\n const sessionKey = typeof goal?.activeSessionKey === 'string' ? goal.activeSessionKey : '';\n const route = sessionKey ? `/chat/${encodeURIComponent(sessionKey)}` : '/';\n return {\n type,\n entity: { kind: 'goal', id: goalId },\n priority: type === 'goal.needs_input' || type === 'goal.blocked' ? 'high' : 'normal',\n title: type === 'goal.needs_input' ? 'Action needed' : type === 'goal.blocked' ? 'Goal blocked' : 'Goal completed',\n body: typeof goal?.title === 'string' ? goal.title.slice(0, 120) : undefined,\n deepLink: route,\n payload: { route, goalId, eventType: type },\n };\n}\n\nfunction automationEvent(payload: unknown): Omit<MobileActivityEvent, 'id' | 'createdAt'> | null {\n if (!payload || typeof payload !== 'object') return null;\n const run = (payload as { run?: AutomationRun }).run;\n if (!run || (run.status !== 'failed' && run.status !== 'timeout' && run.status !== 'succeeded')) return null;\n const type: MobileNotificationEventType = run.status === 'succeeded'\n ? 'automation.completed'\n : 'automation.failed';\n return {\n type,\n entity: { kind: 'automation', id: run.automationId },\n priority: type === 'automation.failed' ? 'high' : 'normal',\n title: type === 'automation.failed' ? 'Automation failed' : 'Automation completed',\n body: run.automationName.slice(0, 120),\n deepLink: '/automation',\n payload: { route: '/automation', automationId: run.automationId, runId: run.id, eventType: type },\n };\n}\n\n/** Converts gateway domain events into a portable mobile activity and push payload. */\nexport function mobileNotificationEventFromGatewayEvent(\n type: string,\n payload: unknown,\n): Omit<MobileActivityEvent, 'id' | 'createdAt'> | null {\n if (type === 'goal.status.updated') return goalEvent(payload);\n if (type === 'automation.run.completed') return automationEvent(payload);\n return null;\n}\n\nasync function sendExpoPush(token: string, event: MobileActivityEvent): Promise<void> {\n const response = await fetch(EXPO_PUSH_URL, {\n method: 'POST',\n headers: { 'content-type': 'application/json', accept: 'application/json' },\n body: JSON.stringify({\n to: token,\n title: event.title,\n body: event.body,\n sound: event.priority === 'high' ? 'default' : undefined,\n priority: event.priority,\n data: { eventId: event.id, ...event.payload },\n }),\n });\n if (!response.ok) throw new Error(`Expo push request failed (${response.status})`);\n const result = await response.json().catch(() => null) as { data?: ExpoPushResult | ExpoPushResult[] } | null;\n const item = Array.isArray(result?.data) ? result?.data[0] : result?.data;\n if (item?.status === 'error') {\n if (item.details?.error === 'DeviceNotRegistered') {\n disableMobileDeviceForPushToken(token);\n return;\n }\n throw new Error(`Expo push rejected: ${item.details?.error ?? 'unknown error'}`);\n }\n}\n\nexport class MobileNotificationService {\n private readonly sent = new Set<string>();\n\n handleGatewayEvent(type: string, payload: unknown): void {\n const event = mobileNotificationEventFromGatewayEvent(type, payload);\n if (!event) return;\n const dedupeKey = `${event.type}:${event.entity.kind}:${event.entity.id}:${JSON.stringify(event.payload)}`;\n if (this.sent.has(dedupeKey)) return;\n this.sent.add(dedupeKey);\n void this.deliver(event)\n .catch((err) => {\n log.warn({ err, eventType: event.type, entityId: event.entity.id }, 'Mobile notification delivery failed');\n })\n .finally(() => this.sent.delete(dedupeKey));\n }\n\n private async deliver(input: Omit<MobileActivityEvent, 'id' | 'createdAt'>): Promise<void> {\n const event = createMobileActivityEvent(input);\n const devices = listEnabledMobileDevices().filter((device) => shouldDeliver(event.type, device.preferences));\n await Promise.all(devices.map(async (device) => {\n try {\n await sendExpoPush(device.pushToken, event);\n } catch (err) {\n log.warn({ err, eventId: event.id, deviceId: device.id }, 'Mobile push request failed');\n }\n }));\n }\n}\n"],"mappings":";;;;aAAkD;AAalD,MAAM,MAAM,aAAa,sBAAsB;AAC/C,MAAM,gBAAgB;AAUtB,SAAS,cAAc,MAAmC,aAK9C;AACV,KAAI,SAAS,mBAAoB,QAAO,YAAY;AACpD,KAAI,SAAS,eAAgB,QAAO,YAAY;AAChD,KAAI,SAAS,oBAAqB,QAAO,YAAY;AACrD,QAAO,YAAY;;AAGrB,SAAS,UAAU,SAAwE;AACzF,KAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO;CACpD,MAAM,OAAO;CACb,MAAM,OAAO,KAAK;CAClB,MAAM,SAAS,OAAO,MAAM,OAAO,WAAW,KAAK,KAAK,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;CACxG,MAAM,SAAS,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAC/D,KAAI,CAAC,UAAU,CAAC;EAAC;EAAe;EAAW;EAAO,CAAC,SAAS,OAAO,CAAE,QAAO;CAC5E,MAAM,OAAoC,WAAW,gBACjD,qBACA,WAAW,YACT,iBACA;CACN,MAAM,aAAa,OAAO,MAAM,qBAAqB,WAAW,KAAK,mBAAmB;CACxF,MAAM,QAAQ,aAAa,SAAS,mBAAmB,WAAW,KAAK;AACvE,QAAO;EACL;EACA,QAAQ;GAAE,MAAM;GAAQ,IAAI;GAAQ;EACpC,UAAU,SAAS,sBAAsB,SAAS,iBAAiB,SAAS;EAC5E,OAAO,SAAS,qBAAqB,kBAAkB,SAAS,iBAAiB,iBAAiB;EAClG,MAAM,OAAO,MAAM,UAAU,WAAW,KAAK,MAAM,MAAM,GAAG,IAAI,GAAG,KAAA;EACnE,UAAU;EACV,SAAS;GAAE;GAAO;GAAQ,WAAW;GAAM;EAC5C;;AAGH,SAAS,gBAAgB,SAAwE;AAC/F,KAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO;CACpD,MAAM,MAAO,QAAoC;AACjD,KAAI,CAAC,OAAQ,IAAI,WAAW,YAAY,IAAI,WAAW,aAAa,IAAI,WAAW,YAAc,QAAO;CACxG,MAAM,OAAoC,IAAI,WAAW,cACrD,yBACA;AACJ,QAAO;EACL;EACA,QAAQ;GAAE,MAAM;GAAc,IAAI,IAAI;GAAc;EACpD,UAAU,SAAS,sBAAsB,SAAS;EAClD,OAAO,SAAS,sBAAsB,sBAAsB;EAC5D,MAAM,IAAI,eAAe,MAAM,GAAG,IAAI;EACtC,UAAU;EACV,SAAS;GAAE,OAAO;GAAe,cAAc,IAAI;GAAc,OAAO,IAAI;GAAI,WAAW;GAAM;EAClG;;;AAIH,SAAgB,wCACd,MACA,SACsD;AACtD,KAAI,SAAS,sBAAuB,QAAO,UAAU,QAAQ;AAC7D,KAAI,SAAS,2BAA4B,QAAO,gBAAgB,QAAQ;AACxE,QAAO;;AAGT,eAAe,aAAa,OAAe,OAA2C;CACpF,MAAM,WAAW,MAAM,MAAM,eAAe;EAC1C,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,QAAQ;GAAoB;EAC3E,MAAM,KAAK,UAAU;GACnB,IAAI;GACJ,OAAO,MAAM;GACb,MAAM,MAAM;GACZ,OAAO,MAAM,aAAa,SAAS,YAAY,KAAA;GAC/C,UAAU,MAAM;GAChB,MAAM;IAAE,SAAS,MAAM;IAAI,GAAG,MAAM;IAAS;GAC9C,CAAC;EACH,CAAC;AACF,KAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,6BAA6B,SAAS,OAAO,GAAG;CAClF,MAAM,SAAS,MAAM,SAAS,MAAM,CAAC,YAAY,KAAK;CACtD,MAAM,OAAO,MAAM,QAAQ,QAAQ,KAAK,GAAG,QAAQ,KAAK,KAAK,QAAQ;AACrE,KAAI,MAAM,WAAW,SAAS;AAC5B,MAAI,KAAK,SAAS,UAAU,uBAAuB;AACjD,mCAAgC,MAAM;AACtC;;AAEF,QAAM,IAAI,MAAM,uBAAuB,KAAK,SAAS,SAAS,kBAAkB;;;AAIpF,IAAa,4BAAb,MAAuC;CACrC,uBAAwB,IAAI,KAAa;CAEzC,mBAAmB,MAAc,SAAwB;EACvD,MAAM,QAAQ,wCAAwC,MAAM,QAAQ;AACpE,MAAI,CAAC,MAAO;EACZ,MAAM,YAAY,GAAG,MAAM,KAAK,GAAG,MAAM,OAAO,KAAK,GAAG,MAAM,OAAO,GAAG,GAAG,KAAK,UAAU,MAAM,QAAQ;AACxG,MAAI,KAAK,KAAK,IAAI,UAAU,CAAE;AAC9B,OAAK,KAAK,IAAI,UAAU;AACnB,OAAK,QAAQ,MAAM,CACrB,OAAO,QAAQ;AACd,OAAI,KAAK;IAAE;IAAK,WAAW,MAAM;IAAM,UAAU,MAAM,OAAO;IAAI,EAAE,sCAAsC;IAC1G,CACD,cAAc,KAAK,KAAK,OAAO,UAAU,CAAC;;CAG/C,MAAc,QAAQ,OAAqE;EACzF,MAAM,QAAQ,0BAA0B,MAAM;EAC9C,MAAM,UAAU,0BAA0B,CAAC,QAAQ,WAAW,cAAc,MAAM,MAAM,OAAO,YAAY,CAAC;AAC5G,QAAM,QAAQ,IAAI,QAAQ,IAAI,OAAO,WAAW;AAC9C,OAAI;AACF,UAAM,aAAa,OAAO,WAAW,MAAM;YACpC,KAAK;AACZ,QAAI,KAAK;KAAE;KAAK,SAAS,MAAM;KAAI,UAAU,OAAO;KAAI,EAAE,6BAA6B;;IAEzF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-store.js","names":[],"sources":["../../../src/mobile/notification-store.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { getSqliteDatabase, runSqliteWriteTransaction } from '../storage/sqlite/transaction.js';\n\nimport {\n DEFAULT_MOBILE_NOTIFICATION_PREFERENCES,\n type MobileActivityEvent,\n type MobileDevice,\n type MobileNotificationPermission,\n type MobileNotificationPreferences,\n type MobilePlatform,\n} from './notification-types.js';\n\ntype MobileDeviceRow = {\n device_id: string;\n platform: string;\n push_token: string;\n enabled: number;\n permissions: string;\n preferences_json: string;\n app_version: string | null;\n last_seen_at: number;\n created_at: number;\n updated_at: number;\n};\n\ntype MobileActivityEventRow = {\n event_id: string;\n event_type: MobileActivityEvent['type'];\n entity_kind: MobileActivityEvent['entity']['kind'];\n entity_id: string;\n priority: MobileActivityEvent['priority'];\n title: string;\n body: string | null;\n deep_link: string;\n payload_json: string;\n created_at: number;\n};\n\nfunction parseJson<T>(raw: string, fallback: T): T {\n try {\n return JSON.parse(raw) as T;\n } catch {\n return fallback;\n }\n}\n\nfunction normalizePreferences(input?: Partial<MobileNotificationPreferences>): MobileNotificationPreferences {\n return {\n needsInput: input?.needsInput ?? DEFAULT_MOBILE_NOTIFICATION_PREFERENCES.needsInput,\n failed: input?.failed ?? DEFAULT_MOBILE_NOTIFICATION_PREFERENCES.failed,\n completed: input?.completed ?? DEFAULT_MOBILE_NOTIFICATION_PREFERENCES.completed,\n automationFailed: input?.automationFailed ?? DEFAULT_MOBILE_NOTIFICATION_PREFERENCES.automationFailed,\n };\n}\n\nfunction deviceFromRow(row: MobileDeviceRow): MobileDevice {\n return {\n id: row.device_id,\n platform: row.platform === 'android' ? 'android' : 'ios',\n pushToken: row.push_token,\n enabled: row.enabled !== 0,\n permissions: row.permissions === 'granted' || row.permissions === 'denied' ? row.permissions : 'unknown',\n preferences: normalizePreferences(parseJson<Partial<MobileNotificationPreferences>>(row.preferences_json, {})),\n appVersion: row.app_version ?? undefined,\n lastSeenAt: row.last_seen_at,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nfunction activityFromRow(row: MobileActivityEventRow): MobileActivityEvent {\n return {\n id: row.event_id,\n type: row.event_type,\n entity: { kind: row.entity_kind, id: row.entity_id },\n priority: row.priority,\n title: row.title,\n body: row.body ?? undefined,\n deepLink: row.deep_link,\n payload: parseJson<Record<string, unknown>>(row.payload_json, {}),\n createdAt: row.created_at,\n };\n}\n\nexport type RegisterMobileDeviceInput = {\n id: string;\n platform: MobilePlatform;\n pushToken: string;\n permissions: MobileNotificationPermission;\n preferences?: Partial<MobileNotificationPreferences>;\n appVersion?: string;\n};\n\nexport function registerMobileDevice(input: RegisterMobileDeviceInput): MobileDevice {\n const now = Date.now();\n const preferences = input.preferences\n ? normalizePreferences(input.preferences)\n : getMobileDevice(input.id)?.preferences ?? normalizePreferences();\n runSqliteWriteTransaction((db) => {\n // An Expo token can rotate or be restored onto a new installation id. Keep one\n // active device record per token so the unique index cannot reject a re-register.\n db.prepare(\n `DELETE FROM mobile_devices\n WHERE push_provider = 'expo' AND push_token = ? AND device_id <> ?`,\n ).run(input.pushToken, input.id);\n db.prepare(\n `INSERT INTO mobile_devices (\n device_id, platform, push_token, permissions, preferences_json,\n app_version, last_seen_at, created_at, updated_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(device_id) DO UPDATE SET\n platform = excluded.platform,\n push_token = excluded.push_token,\n enabled = 1,\n permissions = excluded.permissions,\n preferences_json = excluded.preferences_json,\n app_version = excluded.app_version,\n last_seen_at = excluded.last_seen_at,\n updated_at = excluded.updated_at`,\n ).run(\n input.id,\n input.platform,\n input.pushToken,\n input.permissions,\n JSON.stringify(preferences),\n input.appVersion?.trim() || null,\n now,\n now,\n now,\n );\n });\n return getMobileDevice(input.id)!;\n}\n\nexport function getMobileDevice(deviceId: string): MobileDevice | null {\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM mobile_devices WHERE device_id = ?`)\n .get(deviceId) as MobileDeviceRow | undefined;\n return row ? deviceFromRow(row) : null;\n}\n\nexport function listEnabledMobileDevices(): MobileDevice[] {\n return (getSqliteDatabase()\n .prepare(`SELECT * FROM mobile_devices WHERE enabled = 1 AND permissions = 'granted' ORDER BY updated_at DESC`)\n .all() as MobileDeviceRow[]).map(deviceFromRow);\n}\n\nexport function updateMobileDevicePreferences(\n deviceId: string,\n patch: Partial<MobileNotificationPreferences>,\n): MobileDevice | null {\n const current = getMobileDevice(deviceId);\n if (!current) return null;\n const preferences = normalizePreferences({ ...current.preferences, ...patch });\n runSqliteWriteTransaction((db) => {\n db.prepare(`UPDATE mobile_devices SET preferences_json = ?, updated_at = ? WHERE device_id = ?`)\n .run(JSON.stringify(preferences), Date.now(), deviceId);\n });\n return getMobileDevice(deviceId);\n}\n\nexport function removeMobileDevice(deviceId: string): boolean {\n return runSqliteWriteTransaction((db) =>\n db.prepare(`DELETE FROM mobile_devices WHERE device_id = ?`).run(deviceId).changes > 0,\n );\n}\n\nexport function disableMobileDeviceForPushToken(pushToken: string): void {\n runSqliteWriteTransaction((db) => {\n db.prepare(`UPDATE mobile_devices SET enabled = 0, updated_at = ? WHERE push_token = ?`)\n .run(Date.now(), pushToken);\n });\n}\n\nexport type CreateMobileActivityEventInput = Omit<MobileActivityEvent, 'id' | 'createdAt'> & {\n id?: string;\n createdAt?: number;\n};\n\nexport function createMobileActivityEvent(input: CreateMobileActivityEventInput): MobileActivityEvent {\n const event: MobileActivityEvent = {\n ...input,\n id: input.id ?? randomUUID(),\n createdAt: input.createdAt ?? Date.now(),\n };\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `INSERT INTO mobile_activity_events (\n event_id, event_type, entity_kind, entity_id, priority, title, body,\n deep_link, payload_json, created_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n ).run(\n event.id,\n event.type,\n event.entity.kind,\n event.entity.id,\n event.priority,\n event.title,\n event.body ?? null,\n event.deepLink,\n JSON.stringify(event.payload),\n event.createdAt,\n );\n });\n return event;\n}\n\nexport function listMobileActivityEvents(options?: { cursor?: number; limit?: number }): {\n items: MobileActivityEvent[];\n nextCursor: number | null;\n} {\n const limit = Math.max(1, Math.min(100, options?.limit ?? 50));\n const cursor = options?.cursor;\n const rows = (cursor == null\n ? getSqliteDatabase().prepare(`SELECT * FROM mobile_activity_events ORDER BY created_at DESC LIMIT ?`).all(limit)\n : getSqliteDatabase().prepare(`SELECT * FROM mobile_activity_events WHERE created_at < ? ORDER BY created_at DESC LIMIT ?`).all(cursor, limit)\n ) as MobileActivityEventRow[];\n const items = rows.map(activityFromRow);\n return { items, nextCursor: items.length === limit ? items[items.length - 1]!.createdAt : null };\n}\n\nexport function acknowledgeMobileActivityEvent(eventId: string, deviceId: string): boolean {\n if (!getMobileDevice(deviceId)) return false;\n const exists = getSqliteDatabase()\n .prepare(`SELECT 1 FROM mobile_activity_events WHERE event_id = ?`)\n .get(eventId);\n if (!exists) return false;\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `INSERT OR REPLACE INTO mobile_activity_acknowledgements (event_id, device_id, acknowledged_at)\n VALUES (?, ?, ?)`,\n ).run(eventId, deviceId, Date.now());\n });\n return true;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-types.js","names":[],"sources":["../../../src/mobile/notification-types.ts"],"sourcesContent":["export type MobilePlatform = 'ios' | 'android';\nexport type MobileNotificationPermission = 'granted' | 'denied' | 'unknown';\nexport type MobileNotificationPriority = 'normal' | 'high';\nexport type MobileNotificationEventType =\n | 'goal.needs_input'\n | 'goal.blocked'\n | 'goal.completed'\n | 'automation.failed'\n | 'automation.completed';\n\nexport type MobileNotificationPreferences = {\n needsInput: boolean;\n failed: boolean;\n completed: boolean;\n automationFailed: boolean;\n};\n\nexport type MobileDevice = {\n id: string;\n platform: MobilePlatform;\n pushToken: string;\n enabled: boolean;\n permissions: MobileNotificationPermission;\n preferences: MobileNotificationPreferences;\n appVersion?: string;\n lastSeenAt: number;\n createdAt: number;\n updatedAt: number;\n};\n\nexport type MobileActivityEvent = {\n id: string;\n type: MobileNotificationEventType;\n entity: { kind: 'goal' | 'automation'; id: string };\n priority: MobileNotificationPriority;\n title: string;\n body?: string;\n deepLink: string;\n payload: Record<string, unknown>;\n createdAt: number;\n};\n\nexport const DEFAULT_MOBILE_NOTIFICATION_PREFERENCES: MobileNotificationPreferences = {\n needsInput: true,\n failed: true,\n completed: false,\n automationFailed: true,\n};\n"],"mappings":";AA0CA,MAAa,0CAAyE;CACpF,YAAY;CACZ,QAAQ;CACR,WAAW;CACX,kBAAkB;CACnB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-context.js","names":[],"sources":["../../../src/notes/agent-context.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises';\nimport { extname } from 'node:path';\n\nimport type { ImageContent } from '@earendil-works/pi-ai';\n\nimport type { Config } from '../config/schema.js';\nimport type { AgentSourceContext } from '../agent/source-context/types.js';\nimport { getNoteAgentContextRecord, upsertNoteAgentContextRecord } from '../storage/sqlite/index.js';\nimport { mergeSttConfigFromAppConfig } from '../channels/attachments/voice-stt-webchat.js';\nimport { extractDocumentText } from '../document-understanding/extract.js';\nimport { describeImagesWithFallback } from '../agent/image/understanding/runtime.js';\nimport { resolveImageModelConfigForTool } from '../agent/image/tool-model-config.js';\nimport { isSTTAvailable, transcribe } from '../voice/stt/index.js';\nimport type { Note, NoteAttachment, SnapshotTrigger } from './types.js';\n\nconst MAX_NOTE_MARKDOWN_CHARS = 40_000;\nconst MAX_TEXT_ATTACHMENT_CHARS = 20_000;\nconst MAX_TOTAL_CONTEXT_CHARS = 80_000;\nconst MAX_NATIVE_VISION_IMAGES = 4;\nconst MAX_NATIVE_VISION_IMAGE_BYTES = 8 * 1024 * 1024;\n\nexport interface NoteAgentAttachmentContext {\n attachmentId: string;\n type: NoteAttachment['type'];\n fileName: string;\n mimeType: string;\n size: number;\n status: 'ready' | 'unsupported' | 'failed';\n summary?: string;\n transcript?: string;\n extractedText?: string;\n error?: string;\n}\n\nexport interface NoteAgentContextArtifact {\n noteId: string;\n noteUpdatedAt: number;\n contextVersion: string;\n generatedAt: number;\n text: string;\n attachments: NoteAgentAttachmentContext[];\n tokenEstimate: number;\n truncated: boolean;\n status: 'ready' | 'partial' | 'failed';\n}\n\ninterface NoteAgentContextNotesService {\n getAttachmentPath(noteId: string, attachmentId: string): Promise<{ filePath: string; mimeType: string; fileName: string } | null>;\n updateNote(id: string, patch: Partial<Note>, trigger?: SnapshotTrigger): Promise<Note | null>;\n}\n\nconst TEXT_MIME_PREFIXES = ['text/'];\nconst TEXT_MIME_TYPES = new Set([\n 'application/json', 'application/ld+json', 'application/xml', 'application/yaml', 'application/x-yaml',\n 'application/javascript', 'application/typescript',\n]);\nconst TEXT_EXTENSIONS = new Set([\n '.txt', '.md', '.markdown', '.json', '.jsonl', '.csv', '.tsv', '.xml', '.yaml', '.yml', '.log', '.js', '.ts', '.tsx', '.jsx', '.css', '.html', '.sql',\n]);\nconst DOCUMENT_EXTENSIONS = new Set(['.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx']);\n\nfunction truncateText(text: string, maxChars: number): { text: string; truncated: boolean } {\n if (text.length <= maxChars) return { text, truncated: false };\n return { text: `${text.slice(0, maxChars)}\\n\\n[truncated ${text.length - maxChars} chars]`, truncated: true };\n}\n\nfunction isTextLikeAttachment(att: NoteAttachment): boolean {\n const mime = att.mimeType.toLowerCase();\n if (TEXT_MIME_PREFIXES.some((prefix) => mime.startsWith(prefix))) return true;\n if (TEXT_MIME_TYPES.has(mime)) return true;\n return TEXT_EXTENSIONS.has(extname(att.fileName).toLowerCase());\n}\n\nfunction isDocumentAttachment(att: NoteAttachment): boolean {\n const mime = att.mimeType.toLowerCase();\n return mime === 'application/pdf'\n || mime.includes('officedocument')\n || DOCUMENT_EXTENSIONS.has(extname(att.fileName).toLowerCase());\n}\n\nfunction formatTime(ms: number | undefined): string {\n return typeof ms === 'number' && Number.isFinite(ms) ? new Date(ms).toISOString() : 'unknown';\n}\n\nasync function readAttachmentBuffer(notesService: NoteAgentContextNotesService, noteId: string, att: NoteAttachment): Promise<Buffer | null> {\n const located = await notesService.getAttachmentPath(noteId, att.id);\n if (!located) return null;\n return readFile(located.filePath).catch(() => null);\n}\n\nasync function attachmentTextExcerpt(notesService: NoteAgentContextNotesService, noteId: string, att: NoteAttachment): Promise<string | null> {\n if (!isTextLikeAttachment(att)) return null;\n const located = await notesService.getAttachmentPath(noteId, att.id);\n if (!located) return null;\n const raw = await readFile(located.filePath, 'utf8').catch(() => null);\n if (raw === null) return null;\n return truncateText(raw, MAX_TEXT_ATTACHMENT_CHARS).text;\n}\n\nasync function ensureMediaTranscript(params: {\n note: Note;\n att: NoteAttachment;\n notesService: NoteAgentContextNotesService;\n config?: Config;\n}): Promise<string | undefined> {\n const existing = params.att.transcript?.trim();\n if (existing) return existing;\n if (params.att.type !== 'audio' && params.att.type !== 'video') return undefined;\n\n const sttConfig = mergeSttConfigFromAppConfig(params.config?.tools?.media?.audio, params.config?.tools?.media);\n if (!isSTTAvailable(sttConfig)) return undefined;\n const buffer = await readAttachmentBuffer(params.notesService, params.note.id, params.att);\n if (!buffer) return undefined;\n const result = await transcribe(buffer, sttConfig);\n const transcript = result.text?.trim();\n if (!transcript) return undefined;\n const attachments = (params.note.attachments ?? []).map((item) =>\n item.id === params.att.id ? { ...item, transcript } : item,\n );\n await params.notesService.updateNote(params.note.id, { attachments }, 'ai_edit').catch(() => null);\n params.att.transcript = transcript;\n return transcript;\n}\n\nasync function describeImageAttachment(params: {\n note: Note;\n att: NoteAttachment;\n notesService: NoteAgentContextNotesService;\n config?: Config;\n}): Promise<string | undefined> {\n const toolCfg = resolveImageModelConfigForTool({ cfg: params.config });\n const primary = toolCfg?.primary;\n if (!primary) return undefined;\n const buffer = await readAttachmentBuffer(params.notesService, params.note.id, params.att);\n if (!buffer) return undefined;\n const result = await describeImagesWithFallback({\n modelRef: primary,\n fallbacks: toolCfg.fallbacks ?? [],\n images: [{ buffer, mimeType: params.att.mimeType }],\n prompt: `Describe this note attachment for later AI discussion. File name: ${params.att.fileName}. Focus on visible text, diagrams, UI, objects, and any product-relevant details.`,\n maxTokens: 1024,\n timeoutMs: 30_000,\n });\n return result.text.trim() || undefined;\n}\n\nasync function extractDocumentAttachment(params: {\n note: Note;\n att: NoteAttachment;\n notesService: NoteAgentContextNotesService;\n}): Promise<string | undefined> {\n const buffer = await readAttachmentBuffer(params.notesService, params.note.id, params.att);\n if (!buffer) return undefined;\n const result = extractDocumentText({ buffer, fileName: params.att.fileName, mimeType: params.att.mimeType });\n if (!result.ok) return undefined;\n return truncateText(result.text, MAX_TEXT_ATTACHMENT_CHARS).text;\n}\n\nfunction fallbackImageSummary(att: NoteAttachment): string {\n return `Image attachment available for native vision models: ${att.fileName} (${att.mimeType}, ${att.size} bytes). Configure an image understanding model to persist a text summary for non-vision models.`;\n}\n\nfunction fallbackVideoSummary(att: NoteAttachment): string {\n return `Video attachment available: ${att.fileName} (${att.mimeType}, ${att.size} bytes). Audio transcription will be included when STT accepts this media.`;\n}\n\nfunction unsupportedDocumentSummary(att: NoteAttachment): string {\n return `Document extraction is not available for ${att.fileName} (${att.mimeType}).`;\n}\n\nasync function buildAttachmentContext(params: {\n note: Note;\n att: NoteAttachment;\n notesService: NoteAgentContextNotesService;\n config?: Config;\n}): Promise<NoteAgentAttachmentContext> {\n const { note, att, notesService, config } = params;\n try {\n if (att.type === 'audio') {\n const transcript = await ensureMediaTranscript({ note, att, notesService, config });\n return transcript\n ? { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: 'ready', transcript }\n : { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: 'unsupported', summary: 'Audio transcription is not configured or produced no transcript.' };\n }\n const extractedText = await attachmentTextExcerpt(notesService, note.id, att);\n if (extractedText) {\n return { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: 'ready', extractedText };\n }\n if (att.type === 'image') {\n const summary = await describeImageAttachment({ note, att, notesService, config }).catch(() => undefined);\n return { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: summary ? 'ready' : 'unsupported', summary: summary ?? fallbackImageSummary(att) };\n }\n if (att.type === 'video') {\n const transcript = await ensureMediaTranscript({ note, att, notesService, config }).catch(() => undefined);\n return transcript\n ? { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: 'ready', transcript, summary: fallbackVideoSummary(att) }\n : { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: 'unsupported', summary: fallbackVideoSummary(att) };\n }\n if (isDocumentAttachment(att)) {\n const extractedDocumentText = await extractDocumentAttachment({ note, att, notesService }).catch(() => undefined);\n return extractedDocumentText\n ? { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: 'ready', extractedText: extractedDocumentText }\n : { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: 'unsupported', summary: unsupportedDocumentSummary(att) };\n }\n return { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: 'unsupported', summary: 'No extractor is configured for this attachment type.' };\n } catch (err) {\n return { attachmentId: att.id, type: att.type, fileName: att.fileName, mimeType: att.mimeType, size: att.size, status: 'failed', error: err instanceof Error ? err.message : String(err) };\n }\n}\n\nfunction renderAttachmentContext(att: NoteAgentAttachmentContext): string {\n const lines = [\n `### Attachment: ${att.fileName}`,\n `- id: ${att.attachmentId}`,\n `- type: ${att.type}`,\n `- mimeType: ${att.mimeType}`,\n `- size: ${att.size}`,\n `- status: ${att.status}`,\n ];\n if (att.transcript) lines.push('', 'Transcript:', truncateText(att.transcript, MAX_TEXT_ATTACHMENT_CHARS).text);\n if (att.extractedText) lines.push('', 'Extracted text:', truncateText(att.extractedText, MAX_TEXT_ATTACHMENT_CHARS).text);\n if (att.summary) lines.push('', 'Summary:', att.summary);\n if (att.error) lines.push('', 'Error:', att.error);\n return lines.join('\\n');\n}\n\nasync function loadNativeVisionImages(notesService: NoteAgentContextNotesService, note: Note): Promise<ImageContent[]> {\n const images: ImageContent[] = [];\n for (const att of note.attachments ?? []) {\n if (att.type !== 'image') continue;\n if (!att.mimeType.toLowerCase().startsWith('image/')) continue;\n if (att.size > MAX_NATIVE_VISION_IMAGE_BYTES) continue;\n const buffer = await readAttachmentBuffer(notesService, note.id, att);\n if (!buffer || buffer.length > MAX_NATIVE_VISION_IMAGE_BYTES) continue;\n images.push({ type: 'image', data: buffer.toString('base64'), mimeType: att.mimeType });\n if (images.length >= MAX_NATIVE_VISION_IMAGES) break;\n }\n return images;\n}\n\nexport async function buildNoteAgentContextArtifact(params: {\n note: Note;\n notesService: NoteAgentContextNotesService;\n config?: Config;\n force?: boolean;\n}): Promise<NoteAgentContextArtifact> {\n const { note, notesService, config, force } = params;\n if (!force) {\n const cached = getNoteAgentContextRecord<NoteAgentContextArtifact>(note.id);\n if (cached && cached.noteUpdatedAt === note.updatedAt && cached.contextVersion === String(note.updatedAt)) {\n return cached.payload;\n }\n }\n\n const markdown = truncateText(note.markdown.trim() || '(empty)', MAX_NOTE_MARKDOWN_CHARS);\n let truncated = markdown.truncated;\n const attachmentContexts: NoteAgentAttachmentContext[] = [];\n for (const att of note.attachments ?? []) {\n attachmentContexts.push(await buildAttachmentContext({ note, att, notesService, config }));\n }\n\n const blocks = [\n `# Source Note: ${note.title?.trim() || 'Untitled'}`,\n '',\n `- noteId: ${note.id}`,\n `- kind: ${note.kind}`,\n `- status: ${note.status}`,\n `- createdAt: ${formatTime(note.createdAt)}`,\n `- updatedAt: ${formatTime(note.updatedAt)}`,\n note.tags?.length ? `- tags: ${note.tags.join(', ')}` : '- tags: []',\n '',\n '## Markdown',\n markdown.text,\n ];\n if (attachmentContexts.length > 0) {\n blocks.push('', '## Attachments');\n for (const att of attachmentContexts) blocks.push('', renderAttachmentContext(att));\n }\n\n const finalText = truncateText(blocks.join('\\n'), MAX_TOTAL_CONTEXT_CHARS);\n truncated = truncated || finalText.truncated;\n const failed = attachmentContexts.filter((att) => att.status === 'failed').length;\n const unsupported = attachmentContexts.filter((att) => att.status === 'unsupported').length;\n const artifact: NoteAgentContextArtifact = {\n noteId: note.id,\n noteUpdatedAt: note.updatedAt,\n contextVersion: String(note.updatedAt),\n generatedAt: Date.now(),\n text: finalText.text,\n attachments: attachmentContexts,\n tokenEstimate: Math.ceil(finalText.text.length / 4),\n truncated,\n status: failed > 0 ? 'failed' : unsupported > 0 ? 'partial' : 'ready',\n };\n upsertNoteAgentContextRecord({\n noteId: note.id,\n noteUpdatedAt: note.updatedAt,\n contextVersion: artifact.contextVersion,\n generatedAt: artifact.generatedAt,\n payload: artifact,\n });\n return artifact;\n}\n\nexport async function buildNoteAgentContext(params: {\n note: Note;\n notesService: NoteAgentContextNotesService;\n config?: Config;\n force?: boolean;\n}): Promise<AgentSourceContext> {\n const artifact = await buildNoteAgentContextArtifact(params);\n const images = await loadNativeVisionImages(params.notesService, params.note);\n return {\n kind: 'note',\n sourceId: params.note.id,\n version: artifact.contextVersion,\n title: params.note.title?.trim() || 'Untitled',\n text: artifact.text,\n ...(images.length ? { images } : {}),\n tokenEstimate: artifact.tokenEstimate,\n truncated: artifact.truncated,\n };\n}\n\nexport function getCachedNoteAgentContextArtifact(noteId: string): NoteAgentContextArtifact | null {\n return getNoteAgentContextRecord<NoteAgentContextArtifact>(noteId)?.payload ?? null;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"attachment-ref.js","names":[],"sources":["../../../src/notes/attachment-ref.ts"],"sourcesContent":["/** Canonical persisted reference: xopc-attachment://notes/{noteId}/{attachmentId} */\nexport const NOTE_ATTACHMENT_SCHEME = 'xopc-attachment';\n\nconst CANONICAL_REF =\n /^xopc-attachment:\\/\\/notes\\/([^/]+)\\/([^/?#]+)$/i;\n\nexport type ParsedNoteAttachmentRef = {\n noteId: string;\n attachmentId: string;\n};\n\nexport function buildNoteAttachmentRef(noteId: string, attachmentId: string): string {\n return `${NOTE_ATTACHMENT_SCHEME}://notes/${encodeURIComponent(noteId)}/${encodeURIComponent(attachmentId)}`;\n}\n\nexport function parseNoteAttachmentTarget(\n target: string,\n expectedNoteId?: string,\n): ParsedNoteAttachmentRef | null {\n const trimmed = target.trim();\n if (!trimmed) return null;\n\n const canonical = trimmed.split('?')[0].match(CANONICAL_REF);\n if (!canonical) return null;\n\n const noteId = decodeURIComponent(canonical[1]);\n const attachmentId = decodeURIComponent(canonical[2]);\n if (expectedNoteId && noteId !== expectedNoteId) return null;\n return { noteId, attachmentId };\n}\n\nexport function attachmentIdFromTarget(target: string, noteId: string): string | undefined {\n return parseNoteAttachmentTarget(target, noteId)?.attachmentId;\n}\n"],"mappings":";;AACA,MAAa,yBAAyB;AAEtC,MAAM,gBACJ;AAOF,SAAgB,uBAAuB,QAAgB,cAA8B;AACnF,QAAO,GAAG,uBAAuB,WAAW,mBAAmB,OAAO,CAAC,GAAG,mBAAmB,aAAa;;AAG5G,SAAgB,0BACd,QACA,gBACgC;CAChC,MAAM,UAAU,OAAO,MAAM;AAC7B,KAAI,CAAC,QAAS,QAAO;CAErB,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC,GAAG,MAAM,cAAc;AAC5D,KAAI,CAAC,UAAW,QAAO;CAEvB,MAAM,SAAS,mBAAmB,UAAU,GAAG;CAC/C,MAAM,eAAe,mBAAmB,UAAU,GAAG;AACrD,KAAI,kBAAkB,WAAW,eAAgB,QAAO;AACxD,QAAO;EAAE;EAAQ;EAAc;;AAGjC,SAAgB,uBAAuB,QAAgB,QAAoC;AACzF,QAAO,0BAA0B,QAAQ,OAAO,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"note-attachment-sync.js","names":[],"sources":["../../../src/notes/note-attachment-sync.ts"],"sourcesContent":["import type { Note, NoteAttachment } from './types.js';\nimport { parseNoteMarkdown } from './note-markdown.js';\n\nexport function collectReferencedAttachmentIds(note: Pick<Note, 'id' | 'markdown'>): Set<string> {\n return new Set(parseNoteMarkdown(note.markdown, note.id).attachments.map((item) => item.attachmentId));\n}\n\nexport function partitionAttachmentsByReference(\n note: Pick<Note, 'id' | 'markdown' | 'attachments'>,\n): { kept: NoteAttachment[]; removed: NoteAttachment[] } {\n const referenced = collectReferencedAttachmentIds(note);\n const attachments = note.attachments ?? [];\n const kept: NoteAttachment[] = [];\n const removed: NoteAttachment[] = [];\n\n for (const attachment of attachments) {\n if (referenced.has(attachment.id)) kept.push(attachment);\n else removed.push(attachment);\n }\n\n return { kept, removed };\n}\n"],"mappings":";;AAGA,SAAgB,+BAA+B,MAAkD;AAC/F,QAAO,IAAI,IAAI,kBAAkB,KAAK,UAAU,KAAK,GAAG,CAAC,YAAY,KAAK,SAAS,KAAK,aAAa,CAAC;;AAGxG,SAAgB,gCACd,MACuD;CACvD,MAAM,aAAa,+BAA+B,KAAK;CACvD,MAAM,cAAc,KAAK,eAAe,EAAE;CAC1C,MAAM,OAAyB,EAAE;CACjC,MAAM,UAA4B,EAAE;AAEpC,MAAK,MAAM,cAAc,YACvB,KAAI,WAAW,IAAI,WAAW,GAAG,CAAE,MAAK,KAAK,WAAW;KACnD,SAAQ,KAAK,WAAW;AAG/B,QAAO;EAAE;EAAM;EAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"note-index-meta.js","names":[],"sources":["../../../src/notes/note-index-meta.ts"],"sourcesContent":["import type { Note } from './types.js';\nimport { attachmentIdFromTarget, parseNoteAttachmentTarget } from './attachment-ref.js';\nimport { parseNoteMarkdown } from './note-markdown.js';\n\nconst SNIPPET_LENGTH = 100;\nconst MARKDOWN_IMAGE = /!\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\nconst MARKDOWN_LINK = /(?<!!)\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\nconst BARE_ATTACHMENT_REF = /xopc-attachment:\\/\\/notes\\/[^/]+\\/[^/?#\"'\\s)]+/gi;\n\nexport { parseNoteAttachmentTarget, buildNoteAttachmentRef } from './attachment-ref.js';\n\nexport function notePlainText(note: Pick<Note, 'id' | 'markdown'>): string {\n return note.markdown ?? '';\n}\n\nfunction isNoteMediaTarget(target: string): boolean {\n return parseNoteAttachmentTarget(target) !== null;\n}\n\nexport function stripMediaFromPlainText(text: string): string {\n let result = text.replace(MARKDOWN_IMAGE, ' ');\n result = result.replace(MARKDOWN_LINK, (full, _alt, target) => {\n if (typeof target !== 'string') return full;\n return isNoteMediaTarget(target) ? ' ' : full;\n });\n result = result.replace(BARE_ATTACHMENT_REF, ' ');\n return result.replace(/\\s+/g, ' ').trim();\n}\n\nexport function extractAttachmentFileNames(note: Pick<Note, 'attachments'>): string[] | undefined {\n const names = note.attachments?.map((item) => item.fileName.trim().toLowerCase()).filter(Boolean);\n if (!names?.length) return undefined;\n return [...new Set(names)];\n}\n\nexport function extractCoverAttachmentId(note: Note): string | undefined {\n const text = notePlainText(note);\n if (!text.trim()) return undefined;\n\n for (const match of text.matchAll(MARKDOWN_IMAGE)) {\n const target = match[2];\n if (typeof target !== 'string') continue;\n const attachmentId = attachmentIdFromTarget(target, note.id);\n if (!attachmentId) continue;\n const attachment = note.attachments?.find((item) => item.id === attachmentId);\n if (!attachment || attachment.type === 'image') return attachmentId;\n }\n\n for (const match of text.matchAll(BARE_ATTACHMENT_REF)) {\n const parsed = parseNoteAttachmentTarget(match[0], note.id);\n if (!parsed) continue;\n const attachment = note.attachments?.find((item) => item.id === parsed.attachmentId);\n if (!attachment || attachment.type === 'image') return parsed.attachmentId;\n }\n\n return undefined;\n}\n\nexport function buildNoteSnippet(note: Pick<Note, 'id' | 'markdown'>): string | undefined {\n const parsed = parseNoteMarkdown(note.markdown, note.id);\n if (!parsed.plainText.trim()) return undefined;\n const clean = stripMediaFromPlainText(parsed.plainText);\n if (!clean) return undefined;\n return clean.length > SNIPPET_LENGTH ? `${clean.slice(0, SNIPPET_LENGTH)}…` : clean;\n}\n\nfunction extractVoiceAttachment(note: Note): { voiceAttachmentId?: string; voiceDurationSec?: number } {\n const audio = note.attachments?.find((a) => a.type === 'audio');\n if (!audio) return {};\n return { voiceAttachmentId: audio.id, voiceDurationSec: audio.duration };\n}\n\nexport function buildNoteIndexMeta(note: Note): {\n snippet?: string;\n coverAttachmentId?: string;\n voiceAttachmentId?: string;\n voiceDurationSec?: number;\n attachmentNames?: string[];\n headingCount?: number;\n taskCount?: number;\n uncheckedTaskCount?: number;\n linkCount?: number;\n} {\n const parsed = parseNoteMarkdown(note.markdown, note.id);\n const coverAttachmentId = extractCoverAttachmentId(note);\n const snippet = buildNoteSnippet(note);\n const attachmentNames = extractAttachmentFileNames(note);\n const { voiceAttachmentId, voiceDurationSec } = extractVoiceAttachment(note);\n return {\n snippet,\n coverAttachmentId,\n voiceAttachmentId,\n voiceDurationSec,\n attachmentNames,\n headingCount: parsed.headings.length,\n taskCount: parsed.tasks.length,\n uncheckedTaskCount: parsed.tasks.filter((task) => !task.checked).length,\n linkCount: parsed.wikilinks.length,\n };\n}\n"],"mappings":";;;AAIA,MAAM,iBAAiB;AACvB,MAAM,iBAAiB;AACvB,MAAM,gBAAgB;AACtB,MAAM,sBAAsB;AAI5B,SAAgB,cAAc,MAA6C;AACzE,QAAO,KAAK,YAAY;;AAG1B,SAAS,kBAAkB,QAAyB;AAClD,QAAO,0BAA0B,OAAO,KAAK;;AAG/C,SAAgB,wBAAwB,MAAsB;CAC5D,IAAI,SAAS,KAAK,QAAQ,gBAAgB,IAAI;AAC9C,UAAS,OAAO,QAAQ,gBAAgB,MAAM,MAAM,WAAW;AAC7D,MAAI,OAAO,WAAW,SAAU,QAAO;AACvC,SAAO,kBAAkB,OAAO,GAAG,MAAM;GACzC;AACF,UAAS,OAAO,QAAQ,qBAAqB,IAAI;AACjD,QAAO,OAAO,QAAQ,QAAQ,IAAI,CAAC,MAAM;;AAG3C,SAAgB,2BAA2B,MAAuD;CAChG,MAAM,QAAQ,KAAK,aAAa,KAAK,SAAS,KAAK,SAAS,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,QAAQ;AACjG,KAAI,CAAC,OAAO,OAAQ,QAAO,KAAA;AAC3B,QAAO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC;;AAG5B,SAAgB,yBAAyB,MAAgC;CACvE,MAAM,OAAO,cAAc,KAAK;AAChC,KAAI,CAAC,KAAK,MAAM,CAAE,QAAO,KAAA;AAEzB,MAAK,MAAM,SAAS,KAAK,SAAS,eAAe,EAAE;EACjD,MAAM,SAAS,MAAM;AACrB,MAAI,OAAO,WAAW,SAAU;EAChC,MAAM,eAAe,uBAAuB,QAAQ,KAAK,GAAG;AAC5D,MAAI,CAAC,aAAc;EACnB,MAAM,aAAa,KAAK,aAAa,MAAM,SAAS,KAAK,OAAO,aAAa;AAC7E,MAAI,CAAC,cAAc,WAAW,SAAS,QAAS,QAAO;;AAGzD,MAAK,MAAM,SAAS,KAAK,SAAS,oBAAoB,EAAE;EACtD,MAAM,SAAS,0BAA0B,MAAM,IAAI,KAAK,GAAG;AAC3D,MAAI,CAAC,OAAQ;EACb,MAAM,aAAa,KAAK,aAAa,MAAM,SAAS,KAAK,OAAO,OAAO,aAAa;AACpF,MAAI,CAAC,cAAc,WAAW,SAAS,QAAS,QAAO,OAAO;;;AAMlE,SAAgB,iBAAiB,MAAyD;CACxF,MAAM,SAAS,kBAAkB,KAAK,UAAU,KAAK,GAAG;AACxD,KAAI,CAAC,OAAO,UAAU,MAAM,CAAE,QAAO,KAAA;CACrC,MAAM,QAAQ,wBAAwB,OAAO,UAAU;AACvD,KAAI,CAAC,MAAO,QAAO,KAAA;AACnB,QAAO,MAAM,SAAS,iBAAiB,GAAG,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK;;AAGhF,SAAS,uBAAuB,MAAuE;CACrG,MAAM,QAAQ,KAAK,aAAa,MAAM,MAAM,EAAE,SAAS,QAAQ;AAC/D,KAAI,CAAC,MAAO,QAAO,EAAE;AACrB,QAAO;EAAE,mBAAmB,MAAM;EAAI,kBAAkB,MAAM;EAAU;;AAG1E,SAAgB,mBAAmB,MAUjC;CACA,MAAM,SAAS,kBAAkB,KAAK,UAAU,KAAK,GAAG;CACxD,MAAM,oBAAoB,yBAAyB,KAAK;CACxD,MAAM,UAAU,iBAAiB,KAAK;CACtC,MAAM,kBAAkB,2BAA2B,KAAK;CACxD,MAAM,EAAE,mBAAmB,qBAAqB,uBAAuB,KAAK;AAC5E,QAAO;EACL;EACA;EACA;EACA;EACA;EACA,cAAc,OAAO,SAAS;EAC9B,WAAW,OAAO,MAAM;EACxB,oBAAoB,OAAO,MAAM,QAAQ,SAAS,CAAC,KAAK,QAAQ,CAAC;EACjE,WAAW,OAAO,UAAU;EAC7B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"note-markdown.js","names":[],"sources":["../../../src/notes/note-markdown.ts"],"sourcesContent":["import { attachmentIdFromTarget } from './attachment-ref.js';\n\nexport interface NoteHeading {\n id: string;\n depth: 1 | 2 | 3 | 4 | 5 | 6;\n title: string;\n start: number;\n end: number;\n path: string[];\n}\n\nexport interface NoteSection {\n id: string;\n heading?: NoteHeading;\n start: number;\n end: number;\n markdown: string;\n plainText: string;\n}\n\nexport interface NoteTaskItem {\n id: string;\n text: string;\n checked: boolean;\n start: number;\n end: number;\n line: number;\n}\n\nexport interface NoteWikiLink {\n raw: string;\n target: string;\n alias?: string;\n heading?: string;\n start: number;\n end: number;\n}\n\nexport interface NoteAttachmentRef {\n attachmentId: string;\n start: number;\n end: number;\n}\n\nexport interface NoteCallout {\n type: string;\n title?: string;\n start: number;\n end: number;\n}\n\nexport interface ParsedNoteMarkdown {\n plainText: string;\n headings: NoteHeading[];\n sections: NoteSection[];\n tasks: NoteTaskItem[];\n tags: string[];\n wikilinks: NoteWikiLink[];\n attachments: NoteAttachmentRef[];\n callouts: NoteCallout[];\n codeBlocks: Array<{ lang?: string; start: number; end: number; code: string }>;\n}\n\nconst WIKILINK = /!??\\[\\[([^\\]]+)\\]\\]/g;\nconst TAG = /(^|\\s)#([\\p{L}\\p{N}_/-]+)/gu;\nconst MARKDOWN_IMAGE = /!\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\nconst MARKDOWN_LINK = /(?<!!)\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\nconst BARE_ATTACHMENT_REF = /xopc-attachment:\\/\\/notes\\/([^/]+)\\/([^/?#\"'\\s)]+)/gi;\n\nfunction stripMarkdown(markdown: string): string {\n return markdown\n .replace(/^---[\\s\\S]*?\\n---\\s*/m, '')\n .replace(/```[\\s\\S]*?```/g, ' ')\n .replace(MARKDOWN_IMAGE, ' ')\n .replace(MARKDOWN_LINK, '$1')\n .replace(WIKILINK, '$1')\n .replace(/^\\s{0,3}>\\s?/gm, '')\n .replace(/^\\s{0,3}#{1,6}\\s+/gm, '')\n .replace(/^\\s*[-*+]\\s+\\[[ xX]\\]\\s+/gm, '')\n .replace(/^\\s*[-*+]\\s+/gm, '')\n .replace(/^\\s*\\d+\\.\\s+/gm, '')\n .replace(/[*_`~]/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n}\n\nfunction lineOffsets(markdown: string): Array<{ line: string; start: number; end: number }> {\n const lines: Array<{ line: string; start: number; end: number }> = [];\n let start = 0;\n for (const part of markdown.split(/\\n/)) {\n const end = start + part.length;\n lines.push({ line: part, start, end });\n start = end + 1;\n }\n return lines;\n}\n\nexport function parseNoteMarkdown(markdown = '', noteId?: string): ParsedNoteMarkdown {\n const headings: NoteHeading[] = [];\n const tasks: NoteTaskItem[] = [];\n const callouts: NoteCallout[] = [];\n const codeBlocks: ParsedNoteMarkdown['codeBlocks'] = [];\n const stack: string[] = [];\n let inCode: { start: number; lang?: string; lines: string[] } | null = null;\n\n lineOffsets(markdown).forEach(({ line, start, end }, index) => {\n const fence = /^```\\s*([^`]*)$/.exec(line.trim());\n if (fence) {\n if (inCode) {\n codeBlocks.push({ start: inCode.start, end, lang: inCode.lang, code: inCode.lines.join('\\n') });\n inCode = null;\n } else {\n inCode = { start, lang: fence[1]?.trim() || undefined, lines: [] };\n }\n return;\n }\n if (inCode) {\n inCode.lines.push(line);\n return;\n }\n\n const heading = /^(#{1,6})\\s+(.+?)\\s*$/.exec(line);\n if (heading) {\n const depth = heading[1].length as 1 | 2 | 3 | 4 | 5 | 6;\n stack.length = depth - 1;\n stack[depth - 1] = heading[2].trim();\n headings.push({\n id: `heading-${headings.length + 1}`,\n depth,\n title: heading[2].trim(),\n start,\n end,\n path: stack.slice(0, depth),\n });\n }\n\n const task = /^\\s*[-*+]\\s+\\[([ xX])\\]\\s+(.+)$/.exec(line);\n if (task) {\n tasks.push({\n id: `task-${tasks.length + 1}`,\n text: task[2].trim(),\n checked: task[1].toLowerCase() === 'x',\n start,\n end,\n line: index + 1,\n });\n }\n\n const callout = /^\\s*>\\s*\\[!([A-Za-z0-9_-]+)\\]\\s*(.*)$/.exec(line);\n if (callout) {\n callouts.push({ type: callout[1].toLowerCase(), title: callout[2]?.trim() || undefined, start, end });\n }\n });\n\n if (inCode) {\n codeBlocks.push({ start: inCode.start, end: markdown.length, lang: inCode.lang, code: inCode.lines.join('\\n') });\n }\n\n const sections: NoteSection[] = [];\n if (headings.length === 0) {\n sections.push({ id: 'section-1', start: 0, end: markdown.length, markdown, plainText: stripMarkdown(markdown) });\n } else {\n for (let i = 0; i < headings.length; i += 1) {\n const heading = headings[i];\n const next = headings.slice(i + 1).find((item) => item.depth <= heading.depth);\n const end = next?.start ?? markdown.length;\n const slice = markdown.slice(heading.start, end).trimEnd();\n sections.push({ id: `section-${i + 1}`, heading, start: heading.start, end, markdown: slice, plainText: stripMarkdown(slice) });\n }\n }\n\n const wikilinks: NoteWikiLink[] = [];\n for (const match of markdown.matchAll(WIKILINK)) {\n const rawInner = match[1];\n const [targetPart, alias] = rawInner.split('|');\n const [target, heading] = targetPart.split('#');\n wikilinks.push({ raw: match[0], target: target.trim(), heading: heading?.trim() || undefined, alias: alias?.trim() || undefined, start: match.index ?? 0, end: (match.index ?? 0) + match[0].length });\n }\n\n const tags = new Set<string>();\n for (const match of markdown.matchAll(TAG)) tags.add(match[2]);\n\n const attachments = new Map<string, NoteAttachmentRef>();\n const addAttachment = (target: string, start: number, end: number) => {\n const attachmentId = attachmentIdFromTarget(target, noteId ?? '');\n if (attachmentId) attachments.set(`${attachmentId}:${start}`, { attachmentId, start, end });\n };\n for (const match of markdown.matchAll(MARKDOWN_IMAGE)) addAttachment(match[2], match.index ?? 0, (match.index ?? 0) + match[0].length);\n for (const match of markdown.matchAll(MARKDOWN_LINK)) addAttachment(match[2], match.index ?? 0, (match.index ?? 0) + match[0].length);\n for (const match of markdown.matchAll(BARE_ATTACHMENT_REF)) {\n const start = match.index ?? 0;\n const matchedNoteId = decodeURIComponent(match[1]);\n if (!noteId || matchedNoteId === noteId) attachments.set(`${decodeURIComponent(match[2])}:${start}`, { attachmentId: decodeURIComponent(match[2]), start, end: start + match[0].length });\n }\n\n return {\n plainText: stripMarkdown(markdown),\n headings,\n sections,\n tasks,\n tags: [...tags],\n wikilinks,\n attachments: [...attachments.values()],\n callouts,\n codeBlocks,\n };\n}\n\nexport function applyNotePatch(markdown: string, operations: import('./types.js').NotePatchOperation[], parsed = parseNoteMarkdown(markdown)): string {\n let next = markdown;\n const rangeOps = operations.filter((op) => op.type === 'replaceRange' || op.type === 'insertAt') as Array<Extract<import('./types.js').NotePatchOperation, { type: 'replaceRange' | 'insertAt' }>>;\n for (const op of [...rangeOps].sort((a, b) => (b.type === 'insertAt' ? b.offset : b.from) - (a.type === 'insertAt' ? a.offset : a.from))) {\n if (op.type === 'insertAt') next = `${next.slice(0, op.offset)}${op.markdown}${next.slice(op.offset)}`;\n else next = `${next.slice(0, op.from)}${op.markdown}${next.slice(op.to)}`;\n }\n for (const op of operations) {\n if (op.type === 'appendSection') next = `${next.trimEnd()}\\n\\n## ${op.heading}\\n\\n${op.markdown.trim()}\\n`;\n if (op.type === 'prependSection') next = `## ${op.heading}\\n\\n${op.markdown.trim()}\\n\\n${next.trimStart()}`;\n if (op.type === 'replaceSection') {\n const section = parsed.sections.find((item) => item.id === op.sectionId);\n if (section) next = `${next.slice(0, section.start)}${op.markdown}${next.slice(section.end)}`;\n }\n }\n return next;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.js","names":[],"sources":["../../../src/notes/paths.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport { resolveStateDir } from '../config/paths-state.js';\n\nexport function resolveNotesDir(): string {\n return join(resolveStateDir(), 'notes');\n}\n\nexport function resolveNotesIndexPath(): string {\n return join(resolveNotesDir(), 'index.json');\n}\n\nexport function resolveNoteItemPath(noteId: string): string {\n return join(resolveNotesDir(), 'items', `${noteId}.json`);\n}\n\nexport function resolveNoteMediaDir(noteId: string): string {\n return join(resolveNotesDir(), 'media', noteId);\n}\n\nexport function resolveNoteHistoryDir(noteId: string): string {\n return join(resolveNotesDir(), 'history', noteId);\n}\n"],"mappings":";;;kBAE2D;AAE3D,SAAgB,kBAA0B;AACxC,QAAO,KAAK,iBAAiB,EAAE,QAAQ;;AAGzC,SAAgB,wBAAgC;AAC9C,QAAO,KAAK,iBAAiB,EAAE,aAAa;;AAG9C,SAAgB,oBAAoB,QAAwB;AAC1D,QAAO,KAAK,iBAAiB,EAAE,SAAS,GAAG,OAAO,OAAO;;AAG3D,SAAgB,oBAAoB,QAAwB;AAC1D,QAAO,KAAK,iBAAiB,EAAE,SAAS,OAAO;;AAGjD,SAAgB,sBAAsB,QAAwB;AAC5D,QAAO,KAAK,iBAAiB,EAAE,WAAW,OAAO"}