@xopcai/xopc 0.0.149 → 0.0.151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2914) hide show
  1. package/README.md +10 -0
  2. package/README.zh-CN.md +10 -0
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/dashscope/src/image-generation-provider.js +0 -2
  5. package/dist/extensions/demo-memory/src/index.js +0 -2
  6. package/dist/extensions/fal/src/image-generation-provider.js +0 -2
  7. package/dist/extensions/feishu/src/actions/message-action-handler.js +0 -2
  8. package/dist/extensions/feishu/src/adapters/cli-login.js +0 -2
  9. package/dist/extensions/feishu/src/adapters/gateway-setup.js +0 -2
  10. package/dist/extensions/feishu/src/adapters/onboard-cli.js +0 -2
  11. package/dist/extensions/feishu/src/auth/app-registration.js +0 -2
  12. package/dist/extensions/feishu/src/auth/pairing.js +0 -2
  13. package/dist/extensions/feishu/src/auth/paths.js +0 -2
  14. package/dist/extensions/feishu/src/directory/directory-adapter.js +0 -2
  15. package/dist/extensions/feishu/src/format.js +0 -2
  16. package/dist/extensions/feishu/src/index.js +0 -2
  17. package/dist/extensions/feishu/src/outbound/actions.js +0 -2
  18. package/dist/extensions/feishu/src/outbound/media-load.js +0 -2
  19. package/dist/extensions/feishu/src/outbound/outbound-adapter.js +0 -2
  20. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js +0 -2
  21. package/dist/extensions/feishu/src/pairing-config-resolver.js +0 -2
  22. package/dist/extensions/feishu/src/plugin.js +0 -2
  23. package/dist/extensions/feishu/src/schema/config-schema.js +0 -2
  24. package/dist/extensions/feishu/src/state/accounts.js +0 -2
  25. package/dist/extensions/feishu/src/state/message-bindings.js +0 -2
  26. package/dist/extensions/feishu/src/state/thread-bindings.js +0 -2
  27. package/dist/extensions/feishu/src/status/doctor.js +0 -2
  28. package/dist/extensions/feishu/src/status/status-adapter.js +0 -2
  29. package/dist/extensions/feishu/src/streaming/streaming-adapter.js +0 -2
  30. package/dist/extensions/feishu/src/subagent-hooks.js +0 -2
  31. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js +0 -2
  32. package/dist/extensions/feishu/src/tools/docx/docx-color-text.d.ts +6 -3386
  33. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js +0 -2
  34. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.d.ts +16 -16927
  35. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js +0 -2
  36. package/dist/extensions/feishu/src/tools/tools.js +0 -2
  37. package/dist/extensions/feishu/src/transport/client/client.js +2 -4
  38. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js +0 -2
  39. package/dist/extensions/feishu/src/transport/client/lark-sdk.d.ts +3 -0
  40. package/dist/extensions/feishu/src/transport/client/lark-sdk.js +14 -0
  41. package/dist/extensions/feishu/src/transport/reliability/dedupe.js +0 -2
  42. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js +0 -2
  43. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +0 -2
  44. package/dist/extensions/feishu/src/transport/socket-mode/retry.js +0 -2
  45. package/dist/extensions/feishu/src/transport/text/mentions.js +0 -2
  46. package/dist/extensions/feishu/src/transport/webhook/monitor.js +3 -5
  47. package/dist/extensions/feishu/src/ui/config-surface.js +0 -2
  48. package/dist/extensions/feishu/src/workflow-progress.js +0 -2
  49. package/dist/extensions/google/src/image-generation-provider.js +0 -2
  50. package/dist/extensions/minimax/src/image-generation-provider.js +0 -2
  51. package/dist/extensions/openai/src/image-generation-provider.js +0 -2
  52. package/dist/extensions/telegram/src/access-control.js +0 -2
  53. package/dist/extensions/telegram/src/account-manager.js +0 -2
  54. package/dist/extensions/telegram/src/actions/message-actions.js +0 -2
  55. package/dist/extensions/telegram/src/adapters/command-adapter.js +0 -2
  56. package/dist/extensions/telegram/src/adapters/config-adapter.js +0 -2
  57. package/dist/extensions/telegram/src/adapters/debounce-keys.js +0 -2
  58. package/dist/extensions/telegram/src/adapters/gateway-adapter.js +0 -2
  59. package/dist/extensions/telegram/src/adapters/gateway-setup.js +0 -2
  60. package/dist/extensions/telegram/src/adapters/inbound-access.js +0 -2
  61. package/dist/extensions/telegram/src/adapters/index.js +0 -2
  62. package/dist/extensions/telegram/src/adapters/onboard-cli.js +0 -2
  63. package/dist/extensions/telegram/src/adapters/outbound-adapter.js +0 -2
  64. package/dist/extensions/telegram/src/adapters/security-adapter.js +0 -2
  65. package/dist/extensions/telegram/src/adapters/setup-wizard.js +0 -2
  66. package/dist/extensions/telegram/src/adapters/status-adapter.js +0 -2
  67. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +0 -2
  68. package/dist/extensions/telegram/src/api-root.js +0 -2
  69. package/dist/extensions/telegram/src/approval-delivery.js +0 -2
  70. package/dist/extensions/telegram/src/approval-store.js +0 -2
  71. package/dist/extensions/telegram/src/caption.js +0 -2
  72. package/dist/extensions/telegram/src/command-handler.js +0 -2
  73. package/dist/extensions/telegram/src/config-schema.js +0 -2
  74. package/dist/extensions/telegram/src/conversation-id.js +0 -2
  75. package/dist/extensions/telegram/src/dedupe.js +0 -2
  76. package/dist/extensions/telegram/src/delivery-chat-id.js +0 -2
  77. package/dist/extensions/telegram/src/doctor.js +0 -2
  78. package/dist/extensions/telegram/src/draft-stream-lifecycle.js +0 -2
  79. package/dist/extensions/telegram/src/draft-stream-loop.js +0 -2
  80. package/dist/extensions/telegram/src/draft-stream.js +0 -2
  81. package/dist/extensions/telegram/src/errors.js +0 -2
  82. package/dist/extensions/telegram/src/exec-approval-handler.js +0 -2
  83. package/dist/extensions/telegram/src/exec-approvals.js +0 -2
  84. package/dist/extensions/telegram/src/focus-handler.js +0 -2
  85. package/dist/extensions/telegram/src/format.js +0 -2
  86. package/dist/extensions/telegram/src/group-config-resolver.js +0 -2
  87. package/dist/extensions/telegram/src/inbound-coalescer.js +0 -2
  88. package/dist/extensions/telegram/src/inbound-processor.js +0 -2
  89. package/dist/extensions/telegram/src/index.js +0 -2
  90. package/dist/extensions/telegram/src/inline-keyboards.js +0 -2
  91. package/dist/extensions/telegram/src/network-errors.js +0 -2
  92. package/dist/extensions/telegram/src/outbound-sender.js +0 -2
  93. package/dist/extensions/telegram/src/pairing-config-resolver.js +0 -2
  94. package/dist/extensions/telegram/src/plugin-defaults.js +0 -2
  95. package/dist/extensions/telegram/src/plugin.js +0 -2
  96. package/dist/extensions/telegram/src/polling-session.js +0 -2
  97. package/dist/extensions/telegram/src/proxy-fetch.js +0 -2
  98. package/dist/extensions/telegram/src/reactions.js +0 -2
  99. package/dist/extensions/telegram/src/reply-params.js +0 -2
  100. package/dist/extensions/telegram/src/routing-integration.js +0 -2
  101. package/dist/extensions/telegram/src/send-options.js +0 -2
  102. package/dist/extensions/telegram/src/sent-cache.js +0 -2
  103. package/dist/extensions/telegram/src/startup-errors.js +0 -2
  104. package/dist/extensions/telegram/src/telegram-actions.js +0 -2
  105. package/dist/extensions/telegram/src/telegram-draft-errors.js +0 -2
  106. package/dist/extensions/telegram/src/thread-bindings.js +0 -2
  107. package/dist/extensions/telegram/src/timeout-abort.js +0 -2
  108. package/dist/extensions/telegram/src/token-resolver.js +0 -2
  109. package/dist/extensions/telegram/src/update-offset-store.js +0 -2
  110. package/dist/extensions/telegram/src/workflow-progress.js +0 -2
  111. package/dist/extensions/telegram/xopc.extension.json +1 -1
  112. package/dist/extensions/weixin/src/adapters/onboard-cli.js +0 -2
  113. package/dist/extensions/weixin/src/api/api.js +0 -2
  114. package/dist/extensions/weixin/src/api/config-cache.js +0 -2
  115. package/dist/extensions/weixin/src/api/session-guard.js +0 -2
  116. package/dist/extensions/weixin/src/api/types.js +0 -2
  117. package/dist/extensions/weixin/src/auth/accounts.js +0 -2
  118. package/dist/extensions/weixin/src/auth/login-qr.js +0 -2
  119. package/dist/extensions/weixin/src/auth/pairing.js +0 -2
  120. package/dist/extensions/weixin/src/auth/weixin-account-id.js +0 -2
  121. package/dist/extensions/weixin/src/cdn/aes-ecb.js +0 -2
  122. package/dist/extensions/weixin/src/cdn/cdn-upload.js +0 -2
  123. package/dist/extensions/weixin/src/cdn/cdn-url.js +0 -2
  124. package/dist/extensions/weixin/src/cdn/pic-decrypt.js +0 -2
  125. package/dist/extensions/weixin/src/cdn/upload.js +0 -2
  126. package/dist/extensions/weixin/src/cli/gateway-qr-login.js +0 -2
  127. package/dist/extensions/weixin/src/cli/qr-login.js +0 -2
  128. package/dist/extensions/weixin/src/config-schema.js +0 -2
  129. package/dist/extensions/weixin/src/config-surface.js +0 -2
  130. package/dist/extensions/weixin/src/delivery-to.js +0 -2
  131. package/dist/extensions/weixin/src/index.js +0 -2
  132. package/dist/extensions/weixin/src/media/data-url.js +0 -2
  133. package/dist/extensions/weixin/src/media/media-download.js +0 -2
  134. package/dist/extensions/weixin/src/media/mime.js +0 -2
  135. package/dist/extensions/weixin/src/media/silk-transcode.js +0 -2
  136. package/dist/extensions/weixin/src/messaging/context-token-init.js +0 -2
  137. package/dist/extensions/weixin/src/messaging/debug-mode.js +0 -2
  138. package/dist/extensions/weixin/src/messaging/error-notice.js +0 -2
  139. package/dist/extensions/weixin/src/messaging/inbound.js +0 -2
  140. package/dist/extensions/weixin/src/messaging/markdown-filter.js +0 -2
  141. package/dist/extensions/weixin/src/messaging/process-message.js +0 -2
  142. package/dist/extensions/weixin/src/messaging/send-media.js +0 -2
  143. package/dist/extensions/weixin/src/messaging/send.js +0 -2
  144. package/dist/extensions/weixin/src/messaging/slash-commands.js +0 -2
  145. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js +0 -2
  146. package/dist/extensions/weixin/src/monitor/monitor.js +0 -2
  147. package/dist/extensions/weixin/src/outbound-send.js +0 -2
  148. package/dist/extensions/weixin/src/pairing-config-resolver.js +0 -2
  149. package/dist/extensions/weixin/src/plugin.js +0 -2
  150. package/dist/extensions/weixin/src/routing-integration.js +0 -2
  151. package/dist/extensions/weixin/src/storage/state-dir.js +0 -2
  152. package/dist/extensions/weixin/src/storage/sync-buf.js +0 -2
  153. package/dist/extensions/weixin/src/util/logger.js +0 -2
  154. package/dist/extensions/weixin/src/util/random.js +0 -2
  155. package/dist/extensions/weixin/src/util/redact.js +0 -2
  156. package/dist/extensions/weixin/src/workflow-progress.js +0 -2
  157. package/dist/gateway/static/root/assets/{activity-store-B4s0ipx2.js → activity-store-uu1xu9Pl.js} +1 -1
  158. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BuO-OVfD.js} +1 -1
  159. package/dist/gateway/static/root/assets/agents-Bpv3h31T.js +2 -0
  160. package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-CwL38LEV.js} +1 -1
  161. package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-B6OU3Eol.js} +1 -1
  162. package/dist/gateway/static/root/assets/appearance-settings-BaP4GFvN.js +1 -0
  163. package/dist/gateway/static/root/assets/apps-page-DZKNIMRg.js +1 -0
  164. package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-CJX3zIh_.js} +1 -1
  165. package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-CI1ejk_l.js} +1 -1
  166. package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CjmhICbv.js} +1 -1
  167. package/dist/gateway/static/root/assets/automations-page-BtZl3B8m.js +6 -0
  168. package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-CZ8nOXqK.js} +1 -1
  169. package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-BoSfyS_j.js} +46 -46
  170. package/dist/gateway/static/root/assets/browser-settings-page-CL1UiPcb.js +8 -0
  171. package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-XzDKxPZ8.js} +1 -1
  172. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-Dc_uHYgl.js} +2 -2
  173. package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-DYLBAhFF.js} +1 -1
  174. package/dist/gateway/static/root/assets/channels-settings-mALvXpJj.js +1 -0
  175. package/dist/gateway/static/root/assets/channels-status-swr-CZuEsO5b.js +1 -0
  176. package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BSjlInHT.js} +1 -1
  177. package/dist/gateway/static/root/assets/connectors-page-Cm_E3mmI.js +2 -0
  178. package/dist/gateway/static/root/assets/desktop-pet-DcJc91-C.js +1 -0
  179. package/dist/gateway/static/root/assets/desktop-pet-settings-CdeqTa3Q.js +1 -0
  180. package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-Cp3fpm0k.js} +1 -1
  181. package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-Bwj1O3zr.js} +3 -3
  182. package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-D_1xpKbZ.js} +1 -1
  183. package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-CqZNCj96.js} +1 -1
  184. package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-5MWbtQaQ.js} +1 -1
  185. package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-Co_IaS34.js} +1 -1
  186. package/dist/gateway/static/root/assets/gateway-settings-kmeWm2Pt.js +1 -0
  187. package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-BM_xvzl0.js} +1 -1
  188. package/dist/gateway/static/root/assets/goal-create-dialog-FoO-R4_U.js +1 -0
  189. package/dist/gateway/static/root/assets/goal-detail-page-CkJq7N5g.js +4 -0
  190. package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-DrtsYjXz.js} +1 -1
  191. package/dist/gateway/static/root/assets/goals-page-DRAN-R64.js +2 -0
  192. package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-wq9TKhIZ.js} +1 -1
  193. package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-B5zDoHbo.js} +1 -1
  194. package/dist/gateway/static/root/assets/index-DIlxvrlG.css +1 -0
  195. package/dist/gateway/static/root/assets/index-apLU0Hun.js +196 -0
  196. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-3tC9iD21.js +1 -0
  197. package/dist/gateway/static/root/assets/local-app-workbench-page-CT-vDTLK.js +2 -0
  198. package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-B9ruF9GV.js} +1 -1
  199. package/dist/gateway/static/root/assets/locale-store-GfSwnwIZ.js +1 -0
  200. package/dist/gateway/static/root/assets/logs-page-Ca1X8X2P.js +7 -0
  201. package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-CzuhSQAB.js} +1 -1
  202. package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-a3R4y-EL.js} +1 -1
  203. package/dist/gateway/static/root/assets/messages-B0B40tpO.js +5 -0
  204. package/dist/gateway/static/root/assets/models-hub-panel-CbTlz9Of.js +2 -0
  205. package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-BCxDy2dV.js} +1 -1
  206. package/dist/gateway/static/root/assets/notes-workbench-z6sBX9B2.js +4 -0
  207. package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-CJfk6M78.js} +1 -1
  208. package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-MFopTSgF.js} +1 -1
  209. package/dist/gateway/static/root/assets/project-detail-page-DU29deIr.js +1 -0
  210. package/dist/gateway/static/root/assets/projects-page-Ck3DLTlZ.js +1 -0
  211. package/dist/gateway/static/root/assets/remote-access-hub-gLsLyAyi.js +1 -0
  212. package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-D0uhU3Z8.js} +1 -1
  213. package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-NGOH-7wV.js} +1 -1
  214. package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-BJz5LoqG.js} +1 -1
  215. package/dist/gateway/static/root/assets/schemas-DgQq6Z5S.js +64 -0
  216. package/dist/gateway/static/root/assets/sessions-page-TmNoWpa_.js +1 -0
  217. package/dist/gateway/static/root/assets/settings-advanced-gate-CtPhh2m9.js +1 -0
  218. package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-oDnUHnX_.js} +1 -1
  219. package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-DND90dDt.js} +1 -1
  220. package/dist/gateway/static/root/assets/settings-loading-skeleton-CEJtaoQp.js +1 -0
  221. package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B1LJlRi9.js} +1 -1
  222. package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CsrLuDsW.js} +1 -1
  223. package/dist/gateway/static/root/assets/setup-status-panel-BPCJPHHY.js +1 -0
  224. package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-C1PwLh-p.js} +1 -1
  225. package/dist/gateway/static/root/assets/shares-settings-DCuqr7js.js +1 -0
  226. package/dist/gateway/static/root/assets/skill-reload-api-kn1Vypcy.js +1 -0
  227. package/dist/gateway/static/root/assets/skills-page-k6VIqTkK.js +2 -0
  228. package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-BEsrEkSx.js} +1 -1
  229. package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-Bi6hMBDb.js} +1 -1
  230. package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-dOypdlMf.js} +1 -1
  231. package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-f8A-PVuq.js} +1 -1
  232. package/dist/gateway/static/root/assets/user-context-page-B9Y_Ciav.js +1 -0
  233. package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-DGC38Lx7.js} +1 -1
  234. package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-DFkZ-tan.js} +1 -1
  235. package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-CEIYZihF.js} +1 -1
  236. package/dist/gateway/static/root/assets/voice-api-key-field-DK6gaQsA.js +1 -0
  237. package/dist/gateway/static/root/assets/work-discovery-page-DSJb9Kq7.js +1 -0
  238. package/dist/gateway/static/root/assets/work-item-detail-page-DVavwV3D.js +1 -0
  239. package/dist/gateway/static/root/assets/work-page-foJDp0nz.js +1 -0
  240. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYqZpFCC.js +3 -0
  241. package/dist/gateway/static/root/assets/workflows-page-DgO0WAzs.js +11 -0
  242. package/dist/gateway/static/root/favicon.svg +1 -187
  243. package/dist/gateway/static/root/index.html +8 -7
  244. package/dist/gateway/static/root/logo-dark.svg +1 -185
  245. package/dist/gateway/static/root/logo.svg +1 -185
  246. package/dist/package.js +1 -3
  247. package/dist/src/activity/context.js +0 -2
  248. package/dist/src/activity/emitter.js +0 -2
  249. package/dist/src/activity/service.js +0 -2
  250. package/dist/src/agent/agent-manager.d.ts +1 -0
  251. package/dist/src/agent/agent-manager.js +1 -2
  252. package/dist/src/agent/agent-scope.js +0 -2
  253. package/dist/src/agent/background-review/coordinator.js +0 -2
  254. package/dist/src/agent/background-review/prompts.js +0 -2
  255. package/dist/src/agent/background-review/run-background-review.js +0 -2
  256. package/dist/src/agent/background-review/settings.js +0 -2
  257. package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
  258. package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
  259. package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
  260. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
  261. package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
  262. package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
  263. package/dist/src/agent/capabilities/definitions.js +0 -2
  264. package/dist/src/agent/capabilities/registry.js +0 -2
  265. package/dist/src/agent/child-agent-factory.js +0 -2
  266. package/dist/src/agent/client-error-format.js +0 -2
  267. package/dist/src/agent/code-intelligence/binary.js +0 -2
  268. package/dist/src/agent/code-intelligence/runtime.js +0 -2
  269. package/dist/src/agent/code-intelligence/tools.js +0 -2
  270. package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
  271. package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
  272. package/dist/src/agent/context/project-context.js +0 -2
  273. package/dist/src/agent/context/workspace-seed.js +0 -2
  274. package/dist/src/agent/context/workspace-state.js +0 -2
  275. package/dist/src/agent/context/workspace.js +0 -2
  276. package/dist/src/agent/embedded/run-for-session.js +0 -2
  277. package/dist/src/agent/embedded/run-turn.js +0 -2
  278. package/dist/src/agent/embedded/runs.js +0 -2
  279. package/dist/src/agent/embedded/session-manager-init.js +0 -2
  280. package/dist/src/agent/embedded/session-runner.js +0 -2
  281. package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
  282. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
  283. package/dist/src/agent/embedded/subscribe-session.js +0 -2
  284. package/dist/src/agent/embedded/system-prompt-override.js +0 -2
  285. package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
  286. package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
  287. package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
  288. package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
  289. package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
  290. package/dist/src/agent/failover-error.js +0 -2
  291. package/dist/src/agent/fallback/candidates.js +0 -2
  292. package/dist/src/agent/fallback/reason.js +0 -2
  293. package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
  294. package/dist/src/agent/goals/checklist-judge.js +0 -2
  295. package/dist/src/agent/goals/checklist-types.js +0 -2
  296. package/dist/src/agent/goals/evaluate-turn.js +0 -2
  297. package/dist/src/agent/goals/goal-locale.js +0 -2
  298. package/dist/src/agent/goals/judge.js +0 -2
  299. package/dist/src/agent/goals/persistent-goal-service.js +0 -2
  300. package/dist/src/agent/goals/post-turn.js +0 -2
  301. package/dist/src/agent/goals/state.js +0 -2
  302. package/dist/src/agent/image/generation/bundled-registry.js +0 -2
  303. package/dist/src/agent/image/generation/bundled.js +0 -2
  304. package/dist/src/agent/image/generation/image-assets.js +0 -2
  305. package/dist/src/agent/image/generation/model-ref.js +0 -2
  306. package/dist/src/agent/image/generation/normalization.js +0 -2
  307. package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
  308. package/dist/src/agent/image/generation/provider-registry.js +0 -2
  309. package/dist/src/agent/image/generation/runtime.js +0 -2
  310. package/dist/src/agent/image/image-helpers.js +0 -2
  311. package/dist/src/agent/image/image-model-fallback.js +0 -2
  312. package/dist/src/agent/image/inbound-image-handling.js +0 -2
  313. package/dist/src/agent/image/load-image-media.js +0 -2
  314. package/dist/src/agent/image/tool-model-config.js +0 -2
  315. package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
  316. package/dist/src/agent/image/understanding/provider-registry.js +0 -2
  317. package/dist/src/agent/image/understanding/runtime.js +0 -2
  318. package/dist/src/agent/image/vision-detection.js +0 -2
  319. package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
  320. package/dist/src/agent/inbound/inbound-loop.js +0 -2
  321. package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
  322. package/dist/src/agent/ipc/bus.js +0 -2
  323. package/dist/src/agent/ipc/inbox.js +0 -2
  324. package/dist/src/agent/ipc/socket.js +0 -2
  325. package/dist/src/agent/ipc/types.js +0 -2
  326. package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
  327. package/dist/src/agent/lifecycle/hook-handler.js +0 -2
  328. package/dist/src/agent/lifecycle/manager.js +0 -2
  329. package/dist/src/agent/lifecycle/progress.js +0 -2
  330. package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
  331. package/dist/src/agent/lifecycle/typing.js +0 -2
  332. package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
  333. package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
  334. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
  335. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
  336. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
  337. package/dist/src/agent/mcp/embedded-mcp.js +0 -2
  338. package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
  339. package/dist/src/agent/mcp/mcp-http.js +0 -2
  340. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
  341. package/dist/src/agent/mcp/mcp-stdio.js +0 -2
  342. package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
  343. package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
  344. package/dist/src/agent/mcp/mcp-transport.js +0 -2
  345. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
  346. package/dist/src/agent/media-generation/model-ref.js +0 -2
  347. package/dist/src/agent/media-generation/normalization.types.js +0 -2
  348. package/dist/src/agent/media-generation/runtime-shared.js +0 -2
  349. package/dist/src/agent/memory/agent-message-access.js +0 -2
  350. package/dist/src/agent/memory/builtin-memory-store.js +0 -2
  351. package/dist/src/agent/memory/builtin-provider.js +0 -2
  352. package/dist/src/agent/memory/compaction.js +0 -2
  353. package/dist/src/agent/memory/context/planner.js +0 -2
  354. package/dist/src/agent/memory/context-fence.js +0 -2
  355. package/dist/src/agent/memory/create-memory-manager.js +0 -2
  356. package/dist/src/agent/memory/dreaming/config.js +0 -2
  357. package/dist/src/agent/memory/dreaming/constants.js +0 -2
  358. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
  359. package/dist/src/agent/memory/dreaming/events.js +0 -2
  360. package/dist/src/agent/memory/dreaming/last-run.js +0 -2
  361. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
  362. package/dist/src/agent/memory/dreaming/preview.js +0 -2
  363. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
  364. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
  365. package/dist/src/agent/memory/dreaming/scope.js +0 -2
  366. package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
  367. package/dist/src/agent/memory/dreaming/utils.js +0 -2
  368. package/dist/src/agent/memory/lifecycle.js +0 -2
  369. package/dist/src/agent/memory/manager.js +0 -2
  370. package/dist/src/agent/memory/memory-config.js +0 -2
  371. package/dist/src/agent/memory/message-sanitizer.js +0 -2
  372. package/dist/src/agent/memory/plugin-discovery.js +0 -2
  373. package/dist/src/agent/memory/sensitivity.js +0 -2
  374. package/dist/src/agent/memory/source-origin.js +0 -2
  375. package/dist/src/agent/memory/stub-memory-provider.js +0 -2
  376. package/dist/src/agent/memory/summary-generator.js +0 -2
  377. package/dist/src/agent/memory/understanding/correction.js +0 -2
  378. package/dist/src/agent/memory/understanding/quality.js +0 -2
  379. package/dist/src/agent/memory/understanding/service.js +0 -2
  380. package/dist/src/agent/memory/user-context-coordinator.js +0 -2
  381. package/dist/src/agent/memory/user-message-text.js +0 -2
  382. package/dist/src/agent/memory/window.js +0 -2
  383. package/dist/src/agent/messaging/command-handler.js +0 -2
  384. package/dist/src/agent/messaging/message-router.js +0 -2
  385. package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
  386. package/dist/src/agent/messaging/stream-manager.js +0 -2
  387. package/dist/src/agent/middleware/context.js +0 -2
  388. package/dist/src/agent/middleware/self-verify.js +0 -2
  389. package/dist/src/agent/models/manager.js +0 -2
  390. package/dist/src/agent/models/request-limiter.js +0 -2
  391. package/dist/src/agent/models/selection.js +0 -2
  392. package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
  393. package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
  394. package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
  395. package/dist/src/agent/orchestration/loop-guard.js +0 -2
  396. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
  397. package/dist/src/agent/prompt/cache-boundary.js +0 -2
  398. package/dist/src/agent/prompt/memory/index.js +0 -2
  399. package/dist/src/agent/prompt/safety.js +0 -2
  400. package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
  401. package/dist/src/agent/prompt/sections/behavior.js +0 -2
  402. package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
  403. package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
  404. package/dist/src/agent/prompt/sections/project-context.js +0 -2
  405. package/dist/src/agent/prompt/sections/tooling.js +0 -2
  406. package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
  407. package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
  408. package/dist/src/agent/prompt/subagent-context.js +0 -2
  409. package/dist/src/agent/prompt/system-prompt-params.js +0 -2
  410. package/dist/src/agent/prompt/system-prompt.js +0 -2
  411. package/dist/src/agent/prompt/system-reminder.js +0 -2
  412. package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
  413. package/dist/src/agent/reply/post-compaction-context.js +0 -2
  414. package/dist/src/agent/reply/startup-context.js +0 -2
  415. package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
  416. package/dist/src/agent/sandbox/command-validator.js +0 -2
  417. package/dist/src/agent/sandbox/exec-policy.js +0 -2
  418. package/dist/src/agent/sandbox/path-policy.js +0 -2
  419. package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
  420. package/dist/src/agent/sandbox/types.js +0 -2
  421. package/dist/src/agent/service/async-queue.js +0 -2
  422. package/dist/src/agent/service/btw-query.js +0 -2
  423. package/dist/src/agent/service/build-direct-message-content.js +0 -2
  424. package/dist/src/agent/service/direct-turn-helpers.js +0 -2
  425. package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
  426. package/dist/src/agent/service/process-direct-one-shot.js +0 -2
  427. package/dist/src/agent/service/process-direct-streaming.js +0 -2
  428. package/dist/src/agent/service/session-context-report.js +0 -2
  429. package/dist/src/agent/service/webchat-tts.js +0 -2
  430. package/dist/src/agent/service-inbound-utils.js +0 -2
  431. package/dist/src/agent/service.js +1 -2
  432. package/dist/src/agent/service.types.d.ts +2 -0
  433. package/dist/src/agent/session/session-config-service.js +0 -2
  434. package/dist/src/agent/session/session-context.js +0 -2
  435. package/dist/src/agent/session/session-hydrator.js +0 -2
  436. package/dist/src/agent/session/session-inspector.js +0 -2
  437. package/dist/src/agent/session/session-lifecycle.js +0 -2
  438. package/dist/src/agent/session/session-state-bag.js +0 -2
  439. package/dist/src/agent/session/tracker.js +0 -2
  440. package/dist/src/agent/skills/config.js +0 -2
  441. package/dist/src/agent/skills/filesystem-watcher.js +0 -2
  442. package/dist/src/agent/skills/format-skills-prompt.js +0 -2
  443. package/dist/src/agent/skills/hub-hash.js +0 -2
  444. package/dist/src/agent/skills/hub-lock.js +0 -2
  445. package/dist/src/agent/skills/hub-pull.js +0 -2
  446. package/dist/src/agent/skills/index.js +0 -2
  447. package/dist/src/agent/skills/install-target.js +0 -2
  448. package/dist/src/agent/skills/installer.js +0 -2
  449. package/dist/src/agent/skills/managed-store.js +0 -2
  450. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
  451. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
  452. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
  453. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
  454. package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
  455. package/dist/src/agent/skills/marketplace/registry.js +0 -2
  456. package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
  457. package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
  458. package/dist/src/agent/skills/required-env-vars.js +0 -2
  459. package/dist/src/agent/skills/scanner.js +0 -2
  460. package/dist/src/agent/skills/skill-manage-ops.js +0 -2
  461. package/dist/src/agent/skills/skill-manager.js +0 -2
  462. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
  463. package/dist/src/agent/skills/skill-tool-gating.js +0 -2
  464. package/dist/src/agent/skills/skill-view-path.js +0 -2
  465. package/dist/src/agent/skills/skills-marketplace.js +0 -2
  466. package/dist/src/agent/skills/test-framework.js +0 -2
  467. package/dist/src/agent/skills/watcher.js +0 -2
  468. package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
  469. package/dist/src/agent/source-context/injector.js +0 -2
  470. package/dist/src/agent/source-context/types.js +0 -2
  471. package/dist/src/agent/starter-agents.js +0 -2
  472. package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
  473. package/dist/src/agent/tool-manuals/browser.js +0 -2
  474. package/dist/src/agent/tool-manuals/index.js +0 -2
  475. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  476. package/dist/src/agent/tool-manuals/xopc-use.js +41 -4
  477. package/dist/src/agent/tools/apply-patch.js +0 -2
  478. package/dist/src/agent/tools/automation-tool.js +45 -8
  479. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
  480. package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
  481. package/dist/src/agent/tools/chain-tracker.js +0 -2
  482. package/dist/src/agent/tools/clarify-tool.js +0 -2
  483. package/dist/src/agent/tools/cli-clarify.js +0 -2
  484. package/dist/src/agent/tools/communication.js +0 -2
  485. package/dist/src/agent/tools/composio-tool.js +0 -2
  486. package/dist/src/agent/tools/concurrency.js +0 -2
  487. package/dist/src/agent/tools/create-share-tool.js +0 -2
  488. package/dist/src/agent/tools/curated-memory-tool.js +0 -2
  489. package/dist/src/agent/tools/delegate-tool.js +0 -2
  490. package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
  491. package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
  492. package/dist/src/agent/tools/dreaming-tool.js +0 -2
  493. package/dist/src/agent/tools/edit-diff.js +0 -2
  494. package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
  495. package/dist/src/agent/tools/error-tracker.js +0 -2
  496. package/dist/src/agent/tools/exec-command.js +0 -2
  497. package/dist/src/agent/tools/execute-code-tool.js +0 -2
  498. package/dist/src/agent/tools/executor.js +0 -2
  499. package/dist/src/agent/tools/factory.d.ts +2 -0
  500. package/dist/src/agent/tools/factory.js +3 -4
  501. package/dist/src/agent/tools/find.js +0 -2
  502. package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
  503. package/dist/src/agent/tools/goal-tool.d.ts +7 -1
  504. package/dist/src/agent/tools/goal-tool.js +34 -7
  505. package/dist/src/agent/tools/grep.js +0 -2
  506. package/dist/src/agent/tools/image-generate-tool.js +0 -2
  507. package/dist/src/agent/tools/image-tool.js +0 -2
  508. package/dist/src/agent/tools/list-dir.js +0 -2
  509. package/dist/src/agent/tools/media-read-tool.js +0 -2
  510. package/dist/src/agent/tools/memory-tool.js +0 -2
  511. package/dist/src/agent/tools/metadata.js +0 -2
  512. package/dist/src/agent/tools/read.js +0 -2
  513. package/dist/src/agent/tools/search/http.js +0 -2
  514. package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
  515. package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
  516. package/dist/src/agent/tools/search/providers/brave.js +0 -2
  517. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
  518. package/dist/src/agent/tools/search/providers/searxng.js +0 -2
  519. package/dist/src/agent/tools/search/providers/tavily.js +0 -2
  520. package/dist/src/agent/tools/search/region.js +0 -2
  521. package/dist/src/agent/tools/search/registry.js +0 -2
  522. package/dist/src/agent/tools/search/resolve-config.js +0 -2
  523. package/dist/src/agent/tools/send-media.js +0 -2
  524. package/dist/src/agent/tools/session-search-tool.js +0 -2
  525. package/dist/src/agent/tools/session-status-tool.js +0 -2
  526. package/dist/src/agent/tools/skill-install-tool.js +0 -2
  527. package/dist/src/agent/tools/skill-manage-tool.js +0 -2
  528. package/dist/src/agent/tools/skills-tools.js +0 -2
  529. package/dist/src/agent/tools/structured-output.js +0 -2
  530. package/dist/src/agent/tools/todo-tool.js +0 -2
  531. package/dist/src/agent/tools/tool-manual-tool.js +0 -2
  532. package/dist/src/agent/tools/tool-paths.js +0 -2
  533. package/dist/src/agent/tools/truncate.js +0 -2
  534. package/dist/src/agent/tools/tts-tool.js +0 -2
  535. package/dist/src/agent/tools/update-plan-tool.js +0 -2
  536. package/dist/src/agent/tools/url-safety.js +0 -2
  537. package/dist/src/agent/tools/usage-analyzer.js +0 -2
  538. package/dist/src/agent/tools/web-extract.js +0 -2
  539. package/dist/src/agent/tools/web.js +4 -4
  540. package/dist/src/agent/tools/workflow-tool.js +32 -4
  541. package/dist/src/agent/tools/write.js +23 -5
  542. package/dist/src/agent/tools/xopc-use-tool.d.ts +6 -2
  543. package/dist/src/agent/tools/xopc-use-tool.js +216 -8
  544. package/dist/src/agent/transcript/google-api.js +0 -2
  545. package/dist/src/agent/transcript/model-selection.js +0 -2
  546. package/dist/src/agent/transcript/provider-capabilities.js +0 -2
  547. package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
  548. package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
  549. package/dist/src/agent/transcript/thinking-types.js +0 -2
  550. package/dist/src/agent/transcript/thinking.js +0 -2
  551. package/dist/src/agent/transcript/tool-call-id.js +0 -2
  552. package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
  553. package/dist/src/agent/transcript/transcript-policy.js +0 -2
  554. package/dist/src/agent/workflow/agent-progress.js +0 -2
  555. package/dist/src/agent/workflow/builtins/index.js +0 -2
  556. package/dist/src/agent/workflow/catalog.js +0 -2
  557. package/dist/src/agent/workflow/progress-broker.js +0 -2
  558. package/dist/src/agent/workflow/snapshot-empty.js +0 -2
  559. package/dist/src/agent/workflow/snapshot.js +0 -2
  560. package/dist/src/agent/workflow/step-labels.js +0 -2
  561. package/dist/src/agent/workflow/structured-output-tool.js +0 -2
  562. package/dist/src/agent/workflow/subagent-runner.js +0 -2
  563. package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
  564. package/dist/src/agent/workspace-runtime/registry.js +0 -2
  565. package/dist/src/agent-manifest/index.js +0 -2
  566. package/dist/src/agent-manifest/preset-chain.js +0 -2
  567. package/dist/src/agent-manifest/prompt.js +0 -2
  568. package/dist/src/agent-manifest/resolver.js +0 -2
  569. package/dist/src/agent-manifest/schema.js +0 -2
  570. package/dist/src/agent-manifest/validator.js +0 -2
  571. package/dist/src/agent-runtime/boundary-guard.js +0 -2
  572. package/dist/src/agent-runtime/memory-runtime.js +0 -2
  573. package/dist/src/agent-runtime/model-router.js +0 -2
  574. package/dist/src/agent-runtime/run-trace.js +0 -2
  575. package/dist/src/agent-runtime/runtime-profile.js +0 -2
  576. package/dist/src/agent-runtime/tool-registry.js +0 -2
  577. package/dist/src/agent-runtime/workflow-runtime.js +0 -2
  578. package/dist/src/ai-assist/text-assist.js +0 -2
  579. package/dist/src/auth/credentials.js +0 -2
  580. package/dist/src/auth/index.js +0 -2
  581. package/dist/src/auth/oauth/anthropic.js +0 -2
  582. package/dist/src/auth/oauth/github-copilot.js +0 -2
  583. package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
  584. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
  585. package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
  586. package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
  587. package/dist/src/auth/oauth/kimi-coding.js +0 -2
  588. package/dist/src/auth/oauth/minimax-cn.js +0 -2
  589. package/dist/src/auth/oauth/minimax.js +0 -2
  590. package/dist/src/auth/oauth/openai-codex.js +0 -2
  591. package/dist/src/auth/oauth/pkce.js +0 -2
  592. package/dist/src/auth/profiles/oauth.js +0 -2
  593. package/dist/src/auth/profiles/order.js +0 -2
  594. package/dist/src/auth/profiles/profiles.js +0 -2
  595. package/dist/src/auth/profiles/store.js +0 -2
  596. package/dist/src/auth/sync-provider-auth.js +0 -2
  597. package/dist/src/automations/api/routes.js +0 -2
  598. package/dist/src/automations/domain/schedule.js +0 -2
  599. package/dist/src/automations/domain/validation.js +0 -2
  600. package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
  601. package/dist/src/automations/draft/automation-draft-service.js +0 -2
  602. package/dist/src/automations/draft/automation-draft-validator.js +0 -2
  603. package/dist/src/automations/product-events.js +0 -2
  604. package/dist/src/automations/service/action-executor.js +0 -2
  605. package/dist/src/automations/service/automation-service.js +0 -2
  606. package/dist/src/automations/storage/automation-repository.js +0 -2
  607. package/dist/src/automations/storage/automation-run-repository.js +0 -2
  608. package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
  609. package/dist/src/browser/actions/registry.js +0 -2
  610. package/dist/src/browser/backend-from-config.js +0 -2
  611. package/dist/src/browser/browser-command-timeout.js +0 -2
  612. package/dist/src/browser/cache-dir-policy.js +0 -2
  613. package/dist/src/browser/cdp-local-launcher.js +0 -2
  614. package/dist/src/browser/cdp-supervisor.js +0 -2
  615. package/dist/src/browser/free-port.js +0 -2
  616. package/dist/src/browser/humanize.js +0 -2
  617. package/dist/src/browser/install-lock.js +0 -2
  618. package/dist/src/browser/manager.js +0 -2
  619. package/dist/src/browser/pipeline/output.js +0 -2
  620. package/dist/src/browser/pipeline/runner.js +0 -2
  621. package/dist/src/browser/pipeline/schema.js +0 -2
  622. package/dist/src/browser/pipeline/source.js +0 -2
  623. package/dist/src/browser/pipeline/template.js +0 -2
  624. package/dist/src/browser/providers/browser-ext-install.js +0 -2
  625. package/dist/src/browser/providers/browser-use.js +0 -2
  626. package/dist/src/browser/providers/browserbase.js +0 -2
  627. package/dist/src/browser/providers/cloakbrowser.js +0 -2
  628. package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
  629. package/dist/src/browser/providers/extension.js +0 -2
  630. package/dist/src/browser/providers/playwright-doctor.js +13 -4
  631. package/dist/src/browser/providers/playwright-install.js +0 -2
  632. package/dist/src/browser/readiness.js +0 -2
  633. package/dist/src/browser/schemas.js +0 -2
  634. package/dist/src/browser/session-lifecycle.js +0 -2
  635. package/dist/src/browser/snapshot-helpers.js +0 -2
  636. package/dist/src/browser/stealth.js +0 -2
  637. package/dist/src/browser/url-policy.js +0 -2
  638. package/dist/src/capabilities/store-connector.js +0 -2
  639. package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
  640. package/dist/src/channels/attachments/inbound-persist.js +0 -2
  641. package/dist/src/channels/attachments/inbound-types.js +0 -2
  642. package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
  643. package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
  644. package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
  645. package/dist/src/channels/config-helpers.js +0 -2
  646. package/dist/src/channels/envelope-timestamp.js +0 -2
  647. package/dist/src/channels/exec-approval-runtime.js +0 -2
  648. package/dist/src/channels/health-monitor.js +0 -2
  649. package/dist/src/channels/heartbeat-scheduler.js +0 -2
  650. package/dist/src/channels/internal-outbound.js +0 -2
  651. package/dist/src/channels/lifecycle-supervisor.js +0 -2
  652. package/dist/src/channels/manager.js +0 -2
  653. package/dist/src/channels/media.js +0 -2
  654. package/dist/src/channels/outbound/deliver.js +0 -2
  655. package/dist/src/channels/outbound/normalize.js +0 -2
  656. package/dist/src/channels/outbound/persist-store.js +0 -2
  657. package/dist/src/channels/outbound/queue.js +0 -2
  658. package/dist/src/channels/outbound-sender.js +0 -2
  659. package/dist/src/channels/pairing/allow-from-file.js +0 -2
  660. package/dist/src/channels/pairing/approve-cli.js +0 -2
  661. package/dist/src/channels/pairing/pairing-challenge.js +0 -2
  662. package/dist/src/channels/pairing/pairing-constants.js +0 -2
  663. package/dist/src/channels/pairing/pairing-events.js +0 -2
  664. package/dist/src/channels/pairing/pairing-messages.js +0 -2
  665. package/dist/src/channels/pairing/pairing-service.js +0 -2
  666. package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
  667. package/dist/src/channels/pairing/pairing-store.js +0 -2
  668. package/dist/src/channels/pairing/paths.js +0 -2
  669. package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
  670. package/dist/src/channels/pipeline.js +0 -2
  671. package/dist/src/channels/plugin-registry.js +0 -2
  672. package/dist/src/channels/plugins/registry.js +0 -2
  673. package/dist/src/channels/restart-policy.js +0 -2
  674. package/dist/src/channels/security-helpers.js +0 -2
  675. package/dist/src/channels/security.js +0 -2
  676. package/dist/src/channels/setup-wizard-discovery.js +0 -2
  677. package/dist/src/chat-commands/agent-edit.js +0 -2
  678. package/dist/src/chat-commands/builtins/config.js +0 -2
  679. package/dist/src/chat-commands/builtins/context.js +0 -2
  680. package/dist/src/chat-commands/builtins/goal.js +0 -2
  681. package/dist/src/chat-commands/builtins/model.js +0 -2
  682. package/dist/src/chat-commands/builtins/review.js +0 -2
  683. package/dist/src/chat-commands/builtins/session.js +0 -2
  684. package/dist/src/chat-commands/builtins/skill.js +0 -2
  685. package/dist/src/chat-commands/builtins/subgoal.js +0 -2
  686. package/dist/src/chat-commands/builtins/system.js +0 -2
  687. package/dist/src/chat-commands/builtins/thinking.js +0 -2
  688. package/dist/src/chat-commands/builtins/tts.js +0 -2
  689. package/dist/src/chat-commands/builtins/workflow.js +0 -2
  690. package/dist/src/chat-commands/command-parse.js +0 -2
  691. package/dist/src/chat-commands/config-paths.js +0 -2
  692. package/dist/src/chat-commands/config-value.js +0 -2
  693. package/dist/src/chat-commands/context.js +0 -2
  694. package/dist/src/chat-commands/format-output.js +0 -2
  695. package/dist/src/chat-commands/index.js +0 -2
  696. package/dist/src/chat-commands/processor.js +0 -2
  697. package/dist/src/chat-commands/registry.js +0 -2
  698. package/dist/src/chat-commands/session-key.js +0 -2
  699. package/dist/src/cli/argv-invocation.js +0 -2
  700. package/dist/src/cli/argv.js +0 -2
  701. package/dist/src/cli/bin.js +0 -2
  702. package/dist/src/cli/cli-log-level-preset.js +0 -2
  703. package/dist/src/cli/command-catalog.js +0 -2
  704. package/dist/src/cli/command-loaders.js +0 -2
  705. package/dist/src/cli/command-manifest.js +0 -2
  706. package/dist/src/cli/command-path-matches.js +0 -2
  707. package/dist/src/cli/command-path-policy.js +0 -2
  708. package/dist/src/cli/command-startup-policy.js +0 -2
  709. package/dist/src/cli/commands/agent/interactive.js +0 -2
  710. package/dist/src/cli/commands/agent/sessions.js +0 -2
  711. package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
  712. package/dist/src/cli/commands/agent.js +0 -2
  713. package/dist/src/cli/commands/agents.js +0 -2
  714. package/dist/src/cli/commands/auth.js +0 -2
  715. package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
  716. package/dist/src/cli/commands/browser.js +0 -2
  717. package/dist/src/cli/commands/channels.js +0 -2
  718. package/dist/src/cli/commands/config.js +0 -2
  719. package/dist/src/cli/commands/connectors.js +0 -2
  720. package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
  721. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
  722. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
  723. package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
  724. package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
  725. package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
  726. package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
  727. package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
  728. package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
  729. package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
  730. package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
  731. package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
  732. package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
  733. package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
  734. package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
  735. package/dist/src/cli/commands/doctor/flow.js +0 -2
  736. package/dist/src/cli/commands/doctor/format.js +0 -2
  737. package/dist/src/cli/commands/doctor/index.js +0 -2
  738. package/dist/src/cli/commands/extension-create.js +0 -2
  739. package/dist/src/cli/commands/extension-dev.js +0 -2
  740. package/dist/src/cli/commands/extension-marketplace.js +0 -2
  741. package/dist/src/cli/commands/extension-pack.js +0 -2
  742. package/dist/src/cli/commands/extension.js +0 -2
  743. package/dist/src/cli/commands/gateway/call.js +0 -2
  744. package/dist/src/cli/commands/gateway/health.js +0 -2
  745. package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
  746. package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
  747. package/dist/src/cli/commands/gateway/logs.js +0 -2
  748. package/dist/src/cli/commands/gateway/probe.js +0 -2
  749. package/dist/src/cli/commands/gateway/restart-health.js +0 -2
  750. package/dist/src/cli/commands/gateway/restart.js +0 -2
  751. package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
  752. package/dist/src/cli/commands/gateway/service.js +0 -2
  753. package/dist/src/cli/commands/gateway/shared.js +0 -2
  754. package/dist/src/cli/commands/gateway/status.js +0 -2
  755. package/dist/src/cli/commands/gateway/stop.js +0 -2
  756. package/dist/src/cli/commands/gateway/subcommands.js +0 -2
  757. package/dist/src/cli/commands/gateway/token.js +0 -2
  758. package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
  759. package/dist/src/cli/commands/gateway.js +0 -2
  760. package/dist/src/cli/commands/goal.js +0 -2
  761. package/dist/src/cli/commands/image.js +0 -2
  762. package/dist/src/cli/commands/init.js +0 -2
  763. package/dist/src/cli/commands/logs.js +0 -2
  764. package/dist/src/cli/commands/models.js +0 -2
  765. package/dist/src/cli/commands/onboard/channels/index.js +0 -2
  766. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
  767. package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
  768. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
  769. package/dist/src/cli/commands/onboard/gateway.js +0 -2
  770. package/dist/src/cli/commands/onboard/model.js +0 -2
  771. package/dist/src/cli/commands/onboard.js +0 -2
  772. package/dist/src/cli/commands/profile.js +0 -2
  773. package/dist/src/cli/commands/project.js +0 -2
  774. package/dist/src/cli/commands/providers.js +0 -2
  775. package/dist/src/cli/commands/resume.js +0 -2
  776. package/dist/src/cli/commands/search.js +0 -2
  777. package/dist/src/cli/commands/session/actions.js +0 -2
  778. package/dist/src/cli/commands/session/utils.js +0 -2
  779. package/dist/src/cli/commands/session.js +0 -2
  780. package/dist/src/cli/commands/setup-shared/output.js +0 -2
  781. package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
  782. package/dist/src/cli/commands/setup-shared/runner.js +0 -2
  783. package/dist/src/cli/commands/setup-shared/types.js +0 -2
  784. package/dist/src/cli/commands/setup.js +0 -2
  785. package/dist/src/cli/commands/skills-test.js +0 -2
  786. package/dist/src/cli/commands/skills.js +0 -2
  787. package/dist/src/cli/commands/tailscale.js +0 -2
  788. package/dist/src/cli/commands/tui-runner.js +0 -2
  789. package/dist/src/cli/commands/tui.js +0 -2
  790. package/dist/src/cli/commands/tunnel.js +0 -2
  791. package/dist/src/cli/commands/update.js +0 -2
  792. package/dist/src/cli/commands/voice.js +0 -2
  793. package/dist/src/cli/context.js +0 -2
  794. package/dist/src/cli/extension-cli-register.js +0 -2
  795. package/dist/src/cli/gateway-run-argv.js +0 -2
  796. package/dist/src/cli/gateway-run-fast-path.js +0 -2
  797. package/dist/src/cli/index.js +0 -2
  798. package/dist/src/cli/registry.js +0 -2
  799. package/dist/src/cli/templates.js +0 -2
  800. package/dist/src/cli/utils/colors.js +0 -2
  801. package/dist/src/cli/utils/gateway-client-options.js +0 -2
  802. package/dist/src/cli/utils/gateway-client.js +0 -2
  803. package/dist/src/cli/utils/init-workspace-core.js +0 -2
  804. package/dist/src/cli/utils/init-workspace.js +0 -2
  805. package/dist/src/cli/utils/oauth-login.js +0 -2
  806. package/dist/src/cli/utils/oauth-providers.js +0 -2
  807. package/dist/src/cli/utils/session.js +0 -2
  808. package/dist/src/commands/agents.config.js +0 -2
  809. package/dist/src/config/agent-profile.js +0 -2
  810. package/dist/src/config/agent-typed-models.js +0 -2
  811. package/dist/src/config/commands.flags.js +0 -2
  812. package/dist/src/config/default-model.js +0 -2
  813. package/dist/src/config/diff.js +0 -2
  814. package/dist/src/config/gateway-bind.js +0 -2
  815. package/dist/src/config/index.js +0 -2
  816. package/dist/src/config/loader.js +0 -2
  817. package/dist/src/config/mcp-config-normalize.js +0 -2
  818. package/dist/src/config/model-input.js +0 -2
  819. package/dist/src/config/models-json.js +0 -2
  820. package/dist/src/config/paths-state.js +0 -2
  821. package/dist/src/config/paths.js +0 -2
  822. package/dist/src/config/profile.js +0 -2
  823. package/dist/src/config/public-url.js +0 -2
  824. package/dist/src/config/reload.js +0 -2
  825. package/dist/src/config/resolve-config-value.js +0 -2
  826. package/dist/src/config/rules.js +0 -2
  827. package/dist/src/config/runtime-overrides.js +0 -2
  828. package/dist/src/config/schema.js +0 -2
  829. package/dist/src/config/validate-channel-configs.js +0 -2
  830. package/dist/src/config/voice.js +0 -2
  831. package/dist/src/config/web-patch.js +0 -2
  832. package/dist/src/config/workspace-defaults.js +0 -2
  833. package/dist/src/config/workspace-dirs.js +0 -2
  834. package/dist/src/config/workspace-path-helpers.js +0 -2
  835. package/dist/src/config/workspace-path.js +0 -2
  836. package/dist/src/connectors/approval.js +0 -2
  837. package/dist/src/connectors/auth-provider-registry.js +0 -2
  838. package/dist/src/connectors/builtin-catalog.js +0 -2
  839. package/dist/src/connectors/catalog.js +0 -2
  840. package/dist/src/connectors/composio-catalog.js +0 -2
  841. package/dist/src/connectors/composio-logo.js +0 -2
  842. package/dist/src/connectors/composio-sessions.js +9 -5
  843. package/dist/src/connectors/composio-triggers.js +0 -2
  844. package/dist/src/connectors/composio.js +0 -2
  845. package/dist/src/connectors/connector-memory-sync.js +0 -2
  846. package/dist/src/connectors/health.js +0 -2
  847. package/dist/src/connectors/install.js +0 -2
  848. package/dist/src/connectors/instances.js +0 -2
  849. package/dist/src/connectors/integration-strategy.js +0 -2
  850. package/dist/src/connectors/lifecycle.js +0 -2
  851. package/dist/src/connectors/materialize.js +0 -2
  852. package/dist/src/connectors/policy.js +0 -2
  853. package/dist/src/connectors/providers.js +0 -2
  854. package/dist/src/connectors/registries/modelscope.js +0 -2
  855. package/dist/src/connectors/registries/official-mcp.js +0 -2
  856. package/dist/src/connectors/registries/search.js +0 -2
  857. package/dist/src/connectors/registries/smithery.js +0 -2
  858. package/dist/src/connectors/runtime-adapter-registry.js +0 -2
  859. package/dist/src/connectors/secret-store.js +0 -2
  860. package/dist/src/connectors/setup-secrets.js +0 -2
  861. package/dist/src/connectors/supervisor.js +0 -2
  862. package/dist/src/connectors/usage.js +0 -2
  863. package/dist/src/connectors/workflow-preflight.js +0 -2
  864. package/dist/src/daemon/constants.js +0 -2
  865. package/dist/src/daemon/install-plan.js +0 -2
  866. package/dist/src/daemon/launchd.js +0 -2
  867. package/dist/src/daemon/schtasks.js +0 -2
  868. package/dist/src/daemon/service-audit.js +0 -2
  869. package/dist/src/daemon/service.js +0 -2
  870. package/dist/src/daemon/systemd.js +0 -2
  871. package/dist/src/document-understanding/extract.js +0 -2
  872. package/dist/src/errors/index.js +0 -2
  873. package/dist/src/extensions/activation-context.js +0 -2
  874. package/dist/src/extensions/activation-planner.js +0 -2
  875. package/dist/src/extensions/api.js +0 -2
  876. package/dist/src/extensions/bundle-mcp.js +0 -2
  877. package/dist/src/extensions/bundled-extension-activation.js +0 -2
  878. package/dist/src/extensions/diagnostics.js +0 -2
  879. package/dist/src/extensions/discover-extensions.js +0 -2
  880. package/dist/src/extensions/engine-check.js +0 -2
  881. package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
  882. package/dist/src/extensions/extension-registry-impl.js +0 -2
  883. package/dist/src/extensions/health.js +0 -2
  884. package/dist/src/extensions/hooks.js +0 -2
  885. package/dist/src/extensions/index.js +0 -2
  886. package/dist/src/extensions/install-transaction.js +0 -2
  887. package/dist/src/extensions/install.js +0 -2
  888. package/dist/src/extensions/loader.js +0 -2
  889. package/dist/src/extensions/lockfile.js +0 -2
  890. package/dist/src/extensions/manifest-registry.js +0 -2
  891. package/dist/src/extensions/marketplace.js +0 -2
  892. package/dist/src/extensions/media-provider-contracts.js +0 -2
  893. package/dist/src/extensions/normalize-manifest.js +0 -2
  894. package/dist/src/extensions/onboard-helpers.js +0 -2
  895. package/dist/src/extensions/package-contract.js +0 -2
  896. package/dist/src/extensions/sdk/channel-entry.js +0 -2
  897. package/dist/src/extensions/sdk/channel-helpers.js +0 -2
  898. package/dist/src/extensions/sdk/index.js +0 -2
  899. package/dist/src/extensions/sdk/lazy.js +0 -2
  900. package/dist/src/extensions/sdk/testing.js +0 -2
  901. package/dist/src/extensions/security.js +0 -2
  902. package/dist/src/extensions/slots.js +0 -2
  903. package/dist/src/extensions/speech-provider-contracts.js +0 -2
  904. package/dist/src/extensions/store-zip-limits.js +0 -2
  905. package/dist/src/extensions/typed-event-bus.js +0 -2
  906. package/dist/src/extensions/types/hooks.js +0 -2
  907. package/dist/src/extensions/types/providers.js +0 -2
  908. package/dist/src/extensions/update.js +0 -2
  909. package/dist/src/extensions/when-context.js +0 -2
  910. package/dist/src/extensions/when-expression.js +0 -2
  911. package/dist/src/gateway/agent-builtin-tools.js +0 -2
  912. package/dist/src/gateway/agent-run-relay.js +0 -2
  913. package/dist/src/gateway/agents-admin.js +0 -2
  914. package/dist/src/gateway/auth.js +0 -2
  915. package/dist/src/gateway/capability-presets-admin.js +0 -2
  916. package/dist/src/gateway/chat-limits.js +0 -2
  917. package/dist/src/gateway/chat-stream/mapper.js +28 -14
  918. package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
  919. package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
  920. package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
  921. package/dist/src/gateway/clarify-bridge.js +3 -3
  922. package/dist/src/gateway/clarify-runtime.js +0 -2
  923. package/dist/src/gateway/client-ip.js +0 -2
  924. package/dist/src/gateway/config-tools-web.js +0 -2
  925. package/dist/src/gateway/credential.js +0 -2
  926. package/dist/src/gateway/discovery/mdns.js +0 -2
  927. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
  928. package/dist/src/gateway/ensure-network-cors.js +0 -2
  929. package/dist/src/gateway/file-path-classifier.js +0 -2
  930. package/dist/src/gateway/file-reference-registry.js +0 -2
  931. package/dist/src/gateway/global-defaults-admin.js +0 -2
  932. package/dist/src/gateway/heartbeat/service.js +0 -2
  933. package/dist/src/gateway/hono/app.js +0 -2
  934. package/dist/src/gateway/hono/lib/agent-model.js +0 -2
  935. package/dist/src/gateway/hono/lib/config-payload.js +0 -2
  936. package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
  937. package/dist/src/gateway/hono/lib/extension-store.js +0 -2
  938. package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
  939. package/dist/src/gateway/hono/lib/route-logger.js +0 -2
  940. package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
  941. package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
  942. package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
  943. package/dist/src/gateway/hono/lib/static-ui.js +0 -2
  944. package/dist/src/gateway/hono/middleware/auth.js +0 -2
  945. package/dist/src/gateway/hono/middleware/log-context.js +0 -2
  946. package/dist/src/gateway/hono/middleware/logger.js +0 -2
  947. package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
  948. package/dist/src/gateway/hono/middleware/scopes.js +0 -2
  949. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
  950. package/dist/src/gateway/hono/oauth-async.js +0 -2
  951. package/dist/src/gateway/hono/oauth.js +0 -2
  952. package/dist/src/gateway/hono/routes/activity.js +0 -2
  953. package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
  954. package/dist/src/gateway/hono/routes/agents.js +0 -2
  955. package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
  956. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
  957. package/dist/src/gateway/hono/routes/browser-install.js +0 -2
  958. package/dist/src/gateway/hono/routes/browser.js +0 -2
  959. package/dist/src/gateway/hono/routes/capabilities.js +0 -2
  960. package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
  961. package/dist/src/gateway/hono/routes/channels.js +0 -2
  962. package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
  963. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
  964. package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
  965. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
  966. package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
  967. package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
  968. package/dist/src/gateway/hono/routes/config.js +0 -2
  969. package/dist/src/gateway/hono/routes/connectors.js +0 -2
  970. package/dist/src/gateway/hono/routes/doctor.js +0 -2
  971. package/dist/src/gateway/hono/routes/dreaming.js +0 -2
  972. package/dist/src/gateway/hono/routes/exposure.js +0 -2
  973. package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
  974. package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
  975. package/dist/src/gateway/hono/routes/goals.js +0 -2
  976. package/dist/src/gateway/hono/routes/home.js +0 -2
  977. package/dist/src/gateway/hono/routes/host-fs.js +0 -2
  978. package/dist/src/gateway/hono/routes/index.js +0 -2
  979. package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
  980. package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
  981. package/dist/src/gateway/hono/routes/local-apps.js +0 -2
  982. package/dist/src/gateway/hono/routes/logs.js +0 -2
  983. package/dist/src/gateway/hono/routes/mcp.js +0 -2
  984. package/dist/src/gateway/hono/routes/media.js +0 -2
  985. package/dist/src/gateway/hono/routes/memory.js +0 -2
  986. package/dist/src/gateway/hono/routes/migrations.js +0 -2
  987. package/dist/src/gateway/hono/routes/mobile.js +0 -2
  988. package/dist/src/gateway/hono/routes/models.js +0 -2
  989. package/dist/src/gateway/hono/routes/notes.js +3 -3
  990. package/dist/src/gateway/hono/routes/projects.js +0 -2
  991. package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
  992. package/dist/src/gateway/hono/routes/search.js +0 -2
  993. package/dist/src/gateway/hono/routes/sessions.js +0 -2
  994. package/dist/src/gateway/hono/routes/shares.js +0 -2
  995. package/dist/src/gateway/hono/routes/site-shares.js +0 -2
  996. package/dist/src/gateway/hono/routes/status.js +0 -2
  997. package/dist/src/gateway/hono/routes/tui.js +0 -2
  998. package/dist/src/gateway/hono/routes/tunnel.js +0 -2
  999. package/dist/src/gateway/hono/routes/update.js +0 -2
  1000. package/dist/src/gateway/hono/routes/voice.js +0 -2
  1001. package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
  1002. package/dist/src/gateway/hono/routes/workflows.js +0 -2
  1003. package/dist/src/gateway/hono/routes/workspace.js +0 -2
  1004. package/dist/src/gateway/hono/routes/you.js +0 -2
  1005. package/dist/src/gateway/hono/sse-json.js +0 -2
  1006. package/dist/src/gateway/hono/sse.js +0 -2
  1007. package/dist/src/gateway/host.js +0 -2
  1008. package/dist/src/gateway/image-capabilities.js +0 -2
  1009. package/dist/src/gateway/listen.js +0 -2
  1010. package/dist/src/gateway/lock.js +0 -2
  1011. package/dist/src/gateway/ports.js +0 -2
  1012. package/dist/src/gateway/protocol.js +0 -2
  1013. package/dist/src/gateway/public-url.js +0 -2
  1014. package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
  1015. package/dist/src/gateway/rate-limit/buckets.js +0 -2
  1016. package/dist/src/gateway/rate-limit/env-flags.js +0 -2
  1017. package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
  1018. package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
  1019. package/dist/src/gateway/respawn.js +0 -2
  1020. package/dist/src/gateway/run-loop.js +0 -2
  1021. package/dist/src/gateway/runtime-config.js +0 -2
  1022. package/dist/src/gateway/security/audit.js +0 -2
  1023. package/dist/src/gateway/security/csp.js +0 -2
  1024. package/dist/src/gateway/security/dangerous-tools.js +0 -2
  1025. package/dist/src/gateway/security/external-content.js +0 -2
  1026. package/dist/src/gateway/security/known-weak-secrets.js +0 -2
  1027. package/dist/src/gateway/security/loopback.js +0 -2
  1028. package/dist/src/gateway/security/operator-scopes.js +0 -2
  1029. package/dist/src/gateway/security/origin-check.js +0 -2
  1030. package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
  1031. package/dist/src/gateway/security/secret-equal.js +0 -2
  1032. package/dist/src/gateway/server-tailscale.js +0 -2
  1033. package/dist/src/gateway/server.js +0 -2
  1034. package/dist/src/gateway/service/agent-runner.js +0 -2
  1035. package/dist/src/gateway/service/config-coordinator.js +0 -2
  1036. package/dist/src/gateway/service/marketplace-service.js +0 -2
  1037. package/dist/src/gateway/service/run-gateway-agent.js +0 -2
  1038. package/dist/src/gateway/service/session-chat-ids.js +0 -2
  1039. package/dist/src/gateway/service/sessions-api.js +0 -2
  1040. package/dist/src/gateway/service/sse-hub.js +0 -2
  1041. package/dist/src/gateway/service.js +1 -2
  1042. package/dist/src/gateway/session-reset-service.js +0 -2
  1043. package/dist/src/gateway/startup-readiness.js +0 -2
  1044. package/dist/src/gateway/startup-trace.js +0 -2
  1045. package/dist/src/gateway/tailscale-auth.js +0 -2
  1046. package/dist/src/gateway/tailscale-lifecycle.js +0 -2
  1047. package/dist/src/gateway/tls-server.js +0 -2
  1048. package/dist/src/gateway/trusted-proxy.js +0 -2
  1049. package/dist/src/gateway/user-turn-input.js +0 -2
  1050. package/dist/src/gateway/workspace-editor-path.js +0 -2
  1051. package/dist/src/gateway/workspace-file-search.js +0 -2
  1052. package/dist/src/gateway/workspace-fs-file-list.js +0 -2
  1053. package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
  1054. package/dist/src/gateway/workspace-ripgrep.js +0 -2
  1055. package/dist/src/gateway/ws-security.js +0 -2
  1056. package/dist/src/generated/bundled-image-generation-providers.js +0 -2
  1057. package/dist/src/goals/goal-contract-draft.js +0 -2
  1058. package/dist/src/goals/goal-evidence-review.js +0 -2
  1059. package/dist/src/goals/goal-notifications.js +0 -2
  1060. package/dist/src/goals/goal-queue-store.js +0 -2
  1061. package/dist/src/goals/goal-runner.js +0 -2
  1062. package/dist/src/goals/goal-service.js +0 -2
  1063. package/dist/src/goals/goal-store.js +0 -2
  1064. package/dist/src/goals/goal-workflow-judge.js +0 -2
  1065. package/dist/src/heartbeat/active-hours.js +0 -2
  1066. package/dist/src/heartbeat/content-check.js +0 -2
  1067. package/dist/src/heartbeat/event-prompt.js +0 -2
  1068. package/dist/src/heartbeat/tokens.js +0 -2
  1069. package/dist/src/heartbeat/wake.js +0 -2
  1070. package/dist/src/i18n/format.js +0 -2
  1071. package/dist/src/i18n/goals-bundle.js +0 -2
  1072. package/dist/src/i18n/locale.js +0 -2
  1073. package/dist/src/i18n/locales/goals.en.js +0 -2
  1074. package/dist/src/i18n/locales/goals.zh.js +0 -2
  1075. package/dist/src/i18n/locales/share-tool.en.js +0 -2
  1076. package/dist/src/i18n/locales/share-tool.zh.js +0 -2
  1077. package/dist/src/i18n/share-tool-bundle.js +0 -2
  1078. package/dist/src/index.js +0 -2
  1079. package/dist/src/infra/brew.js +0 -2
  1080. package/dist/src/infra/bus/queue.js +0 -2
  1081. package/dist/src/infra/debounce.js +0 -2
  1082. package/dist/src/infra/exec.js +0 -2
  1083. package/dist/src/infra/gateway-process-argv.js +0 -2
  1084. package/dist/src/infra/gateway-processes.js +0 -2
  1085. package/dist/src/infra/host-env-security-policy.js +0 -2
  1086. package/dist/src/infra/host-env-security.js +0 -2
  1087. package/dist/src/infra/http-proxy-env.js +0 -2
  1088. package/dist/src/infra/is-main.js +0 -2
  1089. package/dist/src/infra/json-utf8-bytes.js +0 -2
  1090. package/dist/src/infra/node-sqlite.js +0 -2
  1091. package/dist/src/infra/package-json.js +0 -2
  1092. package/dist/src/infra/package-update-steps.js +0 -2
  1093. package/dist/src/infra/path-env.js +0 -2
  1094. package/dist/src/infra/path-prepend.js +0 -2
  1095. package/dist/src/infra/ports.js +0 -2
  1096. package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
  1097. package/dist/src/infra/rate-limit/keyed-store.js +0 -2
  1098. package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
  1099. package/dist/src/infra/restart.js +0 -2
  1100. package/dist/src/infra/retry.js +0 -2
  1101. package/dist/src/infra/run-command.js +0 -2
  1102. package/dist/src/infra/sqlite-errors.js +0 -2
  1103. package/dist/src/infra/ssh-tunnel.js +0 -2
  1104. package/dist/src/infra/stable-node-path.js +0 -2
  1105. package/dist/src/infra/tailscale.js +0 -2
  1106. package/dist/src/infra/undici-fetch.js +0 -2
  1107. package/dist/src/infra/unhandled-rejections.js +0 -2
  1108. package/dist/src/infra/update-channels.js +0 -2
  1109. package/dist/src/infra/update-check.js +0 -2
  1110. package/dist/src/infra/update-global.js +0 -2
  1111. package/dist/src/infra/update-lock.js +0 -2
  1112. package/dist/src/infra/update-log.js +0 -2
  1113. package/dist/src/infra/update-restart.js +0 -2
  1114. package/dist/src/infra/update-runner.js +0 -2
  1115. package/dist/src/infra/update-startup.js +0 -2
  1116. package/dist/src/infra/warning-filter.js +0 -2
  1117. package/dist/src/infra/write-file-atomic.js +0 -2
  1118. package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
  1119. package/dist/src/knowledge/coordinator.js +0 -2
  1120. package/dist/src/knowledge/ingestion-service.js +0 -2
  1121. package/dist/src/local-apps/acceptance.js +0 -2
  1122. package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
  1123. package/dist/src/local-apps/runtime-entry.js +0 -2
  1124. package/dist/src/local-apps/scaffold.js +0 -2
  1125. package/dist/src/local-apps/service.js +0 -2
  1126. package/dist/src/local-apps/store.js +0 -2
  1127. package/dist/src/markdown/chunk.js +0 -2
  1128. package/dist/src/markdown/code-spans.js +0 -2
  1129. package/dist/src/markdown/fences.js +0 -2
  1130. package/dist/src/markdown/frontmatter.js +0 -2
  1131. package/dist/src/markdown/ir.js +0 -2
  1132. package/dist/src/markdown/render.js +0 -2
  1133. package/dist/src/markdown/tables.js +0 -2
  1134. package/dist/src/mcp/channel-bridge.js +0 -2
  1135. package/dist/src/mcp/channel-server.js +0 -2
  1136. package/dist/src/mcp/channel-shared.js +0 -2
  1137. package/dist/src/mcp/channel-tools.js +0 -2
  1138. package/dist/src/mcp/gateway-http-client.js +0 -2
  1139. package/dist/src/media/media-reference.js +0 -2
  1140. package/dist/src/media/paths.js +0 -2
  1141. package/dist/src/media/session-references.js +0 -2
  1142. package/dist/src/media/store.js +0 -2
  1143. package/dist/src/media/uri.js +0 -2
  1144. package/dist/src/media-shared/http/api-key-rotation.js +0 -2
  1145. package/dist/src/media-shared/http/deadline.js +0 -2
  1146. package/dist/src/media-shared/http/private-network.js +0 -2
  1147. package/dist/src/media-shared/http/provider-http-errors.js +0 -2
  1148. package/dist/src/media-shared/http/provider-http.js +0 -2
  1149. package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
  1150. package/dist/src/media-shared/http/ssrf-guard.js +0 -2
  1151. package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
  1152. package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
  1153. package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
  1154. package/dist/src/media-understanding/registry.js +0 -2
  1155. package/dist/src/media-understanding/resolve-entries.js +0 -2
  1156. package/dist/src/media-understanding/runner.js +0 -2
  1157. package/dist/src/migrations/config/default-capability-preset.js +0 -2
  1158. package/dist/src/migrations/registry.js +0 -2
  1159. package/dist/src/migrations/runner.js +0 -2
  1160. package/dist/src/mobile/notification-service.js +0 -2
  1161. package/dist/src/mobile/notification-store.js +0 -2
  1162. package/dist/src/mobile/notification-types.js +0 -2
  1163. package/dist/src/notes/agent-context.js +0 -2
  1164. package/dist/src/notes/attachment-ref.js +0 -2
  1165. package/dist/src/notes/note-attachment-sync.js +0 -2
  1166. package/dist/src/notes/note-index-meta.js +0 -2
  1167. package/dist/src/notes/note-markdown.js +0 -2
  1168. package/dist/src/notes/paths.js +0 -2
  1169. package/dist/src/notes/service.d.ts +3 -1
  1170. package/dist/src/notes/service.js +19 -5
  1171. package/dist/src/notes/store.js +0 -2
  1172. package/dist/src/package-version.js +0 -2
  1173. package/dist/src/pets/factory.d.ts +13 -0
  1174. package/dist/src/pets/factory.js +23 -2
  1175. package/dist/src/pets/manifest.js +0 -2
  1176. package/dist/src/pets/validator.js +0 -2
  1177. package/dist/src/process/kill-tree.js +0 -2
  1178. package/dist/src/project-trust/trust-store.js +0 -2
  1179. package/dist/src/projects/automation-bind.js +0 -2
  1180. package/dist/src/projects/goal-bind.js +0 -2
  1181. package/dist/src/projects/memory-bind.js +0 -2
  1182. package/dist/src/projects/project-agent-suggestion.js +0 -2
  1183. package/dist/src/projects/project-agent.js +0 -2
  1184. package/dist/src/projects/project-kind.js +0 -2
  1185. package/dist/src/projects/project-loop.js +0 -2
  1186. package/dist/src/projects/project-service.js +0 -2
  1187. package/dist/src/projects/project-store.js +0 -2
  1188. package/dist/src/projects/session-bind.js +0 -2
  1189. package/dist/src/projects/workflow-bind.js +0 -2
  1190. package/dist/src/projects/workspace-project.js +0 -2
  1191. package/dist/src/projects/workspace.js +0 -2
  1192. package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
  1193. package/dist/src/providers/auth-runtime/is-configured.js +0 -2
  1194. package/dist/src/providers/auth-runtime/oauth.js +0 -2
  1195. package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
  1196. package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
  1197. package/dist/src/providers/constants.js +0 -2
  1198. package/dist/src/providers/domestic-presets.js +0 -2
  1199. package/dist/src/providers/env-keys.js +0 -2
  1200. package/dist/src/providers/extension-stream-bridge.js +0 -2
  1201. package/dist/src/providers/index.js +0 -2
  1202. package/dist/src/providers/model-call.js +0 -2
  1203. package/dist/src/providers/model-discovery.js +0 -2
  1204. package/dist/src/providers/model-registry.js +0 -2
  1205. package/dist/src/providers/model-supplements.js +0 -2
  1206. package/dist/src/providers/plugin-registry.js +0 -2
  1207. package/dist/src/providers/presentation.js +0 -2
  1208. package/dist/src/remote-access/exposure-guards.js +0 -2
  1209. package/dist/src/remote-access/exposure-manager.js +0 -2
  1210. package/dist/src/review/review-git.js +0 -2
  1211. package/dist/src/review/review-types.js +0 -2
  1212. package/dist/src/routing/account-id.js +0 -2
  1213. package/dist/src/routing/agent-session-key.js +0 -2
  1214. package/dist/src/routing/bindings.js +0 -2
  1215. package/dist/src/routing/index.js +0 -2
  1216. package/dist/src/routing/resolve-route.js +0 -2
  1217. package/dist/src/routing/resolve-tui-session-key.js +0 -2
  1218. package/dist/src/routing/session-key-utils.js +0 -2
  1219. package/dist/src/routing/session-key.js +0 -2
  1220. package/dist/src/session/abort-cutoff.js +0 -2
  1221. package/dist/src/session/chat-export.js +0 -2
  1222. package/dist/src/session/client-history.js +0 -2
  1223. package/dist/src/session/compaction-checkpoints.js +0 -2
  1224. package/dist/src/session/config-store.js +0 -2
  1225. package/dist/src/session/init-session-turn.js +0 -2
  1226. package/dist/src/session/lifecycle-timestamps.js +0 -2
  1227. package/dist/src/session/load-jsonl-entries.js +0 -2
  1228. package/dist/src/session/manager.js +0 -2
  1229. package/dist/src/session/patch-metadata.js +0 -2
  1230. package/dist/src/session/reset-policy.js +0 -2
  1231. package/dist/src/session/reset-triggers.js +0 -2
  1232. package/dist/src/session/reset-type.js +0 -2
  1233. package/dist/src/session/resolve-session.js +0 -2
  1234. package/dist/src/session/session-context-for-llm.js +0 -2
  1235. package/dist/src/session/session-id.js +0 -2
  1236. package/dist/src/session/session-title.js +0 -2
  1237. package/dist/src/session/session-workspace.js +0 -2
  1238. package/dist/src/session/store.js +0 -2
  1239. package/dist/src/session/stored-rows-to-file-entries.js +0 -2
  1240. package/dist/src/session/thinking-resolve.js +0 -2
  1241. package/dist/src/session/transcript-events.js +0 -2
  1242. package/dist/src/session/transcript-format.js +0 -2
  1243. package/dist/src/session/transcript-outline.js +0 -2
  1244. package/dist/src/session/transcript-stats.js +0 -2
  1245. package/dist/src/session/types.js +0 -2
  1246. package/dist/src/session/user-round-delete.js +0 -2
  1247. package/dist/src/share/share-audit.js +0 -2
  1248. package/dist/src/share/share-auto.js +0 -2
  1249. package/dist/src/share/share-config.js +0 -2
  1250. package/dist/src/share/share-landing.js +0 -2
  1251. package/dist/src/share/share-rate-limit.js +0 -2
  1252. package/dist/src/share/share-store.js +0 -2
  1253. package/dist/src/share/share-thumbnail.js +0 -2
  1254. package/dist/src/share/share-types.js +0 -2
  1255. package/dist/src/share/share-url.js +0 -2
  1256. package/dist/src/share/share-zip.js +0 -2
  1257. package/dist/src/share/site-proxy.js +0 -2
  1258. package/dist/src/share/site-share-config.js +0 -2
  1259. package/dist/src/share/site-share-router.js +0 -2
  1260. package/dist/src/share/site-share-store.js +0 -2
  1261. package/dist/src/share/site-share-types.js +0 -2
  1262. package/dist/src/share/site-static-serve.js +0 -2
  1263. package/dist/src/storage/sqlite/activity-repository.js +0 -2
  1264. package/dist/src/storage/sqlite/config-repository.js +0 -2
  1265. package/dist/src/storage/sqlite/connection.js +0 -2
  1266. package/dist/src/storage/sqlite/connector-repository.js +0 -2
  1267. package/dist/src/storage/sqlite/fts.js +0 -2
  1268. package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
  1269. package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
  1270. package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
  1271. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
  1272. package/dist/src/storage/sqlite/migrations/discover.js +0 -2
  1273. package/dist/src/storage/sqlite/migrations/errors.js +0 -2
  1274. package/dist/src/storage/sqlite/migrations/runner.js +0 -2
  1275. package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
  1276. package/dist/src/storage/sqlite/notes-repository.js +0 -2
  1277. package/dist/src/storage/sqlite/paths.js +0 -2
  1278. package/dist/src/storage/sqlite/row-mappers.js +0 -2
  1279. package/dist/src/storage/sqlite/schema-version.js +0 -2
  1280. package/dist/src/storage/sqlite/schema.js +0 -2
  1281. package/dist/src/storage/sqlite/session-metadata.js +0 -2
  1282. package/dist/src/storage/sqlite/session-repository.js +0 -2
  1283. package/dist/src/storage/sqlite/transaction.js +0 -2
  1284. package/dist/src/storage/sqlite/transcript-repository.js +0 -2
  1285. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
  1286. package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
  1287. package/dist/src/tui/backends/embedded-backend.js +0 -2
  1288. package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
  1289. package/dist/src/tui/chat-history.js +0 -2
  1290. package/dist/src/tui/clipboard-image.js +0 -2
  1291. package/dist/src/tui/clipboard-text.js +0 -2
  1292. package/dist/src/tui/components/assistant-message.js +0 -2
  1293. package/dist/src/tui/components/bash-execution.js +0 -2
  1294. package/dist/src/tui/components/bash-summary.js +0 -2
  1295. package/dist/src/tui/components/branch-message-summary.js +0 -2
  1296. package/dist/src/tui/components/branch-summary.js +0 -2
  1297. package/dist/src/tui/components/chat-log.js +0 -2
  1298. package/dist/src/tui/components/compaction-summary.js +0 -2
  1299. package/dist/src/tui/components/custom-editor.js +0 -2
  1300. package/dist/src/tui/components/custom-message.js +0 -2
  1301. package/dist/src/tui/components/dynamic-border.js +0 -2
  1302. package/dist/src/tui/components/extension-dialog.js +0 -2
  1303. package/dist/src/tui/components/fuzzy-filter.js +0 -2
  1304. package/dist/src/tui/components/scoped-models-selector.js +0 -2
  1305. package/dist/src/tui/components/searchable-select-list.js +0 -2
  1306. package/dist/src/tui/components/session-selector.js +0 -2
  1307. package/dist/src/tui/components/settings-selector.js +0 -2
  1308. package/dist/src/tui/components/thinking-selector.js +0 -2
  1309. package/dist/src/tui/components/tool-execution.js +0 -2
  1310. package/dist/src/tui/components/tui-bottom-bar.js +0 -2
  1311. package/dist/src/tui/components/tui-header.js +0 -2
  1312. package/dist/src/tui/components/user-message.js +0 -2
  1313. package/dist/src/tui/components/visual-truncate.js +0 -2
  1314. package/dist/src/tui/extension-host/autocomplete.js +0 -2
  1315. package/dist/src/tui/extension-host/host.js +0 -2
  1316. package/dist/src/tui/extension-host/load-extensions.js +0 -2
  1317. package/dist/src/tui/extension-host/runtime-context.js +0 -2
  1318. package/dist/src/tui/extension-host/runtime.js +0 -2
  1319. package/dist/src/tui/extension-host/surface.js +0 -2
  1320. package/dist/src/tui/extension-host/tool-renderers.js +0 -2
  1321. package/dist/src/tui/format-tui-hotkeys.js +0 -2
  1322. package/dist/src/tui/sse-consumer.js +0 -2
  1323. package/dist/src/tui/theme/dark.js +0 -2
  1324. package/dist/src/tui/theme/light.js +0 -2
  1325. package/dist/src/tui/theme-manager.js +0 -2
  1326. package/dist/src/tui/theme.js +0 -2
  1327. package/dist/src/tui/tool-summary.js +0 -2
  1328. package/dist/src/tui/tui-agent-events.js +0 -2
  1329. package/dist/src/tui/tui-command-formatters.js +0 -2
  1330. package/dist/src/tui/tui-commands.js +0 -2
  1331. package/dist/src/tui/tui-context-usage.js +0 -2
  1332. package/dist/src/tui/tui-extension-user-message.js +0 -2
  1333. package/dist/src/tui/tui-fd-path.js +0 -2
  1334. package/dist/src/tui/tui-file-autocomplete.js +0 -2
  1335. package/dist/src/tui/tui-follow-up-queue.js +0 -2
  1336. package/dist/src/tui/tui-git-branch.js +0 -2
  1337. package/dist/src/tui/tui-keybindings-file.js +0 -2
  1338. package/dist/src/tui/tui-lifecycle.js +0 -2
  1339. package/dist/src/tui/tui-local-shell.js +0 -2
  1340. package/dist/src/tui/tui-model-picker.js +0 -2
  1341. package/dist/src/tui/tui-oauth-login.js +0 -2
  1342. package/dist/src/tui/tui-overlays.js +0 -2
  1343. package/dist/src/tui/tui-picker-overlay.js +0 -2
  1344. package/dist/src/tui/tui-run-state.js +0 -2
  1345. package/dist/src/tui/tui-run-status-format.js +0 -2
  1346. package/dist/src/tui/tui-runtime-hints.js +0 -2
  1347. package/dist/src/tui/tui-scoped-models.js +0 -2
  1348. package/dist/src/tui/tui-session-actions.js +0 -2
  1349. package/dist/src/tui/tui-session-format.js +0 -2
  1350. package/dist/src/tui/tui-session-snapshot.js +0 -2
  1351. package/dist/src/tui/tui-session-stats.js +0 -2
  1352. package/dist/src/tui/tui-settings.js +0 -2
  1353. package/dist/src/tui/tui-skills-autocomplete.js +0 -2
  1354. package/dist/src/tui/tui-startup-resources.js +0 -2
  1355. package/dist/src/tui/tui-startup-text.js +0 -2
  1356. package/dist/src/tui/tui-stdio-filter.js +0 -2
  1357. package/dist/src/tui/tui-submit.js +0 -2
  1358. package/dist/src/tui/tui-suspend.js +0 -2
  1359. package/dist/src/tui/tui-timeline-picker.js +0 -2
  1360. package/dist/src/tui/tui-timeline.js +0 -2
  1361. package/dist/src/tui/tui-tool-diff.js +0 -2
  1362. package/dist/src/tui/tui-tool-result.js +0 -2
  1363. package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
  1364. package/dist/src/tui/tui-transcript-tree.js +0 -2
  1365. package/dist/src/tui/tui-types.js +0 -2
  1366. package/dist/src/tui/tui-workflow-slash.js +0 -2
  1367. package/dist/src/tui/tui.js +0 -2
  1368. package/dist/src/tui/xopc-tui-keybindings.js +0 -2
  1369. package/dist/src/tunnel/broker-client.js +0 -2
  1370. package/dist/src/tunnel/consent.js +0 -2
  1371. package/dist/src/tunnel/enable-lan-pairing.js +0 -2
  1372. package/dist/src/tunnel/env.js +0 -2
  1373. package/dist/src/tunnel/frp-subdomain-host.js +0 -2
  1374. package/dist/src/tunnel/frpc-binary.js +0 -2
  1375. package/dist/src/tunnel/frpc-config.js +0 -2
  1376. package/dist/src/tunnel/frpc-extract.js +0 -2
  1377. package/dist/src/tunnel/frpc-process.js +0 -2
  1378. package/dist/src/tunnel/gateway-lifecycle.js +0 -2
  1379. package/dist/src/tunnel/pair-context.js +0 -2
  1380. package/dist/src/tunnel/pair-url.js +0 -2
  1381. package/dist/src/tunnel/pairing-rate-limit.js +0 -2
  1382. package/dist/src/tunnel/pairing.js +0 -2
  1383. package/dist/src/tunnel/tunnel-audit.js +0 -2
  1384. package/dist/src/tunnel/tunnel-config.js +0 -2
  1385. package/dist/src/tunnel/tunnel-persist.js +0 -2
  1386. package/dist/src/tunnel/tunnel-qr.js +0 -2
  1387. package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
  1388. package/dist/src/tunnel/tunnel-service.js +0 -2
  1389. package/dist/src/tunnel/tunnel-state.js +0 -2
  1390. package/dist/src/tunnel/well-known.js +0 -2
  1391. package/dist/src/user-context/config.js +0 -2
  1392. package/dist/src/user-context/import.js +0 -2
  1393. package/dist/src/user-context/owner.js +0 -2
  1394. package/dist/src/user-context/profile.js +0 -2
  1395. package/dist/src/user-context/projection.js +0 -2
  1396. package/dist/src/user-context/runtime.js +0 -2
  1397. package/dist/src/user-context/source-recommendations.js +0 -2
  1398. package/dist/src/user-context/trust-policy.js +0 -2
  1399. package/dist/src/utils/global-singleton.js +0 -2
  1400. package/dist/src/utils/helpers.js +0 -2
  1401. package/dist/src/utils/index.js +0 -2
  1402. package/dist/src/utils/is-record.js +0 -2
  1403. package/dist/src/utils/logger/audit.js +0 -2
  1404. package/dist/src/utils/logger/config.js +0 -2
  1405. package/dist/src/utils/logger/context.js +0 -2
  1406. package/dist/src/utils/logger/exporters.js +0 -2
  1407. package/dist/src/utils/logger/index.js +0 -2
  1408. package/dist/src/utils/logger/log-store.js +0 -2
  1409. package/dist/src/utils/logger/log-stream.js +0 -2
  1410. package/dist/src/utils/logger/pino-record.js +0 -2
  1411. package/dist/src/utils/logger/redact.js +0 -2
  1412. package/dist/src/utils/logger/rotation.js +0 -2
  1413. package/dist/src/utils/logger/shutdown.js +0 -2
  1414. package/dist/src/utils/logger/stats.js +0 -2
  1415. package/dist/src/utils/logger/streams.js +0 -2
  1416. package/dist/src/utils/logger/types.js +0 -2
  1417. package/dist/src/utils/logger.js +0 -2
  1418. package/dist/src/utils/redact-sensitive-url.js +0 -2
  1419. package/dist/src/utils/sanitize-log.js +0 -2
  1420. package/dist/src/utils/string-coerce.js +0 -2
  1421. package/dist/src/voice/language-profile.js +0 -2
  1422. package/dist/src/voice/local/model-files.js +0 -2
  1423. package/dist/src/voice/local/model-manager.js +0 -2
  1424. package/dist/src/voice/local/models.js +0 -2
  1425. package/dist/src/voice/local/runtime-client.js +0 -2
  1426. package/dist/src/voice/local/runtime-dispatcher.js +0 -2
  1427. package/dist/src/voice/local/runtime-worker.js +12 -4
  1428. package/dist/src/voice/local/wav.js +0 -2
  1429. package/dist/src/voice/metadata/builtin.js +0 -2
  1430. package/dist/src/voice/metadata/registry.js +0 -2
  1431. package/dist/src/voice/stt/availability.js +0 -2
  1432. package/dist/src/voice/stt/config-slice.js +0 -2
  1433. package/dist/src/voice/stt/factory.js +0 -2
  1434. package/dist/src/voice/stt/index.js +0 -2
  1435. package/dist/src/voice/stt/list-providers.js +0 -2
  1436. package/dist/src/voice/stt/mention.js +0 -2
  1437. package/dist/src/voice/stt/preflight.js +0 -2
  1438. package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
  1439. package/dist/src/voice/stt/providers/local-transcription.js +0 -2
  1440. package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
  1441. package/dist/src/voice/stt/transcribe-core.js +0 -2
  1442. package/dist/src/voice/stt/types.js +0 -2
  1443. package/dist/src/voice/tts/audio.js +0 -2
  1444. package/dist/src/voice/tts/config-slice.js +0 -2
  1445. package/dist/src/voice/tts/directives.js +0 -2
  1446. package/dist/src/voice/tts/factory.js +0 -2
  1447. package/dist/src/voice/tts/list-providers.js +0 -2
  1448. package/dist/src/voice/tts/merge-config.js +0 -2
  1449. package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
  1450. package/dist/src/voice/tts/payload.js +0 -2
  1451. package/dist/src/voice/tts/preprocess.js +0 -2
  1452. package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
  1453. package/dist/src/voice/tts/providers/edge-speech.js +0 -2
  1454. package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
  1455. package/dist/src/voice/tts/providers/openai-speech.js +0 -2
  1456. package/dist/src/voice/tts/sentence-boundary.js +0 -2
  1457. package/dist/src/voice/tts/service.js +0 -2
  1458. package/dist/src/voice/tts/speak-core.js +0 -2
  1459. package/dist/src/voice/tts/speech-registry.js +0 -2
  1460. package/dist/src/voice/tts/status-tracker.js +0 -2
  1461. package/dist/src/voice/tts/summarize.js +0 -2
  1462. package/dist/src/voice/tts/types.js +0 -2
  1463. package/dist/src/work-discovery/analyzer.js +0 -2
  1464. package/dist/src/work-discovery/probe.js +0 -2
  1465. package/dist/src/work-discovery/repository.js +0 -2
  1466. package/dist/src/work-discovery/service.js +0 -2
  1467. package/dist/src/work-items/agent-context.js +0 -2
  1468. package/dist/src/work-items/work-item-service.js +0 -2
  1469. package/dist/src/work-items/work-item-store.js +0 -2
  1470. package/dist/src/work-items/work-item-workflow-judge.js +0 -2
  1471. package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
  1472. package/dist/src/workflows/domain/definition-utils.js +0 -2
  1473. package/dist/src/workflows/domain/run.js +0 -2
  1474. package/dist/src/workflows/domain/schema-validation.js +0 -2
  1475. package/dist/src/workflows/domain/validation.js +0 -2
  1476. package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
  1477. package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
  1478. package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
  1479. package/dist/src/workflows/engine/projector.js +0 -2
  1480. package/dist/src/workflows/engine/workflow-engine.js +0 -2
  1481. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
  1482. package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
  1483. package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
  1484. package/dist/src/workflows/service/workflow-run-service.js +1 -3
  1485. package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
  1486. package/dist/src/workflows/service/workflow-session-key.js +0 -2
  1487. package/dist/src/workflows/store/event-store.js +0 -2
  1488. package/dist/src/workflows/store/paths.js +0 -2
  1489. package/dist/src/workflows/store/run-index-store.js +0 -2
  1490. package/dist/src/workflows/store/run-store.js +0 -2
  1491. package/package.json +43 -12
  1492. package/skills/creative/hatch-pet/SKILL.md +1 -0
  1493. package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
  1494. package/dist/extensions/demo-memory/src/index.js.map +0 -1
  1495. package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
  1496. package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
  1497. package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
  1498. package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
  1499. package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
  1500. package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
  1501. package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
  1502. package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
  1503. package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
  1504. package/dist/extensions/feishu/src/format.js.map +0 -1
  1505. package/dist/extensions/feishu/src/index.js.map +0 -1
  1506. package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
  1507. package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
  1508. package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
  1509. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
  1510. package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
  1511. package/dist/extensions/feishu/src/plugin.js.map +0 -1
  1512. package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
  1513. package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
  1514. package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
  1515. package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
  1516. package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
  1517. package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
  1518. package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
  1519. package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
  1520. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
  1521. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
  1522. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
  1523. package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
  1524. package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
  1525. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
  1526. package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
  1527. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
  1528. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
  1529. package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
  1530. package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
  1531. package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
  1532. package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
  1533. package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
  1534. package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
  1535. package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
  1536. package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
  1537. package/dist/extensions/telegram/src/access-control.js.map +0 -1
  1538. package/dist/extensions/telegram/src/account-manager.js.map +0 -1
  1539. package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
  1540. package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
  1541. package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
  1542. package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
  1543. package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
  1544. package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
  1545. package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
  1546. package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
  1547. package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
  1548. package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
  1549. package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
  1550. package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
  1551. package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
  1552. package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
  1553. package/dist/extensions/telegram/src/api-root.js.map +0 -1
  1554. package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
  1555. package/dist/extensions/telegram/src/approval-store.js.map +0 -1
  1556. package/dist/extensions/telegram/src/caption.js.map +0 -1
  1557. package/dist/extensions/telegram/src/command-handler.js.map +0 -1
  1558. package/dist/extensions/telegram/src/config-schema.js.map +0 -1
  1559. package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
  1560. package/dist/extensions/telegram/src/dedupe.js.map +0 -1
  1561. package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
  1562. package/dist/extensions/telegram/src/doctor.js.map +0 -1
  1563. package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
  1564. package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
  1565. package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
  1566. package/dist/extensions/telegram/src/errors.js.map +0 -1
  1567. package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
  1568. package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
  1569. package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
  1570. package/dist/extensions/telegram/src/format.js.map +0 -1
  1571. package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
  1572. package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
  1573. package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
  1574. package/dist/extensions/telegram/src/index.js.map +0 -1
  1575. package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
  1576. package/dist/extensions/telegram/src/network-errors.js.map +0 -1
  1577. package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
  1578. package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
  1579. package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
  1580. package/dist/extensions/telegram/src/plugin.js.map +0 -1
  1581. package/dist/extensions/telegram/src/polling-session.js.map +0 -1
  1582. package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
  1583. package/dist/extensions/telegram/src/reactions.js.map +0 -1
  1584. package/dist/extensions/telegram/src/reply-params.js.map +0 -1
  1585. package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
  1586. package/dist/extensions/telegram/src/send-options.js.map +0 -1
  1587. package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
  1588. package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
  1589. package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
  1590. package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
  1591. package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
  1592. package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
  1593. package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
  1594. package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
  1595. package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
  1596. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
  1597. package/dist/extensions/weixin/src/api/api.js.map +0 -1
  1598. package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
  1599. package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
  1600. package/dist/extensions/weixin/src/api/types.js.map +0 -1
  1601. package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
  1602. package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
  1603. package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
  1604. package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
  1605. package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
  1606. package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
  1607. package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
  1608. package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
  1609. package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
  1610. package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
  1611. package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
  1612. package/dist/extensions/weixin/src/config-schema.js.map +0 -1
  1613. package/dist/extensions/weixin/src/config-surface.js.map +0 -1
  1614. package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
  1615. package/dist/extensions/weixin/src/index.js.map +0 -1
  1616. package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
  1617. package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
  1618. package/dist/extensions/weixin/src/media/mime.js.map +0 -1
  1619. package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
  1620. package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
  1621. package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
  1622. package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
  1623. package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
  1624. package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
  1625. package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
  1626. package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
  1627. package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
  1628. package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
  1629. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
  1630. package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
  1631. package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
  1632. package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
  1633. package/dist/extensions/weixin/src/plugin.js.map +0 -1
  1634. package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
  1635. package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
  1636. package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
  1637. package/dist/extensions/weixin/src/util/logger.js.map +0 -1
  1638. package/dist/extensions/weixin/src/util/random.js.map +0 -1
  1639. package/dist/extensions/weixin/src/util/redact.js.map +0 -1
  1640. package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
  1641. package/dist/gateway/static/root/assets/agents-DZDOcgz5.js +0 -2
  1642. package/dist/gateway/static/root/assets/appearance-settings-BNasnY9D.js +0 -1
  1643. package/dist/gateway/static/root/assets/apps-page-Cmr-Hvm9.js +0 -1
  1644. package/dist/gateway/static/root/assets/automations-page-TWgUAI8t.js +0 -6
  1645. package/dist/gateway/static/root/assets/browser-settings-page-DBsFItW_.js +0 -8
  1646. package/dist/gateway/static/root/assets/channels-settings-BBkzrBYy.js +0 -1
  1647. package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
  1648. package/dist/gateway/static/root/assets/connectors-page-DLsZCAw7.js +0 -2
  1649. package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
  1650. package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
  1651. package/dist/gateway/static/root/assets/gateway-settings-BrxzyVW2.js +0 -1
  1652. package/dist/gateway/static/root/assets/goal-create-dialog-DRVRLc5Z.js +0 -1
  1653. package/dist/gateway/static/root/assets/goal-detail-page-8F7NElzP.js +0 -4
  1654. package/dist/gateway/static/root/assets/goals-page-BaoLiV8G.js +0 -2
  1655. package/dist/gateway/static/root/assets/index-CH7XN6KY.js +0 -259
  1656. package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
  1657. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BHnh5OoY.js +0 -1
  1658. package/dist/gateway/static/root/assets/local-app-workbench-page-Boe8n4zH.js +0 -2
  1659. package/dist/gateway/static/root/assets/locale-store-BneNAR8R.js +0 -1
  1660. package/dist/gateway/static/root/assets/logs-page-Cb4Uptct.js +0 -7
  1661. package/dist/gateway/static/root/assets/messages-t1yPaVCt.js +0 -5
  1662. package/dist/gateway/static/root/assets/models-hub-panel-CNiUKZUV.js +0 -2
  1663. package/dist/gateway/static/root/assets/notes-workbench-C9__VkD6.js +0 -4
  1664. package/dist/gateway/static/root/assets/project-detail-page-CZhuB5kO.js +0 -1
  1665. package/dist/gateway/static/root/assets/projects-page-BOq4WVdR.js +0 -1
  1666. package/dist/gateway/static/root/assets/remote-access-hub-BxGq0ebQ.js +0 -1
  1667. package/dist/gateway/static/root/assets/sessions-page-B6gSU_Au.js +0 -1
  1668. package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
  1669. package/dist/gateway/static/root/assets/settings-loading-skeleton-vitElc-n.js +0 -1
  1670. package/dist/gateway/static/root/assets/setup-status-panel-BJeA4mmk.js +0 -1
  1671. package/dist/gateway/static/root/assets/shares-settings-DB2KYA2_.js +0 -1
  1672. package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
  1673. package/dist/gateway/static/root/assets/skills-page-Pm0fNe_p.js +0 -2
  1674. package/dist/gateway/static/root/assets/user-context-page-DnLqQyRG.js +0 -1
  1675. package/dist/gateway/static/root/assets/voice-api-key-field-BiFIIWC4.js +0 -1
  1676. package/dist/gateway/static/root/assets/work-discovery-page-D2-_bC0J.js +0 -1
  1677. package/dist/gateway/static/root/assets/work-item-detail-page-B0FPG4eJ.js +0 -1
  1678. package/dist/gateway/static/root/assets/work-page-BDeVxts_.js +0 -1
  1679. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BPzS67fU.js +0 -3
  1680. package/dist/gateway/static/root/assets/workflows-page-xPhmrRLs.js +0 -11
  1681. package/dist/gateway/static/root/favicon-icon.svg +0 -187
  1682. package/dist/package.js.map +0 -1
  1683. package/dist/src/activity/context.js.map +0 -1
  1684. package/dist/src/activity/emitter.js.map +0 -1
  1685. package/dist/src/activity/service.js.map +0 -1
  1686. package/dist/src/agent/agent-manager.js.map +0 -1
  1687. package/dist/src/agent/agent-scope.js.map +0 -1
  1688. package/dist/src/agent/background-review/coordinator.js.map +0 -1
  1689. package/dist/src/agent/background-review/prompts.js.map +0 -1
  1690. package/dist/src/agent/background-review/run-background-review.js.map +0 -1
  1691. package/dist/src/agent/background-review/settings.js.map +0 -1
  1692. package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
  1693. package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
  1694. package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
  1695. package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
  1696. package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
  1697. package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
  1698. package/dist/src/agent/capabilities/definitions.js.map +0 -1
  1699. package/dist/src/agent/capabilities/registry.js.map +0 -1
  1700. package/dist/src/agent/child-agent-factory.js.map +0 -1
  1701. package/dist/src/agent/client-error-format.js.map +0 -1
  1702. package/dist/src/agent/code-intelligence/binary.js.map +0 -1
  1703. package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
  1704. package/dist/src/agent/code-intelligence/tools.js.map +0 -1
  1705. package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
  1706. package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
  1707. package/dist/src/agent/context/project-context.js.map +0 -1
  1708. package/dist/src/agent/context/workspace-seed.js.map +0 -1
  1709. package/dist/src/agent/context/workspace-state.js.map +0 -1
  1710. package/dist/src/agent/context/workspace.js.map +0 -1
  1711. package/dist/src/agent/embedded/run-for-session.js.map +0 -1
  1712. package/dist/src/agent/embedded/run-turn.js.map +0 -1
  1713. package/dist/src/agent/embedded/runs.js.map +0 -1
  1714. package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
  1715. package/dist/src/agent/embedded/session-runner.js.map +0 -1
  1716. package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
  1717. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
  1718. package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
  1719. package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
  1720. package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
  1721. package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
  1722. package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
  1723. package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
  1724. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
  1725. package/dist/src/agent/failover-error.js.map +0 -1
  1726. package/dist/src/agent/fallback/candidates.js.map +0 -1
  1727. package/dist/src/agent/fallback/reason.js.map +0 -1
  1728. package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
  1729. package/dist/src/agent/goals/checklist-judge.js.map +0 -1
  1730. package/dist/src/agent/goals/checklist-types.js.map +0 -1
  1731. package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
  1732. package/dist/src/agent/goals/goal-locale.js.map +0 -1
  1733. package/dist/src/agent/goals/judge.js.map +0 -1
  1734. package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
  1735. package/dist/src/agent/goals/post-turn.js.map +0 -1
  1736. package/dist/src/agent/goals/state.js.map +0 -1
  1737. package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
  1738. package/dist/src/agent/image/generation/bundled.js.map +0 -1
  1739. package/dist/src/agent/image/generation/image-assets.js.map +0 -1
  1740. package/dist/src/agent/image/generation/model-ref.js.map +0 -1
  1741. package/dist/src/agent/image/generation/normalization.js.map +0 -1
  1742. package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
  1743. package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
  1744. package/dist/src/agent/image/generation/runtime.js.map +0 -1
  1745. package/dist/src/agent/image/image-helpers.js.map +0 -1
  1746. package/dist/src/agent/image/image-model-fallback.js.map +0 -1
  1747. package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
  1748. package/dist/src/agent/image/load-image-media.js.map +0 -1
  1749. package/dist/src/agent/image/tool-model-config.js.map +0 -1
  1750. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
  1751. package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
  1752. package/dist/src/agent/image/understanding/runtime.js.map +0 -1
  1753. package/dist/src/agent/image/vision-detection.js.map +0 -1
  1754. package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
  1755. package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
  1756. package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
  1757. package/dist/src/agent/ipc/bus.js.map +0 -1
  1758. package/dist/src/agent/ipc/inbox.js.map +0 -1
  1759. package/dist/src/agent/ipc/socket.js.map +0 -1
  1760. package/dist/src/agent/ipc/types.js.map +0 -1
  1761. package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
  1762. package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
  1763. package/dist/src/agent/lifecycle/manager.js.map +0 -1
  1764. package/dist/src/agent/lifecycle/progress.js.map +0 -1
  1765. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
  1766. package/dist/src/agent/lifecycle/typing.js.map +0 -1
  1767. package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
  1768. package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
  1769. package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
  1770. package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
  1771. package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
  1772. package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
  1773. package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
  1774. package/dist/src/agent/mcp/mcp-http.js.map +0 -1
  1775. package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
  1776. package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
  1777. package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
  1778. package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
  1779. package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
  1780. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
  1781. package/dist/src/agent/media-generation/model-ref.js.map +0 -1
  1782. package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
  1783. package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
  1784. package/dist/src/agent/memory/agent-message-access.js.map +0 -1
  1785. package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
  1786. package/dist/src/agent/memory/builtin-provider.js.map +0 -1
  1787. package/dist/src/agent/memory/compaction.js.map +0 -1
  1788. package/dist/src/agent/memory/context/planner.js.map +0 -1
  1789. package/dist/src/agent/memory/context-fence.js.map +0 -1
  1790. package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
  1791. package/dist/src/agent/memory/dreaming/config.js.map +0 -1
  1792. package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
  1793. package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
  1794. package/dist/src/agent/memory/dreaming/events.js.map +0 -1
  1795. package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
  1796. package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
  1797. package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
  1798. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
  1799. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
  1800. package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
  1801. package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
  1802. package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
  1803. package/dist/src/agent/memory/lifecycle.js.map +0 -1
  1804. package/dist/src/agent/memory/manager.js.map +0 -1
  1805. package/dist/src/agent/memory/memory-config.js.map +0 -1
  1806. package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
  1807. package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
  1808. package/dist/src/agent/memory/sensitivity.js.map +0 -1
  1809. package/dist/src/agent/memory/source-origin.js.map +0 -1
  1810. package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
  1811. package/dist/src/agent/memory/summary-generator.js.map +0 -1
  1812. package/dist/src/agent/memory/understanding/correction.js.map +0 -1
  1813. package/dist/src/agent/memory/understanding/quality.js.map +0 -1
  1814. package/dist/src/agent/memory/understanding/service.js.map +0 -1
  1815. package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
  1816. package/dist/src/agent/memory/user-message-text.js.map +0 -1
  1817. package/dist/src/agent/memory/window.js.map +0 -1
  1818. package/dist/src/agent/messaging/command-handler.js.map +0 -1
  1819. package/dist/src/agent/messaging/message-router.js.map +0 -1
  1820. package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
  1821. package/dist/src/agent/messaging/stream-manager.js.map +0 -1
  1822. package/dist/src/agent/middleware/context.js.map +0 -1
  1823. package/dist/src/agent/middleware/self-verify.js.map +0 -1
  1824. package/dist/src/agent/models/manager.js.map +0 -1
  1825. package/dist/src/agent/models/request-limiter.js.map +0 -1
  1826. package/dist/src/agent/models/selection.js.map +0 -1
  1827. package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
  1828. package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
  1829. package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
  1830. package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
  1831. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
  1832. package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
  1833. package/dist/src/agent/prompt/memory/index.js.map +0 -1
  1834. package/dist/src/agent/prompt/safety.js.map +0 -1
  1835. package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
  1836. package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
  1837. package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
  1838. package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
  1839. package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
  1840. package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
  1841. package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
  1842. package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
  1843. package/dist/src/agent/prompt/subagent-context.js.map +0 -1
  1844. package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
  1845. package/dist/src/agent/prompt/system-prompt.js.map +0 -1
  1846. package/dist/src/agent/prompt/system-reminder.js.map +0 -1
  1847. package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
  1848. package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
  1849. package/dist/src/agent/reply/startup-context.js.map +0 -1
  1850. package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
  1851. package/dist/src/agent/sandbox/command-validator.js.map +0 -1
  1852. package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
  1853. package/dist/src/agent/sandbox/path-policy.js.map +0 -1
  1854. package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
  1855. package/dist/src/agent/sandbox/types.js.map +0 -1
  1856. package/dist/src/agent/service/async-queue.js.map +0 -1
  1857. package/dist/src/agent/service/btw-query.js.map +0 -1
  1858. package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
  1859. package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
  1860. package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
  1861. package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
  1862. package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
  1863. package/dist/src/agent/service/session-context-report.js.map +0 -1
  1864. package/dist/src/agent/service/webchat-tts.js.map +0 -1
  1865. package/dist/src/agent/service-inbound-utils.js.map +0 -1
  1866. package/dist/src/agent/service.js.map +0 -1
  1867. package/dist/src/agent/session/session-config-service.js.map +0 -1
  1868. package/dist/src/agent/session/session-context.js.map +0 -1
  1869. package/dist/src/agent/session/session-hydrator.js.map +0 -1
  1870. package/dist/src/agent/session/session-inspector.js.map +0 -1
  1871. package/dist/src/agent/session/session-lifecycle.js.map +0 -1
  1872. package/dist/src/agent/session/session-state-bag.js.map +0 -1
  1873. package/dist/src/agent/session/tracker.js.map +0 -1
  1874. package/dist/src/agent/skills/config.js.map +0 -1
  1875. package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
  1876. package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
  1877. package/dist/src/agent/skills/hub-hash.js.map +0 -1
  1878. package/dist/src/agent/skills/hub-lock.js.map +0 -1
  1879. package/dist/src/agent/skills/hub-pull.js.map +0 -1
  1880. package/dist/src/agent/skills/index.js.map +0 -1
  1881. package/dist/src/agent/skills/install-target.js.map +0 -1
  1882. package/dist/src/agent/skills/installer.js.map +0 -1
  1883. package/dist/src/agent/skills/managed-store.js.map +0 -1
  1884. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
  1885. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
  1886. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
  1887. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
  1888. package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
  1889. package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
  1890. package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
  1891. package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
  1892. package/dist/src/agent/skills/required-env-vars.js.map +0 -1
  1893. package/dist/src/agent/skills/scanner.js.map +0 -1
  1894. package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
  1895. package/dist/src/agent/skills/skill-manager.js.map +0 -1
  1896. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
  1897. package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
  1898. package/dist/src/agent/skills/skill-view-path.js.map +0 -1
  1899. package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
  1900. package/dist/src/agent/skills/test-framework.js.map +0 -1
  1901. package/dist/src/agent/skills/watcher.js.map +0 -1
  1902. package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
  1903. package/dist/src/agent/source-context/injector.js.map +0 -1
  1904. package/dist/src/agent/source-context/types.js.map +0 -1
  1905. package/dist/src/agent/starter-agents.js.map +0 -1
  1906. package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
  1907. package/dist/src/agent/tool-manuals/browser.js.map +0 -1
  1908. package/dist/src/agent/tool-manuals/index.js.map +0 -1
  1909. package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
  1910. package/dist/src/agent/tools/apply-patch.js.map +0 -1
  1911. package/dist/src/agent/tools/automation-tool.js.map +0 -1
  1912. package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
  1913. package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
  1914. package/dist/src/agent/tools/chain-tracker.js.map +0 -1
  1915. package/dist/src/agent/tools/clarify-tool.js.map +0 -1
  1916. package/dist/src/agent/tools/cli-clarify.js.map +0 -1
  1917. package/dist/src/agent/tools/communication.js.map +0 -1
  1918. package/dist/src/agent/tools/composio-tool.js.map +0 -1
  1919. package/dist/src/agent/tools/concurrency.js.map +0 -1
  1920. package/dist/src/agent/tools/create-share-tool.js.map +0 -1
  1921. package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
  1922. package/dist/src/agent/tools/delegate-tool.js.map +0 -1
  1923. package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
  1924. package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
  1925. package/dist/src/agent/tools/edit-diff.js.map +0 -1
  1926. package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
  1927. package/dist/src/agent/tools/error-tracker.js.map +0 -1
  1928. package/dist/src/agent/tools/exec-command.js.map +0 -1
  1929. package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
  1930. package/dist/src/agent/tools/executor.js.map +0 -1
  1931. package/dist/src/agent/tools/factory.js.map +0 -1
  1932. package/dist/src/agent/tools/find.js.map +0 -1
  1933. package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
  1934. package/dist/src/agent/tools/goal-tool.js.map +0 -1
  1935. package/dist/src/agent/tools/grep.js.map +0 -1
  1936. package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
  1937. package/dist/src/agent/tools/image-tool.js.map +0 -1
  1938. package/dist/src/agent/tools/list-dir.js.map +0 -1
  1939. package/dist/src/agent/tools/media-read-tool.js.map +0 -1
  1940. package/dist/src/agent/tools/memory-tool.js.map +0 -1
  1941. package/dist/src/agent/tools/metadata.js.map +0 -1
  1942. package/dist/src/agent/tools/read.js.map +0 -1
  1943. package/dist/src/agent/tools/search/http.js.map +0 -1
  1944. package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
  1945. package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
  1946. package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
  1947. package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
  1948. package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
  1949. package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
  1950. package/dist/src/agent/tools/search/region.js.map +0 -1
  1951. package/dist/src/agent/tools/search/registry.js.map +0 -1
  1952. package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
  1953. package/dist/src/agent/tools/send-media.js.map +0 -1
  1954. package/dist/src/agent/tools/session-search-tool.js.map +0 -1
  1955. package/dist/src/agent/tools/session-status-tool.js.map +0 -1
  1956. package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
  1957. package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
  1958. package/dist/src/agent/tools/skills-tools.js.map +0 -1
  1959. package/dist/src/agent/tools/structured-output.js.map +0 -1
  1960. package/dist/src/agent/tools/todo-tool.js.map +0 -1
  1961. package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
  1962. package/dist/src/agent/tools/tool-paths.js.map +0 -1
  1963. package/dist/src/agent/tools/truncate.js.map +0 -1
  1964. package/dist/src/agent/tools/tts-tool.js.map +0 -1
  1965. package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
  1966. package/dist/src/agent/tools/url-safety.js.map +0 -1
  1967. package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
  1968. package/dist/src/agent/tools/web-extract.js.map +0 -1
  1969. package/dist/src/agent/tools/web.js.map +0 -1
  1970. package/dist/src/agent/tools/workflow-tool.js.map +0 -1
  1971. package/dist/src/agent/tools/write.js.map +0 -1
  1972. package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
  1973. package/dist/src/agent/transcript/google-api.js.map +0 -1
  1974. package/dist/src/agent/transcript/model-selection.js.map +0 -1
  1975. package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
  1976. package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
  1977. package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
  1978. package/dist/src/agent/transcript/thinking-types.js.map +0 -1
  1979. package/dist/src/agent/transcript/thinking.js.map +0 -1
  1980. package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
  1981. package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
  1982. package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
  1983. package/dist/src/agent/workflow/agent-progress.js.map +0 -1
  1984. package/dist/src/agent/workflow/builtins/index.js.map +0 -1
  1985. package/dist/src/agent/workflow/catalog.js.map +0 -1
  1986. package/dist/src/agent/workflow/progress-broker.js.map +0 -1
  1987. package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
  1988. package/dist/src/agent/workflow/snapshot.js.map +0 -1
  1989. package/dist/src/agent/workflow/step-labels.js.map +0 -1
  1990. package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
  1991. package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
  1992. package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
  1993. package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
  1994. package/dist/src/agent-manifest/index.js.map +0 -1
  1995. package/dist/src/agent-manifest/preset-chain.js.map +0 -1
  1996. package/dist/src/agent-manifest/prompt.js.map +0 -1
  1997. package/dist/src/agent-manifest/resolver.js.map +0 -1
  1998. package/dist/src/agent-manifest/schema.js.map +0 -1
  1999. package/dist/src/agent-manifest/validator.js.map +0 -1
  2000. package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
  2001. package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
  2002. package/dist/src/agent-runtime/model-router.js.map +0 -1
  2003. package/dist/src/agent-runtime/run-trace.js.map +0 -1
  2004. package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
  2005. package/dist/src/agent-runtime/tool-registry.js.map +0 -1
  2006. package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
  2007. package/dist/src/ai-assist/text-assist.js.map +0 -1
  2008. package/dist/src/auth/credentials.js.map +0 -1
  2009. package/dist/src/auth/index.js.map +0 -1
  2010. package/dist/src/auth/oauth/anthropic.js.map +0 -1
  2011. package/dist/src/auth/oauth/github-copilot.js.map +0 -1
  2012. package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
  2013. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
  2014. package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
  2015. package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
  2016. package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
  2017. package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
  2018. package/dist/src/auth/oauth/minimax.js.map +0 -1
  2019. package/dist/src/auth/oauth/openai-codex.js.map +0 -1
  2020. package/dist/src/auth/oauth/pkce.js.map +0 -1
  2021. package/dist/src/auth/profiles/oauth.js.map +0 -1
  2022. package/dist/src/auth/profiles/order.js.map +0 -1
  2023. package/dist/src/auth/profiles/profiles.js.map +0 -1
  2024. package/dist/src/auth/profiles/store.js.map +0 -1
  2025. package/dist/src/auth/sync-provider-auth.js.map +0 -1
  2026. package/dist/src/automations/api/routes.js.map +0 -1
  2027. package/dist/src/automations/domain/schedule.js.map +0 -1
  2028. package/dist/src/automations/domain/validation.js.map +0 -1
  2029. package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
  2030. package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
  2031. package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
  2032. package/dist/src/automations/product-events.js.map +0 -1
  2033. package/dist/src/automations/service/action-executor.js.map +0 -1
  2034. package/dist/src/automations/service/automation-service.js.map +0 -1
  2035. package/dist/src/automations/storage/automation-repository.js.map +0 -1
  2036. package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
  2037. package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
  2038. package/dist/src/browser/actions/registry.js.map +0 -1
  2039. package/dist/src/browser/backend-from-config.js.map +0 -1
  2040. package/dist/src/browser/browser-command-timeout.js.map +0 -1
  2041. package/dist/src/browser/cache-dir-policy.js.map +0 -1
  2042. package/dist/src/browser/cdp-local-launcher.js.map +0 -1
  2043. package/dist/src/browser/cdp-supervisor.js.map +0 -1
  2044. package/dist/src/browser/free-port.js.map +0 -1
  2045. package/dist/src/browser/humanize.js.map +0 -1
  2046. package/dist/src/browser/install-lock.js.map +0 -1
  2047. package/dist/src/browser/manager.js.map +0 -1
  2048. package/dist/src/browser/pipeline/output.js.map +0 -1
  2049. package/dist/src/browser/pipeline/runner.js.map +0 -1
  2050. package/dist/src/browser/pipeline/schema.js.map +0 -1
  2051. package/dist/src/browser/pipeline/source.js.map +0 -1
  2052. package/dist/src/browser/pipeline/template.js.map +0 -1
  2053. package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
  2054. package/dist/src/browser/providers/browser-use.js.map +0 -1
  2055. package/dist/src/browser/providers/browserbase.js.map +0 -1
  2056. package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
  2057. package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
  2058. package/dist/src/browser/providers/extension.js.map +0 -1
  2059. package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
  2060. package/dist/src/browser/providers/playwright-install.js.map +0 -1
  2061. package/dist/src/browser/readiness.js.map +0 -1
  2062. package/dist/src/browser/schemas.js.map +0 -1
  2063. package/dist/src/browser/session-lifecycle.js.map +0 -1
  2064. package/dist/src/browser/snapshot-helpers.js.map +0 -1
  2065. package/dist/src/browser/stealth.js.map +0 -1
  2066. package/dist/src/browser/url-policy.js.map +0 -1
  2067. package/dist/src/capabilities/store-connector.js.map +0 -1
  2068. package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
  2069. package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
  2070. package/dist/src/channels/attachments/inbound-types.js.map +0 -1
  2071. package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
  2072. package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
  2073. package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
  2074. package/dist/src/channels/config-helpers.js.map +0 -1
  2075. package/dist/src/channels/envelope-timestamp.js.map +0 -1
  2076. package/dist/src/channels/exec-approval-runtime.js.map +0 -1
  2077. package/dist/src/channels/health-monitor.js.map +0 -1
  2078. package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
  2079. package/dist/src/channels/internal-outbound.js.map +0 -1
  2080. package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
  2081. package/dist/src/channels/manager.js.map +0 -1
  2082. package/dist/src/channels/media.js.map +0 -1
  2083. package/dist/src/channels/outbound/deliver.js.map +0 -1
  2084. package/dist/src/channels/outbound/normalize.js.map +0 -1
  2085. package/dist/src/channels/outbound/persist-store.js.map +0 -1
  2086. package/dist/src/channels/outbound/queue.js.map +0 -1
  2087. package/dist/src/channels/outbound-sender.js.map +0 -1
  2088. package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
  2089. package/dist/src/channels/pairing/approve-cli.js.map +0 -1
  2090. package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
  2091. package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
  2092. package/dist/src/channels/pairing/pairing-events.js.map +0 -1
  2093. package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
  2094. package/dist/src/channels/pairing/pairing-service.js.map +0 -1
  2095. package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
  2096. package/dist/src/channels/pairing/pairing-store.js.map +0 -1
  2097. package/dist/src/channels/pairing/paths.js.map +0 -1
  2098. package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
  2099. package/dist/src/channels/pipeline.js.map +0 -1
  2100. package/dist/src/channels/plugin-registry.js.map +0 -1
  2101. package/dist/src/channels/plugins/registry.js.map +0 -1
  2102. package/dist/src/channels/restart-policy.js.map +0 -1
  2103. package/dist/src/channels/security-helpers.js.map +0 -1
  2104. package/dist/src/channels/security.js.map +0 -1
  2105. package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
  2106. package/dist/src/chat-commands/agent-edit.js.map +0 -1
  2107. package/dist/src/chat-commands/builtins/config.js.map +0 -1
  2108. package/dist/src/chat-commands/builtins/context.js.map +0 -1
  2109. package/dist/src/chat-commands/builtins/goal.js.map +0 -1
  2110. package/dist/src/chat-commands/builtins/model.js.map +0 -1
  2111. package/dist/src/chat-commands/builtins/review.js.map +0 -1
  2112. package/dist/src/chat-commands/builtins/session.js.map +0 -1
  2113. package/dist/src/chat-commands/builtins/skill.js.map +0 -1
  2114. package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
  2115. package/dist/src/chat-commands/builtins/system.js.map +0 -1
  2116. package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
  2117. package/dist/src/chat-commands/builtins/tts.js.map +0 -1
  2118. package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
  2119. package/dist/src/chat-commands/command-parse.js.map +0 -1
  2120. package/dist/src/chat-commands/config-paths.js.map +0 -1
  2121. package/dist/src/chat-commands/config-value.js.map +0 -1
  2122. package/dist/src/chat-commands/context.js.map +0 -1
  2123. package/dist/src/chat-commands/format-output.js.map +0 -1
  2124. package/dist/src/chat-commands/index.js.map +0 -1
  2125. package/dist/src/chat-commands/processor.js.map +0 -1
  2126. package/dist/src/chat-commands/registry.js.map +0 -1
  2127. package/dist/src/chat-commands/session-key.js.map +0 -1
  2128. package/dist/src/cli/argv-invocation.js.map +0 -1
  2129. package/dist/src/cli/argv.js.map +0 -1
  2130. package/dist/src/cli/bin.js.map +0 -1
  2131. package/dist/src/cli/cli-log-level-preset.js.map +0 -1
  2132. package/dist/src/cli/command-catalog.js.map +0 -1
  2133. package/dist/src/cli/command-loaders.js.map +0 -1
  2134. package/dist/src/cli/command-manifest.js.map +0 -1
  2135. package/dist/src/cli/command-path-matches.js.map +0 -1
  2136. package/dist/src/cli/command-path-policy.js.map +0 -1
  2137. package/dist/src/cli/command-startup-policy.js.map +0 -1
  2138. package/dist/src/cli/commands/agent/interactive.js.map +0 -1
  2139. package/dist/src/cli/commands/agent/sessions.js.map +0 -1
  2140. package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
  2141. package/dist/src/cli/commands/agent.js.map +0 -1
  2142. package/dist/src/cli/commands/agents.js.map +0 -1
  2143. package/dist/src/cli/commands/auth.js.map +0 -1
  2144. package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
  2145. package/dist/src/cli/commands/browser.js.map +0 -1
  2146. package/dist/src/cli/commands/channels.js.map +0 -1
  2147. package/dist/src/cli/commands/config.js.map +0 -1
  2148. package/dist/src/cli/commands/connectors.js.map +0 -1
  2149. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
  2150. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
  2151. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
  2152. package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
  2153. package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
  2154. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
  2155. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
  2156. package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
  2157. package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
  2158. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
  2159. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
  2160. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
  2161. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
  2162. package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
  2163. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
  2164. package/dist/src/cli/commands/doctor/flow.js.map +0 -1
  2165. package/dist/src/cli/commands/doctor/format.js.map +0 -1
  2166. package/dist/src/cli/commands/doctor/index.js.map +0 -1
  2167. package/dist/src/cli/commands/extension-create.js.map +0 -1
  2168. package/dist/src/cli/commands/extension-dev.js.map +0 -1
  2169. package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
  2170. package/dist/src/cli/commands/extension-pack.js.map +0 -1
  2171. package/dist/src/cli/commands/extension.js.map +0 -1
  2172. package/dist/src/cli/commands/gateway/call.js.map +0 -1
  2173. package/dist/src/cli/commands/gateway/health.js.map +0 -1
  2174. package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
  2175. package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
  2176. package/dist/src/cli/commands/gateway/logs.js.map +0 -1
  2177. package/dist/src/cli/commands/gateway/probe.js.map +0 -1
  2178. package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
  2179. package/dist/src/cli/commands/gateway/restart.js.map +0 -1
  2180. package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
  2181. package/dist/src/cli/commands/gateway/service.js.map +0 -1
  2182. package/dist/src/cli/commands/gateway/shared.js.map +0 -1
  2183. package/dist/src/cli/commands/gateway/status.js.map +0 -1
  2184. package/dist/src/cli/commands/gateway/stop.js.map +0 -1
  2185. package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
  2186. package/dist/src/cli/commands/gateway/token.js.map +0 -1
  2187. package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
  2188. package/dist/src/cli/commands/gateway.js.map +0 -1
  2189. package/dist/src/cli/commands/goal.js.map +0 -1
  2190. package/dist/src/cli/commands/image.js.map +0 -1
  2191. package/dist/src/cli/commands/init.js.map +0 -1
  2192. package/dist/src/cli/commands/logs.js.map +0 -1
  2193. package/dist/src/cli/commands/models.js.map +0 -1
  2194. package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
  2195. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
  2196. package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
  2197. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
  2198. package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
  2199. package/dist/src/cli/commands/onboard/model.js.map +0 -1
  2200. package/dist/src/cli/commands/onboard.js.map +0 -1
  2201. package/dist/src/cli/commands/profile.js.map +0 -1
  2202. package/dist/src/cli/commands/project.js.map +0 -1
  2203. package/dist/src/cli/commands/providers.js.map +0 -1
  2204. package/dist/src/cli/commands/resume.js.map +0 -1
  2205. package/dist/src/cli/commands/search.js.map +0 -1
  2206. package/dist/src/cli/commands/session/actions.js.map +0 -1
  2207. package/dist/src/cli/commands/session/utils.js.map +0 -1
  2208. package/dist/src/cli/commands/session.js.map +0 -1
  2209. package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
  2210. package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
  2211. package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
  2212. package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
  2213. package/dist/src/cli/commands/setup.js.map +0 -1
  2214. package/dist/src/cli/commands/skills-test.js.map +0 -1
  2215. package/dist/src/cli/commands/skills.js.map +0 -1
  2216. package/dist/src/cli/commands/tailscale.js.map +0 -1
  2217. package/dist/src/cli/commands/tui-runner.js.map +0 -1
  2218. package/dist/src/cli/commands/tui.js.map +0 -1
  2219. package/dist/src/cli/commands/tunnel.js.map +0 -1
  2220. package/dist/src/cli/commands/update.js.map +0 -1
  2221. package/dist/src/cli/commands/voice.js.map +0 -1
  2222. package/dist/src/cli/context.js.map +0 -1
  2223. package/dist/src/cli/extension-cli-register.js.map +0 -1
  2224. package/dist/src/cli/gateway-run-argv.js.map +0 -1
  2225. package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
  2226. package/dist/src/cli/index.js.map +0 -1
  2227. package/dist/src/cli/registry.js.map +0 -1
  2228. package/dist/src/cli/templates.js.map +0 -1
  2229. package/dist/src/cli/utils/colors.js.map +0 -1
  2230. package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
  2231. package/dist/src/cli/utils/gateway-client.js.map +0 -1
  2232. package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
  2233. package/dist/src/cli/utils/init-workspace.js.map +0 -1
  2234. package/dist/src/cli/utils/oauth-login.js.map +0 -1
  2235. package/dist/src/cli/utils/oauth-providers.js.map +0 -1
  2236. package/dist/src/cli/utils/session.js.map +0 -1
  2237. package/dist/src/commands/agents.config.js.map +0 -1
  2238. package/dist/src/config/agent-profile.js.map +0 -1
  2239. package/dist/src/config/agent-typed-models.js.map +0 -1
  2240. package/dist/src/config/commands.flags.js.map +0 -1
  2241. package/dist/src/config/default-model.js.map +0 -1
  2242. package/dist/src/config/diff.js.map +0 -1
  2243. package/dist/src/config/gateway-bind.js.map +0 -1
  2244. package/dist/src/config/index.js.map +0 -1
  2245. package/dist/src/config/loader.js.map +0 -1
  2246. package/dist/src/config/mcp-config-normalize.js.map +0 -1
  2247. package/dist/src/config/model-input.js.map +0 -1
  2248. package/dist/src/config/models-json.js.map +0 -1
  2249. package/dist/src/config/paths-state.js.map +0 -1
  2250. package/dist/src/config/paths.js.map +0 -1
  2251. package/dist/src/config/profile.js.map +0 -1
  2252. package/dist/src/config/public-url.js.map +0 -1
  2253. package/dist/src/config/reload.js.map +0 -1
  2254. package/dist/src/config/resolve-config-value.js.map +0 -1
  2255. package/dist/src/config/rules.js.map +0 -1
  2256. package/dist/src/config/runtime-overrides.js.map +0 -1
  2257. package/dist/src/config/schema.js.map +0 -1
  2258. package/dist/src/config/validate-channel-configs.js.map +0 -1
  2259. package/dist/src/config/voice.js.map +0 -1
  2260. package/dist/src/config/web-patch.js.map +0 -1
  2261. package/dist/src/config/workspace-defaults.js.map +0 -1
  2262. package/dist/src/config/workspace-dirs.js.map +0 -1
  2263. package/dist/src/config/workspace-path-helpers.js.map +0 -1
  2264. package/dist/src/config/workspace-path.js.map +0 -1
  2265. package/dist/src/connectors/approval.js.map +0 -1
  2266. package/dist/src/connectors/auth-provider-registry.js.map +0 -1
  2267. package/dist/src/connectors/builtin-catalog.js.map +0 -1
  2268. package/dist/src/connectors/catalog.js.map +0 -1
  2269. package/dist/src/connectors/composio-catalog.js.map +0 -1
  2270. package/dist/src/connectors/composio-logo.js.map +0 -1
  2271. package/dist/src/connectors/composio-sessions.js.map +0 -1
  2272. package/dist/src/connectors/composio-triggers.js.map +0 -1
  2273. package/dist/src/connectors/composio.js.map +0 -1
  2274. package/dist/src/connectors/connector-memory-sync.js.map +0 -1
  2275. package/dist/src/connectors/health.js.map +0 -1
  2276. package/dist/src/connectors/install.js.map +0 -1
  2277. package/dist/src/connectors/instances.js.map +0 -1
  2278. package/dist/src/connectors/integration-strategy.js.map +0 -1
  2279. package/dist/src/connectors/lifecycle.js.map +0 -1
  2280. package/dist/src/connectors/materialize.js.map +0 -1
  2281. package/dist/src/connectors/policy.js.map +0 -1
  2282. package/dist/src/connectors/providers.js.map +0 -1
  2283. package/dist/src/connectors/registries/modelscope.js.map +0 -1
  2284. package/dist/src/connectors/registries/official-mcp.js.map +0 -1
  2285. package/dist/src/connectors/registries/search.js.map +0 -1
  2286. package/dist/src/connectors/registries/smithery.js.map +0 -1
  2287. package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
  2288. package/dist/src/connectors/secret-store.js.map +0 -1
  2289. package/dist/src/connectors/setup-secrets.js.map +0 -1
  2290. package/dist/src/connectors/supervisor.js.map +0 -1
  2291. package/dist/src/connectors/usage.js.map +0 -1
  2292. package/dist/src/connectors/workflow-preflight.js.map +0 -1
  2293. package/dist/src/daemon/constants.js.map +0 -1
  2294. package/dist/src/daemon/install-plan.js.map +0 -1
  2295. package/dist/src/daemon/launchd.js.map +0 -1
  2296. package/dist/src/daemon/schtasks.js.map +0 -1
  2297. package/dist/src/daemon/service-audit.js.map +0 -1
  2298. package/dist/src/daemon/service.js.map +0 -1
  2299. package/dist/src/daemon/systemd.js.map +0 -1
  2300. package/dist/src/document-understanding/extract.js.map +0 -1
  2301. package/dist/src/errors/index.js.map +0 -1
  2302. package/dist/src/extensions/activation-context.js.map +0 -1
  2303. package/dist/src/extensions/activation-planner.js.map +0 -1
  2304. package/dist/src/extensions/api.js.map +0 -1
  2305. package/dist/src/extensions/bundle-mcp.js.map +0 -1
  2306. package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
  2307. package/dist/src/extensions/diagnostics.js.map +0 -1
  2308. package/dist/src/extensions/discover-extensions.js.map +0 -1
  2309. package/dist/src/extensions/engine-check.js.map +0 -1
  2310. package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
  2311. package/dist/src/extensions/extension-registry-impl.js.map +0 -1
  2312. package/dist/src/extensions/health.js.map +0 -1
  2313. package/dist/src/extensions/hooks.js.map +0 -1
  2314. package/dist/src/extensions/index.js.map +0 -1
  2315. package/dist/src/extensions/install-transaction.js.map +0 -1
  2316. package/dist/src/extensions/install.js.map +0 -1
  2317. package/dist/src/extensions/loader.js.map +0 -1
  2318. package/dist/src/extensions/lockfile.js.map +0 -1
  2319. package/dist/src/extensions/manifest-registry.js.map +0 -1
  2320. package/dist/src/extensions/marketplace.js.map +0 -1
  2321. package/dist/src/extensions/media-provider-contracts.js.map +0 -1
  2322. package/dist/src/extensions/normalize-manifest.js.map +0 -1
  2323. package/dist/src/extensions/onboard-helpers.js.map +0 -1
  2324. package/dist/src/extensions/package-contract.js.map +0 -1
  2325. package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
  2326. package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
  2327. package/dist/src/extensions/sdk/index.js.map +0 -1
  2328. package/dist/src/extensions/sdk/lazy.js.map +0 -1
  2329. package/dist/src/extensions/sdk/testing.js.map +0 -1
  2330. package/dist/src/extensions/security.js.map +0 -1
  2331. package/dist/src/extensions/slots.js.map +0 -1
  2332. package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
  2333. package/dist/src/extensions/store-zip-limits.js.map +0 -1
  2334. package/dist/src/extensions/typed-event-bus.js.map +0 -1
  2335. package/dist/src/extensions/types/hooks.js.map +0 -1
  2336. package/dist/src/extensions/types/providers.js.map +0 -1
  2337. package/dist/src/extensions/update.js.map +0 -1
  2338. package/dist/src/extensions/when-context.js.map +0 -1
  2339. package/dist/src/extensions/when-expression.js.map +0 -1
  2340. package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
  2341. package/dist/src/gateway/agent-run-relay.js.map +0 -1
  2342. package/dist/src/gateway/agents-admin.js.map +0 -1
  2343. package/dist/src/gateway/auth.js.map +0 -1
  2344. package/dist/src/gateway/capability-presets-admin.js.map +0 -1
  2345. package/dist/src/gateway/chat-limits.js.map +0 -1
  2346. package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
  2347. package/dist/src/gateway/clarify-bridge.js.map +0 -1
  2348. package/dist/src/gateway/clarify-runtime.js.map +0 -1
  2349. package/dist/src/gateway/client-ip.js.map +0 -1
  2350. package/dist/src/gateway/config-tools-web.js.map +0 -1
  2351. package/dist/src/gateway/credential.js.map +0 -1
  2352. package/dist/src/gateway/discovery/mdns.js.map +0 -1
  2353. package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
  2354. package/dist/src/gateway/ensure-network-cors.js.map +0 -1
  2355. package/dist/src/gateway/file-path-classifier.js.map +0 -1
  2356. package/dist/src/gateway/file-reference-registry.js.map +0 -1
  2357. package/dist/src/gateway/global-defaults-admin.js.map +0 -1
  2358. package/dist/src/gateway/heartbeat/service.js.map +0 -1
  2359. package/dist/src/gateway/hono/app.js.map +0 -1
  2360. package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
  2361. package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
  2362. package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
  2363. package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
  2364. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
  2365. package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
  2366. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
  2367. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
  2368. package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
  2369. package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
  2370. package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
  2371. package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
  2372. package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
  2373. package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
  2374. package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
  2375. package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
  2376. package/dist/src/gateway/hono/oauth-async.js.map +0 -1
  2377. package/dist/src/gateway/hono/oauth.js.map +0 -1
  2378. package/dist/src/gateway/hono/routes/activity.js.map +0 -1
  2379. package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
  2380. package/dist/src/gateway/hono/routes/agents.js.map +0 -1
  2381. package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
  2382. package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
  2383. package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
  2384. package/dist/src/gateway/hono/routes/browser.js.map +0 -1
  2385. package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
  2386. package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
  2387. package/dist/src/gateway/hono/routes/channels.js.map +0 -1
  2388. package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
  2389. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
  2390. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
  2391. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
  2392. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
  2393. package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
  2394. package/dist/src/gateway/hono/routes/config.js.map +0 -1
  2395. package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
  2396. package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
  2397. package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
  2398. package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
  2399. package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
  2400. package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
  2401. package/dist/src/gateway/hono/routes/goals.js.map +0 -1
  2402. package/dist/src/gateway/hono/routes/home.js.map +0 -1
  2403. package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
  2404. package/dist/src/gateway/hono/routes/index.js.map +0 -1
  2405. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
  2406. package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
  2407. package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
  2408. package/dist/src/gateway/hono/routes/logs.js.map +0 -1
  2409. package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
  2410. package/dist/src/gateway/hono/routes/media.js.map +0 -1
  2411. package/dist/src/gateway/hono/routes/memory.js.map +0 -1
  2412. package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
  2413. package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
  2414. package/dist/src/gateway/hono/routes/models.js.map +0 -1
  2415. package/dist/src/gateway/hono/routes/notes.js.map +0 -1
  2416. package/dist/src/gateway/hono/routes/projects.js.map +0 -1
  2417. package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
  2418. package/dist/src/gateway/hono/routes/search.js.map +0 -1
  2419. package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
  2420. package/dist/src/gateway/hono/routes/shares.js.map +0 -1
  2421. package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
  2422. package/dist/src/gateway/hono/routes/status.js.map +0 -1
  2423. package/dist/src/gateway/hono/routes/tui.js.map +0 -1
  2424. package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
  2425. package/dist/src/gateway/hono/routes/update.js.map +0 -1
  2426. package/dist/src/gateway/hono/routes/voice.js.map +0 -1
  2427. package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
  2428. package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
  2429. package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
  2430. package/dist/src/gateway/hono/routes/you.js.map +0 -1
  2431. package/dist/src/gateway/hono/sse-json.js.map +0 -1
  2432. package/dist/src/gateway/hono/sse.js.map +0 -1
  2433. package/dist/src/gateway/host.js.map +0 -1
  2434. package/dist/src/gateway/image-capabilities.js.map +0 -1
  2435. package/dist/src/gateway/listen.js.map +0 -1
  2436. package/dist/src/gateway/lock.js.map +0 -1
  2437. package/dist/src/gateway/ports.js.map +0 -1
  2438. package/dist/src/gateway/protocol.js.map +0 -1
  2439. package/dist/src/gateway/public-url.js.map +0 -1
  2440. package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
  2441. package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
  2442. package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
  2443. package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
  2444. package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
  2445. package/dist/src/gateway/respawn.js.map +0 -1
  2446. package/dist/src/gateway/run-loop.js.map +0 -1
  2447. package/dist/src/gateway/runtime-config.js.map +0 -1
  2448. package/dist/src/gateway/security/audit.js.map +0 -1
  2449. package/dist/src/gateway/security/csp.js.map +0 -1
  2450. package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
  2451. package/dist/src/gateway/security/external-content.js.map +0 -1
  2452. package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
  2453. package/dist/src/gateway/security/loopback.js.map +0 -1
  2454. package/dist/src/gateway/security/operator-scopes.js.map +0 -1
  2455. package/dist/src/gateway/security/origin-check.js.map +0 -1
  2456. package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
  2457. package/dist/src/gateway/security/secret-equal.js.map +0 -1
  2458. package/dist/src/gateway/server-tailscale.js.map +0 -1
  2459. package/dist/src/gateway/server.js.map +0 -1
  2460. package/dist/src/gateway/service/agent-runner.js.map +0 -1
  2461. package/dist/src/gateway/service/config-coordinator.js.map +0 -1
  2462. package/dist/src/gateway/service/marketplace-service.js.map +0 -1
  2463. package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
  2464. package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
  2465. package/dist/src/gateway/service/sessions-api.js.map +0 -1
  2466. package/dist/src/gateway/service/sse-hub.js.map +0 -1
  2467. package/dist/src/gateway/service.js.map +0 -1
  2468. package/dist/src/gateway/session-reset-service.js.map +0 -1
  2469. package/dist/src/gateway/startup-readiness.js.map +0 -1
  2470. package/dist/src/gateway/startup-trace.js.map +0 -1
  2471. package/dist/src/gateway/tailscale-auth.js.map +0 -1
  2472. package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
  2473. package/dist/src/gateway/tls-server.js.map +0 -1
  2474. package/dist/src/gateway/trusted-proxy.js.map +0 -1
  2475. package/dist/src/gateway/user-turn-input.js.map +0 -1
  2476. package/dist/src/gateway/workspace-editor-path.js.map +0 -1
  2477. package/dist/src/gateway/workspace-file-search.js.map +0 -1
  2478. package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
  2479. package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
  2480. package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
  2481. package/dist/src/gateway/ws-security.js.map +0 -1
  2482. package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
  2483. package/dist/src/goals/goal-contract-draft.js.map +0 -1
  2484. package/dist/src/goals/goal-evidence-review.js.map +0 -1
  2485. package/dist/src/goals/goal-notifications.js.map +0 -1
  2486. package/dist/src/goals/goal-queue-store.js.map +0 -1
  2487. package/dist/src/goals/goal-runner.js.map +0 -1
  2488. package/dist/src/goals/goal-service.js.map +0 -1
  2489. package/dist/src/goals/goal-store.js.map +0 -1
  2490. package/dist/src/goals/goal-workflow-judge.js.map +0 -1
  2491. package/dist/src/heartbeat/active-hours.js.map +0 -1
  2492. package/dist/src/heartbeat/content-check.js.map +0 -1
  2493. package/dist/src/heartbeat/event-prompt.js.map +0 -1
  2494. package/dist/src/heartbeat/tokens.js.map +0 -1
  2495. package/dist/src/heartbeat/wake.js.map +0 -1
  2496. package/dist/src/i18n/format.js.map +0 -1
  2497. package/dist/src/i18n/goals-bundle.js.map +0 -1
  2498. package/dist/src/i18n/locale.js.map +0 -1
  2499. package/dist/src/i18n/locales/goals.en.js.map +0 -1
  2500. package/dist/src/i18n/locales/goals.zh.js.map +0 -1
  2501. package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
  2502. package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
  2503. package/dist/src/i18n/share-tool-bundle.js.map +0 -1
  2504. package/dist/src/index.js.map +0 -1
  2505. package/dist/src/infra/brew.js.map +0 -1
  2506. package/dist/src/infra/bus/queue.js.map +0 -1
  2507. package/dist/src/infra/debounce.js.map +0 -1
  2508. package/dist/src/infra/exec.js.map +0 -1
  2509. package/dist/src/infra/gateway-process-argv.js.map +0 -1
  2510. package/dist/src/infra/gateway-processes.js.map +0 -1
  2511. package/dist/src/infra/host-env-security-policy.js.map +0 -1
  2512. package/dist/src/infra/host-env-security.js.map +0 -1
  2513. package/dist/src/infra/http-proxy-env.js.map +0 -1
  2514. package/dist/src/infra/is-main.js.map +0 -1
  2515. package/dist/src/infra/json-utf8-bytes.js.map +0 -1
  2516. package/dist/src/infra/node-sqlite.js.map +0 -1
  2517. package/dist/src/infra/package-json.js.map +0 -1
  2518. package/dist/src/infra/package-update-steps.js.map +0 -1
  2519. package/dist/src/infra/path-env.js.map +0 -1
  2520. package/dist/src/infra/path-prepend.js.map +0 -1
  2521. package/dist/src/infra/ports.js.map +0 -1
  2522. package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
  2523. package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
  2524. package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
  2525. package/dist/src/infra/restart.js.map +0 -1
  2526. package/dist/src/infra/retry.js.map +0 -1
  2527. package/dist/src/infra/run-command.js.map +0 -1
  2528. package/dist/src/infra/sqlite-errors.js.map +0 -1
  2529. package/dist/src/infra/ssh-tunnel.js.map +0 -1
  2530. package/dist/src/infra/stable-node-path.js.map +0 -1
  2531. package/dist/src/infra/tailscale.js.map +0 -1
  2532. package/dist/src/infra/undici-fetch.js.map +0 -1
  2533. package/dist/src/infra/unhandled-rejections.js.map +0 -1
  2534. package/dist/src/infra/update-channels.js.map +0 -1
  2535. package/dist/src/infra/update-check.js.map +0 -1
  2536. package/dist/src/infra/update-global.js.map +0 -1
  2537. package/dist/src/infra/update-lock.js.map +0 -1
  2538. package/dist/src/infra/update-log.js.map +0 -1
  2539. package/dist/src/infra/update-restart.js.map +0 -1
  2540. package/dist/src/infra/update-runner.js.map +0 -1
  2541. package/dist/src/infra/update-startup.js.map +0 -1
  2542. package/dist/src/infra/warning-filter.js.map +0 -1
  2543. package/dist/src/infra/write-file-atomic.js.map +0 -1
  2544. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
  2545. package/dist/src/knowledge/coordinator.js.map +0 -1
  2546. package/dist/src/knowledge/ingestion-service.js.map +0 -1
  2547. package/dist/src/local-apps/acceptance.js.map +0 -1
  2548. package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
  2549. package/dist/src/local-apps/runtime-entry.js.map +0 -1
  2550. package/dist/src/local-apps/scaffold.js.map +0 -1
  2551. package/dist/src/local-apps/service.js.map +0 -1
  2552. package/dist/src/local-apps/store.js.map +0 -1
  2553. package/dist/src/markdown/chunk.js.map +0 -1
  2554. package/dist/src/markdown/code-spans.js.map +0 -1
  2555. package/dist/src/markdown/fences.js.map +0 -1
  2556. package/dist/src/markdown/frontmatter.js.map +0 -1
  2557. package/dist/src/markdown/ir.js.map +0 -1
  2558. package/dist/src/markdown/render.js.map +0 -1
  2559. package/dist/src/markdown/tables.js.map +0 -1
  2560. package/dist/src/mcp/channel-bridge.js.map +0 -1
  2561. package/dist/src/mcp/channel-server.js.map +0 -1
  2562. package/dist/src/mcp/channel-shared.js.map +0 -1
  2563. package/dist/src/mcp/channel-tools.js.map +0 -1
  2564. package/dist/src/mcp/gateway-http-client.js.map +0 -1
  2565. package/dist/src/media/media-reference.js.map +0 -1
  2566. package/dist/src/media/paths.js.map +0 -1
  2567. package/dist/src/media/session-references.js.map +0 -1
  2568. package/dist/src/media/store.js.map +0 -1
  2569. package/dist/src/media/uri.js.map +0 -1
  2570. package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
  2571. package/dist/src/media-shared/http/deadline.js.map +0 -1
  2572. package/dist/src/media-shared/http/private-network.js.map +0 -1
  2573. package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
  2574. package/dist/src/media-shared/http/provider-http.js.map +0 -1
  2575. package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
  2576. package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
  2577. package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
  2578. package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
  2579. package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
  2580. package/dist/src/media-understanding/registry.js.map +0 -1
  2581. package/dist/src/media-understanding/resolve-entries.js.map +0 -1
  2582. package/dist/src/media-understanding/runner.js.map +0 -1
  2583. package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
  2584. package/dist/src/migrations/registry.js.map +0 -1
  2585. package/dist/src/migrations/runner.js.map +0 -1
  2586. package/dist/src/mobile/notification-service.js.map +0 -1
  2587. package/dist/src/mobile/notification-store.js.map +0 -1
  2588. package/dist/src/mobile/notification-types.js.map +0 -1
  2589. package/dist/src/notes/agent-context.js.map +0 -1
  2590. package/dist/src/notes/attachment-ref.js.map +0 -1
  2591. package/dist/src/notes/note-attachment-sync.js.map +0 -1
  2592. package/dist/src/notes/note-index-meta.js.map +0 -1
  2593. package/dist/src/notes/note-markdown.js.map +0 -1
  2594. package/dist/src/notes/paths.js.map +0 -1
  2595. package/dist/src/notes/service.js.map +0 -1
  2596. package/dist/src/notes/store.js.map +0 -1
  2597. package/dist/src/package-version.js.map +0 -1
  2598. package/dist/src/pets/factory.js.map +0 -1
  2599. package/dist/src/pets/manifest.js.map +0 -1
  2600. package/dist/src/pets/validator.js.map +0 -1
  2601. package/dist/src/process/kill-tree.js.map +0 -1
  2602. package/dist/src/project-trust/trust-store.js.map +0 -1
  2603. package/dist/src/projects/automation-bind.js.map +0 -1
  2604. package/dist/src/projects/goal-bind.js.map +0 -1
  2605. package/dist/src/projects/memory-bind.js.map +0 -1
  2606. package/dist/src/projects/project-agent-suggestion.js.map +0 -1
  2607. package/dist/src/projects/project-agent.js.map +0 -1
  2608. package/dist/src/projects/project-kind.js.map +0 -1
  2609. package/dist/src/projects/project-loop.js.map +0 -1
  2610. package/dist/src/projects/project-service.js.map +0 -1
  2611. package/dist/src/projects/project-store.js.map +0 -1
  2612. package/dist/src/projects/session-bind.js.map +0 -1
  2613. package/dist/src/projects/workflow-bind.js.map +0 -1
  2614. package/dist/src/projects/workspace-project.js.map +0 -1
  2615. package/dist/src/projects/workspace.js.map +0 -1
  2616. package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
  2617. package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
  2618. package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
  2619. package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
  2620. package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
  2621. package/dist/src/providers/constants.js.map +0 -1
  2622. package/dist/src/providers/domestic-presets.js.map +0 -1
  2623. package/dist/src/providers/env-keys.js.map +0 -1
  2624. package/dist/src/providers/extension-stream-bridge.js.map +0 -1
  2625. package/dist/src/providers/index.js.map +0 -1
  2626. package/dist/src/providers/model-call.js.map +0 -1
  2627. package/dist/src/providers/model-discovery.js.map +0 -1
  2628. package/dist/src/providers/model-registry.js.map +0 -1
  2629. package/dist/src/providers/model-supplements.js.map +0 -1
  2630. package/dist/src/providers/plugin-registry.js.map +0 -1
  2631. package/dist/src/providers/presentation.js.map +0 -1
  2632. package/dist/src/remote-access/exposure-guards.js.map +0 -1
  2633. package/dist/src/remote-access/exposure-manager.js.map +0 -1
  2634. package/dist/src/review/review-git.js.map +0 -1
  2635. package/dist/src/review/review-types.js.map +0 -1
  2636. package/dist/src/routing/account-id.js.map +0 -1
  2637. package/dist/src/routing/agent-session-key.js.map +0 -1
  2638. package/dist/src/routing/bindings.js.map +0 -1
  2639. package/dist/src/routing/index.js.map +0 -1
  2640. package/dist/src/routing/resolve-route.js.map +0 -1
  2641. package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
  2642. package/dist/src/routing/session-key-utils.js.map +0 -1
  2643. package/dist/src/routing/session-key.js.map +0 -1
  2644. package/dist/src/session/abort-cutoff.js.map +0 -1
  2645. package/dist/src/session/chat-export.js.map +0 -1
  2646. package/dist/src/session/client-history.js.map +0 -1
  2647. package/dist/src/session/compaction-checkpoints.js.map +0 -1
  2648. package/dist/src/session/config-store.js.map +0 -1
  2649. package/dist/src/session/init-session-turn.js.map +0 -1
  2650. package/dist/src/session/lifecycle-timestamps.js.map +0 -1
  2651. package/dist/src/session/load-jsonl-entries.js.map +0 -1
  2652. package/dist/src/session/manager.js.map +0 -1
  2653. package/dist/src/session/patch-metadata.js.map +0 -1
  2654. package/dist/src/session/reset-policy.js.map +0 -1
  2655. package/dist/src/session/reset-triggers.js.map +0 -1
  2656. package/dist/src/session/reset-type.js.map +0 -1
  2657. package/dist/src/session/resolve-session.js.map +0 -1
  2658. package/dist/src/session/session-context-for-llm.js.map +0 -1
  2659. package/dist/src/session/session-id.js.map +0 -1
  2660. package/dist/src/session/session-title.js.map +0 -1
  2661. package/dist/src/session/session-workspace.js.map +0 -1
  2662. package/dist/src/session/store.js.map +0 -1
  2663. package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
  2664. package/dist/src/session/thinking-resolve.js.map +0 -1
  2665. package/dist/src/session/transcript-events.js.map +0 -1
  2666. package/dist/src/session/transcript-format.js.map +0 -1
  2667. package/dist/src/session/transcript-outline.js.map +0 -1
  2668. package/dist/src/session/transcript-stats.js.map +0 -1
  2669. package/dist/src/session/types.js.map +0 -1
  2670. package/dist/src/session/user-round-delete.js.map +0 -1
  2671. package/dist/src/share/share-audit.js.map +0 -1
  2672. package/dist/src/share/share-auto.js.map +0 -1
  2673. package/dist/src/share/share-config.js.map +0 -1
  2674. package/dist/src/share/share-landing.js.map +0 -1
  2675. package/dist/src/share/share-rate-limit.js.map +0 -1
  2676. package/dist/src/share/share-store.js.map +0 -1
  2677. package/dist/src/share/share-thumbnail.js.map +0 -1
  2678. package/dist/src/share/share-types.js.map +0 -1
  2679. package/dist/src/share/share-url.js.map +0 -1
  2680. package/dist/src/share/share-zip.js.map +0 -1
  2681. package/dist/src/share/site-proxy.js.map +0 -1
  2682. package/dist/src/share/site-share-config.js.map +0 -1
  2683. package/dist/src/share/site-share-router.js.map +0 -1
  2684. package/dist/src/share/site-share-store.js.map +0 -1
  2685. package/dist/src/share/site-share-types.js.map +0 -1
  2686. package/dist/src/share/site-static-serve.js.map +0 -1
  2687. package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
  2688. package/dist/src/storage/sqlite/config-repository.js.map +0 -1
  2689. package/dist/src/storage/sqlite/connection.js.map +0 -1
  2690. package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
  2691. package/dist/src/storage/sqlite/fts.js.map +0 -1
  2692. package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
  2693. package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
  2694. package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
  2695. package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
  2696. package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
  2697. package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
  2698. package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
  2699. package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
  2700. package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
  2701. package/dist/src/storage/sqlite/paths.js.map +0 -1
  2702. package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
  2703. package/dist/src/storage/sqlite/schema-version.js.map +0 -1
  2704. package/dist/src/storage/sqlite/schema.js.map +0 -1
  2705. package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
  2706. package/dist/src/storage/sqlite/session-repository.js.map +0 -1
  2707. package/dist/src/storage/sqlite/transaction.js.map +0 -1
  2708. package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
  2709. package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
  2710. package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
  2711. package/dist/src/tui/backends/embedded-backend.js.map +0 -1
  2712. package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
  2713. package/dist/src/tui/chat-history.js.map +0 -1
  2714. package/dist/src/tui/clipboard-image.js.map +0 -1
  2715. package/dist/src/tui/clipboard-text.js.map +0 -1
  2716. package/dist/src/tui/components/assistant-message.js.map +0 -1
  2717. package/dist/src/tui/components/bash-execution.js.map +0 -1
  2718. package/dist/src/tui/components/bash-summary.js.map +0 -1
  2719. package/dist/src/tui/components/branch-message-summary.js.map +0 -1
  2720. package/dist/src/tui/components/branch-summary.js.map +0 -1
  2721. package/dist/src/tui/components/chat-log.js.map +0 -1
  2722. package/dist/src/tui/components/compaction-summary.js.map +0 -1
  2723. package/dist/src/tui/components/custom-editor.js.map +0 -1
  2724. package/dist/src/tui/components/custom-message.js.map +0 -1
  2725. package/dist/src/tui/components/dynamic-border.js.map +0 -1
  2726. package/dist/src/tui/components/extension-dialog.js.map +0 -1
  2727. package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
  2728. package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
  2729. package/dist/src/tui/components/searchable-select-list.js.map +0 -1
  2730. package/dist/src/tui/components/session-selector.js.map +0 -1
  2731. package/dist/src/tui/components/settings-selector.js.map +0 -1
  2732. package/dist/src/tui/components/thinking-selector.js.map +0 -1
  2733. package/dist/src/tui/components/tool-execution.js.map +0 -1
  2734. package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
  2735. package/dist/src/tui/components/tui-header.js.map +0 -1
  2736. package/dist/src/tui/components/user-message.js.map +0 -1
  2737. package/dist/src/tui/components/visual-truncate.js.map +0 -1
  2738. package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
  2739. package/dist/src/tui/extension-host/host.js.map +0 -1
  2740. package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
  2741. package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
  2742. package/dist/src/tui/extension-host/runtime.js.map +0 -1
  2743. package/dist/src/tui/extension-host/surface.js.map +0 -1
  2744. package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
  2745. package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
  2746. package/dist/src/tui/sse-consumer.js.map +0 -1
  2747. package/dist/src/tui/theme/dark.js.map +0 -1
  2748. package/dist/src/tui/theme/light.js.map +0 -1
  2749. package/dist/src/tui/theme-manager.js.map +0 -1
  2750. package/dist/src/tui/theme.js.map +0 -1
  2751. package/dist/src/tui/tool-summary.js.map +0 -1
  2752. package/dist/src/tui/tui-agent-events.js.map +0 -1
  2753. package/dist/src/tui/tui-command-formatters.js.map +0 -1
  2754. package/dist/src/tui/tui-commands.js.map +0 -1
  2755. package/dist/src/tui/tui-context-usage.js.map +0 -1
  2756. package/dist/src/tui/tui-extension-user-message.js.map +0 -1
  2757. package/dist/src/tui/tui-fd-path.js.map +0 -1
  2758. package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
  2759. package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
  2760. package/dist/src/tui/tui-git-branch.js.map +0 -1
  2761. package/dist/src/tui/tui-keybindings-file.js.map +0 -1
  2762. package/dist/src/tui/tui-lifecycle.js.map +0 -1
  2763. package/dist/src/tui/tui-local-shell.js.map +0 -1
  2764. package/dist/src/tui/tui-model-picker.js.map +0 -1
  2765. package/dist/src/tui/tui-oauth-login.js.map +0 -1
  2766. package/dist/src/tui/tui-overlays.js.map +0 -1
  2767. package/dist/src/tui/tui-picker-overlay.js.map +0 -1
  2768. package/dist/src/tui/tui-run-state.js.map +0 -1
  2769. package/dist/src/tui/tui-run-status-format.js.map +0 -1
  2770. package/dist/src/tui/tui-runtime-hints.js.map +0 -1
  2771. package/dist/src/tui/tui-scoped-models.js.map +0 -1
  2772. package/dist/src/tui/tui-session-actions.js.map +0 -1
  2773. package/dist/src/tui/tui-session-format.js.map +0 -1
  2774. package/dist/src/tui/tui-session-snapshot.js.map +0 -1
  2775. package/dist/src/tui/tui-session-stats.js.map +0 -1
  2776. package/dist/src/tui/tui-settings.js.map +0 -1
  2777. package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
  2778. package/dist/src/tui/tui-startup-resources.js.map +0 -1
  2779. package/dist/src/tui/tui-startup-text.js.map +0 -1
  2780. package/dist/src/tui/tui-stdio-filter.js.map +0 -1
  2781. package/dist/src/tui/tui-submit.js.map +0 -1
  2782. package/dist/src/tui/tui-suspend.js.map +0 -1
  2783. package/dist/src/tui/tui-timeline-picker.js.map +0 -1
  2784. package/dist/src/tui/tui-timeline.js.map +0 -1
  2785. package/dist/src/tui/tui-tool-diff.js.map +0 -1
  2786. package/dist/src/tui/tui-tool-result.js.map +0 -1
  2787. package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
  2788. package/dist/src/tui/tui-transcript-tree.js.map +0 -1
  2789. package/dist/src/tui/tui-types.js.map +0 -1
  2790. package/dist/src/tui/tui-workflow-slash.js.map +0 -1
  2791. package/dist/src/tui/tui.js.map +0 -1
  2792. package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
  2793. package/dist/src/tunnel/broker-client.js.map +0 -1
  2794. package/dist/src/tunnel/consent.js.map +0 -1
  2795. package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
  2796. package/dist/src/tunnel/env.js.map +0 -1
  2797. package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
  2798. package/dist/src/tunnel/frpc-binary.js.map +0 -1
  2799. package/dist/src/tunnel/frpc-config.js.map +0 -1
  2800. package/dist/src/tunnel/frpc-extract.js.map +0 -1
  2801. package/dist/src/tunnel/frpc-process.js.map +0 -1
  2802. package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
  2803. package/dist/src/tunnel/pair-context.js.map +0 -1
  2804. package/dist/src/tunnel/pair-url.js.map +0 -1
  2805. package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
  2806. package/dist/src/tunnel/pairing.js.map +0 -1
  2807. package/dist/src/tunnel/tunnel-audit.js.map +0 -1
  2808. package/dist/src/tunnel/tunnel-config.js.map +0 -1
  2809. package/dist/src/tunnel/tunnel-persist.js.map +0 -1
  2810. package/dist/src/tunnel/tunnel-qr.js.map +0 -1
  2811. package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
  2812. package/dist/src/tunnel/tunnel-service.js.map +0 -1
  2813. package/dist/src/tunnel/tunnel-state.js.map +0 -1
  2814. package/dist/src/tunnel/well-known.js.map +0 -1
  2815. package/dist/src/user-context/config.js.map +0 -1
  2816. package/dist/src/user-context/import.js.map +0 -1
  2817. package/dist/src/user-context/owner.js.map +0 -1
  2818. package/dist/src/user-context/profile.js.map +0 -1
  2819. package/dist/src/user-context/projection.js.map +0 -1
  2820. package/dist/src/user-context/runtime.js.map +0 -1
  2821. package/dist/src/user-context/source-recommendations.js.map +0 -1
  2822. package/dist/src/user-context/trust-policy.js.map +0 -1
  2823. package/dist/src/utils/global-singleton.js.map +0 -1
  2824. package/dist/src/utils/helpers.js.map +0 -1
  2825. package/dist/src/utils/index.js.map +0 -1
  2826. package/dist/src/utils/is-record.js.map +0 -1
  2827. package/dist/src/utils/logger/audit.js.map +0 -1
  2828. package/dist/src/utils/logger/config.js.map +0 -1
  2829. package/dist/src/utils/logger/context.js.map +0 -1
  2830. package/dist/src/utils/logger/exporters.js.map +0 -1
  2831. package/dist/src/utils/logger/index.js.map +0 -1
  2832. package/dist/src/utils/logger/log-store.js.map +0 -1
  2833. package/dist/src/utils/logger/log-stream.js.map +0 -1
  2834. package/dist/src/utils/logger/pino-record.js.map +0 -1
  2835. package/dist/src/utils/logger/redact.js.map +0 -1
  2836. package/dist/src/utils/logger/rotation.js.map +0 -1
  2837. package/dist/src/utils/logger/shutdown.js.map +0 -1
  2838. package/dist/src/utils/logger/stats.js.map +0 -1
  2839. package/dist/src/utils/logger/streams.js.map +0 -1
  2840. package/dist/src/utils/logger/types.js.map +0 -1
  2841. package/dist/src/utils/logger.js.map +0 -1
  2842. package/dist/src/utils/redact-sensitive-url.js.map +0 -1
  2843. package/dist/src/utils/sanitize-log.js.map +0 -1
  2844. package/dist/src/utils/string-coerce.js.map +0 -1
  2845. package/dist/src/voice/language-profile.js.map +0 -1
  2846. package/dist/src/voice/local/model-files.js.map +0 -1
  2847. package/dist/src/voice/local/model-manager.js.map +0 -1
  2848. package/dist/src/voice/local/models.js.map +0 -1
  2849. package/dist/src/voice/local/runtime-client.js.map +0 -1
  2850. package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
  2851. package/dist/src/voice/local/runtime-worker.js.map +0 -1
  2852. package/dist/src/voice/local/wav.js.map +0 -1
  2853. package/dist/src/voice/metadata/builtin.js.map +0 -1
  2854. package/dist/src/voice/metadata/registry.js.map +0 -1
  2855. package/dist/src/voice/stt/availability.js.map +0 -1
  2856. package/dist/src/voice/stt/config-slice.js.map +0 -1
  2857. package/dist/src/voice/stt/factory.js.map +0 -1
  2858. package/dist/src/voice/stt/index.js.map +0 -1
  2859. package/dist/src/voice/stt/list-providers.js.map +0 -1
  2860. package/dist/src/voice/stt/mention.js.map +0 -1
  2861. package/dist/src/voice/stt/preflight.js.map +0 -1
  2862. package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
  2863. package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
  2864. package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
  2865. package/dist/src/voice/stt/transcribe-core.js.map +0 -1
  2866. package/dist/src/voice/stt/types.js.map +0 -1
  2867. package/dist/src/voice/tts/audio.js.map +0 -1
  2868. package/dist/src/voice/tts/config-slice.js.map +0 -1
  2869. package/dist/src/voice/tts/directives.js.map +0 -1
  2870. package/dist/src/voice/tts/factory.js.map +0 -1
  2871. package/dist/src/voice/tts/list-providers.js.map +0 -1
  2872. package/dist/src/voice/tts/merge-config.js.map +0 -1
  2873. package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
  2874. package/dist/src/voice/tts/payload.js.map +0 -1
  2875. package/dist/src/voice/tts/preprocess.js.map +0 -1
  2876. package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
  2877. package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
  2878. package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
  2879. package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
  2880. package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
  2881. package/dist/src/voice/tts/service.js.map +0 -1
  2882. package/dist/src/voice/tts/speak-core.js.map +0 -1
  2883. package/dist/src/voice/tts/speech-registry.js.map +0 -1
  2884. package/dist/src/voice/tts/status-tracker.js.map +0 -1
  2885. package/dist/src/voice/tts/summarize.js.map +0 -1
  2886. package/dist/src/voice/tts/types.js.map +0 -1
  2887. package/dist/src/work-discovery/analyzer.js.map +0 -1
  2888. package/dist/src/work-discovery/probe.js.map +0 -1
  2889. package/dist/src/work-discovery/repository.js.map +0 -1
  2890. package/dist/src/work-discovery/service.js.map +0 -1
  2891. package/dist/src/work-items/agent-context.js.map +0 -1
  2892. package/dist/src/work-items/work-item-service.js.map +0 -1
  2893. package/dist/src/work-items/work-item-store.js.map +0 -1
  2894. package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
  2895. package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
  2896. package/dist/src/workflows/domain/definition-utils.js.map +0 -1
  2897. package/dist/src/workflows/domain/run.js.map +0 -1
  2898. package/dist/src/workflows/domain/schema-validation.js.map +0 -1
  2899. package/dist/src/workflows/domain/validation.js.map +0 -1
  2900. package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
  2901. package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
  2902. package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
  2903. package/dist/src/workflows/engine/projector.js.map +0 -1
  2904. package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
  2905. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
  2906. package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
  2907. package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
  2908. package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
  2909. package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
  2910. package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
  2911. package/dist/src/workflows/store/event-store.js.map +0 -1
  2912. package/dist/src/workflows/store/paths.js.map +0 -1
  2913. package/dist/src/workflows/store/run-index-store.js.map +0 -1
  2914. package/dist/src/workflows/store/run-store.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-store.js","names":[],"sources":["../../../../src/utils/logger/log-store.ts"],"sourcesContent":["/**\n * Log Store - Enhanced File-based Log Storage\n * \n * Features:\n * - Query logs across multiple files with filtering\n * - Support for compressed (.gz) log files\n * - Pagination and sorting\n * - Statistics and analytics\n * - Safe log cleanup with actual deletion\n */\n\nimport { \n existsSync, \n mkdirSync, \n readdirSync, \n statSync, \n createReadStream,\n} from 'fs';\nimport { readFile } from 'fs/promises';\nimport { join, basename } from 'path';\nimport { createInterface } from 'readline';\nimport { gunzip } from 'zlib';\nimport { promisify } from 'util';\nimport { Readable } from 'stream';\nimport type { LogLevel, LogFileMeta, LogQuery, LogStats, LogEntry } from './types.js';\nimport { logEntrySearchText, pinoRecordToLogEntry } from './pino-record.js';\n\nconst gunzipAsync = promisify(gunzip);\n\n// ============================================\n// Types\n// ============================================\n\ninterface ParsedLogEntry extends LogEntry {\n _source?: string;\n _lineNumber?: number;\n}\n\n// ============================================\n// Configuration\n// ============================================\n\nconst LOG_DIR = process.env.XOPC_LOG_DIR || join(process.env.HOME || '.', '.xopc', 'logs');\n\nfunction ensureLogDir(): void {\n if (!existsSync(LOG_DIR)) {\n mkdirSync(LOG_DIR, { recursive: true });\n }\n}\n\n// ============================================\n// File Management\n// ============================================\n\n/**\n * Get all log files (including compressed)\n */\nexport function getLogFiles(): LogFileMeta[] {\n ensureLogDir();\n\n const files = readdirSync(LOG_DIR)\n .filter(f => f.endsWith('.log') || f.endsWith('.log.gz'))\n .map(f => {\n const filePath = join(LOG_DIR, f);\n const stats = statSync(filePath);\n \n let type: LogFileMeta['type'] = 'app';\n if (f.includes('error')) type = 'error';\n else if (f.includes('audit')) type = 'audit';\n else if (f.includes('access')) type = 'access';\n\n return {\n name: f,\n path: filePath,\n size: stats.size,\n created: stats.birthtime.toISOString(),\n modified: stats.mtime.toISOString(),\n type,\n };\n })\n .sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n\n return files;\n}\n\n/**\n * Get log file path for a specific date and type\n */\nexport function getLogPath(\n date: Date = new Date(), \n type: 'app' | 'error' | 'audit' | 'access' = 'app'\n): string {\n ensureLogDir();\n const dateStr = date.toISOString().split('T')[0];\n return join(LOG_DIR, `${type}-${dateStr}.log`);\n}\n\n/**\n * Get available log files for a date range\n */\nfunction getLogFilesForRange(from: Date, to: Date): LogFileMeta[] {\n const allFiles = getLogFiles();\n \n return allFiles.filter(f => {\n // Extract date from filename (e.g., app-2024-01-01.log)\n const match = f.name.match(/(\\d{4}-\\d{2}-\\d{2})/);\n if (!match) return false;\n \n const fileDate = new Date(match[1]);\n return fileDate >= from && fileDate <= to;\n });\n}\n\n// ============================================\n// Log Parsing\n// ============================================\n\n/**\n * Parse a single log line (JSON format from pino)\n */\nfunction parseLogLine(line: string, source?: string, lineNumber?: number): ParsedLogEntry | null {\n const trimmed = line.trim();\n if (!trimmed) return null;\n\n try {\n const parsed = JSON.parse(trimmed) as Record<string, unknown>;\n const entry = pinoRecordToLogEntry(parsed) as ParsedLogEntry;\n entry._source = source;\n entry._lineNumber = lineNumber;\n return entry;\n } catch {\n return null;\n }\n}\n\n// ============================================\n// Streaming\n// ============================================\n\n/**\n * Create a readable stream for a log file (handles .gz files)\n */\nasync function createLogFileStream(filePath: string): Promise<Readable> {\n if (filePath.endsWith('.gz')) {\n const compressed = await readFile(filePath);\n const decompressed = await gunzipAsync(compressed);\n return Readable.from(decompressed.toString('utf-8').split('\\n'));\n }\n \n return createReadStream(filePath, { encoding: 'utf-8' });\n}\n\n/**\n * Stream and filter log entries from a file\n */\nasync function* streamLogFile(\n filePath: string,\n query: LogQuery = {}\n): AsyncGenerator<ParsedLogEntry> {\n if (!existsSync(filePath)) return;\n\n const fileName = basename(filePath);\n let stream: Readable;\n \n try {\n stream = await createLogFileStream(filePath);\n } catch {\n return;\n }\n\n const rl = createInterface({ \n input: stream,\n crlfDelay: Infinity \n });\n\n let lineNumber = 0;\n\n try {\n for await (const line of rl) {\n lineNumber++;\n const entry = parseLogLine(line, fileName, lineNumber);\n if (!entry) continue;\n\n // Apply filters\n if (!matchesQuery(entry, query)) continue;\n\n yield entry;\n }\n } finally {\n rl.close();\n }\n}\n\n/**\n * Check if a log entry matches the query filters\n */\nfunction matchesQuery(entry: ParsedLogEntry, query: LogQuery): boolean {\n // Filter by levels\n if (query.levels?.length && !query.levels.includes(entry.level as LogLevel)) {\n return false;\n }\n\n // Filter by time range\n if (query.from) {\n const fromDate = new Date(query.from);\n const entryDate = new Date(entry.timestamp);\n if (entryDate < fromDate) return false;\n }\n if (query.to) {\n const toDate = new Date(query.to);\n const entryDate = new Date(entry.timestamp);\n if (entryDate > toDate) return false;\n }\n\n // Filter by keyword (search message, module, phase, err, structured fields)\n if (query.q) {\n const keyword = query.q.toLowerCase();\n if (!logEntrySearchText(entry).includes(keyword)) return false;\n }\n\n if (query.module && entry.module !== query.module) return false;\n if (query.extension && entry.extension !== query.extension) return false;\n if (query.service && entry.service !== query.service) return false;\n if (query.requestId && entry.requestId !== query.requestId) return false;\n if (query.sessionKey && entry.sessionKey !== query.sessionKey) return false;\n if (query.sessionId && entry.sessionId !== query.sessionId) return false;\n\n return true;\n}\n\n// ============================================\n// Query API\n// ============================================\n\n/** Cap matched rows before sort/slice so query stays bounded on huge log dirs. */\nconst QUERY_LOGS_MAX_MATCHED = 25_000;\n\n/**\n * Query logs across multiple files\n */\nexport async function queryLogs(query: LogQuery = {}): Promise<LogEntry[]> {\n ensureLogDir();\n\n const results: ParsedLogEntry[] = [];\n const files = getLogFiles();\n\n // Filter files by date range if specified\n let relevantFiles = files;\n if (query.from || query.to) {\n const fromDate = query.from ? new Date(query.from) : new Date(0);\n const toDate = query.to ? new Date(query.to) : new Date();\n relevantFiles = getLogFilesForRange(fromDate, toDate);\n }\n\n // Collect all matches (files are newest-first; lines in each file are time-asc).\n // Do not stop at `limit` while streaming — that only captured the oldest tail of\n // early files and made \"newest first\" wrong after sort.\n for (const file of relevantFiles) {\n if (results.length >= QUERY_LOGS_MAX_MATCHED) break;\n for await (const entry of streamLogFile(file.path, query)) {\n results.push(entry);\n if (results.length >= QUERY_LOGS_MAX_MATCHED) break;\n }\n }\n\n // Sort by timestamp\n const order = query.order || 'desc';\n results.sort((a, b) => {\n const diff = new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime();\n return order === 'desc' ? diff : -diff;\n });\n\n // Apply offset/limit\n const offset = query.offset || 0;\n const limit = query.limit || 100;\n return results.slice(offset, offset + limit).map(({ _source, _lineNumber, ...rest }) => rest);\n}\n\n// ============================================\n// Statistics\n// ============================================\nexport async function getLogModules(): Promise<string[]> {\n const modules = new Set<string>();\n const files = getLogFiles().slice(0, 7);\n\n for (const file of files) {\n for await (const entry of streamLogFile(file.path, { limit: 1000 })) {\n if (entry.module) modules.add(entry.module);\n }\n }\n\n return Array.from(modules).filter(Boolean).sort();\n}\n\n/**\n * Get log statistics by level (sampled from recent files)\n */\nexport async function getFileLogStats(): Promise<LogStats> {\n const files = getLogFiles();\n\n // Count by level (sample from recent files)\n const byLevel: Record<LogLevel, number> = {\n trace: 0,\n debug: 0,\n info: 0,\n warn: 0,\n error: 0,\n fatal: 0,\n silent: 0,\n };\n\n for (const file of files.slice(0, 7)) {\n for await (const entry of streamLogFile(file.path, { limit: 1000 })) {\n if (entry.level in byLevel) {\n byLevel[entry.level as LogLevel]++;\n }\n }\n }\n\n return { byLevel };\n}\n\n// ============================================\n// Error aggregation\n// ============================================\n\nexport interface LogErrorSummaryItem {\n key: string;\n errName: string;\n phase?: string;\n module?: string;\n count: number;\n lastSeen: string;\n sampleMessage: string;\n}\n\nfunction entryMeta(entry: ParsedLogEntry): Record<string, unknown> | undefined {\n if (!entry.meta || typeof entry.meta !== 'object') return undefined;\n return entry.meta as Record<string, unknown>;\n}\n\nfunction extractErrName(entry: ParsedLogEntry): string {\n const meta = entryMeta(entry);\n const raw = entry.err ?? meta?.err;\n if (raw && typeof raw === 'object' && raw !== null) {\n const name = (raw as Record<string, unknown>).name;\n if (typeof name === 'string' && name.trim()) return name;\n const message = (raw as Record<string, unknown>).message;\n if (typeof message === 'string' && message.trim()) return message.slice(0, 120);\n }\n if (typeof entry.errorMessage === 'string' && entry.errorMessage.trim()) {\n return entry.errorMessage.slice(0, 120);\n }\n return entry.message?.slice(0, 120) || 'Error';\n}\n\nfunction summaryKey(entry: ParsedLogEntry): string {\n const errName = extractErrName(entry);\n const meta = entryMeta(entry);\n const phase =\n typeof entry.phase === 'string'\n ? entry.phase\n : typeof meta?.phase === 'string'\n ? meta.phase\n : '';\n const module = entry.module || '';\n return `${errName}::${phase}::${module}`;\n}\n\n/**\n * Aggregate recent error/fatal logs by err name + phase + module.\n */\nexport async function getLogErrorSummary(options?: {\n from?: string;\n to?: string;\n limit?: number;\n}): Promise<LogErrorSummaryItem[]> {\n const limit = options?.limit ?? 20;\n const groups = new Map<string, LogErrorSummaryItem>();\n\n const entries = await queryLogs({\n levels: ['error', 'fatal'],\n from: options?.from,\n to: options?.to,\n limit: 5000,\n order: 'desc',\n });\n\n for (const entry of entries) {\n const key = summaryKey(entry as ParsedLogEntry);\n const parsed = entry as ParsedLogEntry;\n const existing = groups.get(key);\n if (existing) {\n existing.count += 1;\n if (entry.timestamp > existing.lastSeen) {\n existing.lastSeen = entry.timestamp;\n existing.sampleMessage = entry.message;\n }\n continue;\n }\n groups.set(key, {\n key,\n errName: extractErrName(parsed),\n phase:\n typeof parsed.phase === 'string'\n ? parsed.phase\n : typeof entryMeta(parsed)?.phase === 'string'\n ? String(entryMeta(parsed)?.phase)\n : undefined,\n module: parsed.module,\n count: 1,\n lastSeen: entry.timestamp,\n sampleMessage: entry.message,\n });\n }\n\n return Array.from(groups.values())\n .sort((a, b) => b.count - a.count || b.lastSeen.localeCompare(a.lastSeen))\n .slice(0, limit);\n}\n\n// ============================================\n// Log Levels\n// ============================================\n\nconst LOG_LEVELS: LogLevel[] = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n/**\n * Get available log levels\n */\nexport function getLogLevels(): LogLevel[] {\n return [...LOG_LEVELS];\n}\n\n// ============================================\n// Exports\n// ============================================\n\nexport { LOG_DIR };\nexport type { LogEntry, LogQuery, LogFileMeta, LogStats } from './types.js';\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-stream.js","names":[],"sources":["../../../../src/utils/logger/log-stream.ts"],"sourcesContent":["/**\n * Log Streaming Module - SSE real-time log delivery\n */\n\nimport type { LogLevel, LogEntry } from './types.js';\nexport type { LogLevel, LogEntry };\n\ntype LogSubscriber = (entry: LogEntry) => void;\nconst subscribers = new Set<LogSubscriber>();\n\nconst VALID_LEVELS: LogLevel[] = ['trace', 'debug', 'info', 'warn', 'error', 'fatal', 'silent'];\n\nfunction subscribeToLogs(subscriber: LogSubscriber): () => void {\n subscribers.add(subscriber);\n return () => subscribers.delete(subscriber);\n}\n\nfunction getSubscriberCount(): number {\n return subscribers.size;\n}\n\nexport function hasSubscribers(): boolean {\n return subscribers.size > 0;\n}\n\n/** @internal Called from Pino live emit stream */\nexport function emitLogEntry(entry: LogEntry): void {\n if (subscribers.size === 0) return;\n\n for (const subscriber of subscribers) {\n try {\n subscriber(entry);\n } catch {\n /* ignore subscriber errors */\n }\n }\n}\n\nfunction parseAllowedLevels(levelsParam: string | null): LogLevel[] {\n if (!levelsParam) {\n return ['info', 'warn', 'error', 'fatal'];\n }\n return levelsParam\n .split(',')\n .filter((l): l is LogLevel => VALID_LEVELS.includes(l as LogLevel));\n}\n\nfunction createLogSseResponse(req: Request, allowedLevels: LogLevel[], moduleFilter: string | null): Response {\n const stream = new ReadableStream({\n start(controller) {\n const encoder = new TextEncoder();\n\n const sendEvent = (data: unknown) => {\n const message = `data: ${JSON.stringify(data)}\\n\\n`;\n controller.enqueue(encoder.encode(message));\n };\n\n sendEvent({ type: 'connected', message: 'Log stream started' });\n\n const unsubscribe = subscribeToLogs((entry) => {\n if (!allowedLevels.includes(entry.level)) return;\n if (moduleFilter && entry.module !== moduleFilter) return;\n sendEvent(entry);\n });\n\n const heartbeat = setInterval(() => {\n try {\n sendEvent({ type: 'heartbeat', subscribers: getSubscriberCount() });\n } catch {\n clearInterval(heartbeat);\n }\n }, 30000);\n\n req.signal.addEventListener('abort', () => {\n unsubscribe();\n clearInterval(heartbeat);\n try {\n controller.close();\n } catch {\n /* already closed */\n }\n });\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'X-Accel-Buffering': 'no',\n },\n });\n}\n\n/** Hono handler for `GET /api/logs/stream`. */\nexport function createLogSSEHandler(): (c: { req: { raw: Request; url: string } }) => Promise<Response> {\n return async (c) => {\n const url = new URL(c.req.url);\n const allowedLevels = parseAllowedLevels(url.searchParams.get('levels'));\n const moduleFilter = url.searchParams.get('module');\n return createLogSseResponse(c.req.raw, allowedLevels, moduleFilter);\n };\n}\n"],"mappings":";;AAYA,SAAS,gBAAgB,YAAuC;AAC9D,aAAY,IAAI,WAAW;AAC3B,cAAa,YAAY,OAAO,WAAW;;AAG7C,SAAS,qBAA6B;AACpC,QAAO,YAAY;;AAGrB,SAAgB,iBAA0B;AACxC,QAAO,YAAY,OAAO;;;AAI5B,SAAgB,aAAa,OAAuB;AAClD,KAAI,YAAY,SAAS,EAAG;AAE5B,MAAK,MAAM,cAAc,YACvB,KAAI;AACF,aAAW,MAAM;SACX;;AAMZ,SAAS,mBAAmB,aAAwC;AAClE,KAAI,CAAC,YACH,QAAO;EAAC;EAAQ;EAAQ;EAAS;EAAQ;AAE3C,QAAO,YACJ,MAAM,IAAI,CACV,QAAQ,MAAqB,aAAa,SAAS,EAAc,CAAC;;AAGvE,SAAS,qBAAqB,KAAc,eAA2B,cAAuC;CAC5G,MAAM,SAAS,IAAI,eAAe,EAChC,MAAM,YAAY;EAChB,MAAM,UAAU,IAAI,aAAa;EAEjC,MAAM,aAAa,SAAkB;GACnC,MAAM,UAAU,SAAS,KAAK,UAAU,KAAK,CAAC;AAC9C,cAAW,QAAQ,QAAQ,OAAO,QAAQ,CAAC;;AAG7C,YAAU;GAAE,MAAM;GAAa,SAAS;GAAsB,CAAC;EAE/D,MAAM,cAAc,iBAAiB,UAAU;AAC7C,OAAI,CAAC,cAAc,SAAS,MAAM,MAAM,CAAE;AAC1C,OAAI,gBAAgB,MAAM,WAAW,aAAc;AACnD,aAAU,MAAM;IAChB;EAEF,MAAM,YAAY,kBAAkB;AAClC,OAAI;AACF,cAAU;KAAE,MAAM;KAAa,aAAa,oBAAoB;KAAE,CAAC;WAC7D;AACN,kBAAc,UAAU;;KAEzB,IAAM;AAET,MAAI,OAAO,iBAAiB,eAAe;AACzC,gBAAa;AACb,iBAAc,UAAU;AACxB,OAAI;AACF,eAAW,OAAO;WACZ;IAGR;IAEL,CAAC;AAEF,QAAO,IAAI,SAAS,QAAQ,EAC1B,SAAS;EACP,gBAAgB;EAChB,iBAAiB;EACjB,YAAY;EACZ,qBAAqB;EACtB,EACF,CAAC;;;AAIJ,SAAgB,sBAAwF;AACtG,QAAO,OAAO,MAAM;EAClB,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,IAAI;EAC9B,MAAM,gBAAgB,mBAAmB,IAAI,aAAa,IAAI,SAAS,CAAC;EACxE,MAAM,eAAe,IAAI,aAAa,IAAI,SAAS;AACnD,SAAO,qBAAqB,EAAE,IAAI,KAAK,eAAe,aAAa;;;;;AA7FjE,+BAAc,IAAI,KAAoB;AAEtC,gBAA2B;EAAC;EAAS;EAAS;EAAQ;EAAQ;EAAS;EAAS;EAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pino-record.js","names":[],"sources":["../../../../src/utils/logger/pino-record.ts"],"sourcesContent":["/**\n * Shared Pino JSON record → LogEntry conversion for file query and live SSE.\n */\n\nimport type { LogEntry, LogLevel } from './types.js';\n\nconst VALID_LEVELS = new Set<LogLevel>(['trace', 'debug', 'info', 'warn', 'error', 'fatal']);\n\nfunction resolveLevel(parsed: Record<string, unknown>): LogLevel {\n if (typeof parsed.level !== 'string') {\n return 'info';\n }\n const lv = parsed.level.toLowerCase() as LogLevel;\n return VALID_LEVELS.has(lv) ? lv : 'info';\n}\n\n/** Convert a parsed Pino JSON object into a normalized LogEntry. */\nexport function pinoRecordToLogEntry(parsed: Record<string, unknown>): LogEntry {\n const reserved = new Set([\n 'time',\n 'level',\n 'msg',\n 'pid',\n 'host',\n 'service',\n 'version',\n 'module',\n 'extension',\n 'requestId',\n 'sessionKey',\n 'sessionId',\n 'userId',\n 'correlationId',\n ]);\n\n const meta: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(parsed)) {\n if (!reserved.has(key)) {\n meta[key] = value;\n }\n }\n\n const entry: LogEntry = {\n timestamp: String(parsed.time ?? new Date().toISOString()),\n level: resolveLevel(parsed),\n message: String(parsed.msg ?? ''),\n module: typeof parsed.module === 'string' ? parsed.module : undefined,\n service: typeof parsed.service === 'string' ? parsed.service : undefined,\n extension: typeof parsed.extension === 'string' ? parsed.extension : undefined,\n requestId: typeof parsed.requestId === 'string' ? parsed.requestId : undefined,\n sessionKey: typeof parsed.sessionKey === 'string' ? parsed.sessionKey : undefined,\n sessionId: typeof parsed.sessionId === 'string' ? parsed.sessionId : undefined,\n userId: typeof parsed.userId === 'string' ? parsed.userId : undefined,\n correlationId: typeof parsed.correlationId === 'string' ? parsed.correlationId : undefined,\n };\n\n if (Object.keys(meta).length > 0) {\n entry.meta = meta;\n }\n\n return entry;\n}\n\n/** Build searchable text from a log entry (query + client-side filter). */\nexport function logEntrySearchText(entry: LogEntry): string {\n const parts: string[] = [\n entry.message,\n entry.module,\n entry.service,\n entry.extension,\n entry.requestId,\n entry.sessionKey,\n entry.sessionId,\n typeof entry.phase === 'string' ? entry.phase : undefined,\n typeof entry.errorMessage === 'string' ? entry.errorMessage : undefined,\n ];\n\n const meta =\n entry.meta && typeof entry.meta === 'object'\n ? (entry.meta as Record<string, unknown>)\n : undefined;\n const err = entry.err ?? meta?.err;\n if (err && typeof err === 'object' && err !== null) {\n const e = err as Record<string, unknown>;\n if (typeof e.message === 'string') parts.push(e.message);\n if (typeof e.name === 'string') parts.push(e.name);\n if (typeof e.stack === 'string') parts.push(e.stack);\n }\n\n if (entry.meta && typeof entry.meta === 'object') {\n for (const [key, value] of Object.entries(entry.meta)) {\n if (key === 'err') continue;\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n parts.push(String(value));\n }\n }\n }\n\n return parts.filter(Boolean).map(String).join(' ').toLowerCase();\n}\n"],"mappings":";;AAQA,SAAS,aAAa,QAA2C;AAC/D,KAAI,OAAO,OAAO,UAAU,SAC1B,QAAO;CAET,MAAM,KAAK,OAAO,MAAM,aAAa;AACrC,QAAO,aAAa,IAAI,GAAG,GAAG,KAAK;;;AAIrC,SAAgB,qBAAqB,QAA2C;CAC9E,MAAM,WAAW,IAAI,IAAI;EACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,OAAgC,EAAE;AACxC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,CAC/C,KAAI,CAAC,SAAS,IAAI,IAAI,CACpB,MAAK,OAAO;CAIhB,MAAM,QAAkB;EACtB,WAAW,OAAO,OAAO,yBAAQ,IAAI,MAAM,EAAC,aAAa,CAAC;EAC1D,OAAO,aAAa,OAAO;EAC3B,SAAS,OAAO,OAAO,OAAO,GAAG;EACjC,QAAQ,OAAO,OAAO,WAAW,WAAW,OAAO,SAAS,KAAA;EAC5D,SAAS,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU,KAAA;EAC/D,WAAW,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY,KAAA;EACrE,WAAW,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY,KAAA;EACrE,YAAY,OAAO,OAAO,eAAe,WAAW,OAAO,aAAa,KAAA;EACxE,WAAW,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY,KAAA;EACrE,QAAQ,OAAO,OAAO,WAAW,WAAW,OAAO,SAAS,KAAA;EAC5D,eAAe,OAAO,OAAO,kBAAkB,WAAW,OAAO,gBAAgB,KAAA;EAClF;AAED,KAAI,OAAO,KAAK,KAAK,CAAC,SAAS,EAC7B,OAAM,OAAO;AAGf,QAAO;;;AAIT,SAAgB,mBAAmB,OAAyB;CAC1D,MAAM,QAAkB;EACtB,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ,KAAA;EAChD,OAAO,MAAM,iBAAiB,WAAW,MAAM,eAAe,KAAA;EAC/D;CAED,MAAM,OACJ,MAAM,QAAQ,OAAO,MAAM,SAAS,WAC/B,MAAM,OACP,KAAA;CACN,MAAM,MAAM,MAAM,OAAO,MAAM;AAC/B,KAAI,OAAO,OAAO,QAAQ,YAAY,QAAQ,MAAM;EAClD,MAAM,IAAI;AACV,MAAI,OAAO,EAAE,YAAY,SAAU,OAAM,KAAK,EAAE,QAAQ;AACxD,MAAI,OAAO,EAAE,SAAS,SAAU,OAAM,KAAK,EAAE,KAAK;AAClD,MAAI,OAAO,EAAE,UAAU,SAAU,OAAM,KAAK,EAAE,MAAM;;AAGtD,KAAI,MAAM,QAAQ,OAAO,MAAM,SAAS,SACtC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,KAAK,EAAE;AACrD,MAAI,QAAQ,MAAO;AACnB,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,UAC7E,OAAM,KAAK,OAAO,MAAM,CAAC;;AAK/B,QAAO,MAAM,OAAO,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,aAAa;;;;AA5F5D,gBAAe,IAAI,IAAc;EAAC;EAAS;EAAS;EAAQ;EAAQ;EAAS;EAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redact.js","names":[],"sources":["../../../../src/utils/logger/redact.ts"],"sourcesContent":["/**\n * Redact secrets from log strings and structured payloads before they reach sinks.\n */\n\nconst MIN_REDACT_LENGTH = 18;\nconst KEEP_PREFIX_LENGTH = 6;\nconst KEEP_SUFFIX_LENGTH = 4;\n\nconst DEFAULT_REDACT_PATTERNS: RegExp[] = [\n /\\b[A-Z0-9_]*(?:KEY|TOKEN|SECRET|PASSWORD|PASSWD)\\b\\s*[=:]\\s*([\"']?)([^\\s\"'\\\\]+)\\1/gi,\n /\"(?:apiKey|token|secret|password|passwd|accessToken|refreshToken|privateKey)\"\\s*:\\s*\"([^\"]+)\"/gi,\n /Authorization\\s*[:=]\\s*Bearer\\s+([A-Za-z0-9._\\-+=]+)/gi,\n /\\b(sk-[A-Za-z0-9_-]{8,})\\b/gi,\n /\\b(ghp_[A-Za-z0-9]{20,})\\b/gi,\n /\\b(github_pat_[A-Za-z0-9_]{20,})\\b/gi,\n /\\b(xox[baprs]-[A-Za-z0-9-]+)\\b/gi,\n /\\b(\\d+:[A-Za-z0-9_-]{35,})\\b/g,\n];\n\nconst SENSITIVE_KEYS = new Set([\n 'apikey',\n 'api_key',\n 'token',\n 'secret',\n 'password',\n 'passwd',\n 'accesstoken',\n 'refreshtoken',\n 'refresh_token',\n 'privatekey',\n 'private_key',\n 'authorization',\n 'credential',\n 'credentials',\n]);\n\nexport function isLogRedactionEnabled(): boolean {\n return process.env.XOPC_LOG_REDACTION !== 'false';\n}\n\nexport function redactSecret(secret: string): string {\n if (!secret || secret.length < MIN_REDACT_LENGTH) {\n return '***';\n }\n const prefix = secret.slice(0, KEEP_PREFIX_LENGTH);\n const suffix = secret.slice(-KEEP_SUFFIX_LENGTH);\n return `${prefix}…${suffix}`;\n}\n\nexport function redactPemBlock(text: string): string {\n const pemPattern =\n /(-----BEGIN\\s+\\w+\\s+PRIVATE KEY-----)[\\s\\S]*?(-----END\\s+\\w+\\s+PRIVATE KEY-----)/g;\n return text.replace(pemPattern, (_match, begin: string, end: string) => {\n return `${begin}\\n[REDACTED]\\n${end}`;\n });\n}\n\nexport function redactSensitiveInfo(text: string): string {\n if (!text || !isLogRedactionEnabled()) return text;\n\n let redacted = redactPemBlock(text);\n\n for (const pattern of DEFAULT_REDACT_PATTERNS) {\n redacted = redacted.replace(pattern, (match, ...groups: unknown[]) => {\n const secret = groups.find(\n (g) => typeof g === 'string' && g.length >= MIN_REDACT_LENGTH,\n ) as string | undefined;\n if (secret) {\n return match.replace(secret, redactSecret(secret));\n }\n return match;\n });\n }\n\n return redacted;\n}\n\nexport function redactObject(obj: unknown, depth = 0): unknown {\n if (!isLogRedactionEnabled() || obj === null || obj === undefined) {\n return obj;\n }\n if (depth > 12) {\n return '[MaxDepth]';\n }\n if (typeof obj === 'string') {\n return redactSensitiveInfo(obj);\n }\n if (typeof obj !== 'object') {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map((item) => redactObject(item, depth + 1));\n }\n\n const record = obj as Record<string, unknown>;\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(record)) {\n const lowerKey = key.toLowerCase();\n if (SENSITIVE_KEYS.has(lowerKey)) {\n out[key] = typeof value === 'string' ? redactSecret(value) : '***';\n } else if (typeof value === 'object' && value !== null) {\n out[key] = redactObject(value, depth + 1);\n } else if (typeof value === 'string') {\n out[key] = redactSensitiveInfo(value);\n } else {\n out[key] = value;\n }\n }\n return out;\n}\n\n/**\n * Apply redaction to a pino log object (mutates a shallow clone safe for return).\n */\nexport function redactLogRecord(object: Record<string, unknown>): Record<string, unknown> {\n if (!isLogRedactionEnabled()) {\n return object;\n }\n\n const base = redactObject(object, 0) as Record<string, unknown>;\n if (typeof base.msg === 'string') {\n base.msg = redactSensitiveInfo(base.msg);\n }\n return base;\n}\n"],"mappings":";;AAoCA,SAAgB,wBAAiC;AAC/C,QAAO,QAAQ,IAAI,uBAAuB;;AAG5C,SAAgB,aAAa,QAAwB;AACnD,KAAI,CAAC,UAAU,OAAO,SAAS,kBAC7B,QAAO;AAIT,QAAO,GAFQ,OAAO,MAAM,GAAG,mBAEf,CAAC,GADF,OAAO,MAAM,CAAC,mBACH;;AAG5B,SAAgB,eAAe,MAAsB;AAGnD,QAAO,KAAK,QAAQ,sFAAa,QAAQ,OAAe,QAAgB;AACtE,SAAO,GAAG,MAAM,gBAAgB;GAChC;;AAGJ,SAAgB,oBAAoB,MAAsB;AACxD,KAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAE,QAAO;CAE9C,IAAI,WAAW,eAAe,KAAK;AAEnC,MAAK,MAAM,WAAW,wBACpB,YAAW,SAAS,QAAQ,UAAU,OAAO,GAAG,WAAsB;EACpE,MAAM,SAAS,OAAO,MACnB,MAAM,OAAO,MAAM,YAAY,EAAE,UAAU,kBAC7C;AACD,MAAI,OACF,QAAO,MAAM,QAAQ,QAAQ,aAAa,OAAO,CAAC;AAEpD,SAAO;GACP;AAGJ,QAAO;;AAGT,SAAgB,aAAa,KAAc,QAAQ,GAAY;AAC7D,KAAI,CAAC,uBAAuB,IAAI,QAAQ,QAAQ,QAAQ,KAAA,EACtD,QAAO;AAET,KAAI,QAAQ,GACV,QAAO;AAET,KAAI,OAAO,QAAQ,SACjB,QAAO,oBAAoB,IAAI;AAEjC,KAAI,OAAO,QAAQ,SACjB,QAAO;AAET,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,IAAI,KAAK,SAAS,aAAa,MAAM,QAAQ,EAAE,CAAC;CAGzD,MAAM,SAAS;CACf,MAAM,MAA+B,EAAE;AACvC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,EAAE;EACjD,MAAM,WAAW,IAAI,aAAa;AAClC,MAAI,eAAe,IAAI,SAAS,CAC9B,KAAI,OAAO,OAAO,UAAU,WAAW,aAAa,MAAM,GAAG;WACpD,OAAO,UAAU,YAAY,UAAU,KAChD,KAAI,OAAO,aAAa,OAAO,QAAQ,EAAE;WAChC,OAAO,UAAU,SAC1B,KAAI,OAAO,oBAAoB,MAAM;MAErC,KAAI,OAAO;;AAGf,QAAO;;;;;AAMT,SAAgB,gBAAgB,QAA0D;AACxF,KAAI,CAAC,uBAAuB,CAC1B,QAAO;CAGT,MAAM,OAAO,aAAa,QAAQ,EAAE;AACpC,KAAI,OAAO,KAAK,QAAQ,SACtB,MAAK,MAAM,oBAAoB,KAAK,IAAI;AAE1C,QAAO;;;;AAvHH,qBAAoB;AACpB,sBAAqB;AACrB,sBAAqB;AAErB,2BAAoC;EACxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;AAEK,kBAAiB,IAAI,IAAI;EAC7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rotation.js","names":[],"sources":["../../../../src/utils/logger/rotation.ts"],"sourcesContent":["/**\n * Log Rotation\n * Automatic log rotation based on size and retention policy\n */\n\nimport { readdirSync, statSync, unlinkSync, readFileSync } from 'fs';\nimport { writeFile } from 'fs/promises';\nimport { join } from 'path';\nimport { gzip } from 'zlib';\nimport { promisify } from 'util';\nimport type { RotationResult } from './types.js';\nimport { config, getLogDir } from './config.js';\n\nconst compressAsync = promisify(gzip);\n\n/**\n * Get compressed log path\n */\nfunction getCompressedLogPath(originalPath: string): string {\n return `${originalPath}.gz`;\n}\n\n/**\n * Rotate logs if they exceed max size\n */\nexport async function rotateLogs(): Promise<RotationResult> {\n const result: RotationResult = {\n rotated: 0,\n deleted: 0,\n compressed: 0,\n errors: [],\n };\n\n try {\n const files = readdirSync(getLogDir());\n const maxSizeBytes = config.maxFileSizeMB * 1024 * 1024;\n\n for (const file of files) {\n if (!file.endsWith('.log') || file.endsWith('.gz')) continue;\n\n const filePath = join(getLogDir(), file);\n const stats = statSync(filePath);\n\n if (stats.size >= maxSizeBytes) {\n const compressedPath = getCompressedLogPath(filePath);\n \n try {\n const content = readFileSync(filePath);\n const compressed = await compressAsync(content);\n await writeFile(compressedPath, compressed);\n unlinkSync(filePath);\n result.compressed++;\n result.rotated++;\n } catch (err) {\n result.errors.push(`Failed to compress ${file}: ${err}`);\n }\n }\n }\n } catch (err) {\n result.errors.push(`Rotation failed: ${err}`);\n }\n\n return result;\n}\n\n/**\n * Clean old logs based on retention policy\n */\nexport function cleanOldLogs(keepDays: number = config.retentionDays): RotationResult {\n const result: RotationResult = {\n rotated: 0,\n deleted: 0,\n compressed: 0,\n errors: [],\n };\n\n try {\n const cutoff = new Date();\n cutoff.setDate(cutoff.getDate() - keepDays);\n\n const files = readdirSync(getLogDir());\n\n for (const file of files) {\n if (!file.endsWith('.log') && !file.endsWith('.log.gz')) continue;\n\n const filePath = join(getLogDir(), file);\n const stats = statSync(filePath);\n\n if (new Date(stats.mtime) < cutoff) {\n try {\n unlinkSync(filePath);\n result.deleted++;\n } catch (err) {\n result.errors.push(`Failed to delete ${file}: ${err}`);\n }\n }\n }\n } catch (err) {\n result.errors.push(`Cleanup failed: ${err}`);\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,SAAS,qBAAqB,cAA8B;AAC1D,QAAO,GAAG,aAAa;;;;;AAMzB,eAAsB,aAAsC;CAC1D,MAAM,SAAyB;EAC7B,SAAS;EACT,SAAS;EACT,YAAY;EACZ,QAAQ,EAAE;EACX;AAED,KAAI;EACF,MAAM,QAAQ,YAAY,WAAW,CAAC;EACtC,MAAM,eAAe,OAAO,gBAAgB,OAAO;AAEnD,OAAK,MAAM,QAAQ,OAAO;AACxB,OAAI,CAAC,KAAK,SAAS,OAAO,IAAI,KAAK,SAAS,MAAM,CAAE;GAEpD,MAAM,WAAW,KAAK,WAAW,EAAE,KAAK;AAGxC,OAFc,SAAS,SAEd,CAAC,QAAQ,cAAc;IAC9B,MAAM,iBAAiB,qBAAqB,SAAS;AAErD,QAAI;AAGF,WAAM,UAAU,gBAAgB,MADP,cADT,aAAa,SACiB,CAAC,CACJ;AAC3C,gBAAW,SAAS;AACpB,YAAO;AACP,YAAO;aACA,KAAK;AACZ,YAAO,OAAO,KAAK,sBAAsB,KAAK,IAAI,MAAM;;;;UAIvD,KAAK;AACZ,SAAO,OAAO,KAAK,oBAAoB,MAAM;;AAG/C,QAAO;;;;;AAMT,SAAgB,aAAa,WAAmB,OAAO,eAA+B;CACpF,MAAM,SAAyB;EAC7B,SAAS;EACT,SAAS;EACT,YAAY;EACZ,QAAQ,EAAE;EACX;AAED,KAAI;EACF,MAAM,yBAAS,IAAI,MAAM;AACzB,SAAO,QAAQ,OAAO,SAAS,GAAG,SAAS;EAE3C,MAAM,QAAQ,YAAY,WAAW,CAAC;AAEtC,OAAK,MAAM,QAAQ,OAAO;AACxB,OAAI,CAAC,KAAK,SAAS,OAAO,IAAI,CAAC,KAAK,SAAS,UAAU,CAAE;GAEzD,MAAM,WAAW,KAAK,WAAW,EAAE,KAAK;GACxC,MAAM,QAAQ,SAAS,SAAS;AAEhC,OAAI,IAAI,KAAK,MAAM,MAAM,GAAG,OAC1B,KAAI;AACF,eAAW,SAAS;AACpB,WAAO;YACA,KAAK;AACZ,WAAO,OAAO,KAAK,oBAAoB,KAAK,IAAI,MAAM;;;UAIrD,KAAK;AACZ,SAAO,OAAO,KAAK,mBAAmB,MAAM;;AAG9C,QAAO;;;;cA1FuC;AAE1C,iBAAgB,UAAU,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"shutdown.js","names":[],"sources":["../../../../src/utils/logger/shutdown.ts"],"sourcesContent":["/**\n * Logger Shutdown\n * Graceful shutdown handling\n */\n\nimport { closeStreams } from './streams.js';\n\nlet isShuttingDown = false;\nlet shutdownHandler: (() => Promise<void>) | null = null;\n\n/**\n * Check if logger is shutting down\n */\nexport function isLoggerShuttingDown(): boolean {\n return isShuttingDown;\n}\n\n/**\n * Set shutdown state\n */\nexport function setShuttingDown(value: boolean): void {\n isShuttingDown = value;\n}\n\n/**\n * Flush and close all streams\n * Must be called before process exit\n */\nexport async function flushAndClose(): Promise<void> {\n isShuttingDown = true;\n \n try {\n await closeStreams();\n } catch {\n // Ignore errors during shutdown\n }\n}\n\n/**\n * Register shutdown handlers\n */\nexport function registerShutdownHandler(): void {\n if (shutdownHandler) return;\n\n shutdownHandler = async () => {\n await flushAndClose();\n };\n\n process.on('SIGINT', shutdownHandler);\n process.on('SIGTERM', shutdownHandler);\n process.on('exit', () => {\n if (shutdownHandler) {\n shutdownHandler();\n }\n });\n}\n\n// Auto-register on import\nregisterShutdownHandler();\n"],"mappings":";;;;;;AAaA,SAAgB,uBAAgC;AAC9C,QAAO;;;;;AAMT,SAAgB,gBAAgB,OAAsB;AACpD,kBAAiB;;;;;;AAOnB,eAAsB,gBAA+B;AACnD,kBAAiB;AAEjB,KAAI;AACF,QAAM,cAAc;SACd;;;;;AAQV,SAAgB,0BAAgC;AAC9C,KAAI,gBAAiB;AAErB,mBAAkB,YAAY;AAC5B,QAAM,eAAe;;AAGvB,SAAQ,GAAG,UAAU,gBAAgB;AACrC,SAAQ,GAAG,WAAW,gBAAgB;AACtC,SAAQ,GAAG,cAAc;AACvB,MAAI,gBACF,kBAAiB;GAEnB;;;;eAjDwC;AAExC,kBAAiB;AACjB,mBAAgD;AAkDpD,0BAAyB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stats.js","names":[],"sources":["../../../../src/utils/logger/stats.ts"],"sourcesContent":["/**\n * Log Statistics\n * Track log counts by level and module\n */\n\nimport type { LogLevel } from './types.js';\n\ninterface StatsData {\n byLevel: Record<LogLevel, number>;\n byModule: Map<string, number>;\n errorsLast24h: number;\n lastErrorTime: number;\n startTime: number;\n}\n\nconst stats: StatsData = {\n byLevel: { trace: 0, debug: 0, info: 0, warn: 0, error: 0, fatal: 0, silent: 0 },\n byModule: new Map(),\n errorsLast24h: 0,\n lastErrorTime: 0,\n startTime: Date.now(),\n};\n\n/**\n * Increment statistics for a log entry\n */\nexport function incrementStats(level: LogLevel, module?: string): void {\n stats.byLevel[level]++;\n \n if (module) {\n const current = stats.byModule.get(module) || 0;\n stats.byModule.set(module, current + 1);\n }\n \n if (level === 'error' || level === 'fatal') {\n const now = Date.now();\n if (now - stats.lastErrorTime > 24 * 60 * 60 * 1000) {\n stats.errorsLast24h = 0;\n }\n stats.errorsLast24h++;\n stats.lastErrorTime = now;\n }\n}\n\n/**\n * Get current statistics\n */\nexport function getRuntimeLogStats() {\n return {\n byLevel: { ...stats.byLevel },\n byModule: Object.fromEntries(stats.byModule),\n errorsLast24h: stats.errorsLast24h,\n uptimeMs: Date.now() - stats.startTime,\n };\n}\n\n/**\n * Reset statistics (for testing)\n */\nexport function resetStats(): void {\n stats.byLevel = { trace: 0, debug: 0, info: 0, warn: 0, error: 0, fatal: 0, silent: 0 };\n stats.byModule.clear();\n stats.errorsLast24h = 0;\n stats.lastErrorTime = 0;\n stats.startTime = Date.now();\n}\n"],"mappings":";;;;;AA0BA,SAAgB,eAAe,OAAiB,QAAuB;AACrE,OAAM,QAAQ;AAEd,KAAI,QAAQ;EACV,MAAM,UAAU,MAAM,SAAS,IAAI,OAAO,IAAI;AAC9C,QAAM,SAAS,IAAI,QAAQ,UAAU,EAAE;;AAGzC,KAAI,UAAU,WAAW,UAAU,SAAS;EAC1C,MAAM,MAAM,KAAK,KAAK;AACtB,MAAI,MAAM,MAAM,gBAAgB,OAAU,KAAK,IAC7C,OAAM,gBAAgB;AAExB,QAAM;AACN,QAAM,gBAAgB;;;;;;AAO1B,SAAgB,qBAAqB;AACnC,QAAO;EACL,SAAS,EAAE,GAAG,MAAM,SAAS;EAC7B,UAAU,OAAO,YAAY,MAAM,SAAS;EAC5C,eAAe,MAAM;EACrB,UAAU,KAAK,KAAK,GAAG,MAAM;EAC9B;;;;;AAMH,SAAgB,aAAmB;AACjC,OAAM,UAAU;EAAE,OAAO;EAAG,OAAO;EAAG,MAAM;EAAG,MAAM;EAAG,OAAO;EAAG,OAAO;EAAG,QAAQ;EAAG;AACvF,OAAM,SAAS,OAAO;AACtB,OAAM,gBAAgB;AACtB,OAAM,gBAAgB;AACtB,OAAM,YAAY,KAAK,KAAK;;;;AAjDxB,SAAmB;EACvB,SAAS;GAAE,OAAO;GAAG,OAAO;GAAG,MAAM;GAAG,MAAM;GAAG,OAAO;GAAG,OAAO;GAAG,QAAQ;GAAG;EAChF,0BAAU,IAAI,KAAK;EACnB,eAAe;EACf,eAAe;EACf,WAAW,KAAK,KAAK;EACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"streams.js","names":[],"sources":["../../../../src/utils/logger/streams.ts"],"sourcesContent":["/**\n * Log Streams\n * Output stream management (console, file, error file)\n */\n\nimport { createWriteStream } from 'fs';\nimport { existsSync, mkdirSync } from 'fs';\nimport path from 'path';\nimport { Writable } from 'stream';\nimport type { DestinationStream } from 'pino';\nimport type { LogLevel } from './types.js';\nimport { config, getLogDir } from './config.js';\nimport { emitLogEntry, hasSubscribers } from './log-stream.js';\nimport { pinoRecordToLogEntry } from './pino-record.js';\n\n// Store file stream references for later cleanup\nconst fileStreams: ReturnType<typeof createWriteStream>[] = [];\n\n/**\n * Get log file path for a specific date and type\n */\nexport function getLogPath(type: 'app' | 'error' | 'audit' | 'access' = 'app', date: Date = new Date()): string {\n const dateStr = date.toISOString().split('T')[0];\n return path.join(getLogDir(), `${type}-${dateStr}.log`);\n}\n\n/**\n * Ensure log directory exists\n */\nfunction ensureLogDir(): void {\n if (!existsSync(config.logDir)) {\n mkdirSync(config.logDir, { recursive: true });\n }\n}\n\n/**\n * Create log stream\n */\nfunction createLogStream(filePath: string): ReturnType<typeof createWriteStream> {\n return createWriteStream(filePath, { flags: 'a', encoding: 'utf-8' });\n}\n\n/** Push parsed Pino lines to live SSE subscribers when any are connected. */\nfunction createLiveEmitStream(): DestinationStream {\n return new Writable({\n write(chunk, _encoding, callback) {\n if (hasSubscribers()) {\n try {\n const parsed = JSON.parse(chunk.toString()) as Record<string, unknown>;\n emitLogEntry(pinoRecordToLogEntry(parsed));\n } catch {\n /* ignore non-JSON lines (e.g. pretty console) */\n }\n }\n callback();\n },\n }) as unknown as DestinationStream;\n}\n\n/**\n * Initialize and get all output streams\n */\nexport function initializeStreams(): Array<{ stream: DestinationStream | NodeJS.WriteStream; level: LogLevel }> {\n ensureLogDir();\n \n const streams: Array<{ stream: DestinationStream | NodeJS.WriteStream; level: LogLevel }> = [];\n\n streams.push({\n stream: createLiveEmitStream(),\n level: 'trace',\n });\n\n if (config.consoleOutput) {\n streams.push({\n stream: process.stdout as unknown as DestinationStream,\n level: config.level,\n });\n }\n\n if (config.fileOutput) {\n const appStream = createLogStream(getLogPath('app'));\n fileStreams.push(appStream);\n streams.push({\n stream: appStream as unknown as DestinationStream,\n level: config.level,\n });\n }\n\n if (config.errorFileOutput) {\n const errorStream = createLogStream(getLogPath('error'));\n fileStreams.push(errorStream);\n streams.push({\n stream: errorStream as unknown as DestinationStream,\n level: 'error',\n });\n }\n\n return streams;\n}\n\n/**\n * Get all file streams for cleanup\n */\nexport function getFileStreams(): ReturnType<typeof createWriteStream>[] {\n return fileStreams;\n}\n\n/**\n * Close all file streams gracefully\n */\nexport async function closeStreams(): Promise<void> {\n await Promise.all(\n fileStreams.map(\n (stream) =>\n new Promise<void>((resolve) => {\n if (stream.writable) {\n stream.end(() => resolve());\n } else {\n resolve();\n }\n }),\n ),\n );\n fileStreams.length = 0;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAqBA,SAAgB,WAAW,OAA6C,OAAO,uBAAa,IAAI,MAAM,EAAU;CAC9G,MAAM,UAAU,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC;AAC9C,QAAO,KAAK,KAAK,WAAW,EAAE,GAAG,KAAK,GAAG,QAAQ,MAAM;;;;;AAMzD,SAAS,eAAqB;AAC5B,KAAI,CAAC,WAAW,OAAO,OAAO,CAC5B,WAAU,OAAO,QAAQ,EAAE,WAAW,MAAM,CAAC;;;;;AAOjD,SAAS,gBAAgB,UAAwD;AAC/E,QAAO,kBAAkB,UAAU;EAAE,OAAO;EAAK,UAAU;EAAS,CAAC;;;AAIvE,SAAS,uBAA0C;AACjD,QAAO,IAAI,SAAS,EAClB,MAAM,OAAO,WAAW,UAAU;AAChC,MAAI,gBAAgB,CAClB,KAAI;AAEF,gBAAa,qBADE,KAAK,MAAM,MAAM,UAAU,CACF,CAAC,CAAC;UACpC;AAIV,YAAU;IAEb,CAAC;;;;;AAMJ,SAAgB,oBAAgG;AAC9G,eAAc;CAEd,MAAM,UAAsF,EAAE;AAE9F,SAAQ,KAAK;EACX,QAAQ,sBAAsB;EAC9B,OAAO;EACR,CAAC;AAEF,KAAI,OAAO,cACT,SAAQ,KAAK;EACX,QAAQ,QAAQ;EAChB,OAAO,OAAO;EACf,CAAC;AAGJ,KAAI,OAAO,YAAY;EACrB,MAAM,YAAY,gBAAgB,WAAW,MAAM,CAAC;AACpD,cAAY,KAAK,UAAU;AAC3B,UAAQ,KAAK;GACX,QAAQ;GACR,OAAO,OAAO;GACf,CAAC;;AAGJ,KAAI,OAAO,iBAAiB;EAC1B,MAAM,cAAc,gBAAgB,WAAW,QAAQ,CAAC;AACxD,cAAY,KAAK,YAAY;AAC7B,UAAQ,KAAK;GACX,QAAQ;GACR,OAAO;GACR,CAAC;;AAGJ,QAAO;;;;;AAMT,SAAgB,iBAAyD;AACvE,QAAO;;;;;AAMT,eAAsB,eAA8B;AAClD,OAAM,QAAQ,IACZ,YAAY,KACT,WACC,IAAI,SAAe,YAAY;AAC7B,MAAI,OAAO,SACT,QAAO,UAAU,SAAS,CAAC;MAE3B,UAAS;GAEX,CACL,CACF;AACD,aAAY,SAAS;;;;cAhHyB;kBACe;mBACP;AAGlD,eAAsD,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/utils/logger/types.ts"],"sourcesContent":["/**\n * Logger Types\n * \n * Centralized type definitions for the logging system.\n */\n\nimport type { Logger } from 'pino';\n\n/**\n * Basic log entry structure\n */\nexport interface LogEntry {\n timestamp: string;\n level: LogLevel;\n message: string;\n module?: string;\n service?: string;\n extension?: string;\n requestId?: string;\n sessionKey?: string;\n sessionId?: string;\n userId?: string;\n [key: string]: unknown;\n}\n\n/**\n * Log levels in order of severity\n */\nexport const LogLevel = {\n TRACE: 'trace',\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error',\n FATAL: 'fatal',\n SILENT: 'silent',\n} as const;\n\nexport type LogLevel = typeof LogLevel[keyof typeof LogLevel];\n\n/**\n * Log level numeric values (for comparison)\n */\nexport const LogLevelValue: Record<LogLevel, number> = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60,\n silent: Number.MAX_VALUE,\n};\n\n/**\n * Common log context fields\n */\nexport interface LogContext {\n /** Request/operation ID for tracing */\n requestId?: string;\n /** Session ID for user tracking */\n sessionKey?: string;\n /** Active transcript/session instance id */\n sessionId?: string;\n /** Cross-service trace id when distinct from requestId */\n correlationId?: string;\n /** User ID */\n userId?: string;\n /** Module/component name */\n module?: string;\n /** Extension name */\n extension?: string;\n /** Service name */\n service?: string;\n /** Additional context */\n [key: string]: unknown;\n}\n\n/**\n * Extended logger with context support\n */\nexport interface ContextualLogger extends Logger {\n /**\n * Set default context for all subsequent logs\n */\n withContext(context: LogContext): ContextualLogger;\n}\n\n/**\n * Logger configuration options\n */\nexport interface LoggerConfig {\n /** Minimum log level */\n level: LogLevel;\n /** Log directory */\n logDir: string;\n /** Enable console output */\n consoleOutput: boolean;\n /** Enable file output */\n fileOutput: boolean;\n /** Enable error-only file output */\n errorFileOutput: boolean;\n /** Log rotation: max days to keep */\n retentionDays: number;\n /** Log rotation: max file size in MB */\n maxFileSizeMB: number;\n /** Enable pretty print for console (dev only) */\n prettyPrint: boolean;\n}\n\n/**\n * Log file metadata\n */\nexport interface LogFileMeta {\n name: string;\n path: string;\n size: number;\n created: string;\n modified: string;\n type: 'app' | 'error' | 'audit' | 'access';\n lines?: number;\n}\n\n/**\n * Log query options\n */\nexport interface LogQuery {\n /** Filter by log levels */\n levels?: LogLevel[];\n /** Start timestamp (ISO 8601) */\n from?: string;\n /** End timestamp (ISO 8601) */\n to?: string;\n /** Keyword search */\n q?: string;\n /** Filter by module */\n module?: string;\n /** Filter by extension */\n extension?: string;\n /** Filter by service */\n service?: string;\n /** Filter by request ID */\n requestId?: string;\n /** Filter by session ID */\n sessionKey?: string;\n /** Filter by active transcript/session instance id */\n sessionId?: string;\n /** Pagination offset */\n offset?: number;\n /** Pagination limit */\n limit?: number;\n /** Sort order: 'asc' | 'desc' */\n order?: 'asc' | 'desc';\n}\n\n/**\n * Log statistics\n */\nexport interface LogStats {\n byLevel: Record<LogLevel, number>;\n}\n\n/**\n * Log rotation result\n */\nexport interface RotationResult {\n rotated: number;\n deleted: number;\n compressed: number;\n errors: string[];\n}\n"],"mappings":";;;;AA4BA,MAAa,WAAW;CACtB,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACP,OAAO;CACP,QAAQ;CACT;;;;AAOD,MAAa,gBAA0C;CACrD,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACP,OAAO;CACP,QAAQ,OAAO;CAChB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","names":[],"sources":["../../../src/utils/logger.ts"],"sourcesContent":["export * from './logger/index.js';\n"],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redact-sensitive-url.js","names":[],"sources":["../../../src/utils/redact-sensitive-url.ts"],"sourcesContent":["/** Redact credentials and sensitive query params from URLs for logs. */\nexport function redactSensitiveUrl(url: string): string {\n return redactSensitiveUrlLikeString(url);\n}\n\nexport function redactSensitiveUrlLikeString(value: string): string {\n try {\n const parsed = new URL(value);\n if (parsed.username || parsed.password) {\n parsed.username = parsed.username ? '***' : '';\n parsed.password = parsed.password ? '***' : '';\n }\n for (const key of [...parsed.searchParams.keys()]) {\n const lower = key.toLowerCase().replaceAll('-', '_');\n if (\n lower.includes('token') ||\n lower.includes('secret') ||\n lower.includes('password') ||\n lower.includes('api_key') ||\n lower === 'key' ||\n lower === 'auth'\n ) {\n parsed.searchParams.set(key, '***');\n }\n }\n return parsed.toString();\n } catch {\n return value.replace(/(token|secret|password|api[_-]?key)=[^&\\s]+/gi, '$1=***');\n }\n}\n"],"mappings":";;AACA,SAAgB,mBAAmB,KAAqB;AACtD,QAAO,6BAA6B,IAAI;;AAG1C,SAAgB,6BAA6B,OAAuB;AAClE,KAAI;EACF,MAAM,SAAS,IAAI,IAAI,MAAM;AAC7B,MAAI,OAAO,YAAY,OAAO,UAAU;AACtC,UAAO,WAAW,OAAO,WAAW,QAAQ;AAC5C,UAAO,WAAW,OAAO,WAAW,QAAQ;;AAE9C,OAAK,MAAM,OAAO,CAAC,GAAG,OAAO,aAAa,MAAM,CAAC,EAAE;GACjD,MAAM,QAAQ,IAAI,aAAa,CAAC,WAAW,KAAK,IAAI;AACpD,OACE,MAAM,SAAS,QAAQ,IACvB,MAAM,SAAS,SAAS,IACxB,MAAM,SAAS,WAAW,IAC1B,MAAM,SAAS,UAAU,IACzB,UAAU,SACV,UAAU,OAEV,QAAO,aAAa,IAAI,KAAK,MAAM;;AAGvC,SAAO,OAAO,UAAU;SAClB;AACN,SAAO,MAAM,QAAQ,iDAAiD,SAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sanitize-log.js","names":[],"sources":["../../../src/utils/sanitize-log.ts"],"sourcesContent":["/** Strip control chars from log labels (server names, keys). */\nexport function sanitizeForLog(value: string): string {\n return value.replace(/[\\u0000-\\u001f\\u007f]/g, '?');\n}\n"],"mappings":";;AACA,SAAgB,eAAe,OAAuB;AACpD,QAAO,MAAM,QAAQ,0BAA0B,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"string-coerce.js","names":[],"sources":["../../../src/utils/string-coerce.ts"],"sourcesContent":["/** Trim non-empty strings; otherwise undefined. */\nexport function normalizeOptionalString(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 normalizeLowercaseStringOrEmpty(value: unknown): string {\n if (typeof value !== 'string') {\n return '';\n }\n return value.trim().toLowerCase();\n}\n\n/** Lowercase trimmed string, or undefined when empty/missing. */\nexport function normalizeOptionalLowercaseString(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n const trimmed = value.trim().toLowerCase();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n"],"mappings":";;;AACA,SAAgB,wBAAwB,OAAoC;AAC1E,KAAI,OAAO,UAAU,SACnB;CAEF,MAAM,UAAU,MAAM,MAAM;AAC5B,QAAO,QAAQ,SAAS,IAAI,UAAU,KAAA;;AAGxC,SAAgB,gCAAgC,OAAwB;AACtE,KAAI,OAAO,UAAU,SACnB,QAAO;AAET,QAAO,MAAM,MAAM,CAAC,aAAa;;;AAInC,SAAgB,iCAAiC,OAAoC;AACnF,KAAI,OAAO,UAAU,SACnB;CAEF,MAAM,UAAU,MAAM,MAAM,CAAC,aAAa;AAC1C,QAAO,QAAQ,SAAS,IAAI,UAAU,KAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"language-profile.js","names":[],"sources":["../../../src/voice/language-profile.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\nimport { createLogger } from '../utils/logger.js';\nimport { startLocalVoiceModelInstall } from './local/model-manager.js';\nimport {\n DEFAULT_LOCAL_VOICE_MODEL_ID,\n isLocalVoiceModelInstalled,\n} from './local/models.js';\n\nconst log = createLogger('Voice:Language');\n\nexport type ProductLanguage = 'en' | 'zh';\nexport type VoiceLanguageMode = 'auto' | 'manual';\n\nexport interface VoiceLanguageProfile {\n language: ProductLanguage;\n sttLanguage: 'auto' | 'en';\n edgeLanguage: 'en-US' | 'zh-CN';\n edgeVoice: 'en-US-MichelleNeural' | 'zh-CN-XiaoxiaoNeural';\n}\n\nexport function resolveVoiceLanguageProfile(language: ProductLanguage): VoiceLanguageProfile {\n return language === 'zh'\n ? {\n language,\n sttLanguage: 'auto',\n edgeLanguage: 'zh-CN',\n edgeVoice: 'zh-CN-XiaoxiaoNeural',\n }\n : {\n language,\n sttLanguage: 'en',\n edgeLanguage: 'en-US',\n edgeVoice: 'en-US-MichelleNeural',\n };\n}\n\nexport function inferProductLanguageFromEnvironment(): ProductLanguage {\n const locale = [\n process.env.LC_ALL,\n process.env.LC_MESSAGES,\n process.env.LANG,\n Intl.DateTimeFormat().resolvedOptions().locale,\n ].find((value) => typeof value === 'string' && value.trim());\n return locale?.trim().toLowerCase().startsWith('zh') ? 'zh' : 'en';\n}\n\nfunction hasLegacyManualLanguageSelection(config: Config): boolean {\n const local = config.tools?.media?.audio?.providers?.['xopc-local'];\n const edge = config.messages?.tts?.providers?.edge;\n return (\n (typeof local?.language === 'string' && local.language.trim().length > 0) ||\n (typeof edge?.voice === 'string' && edge.voice.trim().length > 0) ||\n (typeof edge?.lang === 'string' && edge.lang.trim().length > 0)\n );\n}\n\n/**\n * Install safe product defaults while preserving every explicit on/off choice.\n * Older configs with a persisted language or Edge voice are treated as manual.\n */\nexport function initializeVoiceDefaults(\n config: Config,\n language: ProductLanguage = inferProductLanguageFromEnvironment(),\n): boolean {\n const before = JSON.stringify({ voice: config.voice, tools: config.tools?.media?.audio, tts: config.messages?.tts });\n const existingMode = config.voice?.languageMode;\n const languageMode: VoiceLanguageMode =\n existingMode ?? (hasLegacyManualLanguageSelection(config) ? 'manual' : 'auto');\n\n config.voice = {\n ...config.voice,\n languageMode,\n language: config.voice?.language ?? language,\n };\n\n config.tools = config.tools ?? {};\n config.tools.media = config.tools.media ?? {};\n const audio = config.tools.media.audio;\n config.tools.media.audio = {\n ...audio,\n enabled: audio?.enabled ?? true,\n provider: audio?.provider ?? 'xopc-local',\n fallback: audio?.fallback ?? { enabled: false, order: ['xopc-local'] },\n providers: {\n ...(audio?.providers ?? {}),\n 'xopc-local': {\n model: DEFAULT_LOCAL_VOICE_MODEL_ID,\n ...(audio?.providers?.['xopc-local'] ?? {}),\n },\n },\n };\n\n config.messages = config.messages ?? {};\n const tts = config.messages.tts;\n config.messages.tts = {\n ...tts,\n enabled: tts?.enabled ?? true,\n provider: tts?.provider ?? 'edge',\n trigger: tts?.trigger ?? 'inbound',\n providers: {\n ...(tts?.providers ?? {}),\n edge: {\n enabled: true,\n ...(tts?.providers?.edge ?? {}),\n },\n },\n };\n\n if (languageMode === 'auto') {\n applyAutomaticVoiceLanguage(config, language);\n }\n return before !== JSON.stringify({ voice: config.voice, tools: config.tools?.media?.audio, tts: config.messages?.tts });\n}\n\n/** Apply product language only to providers whose language mapping is known. */\nexport function applyAutomaticVoiceLanguage(config: Config, language: ProductLanguage): boolean {\n if ((config.voice?.languageMode ?? 'auto') !== 'auto') return false;\n const before = JSON.stringify({ voice: config.voice, tools: config.tools?.media?.audio, tts: config.messages?.tts });\n const profile = resolveVoiceLanguageProfile(language);\n\n config.voice = { ...config.voice, languageMode: 'auto', language };\n const audio = config.tools?.media?.audio;\n if (audio?.provider === 'xopc-local') {\n audio.providers = {\n ...(audio.providers ?? {}),\n 'xopc-local': {\n ...(audio.providers?.['xopc-local'] ?? {}),\n model: DEFAULT_LOCAL_VOICE_MODEL_ID,\n language: profile.sttLanguage,\n },\n };\n }\n const tts = config.messages?.tts;\n if (tts?.provider === 'edge') {\n tts.providers = {\n ...(tts.providers ?? {}),\n edge: {\n enabled: true,\n ...(tts.providers?.edge ?? {}),\n voice: profile.edgeVoice,\n lang: profile.edgeLanguage,\n },\n };\n }\n return before !== JSON.stringify({ voice: config.voice, tools: config.tools?.media?.audio, tts: config.messages?.tts });\n}\n\n/** Start the model download without delaying gateway readiness. */\nexport function prepareConfiguredLocalVoiceModel(config: Config): void {\n const audio = config.tools?.media?.audio;\n if (audio?.enabled === false || (audio?.provider ?? 'xopc-local') !== 'xopc-local') return;\n const configuredModel = audio?.providers?.['xopc-local']?.model;\n const modelId = typeof configuredModel === 'string' && configuredModel.trim()\n ? configuredModel.trim()\n : DEFAULT_LOCAL_VOICE_MODEL_ID;\n if (isLocalVoiceModelInstalled(modelId)) return;\n try {\n startLocalVoiceModelInstall(modelId);\n log.info({ modelId, phase: 'startup_prepare' }, 'Local voice model preparation started');\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n log.warn({ err, modelId, errorMessage, phase: 'startup_prepare' }, `Local voice model preparation failed: ${errorMessage}`);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-files.js","names":[],"sources":["../../../../src/voice/local/model-files.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { createReadStream, createWriteStream } from 'node:fs';\nimport { mkdir, rm, stat } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\n\nimport type { LocalVoiceModelDefinition, LocalVoiceModelFile } from './models.js';\n\nexport interface LocalVoiceFileProgress {\n status: 'download';\n file: string;\n loaded: number;\n total: number;\n progress: number;\n}\n\nfunction resolveModelFileUrl(\n remoteHost: string,\n model: LocalVoiceModelDefinition,\n file: LocalVoiceModelFile,\n): string {\n const base = remoteHost.endsWith('/') ? remoteHost : `${remoteHost}/`;\n const path = file.path.split('/').map(encodeURIComponent).join('/');\n return new URL(`${model.repository}/resolve/${model.revision}/${path}`, base).toString();\n}\n\nasync function sha256File(path: string): Promise<string> {\n const hash = createHash('sha256');\n for await (const chunk of createReadStream(path)) hash.update(chunk as Buffer);\n return hash.digest('hex');\n}\n\nasync function downloadFile(\n url: string,\n destination: string,\n expectedBytes: number,\n onBytes: (bytes: number) => void,\n): Promise<void> {\n const existing = await stat(destination).catch(() => null);\n let offset = existing?.isFile() ? existing.size : 0;\n if (offset > expectedBytes) {\n await rm(destination, { force: true });\n offset = 0;\n }\n if (offset === expectedBytes) {\n onBytes(offset);\n return;\n }\n const response = await fetch(url, {\n redirect: 'follow',\n headers: offset > 0 ? { Range: `bytes=${offset}-` } : undefined,\n });\n if (!response.ok || !response.body) {\n throw new Error(`Model download failed with HTTP ${response.status}`);\n }\n const isResume = offset > 0 && response.status === 206;\n if (offset > 0 && !isResume) offset = 0;\n const declaredBytes = Number(response.headers.get('content-length'));\n const expectedResponseBytes = expectedBytes - offset;\n if (Number.isFinite(declaredBytes) && declaredBytes > 0 && declaredBytes !== expectedResponseBytes) {\n throw new Error(`Model download size mismatch: expected ${expectedResponseBytes}, received ${declaredBytes}`);\n }\n\n await mkdir(dirname(destination), { recursive: true });\n let loaded = offset;\n let lastReportedBytes = offset;\n let lastReportedAt = 0;\n const source = Readable.fromWeb(response.body as never);\n source.on('data', (chunk: Buffer) => {\n loaded += chunk.length;\n const now = Date.now();\n if (loaded === expectedBytes || loaded - lastReportedBytes >= 256 * 1024 || now - lastReportedAt >= 250) {\n lastReportedBytes = loaded;\n lastReportedAt = now;\n onBytes(loaded);\n }\n });\n await pipeline(source, createWriteStream(destination, { flags: isResume ? 'a' : 'w', mode: 0o600 }));\n if (loaded !== expectedBytes) {\n throw new Error(`Model download was incomplete: expected ${expectedBytes}, received ${loaded}`);\n }\n}\n\nasync function verifyModelFile(path: string, file: LocalVoiceModelFile): Promise<void> {\n const info = await stat(path);\n if (info.size !== file.bytes) {\n throw new Error(`Model file size mismatch for ${file.path}`);\n }\n const actual = await sha256File(path);\n if (actual !== file.sha256) {\n throw new Error(`Model file checksum mismatch for ${file.path}`);\n }\n}\n\nexport async function downloadLocalVoiceModelFiles(options: {\n model: LocalVoiceModelDefinition;\n destinationDir: string;\n remoteHosts: readonly string[];\n onProgress?: (progress: LocalVoiceFileProgress) => void;\n}): Promise<void> {\n const files = options.model.files;\n if (!files?.length) throw new Error(`No downloadable files declared for ${options.model.id}`);\n const total = files.reduce((sum, file) => sum + file.bytes, 0);\n let completedBytes = 0;\n\n for (const file of files) {\n const destination = join(options.destinationDir, file.path);\n let lastError: unknown;\n for (const host of options.remoteHosts) {\n try {\n await downloadFile(\n resolveModelFileUrl(host, options.model, file),\n destination,\n file.bytes,\n (fileBytes) => options.onProgress?.({\n status: 'download',\n file: file.path,\n loaded: completedBytes + fileBytes,\n total,\n progress: (completedBytes + fileBytes) / total,\n }),\n );\n await verifyModelFile(destination, file);\n lastError = undefined;\n break;\n } catch (error) {\n lastError = error;\n const message = error instanceof Error ? error.message : String(error);\n if (message.includes('checksum mismatch') || message.includes('size mismatch')) {\n await rm(destination, { force: true });\n }\n }\n }\n if (lastError) {\n throw lastError;\n }\n completedBytes += file.bytes;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-manager.js","names":[],"sources":["../../../../src/voice/local/model-manager.ts"],"sourcesContent":["import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\n\nimport { createLogger } from '../../utils/logger.js';\nimport {\n LOCAL_VOICE_MODELS,\n getLocalVoiceModel,\n isLocalVoiceModelInstalled,\n resolveLocalVoiceModelDir,\n resolveLocalVoiceModelMarkerPath,\n} from './models.js';\nimport { getLocalVoiceRuntimeClient, type LocalVoiceRuntimeProgress } from './runtime-client.js';\n\nconst log = createLogger('LocalVoice:Models');\n\nexport type LocalVoiceModelState = 'not_installed' | 'downloading' | 'ready' | 'error';\n\nexport interface LocalVoiceModelStatus {\n id: string;\n name: string;\n description: string;\n approximateBytes: number;\n engine: string;\n languages: readonly string[];\n recommended?: boolean;\n state: LocalVoiceModelState;\n progress?: number;\n downloadedBytes?: number;\n totalBytes?: number;\n error?: string;\n}\n\nconst jobs = new Map<string, LocalVoiceModelStatus>();\n\nfunction progressFraction(progress: LocalVoiceRuntimeProgress): number | undefined {\n if (typeof progress.progress === 'number' && Number.isFinite(progress.progress)) {\n return progress.progress > 1 ? progress.progress / 100 : progress.progress;\n }\n if (typeof progress.loaded === 'number' && typeof progress.total === 'number' && progress.total > 0) {\n return progress.loaded / progress.total;\n }\n return undefined;\n}\n\nexport async function listLocalVoiceModelStatuses(): Promise<LocalVoiceModelStatus[]> {\n return Promise.all(\n LOCAL_VOICE_MODELS.map(async (model) => {\n const active = jobs.get(model.id);\n if (active) return { ...active };\n if (!isLocalVoiceModelInstalled(model.id)) {\n return {\n id: model.id,\n name: model.name,\n description: model.description,\n approximateBytes: model.approximateBytes,\n engine: model.engine,\n languages: model.languages,\n recommended: model.recommended,\n state: 'not_installed' as const,\n };\n }\n let installedAt: string | undefined;\n try {\n const marker = JSON.parse(await readFile(resolveLocalVoiceModelMarkerPath(model.id), 'utf8')) as { installedAt?: string };\n installedAt = marker.installedAt;\n } catch {\n // The marker's presence is authoritative; metadata is best-effort.\n }\n return {\n id: model.id,\n name: model.name,\n description: installedAt ? `${model.description} Installed ${installedAt}.` : model.description,\n approximateBytes: model.approximateBytes,\n engine: model.engine,\n languages: model.languages,\n recommended: model.recommended,\n state: 'ready' as const,\n };\n }),\n );\n}\n\nexport function startLocalVoiceModelInstall(modelId: string): LocalVoiceModelStatus {\n const model = getLocalVoiceModel(modelId);\n const existing = jobs.get(model.id);\n if (existing?.state === 'downloading') return { ...existing };\n const status: LocalVoiceModelStatus = {\n id: model.id,\n name: model.name,\n description: model.description,\n approximateBytes: model.approximateBytes,\n engine: model.engine,\n languages: model.languages,\n recommended: model.recommended,\n state: 'downloading',\n progress: 0,\n };\n jobs.set(model.id, status);\n void (async () => {\n const modelDir = resolveLocalVoiceModelDir(model.id);\n const stagingDir = `${modelDir}.download`;\n try {\n if (model.engine === 'transformers.js') {\n await rm(stagingDir, { recursive: true, force: true });\n }\n await mkdir(stagingDir, { recursive: true });\n await getLocalVoiceRuntimeClient().request(\n 'model.install',\n { modelId: model.id, cacheDir: stagingDir },\n {\n onProgress: (progress) => {\n const current = jobs.get(model.id);\n if (!current) return;\n current.progress = progressFraction(progress) ?? current.progress;\n current.downloadedBytes = progress.loaded;\n current.totalBytes = progress.total;\n },\n },\n );\n await writeFile(\n join(stagingDir, 'installed.json'),\n `${JSON.stringify({\n modelId: model.id,\n repository: model.repository,\n revision: model.revision,\n engine: model.engine,\n ...(model.dtype ? { dtype: model.dtype } : {}),\n installedAt: new Date().toISOString(),\n }, null, 2)}\\n`,\n { mode: 0o600 },\n );\n await rm(modelDir, { recursive: true, force: true });\n await rename(stagingDir, modelDir);\n jobs.delete(model.id);\n log.info({ modelId: model.id }, 'Local voice model installed');\n } catch (error) {\n // Keep verified/partial sherpa model files so a retry can continue with HTTP Range.\n if (model.engine === 'transformers.js') {\n await rm(stagingDir, { recursive: true, force: true }).catch(() => {});\n }\n const message = error instanceof Error ? error.message : String(error);\n jobs.set(model.id, { ...status, state: 'error', error: message });\n log.error({ err: error, modelId: model.id }, `Local voice model installation failed: ${message}`);\n }\n })();\n return { ...status };\n}\n\nexport async function removeLocalVoiceModel(modelId: string): Promise<void> {\n const model = getLocalVoiceModel(modelId);\n if (jobs.get(model.id)?.state === 'downloading') {\n throw new Error('Cannot remove a model while it is downloading');\n }\n try {\n await getLocalVoiceRuntimeClient().request('model.unload', { modelId: model.id }, { timeoutMs: 10_000 });\n } catch (error) {\n log.warn({ err: error, modelId: model.id }, 'Local voice runtime unload failed; removing model files');\n }\n await rm(resolveLocalVoiceModelDir(model.id), { recursive: true, force: true });\n jobs.delete(model.id);\n log.info({ modelId: model.id }, 'Local voice model removed');\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.js","names":[],"sources":["../../../../src/voice/local/models.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport { resolveStateDir } from '../../config/paths.js';\n\nexport type LocalVoiceModelId = 'sensevoice-small' | 'tiny' | 'base' | 'small';\n\nexport type LocalVoiceEngine = 'sherpa-onnx' | 'transformers.js';\n\nexport interface LocalVoiceModelFile {\n path: string;\n bytes: number;\n sha256: string;\n}\n\nexport interface LocalVoiceModelDefinition {\n id: LocalVoiceModelId;\n name: string;\n description: string;\n engine: LocalVoiceEngine;\n repository: string;\n revision: string;\n dtype?: 'q8';\n files?: readonly LocalVoiceModelFile[];\n languages: readonly string[];\n recommended?: boolean;\n approximateBytes: number;\n}\n\nexport const DEFAULT_LOCAL_VOICE_MODEL_ID: LocalVoiceModelId = 'sensevoice-small';\n\nexport const LOCAL_VOICE_MODELS: readonly LocalVoiceModelDefinition[] = [\n {\n id: 'sensevoice-small',\n name: 'SenseVoice Small 中文',\n description: '中文推荐;适合普通话、粤语和中英混说,支持标点与数字规整。',\n engine: 'sherpa-onnx',\n repository: 'csukuangfj/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17',\n revision: '2365baeacb507f821a0c8120fcee3d484dba7a07',\n files: [\n {\n path: 'model.int8.onnx',\n bytes: 239_233_841,\n sha256: 'c71f0ce00bec95b07744e116345e33d8cbbe08cef896382cf907bf4b51a2cd51',\n },\n {\n path: 'tokens.txt',\n bytes: 315_894,\n sha256: 'f449eb28dc567533d7fa59be34e2abca8784f771850c78a47fb731a31429a1dc',\n },\n {\n path: 'LICENSE',\n bytes: 71,\n sha256: '221c6df10b0931a5629adad671ea48fb7747e034c414b6d2bfa275bc3dd4ea17',\n },\n ],\n languages: ['zh', 'yue', 'en', 'ja', 'ko'],\n recommended: true,\n approximateBytes: 239_549_806,\n },\n {\n id: 'tiny',\n name: 'Whisper Tiny',\n description: 'Fastest and smallest; best for short commands.',\n engine: 'transformers.js',\n repository: 'onnx-community/whisper-tiny',\n revision: 'ff4177021cc41f7db950912b73ea4fdf7d01d8e7',\n dtype: 'q8',\n languages: ['multilingual'],\n approximateBytes: 45 * 1024 * 1024,\n },\n {\n id: 'base',\n name: 'Whisper Base',\n description: 'Recommended balance of accuracy, speed, and disk use.',\n engine: 'transformers.js',\n repository: 'onnx-community/whisper-base',\n revision: '1846881b6b3a3024392c1eea3ad983695bc23925',\n dtype: 'q8',\n languages: ['multilingual'],\n approximateBytes: 80 * 1024 * 1024,\n },\n {\n id: 'small',\n name: 'Whisper Small',\n description: 'Higher accuracy with more memory and disk use.',\n engine: 'transformers.js',\n repository: 'onnx-community/whisper-small',\n revision: '36050c46d777d46dc4b5f43f6d90574fc38f8732',\n dtype: 'q8',\n languages: ['multilingual'],\n approximateBytes: 245 * 1024 * 1024,\n },\n] as const;\n\nexport function resolveLocalVoiceRootDir(): string {\n return process.env.XOPC_VOICE_MODEL_DIR?.trim() || join(resolveStateDir(), 'voice');\n}\n\nexport function resolveLocalVoiceModelDir(modelId: string): string {\n return join(resolveLocalVoiceRootDir(), 'models', modelId);\n}\n\nexport function resolveLocalVoiceModelMarkerPath(modelId: string): string {\n return join(resolveLocalVoiceModelDir(modelId), 'installed.json');\n}\n\nexport function getLocalVoiceModel(modelId: string | undefined): LocalVoiceModelDefinition {\n const id = modelId?.trim() || DEFAULT_LOCAL_VOICE_MODEL_ID;\n const model = LOCAL_VOICE_MODELS.find((entry) => entry.id === id);\n if (!model) {\n throw new Error(`Unknown local voice model: ${id}`);\n }\n return model;\n}\n\nexport function isLocalVoiceModelInstalled(modelId: string): boolean {\n return existsSync(resolveLocalVoiceModelMarkerPath(modelId));\n}\n\nexport function hasInstalledLocalVoiceModel(): boolean {\n return LOCAL_VOICE_MODELS.some((model) => isLocalVoiceModelInstalled(model.id));\n}\n"],"mappings":";;;;;YAGwD;AA0BxD,MAAa,+BAAkD;AAE/D,MAAa,qBAA2D;CACtE;EACE,IAAI;EACJ,MAAM;EACN,aAAa;EACb,QAAQ;EACR,YAAY;EACZ,UAAU;EACV,OAAO;GACL;IACE,MAAM;IACN,OAAO;IACP,QAAQ;IACT;GACD;IACE,MAAM;IACN,OAAO;IACP,QAAQ;IACT;GACD;IACE,MAAM;IACN,OAAO;IACP,QAAQ;IACT;GACF;EACD,WAAW;GAAC;GAAM;GAAO;GAAM;GAAM;GAAK;EAC1C,aAAa;EACb,kBAAkB;EACnB;CACD;EACE,IAAI;EACJ,MAAM;EACN,aAAa;EACb,QAAQ;EACR,YAAY;EACZ,UAAU;EACV,OAAO;EACP,WAAW,CAAC,eAAe;EAC3B,kBAAkB,KAAK,OAAO;EAC/B;CACD;EACE,IAAI;EACJ,MAAM;EACN,aAAa;EACb,QAAQ;EACR,YAAY;EACZ,UAAU;EACV,OAAO;EACP,WAAW,CAAC,eAAe;EAC3B,kBAAkB,KAAK,OAAO;EAC/B;CACD;EACE,IAAI;EACJ,MAAM;EACN,aAAa;EACb,QAAQ;EACR,YAAY;EACZ,UAAU;EACV,OAAO;EACP,WAAW,CAAC,eAAe;EAC3B,kBAAkB,MAAM,OAAO;EAChC;CACF;AAED,SAAgB,2BAAmC;AACjD,QAAO,QAAQ,IAAI,sBAAsB,MAAM,IAAI,KAAK,iBAAiB,EAAE,QAAQ;;AAGrF,SAAgB,0BAA0B,SAAyB;AACjE,QAAO,KAAK,0BAA0B,EAAE,UAAU,QAAQ;;AAG5D,SAAgB,iCAAiC,SAAyB;AACxE,QAAO,KAAK,0BAA0B,QAAQ,EAAE,iBAAiB;;AAGnE,SAAgB,mBAAmB,SAAwD;CACzF,MAAM,KAAK,SAAS,MAAM,IAAA;CAC1B,MAAM,QAAQ,mBAAmB,MAAM,UAAU,MAAM,OAAO,GAAG;AACjE,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,8BAA8B,KAAK;AAErD,QAAO;;AAGT,SAAgB,2BAA2B,SAA0B;AACnE,QAAO,WAAW,iCAAiC,QAAQ,CAAC;;AAG9D,SAAgB,8BAAuC;AACrD,QAAO,mBAAmB,MAAM,UAAU,2BAA2B,MAAM,GAAG,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-client.js","names":[],"sources":["../../../../src/voice/local/runtime-client.ts"],"sourcesContent":["import { spawn, type ChildProcessWithoutNullStreams } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { createInterface } from 'node:readline';\nimport { fileURLToPath } from 'node:url';\n\nimport { createLogger } from '../../utils/logger.js';\nimport { resolveLocalVoiceRootDir } from './models.js';\n\nconst log = createLogger('LocalVoice:Runtime');\nconst DEFAULT_REQUEST_TIMEOUT_MS = 10 * 60_000;\n\ntype PendingRequest = {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n timeout: ReturnType<typeof setTimeout>;\n signal?: AbortSignal;\n abort?: () => void;\n onProgress?: (progress: LocalVoiceRuntimeProgress) => void;\n};\n\nexport interface LocalVoiceRuntimeProgress {\n status?: string;\n file?: string;\n progress?: number;\n loaded?: number;\n total?: number;\n}\n\nfunction resolveWorkerCommand(): { entry: string; args: string[] } {\n const configured = process.env.XOPC_VOICE_RUNTIME_ENTRY?.trim();\n if (configured) return { entry: configured, args: [configured] };\n\n const jsEntry = fileURLToPath(new URL('./runtime-worker.js', import.meta.url));\n if (existsSync(jsEntry)) return { entry: jsEntry, args: [jsEntry] };\n\n const tsEntry = fileURLToPath(new URL('./runtime-worker.ts', import.meta.url));\n if (existsSync(tsEntry)) return { entry: tsEntry, args: ['--import', 'tsx', tsEntry] };\n throw new Error('Bundled local voice runtime entry is missing');\n}\n\nexport class LocalVoiceRuntimeClient {\n private child: ChildProcessWithoutNullStreams | null = null;\n private nextId = 1;\n private pending = new Map<number, PendingRequest>();\n\n async request<T>(\n method: string,\n params: Record<string, unknown> = {},\n options: {\n signal?: AbortSignal;\n timeoutMs?: number;\n /** Health/status probes must never terminate an active model download on timeout. */\n stopOnTimeout?: boolean;\n onProgress?: (progress: LocalVoiceRuntimeProgress) => void;\n } = {},\n ): Promise<T> {\n options.signal?.throwIfAborted();\n const child = this.ensureStarted();\n const id = this.nextId++;\n return new Promise<T>((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.deletePending(id);\n reject(new Error(`Local voice runtime request timed out: ${method}`));\n if (options.stopOnTimeout !== false) this.stop();\n }, options.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS);\n this.pending.set(id, {\n resolve: (value) => resolve(value as T),\n reject,\n timeout,\n signal: options.signal,\n onProgress: options.onProgress,\n });\n const abort = () => {\n const pending = this.pending.get(id);\n if (!pending) return;\n this.deletePending(id);\n pending.reject(new Error('Local voice transcription aborted'));\n this.stop();\n };\n const pending = this.pending.get(id);\n if (pending) pending.abort = abort;\n options.signal?.addEventListener('abort', abort, { once: true });\n child.stdin.write(`${JSON.stringify({ id, method, params })}\\n`, (error) => {\n if (!error) return;\n this.deletePending(id);\n reject(error);\n });\n });\n }\n\n stop(): void {\n const child = this.child;\n this.child = null;\n if (child && !child.killed) child.kill('SIGTERM');\n this.rejectAll(new Error('Local voice runtime stopped'));\n }\n\n private ensureStarted(): ChildProcessWithoutNullStreams {\n if (this.child && !this.child.killed) return this.child;\n const command = resolveWorkerCommand();\n const child = spawn(process.execPath, command.args, {\n env: {\n ...process.env,\n ELECTRON_RUN_AS_NODE: '1',\n XOPC_VOICE_MODEL_DIR: resolveLocalVoiceRootDir(),\n },\n stdio: ['pipe', 'pipe', 'pipe'],\n windowsHide: true,\n });\n this.child = child;\n createInterface({ input: child.stdout }).on('line', (line) => this.handleLine(line));\n child.stderr.on('data', (chunk: Buffer) => {\n const message = chunk.toString().trim();\n if (message) log.debug({ message }, 'Local voice runtime stderr');\n });\n child.once('error', (error) => {\n if (this.child === child) this.child = null;\n this.rejectAll(error);\n });\n child.once('exit', (code, signal) => {\n if (this.child === child) this.child = null;\n if (this.pending.size > 0) {\n this.rejectAll(new Error(`Local voice runtime exited (${code ?? signal ?? 'unknown'})`));\n }\n });\n return child;\n }\n\n private handleLine(line: string): void {\n let message: {\n id?: number;\n result?: unknown;\n error?: string | { message?: string; code?: string; cause?: string };\n event?: string;\n data?: unknown;\n };\n try {\n message = JSON.parse(line) as typeof message;\n } catch {\n log.warn({ linePreview: line.slice(0, 200) }, 'Ignored invalid local voice runtime output');\n return;\n }\n if (typeof message.id !== 'number') return;\n const pending = this.pending.get(message.id);\n if (!pending) return;\n if (message.event === 'progress') {\n pending.onProgress?.((message.data ?? {}) as LocalVoiceRuntimeProgress);\n return;\n }\n this.deletePending(message.id);\n if (message.error) {\n const detail = typeof message.error === 'string' ? { message: message.error } : message.error;\n const suffix = [detail.code, detail.cause].filter(Boolean).join(': ');\n const error = new Error(`${detail.message || 'Local voice runtime failed'}${suffix ? ` (${suffix})` : ''}`);\n if (detail.code) Object.assign(error, { code: detail.code });\n pending.reject(error);\n } else pending.resolve(message.result);\n }\n\n private rejectAll(error: Error): void {\n for (const pending of this.pending.values()) {\n clearTimeout(pending.timeout);\n if (pending.signal && pending.abort) {\n pending.signal.removeEventListener('abort', pending.abort);\n }\n pending.reject(error);\n }\n this.pending.clear();\n }\n\n private deletePending(id: number): void {\n const pending = this.pending.get(id);\n if (!pending) return;\n clearTimeout(pending.timeout);\n if (pending.signal && pending.abort) {\n pending.signal.removeEventListener('abort', pending.abort);\n }\n this.pending.delete(id);\n }\n}\n\nlet sharedRuntime: LocalVoiceRuntimeClient | undefined;\n\nexport function getLocalVoiceRuntimeClient(): LocalVoiceRuntimeClient {\n sharedRuntime ??= new LocalVoiceRuntimeClient();\n return sharedRuntime;\n}\n\nexport function resetLocalVoiceRuntimeForTests(): void {\n sharedRuntime?.stop();\n sharedRuntime = undefined;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-dispatcher.js","names":[],"sources":["../../../../src/voice/local/runtime-dispatcher.ts"],"sourcesContent":["export interface RuntimeDispatchRequest {\n id: number;\n method: string;\n}\n\nexport function createRuntimeDispatcher<T extends RuntimeDispatchRequest>(options: {\n execute: (request: T) => Promise<unknown>;\n sendResult: (request: T, result: unknown) => void;\n sendError: (request: T, error: unknown) => void;\n}): (request: T) => void {\n let queue = Promise.resolve();\n const run = async (request: T) => {\n try {\n options.sendResult(request, await options.execute(request));\n } catch (error) {\n options.sendError(request, error);\n }\n };\n\n return (request) => {\n if (request.method === 'health') {\n void run(request);\n return;\n }\n queue = queue.then(() => run(request));\n };\n}\n"],"mappings":";AAKA,SAAgB,wBAA0D,SAIjD;CACvB,IAAI,QAAQ,QAAQ,SAAS;CAC7B,MAAM,MAAM,OAAO,YAAe;AAChC,MAAI;AACF,WAAQ,WAAW,SAAS,MAAM,QAAQ,QAAQ,QAAQ,CAAC;WACpD,OAAO;AACd,WAAQ,UAAU,SAAS,MAAM;;;AAIrC,SAAQ,YAAY;AAClB,MAAI,QAAQ,WAAW,UAAU;AAC1B,OAAI,QAAQ;AACjB;;AAEF,UAAQ,MAAM,WAAW,IAAI,QAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-worker.js","names":[],"sources":["../../../../src/voice/local/runtime-worker.ts"],"sourcesContent":["import { createInterface } from 'node:readline';\nimport { join, resolve, sep } from 'node:path';\nimport { mkdir, rm } from 'node:fs/promises';\n\nimport { EnvHttpProxyAgent, RetryAgent, setGlobalDispatcher } from 'undici';\n\nimport { getLocalVoiceModel, resolveLocalVoiceModelDir } from './models.js';\nimport { downloadLocalVoiceModelFiles } from './model-files.js';\nimport { createRuntimeDispatcher } from './runtime-dispatcher.js';\n\ntype RuntimeRequest = { id: number; method: string; params?: Record<string, unknown> };\ntype AsrPipeline = (audio: Float32Array, options?: Record<string, unknown>) => Promise<unknown>;\n\nconst pipelines = new Map<string, Promise<AsrPipeline>>();\n\ninterface SherpaOfflineStream {\n acceptWaveform(input: { sampleRate: number; samples: Float32Array }): void;\n setOption?(key: string, value: string): void;\n}\n\ninterface SherpaResult {\n text?: string;\n lang?: string;\n emotion?: string;\n event?: string;\n}\n\ninterface SherpaOfflineRecognizer {\n createStream(): SherpaOfflineStream;\n decodeAsync?(stream: SherpaOfflineStream): Promise<SherpaResult>;\n decode(stream: SherpaOfflineStream): void;\n getResult(stream: SherpaOfflineStream): SherpaResult;\n}\n\ntype SherpaModule = {\n OfflineRecognizer: new (config: Record<string, unknown>) => SherpaOfflineRecognizer;\n};\n\nconst sherpaRecognizers = new Map<string, Promise<SherpaOfflineRecognizer>>();\n\nconst networkAgent = new RetryAgent(new EnvHttpProxyAgent(), {\n maxRetries: 4,\n minTimeout: 500,\n maxTimeout: 8_000,\n timeoutFactor: 2,\n retryAfter: true,\n});\nsetGlobalDispatcher(networkAgent);\n\nfunction normalizeRemoteHost(value: string): string {\n const url = new URL(value);\n if (url.username || url.password) {\n throw new Error('Local voice model endpoint must not contain credentials');\n }\n if (url.protocol !== 'https:' && url.hostname !== '127.0.0.1' && url.hostname !== 'localhost') {\n throw new Error('Local voice model endpoint must use HTTPS');\n }\n url.pathname = `${url.pathname.replace(/\\/+$/, '')}/`;\n return url.toString();\n}\n\nfunction resolveRemoteHosts(): string[] {\n const configured = process.env.XOPC_VOICE_MODEL_ENDPOINT?.trim()\n || process.env.HF_ENDPOINT?.trim();\n if (configured) return [normalizeRemoteHost(configured)];\n return [\n normalizeRemoteHost('https://xopc.ai/api/voice/models'),\n normalizeRemoteHost('https://huggingface.co'),\n ];\n}\n\nfunction serializeError(error: unknown): { message: string; code?: string; cause?: string } {\n if (!(error instanceof Error)) return { message: String(error) };\n const withCode = error as Error & { code?: unknown; cause?: unknown };\n const nested = withCode.cause;\n const nestedMessage = nested instanceof Error ? nested.message : undefined;\n const nestedCode = nested && typeof nested === 'object' && 'code' in nested\n ? String((nested as { code?: unknown }).code ?? '')\n : undefined;\n return {\n message: error.message,\n ...(typeof withCode.code === 'string' ? { code: withCode.code } : {}),\n ...(nestedCode ? { code: nestedCode } : {}),\n ...(nestedMessage && nestedMessage !== error.message ? { cause: nestedMessage } : {}),\n };\n}\n\nfunction send(message: Record<string, unknown>): void {\n process.stdout.write(`${JSON.stringify(message)}\\n`);\n}\n\nasync function loadPipeline(\n modelId: string,\n allowRemote: boolean,\n cacheDir = resolveLocalVoiceModelDir(modelId),\n onProgress?: (data: Record<string, unknown>) => void,\n): Promise<AsrPipeline> {\n const key = `${modelId}:${cacheDir}`;\n const existing = pipelines.get(key);\n if (existing) return existing;\n const model = getLocalVoiceModel(modelId);\n if (model.engine !== 'transformers.js') {\n throw new Error(`Model ${model.id} does not use the Transformers.js engine`);\n }\n const promise = (async () => {\n const transformers = await import('@huggingface/transformers');\n transformers.env.cacheDir = cacheDir;\n transformers.env.allowRemoteModels = allowRemote;\n transformers.env.allowLocalModels = true;\n const remoteHosts = allowRemote ? resolveRemoteHosts() : [normalizeRemoteHost('https://xopc.ai')];\n let lastError: unknown;\n for (const [index, remoteHost] of remoteHosts.entries()) {\n transformers.env.remoteHost = remoteHost;\n try {\n const result = await transformers.pipeline('automatic-speech-recognition', model.repository, {\n revision: model.revision,\n dtype: model.dtype,\n progress_callback: onProgress,\n });\n return result as unknown as AsrPipeline;\n } catch (error) {\n lastError = error;\n if (index + 1 < remoteHosts.length) {\n await rm(cacheDir, { recursive: true, force: true });\n await mkdir(cacheDir, { recursive: true });\n }\n }\n }\n throw lastError;\n })();\n pipelines.set(key, promise);\n try {\n return await promise;\n } catch (error) {\n pipelines.delete(key);\n throw error;\n }\n}\n\nfunction normalizeSenseVoiceLanguage(language: unknown): string {\n if (typeof language !== 'string') return 'auto';\n const value = language.trim().toLowerCase().replace('_', '-');\n if (!value || value === 'auto') return 'auto';\n if (value === 'cmn' || value.startsWith('zh')) return 'zh';\n if (value === 'cantonese' || value.startsWith('yue')) return 'yue';\n if (value.startsWith('en')) return 'en';\n if (value.startsWith('ja')) return 'ja';\n if (value.startsWith('ko')) return 'ko';\n return 'auto';\n}\n\nfunction cleanSenseVoiceTag(value: string | undefined): string | undefined {\n const cleaned = value?.replace(/^<\\|/, '').replace(/\\|>$/, '').trim();\n return cleaned || undefined;\n}\n\nasync function loadSherpaRecognizer(\n modelId: string,\n language: string,\n): Promise<SherpaOfflineRecognizer> {\n const key = `${modelId}:${language}`;\n const existing = sherpaRecognizers.get(key);\n if (existing) return existing;\n const model = getLocalVoiceModel(modelId);\n if (model.engine !== 'sherpa-onnx') {\n throw new Error(`Model ${model.id} does not use the sherpa-onnx engine`);\n }\n const modelDir = resolveLocalVoiceModelDir(model.id);\n const promise = (async () => {\n const imported = await import('sherpa-onnx-node');\n const sherpa = ((imported as { default?: SherpaModule }).default ?? imported) as SherpaModule;\n return new sherpa.OfflineRecognizer({\n featConfig: { sampleRate: 16_000, featureDim: 80 },\n modelConfig: {\n senseVoice: {\n model: join(modelDir, 'model.int8.onnx'),\n language,\n useInverseTextNormalization: 1,\n },\n tokens: join(modelDir, 'tokens.txt'),\n numThreads: Math.max(1, Math.min(4, Number(process.env.XOPC_VOICE_THREADS) || 2)),\n provider: 'cpu',\n debug: 0,\n },\n });\n })();\n sherpaRecognizers.set(key, promise);\n try {\n return await promise;\n } catch (error) {\n sherpaRecognizers.delete(key);\n throw error;\n }\n}\n\nasync function transcribeWithSherpa(\n modelId: string,\n audio: Float32Array,\n language: unknown,\n): Promise<{ text: string; language?: string; emotion?: string; event?: string }> {\n const recognizer = await loadSherpaRecognizer(modelId, normalizeSenseVoiceLanguage(language));\n const stream = recognizer.createStream();\n stream.acceptWaveform({ sampleRate: 16_000, samples: audio });\n const result = recognizer.decodeAsync\n ? await recognizer.decodeAsync(stream)\n : (recognizer.decode(stream), recognizer.getResult(stream));\n return {\n text: String(result.text ?? '').trim(),\n ...(cleanSenseVoiceTag(result.lang) ? { language: cleanSenseVoiceTag(result.lang) } : {}),\n ...(cleanSenseVoiceTag(result.emotion) ? { emotion: cleanSenseVoiceTag(result.emotion) } : {}),\n ...(cleanSenseVoiceTag(result.event) ? { event: cleanSenseVoiceTag(result.event) } : {}),\n };\n}\n\nasync function handle(request: RuntimeRequest): Promise<unknown> {\n const params = request.params ?? {};\n if (request.method === 'health') {\n return {\n ok: true,\n protocolVersion: 2,\n engine: 'transformers.js+sherpa-onnx',\n engines: ['transformers.js', 'sherpa-onnx'],\n };\n }\n if (request.method === 'model.install') {\n const modelId = String(params.modelId ?? '');\n const modelDir = resolve(resolveLocalVoiceModelDir(modelId));\n const requestedCacheDir = typeof params.cacheDir === 'string' ? resolve(params.cacheDir) : modelDir;\n const allowedPrefix = `${resolve(modelDir, '..')}${sep}`;\n if (requestedCacheDir !== modelDir && !requestedCacheDir.startsWith(allowedPrefix)) {\n throw new Error('Local voice model cache directory is outside the managed root');\n }\n const model = getLocalVoiceModel(modelId);\n if (model.engine === 'sherpa-onnx') {\n await downloadLocalVoiceModelFiles({\n model,\n destinationDir: requestedCacheDir,\n remoteHosts: resolveRemoteHosts(),\n onProgress: (data) => send({ id: request.id, event: 'progress', data }),\n });\n } else {\n await loadPipeline(\n modelId,\n true,\n requestedCacheDir,\n (data) => send({ id: request.id, event: 'progress', data }),\n );\n pipelines.delete(`${modelId}:${requestedCacheDir}`);\n }\n return { installed: true, modelId };\n }\n if (request.method === 'model.unload') {\n const modelId = String(params.modelId ?? '');\n for (const key of pipelines.keys()) {\n if (key.startsWith(`${modelId}:`)) pipelines.delete(key);\n }\n for (const key of sherpaRecognizers.keys()) {\n if (key.startsWith(`${modelId}:`)) sherpaRecognizers.delete(key);\n }\n return { unloaded: true };\n }\n if (request.method === 'transcribe') {\n const modelId = String(params.modelId ?? '');\n const bytes = Buffer.from(String(params.audioBase64 ?? ''), 'base64');\n const copied = Uint8Array.from(bytes);\n const audio = new Float32Array(copied.buffer);\n const language = typeof params.language === 'string' && params.language ? params.language : undefined;\n const model = getLocalVoiceModel(modelId);\n if (model.engine === 'sherpa-onnx') {\n return { ...(await transcribeWithSherpa(model.id, audio, language)), modelId };\n }\n const pipeline = await loadPipeline(modelId, false);\n const output = await pipeline(audio, {\n task: 'transcribe',\n ...(language ? { language } : {}),\n chunk_length_s: 30,\n stride_length_s: 5,\n return_timestamps: false,\n });\n const text = output && typeof output === 'object' && 'text' in output\n ? String((output as { text?: unknown }).text ?? '')\n : '';\n return { text: text.trim(), modelId };\n }\n throw new Error(`Unknown local voice runtime method: ${request.method}`);\n}\n\nconst lines = createInterface({ input: process.stdin });\nconst dispatch = createRuntimeDispatcher<RuntimeRequest>({\n execute: handle,\n sendResult: (request, result) => send({ id: request.id, result }),\n sendError: (request, error) => send({ id: request.id, error: serializeError(error) }),\n});\nlines.on('line', (line) => {\n let request: RuntimeRequest;\n try {\n request = JSON.parse(line) as RuntimeRequest;\n } catch {\n return;\n }\n dispatch(request);\n});\nlines.once('close', () => {\n void networkAgent.close().finally(() => process.exit(0));\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wav.js","names":[],"sources":["../../../../src/voice/local/wav.ts"],"sourcesContent":["export interface DecodedPcmAudio {\n samples: Float32Array;\n sampleRate: number;\n durationSeconds: number;\n}\n\nfunction readChunkId(buffer: Buffer, offset: number): string {\n return buffer.toString('ascii', offset, offset + 4);\n}\n\nfunction resampleLinear(input: Float32Array, sourceRate: number, targetRate: number): Float32Array {\n if (sourceRate === targetRate) return input;\n const outputLength = Math.max(1, Math.round((input.length * targetRate) / sourceRate));\n const output = new Float32Array(outputLength);\n const ratio = sourceRate / targetRate;\n for (let i = 0; i < outputLength; i += 1) {\n const sourcePosition = i * ratio;\n const left = Math.min(input.length - 1, Math.floor(sourcePosition));\n const right = Math.min(input.length - 1, left + 1);\n const fraction = sourcePosition - left;\n output[i] = input[left]! * (1 - fraction) + input[right]! * fraction;\n }\n return output;\n}\n\nexport function decodeWavToMonoFloat32(buffer: Buffer, targetRate = 16_000): DecodedPcmAudio {\n if (buffer.length < 44 || readChunkId(buffer, 0) !== 'RIFF' || readChunkId(buffer, 8) !== 'WAVE') {\n throw new Error('Local STT currently requires PCM WAV audio');\n }\n\n let offset = 12;\n let format: { audioFormat: number; channels: number; sampleRate: number; bitsPerSample: number } | undefined;\n let dataOffset = -1;\n let dataLength = 0;\n while (offset + 8 <= buffer.length) {\n const id = readChunkId(buffer, offset);\n const length = buffer.readUInt32LE(offset + 4);\n const bodyOffset = offset + 8;\n if (bodyOffset + length > buffer.length) break;\n if (id === 'fmt ' && length >= 16) {\n format = {\n audioFormat: buffer.readUInt16LE(bodyOffset),\n channels: buffer.readUInt16LE(bodyOffset + 2),\n sampleRate: buffer.readUInt32LE(bodyOffset + 4),\n bitsPerSample: buffer.readUInt16LE(bodyOffset + 14),\n };\n } else if (id === 'data') {\n dataOffset = bodyOffset;\n dataLength = length;\n break;\n }\n offset = bodyOffset + length + (length % 2);\n }\n\n if (!format || dataOffset < 0 || dataLength === 0) {\n throw new Error('WAV audio is missing format or data chunks');\n }\n if (format.channels < 1 || format.channels > 8 || format.sampleRate < 8_000) {\n throw new Error('Unsupported WAV channel count or sample rate');\n }\n const bytesPerSample = format.bitsPerSample / 8;\n if (!Number.isInteger(bytesPerSample) || bytesPerSample < 2) {\n throw new Error(`Unsupported WAV bit depth: ${format.bitsPerSample}`);\n }\n const frameBytes = bytesPerSample * format.channels;\n const frameCount = Math.floor(dataLength / frameBytes);\n const mono = new Float32Array(frameCount);\n for (let frame = 0; frame < frameCount; frame += 1) {\n let sum = 0;\n for (let channel = 0; channel < format.channels; channel += 1) {\n const sampleOffset = dataOffset + frame * frameBytes + channel * bytesPerSample;\n if (format.audioFormat === 1 && format.bitsPerSample === 16) {\n sum += buffer.readInt16LE(sampleOffset) / 32768;\n } else if (format.audioFormat === 3 && format.bitsPerSample === 32) {\n sum += buffer.readFloatLE(sampleOffset);\n } else {\n throw new Error(`Unsupported WAV encoding: format ${format.audioFormat}, ${format.bitsPerSample}-bit`);\n }\n }\n mono[frame] = Math.max(-1, Math.min(1, sum / format.channels));\n }\n\n const samples = resampleLinear(mono, format.sampleRate, targetRate);\n return {\n samples,\n sampleRate: targetRate,\n durationSeconds: frameCount / format.sampleRate,\n };\n}\n"],"mappings":";AAMA,SAAS,YAAY,QAAgB,QAAwB;AAC3D,QAAO,OAAO,SAAS,SAAS,QAAQ,SAAS,EAAE;;AAGrD,SAAS,eAAe,OAAqB,YAAoB,YAAkC;AACjG,KAAI,eAAe,WAAY,QAAO;CACtC,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,MAAO,MAAM,SAAS,aAAc,WAAW,CAAC;CACtF,MAAM,SAAS,IAAI,aAAa,aAAa;CAC7C,MAAM,QAAQ,aAAa;AAC3B,MAAK,IAAI,IAAI,GAAG,IAAI,cAAc,KAAK,GAAG;EACxC,MAAM,iBAAiB,IAAI;EAC3B,MAAM,OAAO,KAAK,IAAI,MAAM,SAAS,GAAG,KAAK,MAAM,eAAe,CAAC;EACnE,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS,GAAG,OAAO,EAAE;EAClD,MAAM,WAAW,iBAAiB;AAClC,SAAO,KAAK,MAAM,SAAU,IAAI,YAAY,MAAM,SAAU;;AAE9D,QAAO;;AAGT,SAAgB,uBAAuB,QAAgB,aAAa,MAAyB;AAC3F,KAAI,OAAO,SAAS,MAAM,YAAY,QAAQ,EAAE,KAAK,UAAU,YAAY,QAAQ,EAAE,KAAK,OACxF,OAAM,IAAI,MAAM,6CAA6C;CAG/D,IAAI,SAAS;CACb,IAAI;CACJ,IAAI,aAAa;CACjB,IAAI,aAAa;AACjB,QAAO,SAAS,KAAK,OAAO,QAAQ;EAClC,MAAM,KAAK,YAAY,QAAQ,OAAO;EACtC,MAAM,SAAS,OAAO,aAAa,SAAS,EAAE;EAC9C,MAAM,aAAa,SAAS;AAC5B,MAAI,aAAa,SAAS,OAAO,OAAQ;AACzC,MAAI,OAAO,UAAU,UAAU,GAC7B,UAAS;GACP,aAAa,OAAO,aAAa,WAAW;GAC5C,UAAU,OAAO,aAAa,aAAa,EAAE;GAC7C,YAAY,OAAO,aAAa,aAAa,EAAE;GAC/C,eAAe,OAAO,aAAa,aAAa,GAAG;GACpD;WACQ,OAAO,QAAQ;AACxB,gBAAa;AACb,gBAAa;AACb;;AAEF,WAAS,aAAa,SAAU,SAAS;;AAG3C,KAAI,CAAC,UAAU,aAAa,KAAK,eAAe,EAC9C,OAAM,IAAI,MAAM,6CAA6C;AAE/D,KAAI,OAAO,WAAW,KAAK,OAAO,WAAW,KAAK,OAAO,aAAa,IACpE,OAAM,IAAI,MAAM,+CAA+C;CAEjE,MAAM,iBAAiB,OAAO,gBAAgB;AAC9C,KAAI,CAAC,OAAO,UAAU,eAAe,IAAI,iBAAiB,EACxD,OAAM,IAAI,MAAM,8BAA8B,OAAO,gBAAgB;CAEvE,MAAM,aAAa,iBAAiB,OAAO;CAC3C,MAAM,aAAa,KAAK,MAAM,aAAa,WAAW;CACtD,MAAM,OAAO,IAAI,aAAa,WAAW;AACzC,MAAK,IAAI,QAAQ,GAAG,QAAQ,YAAY,SAAS,GAAG;EAClD,IAAI,MAAM;AACV,OAAK,IAAI,UAAU,GAAG,UAAU,OAAO,UAAU,WAAW,GAAG;GAC7D,MAAM,eAAe,aAAa,QAAQ,aAAa,UAAU;AACjE,OAAI,OAAO,gBAAgB,KAAK,OAAO,kBAAkB,GACvD,QAAO,OAAO,YAAY,aAAa,GAAG;YACjC,OAAO,gBAAgB,KAAK,OAAO,kBAAkB,GAC9D,QAAO,OAAO,YAAY,aAAa;OAEvC,OAAM,IAAI,MAAM,oCAAoC,OAAO,YAAY,IAAI,OAAO,cAAc,MAAM;;AAG1G,OAAK,SAAS,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,MAAM,OAAO,SAAS,CAAC;;AAIhE,QAAO;EACL,SAFc,eAAe,MAAM,OAAO,YAAY,WAE/C;EACP,YAAY;EACZ,iBAAiB,aAAa,OAAO;EACtC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"builtin.js","names":[],"sources":["../../../../src/voice/metadata/builtin.ts"],"sourcesContent":["import { registerVoiceProviderMetadata } from './registry.js';\nimport type { VoiceOptionMetadata, VoiceProviderMetadata } from './types.js';\nimport { MINIMAX_TTS_MODELS, MINIMAX_TTS_VOICES, OPENAI_TTS_MODELS, OPENAI_TTS_VOICES } from '../tts/providers/index.js';\n\nfunction titleCase(value: string): string {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction options(values: readonly string[], names?: Record<string, string>): VoiceOptionMetadata[] {\n return values.map((id) => ({ id, name: names?.[id] ?? titleCase(id) }));\n}\n\nconst alibabaSttModels = [\n { id: 'paraformer-v2', name: 'Paraformer v2 (Recommended)' },\n { id: 'paraformer-v1', name: 'Paraformer v1' },\n { id: 'paraformer-8k-v1', name: 'Paraformer 8k v1 (Phone)' },\n { id: 'paraformer-mtl-v1', name: 'Paraformer MTL v1 (Multilingual)' },\n];\n\nconst localSttModels = [\n {\n id: 'sensevoice-small',\n name: 'SenseVoice Small 中文(推荐)',\n description: '约 230 MB · 普通话、粤语、中英混说',\n },\n { id: 'tiny', name: 'Whisper Tiny (Fastest)', description: 'About 45 MB' },\n { id: 'base', name: 'Whisper Base (Multilingual)', description: 'About 80 MB' },\n { id: 'small', name: 'Whisper Small (Higher quality)', description: 'About 245 MB' },\n];\n\nconst alibabaTtsModels = [\n { id: 'qwen-tts', name: 'Qwen TTS (Recommended)' },\n { id: 'qwen-tts-realtime', name: 'Qwen TTS Realtime' },\n { id: 'qwen3-tts-flash', name: 'Qwen3 TTS Flash' },\n { id: 'qwen3-tts-instruct-flash', name: 'Qwen3 TTS Instruct Flash' },\n];\n\nconst alibabaTtsVoices = [\n { id: 'Cherry', name: 'Cherry' },\n { id: 'Ethan', name: 'Ethan' },\n { id: 'Serena', name: 'Serena' },\n { id: 'Chelsie', name: 'Chelsie' },\n { id: 'longxiaochun', name: 'Long Xiao Chun (龙小春)' },\n { id: 'longxiaobai', name: 'Long Xiao Bai (龙小白)' },\n { id: 'longwan', name: 'Long Wan (龙婉)' },\n { id: 'longcheng', name: 'Long Cheng (龙呈)' },\n];\n\nconst edgeVoices = [\n { id: 'en-US-MichelleNeural', name: 'Michelle (US English, Female)' },\n { id: 'en-US-JennyNeural', name: 'Jenny (US English, Female)' },\n { id: 'en-US-GuyNeural', name: 'Guy (US English, Male)' },\n { id: 'en-GB-SoniaNeural', name: 'Sonia (UK English, Female)' },\n { id: 'en-GB-RyanNeural', name: 'Ryan (UK English, Male)' },\n { id: 'zh-CN-XiaoxiaoNeural', name: '晓晓 (中文, 女声)' },\n { id: 'zh-CN-YunyangNeural', name: '云扬 (中文, 男声)' },\n { id: 'zh-CN-XiaoyiNeural', name: '晓伊 (中文, 女声)' },\n { id: 'ja-JP-NanamiNeural', name: '七海 (日本語, 女性)' },\n { id: 'de-DE-KatjaNeural', name: 'Katja (Deutsch, Weiblich)' },\n { id: 'fr-FR-DeniseNeural', name: 'Denise (Français, Féminin)' },\n { id: 'es-ES-ElviraNeural', name: 'Elvira (Español, Femenino)' },\n];\n\nexport const builtinVoiceProviderMetadata: VoiceProviderMetadata[] = [\n {\n id: 'xopc-local',\n capability: 'stt',\n displayName: 'xopc Local Voice',\n description: 'Private on-device Chinese and multilingual transcription. Audio never leaves this device.',\n aliases: ['local'],\n models: localSttModels,\n fields: [\n { key: 'model', label: 'Model', type: 'select', options: localSttModels, defaultValue: 'sensevoice-small' },\n { key: 'language', label: 'Language hint', type: 'string', placeholder: 'zh' },\n ],\n diagnostics: { requiresApiKey: false, configPath: 'tools.media.audio.providers.xopc-local' },\n },\n {\n id: 'alibaba',\n capability: 'stt',\n displayName: 'Alibaba DashScope',\n description: 'DashScope Paraformer speech-to-text, strong Chinese recognition.',\n aliases: ['dashscope', 'paraformer'],\n models: alibabaSttModels,\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true, placeholder: 'sk-...', description: 'DASHSCOPE_API_KEY' },\n { key: 'model', label: 'Model', type: 'select', options: alibabaSttModels, defaultValue: 'paraformer-v2' },\n { key: 'language', label: 'Language hint', type: 'string', placeholder: 'zh' },\n ],\n diagnostics: { requiresApiKey: true, envKeys: ['DASHSCOPE_API_KEY'], configPath: 'tools.media.audio.providers.alibaba' },\n },\n {\n id: 'openai',\n capability: 'stt',\n displayName: 'OpenAI Whisper',\n description: 'OpenAI Whisper transcription endpoint.',\n models: [{ id: 'whisper-1', name: 'Whisper-1' }],\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true, placeholder: 'sk-...', description: 'OPENAI_API_KEY' },\n { key: 'model', label: 'Model', type: 'select', options: [{ id: 'whisper-1', name: 'Whisper-1' }], defaultValue: 'whisper-1' },\n { key: 'baseUrl', label: 'Base URL', type: 'string', placeholder: 'https://api.openai.com/v1' },\n { key: 'language', label: 'Language hint', type: 'string', placeholder: 'en' },\n { key: 'prompt', label: 'Prompt', type: 'textarea' },\n ],\n diagnostics: { requiresApiKey: true, envKeys: ['OPENAI_API_KEY'], configPath: 'tools.media.audio.providers.openai' },\n },\n {\n id: 'openai',\n capability: 'tts',\n displayName: 'OpenAI',\n description: 'OpenAI speech synthesis with multiple voices.',\n models: options(OPENAI_TTS_MODELS, {\n 'gpt-4o-mini-tts': 'GPT-4o Mini TTS (Latest)',\n 'tts-1': 'TTS-1 (Fast)',\n 'tts-1-hd': 'TTS-1 HD (High Quality)',\n }),\n voices: options(OPENAI_TTS_VOICES),\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true, placeholder: 'sk-...', description: 'OPENAI_API_KEY' },\n { key: 'model', label: 'Model', type: 'select', options: options(OPENAI_TTS_MODELS), defaultValue: 'tts-1' },\n { key: 'voice', label: 'Voice', type: 'select', options: options(OPENAI_TTS_VOICES), defaultValue: 'alloy' },\n { key: 'baseUrl', label: 'Base URL', type: 'string', placeholder: 'https://api.openai.com/v1' },\n ],\n diagnostics: { requiresApiKey: true, envKeys: ['OPENAI_API_KEY'], configPath: 'messages.tts.providers.openai' },\n },\n {\n id: 'alibaba',\n capability: 'tts',\n displayName: 'Alibaba DashScope',\n description: 'DashScope Qwen TTS, strong Chinese voice quality.',\n models: alibabaTtsModels,\n voices: alibabaTtsVoices,\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true, placeholder: 'sk-...', description: 'DASHSCOPE_API_KEY' },\n { key: 'model', label: 'Model', type: 'select', options: alibabaTtsModels, defaultValue: 'qwen-tts' },\n { key: 'voice', label: 'Voice', type: 'select', options: alibabaTtsVoices, defaultValue: 'longxiaochun' },\n ],\n diagnostics: { requiresApiKey: true, envKeys: ['DASHSCOPE_API_KEY'], configPath: 'messages.tts.providers.alibaba' },\n },\n {\n id: 'minimax',\n capability: 'tts',\n displayName: 'MiniMax',\n description: 'MiniMax high-quality async text-to-speech.',\n models: options(MINIMAX_TTS_MODELS),\n voices: options(MINIMAX_TTS_VOICES),\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true, placeholder: 'eyJ...', description: 'MINIMAX_API_KEY' },\n { key: 'model', label: 'Model', type: 'select', options: options(MINIMAX_TTS_MODELS), defaultValue: 'speech-2.8-hd' },\n { key: 'voice', label: 'Voice', type: 'select', options: options(MINIMAX_TTS_VOICES), defaultValue: 'male-qn-qingse' },\n { key: 'baseUrl', label: 'Base URL', type: 'string', placeholder: 'https://api.minimaxi.com/v1' },\n { key: 'groupId', label: 'Group ID', type: 'string' },\n ],\n diagnostics: { requiresApiKey: true, envKeys: ['MINIMAX_API_KEY'], configPath: 'messages.tts.providers.minimax' },\n },\n {\n id: 'edge',\n capability: 'tts',\n displayName: 'Microsoft Edge',\n description: 'Free Edge TTS endpoint, no API key required.',\n models: [{ id: 'edge-default', name: 'Edge TTS (Free)' }],\n voices: edgeVoices,\n fields: [\n { key: 'voice', label: 'Voice', type: 'select', options: edgeVoices, defaultValue: 'en-US-MichelleNeural' },\n { key: 'lang', label: 'Language', type: 'string', placeholder: 'en-US' },\n { key: 'outputFormat', label: 'Output format', type: 'string', placeholder: 'audio-24khz-48kbitrate-mono-mp3' },\n { key: 'rate', label: 'Rate', type: 'string', placeholder: '+0%' },\n { key: 'pitch', label: 'Pitch', type: 'string', placeholder: '+0Hz' },\n { key: 'volume', label: 'Volume', type: 'string', placeholder: '+0%' },\n { key: 'proxy', label: 'Proxy', type: 'string' },\n ],\n diagnostics: { requiresApiKey: false, configPath: 'messages.tts.providers.edge' },\n },\n];\n\nfor (const metadata of builtinVoiceProviderMetadata) {\n registerVoiceProviderMetadata(metadata);\n}\n"],"mappings":";;;;;AAIA,SAAS,UAAU,OAAuB;AACxC,QAAO,MAAM,OAAO,EAAE,CAAC,aAAa,GAAG,MAAM,MAAM,EAAE;;AAGvD,SAAS,QAAQ,QAA2B,OAAuD;AACjG,QAAO,OAAO,KAAK,QAAQ;EAAE;EAAI,MAAM,QAAQ,OAAO,UAAU,GAAG;EAAE,EAAE;;AAGzE,MAAM,mBAAmB;CACvB;EAAE,IAAI;EAAiB,MAAM;EAA+B;CAC5D;EAAE,IAAI;EAAiB,MAAM;EAAiB;CAC9C;EAAE,IAAI;EAAoB,MAAM;EAA4B;CAC5D;EAAE,IAAI;EAAqB,MAAM;EAAoC;CACtE;AAED,MAAM,iBAAiB;CACrB;EACE,IAAI;EACJ,MAAM;EACN,aAAa;EACd;CACD;EAAE,IAAI;EAAQ,MAAM;EAA0B,aAAa;EAAe;CAC1E;EAAE,IAAI;EAAQ,MAAM;EAA+B,aAAa;EAAe;CAC/E;EAAE,IAAI;EAAS,MAAM;EAAkC,aAAa;EAAgB;CACrF;AAED,MAAM,mBAAmB;CACvB;EAAE,IAAI;EAAY,MAAM;EAA0B;CAClD;EAAE,IAAI;EAAqB,MAAM;EAAqB;CACtD;EAAE,IAAI;EAAmB,MAAM;EAAmB;CAClD;EAAE,IAAI;EAA4B,MAAM;EAA4B;CACrE;AAED,MAAM,mBAAmB;CACvB;EAAE,IAAI;EAAU,MAAM;EAAU;CAChC;EAAE,IAAI;EAAS,MAAM;EAAS;CAC9B;EAAE,IAAI;EAAU,MAAM;EAAU;CAChC;EAAE,IAAI;EAAW,MAAM;EAAW;CAClC;EAAE,IAAI;EAAgB,MAAM;EAAwB;CACpD;EAAE,IAAI;EAAe,MAAM;EAAuB;CAClD;EAAE,IAAI;EAAW,MAAM;EAAiB;CACxC;EAAE,IAAI;EAAa,MAAM;EAAmB;CAC7C;AAED,MAAM,aAAa;CACjB;EAAE,IAAI;EAAwB,MAAM;EAAiC;CACrE;EAAE,IAAI;EAAqB,MAAM;EAA8B;CAC/D;EAAE,IAAI;EAAmB,MAAM;EAA0B;CACzD;EAAE,IAAI;EAAqB,MAAM;EAA8B;CAC/D;EAAE,IAAI;EAAoB,MAAM;EAA2B;CAC3D;EAAE,IAAI;EAAwB,MAAM;EAAe;CACnD;EAAE,IAAI;EAAuB,MAAM;EAAe;CAClD;EAAE,IAAI;EAAsB,MAAM;EAAe;CACjD;EAAE,IAAI;EAAsB,MAAM;EAAgB;CAClD;EAAE,IAAI;EAAqB,MAAM;EAA6B;CAC9D;EAAE,IAAI;EAAsB,MAAM;EAA8B;CAChE;EAAE,IAAI;EAAsB,MAAM;EAA8B;CACjE;AAED,MAAa,+BAAwD;CACnE;EACE,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,SAAS,CAAC,QAAQ;EAClB,QAAQ;EACR,QAAQ,CACN;GAAE,KAAK;GAAS,OAAO;GAAS,MAAM;GAAU,SAAS;GAAgB,cAAc;GAAoB,EAC3G;GAAE,KAAK;GAAY,OAAO;GAAiB,MAAM;GAAU,aAAa;GAAM,CAC/E;EACD,aAAa;GAAE,gBAAgB;GAAO,YAAY;GAA0C;EAC7F;CACD;EACE,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,SAAS,CAAC,aAAa,aAAa;EACpC,QAAQ;EACR,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM,aAAa;IAAU,aAAa;IAAqB;GAC5H;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,SAAS;IAAkB,cAAc;IAAiB;GAC1G;IAAE,KAAK;IAAY,OAAO;IAAiB,MAAM;IAAU,aAAa;IAAM;GAC/E;EACD,aAAa;GAAE,gBAAgB;GAAM,SAAS,CAAC,oBAAoB;GAAE,YAAY;GAAuC;EACzH;CACD;EACE,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,QAAQ,CAAC;GAAE,IAAI;GAAa,MAAM;GAAa,CAAC;EAChD,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM,aAAa;IAAU,aAAa;IAAkB;GACzH;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,SAAS,CAAC;KAAE,IAAI;KAAa,MAAM;KAAa,CAAC;IAAE,cAAc;IAAa;GAC9H;IAAE,KAAK;IAAW,OAAO;IAAY,MAAM;IAAU,aAAa;IAA6B;GAC/F;IAAE,KAAK;IAAY,OAAO;IAAiB,MAAM;IAAU,aAAa;IAAM;GAC9E;IAAE,KAAK;IAAU,OAAO;IAAU,MAAM;IAAY;GACrD;EACD,aAAa;GAAE,gBAAgB;GAAM,SAAS,CAAC,iBAAiB;GAAE,YAAY;GAAsC;EACrH;CACD;EACE,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,QAAQ,QAAQ,mBAAmB;GACjC,mBAAmB;GACnB,SAAS;GACT,YAAY;GACb,CAAC;EACF,QAAQ,QAAQ,kBAAkB;EAClC,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM,aAAa;IAAU,aAAa;IAAkB;GACzH;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,SAAS,QAAQ,kBAAkB;IAAE,cAAc;IAAS;GAC5G;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,SAAS,QAAQ,kBAAkB;IAAE,cAAc;IAAS;GAC5G;IAAE,KAAK;IAAW,OAAO;IAAY,MAAM;IAAU,aAAa;IAA6B;GAChG;EACD,aAAa;GAAE,gBAAgB;GAAM,SAAS,CAAC,iBAAiB;GAAE,YAAY;GAAiC;EAChH;CACD;EACE,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,QAAQ;EACR,QAAQ;EACR,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM,aAAa;IAAU,aAAa;IAAqB;GAC5H;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,SAAS;IAAkB,cAAc;IAAY;GACrG;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,SAAS;IAAkB,cAAc;IAAgB;GAC1G;EACD,aAAa;GAAE,gBAAgB;GAAM,SAAS,CAAC,oBAAoB;GAAE,YAAY;GAAkC;EACpH;CACD;EACE,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,QAAQ,QAAQ,mBAAmB;EACnC,QAAQ,QAAQ,mBAAmB;EACnC,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM,aAAa;IAAU,aAAa;IAAmB;GAC1H;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,SAAS,QAAQ,mBAAmB;IAAE,cAAc;IAAiB;GACrH;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,SAAS,QAAQ,mBAAmB;IAAE,cAAc;IAAkB;GACtH;IAAE,KAAK;IAAW,OAAO;IAAY,MAAM;IAAU,aAAa;IAA+B;GACjG;IAAE,KAAK;IAAW,OAAO;IAAY,MAAM;IAAU;GACtD;EACD,aAAa;GAAE,gBAAgB;GAAM,SAAS,CAAC,kBAAkB;GAAE,YAAY;GAAkC;EAClH;CACD;EACE,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,aAAa;EACb,QAAQ,CAAC;GAAE,IAAI;GAAgB,MAAM;GAAmB,CAAC;EACzD,QAAQ;EACR,QAAQ;GACN;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,SAAS;IAAY,cAAc;IAAwB;GAC3G;IAAE,KAAK;IAAQ,OAAO;IAAY,MAAM;IAAU,aAAa;IAAS;GACxE;IAAE,KAAK;IAAgB,OAAO;IAAiB,MAAM;IAAU,aAAa;IAAmC;GAC/G;IAAE,KAAK;IAAQ,OAAO;IAAQ,MAAM;IAAU,aAAa;IAAO;GAClE;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU,aAAa;IAAQ;GACrE;IAAE,KAAK;IAAU,OAAO;IAAU,MAAM;IAAU,aAAa;IAAO;GACtE;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU;GACjD;EACD,aAAa;GAAE,gBAAgB;GAAO,YAAY;GAA+B;EAClF;CACF;AAED,KAAK,MAAM,YAAY,6BACrB,+BAA8B,SAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","names":[],"sources":["../../../../src/voice/metadata/registry.ts"],"sourcesContent":["import type { VoiceCapability, VoiceProviderMetadata } from './types.js';\n\nconst registry = new Map<string, VoiceProviderMetadata>();\n\nfunction normalizeKey(capability: VoiceCapability, providerId: string): string {\n return `${capability}:${providerId.trim().toLowerCase()}`;\n}\n\nexport function registerVoiceProviderMetadata(metadata: VoiceProviderMetadata): () => void {\n const keys = [normalizeKey(metadata.capability, metadata.id)];\n for (const alias of metadata.aliases ?? []) {\n keys.push(normalizeKey(metadata.capability, alias));\n }\n for (const key of keys) {\n registry.set(key, metadata);\n }\n return () => {\n for (const key of keys) {\n if (registry.get(key) === metadata) {\n registry.delete(key);\n }\n }\n };\n}\n\nexport function getVoiceProviderMetadata(\n capability: VoiceCapability,\n providerId: string,\n): VoiceProviderMetadata | undefined {\n return registry.get(normalizeKey(capability, providerId));\n}\n\nexport function listVoiceProviderMetadata(capability?: VoiceCapability): VoiceProviderMetadata[] {\n const seen = new Set<VoiceProviderMetadata>();\n const result: VoiceProviderMetadata[] = [];\n for (const metadata of registry.values()) {\n if (seen.has(metadata)) continue;\n if (capability && metadata.capability !== capability) continue;\n seen.add(metadata);\n result.push(metadata);\n }\n return result;\n}\n\nexport function _clearVoiceProviderMetadataRegistryForTests(): void {\n registry.clear();\n}\n"],"mappings":";AAEA,MAAM,2BAAW,IAAI,KAAoC;AAEzD,SAAS,aAAa,YAA6B,YAA4B;AAC7E,QAAO,GAAG,WAAW,GAAG,WAAW,MAAM,CAAC,aAAa;;AAGzD,SAAgB,8BAA8B,UAA6C;CACzF,MAAM,OAAO,CAAC,aAAa,SAAS,YAAY,SAAS,GAAG,CAAC;AAC7D,MAAK,MAAM,SAAS,SAAS,WAAW,EAAE,CACxC,MAAK,KAAK,aAAa,SAAS,YAAY,MAAM,CAAC;AAErD,MAAK,MAAM,OAAO,KAChB,UAAS,IAAI,KAAK,SAAS;AAE7B,cAAa;AACX,OAAK,MAAM,OAAO,KAChB,KAAI,SAAS,IAAI,IAAI,KAAK,SACxB,UAAS,OAAO,IAAI;;;AAM5B,SAAgB,yBACd,YACA,YACmC;AACnC,QAAO,SAAS,IAAI,aAAa,YAAY,WAAW,CAAC;;AAG3D,SAAgB,0BAA0B,YAAuD;CAC/F,MAAM,uBAAO,IAAI,KAA4B;CAC7C,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,YAAY,SAAS,QAAQ,EAAE;AACxC,MAAI,KAAK,IAAI,SAAS,CAAE;AACxB,MAAI,cAAc,SAAS,eAAe,WAAY;AACtD,OAAK,IAAI,SAAS;AAClB,SAAO,KAAK,SAAS;;AAEvB,QAAO;;AAGT,SAAgB,8CAAoD;AAClE,UAAS,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"availability.js","names":[],"sources":["../../../../src/voice/stt/availability.ts"],"sourcesContent":["import type { STTConfig } from './types.js';\n\nfunction providerHasConfig(config: STTConfig, providerId: string): boolean {\n const provider = config.providers?.[providerId];\n if (provider && Object.keys(provider).length > 0) return true;\n return [...(config.models ?? []), ...(config.sharedModels ?? [])].some(\n (entry) => entry.provider === providerId && entry.capabilities?.includes('audio'),\n );\n}\n\n/**\n * Lightweight availability check for channel routing. Do not import the STT\n * factory/provider registry here; channel plugins call this at startup and the\n * provider registry pulls optional SDKs (e.g. openai) into Electron's dynamic\n * extension runtime path.\n */\nexport function isSTTAvailable(config?: STTConfig): boolean {\n if (!config?.enabled) return false;\n if (providerHasConfig(config, config.provider)) return true;\n if (config.fallback?.enabled) {\n return config.fallback.order.some((providerId) => providerHasConfig(config, providerId));\n }\n return false;\n}\n"],"mappings":";AAEA,SAAS,kBAAkB,QAAmB,YAA6B;CACzE,MAAM,WAAW,OAAO,YAAY;AACpC,KAAI,YAAY,OAAO,KAAK,SAAS,CAAC,SAAS,EAAG,QAAO;AACzD,QAAO,CAAC,GAAI,OAAO,UAAU,EAAE,EAAG,GAAI,OAAO,gBAAgB,EAAE,CAAE,CAAC,MAC/D,UAAU,MAAM,aAAa,cAAc,MAAM,cAAc,SAAS,QAAQ,CAClF;;;;;;;;AASH,SAAgB,eAAe,QAA6B;AAC1D,KAAI,CAAC,QAAQ,QAAS,QAAO;AAC7B,KAAI,kBAAkB,QAAQ,OAAO,SAAS,CAAE,QAAO;AACvD,KAAI,OAAO,UAAU,QACnB,QAAO,OAAO,SAAS,MAAM,MAAM,eAAe,kBAAkB,QAAQ,WAAW,CAAC;AAE1F,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-slice.js","names":[],"sources":["../../../../src/voice/stt/config-slice.ts"],"sourcesContent":["/**\n * STT config slice resolution — maps persisted config to per-provider raw config.\n *\n * Reads `tools.media.audio.providers.<id>` only — there is no legacy flat-key form.\n */\n\nimport type { STTConfig } from './types.js';\n\n/** Built-in env fallbacks when config slice has no apiKey. */\nexport const STT_LEGACY_ENV_KEYS: Record<string, string> = {\n openai: 'OPENAI_API_KEY',\n alibaba: 'DASHSCOPE_API_KEY',\n};\n\nfunction asRecord(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\n/** Collect provider-id → raw config entries from the `providers` map. */\nexport function collectSttProviderConfigEntries(\n config: Partial<STTConfig> | Record<string, unknown> | undefined,\n): Record<string, Record<string, unknown>> {\n const raw = (config ?? {}) as Record<string, unknown>;\n const providers = asRecord(raw.providers);\n if (!providers) return {};\n const entries: Record<string, Record<string, unknown>> = {};\n for (const [providerId, value] of Object.entries(providers)) {\n entries[providerId] = { ...(asRecord(value) ?? {}) };\n }\n return entries;\n}\n\n/** Resolve the raw config slice for one provider id. */\nexport function resolveSttProviderConfigSlice(\n providerId: string,\n config: Partial<STTConfig> | Record<string, unknown> | undefined,\n): Record<string, unknown> {\n return collectSttProviderConfigEntries(config)[providerId] ?? {};\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\nfunction readStringRecord(value: unknown): Record<string, string> | undefined {\n const record = asRecord(value);\n if (!record) {\n return undefined;\n }\n const out: Record<string, string> = {};\n for (const [key, entry] of Object.entries(record)) {\n const text = trimToUndefined(entry);\n if (text) {\n out[key] = text;\n }\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\n/** Read normalized provider fields from a config slice or model entry override. */\nexport function readSttProviderFields(\n slice: Record<string, unknown>,\n entryOverride?: Record<string, unknown>,\n): {\n apiKey?: string;\n model?: string;\n baseUrl?: string;\n headers?: Record<string, string>;\n language?: string;\n prompt?: string;\n} {\n const merged = { ...slice, ...(entryOverride ?? {}) };\n return {\n apiKey: trimToUndefined(merged.apiKey),\n model: trimToUndefined(merged.model),\n baseUrl: trimToUndefined(merged.baseUrl),\n headers: readStringRecord(merged.headers),\n language: trimToUndefined(merged.language),\n prompt: trimToUndefined(merged.prompt),\n };\n}\n"],"mappings":";;AASA,MAAa,sBAA8C;CACzD,QAAQ;CACR,SAAS;CACV;AAED,SAAS,SAAS,OAAqD;AACrE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM,GACtE,QACD,KAAA;;;AAIN,SAAgB,gCACd,QACyC;CAEzC,MAAM,YAAY,UADL,UAAU,EAAE,EACM,UAAU;AACzC,KAAI,CAAC,UAAW,QAAO,EAAE;CACzB,MAAM,UAAmD,EAAE;AAC3D,MAAK,MAAM,CAAC,YAAY,UAAU,OAAO,QAAQ,UAAU,CACzD,SAAQ,cAAc,EAAE,GAAI,SAAS,MAAM,IAAI,EAAE,EAAG;AAEtD,QAAO;;;AAIT,SAAgB,8BACd,YACA,QACyB;AACzB,QAAO,gCAAgC,OAAO,CAAC,eAAe,EAAE;;AAGlE,SAAS,gBAAgB,OAAoC;AAC3D,KAAI,OAAO,UAAU,SACnB;CAEF,MAAM,UAAU,MAAM,MAAM;AAC5B,QAAO,QAAQ,SAAS,IAAI,UAAU,KAAA;;AAGxC,SAAS,iBAAiB,OAAoD;CAC5E,MAAM,SAAS,SAAS,MAAM;AAC9B,KAAI,CAAC,OACH;CAEF,MAAM,MAA8B,EAAE;AACtC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,EAAE;EACjD,MAAM,OAAO,gBAAgB,MAAM;AACnC,MAAI,KACF,KAAI,OAAO;;AAGf,QAAO,OAAO,KAAK,IAAI,CAAC,SAAS,IAAI,MAAM,KAAA;;;AAI7C,SAAgB,sBACd,OACA,eAQA;CACA,MAAM,SAAS;EAAE,GAAG;EAAO,GAAI,iBAAiB,EAAE;EAAG;AACrD,QAAO;EACL,QAAQ,gBAAgB,OAAO,OAAO;EACtC,OAAO,gBAAgB,OAAO,MAAM;EACpC,SAAS,gBAAgB,OAAO,QAAQ;EACxC,SAAS,iBAAiB,OAAO,QAAQ;EACzC,UAAU,gBAAgB,OAAO,SAAS;EAC1C,QAAQ,gBAAgB,OAAO,OAAO;EACvC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.js","names":[],"sources":["../../../../src/voice/stt/factory.ts"],"sourcesContent":["/**\n * STT factory — registry-driven provider chain construction.\n *\n * Resolves STTConfig slices into `AudioProviderResolvedConfig` arrays that are\n * consumed by `runAudioTranscription`. Side-effect import of `./providers/index.js`\n * ensures all built-in STT providers self-register with the media-understanding\n * registry before the first lookup.\n */\n\nimport { createLogger } from '../../utils/logger.js';\n\nimport './providers/index.js'; // side-effect: register built-in STT providers\nimport { resolveModelEntries } from '../../media-understanding/resolve-entries.js';\nimport {\n getMediaUnderstandingProvider,\n listMediaUnderstandingProviders,\n} from '../../media-understanding/registry.js';\nimport type { AudioProviderResolvedConfig } from '../../media-understanding/audio-transcription-runner.js';\nimport {\n STT_LEGACY_ENV_KEYS,\n readSttProviderFields,\n resolveSttProviderConfigSlice,\n} from './config-slice.js';\nimport type { MediaUnderstandingModelEntry, STTConfig } from './types.js';\n\nconst log = createLogger('STT:Factory');\n\nfunction resolveApiKey(\n providerId: string,\n fields: ReturnType<typeof readSttProviderFields>,\n envKey?: string,\n): string | undefined {\n return (\n fields.apiKey ??\n (envKey ? process.env[envKey] : undefined) ??\n process.env[STT_LEGACY_ENV_KEYS[providerId] ?? '']\n );\n}\n\n/** Resolve a single STT provider config slice → runner-shaped resolved config, or null when unavailable. */\nexport function resolveSTTProviderConfig(\n providerId: string,\n config: STTConfig,\n entry?: MediaUnderstandingModelEntry,\n): AudioProviderResolvedConfig | null {\n const plugin = getMediaUnderstandingProvider(providerId);\n if (!plugin || typeof plugin.transcribeAudio !== 'function') {\n log.warn(\n { providerId },\n `STT provider \"${providerId}\" is not registered or does not implement transcribeAudio`,\n );\n return null;\n }\n\n const slice = resolveSttProviderConfigSlice(providerId, config);\n const fields = readSttProviderFields(slice, entry);\n const apiKey = resolveApiKey(providerId, fields, plugin.envKey);\n const requiresApiKey = plugin.requiresApiKey !== false;\n const model = fields.model ?? entry?.model ?? plugin.defaultModels?.audio;\n if (plugin.isConfigured && !plugin.isConfigured({ model })) {\n log.debug({ providerId }, `STT provider \"${providerId}\" runtime is not ready; skipping`);\n return null;\n }\n if (requiresApiKey && !apiKey) {\n log.debug({ providerId }, `STT provider \"${providerId}\" missing API key; skipping`);\n return null;\n }\n\n return {\n id: providerId,\n ...(apiKey ? { apiKey } : {}),\n ...(fields.baseUrl ? { baseUrl: fields.baseUrl } : {}),\n ...(fields.headers ? { headers: fields.headers } : {}),\n ...(model ? { model } : {}),\n ...(fields.language ? { language: fields.language } : {}),\n ...(fields.prompt ? { prompt: fields.prompt } : {}),\n };\n}\n\nfunction sortAudioProvidersByAutoPriority(\n plugins: ReturnType<typeof listMediaUnderstandingProviders>,\n): string[] {\n return [...plugins]\n .filter(\n (plugin) =>\n plugin.capabilities?.includes('audio') && typeof plugin.transcribeAudio === 'function',\n )\n .sort((left, right) => {\n const leftOrder = left.autoPriority?.audio ?? Number.MAX_SAFE_INTEGER;\n const rightOrder = right.autoPriority?.audio ?? Number.MAX_SAFE_INTEGER;\n if (leftOrder !== rightOrder) {\n return leftOrder - rightOrder;\n }\n return left.id.localeCompare(right.id);\n })\n .map((plugin) => plugin.id);\n}\n\n/** Resolve provider order: explicit fallback when enabled, otherwise auto-select by registry order. */\nexport function resolveSTTProviderOrder(\n primary: string,\n fallback: STTConfig['fallback'] | undefined,\n config: STTConfig,\n): string[] {\n if (fallback?.enabled && fallback.order.length > 0) {\n const order: string[] = [primary];\n for (const providerId of fallback.order) {\n if (providerId !== primary && !order.includes(providerId)) {\n order.push(providerId);\n }\n }\n return order;\n }\n\n const configured = sortAudioProvidersByAutoPriority(listMediaUnderstandingProviders()).filter(\n (providerId) => resolveSTTProviderConfig(providerId, config) !== null,\n );\n\n const order: string[] = [primary];\n for (const providerId of configured) {\n if (providerId !== primary && !order.includes(providerId)) {\n order.push(providerId);\n }\n }\n return order;\n}\n\nfunction resolveModelEntryChain(config: STTConfig): AudioProviderResolvedConfig[] {\n const entries = resolveModelEntries({\n capability: 'audio',\n capabilityModels: config.models,\n sharedModels: config.sharedModels,\n });\n const chain: AudioProviderResolvedConfig[] = [];\n for (const entry of entries) {\n const providerId = entry.provider?.trim();\n if (!providerId) {\n continue;\n }\n const resolved = resolveSTTProviderConfig(providerId, config, entry);\n if (resolved) {\n chain.push(resolved);\n }\n }\n return chain;\n}\n\n/** Build the full chain of resolved provider configs in priority order. */\nexport function resolveSTTProviderChain(config: STTConfig): AudioProviderResolvedConfig[] {\n if (!config.enabled) {\n return [];\n }\n\n const modelChain = resolveModelEntryChain(config);\n if (modelChain.length > 0) {\n return modelChain;\n }\n\n const order = resolveSTTProviderOrder(config.provider, config.fallback, config);\n const chain: AudioProviderResolvedConfig[] = [];\n for (const providerId of order) {\n const resolved = resolveSTTProviderConfig(providerId, config);\n if (resolved) {\n chain.push(resolved);\n }\n }\n return chain;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/voice/stt/index.ts"],"sourcesContent":["/**\n * STT (Speech-to-Text) Module\n *\n * v2.0: providers implement MediaUnderstandingProvider; orchestration goes\n * through the media-understanding runner. The legacy `transcribe()` /\n * `isSTTAvailable()` API surface is preserved for channel adapters.\n */\n\nimport './providers/index.js'; // side-effect: register built-in STT providers\n\nimport type { STTConfig, STTOptions, STTResult } from './types.js';\nimport { transcribe } from './transcribe-core.js';\n\nexport { transcribe } from './transcribe-core.js';\nexport { isSTTAvailable } from './availability.js';\n\n/**\n * Single-provider transcription helper. Used by chat-commands /stt so a user\n * can force a specific provider regardless of fallback config.\n */\nexport async function transcribeWithProvider(\n audioBuffer: Buffer,\n providerName: string,\n config: STTConfig,\n options?: STTOptions,\n): Promise<STTResult> {\n // Build a per-call config that pins primary to the requested provider and\n // disables fallback. This routes through the same runner machinery without\n // needing a separate single-provider code path.\n const pinnedConfig: STTConfig = {\n ...config,\n provider: providerName,\n fallback: { enabled: false, order: [providerName] },\n };\n const result = await transcribe(audioBuffer, pinnedConfig, options);\n return {\n text: result.text,\n provider: result.provider,\n ...(result.duration !== undefined ? { duration: result.duration } : {}),\n ...(result.language ? { language: result.language } : {}),\n };\n}\n\nexport type {\n STTResult,\n STTOptions,\n STTConfig,\n STTResultWithTracking,\n STTProviderAttempt,\n STTProviderFailureReason,\n} from './types.js';\n\nexport { openAiTranscriptionProvider, alibabaTranscriptionProvider } from './providers/index.js';\n\nexport {\n resolveSTTProviderConfig,\n resolveSTTProviderChain,\n resolveSTTProviderOrder,\n} from './factory.js';\n\nexport { audioPreflightTranscribe, checkMentionInTranscription } from './preflight.js';\n"],"mappings":";;;;;;;;;;;;;AAoBA,eAAsB,uBACpB,aACA,cACA,QACA,SACoB;CASpB,MAAM,SAAS,MAAM,WAAW,aAAa;EAJ3C,GAAG;EACH,UAAU;EACV,UAAU;GAAE,SAAS;GAAO,OAAO,CAAC,aAAa;GAAE;EAEI,EAAE,QAAQ;AACnE,QAAO;EACL,MAAM,OAAO;EACb,UAAU,OAAO;EACjB,GAAI,OAAO,aAAa,KAAA,IAAY,EAAE,UAAU,OAAO,UAAU,GAAG,EAAE;EACtE,GAAI,OAAO,WAAW,EAAE,UAAU,OAAO,UAAU,GAAG,EAAE;EACzD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-providers.js","names":[],"sources":["../../../../src/voice/stt/list-providers.ts"],"sourcesContent":["/**\n * Registry-driven STT provider listing for gateway / Web UI discovery.\n */\n\nimport type { Config } from '../../config/schema.js';\nimport { mergeSttConfigFromAppConfig } from '../../channels/attachments/voice-stt-webchat.js';\nimport { listMediaUnderstandingProviders } from '../../media-understanding/registry.js';\nimport { getVoiceProviderMetadata, type VoiceProviderMetadata } from '../metadata/index.js';\n\nimport { resolveSTTProviderConfig } from './factory.js';\nimport type { STTConfig } from './types.js';\n\nexport interface SttProviderListEntry extends VoiceProviderMetadata {\n aliases: string[];\n configured: boolean;\n}\n\nexport interface SttProvidersPayload {\n providers: SttProviderListEntry[];\n active: string;\n}\n\nfunction fallbackMetadata(providerId: string, aliases: readonly string[]): VoiceProviderMetadata {\n return {\n id: providerId,\n capability: 'stt',\n displayName: providerId,\n aliases: [...aliases],\n fields: [\n { key: 'apiKey', label: 'API Key', type: 'password', secret: true },\n { key: 'model', label: 'Model', type: 'string' },\n { key: 'baseUrl', label: 'Base URL', type: 'string' },\n ],\n diagnostics: {\n requiresApiKey: true,\n configPath: `tools.media.audio.providers.${providerId}`,\n },\n };\n}\n\nexport function isSttProviderConfigured(providerId: string, config: STTConfig): boolean {\n return resolveSTTProviderConfig(providerId, config) !== null;\n}\n\n/** List registered audio STT providers with configured state and UI metadata. */\nexport function listSttProvidersForApi(config: Config | undefined): SttProvidersPayload {\n const sttConfig = mergeSttConfigFromAppConfig(config?.tools?.media?.audio, config?.tools?.media);\n const providers: SttProviderListEntry[] = listMediaUnderstandingProviders()\n .filter(\n (plugin) =>\n plugin.capabilities?.includes('audio') && typeof plugin.transcribeAudio === 'function',\n )\n .map((plugin) => {\n const metadata = getVoiceProviderMetadata('stt', plugin.id) ?? fallbackMetadata(plugin.id, plugin.aliases ?? []);\n return {\n ...metadata,\n aliases: [...(metadata.aliases ?? plugin.aliases ?? [])],\n configured: isSttProviderConfigured(plugin.id, sttConfig),\n };\n });\n\n return {\n providers,\n active: sttConfig.provider,\n };\n}\n"],"mappings":";;;;;;AAsBA,SAAS,iBAAiB,YAAoB,SAAmD;AAC/F,QAAO;EACL,IAAI;EACJ,YAAY;EACZ,aAAa;EACb,SAAS,CAAC,GAAG,QAAQ;EACrB,QAAQ;GACN;IAAE,KAAK;IAAU,OAAO;IAAW,MAAM;IAAY,QAAQ;IAAM;GACnE;IAAE,KAAK;IAAS,OAAO;IAAS,MAAM;IAAU;GAChD;IAAE,KAAK;IAAW,OAAO;IAAY,MAAM;IAAU;GACtD;EACD,aAAa;GACX,gBAAgB;GAChB,YAAY,+BAA+B;GAC5C;EACF;;AAGH,SAAgB,wBAAwB,YAAoB,QAA4B;AACtF,QAAO,yBAAyB,YAAY,OAAO,KAAK;;;AAI1D,SAAgB,uBAAuB,QAAiD;CACtF,MAAM,YAAY,4BAA4B,QAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO,MAAM;AAehG,QAAO;EACL,WAfwC,iCAAiC,CACxE,QACE,WACC,OAAO,cAAc,SAAS,QAAQ,IAAI,OAAO,OAAO,oBAAoB,WAC/E,CACA,KAAK,WAAW;GACf,MAAM,WAAW,yBAAyB,OAAO,OAAO,GAAG,IAAI,iBAAiB,OAAO,IAAI,OAAO,WAAW,EAAE,CAAC;AAChH,UAAO;IACL,GAAG;IACH,SAAS,CAAC,GAAI,SAAS,WAAW,OAAO,WAAW,EAAE,CAAE;IACxD,YAAY,wBAAwB,OAAO,IAAI,UAAU;IAC1D;IAIM;EACT,QAAQ,UAAU;EACnB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mention.js","names":[],"sources":["../../../../src/voice/stt/mention.ts"],"sourcesContent":["/** Spoken @bot variants (\"at botname\", \"hey botname\") for STT text. */\nexport function checkMentionInTranscription(transcribedText: string, botNames: string[]): boolean {\n const normalizedText = transcribedText.toLowerCase().trim();\n\n for (const name of botNames) {\n const normalizedName = name.toLowerCase().trim();\n if (!normalizedName) continue;\n\n if (normalizedText.includes(normalizedName)) return true;\n\n const fuzzyPatterns = [`at ${normalizedName}`, `hey ${normalizedName}`, `hi ${normalizedName}`];\n if (fuzzyPatterns.some((pattern) => normalizedText.includes(pattern))) return true;\n }\n\n return false;\n}\n"],"mappings":";;AACA,SAAgB,4BAA4B,iBAAyB,UAA6B;CAChG,MAAM,iBAAiB,gBAAgB,aAAa,CAAC,MAAM;AAE3D,MAAK,MAAM,QAAQ,UAAU;EAC3B,MAAM,iBAAiB,KAAK,aAAa,CAAC,MAAM;AAChD,MAAI,CAAC,eAAgB;AAErB,MAAI,eAAe,SAAS,eAAe,CAAE,QAAO;AAGpD,MAAI;GADmB,MAAM;GAAkB,OAAO;GAAkB,MAAM;GAC7D,CAAC,MAAM,YAAY,eAAe,SAAS,QAAQ,CAAC,CAAE,QAAO;;AAGhF,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"preflight.js","names":[],"sources":["../../../../src/voice/stt/preflight.ts"],"sourcesContent":["import type { STTConfig, STTResult } from './types.js';\nimport { transcribe } from './transcribe-core.js';\nimport { isSTTAvailable } from './availability.js';\nexport { checkMentionInTranscription } from './mention.js';\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('STT:Preflight');\n\nexport interface AudioPreflightInput {\n audioBuffer: Buffer;\n mimeType?: string;\n sttConfig: STTConfig;\n language?: string;\n}\n\nexport interface AudioPreflightResult {\n success: boolean;\n transcribedText?: string;\n provider?: string;\n duration?: number;\n error?: string;\n}\n\n/**\n * Transcribe audio before mention routing (e.g. group voice → detect spoken @bot).\n */\nexport async function audioPreflightTranscribe(\n input: AudioPreflightInput,\n): Promise<AudioPreflightResult> {\n const { audioBuffer, sttConfig, language } = input;\n\n if (!isSTTAvailable(sttConfig)) {\n log.debug('STT not available, skipping preflight');\n return { success: false, error: 'STT not available' };\n }\n\n if (!audioBuffer || audioBuffer.length === 0) {\n return { success: false, error: 'Empty audio buffer' };\n }\n\n const startTime = Date.now();\n\n try {\n const result: STTResult = await transcribe(audioBuffer, sttConfig, {\n language,\n });\n\n const duration = (Date.now() - startTime) / 1000;\n\n if (!result.text?.trim()) {\n log.debug({ duration }, 'Preflight transcription returned empty text');\n return {\n success: false,\n provider: result.provider,\n duration,\n error: 'Empty transcription result',\n };\n }\n\n log.info(\n {\n provider: result.provider,\n textLength: result.text.length,\n duration,\n },\n 'Audio preflight transcription completed',\n );\n\n return {\n success: true,\n transcribedText: result.text,\n provider: result.provider,\n duration,\n };\n } catch (error) {\n const duration = (Date.now() - startTime) / 1000;\n const errorMsg = error instanceof Error ? error.message : String(error);\n\n log.warn({ errorMessage: errorMsg, duration }, 'Audio preflight transcription failed');\n\n return {\n success: false,\n duration,\n error: errorMsg,\n };\n }\n}\n\n"],"mappings":";;;;;;aAIqD;AAErD,MAAM,MAAM,aAAa,gBAAgB;;;;AAoBzC,eAAsB,yBACpB,OAC+B;CAC/B,MAAM,EAAE,aAAa,WAAW,aAAa;AAE7C,KAAI,CAAC,eAAe,UAAU,EAAE;AAC9B,MAAI,MAAM,wCAAwC;AAClD,SAAO;GAAE,SAAS;GAAO,OAAO;GAAqB;;AAGvD,KAAI,CAAC,eAAe,YAAY,WAAW,EACzC,QAAO;EAAE,SAAS;EAAO,OAAO;EAAsB;CAGxD,MAAM,YAAY,KAAK,KAAK;AAE5B,KAAI;EACF,MAAM,SAAoB,MAAM,WAAW,aAAa,WAAW,EACjE,UACD,CAAC;EAEF,MAAM,YAAY,KAAK,KAAK,GAAG,aAAa;AAE5C,MAAI,CAAC,OAAO,MAAM,MAAM,EAAE;AACxB,OAAI,MAAM,EAAE,UAAU,EAAE,8CAA8C;AACtE,UAAO;IACL,SAAS;IACT,UAAU,OAAO;IACjB;IACA,OAAO;IACR;;AAGH,MAAI,KACF;GACE,UAAU,OAAO;GACjB,YAAY,OAAO,KAAK;GACxB;GACD,EACD,0CACD;AAED,SAAO;GACL,SAAS;GACT,iBAAiB,OAAO;GACxB,UAAU,OAAO;GACjB;GACD;UACM,OAAO;EACd,MAAM,YAAY,KAAK,KAAK,GAAG,aAAa;EAC5C,MAAM,WAAW,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AAEvE,MAAI,KAAK;GAAE,cAAc;GAAU;GAAU,EAAE,uCAAuC;AAEtF,SAAO;GACL,SAAS;GACT;GACA,OAAO;GACR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"alibaba-transcription.js","names":[],"sources":["../../../../../src/voice/stt/providers/alibaba-transcription.ts"],"sourcesContent":["/**\n * Alibaba DashScope Paraformer STT — implements MediaUnderstandingProvider.transcribeAudio.\n *\n * DashScope's async API is a 4-step dance:\n * 1. POST /api/v1/services/audio/asr/transcription with `X-DashScope-Async: enable`\n * and `input.file_urls = [data:audio/ogg;base64,...]` → returns task_id\n * 2. Poll GET /api/v1/tasks/{task_id} until task_status === 'SUCCEEDED'\n * 3. The success result contains `transcription_url` pointing at a JSON document\n * 4. Fetch that JSON to extract the actual `transcripts[].text`\n *\n * All HTTP calls go through `fetchWithTimeoutGuarded` so the SSRF guard catches\n * malicious config injection. The transcription_url is a public OSS URL\n * (CDN-hosted); we keep `allowPrivateNetwork: false` so a malicious tenant\n * cannot redirect to an internal address.\n *\n * Polling caps at 60s by default (60 * 1s). The runner's `timeoutMs` controls\n * HTTP timeouts on each individual submit/poll/fetch call, not the overall\n * poll loop ceiling.\n */\n\nimport {\n ProviderHttpError,\n fetchWithTimeoutGuarded,\n postJsonRequest,\n waitProviderOperationPollInterval,\n} from '../../../media-shared/http/index.js';\nimport { registerMediaUnderstandingProvider } from '../../../media-understanding/registry.js';\nimport type {\n AudioTranscriptionRequest,\n AudioTranscriptionResult,\n MediaUnderstandingProvider,\n} from '../../../media-understanding/types.js';\nimport { createLogger } from '../../../utils/logger.js';\n\nconst log = createLogger('STT:Alibaba');\n\nconst DEFAULT_MODEL = 'paraformer-v2';\nconst DEFAULT_BASE_URL =\n 'https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription';\nconst TASKS_BASE_URL = 'https://dashscope.aliyuncs.com/api/v1/tasks';\nconst POLL_INTERVAL_MS = 1000;\nconst MAX_POLL_MS = 60_000;\n\ninterface TaskResponse {\n status_code?: number;\n request_id?: string;\n code?: string;\n message?: string;\n output?: {\n task_id: string;\n task_status: 'PENDING' | 'RUNNING' | 'SUCCEEDED' | 'FAILED';\n };\n}\n\ninterface TranscriptionResultEntry {\n file_url: string;\n transcription_url: string;\n subtask_status: string;\n}\n\ninterface FetchResponse {\n status_code?: number;\n request_id?: string;\n output?: {\n task_id: string;\n task_status: 'PENDING' | 'RUNNING' | 'SUCCEEDED' | 'FAILED';\n results?: TranscriptionResultEntry[];\n };\n usage?: { duration?: number };\n}\n\ninterface TranscriptionDetail {\n file_url: string;\n properties: {\n audio_format: string;\n channels: number[];\n original_sampling_rate: number;\n original_duration_in_milliseconds: number;\n };\n transcripts: Array<{\n channel_id: number;\n content_duration_in_milliseconds: number;\n text: string;\n }>;\n}\n\nasync function submitTask(params: {\n apiKey: string;\n baseUrl: string;\n model: string;\n audioDataUrl: string;\n language?: string;\n timeoutMs: number;\n signal?: AbortSignal;\n}): Promise<string> {\n const response = await postJsonRequest(params.baseUrl, {\n timeoutMs: params.timeoutMs,\n label: 'Alibaba STT submit',\n headers: {\n Authorization: `Bearer ${params.apiKey}`,\n 'X-DashScope-Async': 'enable',\n },\n body: {\n model: params.model,\n input: { file_urls: [params.audioDataUrl] },\n ...(params.language ? { parameters: { language_hint: params.language } } : {}),\n },\n signal: params.signal,\n });\n const data = (await response.json()) as TaskResponse;\n if (data.code) {\n throw new Error(`Alibaba STT API error: ${data.code} - ${data.message}`);\n }\n if (!data.output?.task_id) {\n log.error({ response: data }, 'Alibaba STT API response missing task_id');\n throw new Error(`No task_id returned from Alibaba STT API: ${JSON.stringify(data)}`);\n }\n log.debug({ taskId: data.output.task_id }, 'Task submitted');\n return data.output.task_id;\n}\n\nasync function pollTask(params: {\n apiKey: string;\n taskId: string;\n timeoutMs: number;\n signal?: AbortSignal;\n}): Promise<{ text: string }> {\n const startTime = Date.now();\n const url = `${TASKS_BASE_URL}/${params.taskId}`;\n while (Date.now() - startTime < MAX_POLL_MS) {\n const response = await fetchWithTimeoutGuarded(url, {\n timeoutMs: params.timeoutMs,\n label: 'Alibaba STT poll',\n signal: params.signal,\n init: {\n method: 'GET',\n headers: { Authorization: `Bearer ${params.apiKey}` },\n },\n });\n if (!response.ok) {\n const errorText = await response.text().catch(() => '');\n throw new ProviderHttpError({\n label: 'Alibaba STT poll',\n status: response.status,\n detail: errorText.slice(0, 220) || response.statusText,\n });\n }\n const data = (await response.json()) as FetchResponse;\n const status = data.output?.task_status;\n if (status === 'SUCCEEDED') {\n const result = data.output?.results?.[0];\n if (!result) {\n throw new Error('Alibaba STT task succeeded but no results found');\n }\n const transcription = await fetchTranscription(\n result.transcription_url,\n params.timeoutMs,\n params.signal,\n );\n const fullText = transcription.transcripts.map((t) => t.text).join('\\n');\n return { text: fullText };\n }\n if (status === 'FAILED') {\n throw new Error('Alibaba STT task failed');\n }\n await waitProviderOperationPollInterval(POLL_INTERVAL_MS, params.signal);\n }\n throw new Error(`Alibaba STT task did not complete within ${MAX_POLL_MS}ms`);\n}\n\nasync function fetchTranscription(\n url: string,\n timeoutMs: number,\n signal?: AbortSignal,\n): Promise<TranscriptionDetail> {\n const response = await fetchWithTimeoutGuarded(url, {\n timeoutMs,\n label: 'Alibaba STT transcription fetch',\n signal,\n });\n if (!response.ok) {\n throw new ProviderHttpError({\n label: 'Alibaba STT transcription fetch',\n status: response.status,\n detail: response.statusText,\n });\n }\n return (await response.json()) as TranscriptionDetail;\n}\n\nasync function transcribeAudio(req: AudioTranscriptionRequest): Promise<AudioTranscriptionResult> {\n const startTime = Date.now();\n const model = req.model ?? DEFAULT_MODEL;\n const baseUrl = req.baseUrl ?? DEFAULT_BASE_URL;\n\n // Paraformer accepts `data:` URLs directly so we don't need to upload\n // the audio first. This avoids the OSS pre-signing dance.\n const base64Audio = req.buffer.toString('base64');\n const audioDataUrl = `data:${req.mime ?? 'audio/ogg'};base64,${base64Audio}`;\n\n log.debug(\n { model, bufferSize: req.buffer.length, language: req.language, fileName: req.fileName },\n 'Sending to Alibaba Paraformer',\n );\n\n try {\n const taskId = await submitTask({\n apiKey: req.apiKey,\n baseUrl,\n model,\n audioDataUrl,\n ...(req.language ? { language: req.language } : {}),\n timeoutMs: req.timeoutMs,\n signal: req.signal,\n });\n const result = await pollTask({\n apiKey: req.apiKey,\n taskId,\n timeoutMs: req.timeoutMs,\n signal: req.signal,\n });\n const durationSeconds = (Date.now() - startTime) / 1000;\n log.info(\n { provider: 'alibaba', durationSeconds, textLength: result.text.length },\n 'Transcription completed',\n );\n return {\n text: result.text,\n model,\n ...(req.language ? { language: req.language } : {}),\n durationSeconds,\n };\n } catch (error) {\n if (req.signal?.aborted) {\n throw error;\n }\n const errorMsg = error instanceof Error ? error.message : String(error);\n log.error(\n { err: error, bufferSize: req.buffer.length, model },\n `Alibaba transcription failed: ${errorMsg}`,\n );\n throw new Error(`Alibaba STT failed: ${errorMsg}`);\n }\n}\n\nexport const alibabaTranscriptionProvider: MediaUnderstandingProvider = {\n id: 'alibaba',\n aliases: ['dashscope', 'paraformer'],\n capabilities: ['audio'],\n envKey: 'DASHSCOPE_API_KEY',\n defaultModels: { audio: DEFAULT_MODEL },\n // Higher priority than openai for audio because Paraformer-v2 has better\n // Chinese accuracy and is the project's typical primary STT.\n autoPriority: { audio: 10 },\n transcribeAudio,\n};\n\nregisterMediaUnderstandingProvider(alibabaTranscriptionProvider);\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-transcription.js","names":[],"sources":["../../../../../src/voice/stt/providers/local-transcription.ts"],"sourcesContent":["import { registerMediaUnderstandingProvider } from '../../../media-understanding/registry.js';\nimport type {\n AudioTranscriptionRequest,\n AudioTranscriptionResult,\n MediaUnderstandingProvider,\n} from '../../../media-understanding/types.js';\nimport { createLogger } from '../../../utils/logger.js';\nimport { getLocalVoiceRuntimeClient } from '../../local/runtime-client.js';\nimport { decodeWavToMonoFloat32 } from '../../local/wav.js';\nimport {\n DEFAULT_LOCAL_VOICE_MODEL_ID,\n getLocalVoiceModel,\n hasInstalledLocalVoiceModel,\n isLocalVoiceModelInstalled,\n} from '../../local/models.js';\n\nconst log = createLogger('STT:Local');\n\nasync function transcribeAudio(req: AudioTranscriptionRequest): Promise<AudioTranscriptionResult> {\n const model = getLocalVoiceModel(req.model);\n if (!isLocalVoiceModelInstalled(model.id)) {\n throw new Error(`Local voice model \"${model.id}\" is not installed`);\n }\n const decoded = decodeWavToMonoFloat32(req.buffer);\n const audioBytes = Buffer.from(\n decoded.samples.buffer,\n decoded.samples.byteOffset,\n decoded.samples.byteLength,\n );\n const startedAt = Date.now();\n const result = await getLocalVoiceRuntimeClient().request<{\n text: string;\n modelId: string;\n language?: string;\n emotion?: string;\n event?: string;\n }>(\n 'transcribe',\n {\n modelId: model.id,\n audioBase64: audioBytes.toString('base64'),\n ...(req.language ? { language: req.language } : {}),\n },\n { signal: req.signal, timeoutMs: req.timeoutMs },\n );\n log.info(\n {\n model: model.id,\n audioDurationSeconds: decoded.durationSeconds,\n latencyMs: Date.now() - startedAt,\n textLength: result.text.length,\n },\n 'Local transcription completed',\n );\n return {\n text: result.text,\n model: model.id,\n ...(result.language || req.language ? { language: result.language ?? req.language } : {}),\n durationSeconds: decoded.durationSeconds,\n };\n}\n\nexport const localTranscriptionProvider: MediaUnderstandingProvider = {\n id: 'xopc-local',\n aliases: ['local'],\n capabilities: ['audio'],\n requiresApiKey: false,\n defaultModels: { audio: DEFAULT_LOCAL_VOICE_MODEL_ID },\n autoPriority: { audio: 0 },\n isConfigured: (options) => options?.model\n ? isLocalVoiceModelInstalled(options.model)\n : hasInstalledLocalVoiceModel(),\n transcribeAudio,\n};\n\nregisterMediaUnderstandingProvider(localTranscriptionProvider);\n"],"mappings":";;;;;;;aAMwD;AAUxD,MAAM,MAAM,aAAa,YAAY;AAErC,eAAe,gBAAgB,KAAmE;CAChG,MAAM,QAAQ,mBAAmB,IAAI,MAAM;AAC3C,KAAI,CAAC,2BAA2B,MAAM,GAAG,CACvC,OAAM,IAAI,MAAM,sBAAsB,MAAM,GAAG,oBAAoB;CAErE,MAAM,UAAU,uBAAuB,IAAI,OAAO;CAClD,MAAM,aAAa,OAAO,KACxB,QAAQ,QAAQ,QAChB,QAAQ,QAAQ,YAChB,QAAQ,QAAQ,WACjB;CACD,MAAM,YAAY,KAAK,KAAK;CAC5B,MAAM,SAAS,MAAM,4BAA4B,CAAC,QAOhD,cACA;EACE,SAAS,MAAM;EACf,aAAa,WAAW,SAAS,SAAS;EAC1C,GAAI,IAAI,WAAW,EAAE,UAAU,IAAI,UAAU,GAAG,EAAE;EACnD,EACD;EAAE,QAAQ,IAAI;EAAQ,WAAW,IAAI;EAAW,CACjD;AACD,KAAI,KACF;EACE,OAAO,MAAM;EACb,sBAAsB,QAAQ;EAC9B,WAAW,KAAK,KAAK,GAAG;EACxB,YAAY,OAAO,KAAK;EACzB,EACD,gCACD;AACD,QAAO;EACL,MAAM,OAAO;EACb,OAAO,MAAM;EACb,GAAI,OAAO,YAAY,IAAI,WAAW,EAAE,UAAU,OAAO,YAAY,IAAI,UAAU,GAAG,EAAE;EACxF,iBAAiB,QAAQ;EAC1B;;AAGH,MAAa,6BAAyD;CACpE,IAAI;CACJ,SAAS,CAAC,QAAQ;CAClB,cAAc,CAAC,QAAQ;CACvB,gBAAgB;CAChB,eAAe,EAAE,OAAO,8BAA8B;CACtD,cAAc,EAAE,OAAO,GAAG;CAC1B,eAAe,YAAY,SAAS,QAChC,2BAA2B,QAAQ,MAAM,GACzC,6BAA6B;CACjC;CACD;AAED,mCAAmC,2BAA2B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-transcription.js","names":[],"sources":["../../../../../src/voice/stt/providers/openai-transcription.ts"],"sourcesContent":["/**\n * OpenAI Whisper STT — implements MediaUnderstandingProvider.transcribeAudio.\n *\n * Uses the official `openai` SDK rather than the raw HTTP path because the SDK\n * already handles multipart/form-data encoding (`file` field), streaming\n * response normalization, and per-call apiKey override via constructor\n * injection. The media-shared HTTP layer is intentionally not used here so we\n * keep parity with the SDK's own fetch (proxy support, retries, etc.); the\n * only egress is api.openai.com which is HTTPS-only and public.\n *\n * Streaming transcription is not implemented (Whisper returns a final text\n * blob). Self-registers with `capabilities: ['audio']` only — the registry's\n * `listProvidersForCapability` filter skips this provider for image/video.\n */\n\nimport OpenAI from 'openai';\n\nimport { registerMediaUnderstandingProvider } from '../../../media-understanding/registry.js';\nimport type {\n AudioTranscriptionRequest,\n AudioTranscriptionResult,\n MediaUnderstandingProvider,\n} from '../../../media-understanding/types.js';\nimport { createLogger } from '../../../utils/logger.js';\n\nconst log = createLogger('STT:OpenAI');\n\nconst DEFAULT_MODEL = 'whisper-1';\n\nasync function transcribeAudio(req: AudioTranscriptionRequest): Promise<AudioTranscriptionResult> {\n const startTime = Date.now();\n const model = req.model ?? DEFAULT_MODEL;\n\n // openai SDK supports baseURL override per-instance.\n const client = new OpenAI({\n apiKey: req.apiKey,\n timeout: req.timeoutMs,\n ...(req.baseUrl ? { baseURL: req.baseUrl } : {}),\n ...(req.headers ? { defaultHeaders: req.headers } : {}),\n });\n\n const uint8Array = new Uint8Array(\n req.buffer.buffer as ArrayBuffer,\n req.buffer.byteOffset,\n req.buffer.byteLength,\n );\n // Preserve the original name and MIME so provider-side format detection and\n // diagnostics reflect the real upload instead of a synthetic OGG file.\n const file = new File([uint8Array], req.fileName, { type: req.mime ?? 'audio/ogg' });\n\n log.debug(\n { model, bufferSize: req.buffer.length, language: req.language, fileName: req.fileName },\n 'Sending to OpenAI Whisper',\n );\n\n try {\n const result = await client.audio.transcriptions.create(\n {\n file,\n model,\n ...(req.language ? { language: req.language } : {}),\n ...(req.prompt ? { prompt: req.prompt } : {}),\n response_format: 'json',\n },\n req.signal ? { signal: req.signal } : undefined,\n );\n const durationSeconds = (Date.now() - startTime) / 1000;\n log.info(\n { provider: 'openai', durationSeconds, textLength: result.text?.length ?? 0 },\n 'Transcription completed',\n );\n return {\n text: result.text || '',\n model,\n ...(req.language ? { language: req.language } : {}),\n durationSeconds,\n };\n } catch (error) {\n if (req.signal?.aborted) {\n throw error;\n }\n const errorMsg = error instanceof Error ? error.message : String(error);\n log.error(\n { err: error, bufferSize: req.buffer.length, model },\n `OpenAI transcription failed: ${errorMsg}`,\n );\n throw new Error(`OpenAI STT failed: ${errorMsg}`);\n }\n}\n\nexport const openAiTranscriptionProvider: MediaUnderstandingProvider = {\n id: 'openai',\n capabilities: ['audio'],\n envKey: 'OPENAI_API_KEY',\n defaultModels: { audio: DEFAULT_MODEL },\n autoPriority: { audio: 20 }, // alibaba is preferred when both configured (Chinese-first)\n transcribeAudio,\n};\n\nregisterMediaUnderstandingProvider(openAiTranscriptionProvider);\n"],"mappings":";;;;;;;;;;;;;;;;;;;aAuBwD;AAExD,MAAM,MAAM,aAAa,aAAa;AAEtC,MAAM,gBAAgB;AAEtB,eAAe,gBAAgB,KAAmE;CAChG,MAAM,YAAY,KAAK,KAAK;CAC5B,MAAM,QAAQ,IAAI,SAAS;CAG3B,MAAM,SAAS,IAAI,OAAO;EACxB,QAAQ,IAAI;EACZ,SAAS,IAAI;EACb,GAAI,IAAI,UAAU,EAAE,SAAS,IAAI,SAAS,GAAG,EAAE;EAC/C,GAAI,IAAI,UAAU,EAAE,gBAAgB,IAAI,SAAS,GAAG,EAAE;EACvD,CAAC;CAEF,MAAM,aAAa,IAAI,WACrB,IAAI,OAAO,QACX,IAAI,OAAO,YACX,IAAI,OAAO,WACZ;CAGD,MAAM,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,UAAU,EAAE,MAAM,IAAI,QAAQ,aAAa,CAAC;AAEpF,KAAI,MACF;EAAE;EAAO,YAAY,IAAI,OAAO;EAAQ,UAAU,IAAI;EAAU,UAAU,IAAI;EAAU,EACxF,4BACD;AAED,KAAI;EACF,MAAM,SAAS,MAAM,OAAO,MAAM,eAAe,OAC/C;GACE;GACA;GACA,GAAI,IAAI,WAAW,EAAE,UAAU,IAAI,UAAU,GAAG,EAAE;GAClD,GAAI,IAAI,SAAS,EAAE,QAAQ,IAAI,QAAQ,GAAG,EAAE;GAC5C,iBAAiB;GAClB,EACD,IAAI,SAAS,EAAE,QAAQ,IAAI,QAAQ,GAAG,KAAA,EACvC;EACD,MAAM,mBAAmB,KAAK,KAAK,GAAG,aAAa;AACnD,MAAI,KACF;GAAE,UAAU;GAAU;GAAiB,YAAY,OAAO,MAAM,UAAU;GAAG,EAC7E,0BACD;AACD,SAAO;GACL,MAAM,OAAO,QAAQ;GACrB;GACA,GAAI,IAAI,WAAW,EAAE,UAAU,IAAI,UAAU,GAAG,EAAE;GAClD;GACD;UACM,OAAO;AACd,MAAI,IAAI,QAAQ,QACd,OAAM;EAER,MAAM,WAAW,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AACvE,MAAI,MACF;GAAE,KAAK;GAAO,YAAY,IAAI,OAAO;GAAQ;GAAO,EACpD,gCAAgC,WACjC;AACD,QAAM,IAAI,MAAM,sBAAsB,WAAW;;;AAIrD,MAAa,8BAA0D;CACrE,IAAI;CACJ,cAAc,CAAC,QAAQ;CACvB,QAAQ;CACR,eAAe,EAAE,OAAO,eAAe;CACvC,cAAc,EAAE,OAAO,IAAI;CAC3B;CACD;AAED,mCAAmC,4BAA4B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcribe-core.js","names":[],"sources":["../../../../src/voice/stt/transcribe-core.ts"],"sourcesContent":["/**\n * STT orchestrator — `transcribe()` is the single entry point used by channel\n * adapters (telegram, webchat) and the preflight router.\n *\n * Internally delegates to `runAudioTranscription` from the media-understanding\n * runner. The runner returns a `MediaUnderstandingDecision`; we translate each\n * `decision.attachments[0].attempts[]` entry into the `STTProviderAttempt`\n * shape consumed by downstream telemetry.\n *\n * One-attachment fast path: `transcribe()` is 1-buffer-in / 1-text-out, so we\n * wrap the input as a single CapabilityAttachmentInput and unpack the first\n * output. Multi-attachment cases go through `runAudioTranscription` directly.\n */\n\nimport { createLogger } from '../../utils/logger.js';\n\nimport { runAudioTranscription } from '../../media-understanding/audio-transcription-runner.js';\nimport type {\n MediaUnderstandingAttachmentDecision,\n MediaUnderstandingModelDecision,\n} from '../../media-understanding/types.js';\nimport { resolveSTTProviderChain } from './factory.js';\nimport type {\n STTConfig,\n STTOptions,\n STTProviderAttempt,\n STTProviderFailureReason,\n STTResultWithTracking,\n} from './types.js';\n\nconst log = createLogger('STT');\n\nfunction classifyFailureReason(reason: string | undefined): STTProviderFailureReason {\n if (!reason) return 'unknown';\n const lower = reason.toLowerCase();\n if (lower.includes('not configured') || lower.includes('api key') || lower.includes('missing')) {\n return 'not_configured';\n }\n if (lower.includes('timeout') || lower.includes('timed out') || lower.includes('aborted')) {\n return 'timeout';\n }\n if (lower.includes('unsupported') || lower.includes('format')) {\n return 'unsupported_format';\n }\n return 'provider_error';\n}\n\nfunction toAttempt(attempt: MediaUnderstandingModelDecision): STTProviderAttempt {\n return {\n provider: attempt.provider ?? 'unknown',\n outcome: attempt.outcome,\n reasonCode: attempt.outcome === 'success' ? 'success' : classifyFailureReason(attempt.reason),\n latencyMs: attempt.latencyMs ?? 0,\n ...(attempt.reason ? { error: attempt.reason } : {}),\n };\n}\n\nexport async function transcribe(\n audioBuffer: Buffer,\n config: STTConfig,\n options?: STTOptions,\n): Promise<STTResultWithTracking> {\n if (!config.enabled) {\n throw new Error('STT is not enabled');\n }\n const providers = resolveSTTProviderChain(config);\n if (providers.length === 0) {\n throw new Error('No STT providers configured');\n }\n\n // Apply caller-supplied language hint to each provider's resolved config.\n // (We don't bake it into resolveSTTProviderChain because it is per-call.)\n const providersWithLanguage = options?.language\n ? providers.map((p) => ({ ...p, language: options.language }))\n : providers;\n\n const result = await runAudioTranscription({\n providers: providersWithLanguage,\n attachments: [\n {\n attachmentIndex: 0,\n buffer: audioBuffer,\n fileName: options?.fileName ?? `audio-${Date.now()}.ogg`,\n mime: options?.mime ?? 'audio/ogg',\n },\n ],\n timeoutMs: config.timeoutMs ?? 60_000,\n signal: options?.signal,\n });\n\n const attachmentDecision: MediaUnderstandingAttachmentDecision | undefined =\n result.decision.attachments[0];\n const attempts = (attachmentDecision?.attempts ?? []).map(toAttempt);\n const attemptedProviders = attempts.map((a) => a.provider);\n\n if (!attachmentDecision?.chosen) {\n log.error({ attempts, attemptedProviders }, 'All STT providers failed');\n const lastError = attempts.find((a) => a.outcome === 'failed')?.error;\n throw new Error(lastError ?? 'All STT providers failed');\n }\n\n const chosen = attachmentDecision.chosen;\n const output = result.outputs[0];\n if (!output) {\n throw new Error('STT runner returned chosen attempt but no output text');\n }\n const primaryProvider = providersWithLanguage[0]!.id;\n const fallbackFrom =\n chosen.provider && chosen.provider !== primaryProvider ? primaryProvider : undefined;\n\n return {\n text: output.text,\n provider: chosen.provider ?? 'unknown',\n ...(chosen.model ? { language: options?.language } : {}),\n attempts,\n ...(fallbackFrom ? { fallbackFrom } : {}),\n attemptedProviders,\n };\n}\n"],"mappings":";;;;;aAcqD;AAgBrD,MAAM,MAAM,aAAa,MAAM;AAE/B,SAAS,sBAAsB,QAAsD;AACnF,KAAI,CAAC,OAAQ,QAAO;CACpB,MAAM,QAAQ,OAAO,aAAa;AAClC,KAAI,MAAM,SAAS,iBAAiB,IAAI,MAAM,SAAS,UAAU,IAAI,MAAM,SAAS,UAAU,CAC5F,QAAO;AAET,KAAI,MAAM,SAAS,UAAU,IAAI,MAAM,SAAS,YAAY,IAAI,MAAM,SAAS,UAAU,CACvF,QAAO;AAET,KAAI,MAAM,SAAS,cAAc,IAAI,MAAM,SAAS,SAAS,CAC3D,QAAO;AAET,QAAO;;AAGT,SAAS,UAAU,SAA8D;AAC/E,QAAO;EACL,UAAU,QAAQ,YAAY;EAC9B,SAAS,QAAQ;EACjB,YAAY,QAAQ,YAAY,YAAY,YAAY,sBAAsB,QAAQ,OAAO;EAC7F,WAAW,QAAQ,aAAa;EAChC,GAAI,QAAQ,SAAS,EAAE,OAAO,QAAQ,QAAQ,GAAG,EAAE;EACpD;;AAGH,eAAsB,WACpB,aACA,QACA,SACgC;AAChC,KAAI,CAAC,OAAO,QACV,OAAM,IAAI,MAAM,qBAAqB;CAEvC,MAAM,YAAY,wBAAwB,OAAO;AACjD,KAAI,UAAU,WAAW,EACvB,OAAM,IAAI,MAAM,8BAA8B;CAKhD,MAAM,wBAAwB,SAAS,WACnC,UAAU,KAAK,OAAO;EAAE,GAAG;EAAG,UAAU,QAAQ;EAAU,EAAE,GAC5D;CAEJ,MAAM,SAAS,MAAM,sBAAsB;EACzC,WAAW;EACX,aAAa,CACX;GACE,iBAAiB;GACjB,QAAQ;GACR,UAAU,SAAS,YAAY,SAAS,KAAK,KAAK,CAAC;GACnD,MAAM,SAAS,QAAQ;GACxB,CACF;EACD,WAAW,OAAO,aAAa;EAC/B,QAAQ,SAAS;EAClB,CAAC;CAEF,MAAM,qBACJ,OAAO,SAAS,YAAY;CAC9B,MAAM,YAAY,oBAAoB,YAAY,EAAE,EAAE,IAAI,UAAU;CACpE,MAAM,qBAAqB,SAAS,KAAK,MAAM,EAAE,SAAS;AAE1D,KAAI,CAAC,oBAAoB,QAAQ;AAC/B,MAAI,MAAM;GAAE;GAAU;GAAoB,EAAE,2BAA2B;EACvE,MAAM,YAAY,SAAS,MAAM,MAAM,EAAE,YAAY,SAAS,EAAE;AAChE,QAAM,IAAI,MAAM,aAAa,2BAA2B;;CAG1D,MAAM,SAAS,mBAAmB;CAClC,MAAM,SAAS,OAAO,QAAQ;AAC9B,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,wDAAwD;CAE1E,MAAM,kBAAkB,sBAAsB,GAAI;CAClD,MAAM,eACJ,OAAO,YAAY,OAAO,aAAa,kBAAkB,kBAAkB,KAAA;AAE7E,QAAO;EACL,MAAM,OAAO;EACb,UAAU,OAAO,YAAY;EAC7B,GAAI,OAAO,QAAQ,EAAE,UAAU,SAAS,UAAU,GAAG,EAAE;EACvD;EACA,GAAI,eAAe,EAAE,cAAc,GAAG,EAAE;EACxC;EACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/voice/stt/types.ts"],"sourcesContent":["/**\n * STT public types — data shapes consumed by downstream code (channels,\n * schema validation, gateway payloads).\n *\n * Provider implementations live behind `MediaUnderstandingProvider.transcribeAudio`\n * (see src/media-understanding/types.ts).\n */\n\nexport interface STTResult {\n /** Transcribed text. */\n text: string;\n /** Provider that performed the transcription (e.g. \"alibaba\", \"openai\"). */\n provider: string;\n /** Audio duration in seconds (if reported). */\n duration?: number;\n /** Detected language (if reported). */\n language?: string;\n}\n\nexport interface STTOptions {\n /** Language hint (e.g. 'zh', 'en'). */\n language?: string;\n /** Model id (provider-specific). */\n model?: string;\n /** Original upload metadata propagated to provider multipart/data URLs. */\n mime?: string;\n fileName?: string;\n signal?: AbortSignal;\n}\n\nexport type { MediaUnderstandingModelEntry } from '../../media-understanding/types.js';\nimport type { MediaUnderstandingModelEntry } from '../../media-understanding/types.js';\n\n/** STTConfig consumed by the schema and downstream wiring. */\nexport interface STTConfig {\n enabled: boolean;\n provider: string;\n /** Capability-local model chain (`tools.media.audio.models`). */\n models?: MediaUnderstandingModelEntry[];\n /** Shared model entries merged from `tools.media.models` at runtime. */\n sharedModels?: MediaUnderstandingModelEntry[];\n /** Provider settings map (`tools.media.audio.providers.<id>`). */\n providers?: Record<string, Record<string, unknown>>;\n fallback?: {\n enabled: boolean;\n order: string[];\n };\n /** Hard timeout per provider call (ms). Default 60s. */\n timeoutMs?: number;\n}\n\nexport type STTProviderAttemptOutcome = 'success' | 'skipped' | 'failed';\n\nexport type STTProviderFailureReason =\n | 'success'\n | 'not_configured'\n | 'timeout'\n | 'provider_error'\n | 'unsupported_format'\n | 'unknown';\n\nexport interface STTProviderAttempt {\n provider: string;\n outcome: STTProviderAttemptOutcome;\n reasonCode: STTProviderFailureReason;\n latencyMs: number;\n error?: string;\n}\n\nexport interface STTResultWithTracking extends STTResult {\n attempts: STTProviderAttempt[];\n fallbackFrom?: string;\n attemptedProviders: string[];\n}\n\nexport const DEFAULT_STT_CONFIG: STTConfig = {\n enabled: true,\n provider: 'xopc-local',\n providers: {\n 'xopc-local': { model: 'sensevoice-small' },\n alibaba: { model: 'paraformer-v2' },\n openai: { model: 'whisper-1' },\n },\n fallback: {\n enabled: false,\n order: ['xopc-local'],\n },\n timeoutMs: 60_000,\n};\n"],"mappings":";AA2EA,MAAa,qBAAgC;CAC3C,SAAS;CACT,UAAU;CACV,WAAW;EACT,cAAc,EAAE,OAAO,oBAAoB;EAC3C,SAAS,EAAE,OAAO,iBAAiB;EACnC,QAAQ,EAAE,OAAO,aAAa;EAC/B;CACD,UAAU;EACR,SAAS;EACT,OAAO,CAAC,aAAa;EACtB;CACD,WAAW;CACZ"}