@xopcai/xopc 0.0.148 → 0.0.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2908) 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-B5h0UGWn.js → activity-store-B3YP7y9d.js} +1 -1
  158. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Dy5VvLUq.js → agent-avatar-dicebear-BaP05tRU.js} +1 -1
  159. package/dist/gateway/static/root/assets/agents-QArUBYV7.js +2 -0
  160. package/dist/gateway/static/root/assets/{api-B3J2AmQW.js → api-BirUfJgj.js} +1 -1
  161. package/dist/gateway/static/root/assets/{app-management-settings-panel-BbSLDubO.js → app-management-settings-panel-D5Cg_a6I.js} +1 -1
  162. package/dist/gateway/static/root/assets/{appearance-settings-D9wK0UKA.js → appearance-settings-BBsAkJ56.js} +1 -1
  163. package/dist/gateway/static/root/assets/apps-page-D1uAUndU.js +1 -0
  164. package/dist/gateway/static/root/assets/{archive-plugin-DaDK-FYa.js → archive-plugin-D3OmrvFx.js} +1 -1
  165. package/dist/gateway/static/root/assets/{attachment-load-CKiBdU_s.js → attachment-load-Cgkm_5mb.js} +1 -1
  166. package/dist/gateway/static/root/assets/{automation-suggestion-card-8Qbnxq-p.js → automation-suggestion-card-CHvxSz-t.js} +1 -1
  167. package/dist/gateway/static/root/assets/automations-page-BWQk03Vu.js +6 -0
  168. package/dist/gateway/static/root/assets/{binary-plugins-ByZbwN2A.js → binary-plugins-dJR5UuzL.js} +1 -1
  169. package/dist/gateway/static/root/assets/{block-editor-DGaI2ucU.js → block-editor-v4_7o92L.js} +5 -5
  170. package/dist/gateway/static/root/assets/browser-settings-page-SruFGuBP.js +8 -0
  171. package/dist/gateway/static/root/assets/{capability-presets-api-DaPf3b5d.js → capability-presets-api-BcTjPLiD.js} +1 -1
  172. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-C0iHFbY9.js → capability-presets-settings-panel-CddBf58y.js} +2 -2
  173. package/dist/gateway/static/root/assets/{channel-recipient-api-DrbkoYyF.js → channel-recipient-api-BbDlMRm5.js} +1 -1
  174. package/dist/gateway/static/root/assets/channels-settings-WI5tQ5tn.js +1 -0
  175. package/dist/gateway/static/root/assets/channels-status-swr-Dt2EROlf.js +1 -0
  176. package/dist/gateway/static/root/assets/{connector-logo-CiHea96v.js → connector-logo-BNthqff-.js} +1 -1
  177. package/dist/gateway/static/root/assets/connectors-page-DavHJ6rR.js +2 -0
  178. package/dist/gateway/static/root/assets/desktop-pet-CVajXkdj.js +1 -0
  179. package/dist/gateway/static/root/assets/desktop-pet-settings-SHI66eIi.js +1 -0
  180. package/dist/gateway/static/root/assets/{directory-picker-path-field-g_N_ROC-.js → directory-picker-path-field-BdWd7m-p.js} +1 -1
  181. package/dist/gateway/static/root/assets/{dreaming-settings-DnEe0Mxg.js → dreaming-settings-CXDhu3Me.js} +3 -3
  182. package/dist/gateway/static/root/assets/{extension-debug-page-DPkoOQED.js → extension-debug-page-CLJTGozU.js} +1 -1
  183. package/dist/gateway/static/root/assets/{extension-page-Cf_gDelx.js → extension-page-ClxpGfzA.js} +1 -1
  184. package/dist/gateway/static/root/assets/{extension-settings-page-YlXpJV9k.js → extension-settings-page-CDA3ZJ8k.js} +1 -1
  185. package/dist/gateway/static/root/assets/{gateway-config-api-BxHgXB-I.js → gateway-config-api-DpXL78pS.js} +1 -1
  186. package/dist/gateway/static/root/assets/gateway-settings-Co-mXFP_.js +1 -0
  187. package/dist/gateway/static/root/assets/{gateway-startup-retry-ChI88pp7.js → gateway-startup-retry-D0SU7dte.js} +1 -1
  188. package/dist/gateway/static/root/assets/{goal-create-dialog-ClzciTH5.js → goal-create-dialog-BO6G--Ec.js} +1 -1
  189. package/dist/gateway/static/root/assets/goal-detail-page-DK8eog4h.js +4 -0
  190. package/dist/gateway/static/root/assets/{goals-config-api-NoJKU8UZ.js → goals-config-api-r71aDqix.js} +1 -1
  191. package/dist/gateway/static/root/assets/goals-page-AcROW97U.js +2 -0
  192. package/dist/gateway/static/root/assets/{goals-settings-kQ1pBOM9.js → goals-settings-CZOLhkTH.js} +1 -1
  193. package/dist/gateway/static/root/assets/{heartbeat-settings-C6jSQCXQ.js → heartbeat-settings-F9S1gIFo.js} +1 -1
  194. package/dist/gateway/static/root/assets/index-C46C7Xee.css +1 -0
  195. package/dist/gateway/static/root/assets/{index-twNrYC3D.js → index-IPmCli0N.js} +70 -70
  196. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CIQ6wLqH.js → keyboard-shortcuts-settings-B3CUVfZ8.js} +1 -1
  197. package/dist/gateway/static/root/assets/local-app-workbench-page-HVq6NUvQ.js +2 -0
  198. package/dist/gateway/static/root/assets/{local-apps-page-BO6odwNn.js → local-apps-page-n7YJfRkU.js} +1 -1
  199. package/dist/gateway/static/root/assets/{locale-store-BP67jtYG.js → locale-store-BvcHGPHU.js} +1 -1
  200. package/dist/gateway/static/root/assets/logs-page-Dgko6r04.js +7 -0
  201. package/dist/gateway/static/root/assets/{markdown-split-DbJZwtmM.js → markdown-split-1mnXr-JA.js} +1 -1
  202. package/dist/gateway/static/root/assets/{media-plugins-B0WH561o.js → media-plugins-D2bcxXrT.js} +1 -1
  203. package/dist/gateway/static/root/assets/messages-BH7paqYt.js +5 -0
  204. package/dist/gateway/static/root/assets/models-hub-panel-DD0cEfmR.js +2 -0
  205. package/dist/gateway/static/root/assets/{notes-page-B72S7M1Z.js → notes-page-Wjc2utlj.js} +1 -1
  206. package/dist/gateway/static/root/assets/notes-workbench-BkA2yg9K.js +4 -0
  207. package/dist/gateway/static/root/assets/{page-tabs-LjSEtOvG.js → page-tabs-vdljrKuG.js} +1 -1
  208. package/dist/gateway/static/root/assets/{preview-open-alternatives-Cn8Jp9jw.js → preview-open-alternatives-BHki0l-E.js} +1 -1
  209. package/dist/gateway/static/root/assets/project-detail-page-CXwVNLgg.js +1 -0
  210. package/dist/gateway/static/root/assets/projects-page-DlfvNcLh.js +1 -0
  211. package/dist/gateway/static/root/assets/remote-access-hub-BQyEX2Ui.js +1 -0
  212. package/dist/gateway/static/root/assets/{save-bar-controls-BDUPII5R.js → save-bar-controls-Vy4EmvEh.js} +1 -1
  213. package/dist/gateway/static/root/assets/{schedule-field-B1NY9MNs.js → schedule-field-CVcwC7k_.js} +1 -1
  214. package/dist/gateway/static/root/assets/{schema-form-CnsFMun1.js → schema-form-DhMA1vkR.js} +1 -1
  215. package/dist/gateway/static/root/assets/sessions-page-CqQEW8oT.js +1 -0
  216. package/dist/gateway/static/root/assets/settings-advanced-gate-M8fleFSc.js +1 -0
  217. package/dist/gateway/static/root/assets/{settings-collapsible-section-D9jJ6KlR.js → settings-collapsible-section-C0xcL0vB.js} +1 -1
  218. package/dist/gateway/static/root/assets/{settings-form-section-36IjMuUY.js → settings-form-section-Cgj4iVpx.js} +1 -1
  219. package/dist/gateway/static/root/assets/{settings-loading-skeleton-DyYMmawg.js → settings-loading-skeleton-CC_NmD69.js} +1 -1
  220. package/dist/gateway/static/root/assets/{settings-page-yv4TeHfF.js → settings-page-B7_JZ2rM.js} +1 -1
  221. package/dist/gateway/static/root/assets/{settings-page-layout-BAP5LguT.js → settings-page-layout-CKuQT4SG.js} +1 -1
  222. package/dist/gateway/static/root/assets/setup-status-panel-DvR8Y5YN.js +1 -0
  223. package/dist/gateway/static/root/assets/{share-preview-page-BBxZ9lX5.js → share-preview-page-BmVw-6SJ.js} +1 -1
  224. package/dist/gateway/static/root/assets/shares-settings-C0JYYhGx.js +1 -0
  225. package/dist/gateway/static/root/assets/skill-reload-api-DBFBczqN.js +1 -0
  226. package/dist/gateway/static/root/assets/skills-page-KAI9qBDD.js +2 -0
  227. package/dist/gateway/static/root/assets/{system-settings-panel-B3ceUo4i.js → system-settings-panel-D6d8VAk8.js} +1 -1
  228. package/dist/gateway/static/root/assets/{theme-store-_efiWyB8.js → theme-store-EbMQ3TYi.js} +1 -1
  229. package/dist/gateway/static/root/assets/{typed-models-lib-Dp1PvxGZ.js → typed-models-lib-D63hJX-S.js} +1 -1
  230. package/dist/gateway/static/root/assets/{use-channel-catalog-XHelnCa_.js → use-channel-catalog-D-I-qki9.js} +1 -1
  231. package/dist/gateway/static/root/assets/user-context-page-Cuft-EbR.js +1 -0
  232. package/dist/gateway/static/root/assets/{user-profile-fields-editor-nOOg0uBi.js → user-profile-fields-editor-CPaoS8Zl.js} +1 -1
  233. package/dist/gateway/static/root/assets/{user-profile-settings-panel-9fBPCoA9.js → user-profile-settings-panel-Bs13qcx1.js} +1 -1
  234. package/dist/gateway/static/root/assets/{utils-3AORlPIm.js → utils-3mnkFvPw.js} +1 -1
  235. package/dist/gateway/static/root/assets/voice-api-key-field-C716UEi9.js +1 -0
  236. package/dist/gateway/static/root/assets/work-discovery-page-CFSkHa0v.js +1 -0
  237. package/dist/gateway/static/root/assets/work-item-detail-page-DaapBdoZ.js +1 -0
  238. package/dist/gateway/static/root/assets/work-page-DMtX92vs.js +1 -0
  239. package/dist/gateway/static/root/assets/workflow-run-setup-panel-B9FnZNWZ.js +3 -0
  240. package/dist/gateway/static/root/assets/workflows-page-BgvE0_Iv.js +11 -0
  241. package/dist/gateway/static/root/favicon.svg +1 -187
  242. package/dist/gateway/static/root/index.html +7 -7
  243. package/dist/gateway/static/root/logo-dark.svg +1 -185
  244. package/dist/gateway/static/root/logo.svg +1 -185
  245. package/dist/package.js +1 -3
  246. package/dist/src/activity/context.js +0 -2
  247. package/dist/src/activity/emitter.js +0 -2
  248. package/dist/src/activity/service.js +0 -2
  249. package/dist/src/agent/agent-manager.js +0 -2
  250. package/dist/src/agent/agent-scope.js +0 -2
  251. package/dist/src/agent/background-review/coordinator.js +0 -2
  252. package/dist/src/agent/background-review/prompts.js +0 -2
  253. package/dist/src/agent/background-review/run-background-review.js +0 -2
  254. package/dist/src/agent/background-review/settings.js +0 -2
  255. package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
  256. package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
  257. package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
  258. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
  259. package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
  260. package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
  261. package/dist/src/agent/capabilities/definitions.js +0 -2
  262. package/dist/src/agent/capabilities/registry.js +0 -2
  263. package/dist/src/agent/child-agent-factory.js +0 -2
  264. package/dist/src/agent/client-error-format.js +0 -2
  265. package/dist/src/agent/code-intelligence/binary.js +0 -2
  266. package/dist/src/agent/code-intelligence/runtime.js +0 -2
  267. package/dist/src/agent/code-intelligence/tools.js +0 -2
  268. package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
  269. package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
  270. package/dist/src/agent/context/project-context.js +0 -2
  271. package/dist/src/agent/context/workspace-seed.js +0 -2
  272. package/dist/src/agent/context/workspace-state.js +0 -2
  273. package/dist/src/agent/context/workspace.js +0 -2
  274. package/dist/src/agent/embedded/run-for-session.js +0 -2
  275. package/dist/src/agent/embedded/run-turn.js +0 -2
  276. package/dist/src/agent/embedded/runs.js +0 -2
  277. package/dist/src/agent/embedded/session-manager-init.js +0 -2
  278. package/dist/src/agent/embedded/session-runner.js +0 -2
  279. package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
  280. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
  281. package/dist/src/agent/embedded/subscribe-session.js +0 -2
  282. package/dist/src/agent/embedded/system-prompt-override.js +0 -2
  283. package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
  284. package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
  285. package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
  286. package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
  287. package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
  288. package/dist/src/agent/failover-error.js +0 -2
  289. package/dist/src/agent/fallback/candidates.js +0 -2
  290. package/dist/src/agent/fallback/reason.js +0 -2
  291. package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
  292. package/dist/src/agent/goals/checklist-judge.js +0 -2
  293. package/dist/src/agent/goals/checklist-types.js +0 -2
  294. package/dist/src/agent/goals/evaluate-turn.js +0 -2
  295. package/dist/src/agent/goals/goal-locale.js +0 -2
  296. package/dist/src/agent/goals/judge.js +0 -2
  297. package/dist/src/agent/goals/persistent-goal-service.js +0 -2
  298. package/dist/src/agent/goals/post-turn.js +0 -2
  299. package/dist/src/agent/goals/state.js +0 -2
  300. package/dist/src/agent/image/generation/bundled-registry.js +0 -2
  301. package/dist/src/agent/image/generation/bundled.js +0 -2
  302. package/dist/src/agent/image/generation/image-assets.js +0 -2
  303. package/dist/src/agent/image/generation/model-ref.js +0 -2
  304. package/dist/src/agent/image/generation/normalization.js +0 -2
  305. package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
  306. package/dist/src/agent/image/generation/provider-registry.js +0 -2
  307. package/dist/src/agent/image/generation/runtime.js +0 -2
  308. package/dist/src/agent/image/image-helpers.js +0 -2
  309. package/dist/src/agent/image/image-model-fallback.js +0 -2
  310. package/dist/src/agent/image/inbound-image-handling.js +0 -2
  311. package/dist/src/agent/image/load-image-media.js +0 -2
  312. package/dist/src/agent/image/tool-model-config.js +0 -2
  313. package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
  314. package/dist/src/agent/image/understanding/provider-registry.js +0 -2
  315. package/dist/src/agent/image/understanding/runtime.js +0 -2
  316. package/dist/src/agent/image/vision-detection.js +0 -2
  317. package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
  318. package/dist/src/agent/inbound/inbound-loop.js +0 -2
  319. package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
  320. package/dist/src/agent/ipc/bus.js +0 -2
  321. package/dist/src/agent/ipc/inbox.js +0 -2
  322. package/dist/src/agent/ipc/socket.js +0 -2
  323. package/dist/src/agent/ipc/types.js +0 -2
  324. package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
  325. package/dist/src/agent/lifecycle/hook-handler.js +0 -2
  326. package/dist/src/agent/lifecycle/manager.js +0 -2
  327. package/dist/src/agent/lifecycle/progress.js +0 -2
  328. package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
  329. package/dist/src/agent/lifecycle/typing.js +0 -2
  330. package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
  331. package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
  332. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
  333. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
  334. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
  335. package/dist/src/agent/mcp/embedded-mcp.js +0 -2
  336. package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
  337. package/dist/src/agent/mcp/mcp-http.js +0 -2
  338. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
  339. package/dist/src/agent/mcp/mcp-stdio.js +0 -2
  340. package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
  341. package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
  342. package/dist/src/agent/mcp/mcp-transport.js +0 -2
  343. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
  344. package/dist/src/agent/media-generation/model-ref.js +0 -2
  345. package/dist/src/agent/media-generation/normalization.types.js +0 -2
  346. package/dist/src/agent/media-generation/runtime-shared.js +0 -2
  347. package/dist/src/agent/memory/agent-message-access.js +0 -2
  348. package/dist/src/agent/memory/builtin-memory-store.js +0 -2
  349. package/dist/src/agent/memory/builtin-provider.js +0 -2
  350. package/dist/src/agent/memory/compaction.js +0 -2
  351. package/dist/src/agent/memory/context/planner.js +0 -2
  352. package/dist/src/agent/memory/context-fence.js +0 -2
  353. package/dist/src/agent/memory/create-memory-manager.js +0 -2
  354. package/dist/src/agent/memory/dreaming/config.js +0 -2
  355. package/dist/src/agent/memory/dreaming/constants.js +0 -2
  356. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
  357. package/dist/src/agent/memory/dreaming/events.js +0 -2
  358. package/dist/src/agent/memory/dreaming/last-run.js +0 -2
  359. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
  360. package/dist/src/agent/memory/dreaming/preview.js +0 -2
  361. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
  362. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
  363. package/dist/src/agent/memory/dreaming/scope.js +0 -2
  364. package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
  365. package/dist/src/agent/memory/dreaming/utils.js +0 -2
  366. package/dist/src/agent/memory/lifecycle.js +0 -2
  367. package/dist/src/agent/memory/manager.js +0 -2
  368. package/dist/src/agent/memory/memory-config.js +0 -2
  369. package/dist/src/agent/memory/message-sanitizer.js +0 -2
  370. package/dist/src/agent/memory/plugin-discovery.js +0 -2
  371. package/dist/src/agent/memory/sensitivity.js +0 -2
  372. package/dist/src/agent/memory/source-origin.js +0 -2
  373. package/dist/src/agent/memory/stub-memory-provider.js +0 -2
  374. package/dist/src/agent/memory/summary-generator.js +0 -2
  375. package/dist/src/agent/memory/understanding/correction.js +0 -2
  376. package/dist/src/agent/memory/understanding/quality.js +0 -2
  377. package/dist/src/agent/memory/understanding/service.js +0 -2
  378. package/dist/src/agent/memory/user-context-coordinator.js +0 -2
  379. package/dist/src/agent/memory/user-message-text.js +0 -2
  380. package/dist/src/agent/memory/window.js +0 -2
  381. package/dist/src/agent/messaging/command-handler.js +0 -2
  382. package/dist/src/agent/messaging/message-router.js +0 -2
  383. package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
  384. package/dist/src/agent/messaging/stream-manager.js +0 -2
  385. package/dist/src/agent/middleware/context.js +0 -2
  386. package/dist/src/agent/middleware/self-verify.js +0 -2
  387. package/dist/src/agent/models/manager.js +0 -2
  388. package/dist/src/agent/models/request-limiter.js +0 -2
  389. package/dist/src/agent/models/selection.js +0 -2
  390. package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
  391. package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
  392. package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
  393. package/dist/src/agent/orchestration/loop-guard.js +0 -2
  394. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
  395. package/dist/src/agent/prompt/cache-boundary.js +0 -2
  396. package/dist/src/agent/prompt/memory/index.js +0 -2
  397. package/dist/src/agent/prompt/safety.js +0 -2
  398. package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
  399. package/dist/src/agent/prompt/sections/behavior.js +0 -2
  400. package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
  401. package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
  402. package/dist/src/agent/prompt/sections/project-context.js +0 -2
  403. package/dist/src/agent/prompt/sections/tooling.js +0 -2
  404. package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
  405. package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
  406. package/dist/src/agent/prompt/subagent-context.js +0 -2
  407. package/dist/src/agent/prompt/system-prompt-params.js +0 -2
  408. package/dist/src/agent/prompt/system-prompt.js +0 -2
  409. package/dist/src/agent/prompt/system-reminder.js +0 -2
  410. package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
  411. package/dist/src/agent/reply/post-compaction-context.js +0 -2
  412. package/dist/src/agent/reply/startup-context.js +0 -2
  413. package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
  414. package/dist/src/agent/sandbox/command-validator.js +0 -2
  415. package/dist/src/agent/sandbox/exec-policy.js +0 -2
  416. package/dist/src/agent/sandbox/path-policy.js +0 -2
  417. package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
  418. package/dist/src/agent/sandbox/types.js +0 -2
  419. package/dist/src/agent/service/async-queue.js +0 -2
  420. package/dist/src/agent/service/btw-query.js +0 -2
  421. package/dist/src/agent/service/build-direct-message-content.js +0 -2
  422. package/dist/src/agent/service/direct-turn-helpers.js +0 -2
  423. package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
  424. package/dist/src/agent/service/process-direct-one-shot.js +0 -2
  425. package/dist/src/agent/service/process-direct-streaming.js +0 -2
  426. package/dist/src/agent/service/session-context-report.js +0 -2
  427. package/dist/src/agent/service/webchat-tts.js +0 -2
  428. package/dist/src/agent/service-inbound-utils.js +0 -2
  429. package/dist/src/agent/service.js +0 -2
  430. package/dist/src/agent/session/session-config-service.js +0 -2
  431. package/dist/src/agent/session/session-context.js +0 -2
  432. package/dist/src/agent/session/session-hydrator.js +0 -2
  433. package/dist/src/agent/session/session-inspector.js +0 -2
  434. package/dist/src/agent/session/session-lifecycle.js +0 -2
  435. package/dist/src/agent/session/session-state-bag.js +0 -2
  436. package/dist/src/agent/session/tracker.js +0 -2
  437. package/dist/src/agent/skills/config.js +0 -2
  438. package/dist/src/agent/skills/filesystem-watcher.js +0 -2
  439. package/dist/src/agent/skills/format-skills-prompt.js +0 -2
  440. package/dist/src/agent/skills/hub-hash.js +0 -2
  441. package/dist/src/agent/skills/hub-lock.js +0 -2
  442. package/dist/src/agent/skills/hub-pull.js +0 -2
  443. package/dist/src/agent/skills/index.js +0 -2
  444. package/dist/src/agent/skills/install-target.js +0 -2
  445. package/dist/src/agent/skills/installer.js +0 -2
  446. package/dist/src/agent/skills/managed-store.js +0 -2
  447. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
  448. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
  449. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
  450. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
  451. package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
  452. package/dist/src/agent/skills/marketplace/registry.js +0 -2
  453. package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
  454. package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
  455. package/dist/src/agent/skills/required-env-vars.js +0 -2
  456. package/dist/src/agent/skills/scanner.js +0 -2
  457. package/dist/src/agent/skills/skill-manage-ops.js +0 -2
  458. package/dist/src/agent/skills/skill-manager.js +0 -2
  459. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
  460. package/dist/src/agent/skills/skill-tool-gating.js +0 -2
  461. package/dist/src/agent/skills/skill-view-path.js +0 -2
  462. package/dist/src/agent/skills/skills-marketplace.js +0 -2
  463. package/dist/src/agent/skills/test-framework.js +0 -2
  464. package/dist/src/agent/skills/watcher.js +0 -2
  465. package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
  466. package/dist/src/agent/source-context/injector.js +0 -2
  467. package/dist/src/agent/source-context/types.js +0 -2
  468. package/dist/src/agent/starter-agents.js +0 -2
  469. package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
  470. package/dist/src/agent/tool-manuals/browser.js +0 -2
  471. package/dist/src/agent/tool-manuals/index.js +0 -2
  472. package/dist/src/agent/tool-manuals/xopc-use.js +0 -2
  473. package/dist/src/agent/tools/apply-patch.js +0 -2
  474. package/dist/src/agent/tools/automation-tool.js +0 -2
  475. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
  476. package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
  477. package/dist/src/agent/tools/chain-tracker.js +0 -2
  478. package/dist/src/agent/tools/clarify-tool.js +0 -2
  479. package/dist/src/agent/tools/cli-clarify.js +0 -2
  480. package/dist/src/agent/tools/communication.js +0 -2
  481. package/dist/src/agent/tools/composio-tool.js +0 -2
  482. package/dist/src/agent/tools/concurrency.js +0 -2
  483. package/dist/src/agent/tools/create-share-tool.js +0 -2
  484. package/dist/src/agent/tools/curated-memory-tool.js +0 -2
  485. package/dist/src/agent/tools/delegate-tool.js +0 -2
  486. package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
  487. package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
  488. package/dist/src/agent/tools/dreaming-tool.js +0 -2
  489. package/dist/src/agent/tools/edit-diff.js +0 -2
  490. package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
  491. package/dist/src/agent/tools/error-tracker.js +0 -2
  492. package/dist/src/agent/tools/exec-command.js +0 -2
  493. package/dist/src/agent/tools/execute-code-tool.js +0 -2
  494. package/dist/src/agent/tools/executor.js +0 -2
  495. package/dist/src/agent/tools/factory.js +0 -2
  496. package/dist/src/agent/tools/find.js +0 -2
  497. package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
  498. package/dist/src/agent/tools/goal-tool.js +0 -2
  499. package/dist/src/agent/tools/grep.js +0 -2
  500. package/dist/src/agent/tools/image-generate-tool.js +0 -2
  501. package/dist/src/agent/tools/image-tool.js +0 -2
  502. package/dist/src/agent/tools/list-dir.js +0 -2
  503. package/dist/src/agent/tools/media-read-tool.js +0 -2
  504. package/dist/src/agent/tools/memory-tool.js +0 -2
  505. package/dist/src/agent/tools/metadata.js +0 -2
  506. package/dist/src/agent/tools/read.js +0 -2
  507. package/dist/src/agent/tools/search/http.js +0 -2
  508. package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
  509. package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
  510. package/dist/src/agent/tools/search/providers/brave.js +0 -2
  511. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
  512. package/dist/src/agent/tools/search/providers/searxng.js +0 -2
  513. package/dist/src/agent/tools/search/providers/tavily.js +0 -2
  514. package/dist/src/agent/tools/search/region.js +0 -2
  515. package/dist/src/agent/tools/search/registry.js +0 -2
  516. package/dist/src/agent/tools/search/resolve-config.js +0 -2
  517. package/dist/src/agent/tools/send-media.js +0 -2
  518. package/dist/src/agent/tools/session-search-tool.js +0 -2
  519. package/dist/src/agent/tools/session-status-tool.js +0 -2
  520. package/dist/src/agent/tools/skill-install-tool.js +0 -2
  521. package/dist/src/agent/tools/skill-manage-tool.js +0 -2
  522. package/dist/src/agent/tools/skills-tools.js +0 -2
  523. package/dist/src/agent/tools/structured-output.js +0 -2
  524. package/dist/src/agent/tools/todo-tool.js +0 -2
  525. package/dist/src/agent/tools/tool-manual-tool.js +0 -2
  526. package/dist/src/agent/tools/tool-paths.js +0 -2
  527. package/dist/src/agent/tools/truncate.js +0 -2
  528. package/dist/src/agent/tools/tts-tool.js +0 -2
  529. package/dist/src/agent/tools/update-plan-tool.js +0 -2
  530. package/dist/src/agent/tools/url-safety.js +0 -2
  531. package/dist/src/agent/tools/usage-analyzer.js +0 -2
  532. package/dist/src/agent/tools/web-extract.js +0 -2
  533. package/dist/src/agent/tools/web.js +4 -4
  534. package/dist/src/agent/tools/workflow-tool.js +0 -2
  535. package/dist/src/agent/tools/write.js +0 -2
  536. package/dist/src/agent/tools/xopc-use-tool.js +0 -2
  537. package/dist/src/agent/transcript/google-api.js +0 -2
  538. package/dist/src/agent/transcript/model-selection.js +0 -2
  539. package/dist/src/agent/transcript/provider-capabilities.js +0 -2
  540. package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
  541. package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
  542. package/dist/src/agent/transcript/thinking-types.js +0 -2
  543. package/dist/src/agent/transcript/thinking.js +0 -2
  544. package/dist/src/agent/transcript/tool-call-id.js +0 -2
  545. package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
  546. package/dist/src/agent/transcript/transcript-policy.js +0 -2
  547. package/dist/src/agent/workflow/agent-progress.js +0 -2
  548. package/dist/src/agent/workflow/builtins/index.js +0 -2
  549. package/dist/src/agent/workflow/catalog.js +0 -2
  550. package/dist/src/agent/workflow/progress-broker.js +0 -2
  551. package/dist/src/agent/workflow/snapshot-empty.js +0 -2
  552. package/dist/src/agent/workflow/snapshot.js +0 -2
  553. package/dist/src/agent/workflow/step-labels.js +0 -2
  554. package/dist/src/agent/workflow/structured-output-tool.js +0 -2
  555. package/dist/src/agent/workflow/subagent-runner.js +0 -2
  556. package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
  557. package/dist/src/agent/workspace-runtime/registry.js +0 -2
  558. package/dist/src/agent-manifest/index.js +0 -2
  559. package/dist/src/agent-manifest/preset-chain.js +0 -2
  560. package/dist/src/agent-manifest/prompt.js +0 -2
  561. package/dist/src/agent-manifest/resolver.js +0 -2
  562. package/dist/src/agent-manifest/schema.js +0 -2
  563. package/dist/src/agent-manifest/validator.js +0 -2
  564. package/dist/src/agent-runtime/boundary-guard.js +0 -2
  565. package/dist/src/agent-runtime/memory-runtime.js +0 -2
  566. package/dist/src/agent-runtime/model-router.js +0 -2
  567. package/dist/src/agent-runtime/run-trace.js +0 -2
  568. package/dist/src/agent-runtime/runtime-profile.js +0 -2
  569. package/dist/src/agent-runtime/tool-registry.js +0 -2
  570. package/dist/src/agent-runtime/workflow-runtime.js +0 -2
  571. package/dist/src/ai-assist/text-assist.js +0 -2
  572. package/dist/src/auth/credentials.js +0 -2
  573. package/dist/src/auth/index.js +0 -2
  574. package/dist/src/auth/oauth/anthropic.js +0 -2
  575. package/dist/src/auth/oauth/github-copilot.js +0 -2
  576. package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
  577. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
  578. package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
  579. package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
  580. package/dist/src/auth/oauth/kimi-coding.js +0 -2
  581. package/dist/src/auth/oauth/minimax-cn.js +0 -2
  582. package/dist/src/auth/oauth/minimax.js +0 -2
  583. package/dist/src/auth/oauth/openai-codex.js +0 -2
  584. package/dist/src/auth/oauth/pkce.js +0 -2
  585. package/dist/src/auth/profiles/oauth.js +0 -2
  586. package/dist/src/auth/profiles/order.js +0 -2
  587. package/dist/src/auth/profiles/profiles.js +0 -2
  588. package/dist/src/auth/profiles/store.js +0 -2
  589. package/dist/src/auth/sync-provider-auth.js +0 -2
  590. package/dist/src/automations/api/routes.js +0 -2
  591. package/dist/src/automations/domain/schedule.js +0 -2
  592. package/dist/src/automations/domain/validation.js +0 -2
  593. package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
  594. package/dist/src/automations/draft/automation-draft-service.js +0 -2
  595. package/dist/src/automations/draft/automation-draft-validator.js +0 -2
  596. package/dist/src/automations/product-events.js +0 -2
  597. package/dist/src/automations/service/action-executor.js +0 -2
  598. package/dist/src/automations/service/automation-service.js +0 -2
  599. package/dist/src/automations/storage/automation-repository.js +0 -2
  600. package/dist/src/automations/storage/automation-run-repository.js +0 -2
  601. package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
  602. package/dist/src/browser/actions/registry.js +0 -2
  603. package/dist/src/browser/backend-from-config.js +0 -2
  604. package/dist/src/browser/browser-command-timeout.js +0 -2
  605. package/dist/src/browser/cache-dir-policy.js +0 -2
  606. package/dist/src/browser/cdp-local-launcher.js +0 -2
  607. package/dist/src/browser/cdp-supervisor.js +0 -2
  608. package/dist/src/browser/free-port.js +0 -2
  609. package/dist/src/browser/humanize.js +0 -2
  610. package/dist/src/browser/install-lock.js +0 -2
  611. package/dist/src/browser/manager.js +0 -2
  612. package/dist/src/browser/pipeline/output.js +0 -2
  613. package/dist/src/browser/pipeline/runner.js +0 -2
  614. package/dist/src/browser/pipeline/schema.js +0 -2
  615. package/dist/src/browser/pipeline/source.js +0 -2
  616. package/dist/src/browser/pipeline/template.js +0 -2
  617. package/dist/src/browser/providers/browser-ext-install.js +0 -2
  618. package/dist/src/browser/providers/browser-use.js +0 -2
  619. package/dist/src/browser/providers/browserbase.js +0 -2
  620. package/dist/src/browser/providers/cloakbrowser.js +0 -2
  621. package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
  622. package/dist/src/browser/providers/extension.js +0 -2
  623. package/dist/src/browser/providers/playwright-doctor.js +13 -4
  624. package/dist/src/browser/providers/playwright-install.js +0 -2
  625. package/dist/src/browser/readiness.js +0 -2
  626. package/dist/src/browser/schemas.js +0 -2
  627. package/dist/src/browser/session-lifecycle.js +0 -2
  628. package/dist/src/browser/snapshot-helpers.js +0 -2
  629. package/dist/src/browser/stealth.js +0 -2
  630. package/dist/src/browser/url-policy.js +0 -2
  631. package/dist/src/capabilities/store-connector.js +0 -2
  632. package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
  633. package/dist/src/channels/attachments/inbound-persist.js +0 -2
  634. package/dist/src/channels/attachments/inbound-types.js +0 -2
  635. package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
  636. package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
  637. package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
  638. package/dist/src/channels/config-helpers.js +0 -2
  639. package/dist/src/channels/envelope-timestamp.js +0 -2
  640. package/dist/src/channels/exec-approval-runtime.js +0 -2
  641. package/dist/src/channels/health-monitor.js +0 -2
  642. package/dist/src/channels/heartbeat-scheduler.js +0 -2
  643. package/dist/src/channels/internal-outbound.js +0 -2
  644. package/dist/src/channels/lifecycle-supervisor.js +0 -2
  645. package/dist/src/channels/manager.js +0 -2
  646. package/dist/src/channels/media.js +0 -2
  647. package/dist/src/channels/outbound/deliver.js +0 -2
  648. package/dist/src/channels/outbound/normalize.js +0 -2
  649. package/dist/src/channels/outbound/persist-store.js +0 -2
  650. package/dist/src/channels/outbound/queue.js +0 -2
  651. package/dist/src/channels/outbound-sender.js +0 -2
  652. package/dist/src/channels/pairing/allow-from-file.js +0 -2
  653. package/dist/src/channels/pairing/approve-cli.js +0 -2
  654. package/dist/src/channels/pairing/pairing-challenge.js +0 -2
  655. package/dist/src/channels/pairing/pairing-constants.js +0 -2
  656. package/dist/src/channels/pairing/pairing-events.js +0 -2
  657. package/dist/src/channels/pairing/pairing-messages.js +0 -2
  658. package/dist/src/channels/pairing/pairing-service.js +0 -2
  659. package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
  660. package/dist/src/channels/pairing/pairing-store.js +0 -2
  661. package/dist/src/channels/pairing/paths.js +0 -2
  662. package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
  663. package/dist/src/channels/pipeline.js +0 -2
  664. package/dist/src/channels/plugin-registry.js +0 -2
  665. package/dist/src/channels/plugins/registry.js +0 -2
  666. package/dist/src/channels/restart-policy.js +0 -2
  667. package/dist/src/channels/security-helpers.js +0 -2
  668. package/dist/src/channels/security.js +0 -2
  669. package/dist/src/channels/setup-wizard-discovery.js +0 -2
  670. package/dist/src/chat-commands/agent-edit.js +0 -2
  671. package/dist/src/chat-commands/builtins/config.js +0 -2
  672. package/dist/src/chat-commands/builtins/context.js +0 -2
  673. package/dist/src/chat-commands/builtins/goal.js +0 -2
  674. package/dist/src/chat-commands/builtins/model.js +0 -2
  675. package/dist/src/chat-commands/builtins/review.js +0 -2
  676. package/dist/src/chat-commands/builtins/session.js +0 -2
  677. package/dist/src/chat-commands/builtins/skill.js +0 -2
  678. package/dist/src/chat-commands/builtins/subgoal.js +0 -2
  679. package/dist/src/chat-commands/builtins/system.js +0 -2
  680. package/dist/src/chat-commands/builtins/thinking.js +0 -2
  681. package/dist/src/chat-commands/builtins/tts.js +0 -2
  682. package/dist/src/chat-commands/builtins/workflow.js +0 -2
  683. package/dist/src/chat-commands/command-parse.js +0 -2
  684. package/dist/src/chat-commands/config-paths.js +0 -2
  685. package/dist/src/chat-commands/config-value.js +0 -2
  686. package/dist/src/chat-commands/context.js +0 -2
  687. package/dist/src/chat-commands/format-output.js +0 -2
  688. package/dist/src/chat-commands/index.js +0 -2
  689. package/dist/src/chat-commands/processor.js +0 -2
  690. package/dist/src/chat-commands/registry.js +0 -2
  691. package/dist/src/chat-commands/session-key.js +0 -2
  692. package/dist/src/cli/argv-invocation.js +0 -2
  693. package/dist/src/cli/argv.js +0 -2
  694. package/dist/src/cli/bin.js +0 -2
  695. package/dist/src/cli/cli-log-level-preset.js +0 -2
  696. package/dist/src/cli/command-catalog.js +0 -2
  697. package/dist/src/cli/command-loaders.js +0 -2
  698. package/dist/src/cli/command-manifest.js +0 -2
  699. package/dist/src/cli/command-path-matches.js +0 -2
  700. package/dist/src/cli/command-path-policy.js +0 -2
  701. package/dist/src/cli/command-startup-policy.js +0 -2
  702. package/dist/src/cli/commands/agent/interactive.js +0 -2
  703. package/dist/src/cli/commands/agent/sessions.js +0 -2
  704. package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
  705. package/dist/src/cli/commands/agent.js +0 -2
  706. package/dist/src/cli/commands/agents.js +0 -2
  707. package/dist/src/cli/commands/auth.js +0 -2
  708. package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
  709. package/dist/src/cli/commands/browser.js +0 -2
  710. package/dist/src/cli/commands/channels.js +0 -2
  711. package/dist/src/cli/commands/config.js +0 -2
  712. package/dist/src/cli/commands/connectors.js +0 -2
  713. package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
  714. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
  715. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
  716. package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
  717. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -3
  718. package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
  719. package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
  720. package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
  721. package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
  722. package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
  723. package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
  724. package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
  725. package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
  726. package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
  727. package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
  728. package/dist/src/cli/commands/doctor/flow.js +0 -2
  729. package/dist/src/cli/commands/doctor/format.js +0 -2
  730. package/dist/src/cli/commands/doctor/index.js +0 -2
  731. package/dist/src/cli/commands/extension-create.js +0 -2
  732. package/dist/src/cli/commands/extension-dev.js +0 -2
  733. package/dist/src/cli/commands/extension-marketplace.js +0 -2
  734. package/dist/src/cli/commands/extension-pack.js +0 -2
  735. package/dist/src/cli/commands/extension.js +0 -2
  736. package/dist/src/cli/commands/gateway/call.js +0 -2
  737. package/dist/src/cli/commands/gateway/health.js +0 -2
  738. package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
  739. package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
  740. package/dist/src/cli/commands/gateway/logs.js +0 -2
  741. package/dist/src/cli/commands/gateway/probe.js +0 -2
  742. package/dist/src/cli/commands/gateway/restart-health.js +0 -2
  743. package/dist/src/cli/commands/gateway/restart.js +0 -2
  744. package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
  745. package/dist/src/cli/commands/gateway/service.js +0 -2
  746. package/dist/src/cli/commands/gateway/shared.js +0 -2
  747. package/dist/src/cli/commands/gateway/status.js +0 -2
  748. package/dist/src/cli/commands/gateway/stop.js +0 -2
  749. package/dist/src/cli/commands/gateway/subcommands.js +0 -2
  750. package/dist/src/cli/commands/gateway/token.js +0 -2
  751. package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
  752. package/dist/src/cli/commands/gateway.js +0 -2
  753. package/dist/src/cli/commands/goal.js +0 -2
  754. package/dist/src/cli/commands/image.js +0 -2
  755. package/dist/src/cli/commands/init.js +0 -2
  756. package/dist/src/cli/commands/logs.js +0 -2
  757. package/dist/src/cli/commands/models.js +0 -2
  758. package/dist/src/cli/commands/onboard/channels/index.js +0 -2
  759. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
  760. package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
  761. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
  762. package/dist/src/cli/commands/onboard/gateway.js +0 -2
  763. package/dist/src/cli/commands/onboard/model.js +0 -2
  764. package/dist/src/cli/commands/onboard.js +0 -2
  765. package/dist/src/cli/commands/profile.js +0 -2
  766. package/dist/src/cli/commands/project.js +0 -2
  767. package/dist/src/cli/commands/providers.js +0 -2
  768. package/dist/src/cli/commands/resume.js +0 -2
  769. package/dist/src/cli/commands/search.js +0 -2
  770. package/dist/src/cli/commands/session/actions.js +0 -2
  771. package/dist/src/cli/commands/session/utils.js +0 -2
  772. package/dist/src/cli/commands/session.js +0 -2
  773. package/dist/src/cli/commands/setup-shared/output.js +0 -2
  774. package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
  775. package/dist/src/cli/commands/setup-shared/runner.js +0 -2
  776. package/dist/src/cli/commands/setup-shared/types.js +0 -2
  777. package/dist/src/cli/commands/setup.js +0 -2
  778. package/dist/src/cli/commands/skills-test.js +0 -2
  779. package/dist/src/cli/commands/skills.js +0 -2
  780. package/dist/src/cli/commands/tailscale.js +0 -2
  781. package/dist/src/cli/commands/tui-runner.js +0 -2
  782. package/dist/src/cli/commands/tui.js +0 -2
  783. package/dist/src/cli/commands/tunnel.js +0 -2
  784. package/dist/src/cli/commands/update.js +0 -2
  785. package/dist/src/cli/commands/voice.js +0 -2
  786. package/dist/src/cli/context.js +0 -2
  787. package/dist/src/cli/extension-cli-register.js +0 -2
  788. package/dist/src/cli/gateway-run-argv.js +0 -2
  789. package/dist/src/cli/gateway-run-fast-path.js +0 -2
  790. package/dist/src/cli/index.js +0 -2
  791. package/dist/src/cli/registry.js +0 -2
  792. package/dist/src/cli/templates.js +0 -2
  793. package/dist/src/cli/utils/colors.js +0 -2
  794. package/dist/src/cli/utils/gateway-client-options.js +0 -2
  795. package/dist/src/cli/utils/gateway-client.js +0 -2
  796. package/dist/src/cli/utils/init-workspace-core.js +0 -2
  797. package/dist/src/cli/utils/init-workspace.js +0 -2
  798. package/dist/src/cli/utils/oauth-login.js +0 -2
  799. package/dist/src/cli/utils/oauth-providers.js +0 -2
  800. package/dist/src/cli/utils/session.js +0 -2
  801. package/dist/src/commands/agents.config.js +0 -2
  802. package/dist/src/config/agent-profile.js +1 -3
  803. package/dist/src/config/agent-typed-models.js +0 -2
  804. package/dist/src/config/commands.flags.js +0 -2
  805. package/dist/src/config/default-model.js +0 -2
  806. package/dist/src/config/diff.js +0 -2
  807. package/dist/src/config/gateway-bind.js +0 -2
  808. package/dist/src/config/index.js +0 -2
  809. package/dist/src/config/loader.js +0 -2
  810. package/dist/src/config/mcp-config-normalize.js +0 -2
  811. package/dist/src/config/model-input.js +0 -2
  812. package/dist/src/config/models-json.js +0 -2
  813. package/dist/src/config/paths-state.js +0 -2
  814. package/dist/src/config/paths.js +0 -2
  815. package/dist/src/config/profile.js +0 -2
  816. package/dist/src/config/public-url.js +0 -2
  817. package/dist/src/config/reload.js +0 -2
  818. package/dist/src/config/resolve-config-value.js +0 -2
  819. package/dist/src/config/rules.js +0 -2
  820. package/dist/src/config/runtime-overrides.js +0 -2
  821. package/dist/src/config/schema.js +0 -2
  822. package/dist/src/config/validate-channel-configs.js +0 -2
  823. package/dist/src/config/voice.js +0 -2
  824. package/dist/src/config/web-patch.js +0 -2
  825. package/dist/src/config/workspace-defaults.js +0 -2
  826. package/dist/src/config/workspace-dirs.js +0 -2
  827. package/dist/src/config/workspace-path-helpers.js +0 -2
  828. package/dist/src/config/workspace-path.js +0 -2
  829. package/dist/src/connectors/approval.js +0 -2
  830. package/dist/src/connectors/auth-provider-registry.js +0 -2
  831. package/dist/src/connectors/builtin-catalog.js +0 -2
  832. package/dist/src/connectors/catalog.js +0 -2
  833. package/dist/src/connectors/composio-catalog.js +0 -2
  834. package/dist/src/connectors/composio-logo.js +0 -2
  835. package/dist/src/connectors/composio-sessions.js +9 -5
  836. package/dist/src/connectors/composio-triggers.js +0 -2
  837. package/dist/src/connectors/composio.js +0 -2
  838. package/dist/src/connectors/connector-memory-sync.js +0 -2
  839. package/dist/src/connectors/health.js +0 -2
  840. package/dist/src/connectors/install.js +0 -2
  841. package/dist/src/connectors/instances.js +0 -2
  842. package/dist/src/connectors/integration-strategy.js +0 -2
  843. package/dist/src/connectors/lifecycle.js +0 -2
  844. package/dist/src/connectors/materialize.js +0 -2
  845. package/dist/src/connectors/policy.js +0 -2
  846. package/dist/src/connectors/providers.js +0 -2
  847. package/dist/src/connectors/registries/modelscope.js +0 -2
  848. package/dist/src/connectors/registries/official-mcp.js +0 -2
  849. package/dist/src/connectors/registries/search.js +0 -2
  850. package/dist/src/connectors/registries/smithery.js +0 -2
  851. package/dist/src/connectors/runtime-adapter-registry.js +0 -2
  852. package/dist/src/connectors/secret-store.js +0 -2
  853. package/dist/src/connectors/setup-secrets.js +0 -2
  854. package/dist/src/connectors/supervisor.js +0 -2
  855. package/dist/src/connectors/usage.js +0 -2
  856. package/dist/src/connectors/workflow-preflight.js +0 -2
  857. package/dist/src/daemon/constants.js +0 -2
  858. package/dist/src/daemon/install-plan.js +0 -2
  859. package/dist/src/daemon/launchd.js +0 -2
  860. package/dist/src/daemon/schtasks.js +0 -2
  861. package/dist/src/daemon/service-audit.js +0 -2
  862. package/dist/src/daemon/service.js +0 -2
  863. package/dist/src/daemon/systemd.js +0 -2
  864. package/dist/src/document-understanding/extract.js +0 -2
  865. package/dist/src/errors/index.js +0 -2
  866. package/dist/src/extensions/activation-context.js +0 -2
  867. package/dist/src/extensions/activation-planner.js +0 -2
  868. package/dist/src/extensions/api.js +0 -2
  869. package/dist/src/extensions/bundle-mcp.js +0 -2
  870. package/dist/src/extensions/bundled-extension-activation.js +0 -2
  871. package/dist/src/extensions/diagnostics.js +0 -2
  872. package/dist/src/extensions/discover-extensions.js +0 -2
  873. package/dist/src/extensions/engine-check.js +0 -2
  874. package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
  875. package/dist/src/extensions/extension-registry-impl.js +0 -2
  876. package/dist/src/extensions/health.js +0 -2
  877. package/dist/src/extensions/hooks.js +0 -2
  878. package/dist/src/extensions/index.js +0 -2
  879. package/dist/src/extensions/install-transaction.js +0 -2
  880. package/dist/src/extensions/install.js +0 -2
  881. package/dist/src/extensions/loader.js +0 -2
  882. package/dist/src/extensions/lockfile.js +0 -2
  883. package/dist/src/extensions/manifest-registry.js +0 -2
  884. package/dist/src/extensions/marketplace.js +0 -2
  885. package/dist/src/extensions/media-provider-contracts.js +0 -2
  886. package/dist/src/extensions/normalize-manifest.js +0 -2
  887. package/dist/src/extensions/onboard-helpers.js +0 -2
  888. package/dist/src/extensions/package-contract.js +0 -2
  889. package/dist/src/extensions/sdk/channel-entry.js +0 -2
  890. package/dist/src/extensions/sdk/channel-helpers.js +0 -2
  891. package/dist/src/extensions/sdk/index.js +0 -2
  892. package/dist/src/extensions/sdk/lazy.js +0 -2
  893. package/dist/src/extensions/sdk/testing.js +0 -2
  894. package/dist/src/extensions/security.js +0 -2
  895. package/dist/src/extensions/slots.js +0 -2
  896. package/dist/src/extensions/speech-provider-contracts.js +0 -2
  897. package/dist/src/extensions/store-zip-limits.js +0 -2
  898. package/dist/src/extensions/typed-event-bus.js +0 -2
  899. package/dist/src/extensions/types/hooks.js +0 -2
  900. package/dist/src/extensions/types/providers.js +0 -2
  901. package/dist/src/extensions/update.js +0 -2
  902. package/dist/src/extensions/when-context.js +0 -2
  903. package/dist/src/extensions/when-expression.js +0 -2
  904. package/dist/src/gateway/agent-builtin-tools.js +0 -2
  905. package/dist/src/gateway/agent-run-relay.js +0 -2
  906. package/dist/src/gateway/agents-admin.js +1 -3
  907. package/dist/src/gateway/auth.js +0 -2
  908. package/dist/src/gateway/capability-presets-admin.js +0 -2
  909. package/dist/src/gateway/chat-limits.js +0 -2
  910. package/dist/src/gateway/chat-stream/mapper.js +28 -14
  911. package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
  912. package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
  913. package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
  914. package/dist/src/gateway/clarify-bridge.js +3 -3
  915. package/dist/src/gateway/clarify-runtime.js +0 -2
  916. package/dist/src/gateway/client-ip.js +0 -2
  917. package/dist/src/gateway/config-tools-web.js +0 -2
  918. package/dist/src/gateway/credential.js +0 -2
  919. package/dist/src/gateway/discovery/mdns.js +0 -2
  920. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
  921. package/dist/src/gateway/ensure-network-cors.js +0 -2
  922. package/dist/src/gateway/file-path-classifier.js +0 -2
  923. package/dist/src/gateway/file-reference-registry.js +0 -2
  924. package/dist/src/gateway/global-defaults-admin.js +0 -2
  925. package/dist/src/gateway/heartbeat/service.js +0 -2
  926. package/dist/src/gateway/hono/app.js +0 -2
  927. package/dist/src/gateway/hono/lib/agent-model.js +0 -2
  928. package/dist/src/gateway/hono/lib/config-payload.js +0 -2
  929. package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
  930. package/dist/src/gateway/hono/lib/extension-store.js +0 -2
  931. package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
  932. package/dist/src/gateway/hono/lib/route-logger.js +0 -2
  933. package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
  934. package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
  935. package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
  936. package/dist/src/gateway/hono/lib/static-ui.js +0 -2
  937. package/dist/src/gateway/hono/middleware/auth.js +0 -2
  938. package/dist/src/gateway/hono/middleware/log-context.js +0 -2
  939. package/dist/src/gateway/hono/middleware/logger.js +0 -2
  940. package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
  941. package/dist/src/gateway/hono/middleware/scopes.js +0 -2
  942. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
  943. package/dist/src/gateway/hono/oauth-async.js +0 -2
  944. package/dist/src/gateway/hono/oauth.js +0 -2
  945. package/dist/src/gateway/hono/routes/activity.js +0 -2
  946. package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
  947. package/dist/src/gateway/hono/routes/agents.js +0 -2
  948. package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
  949. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
  950. package/dist/src/gateway/hono/routes/browser-install.js +0 -2
  951. package/dist/src/gateway/hono/routes/browser.js +0 -2
  952. package/dist/src/gateway/hono/routes/capabilities.js +0 -2
  953. package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
  954. package/dist/src/gateway/hono/routes/channels.js +0 -2
  955. package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
  956. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
  957. package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
  958. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
  959. package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
  960. package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
  961. package/dist/src/gateway/hono/routes/config.js +0 -2
  962. package/dist/src/gateway/hono/routes/connectors.js +0 -2
  963. package/dist/src/gateway/hono/routes/doctor.js +0 -2
  964. package/dist/src/gateway/hono/routes/dreaming.js +0 -2
  965. package/dist/src/gateway/hono/routes/exposure.js +0 -2
  966. package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
  967. package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
  968. package/dist/src/gateway/hono/routes/goals.js +0 -2
  969. package/dist/src/gateway/hono/routes/home.js +0 -2
  970. package/dist/src/gateway/hono/routes/host-fs.js +0 -2
  971. package/dist/src/gateway/hono/routes/index.js +0 -2
  972. package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
  973. package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
  974. package/dist/src/gateway/hono/routes/local-apps.js +0 -2
  975. package/dist/src/gateway/hono/routes/logs.js +0 -2
  976. package/dist/src/gateway/hono/routes/mcp.js +0 -2
  977. package/dist/src/gateway/hono/routes/media.js +0 -2
  978. package/dist/src/gateway/hono/routes/memory.js +0 -2
  979. package/dist/src/gateway/hono/routes/migrations.js +0 -2
  980. package/dist/src/gateway/hono/routes/mobile.js +0 -2
  981. package/dist/src/gateway/hono/routes/models.js +0 -2
  982. package/dist/src/gateway/hono/routes/notes.js +3 -3
  983. package/dist/src/gateway/hono/routes/projects.js +0 -2
  984. package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
  985. package/dist/src/gateway/hono/routes/search.js +0 -2
  986. package/dist/src/gateway/hono/routes/sessions.js +0 -2
  987. package/dist/src/gateway/hono/routes/shares.js +0 -2
  988. package/dist/src/gateway/hono/routes/site-shares.js +0 -2
  989. package/dist/src/gateway/hono/routes/status.js +0 -2
  990. package/dist/src/gateway/hono/routes/tui.js +0 -2
  991. package/dist/src/gateway/hono/routes/tunnel.js +0 -2
  992. package/dist/src/gateway/hono/routes/update.js +0 -2
  993. package/dist/src/gateway/hono/routes/voice.js +0 -2
  994. package/dist/src/gateway/hono/routes/work-discovery.js +32 -2
  995. package/dist/src/gateway/hono/routes/workflows.js +0 -2
  996. package/dist/src/gateway/hono/routes/workspace.js +0 -2
  997. package/dist/src/gateway/hono/routes/you.js +0 -2
  998. package/dist/src/gateway/hono/sse-json.js +0 -2
  999. package/dist/src/gateway/hono/sse.js +0 -2
  1000. package/dist/src/gateway/host.js +0 -2
  1001. package/dist/src/gateway/image-capabilities.js +0 -2
  1002. package/dist/src/gateway/listen.js +0 -2
  1003. package/dist/src/gateway/lock.js +0 -2
  1004. package/dist/src/gateway/ports.js +0 -2
  1005. package/dist/src/gateway/protocol.js +0 -2
  1006. package/dist/src/gateway/public-url.js +0 -2
  1007. package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
  1008. package/dist/src/gateway/rate-limit/buckets.js +0 -2
  1009. package/dist/src/gateway/rate-limit/env-flags.js +0 -2
  1010. package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
  1011. package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
  1012. package/dist/src/gateway/respawn.js +0 -2
  1013. package/dist/src/gateway/run-loop.js +0 -2
  1014. package/dist/src/gateway/runtime-config.js +0 -2
  1015. package/dist/src/gateway/security/audit.js +0 -2
  1016. package/dist/src/gateway/security/csp.js +0 -2
  1017. package/dist/src/gateway/security/dangerous-tools.js +0 -2
  1018. package/dist/src/gateway/security/external-content.js +0 -2
  1019. package/dist/src/gateway/security/known-weak-secrets.js +0 -2
  1020. package/dist/src/gateway/security/loopback.js +0 -2
  1021. package/dist/src/gateway/security/operator-scopes.js +0 -2
  1022. package/dist/src/gateway/security/origin-check.js +0 -2
  1023. package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
  1024. package/dist/src/gateway/security/secret-equal.js +0 -2
  1025. package/dist/src/gateway/server-tailscale.js +0 -2
  1026. package/dist/src/gateway/server.js +0 -2
  1027. package/dist/src/gateway/service/agent-runner.js +0 -2
  1028. package/dist/src/gateway/service/config-coordinator.js +0 -2
  1029. package/dist/src/gateway/service/marketplace-service.js +0 -2
  1030. package/dist/src/gateway/service/run-gateway-agent.js +0 -2
  1031. package/dist/src/gateway/service/session-chat-ids.js +0 -2
  1032. package/dist/src/gateway/service/sessions-api.js +0 -2
  1033. package/dist/src/gateway/service/sse-hub.js +0 -2
  1034. package/dist/src/gateway/service.js +0 -2
  1035. package/dist/src/gateway/session-reset-service.js +0 -2
  1036. package/dist/src/gateway/startup-readiness.js +0 -2
  1037. package/dist/src/gateway/startup-trace.js +0 -2
  1038. package/dist/src/gateway/tailscale-auth.js +0 -2
  1039. package/dist/src/gateway/tailscale-lifecycle.js +0 -2
  1040. package/dist/src/gateway/tls-server.js +0 -2
  1041. package/dist/src/gateway/trusted-proxy.js +0 -2
  1042. package/dist/src/gateway/user-turn-input.js +0 -2
  1043. package/dist/src/gateway/workspace-editor-path.js +0 -2
  1044. package/dist/src/gateway/workspace-file-search.js +0 -2
  1045. package/dist/src/gateway/workspace-fs-file-list.js +0 -2
  1046. package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
  1047. package/dist/src/gateway/workspace-ripgrep.js +0 -2
  1048. package/dist/src/gateway/ws-security.js +0 -2
  1049. package/dist/src/generated/bundled-image-generation-providers.js +0 -2
  1050. package/dist/src/goals/goal-contract-draft.js +0 -2
  1051. package/dist/src/goals/goal-evidence-review.js +0 -2
  1052. package/dist/src/goals/goal-notifications.js +0 -2
  1053. package/dist/src/goals/goal-queue-store.js +0 -2
  1054. package/dist/src/goals/goal-runner.js +0 -2
  1055. package/dist/src/goals/goal-service.js +0 -2
  1056. package/dist/src/goals/goal-store.js +0 -2
  1057. package/dist/src/goals/goal-workflow-judge.js +0 -2
  1058. package/dist/src/heartbeat/active-hours.js +0 -2
  1059. package/dist/src/heartbeat/content-check.js +0 -2
  1060. package/dist/src/heartbeat/event-prompt.js +0 -2
  1061. package/dist/src/heartbeat/tokens.js +0 -2
  1062. package/dist/src/heartbeat/wake.js +0 -2
  1063. package/dist/src/i18n/format.js +0 -2
  1064. package/dist/src/i18n/goals-bundle.js +0 -2
  1065. package/dist/src/i18n/locale.js +0 -2
  1066. package/dist/src/i18n/locales/goals.en.js +0 -2
  1067. package/dist/src/i18n/locales/goals.zh.js +0 -2
  1068. package/dist/src/i18n/locales/share-tool.en.js +0 -2
  1069. package/dist/src/i18n/locales/share-tool.zh.js +0 -2
  1070. package/dist/src/i18n/share-tool-bundle.js +0 -2
  1071. package/dist/src/index.js +0 -2
  1072. package/dist/src/infra/brew.js +0 -2
  1073. package/dist/src/infra/bus/queue.js +0 -2
  1074. package/dist/src/infra/debounce.js +0 -2
  1075. package/dist/src/infra/exec.js +0 -2
  1076. package/dist/src/infra/gateway-process-argv.js +0 -2
  1077. package/dist/src/infra/gateway-processes.js +0 -2
  1078. package/dist/src/infra/host-env-security-policy.js +0 -2
  1079. package/dist/src/infra/host-env-security.js +0 -2
  1080. package/dist/src/infra/http-proxy-env.js +0 -2
  1081. package/dist/src/infra/is-main.js +0 -2
  1082. package/dist/src/infra/json-utf8-bytes.js +0 -2
  1083. package/dist/src/infra/node-sqlite.js +0 -2
  1084. package/dist/src/infra/package-json.js +0 -2
  1085. package/dist/src/infra/package-update-steps.js +0 -2
  1086. package/dist/src/infra/path-env.js +0 -2
  1087. package/dist/src/infra/path-prepend.js +0 -2
  1088. package/dist/src/infra/ports.js +0 -2
  1089. package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
  1090. package/dist/src/infra/rate-limit/keyed-store.js +0 -2
  1091. package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
  1092. package/dist/src/infra/restart.js +0 -2
  1093. package/dist/src/infra/retry.js +0 -2
  1094. package/dist/src/infra/run-command.js +0 -2
  1095. package/dist/src/infra/sqlite-errors.js +0 -2
  1096. package/dist/src/infra/ssh-tunnel.js +0 -2
  1097. package/dist/src/infra/stable-node-path.js +0 -2
  1098. package/dist/src/infra/tailscale.js +0 -2
  1099. package/dist/src/infra/undici-fetch.js +0 -2
  1100. package/dist/src/infra/unhandled-rejections.js +0 -2
  1101. package/dist/src/infra/update-channels.js +0 -2
  1102. package/dist/src/infra/update-check.js +0 -2
  1103. package/dist/src/infra/update-global.js +0 -2
  1104. package/dist/src/infra/update-lock.js +0 -2
  1105. package/dist/src/infra/update-log.js +0 -2
  1106. package/dist/src/infra/update-restart.js +0 -2
  1107. package/dist/src/infra/update-runner.js +0 -2
  1108. package/dist/src/infra/update-startup.js +0 -2
  1109. package/dist/src/infra/warning-filter.js +0 -2
  1110. package/dist/src/infra/write-file-atomic.js +0 -2
  1111. package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
  1112. package/dist/src/knowledge/coordinator.js +0 -2
  1113. package/dist/src/knowledge/ingestion-service.js +0 -2
  1114. package/dist/src/local-apps/acceptance.js +0 -2
  1115. package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
  1116. package/dist/src/local-apps/runtime-entry.js +0 -2
  1117. package/dist/src/local-apps/scaffold.js +0 -2
  1118. package/dist/src/local-apps/service.js +0 -2
  1119. package/dist/src/local-apps/store.js +0 -2
  1120. package/dist/src/markdown/chunk.js +0 -2
  1121. package/dist/src/markdown/code-spans.js +0 -2
  1122. package/dist/src/markdown/fences.js +0 -2
  1123. package/dist/src/markdown/frontmatter.js +0 -2
  1124. package/dist/src/markdown/ir.js +0 -2
  1125. package/dist/src/markdown/render.js +0 -2
  1126. package/dist/src/markdown/tables.js +0 -2
  1127. package/dist/src/mcp/channel-bridge.js +0 -2
  1128. package/dist/src/mcp/channel-server.js +0 -2
  1129. package/dist/src/mcp/channel-shared.js +0 -2
  1130. package/dist/src/mcp/channel-tools.js +0 -2
  1131. package/dist/src/mcp/gateway-http-client.js +0 -2
  1132. package/dist/src/media/media-reference.js +0 -2
  1133. package/dist/src/media/paths.js +0 -2
  1134. package/dist/src/media/session-references.js +0 -2
  1135. package/dist/src/media/store.js +0 -2
  1136. package/dist/src/media/uri.js +0 -2
  1137. package/dist/src/media-shared/http/api-key-rotation.js +0 -2
  1138. package/dist/src/media-shared/http/deadline.js +0 -2
  1139. package/dist/src/media-shared/http/private-network.js +0 -2
  1140. package/dist/src/media-shared/http/provider-http-errors.js +0 -2
  1141. package/dist/src/media-shared/http/provider-http.js +0 -2
  1142. package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
  1143. package/dist/src/media-shared/http/ssrf-guard.js +0 -2
  1144. package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
  1145. package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
  1146. package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
  1147. package/dist/src/media-understanding/registry.js +0 -2
  1148. package/dist/src/media-understanding/resolve-entries.js +0 -2
  1149. package/dist/src/media-understanding/runner.js +0 -2
  1150. package/dist/src/migrations/config/default-capability-preset.js +0 -2
  1151. package/dist/src/migrations/registry.js +0 -2
  1152. package/dist/src/migrations/runner.js +0 -2
  1153. package/dist/src/mobile/notification-service.js +0 -2
  1154. package/dist/src/mobile/notification-store.js +0 -2
  1155. package/dist/src/mobile/notification-types.js +0 -2
  1156. package/dist/src/notes/agent-context.js +0 -2
  1157. package/dist/src/notes/attachment-ref.js +0 -2
  1158. package/dist/src/notes/note-attachment-sync.js +0 -2
  1159. package/dist/src/notes/note-index-meta.js +0 -2
  1160. package/dist/src/notes/note-markdown.js +0 -2
  1161. package/dist/src/notes/paths.js +0 -2
  1162. package/dist/src/notes/service.d.ts +3 -1
  1163. package/dist/src/notes/service.js +19 -5
  1164. package/dist/src/notes/store.js +0 -2
  1165. package/dist/src/package-version.js +0 -2
  1166. package/dist/src/pets/factory.d.ts +13 -0
  1167. package/dist/src/pets/factory.js +23 -2
  1168. package/dist/src/pets/manifest.js +0 -2
  1169. package/dist/src/pets/validator.js +0 -2
  1170. package/dist/src/process/kill-tree.js +0 -2
  1171. package/dist/src/project-trust/trust-store.js +0 -2
  1172. package/dist/src/projects/automation-bind.js +0 -2
  1173. package/dist/src/projects/goal-bind.js +0 -2
  1174. package/dist/src/projects/memory-bind.js +0 -2
  1175. package/dist/src/projects/project-agent-suggestion.js +0 -2
  1176. package/dist/src/projects/project-agent.js +0 -2
  1177. package/dist/src/projects/project-kind.js +0 -2
  1178. package/dist/src/projects/project-loop.js +0 -2
  1179. package/dist/src/projects/project-service.js +0 -2
  1180. package/dist/src/projects/project-store.js +0 -2
  1181. package/dist/src/projects/session-bind.js +0 -2
  1182. package/dist/src/projects/workflow-bind.js +0 -2
  1183. package/dist/src/projects/workspace-project.js +0 -2
  1184. package/dist/src/projects/workspace.js +0 -2
  1185. package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
  1186. package/dist/src/providers/auth-runtime/is-configured.js +0 -2
  1187. package/dist/src/providers/auth-runtime/oauth.js +0 -2
  1188. package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
  1189. package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
  1190. package/dist/src/providers/constants.js +0 -2
  1191. package/dist/src/providers/domestic-presets.js +0 -2
  1192. package/dist/src/providers/env-keys.js +0 -2
  1193. package/dist/src/providers/extension-stream-bridge.js +0 -2
  1194. package/dist/src/providers/index.js +0 -2
  1195. package/dist/src/providers/model-call.js +0 -2
  1196. package/dist/src/providers/model-discovery.js +0 -2
  1197. package/dist/src/providers/model-registry.js +0 -2
  1198. package/dist/src/providers/model-supplements.js +0 -2
  1199. package/dist/src/providers/plugin-registry.js +0 -2
  1200. package/dist/src/providers/presentation.js +0 -2
  1201. package/dist/src/remote-access/exposure-guards.js +0 -2
  1202. package/dist/src/remote-access/exposure-manager.js +0 -2
  1203. package/dist/src/review/review-git.js +0 -2
  1204. package/dist/src/review/review-types.js +0 -2
  1205. package/dist/src/routing/account-id.js +0 -2
  1206. package/dist/src/routing/agent-session-key.js +0 -2
  1207. package/dist/src/routing/bindings.js +0 -2
  1208. package/dist/src/routing/index.js +0 -2
  1209. package/dist/src/routing/resolve-route.js +0 -2
  1210. package/dist/src/routing/resolve-tui-session-key.js +0 -2
  1211. package/dist/src/routing/session-key-utils.js +0 -2
  1212. package/dist/src/routing/session-key.js +0 -2
  1213. package/dist/src/session/abort-cutoff.js +0 -2
  1214. package/dist/src/session/chat-export.js +0 -2
  1215. package/dist/src/session/client-history.js +0 -2
  1216. package/dist/src/session/compaction-checkpoints.js +0 -2
  1217. package/dist/src/session/config-store.js +0 -2
  1218. package/dist/src/session/init-session-turn.js +0 -2
  1219. package/dist/src/session/lifecycle-timestamps.js +0 -2
  1220. package/dist/src/session/load-jsonl-entries.js +0 -2
  1221. package/dist/src/session/manager.js +0 -2
  1222. package/dist/src/session/patch-metadata.js +0 -2
  1223. package/dist/src/session/reset-policy.js +0 -2
  1224. package/dist/src/session/reset-triggers.js +0 -2
  1225. package/dist/src/session/reset-type.js +0 -2
  1226. package/dist/src/session/resolve-session.js +0 -2
  1227. package/dist/src/session/session-context-for-llm.js +0 -2
  1228. package/dist/src/session/session-id.js +0 -2
  1229. package/dist/src/session/session-title.js +0 -2
  1230. package/dist/src/session/session-workspace.js +0 -2
  1231. package/dist/src/session/store.js +0 -2
  1232. package/dist/src/session/stored-rows-to-file-entries.js +0 -2
  1233. package/dist/src/session/thinking-resolve.js +0 -2
  1234. package/dist/src/session/transcript-events.js +0 -2
  1235. package/dist/src/session/transcript-format.js +0 -2
  1236. package/dist/src/session/transcript-outline.js +0 -2
  1237. package/dist/src/session/transcript-stats.js +0 -2
  1238. package/dist/src/session/types.js +0 -2
  1239. package/dist/src/session/user-round-delete.js +0 -2
  1240. package/dist/src/share/share-audit.js +0 -2
  1241. package/dist/src/share/share-auto.js +0 -2
  1242. package/dist/src/share/share-config.js +0 -2
  1243. package/dist/src/share/share-landing.js +0 -2
  1244. package/dist/src/share/share-rate-limit.js +0 -2
  1245. package/dist/src/share/share-store.js +0 -2
  1246. package/dist/src/share/share-thumbnail.js +0 -2
  1247. package/dist/src/share/share-types.js +0 -2
  1248. package/dist/src/share/share-url.js +0 -2
  1249. package/dist/src/share/share-zip.js +0 -2
  1250. package/dist/src/share/site-proxy.js +0 -2
  1251. package/dist/src/share/site-share-config.js +0 -2
  1252. package/dist/src/share/site-share-router.js +0 -2
  1253. package/dist/src/share/site-share-store.js +0 -2
  1254. package/dist/src/share/site-share-types.js +0 -2
  1255. package/dist/src/share/site-static-serve.js +0 -2
  1256. package/dist/src/storage/sqlite/activity-repository.js +0 -2
  1257. package/dist/src/storage/sqlite/config-repository.js +0 -2
  1258. package/dist/src/storage/sqlite/connection.js +0 -2
  1259. package/dist/src/storage/sqlite/connector-repository.js +0 -2
  1260. package/dist/src/storage/sqlite/fts.js +0 -2
  1261. package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
  1262. package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
  1263. package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
  1264. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
  1265. package/dist/src/storage/sqlite/migrations/046_work_discovery_feedback.sql +13 -0
  1266. package/dist/src/storage/sqlite/migrations/discover.js +0 -2
  1267. package/dist/src/storage/sqlite/migrations/errors.js +0 -2
  1268. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  1269. package/dist/src/storage/sqlite/migrations/runner.js +3 -5
  1270. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  1271. package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
  1272. package/dist/src/storage/sqlite/notes-repository.js +0 -2
  1273. package/dist/src/storage/sqlite/paths.js +0 -2
  1274. package/dist/src/storage/sqlite/row-mappers.js +0 -2
  1275. package/dist/src/storage/sqlite/schema-version.js +0 -2
  1276. package/dist/src/storage/sqlite/schema.js +1 -3
  1277. package/dist/src/storage/sqlite/session-metadata.js +0 -2
  1278. package/dist/src/storage/sqlite/session-repository.js +0 -2
  1279. package/dist/src/storage/sqlite/transaction.js +0 -2
  1280. package/dist/src/storage/sqlite/transcript-repository.js +0 -2
  1281. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
  1282. package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
  1283. package/dist/src/tui/backends/embedded-backend.js +0 -2
  1284. package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
  1285. package/dist/src/tui/chat-history.js +0 -2
  1286. package/dist/src/tui/clipboard-image.js +0 -2
  1287. package/dist/src/tui/clipboard-text.js +0 -2
  1288. package/dist/src/tui/components/assistant-message.js +0 -2
  1289. package/dist/src/tui/components/bash-execution.js +0 -2
  1290. package/dist/src/tui/components/bash-summary.js +0 -2
  1291. package/dist/src/tui/components/branch-message-summary.js +0 -2
  1292. package/dist/src/tui/components/branch-summary.js +0 -2
  1293. package/dist/src/tui/components/chat-log.js +0 -2
  1294. package/dist/src/tui/components/compaction-summary.js +0 -2
  1295. package/dist/src/tui/components/custom-editor.js +0 -2
  1296. package/dist/src/tui/components/custom-message.js +0 -2
  1297. package/dist/src/tui/components/dynamic-border.js +0 -2
  1298. package/dist/src/tui/components/extension-dialog.js +0 -2
  1299. package/dist/src/tui/components/fuzzy-filter.js +0 -2
  1300. package/dist/src/tui/components/scoped-models-selector.js +0 -2
  1301. package/dist/src/tui/components/searchable-select-list.js +0 -2
  1302. package/dist/src/tui/components/session-selector.js +0 -2
  1303. package/dist/src/tui/components/settings-selector.js +0 -2
  1304. package/dist/src/tui/components/thinking-selector.js +0 -2
  1305. package/dist/src/tui/components/tool-execution.js +0 -2
  1306. package/dist/src/tui/components/tui-bottom-bar.js +0 -2
  1307. package/dist/src/tui/components/tui-header.js +0 -2
  1308. package/dist/src/tui/components/user-message.js +0 -2
  1309. package/dist/src/tui/components/visual-truncate.js +0 -2
  1310. package/dist/src/tui/extension-host/autocomplete.js +0 -2
  1311. package/dist/src/tui/extension-host/host.js +0 -2
  1312. package/dist/src/tui/extension-host/load-extensions.js +0 -2
  1313. package/dist/src/tui/extension-host/runtime-context.js +0 -2
  1314. package/dist/src/tui/extension-host/runtime.js +0 -2
  1315. package/dist/src/tui/extension-host/surface.js +0 -2
  1316. package/dist/src/tui/extension-host/tool-renderers.js +0 -2
  1317. package/dist/src/tui/format-tui-hotkeys.js +0 -2
  1318. package/dist/src/tui/sse-consumer.js +0 -2
  1319. package/dist/src/tui/theme/dark.js +0 -2
  1320. package/dist/src/tui/theme/light.js +0 -2
  1321. package/dist/src/tui/theme-manager.js +0 -2
  1322. package/dist/src/tui/theme.js +0 -2
  1323. package/dist/src/tui/tool-summary.js +0 -2
  1324. package/dist/src/tui/tui-agent-events.js +0 -2
  1325. package/dist/src/tui/tui-command-formatters.js +0 -2
  1326. package/dist/src/tui/tui-commands.js +0 -2
  1327. package/dist/src/tui/tui-context-usage.js +0 -2
  1328. package/dist/src/tui/tui-extension-user-message.js +0 -2
  1329. package/dist/src/tui/tui-fd-path.js +0 -2
  1330. package/dist/src/tui/tui-file-autocomplete.js +0 -2
  1331. package/dist/src/tui/tui-follow-up-queue.js +0 -2
  1332. package/dist/src/tui/tui-git-branch.js +0 -2
  1333. package/dist/src/tui/tui-keybindings-file.js +0 -2
  1334. package/dist/src/tui/tui-lifecycle.js +0 -2
  1335. package/dist/src/tui/tui-local-shell.js +0 -2
  1336. package/dist/src/tui/tui-model-picker.js +0 -2
  1337. package/dist/src/tui/tui-oauth-login.js +0 -2
  1338. package/dist/src/tui/tui-overlays.js +0 -2
  1339. package/dist/src/tui/tui-picker-overlay.js +0 -2
  1340. package/dist/src/tui/tui-run-state.js +0 -2
  1341. package/dist/src/tui/tui-run-status-format.js +0 -2
  1342. package/dist/src/tui/tui-runtime-hints.js +0 -2
  1343. package/dist/src/tui/tui-scoped-models.js +0 -2
  1344. package/dist/src/tui/tui-session-actions.js +0 -2
  1345. package/dist/src/tui/tui-session-format.js +0 -2
  1346. package/dist/src/tui/tui-session-snapshot.js +0 -2
  1347. package/dist/src/tui/tui-session-stats.js +0 -2
  1348. package/dist/src/tui/tui-settings.js +0 -2
  1349. package/dist/src/tui/tui-skills-autocomplete.js +0 -2
  1350. package/dist/src/tui/tui-startup-resources.js +0 -2
  1351. package/dist/src/tui/tui-startup-text.js +0 -2
  1352. package/dist/src/tui/tui-stdio-filter.js +0 -2
  1353. package/dist/src/tui/tui-submit.js +0 -2
  1354. package/dist/src/tui/tui-suspend.js +0 -2
  1355. package/dist/src/tui/tui-timeline-picker.js +0 -2
  1356. package/dist/src/tui/tui-timeline.js +0 -2
  1357. package/dist/src/tui/tui-tool-diff.js +0 -2
  1358. package/dist/src/tui/tui-tool-result.js +0 -2
  1359. package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
  1360. package/dist/src/tui/tui-transcript-tree.js +0 -2
  1361. package/dist/src/tui/tui-types.js +0 -2
  1362. package/dist/src/tui/tui-workflow-slash.js +0 -2
  1363. package/dist/src/tui/tui.js +0 -2
  1364. package/dist/src/tui/xopc-tui-keybindings.js +0 -2
  1365. package/dist/src/tunnel/broker-client.js +0 -2
  1366. package/dist/src/tunnel/consent.js +0 -2
  1367. package/dist/src/tunnel/enable-lan-pairing.js +0 -2
  1368. package/dist/src/tunnel/env.js +0 -2
  1369. package/dist/src/tunnel/frp-subdomain-host.js +0 -2
  1370. package/dist/src/tunnel/frpc-binary.js +0 -2
  1371. package/dist/src/tunnel/frpc-config.js +0 -2
  1372. package/dist/src/tunnel/frpc-extract.js +0 -2
  1373. package/dist/src/tunnel/frpc-process.js +0 -2
  1374. package/dist/src/tunnel/gateway-lifecycle.js +0 -2
  1375. package/dist/src/tunnel/pair-context.js +0 -2
  1376. package/dist/src/tunnel/pair-url.js +0 -2
  1377. package/dist/src/tunnel/pairing-rate-limit.js +0 -2
  1378. package/dist/src/tunnel/pairing.js +0 -2
  1379. package/dist/src/tunnel/tunnel-audit.js +0 -2
  1380. package/dist/src/tunnel/tunnel-config.js +0 -2
  1381. package/dist/src/tunnel/tunnel-persist.js +0 -2
  1382. package/dist/src/tunnel/tunnel-qr.js +0 -2
  1383. package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
  1384. package/dist/src/tunnel/tunnel-service.js +0 -2
  1385. package/dist/src/tunnel/tunnel-state.js +0 -2
  1386. package/dist/src/tunnel/well-known.js +0 -2
  1387. package/dist/src/user-context/config.js +0 -2
  1388. package/dist/src/user-context/import.js +0 -2
  1389. package/dist/src/user-context/owner.js +0 -2
  1390. package/dist/src/user-context/profile.js +0 -2
  1391. package/dist/src/user-context/projection.js +0 -2
  1392. package/dist/src/user-context/runtime.js +0 -2
  1393. package/dist/src/user-context/source-recommendations.js +0 -2
  1394. package/dist/src/user-context/trust-policy.js +0 -2
  1395. package/dist/src/utils/global-singleton.js +0 -2
  1396. package/dist/src/utils/helpers.js +0 -2
  1397. package/dist/src/utils/index.js +0 -2
  1398. package/dist/src/utils/is-record.js +0 -2
  1399. package/dist/src/utils/logger/audit.js +0 -2
  1400. package/dist/src/utils/logger/config.js +0 -2
  1401. package/dist/src/utils/logger/context.js +0 -2
  1402. package/dist/src/utils/logger/exporters.js +0 -2
  1403. package/dist/src/utils/logger/index.js +0 -2
  1404. package/dist/src/utils/logger/log-store.js +0 -2
  1405. package/dist/src/utils/logger/log-stream.js +0 -2
  1406. package/dist/src/utils/logger/pino-record.js +0 -2
  1407. package/dist/src/utils/logger/redact.js +0 -2
  1408. package/dist/src/utils/logger/rotation.js +0 -2
  1409. package/dist/src/utils/logger/shutdown.js +0 -2
  1410. package/dist/src/utils/logger/stats.js +0 -2
  1411. package/dist/src/utils/logger/streams.js +0 -2
  1412. package/dist/src/utils/logger/types.js +0 -2
  1413. package/dist/src/utils/logger.js +0 -2
  1414. package/dist/src/utils/redact-sensitive-url.js +0 -2
  1415. package/dist/src/utils/sanitize-log.js +0 -2
  1416. package/dist/src/utils/string-coerce.js +0 -2
  1417. package/dist/src/voice/language-profile.js +0 -2
  1418. package/dist/src/voice/local/model-files.js +0 -2
  1419. package/dist/src/voice/local/model-manager.js +0 -2
  1420. package/dist/src/voice/local/models.js +0 -2
  1421. package/dist/src/voice/local/runtime-client.js +0 -2
  1422. package/dist/src/voice/local/runtime-dispatcher.js +0 -2
  1423. package/dist/src/voice/local/runtime-worker.js +12 -4
  1424. package/dist/src/voice/local/wav.js +0 -2
  1425. package/dist/src/voice/metadata/builtin.js +0 -2
  1426. package/dist/src/voice/metadata/registry.js +0 -2
  1427. package/dist/src/voice/stt/availability.js +0 -2
  1428. package/dist/src/voice/stt/config-slice.js +0 -2
  1429. package/dist/src/voice/stt/factory.js +0 -2
  1430. package/dist/src/voice/stt/index.js +0 -2
  1431. package/dist/src/voice/stt/list-providers.js +0 -2
  1432. package/dist/src/voice/stt/mention.js +0 -2
  1433. package/dist/src/voice/stt/preflight.js +0 -2
  1434. package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
  1435. package/dist/src/voice/stt/providers/local-transcription.js +0 -2
  1436. package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
  1437. package/dist/src/voice/stt/transcribe-core.js +0 -2
  1438. package/dist/src/voice/stt/types.js +0 -2
  1439. package/dist/src/voice/tts/audio.js +0 -2
  1440. package/dist/src/voice/tts/config-slice.js +0 -2
  1441. package/dist/src/voice/tts/directives.js +0 -2
  1442. package/dist/src/voice/tts/factory.js +0 -2
  1443. package/dist/src/voice/tts/list-providers.js +0 -2
  1444. package/dist/src/voice/tts/merge-config.js +0 -2
  1445. package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
  1446. package/dist/src/voice/tts/payload.js +0 -2
  1447. package/dist/src/voice/tts/preprocess.js +0 -2
  1448. package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
  1449. package/dist/src/voice/tts/providers/edge-speech.js +0 -2
  1450. package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
  1451. package/dist/src/voice/tts/providers/openai-speech.js +0 -2
  1452. package/dist/src/voice/tts/sentence-boundary.js +0 -2
  1453. package/dist/src/voice/tts/service.js +0 -2
  1454. package/dist/src/voice/tts/speak-core.js +0 -2
  1455. package/dist/src/voice/tts/speech-registry.js +0 -2
  1456. package/dist/src/voice/tts/status-tracker.js +0 -2
  1457. package/dist/src/voice/tts/summarize.js +0 -2
  1458. package/dist/src/voice/tts/types.js +0 -2
  1459. package/dist/src/work-discovery/analyzer.js +23 -6
  1460. package/dist/src/work-discovery/index.js +2 -2
  1461. package/dist/src/work-discovery/probe.d.ts +6 -0
  1462. package/dist/src/work-discovery/probe.js +12 -3
  1463. package/dist/src/work-discovery/repository.d.ts +7 -1
  1464. package/dist/src/work-discovery/repository.js +35 -4
  1465. package/dist/src/work-discovery/service.d.ts +6 -1
  1466. package/dist/src/work-discovery/service.js +64 -7
  1467. package/dist/src/work-discovery/types.d.ts +21 -0
  1468. package/dist/src/work-items/agent-context.js +0 -2
  1469. package/dist/src/work-items/work-item-service.js +0 -2
  1470. package/dist/src/work-items/work-item-store.js +0 -2
  1471. package/dist/src/work-items/work-item-workflow-judge.js +0 -2
  1472. package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
  1473. package/dist/src/workflows/domain/definition-utils.js +0 -2
  1474. package/dist/src/workflows/domain/run.js +0 -2
  1475. package/dist/src/workflows/domain/schema-validation.js +0 -2
  1476. package/dist/src/workflows/domain/validation.js +0 -2
  1477. package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
  1478. package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
  1479. package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
  1480. package/dist/src/workflows/engine/projector.js +0 -2
  1481. package/dist/src/workflows/engine/workflow-engine.js +0 -2
  1482. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
  1483. package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
  1484. package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
  1485. package/dist/src/workflows/service/workflow-run-service.js +0 -2
  1486. package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
  1487. package/dist/src/workflows/service/workflow-session-key.js +0 -2
  1488. package/dist/src/workflows/store/event-store.js +0 -2
  1489. package/dist/src/workflows/store/paths.js +0 -2
  1490. package/dist/src/workflows/store/run-index-store.js +0 -2
  1491. package/dist/src/workflows/store/run-store.js +0 -2
  1492. package/package.json +41 -11
  1493. package/skills/creative/hatch-pet/SKILL.md +1 -0
  1494. package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
  1495. package/dist/extensions/demo-memory/src/index.js.map +0 -1
  1496. package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
  1497. package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
  1498. package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
  1499. package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
  1500. package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
  1501. package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
  1502. package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
  1503. package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
  1504. package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
  1505. package/dist/extensions/feishu/src/format.js.map +0 -1
  1506. package/dist/extensions/feishu/src/index.js.map +0 -1
  1507. package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
  1508. package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
  1509. package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
  1510. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
  1511. package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
  1512. package/dist/extensions/feishu/src/plugin.js.map +0 -1
  1513. package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
  1514. package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
  1515. package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
  1516. package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
  1517. package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
  1518. package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
  1519. package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
  1520. package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
  1521. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
  1522. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
  1523. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
  1524. package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
  1525. package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
  1526. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
  1527. package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
  1528. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
  1529. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
  1530. package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
  1531. package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
  1532. package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
  1533. package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
  1534. package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
  1535. package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
  1536. package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
  1537. package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
  1538. package/dist/extensions/telegram/src/access-control.js.map +0 -1
  1539. package/dist/extensions/telegram/src/account-manager.js.map +0 -1
  1540. package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
  1541. package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
  1542. package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
  1543. package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
  1544. package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
  1545. package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
  1546. package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
  1547. package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
  1548. package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
  1549. package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
  1550. package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
  1551. package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
  1552. package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
  1553. package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
  1554. package/dist/extensions/telegram/src/api-root.js.map +0 -1
  1555. package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
  1556. package/dist/extensions/telegram/src/approval-store.js.map +0 -1
  1557. package/dist/extensions/telegram/src/caption.js.map +0 -1
  1558. package/dist/extensions/telegram/src/command-handler.js.map +0 -1
  1559. package/dist/extensions/telegram/src/config-schema.js.map +0 -1
  1560. package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
  1561. package/dist/extensions/telegram/src/dedupe.js.map +0 -1
  1562. package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
  1563. package/dist/extensions/telegram/src/doctor.js.map +0 -1
  1564. package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
  1565. package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
  1566. package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
  1567. package/dist/extensions/telegram/src/errors.js.map +0 -1
  1568. package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
  1569. package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
  1570. package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
  1571. package/dist/extensions/telegram/src/format.js.map +0 -1
  1572. package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
  1573. package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
  1574. package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
  1575. package/dist/extensions/telegram/src/index.js.map +0 -1
  1576. package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
  1577. package/dist/extensions/telegram/src/network-errors.js.map +0 -1
  1578. package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
  1579. package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
  1580. package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
  1581. package/dist/extensions/telegram/src/plugin.js.map +0 -1
  1582. package/dist/extensions/telegram/src/polling-session.js.map +0 -1
  1583. package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
  1584. package/dist/extensions/telegram/src/reactions.js.map +0 -1
  1585. package/dist/extensions/telegram/src/reply-params.js.map +0 -1
  1586. package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
  1587. package/dist/extensions/telegram/src/send-options.js.map +0 -1
  1588. package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
  1589. package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
  1590. package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
  1591. package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
  1592. package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
  1593. package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
  1594. package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
  1595. package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
  1596. package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
  1597. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
  1598. package/dist/extensions/weixin/src/api/api.js.map +0 -1
  1599. package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
  1600. package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
  1601. package/dist/extensions/weixin/src/api/types.js.map +0 -1
  1602. package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
  1603. package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
  1604. package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
  1605. package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
  1606. package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
  1607. package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
  1608. package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
  1609. package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
  1610. package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
  1611. package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
  1612. package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
  1613. package/dist/extensions/weixin/src/config-schema.js.map +0 -1
  1614. package/dist/extensions/weixin/src/config-surface.js.map +0 -1
  1615. package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
  1616. package/dist/extensions/weixin/src/index.js.map +0 -1
  1617. package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
  1618. package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
  1619. package/dist/extensions/weixin/src/media/mime.js.map +0 -1
  1620. package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
  1621. package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
  1622. package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
  1623. package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
  1624. package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
  1625. package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
  1626. package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
  1627. package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
  1628. package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
  1629. package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
  1630. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
  1631. package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
  1632. package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
  1633. package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
  1634. package/dist/extensions/weixin/src/plugin.js.map +0 -1
  1635. package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
  1636. package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
  1637. package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
  1638. package/dist/extensions/weixin/src/util/logger.js.map +0 -1
  1639. package/dist/extensions/weixin/src/util/random.js.map +0 -1
  1640. package/dist/extensions/weixin/src/util/redact.js.map +0 -1
  1641. package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
  1642. package/dist/gateway/static/root/assets/agents-Ci1U96gj.js +0 -2
  1643. package/dist/gateway/static/root/assets/apps-page-Z6cQTPS6.js +0 -1
  1644. package/dist/gateway/static/root/assets/automations-page-D7HmeFdr.js +0 -6
  1645. package/dist/gateway/static/root/assets/browser-settings-page-BZ25v96s.js +0 -8
  1646. package/dist/gateway/static/root/assets/channels-settings-Bc7FVeqs.js +0 -1
  1647. package/dist/gateway/static/root/assets/channels-status-swr-P3J5voxb.js +0 -1
  1648. package/dist/gateway/static/root/assets/connectors-page-oi41mE3U.js +0 -2
  1649. package/dist/gateway/static/root/assets/desktop-pet-DzdsBRdD.js +0 -1
  1650. package/dist/gateway/static/root/assets/desktop-pet-settings-B-URlTdB.js +0 -1
  1651. package/dist/gateway/static/root/assets/gateway-settings-CGphLe9T.js +0 -1
  1652. package/dist/gateway/static/root/assets/goal-detail-page-CyaLkWhd.js +0 -4
  1653. package/dist/gateway/static/root/assets/goals-page-C-srWhsP.js +0 -2
  1654. package/dist/gateway/static/root/assets/index-DktduA8Z.css +0 -1
  1655. package/dist/gateway/static/root/assets/local-app-workbench-page-DcaqgchY.js +0 -2
  1656. package/dist/gateway/static/root/assets/logs-page-B_13EkK7.js +0 -7
  1657. package/dist/gateway/static/root/assets/messages-BIsSVgW7.js +0 -5
  1658. package/dist/gateway/static/root/assets/models-hub-panel-DkCTjUj_.js +0 -2
  1659. package/dist/gateway/static/root/assets/notes-workbench-CfWQczho.js +0 -4
  1660. package/dist/gateway/static/root/assets/project-detail-page-BWOTQX4M.js +0 -1
  1661. package/dist/gateway/static/root/assets/projects-page-C81dHQ5i.js +0 -1
  1662. package/dist/gateway/static/root/assets/remote-access-hub-U1FQUBtJ.js +0 -1
  1663. package/dist/gateway/static/root/assets/sessions-page-t6DzYLpM.js +0 -1
  1664. package/dist/gateway/static/root/assets/settings-advanced-gate-DggKrWED.js +0 -1
  1665. package/dist/gateway/static/root/assets/setup-status-panel-DncjFopP.js +0 -1
  1666. package/dist/gateway/static/root/assets/shares-settings-Brx1LsY9.js +0 -1
  1667. package/dist/gateway/static/root/assets/skill-reload-api-C_sLcSxh.js +0 -1
  1668. package/dist/gateway/static/root/assets/skills-page-BPzqM78D.js +0 -2
  1669. package/dist/gateway/static/root/assets/user-context-page-Dg_4sJJz.js +0 -1
  1670. package/dist/gateway/static/root/assets/voice-api-key-field-Bc-xxEHw.js +0 -1
  1671. package/dist/gateway/static/root/assets/work-discovery-page-CCMe2E98.js +0 -1
  1672. package/dist/gateway/static/root/assets/work-item-detail-page-CnVze8sW.js +0 -1
  1673. package/dist/gateway/static/root/assets/workflow-run-setup-panel-DUKlCVcY.js +0 -3
  1674. package/dist/gateway/static/root/assets/workflows-page-1Hh-__Ur.js +0 -11
  1675. package/dist/gateway/static/root/favicon-icon.svg +0 -187
  1676. package/dist/package.js.map +0 -1
  1677. package/dist/src/activity/context.js.map +0 -1
  1678. package/dist/src/activity/emitter.js.map +0 -1
  1679. package/dist/src/activity/service.js.map +0 -1
  1680. package/dist/src/agent/agent-manager.js.map +0 -1
  1681. package/dist/src/agent/agent-scope.js.map +0 -1
  1682. package/dist/src/agent/background-review/coordinator.js.map +0 -1
  1683. package/dist/src/agent/background-review/prompts.js.map +0 -1
  1684. package/dist/src/agent/background-review/run-background-review.js.map +0 -1
  1685. package/dist/src/agent/background-review/settings.js.map +0 -1
  1686. package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
  1687. package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
  1688. package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
  1689. package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
  1690. package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
  1691. package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
  1692. package/dist/src/agent/capabilities/definitions.js.map +0 -1
  1693. package/dist/src/agent/capabilities/registry.js.map +0 -1
  1694. package/dist/src/agent/child-agent-factory.js.map +0 -1
  1695. package/dist/src/agent/client-error-format.js.map +0 -1
  1696. package/dist/src/agent/code-intelligence/binary.js.map +0 -1
  1697. package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
  1698. package/dist/src/agent/code-intelligence/tools.js.map +0 -1
  1699. package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
  1700. package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
  1701. package/dist/src/agent/context/project-context.js.map +0 -1
  1702. package/dist/src/agent/context/workspace-seed.js.map +0 -1
  1703. package/dist/src/agent/context/workspace-state.js.map +0 -1
  1704. package/dist/src/agent/context/workspace.js.map +0 -1
  1705. package/dist/src/agent/embedded/run-for-session.js.map +0 -1
  1706. package/dist/src/agent/embedded/run-turn.js.map +0 -1
  1707. package/dist/src/agent/embedded/runs.js.map +0 -1
  1708. package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
  1709. package/dist/src/agent/embedded/session-runner.js.map +0 -1
  1710. package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
  1711. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
  1712. package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
  1713. package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
  1714. package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
  1715. package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
  1716. package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
  1717. package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
  1718. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
  1719. package/dist/src/agent/failover-error.js.map +0 -1
  1720. package/dist/src/agent/fallback/candidates.js.map +0 -1
  1721. package/dist/src/agent/fallback/reason.js.map +0 -1
  1722. package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
  1723. package/dist/src/agent/goals/checklist-judge.js.map +0 -1
  1724. package/dist/src/agent/goals/checklist-types.js.map +0 -1
  1725. package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
  1726. package/dist/src/agent/goals/goal-locale.js.map +0 -1
  1727. package/dist/src/agent/goals/judge.js.map +0 -1
  1728. package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
  1729. package/dist/src/agent/goals/post-turn.js.map +0 -1
  1730. package/dist/src/agent/goals/state.js.map +0 -1
  1731. package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
  1732. package/dist/src/agent/image/generation/bundled.js.map +0 -1
  1733. package/dist/src/agent/image/generation/image-assets.js.map +0 -1
  1734. package/dist/src/agent/image/generation/model-ref.js.map +0 -1
  1735. package/dist/src/agent/image/generation/normalization.js.map +0 -1
  1736. package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
  1737. package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
  1738. package/dist/src/agent/image/generation/runtime.js.map +0 -1
  1739. package/dist/src/agent/image/image-helpers.js.map +0 -1
  1740. package/dist/src/agent/image/image-model-fallback.js.map +0 -1
  1741. package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
  1742. package/dist/src/agent/image/load-image-media.js.map +0 -1
  1743. package/dist/src/agent/image/tool-model-config.js.map +0 -1
  1744. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
  1745. package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
  1746. package/dist/src/agent/image/understanding/runtime.js.map +0 -1
  1747. package/dist/src/agent/image/vision-detection.js.map +0 -1
  1748. package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
  1749. package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
  1750. package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
  1751. package/dist/src/agent/ipc/bus.js.map +0 -1
  1752. package/dist/src/agent/ipc/inbox.js.map +0 -1
  1753. package/dist/src/agent/ipc/socket.js.map +0 -1
  1754. package/dist/src/agent/ipc/types.js.map +0 -1
  1755. package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
  1756. package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
  1757. package/dist/src/agent/lifecycle/manager.js.map +0 -1
  1758. package/dist/src/agent/lifecycle/progress.js.map +0 -1
  1759. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
  1760. package/dist/src/agent/lifecycle/typing.js.map +0 -1
  1761. package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
  1762. package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
  1763. package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
  1764. package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
  1765. package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
  1766. package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
  1767. package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
  1768. package/dist/src/agent/mcp/mcp-http.js.map +0 -1
  1769. package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
  1770. package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
  1771. package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
  1772. package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
  1773. package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
  1774. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
  1775. package/dist/src/agent/media-generation/model-ref.js.map +0 -1
  1776. package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
  1777. package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
  1778. package/dist/src/agent/memory/agent-message-access.js.map +0 -1
  1779. package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
  1780. package/dist/src/agent/memory/builtin-provider.js.map +0 -1
  1781. package/dist/src/agent/memory/compaction.js.map +0 -1
  1782. package/dist/src/agent/memory/context/planner.js.map +0 -1
  1783. package/dist/src/agent/memory/context-fence.js.map +0 -1
  1784. package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
  1785. package/dist/src/agent/memory/dreaming/config.js.map +0 -1
  1786. package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
  1787. package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
  1788. package/dist/src/agent/memory/dreaming/events.js.map +0 -1
  1789. package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
  1790. package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
  1791. package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
  1792. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
  1793. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
  1794. package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
  1795. package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
  1796. package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
  1797. package/dist/src/agent/memory/lifecycle.js.map +0 -1
  1798. package/dist/src/agent/memory/manager.js.map +0 -1
  1799. package/dist/src/agent/memory/memory-config.js.map +0 -1
  1800. package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
  1801. package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
  1802. package/dist/src/agent/memory/sensitivity.js.map +0 -1
  1803. package/dist/src/agent/memory/source-origin.js.map +0 -1
  1804. package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
  1805. package/dist/src/agent/memory/summary-generator.js.map +0 -1
  1806. package/dist/src/agent/memory/understanding/correction.js.map +0 -1
  1807. package/dist/src/agent/memory/understanding/quality.js.map +0 -1
  1808. package/dist/src/agent/memory/understanding/service.js.map +0 -1
  1809. package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
  1810. package/dist/src/agent/memory/user-message-text.js.map +0 -1
  1811. package/dist/src/agent/memory/window.js.map +0 -1
  1812. package/dist/src/agent/messaging/command-handler.js.map +0 -1
  1813. package/dist/src/agent/messaging/message-router.js.map +0 -1
  1814. package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
  1815. package/dist/src/agent/messaging/stream-manager.js.map +0 -1
  1816. package/dist/src/agent/middleware/context.js.map +0 -1
  1817. package/dist/src/agent/middleware/self-verify.js.map +0 -1
  1818. package/dist/src/agent/models/manager.js.map +0 -1
  1819. package/dist/src/agent/models/request-limiter.js.map +0 -1
  1820. package/dist/src/agent/models/selection.js.map +0 -1
  1821. package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
  1822. package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
  1823. package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
  1824. package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
  1825. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
  1826. package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
  1827. package/dist/src/agent/prompt/memory/index.js.map +0 -1
  1828. package/dist/src/agent/prompt/safety.js.map +0 -1
  1829. package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
  1830. package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
  1831. package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
  1832. package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
  1833. package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
  1834. package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
  1835. package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
  1836. package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
  1837. package/dist/src/agent/prompt/subagent-context.js.map +0 -1
  1838. package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
  1839. package/dist/src/agent/prompt/system-prompt.js.map +0 -1
  1840. package/dist/src/agent/prompt/system-reminder.js.map +0 -1
  1841. package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
  1842. package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
  1843. package/dist/src/agent/reply/startup-context.js.map +0 -1
  1844. package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
  1845. package/dist/src/agent/sandbox/command-validator.js.map +0 -1
  1846. package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
  1847. package/dist/src/agent/sandbox/path-policy.js.map +0 -1
  1848. package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
  1849. package/dist/src/agent/sandbox/types.js.map +0 -1
  1850. package/dist/src/agent/service/async-queue.js.map +0 -1
  1851. package/dist/src/agent/service/btw-query.js.map +0 -1
  1852. package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
  1853. package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
  1854. package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
  1855. package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
  1856. package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
  1857. package/dist/src/agent/service/session-context-report.js.map +0 -1
  1858. package/dist/src/agent/service/webchat-tts.js.map +0 -1
  1859. package/dist/src/agent/service-inbound-utils.js.map +0 -1
  1860. package/dist/src/agent/service.js.map +0 -1
  1861. package/dist/src/agent/session/session-config-service.js.map +0 -1
  1862. package/dist/src/agent/session/session-context.js.map +0 -1
  1863. package/dist/src/agent/session/session-hydrator.js.map +0 -1
  1864. package/dist/src/agent/session/session-inspector.js.map +0 -1
  1865. package/dist/src/agent/session/session-lifecycle.js.map +0 -1
  1866. package/dist/src/agent/session/session-state-bag.js.map +0 -1
  1867. package/dist/src/agent/session/tracker.js.map +0 -1
  1868. package/dist/src/agent/skills/config.js.map +0 -1
  1869. package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
  1870. package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
  1871. package/dist/src/agent/skills/hub-hash.js.map +0 -1
  1872. package/dist/src/agent/skills/hub-lock.js.map +0 -1
  1873. package/dist/src/agent/skills/hub-pull.js.map +0 -1
  1874. package/dist/src/agent/skills/index.js.map +0 -1
  1875. package/dist/src/agent/skills/install-target.js.map +0 -1
  1876. package/dist/src/agent/skills/installer.js.map +0 -1
  1877. package/dist/src/agent/skills/managed-store.js.map +0 -1
  1878. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
  1879. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
  1880. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
  1881. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
  1882. package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
  1883. package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
  1884. package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
  1885. package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
  1886. package/dist/src/agent/skills/required-env-vars.js.map +0 -1
  1887. package/dist/src/agent/skills/scanner.js.map +0 -1
  1888. package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
  1889. package/dist/src/agent/skills/skill-manager.js.map +0 -1
  1890. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
  1891. package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
  1892. package/dist/src/agent/skills/skill-view-path.js.map +0 -1
  1893. package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
  1894. package/dist/src/agent/skills/test-framework.js.map +0 -1
  1895. package/dist/src/agent/skills/watcher.js.map +0 -1
  1896. package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
  1897. package/dist/src/agent/source-context/injector.js.map +0 -1
  1898. package/dist/src/agent/source-context/types.js.map +0 -1
  1899. package/dist/src/agent/starter-agents.js.map +0 -1
  1900. package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
  1901. package/dist/src/agent/tool-manuals/browser.js.map +0 -1
  1902. package/dist/src/agent/tool-manuals/index.js.map +0 -1
  1903. package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
  1904. package/dist/src/agent/tools/apply-patch.js.map +0 -1
  1905. package/dist/src/agent/tools/automation-tool.js.map +0 -1
  1906. package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
  1907. package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
  1908. package/dist/src/agent/tools/chain-tracker.js.map +0 -1
  1909. package/dist/src/agent/tools/clarify-tool.js.map +0 -1
  1910. package/dist/src/agent/tools/cli-clarify.js.map +0 -1
  1911. package/dist/src/agent/tools/communication.js.map +0 -1
  1912. package/dist/src/agent/tools/composio-tool.js.map +0 -1
  1913. package/dist/src/agent/tools/concurrency.js.map +0 -1
  1914. package/dist/src/agent/tools/create-share-tool.js.map +0 -1
  1915. package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
  1916. package/dist/src/agent/tools/delegate-tool.js.map +0 -1
  1917. package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
  1918. package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
  1919. package/dist/src/agent/tools/edit-diff.js.map +0 -1
  1920. package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
  1921. package/dist/src/agent/tools/error-tracker.js.map +0 -1
  1922. package/dist/src/agent/tools/exec-command.js.map +0 -1
  1923. package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
  1924. package/dist/src/agent/tools/executor.js.map +0 -1
  1925. package/dist/src/agent/tools/factory.js.map +0 -1
  1926. package/dist/src/agent/tools/find.js.map +0 -1
  1927. package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
  1928. package/dist/src/agent/tools/goal-tool.js.map +0 -1
  1929. package/dist/src/agent/tools/grep.js.map +0 -1
  1930. package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
  1931. package/dist/src/agent/tools/image-tool.js.map +0 -1
  1932. package/dist/src/agent/tools/list-dir.js.map +0 -1
  1933. package/dist/src/agent/tools/media-read-tool.js.map +0 -1
  1934. package/dist/src/agent/tools/memory-tool.js.map +0 -1
  1935. package/dist/src/agent/tools/metadata.js.map +0 -1
  1936. package/dist/src/agent/tools/read.js.map +0 -1
  1937. package/dist/src/agent/tools/search/http.js.map +0 -1
  1938. package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
  1939. package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
  1940. package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
  1941. package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
  1942. package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
  1943. package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
  1944. package/dist/src/agent/tools/search/region.js.map +0 -1
  1945. package/dist/src/agent/tools/search/registry.js.map +0 -1
  1946. package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
  1947. package/dist/src/agent/tools/send-media.js.map +0 -1
  1948. package/dist/src/agent/tools/session-search-tool.js.map +0 -1
  1949. package/dist/src/agent/tools/session-status-tool.js.map +0 -1
  1950. package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
  1951. package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
  1952. package/dist/src/agent/tools/skills-tools.js.map +0 -1
  1953. package/dist/src/agent/tools/structured-output.js.map +0 -1
  1954. package/dist/src/agent/tools/todo-tool.js.map +0 -1
  1955. package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
  1956. package/dist/src/agent/tools/tool-paths.js.map +0 -1
  1957. package/dist/src/agent/tools/truncate.js.map +0 -1
  1958. package/dist/src/agent/tools/tts-tool.js.map +0 -1
  1959. package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
  1960. package/dist/src/agent/tools/url-safety.js.map +0 -1
  1961. package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
  1962. package/dist/src/agent/tools/web-extract.js.map +0 -1
  1963. package/dist/src/agent/tools/web.js.map +0 -1
  1964. package/dist/src/agent/tools/workflow-tool.js.map +0 -1
  1965. package/dist/src/agent/tools/write.js.map +0 -1
  1966. package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
  1967. package/dist/src/agent/transcript/google-api.js.map +0 -1
  1968. package/dist/src/agent/transcript/model-selection.js.map +0 -1
  1969. package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
  1970. package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
  1971. package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
  1972. package/dist/src/agent/transcript/thinking-types.js.map +0 -1
  1973. package/dist/src/agent/transcript/thinking.js.map +0 -1
  1974. package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
  1975. package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
  1976. package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
  1977. package/dist/src/agent/workflow/agent-progress.js.map +0 -1
  1978. package/dist/src/agent/workflow/builtins/index.js.map +0 -1
  1979. package/dist/src/agent/workflow/catalog.js.map +0 -1
  1980. package/dist/src/agent/workflow/progress-broker.js.map +0 -1
  1981. package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
  1982. package/dist/src/agent/workflow/snapshot.js.map +0 -1
  1983. package/dist/src/agent/workflow/step-labels.js.map +0 -1
  1984. package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
  1985. package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
  1986. package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
  1987. package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
  1988. package/dist/src/agent-manifest/index.js.map +0 -1
  1989. package/dist/src/agent-manifest/preset-chain.js.map +0 -1
  1990. package/dist/src/agent-manifest/prompt.js.map +0 -1
  1991. package/dist/src/agent-manifest/resolver.js.map +0 -1
  1992. package/dist/src/agent-manifest/schema.js.map +0 -1
  1993. package/dist/src/agent-manifest/validator.js.map +0 -1
  1994. package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
  1995. package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
  1996. package/dist/src/agent-runtime/model-router.js.map +0 -1
  1997. package/dist/src/agent-runtime/run-trace.js.map +0 -1
  1998. package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
  1999. package/dist/src/agent-runtime/tool-registry.js.map +0 -1
  2000. package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
  2001. package/dist/src/ai-assist/text-assist.js.map +0 -1
  2002. package/dist/src/auth/credentials.js.map +0 -1
  2003. package/dist/src/auth/index.js.map +0 -1
  2004. package/dist/src/auth/oauth/anthropic.js.map +0 -1
  2005. package/dist/src/auth/oauth/github-copilot.js.map +0 -1
  2006. package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
  2007. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
  2008. package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
  2009. package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
  2010. package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
  2011. package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
  2012. package/dist/src/auth/oauth/minimax.js.map +0 -1
  2013. package/dist/src/auth/oauth/openai-codex.js.map +0 -1
  2014. package/dist/src/auth/oauth/pkce.js.map +0 -1
  2015. package/dist/src/auth/profiles/oauth.js.map +0 -1
  2016. package/dist/src/auth/profiles/order.js.map +0 -1
  2017. package/dist/src/auth/profiles/profiles.js.map +0 -1
  2018. package/dist/src/auth/profiles/store.js.map +0 -1
  2019. package/dist/src/auth/sync-provider-auth.js.map +0 -1
  2020. package/dist/src/automations/api/routes.js.map +0 -1
  2021. package/dist/src/automations/domain/schedule.js.map +0 -1
  2022. package/dist/src/automations/domain/validation.js.map +0 -1
  2023. package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
  2024. package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
  2025. package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
  2026. package/dist/src/automations/product-events.js.map +0 -1
  2027. package/dist/src/automations/service/action-executor.js.map +0 -1
  2028. package/dist/src/automations/service/automation-service.js.map +0 -1
  2029. package/dist/src/automations/storage/automation-repository.js.map +0 -1
  2030. package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
  2031. package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
  2032. package/dist/src/browser/actions/registry.js.map +0 -1
  2033. package/dist/src/browser/backend-from-config.js.map +0 -1
  2034. package/dist/src/browser/browser-command-timeout.js.map +0 -1
  2035. package/dist/src/browser/cache-dir-policy.js.map +0 -1
  2036. package/dist/src/browser/cdp-local-launcher.js.map +0 -1
  2037. package/dist/src/browser/cdp-supervisor.js.map +0 -1
  2038. package/dist/src/browser/free-port.js.map +0 -1
  2039. package/dist/src/browser/humanize.js.map +0 -1
  2040. package/dist/src/browser/install-lock.js.map +0 -1
  2041. package/dist/src/browser/manager.js.map +0 -1
  2042. package/dist/src/browser/pipeline/output.js.map +0 -1
  2043. package/dist/src/browser/pipeline/runner.js.map +0 -1
  2044. package/dist/src/browser/pipeline/schema.js.map +0 -1
  2045. package/dist/src/browser/pipeline/source.js.map +0 -1
  2046. package/dist/src/browser/pipeline/template.js.map +0 -1
  2047. package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
  2048. package/dist/src/browser/providers/browser-use.js.map +0 -1
  2049. package/dist/src/browser/providers/browserbase.js.map +0 -1
  2050. package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
  2051. package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
  2052. package/dist/src/browser/providers/extension.js.map +0 -1
  2053. package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
  2054. package/dist/src/browser/providers/playwright-install.js.map +0 -1
  2055. package/dist/src/browser/readiness.js.map +0 -1
  2056. package/dist/src/browser/schemas.js.map +0 -1
  2057. package/dist/src/browser/session-lifecycle.js.map +0 -1
  2058. package/dist/src/browser/snapshot-helpers.js.map +0 -1
  2059. package/dist/src/browser/stealth.js.map +0 -1
  2060. package/dist/src/browser/url-policy.js.map +0 -1
  2061. package/dist/src/capabilities/store-connector.js.map +0 -1
  2062. package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
  2063. package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
  2064. package/dist/src/channels/attachments/inbound-types.js.map +0 -1
  2065. package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
  2066. package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
  2067. package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
  2068. package/dist/src/channels/config-helpers.js.map +0 -1
  2069. package/dist/src/channels/envelope-timestamp.js.map +0 -1
  2070. package/dist/src/channels/exec-approval-runtime.js.map +0 -1
  2071. package/dist/src/channels/health-monitor.js.map +0 -1
  2072. package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
  2073. package/dist/src/channels/internal-outbound.js.map +0 -1
  2074. package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
  2075. package/dist/src/channels/manager.js.map +0 -1
  2076. package/dist/src/channels/media.js.map +0 -1
  2077. package/dist/src/channels/outbound/deliver.js.map +0 -1
  2078. package/dist/src/channels/outbound/normalize.js.map +0 -1
  2079. package/dist/src/channels/outbound/persist-store.js.map +0 -1
  2080. package/dist/src/channels/outbound/queue.js.map +0 -1
  2081. package/dist/src/channels/outbound-sender.js.map +0 -1
  2082. package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
  2083. package/dist/src/channels/pairing/approve-cli.js.map +0 -1
  2084. package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
  2085. package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
  2086. package/dist/src/channels/pairing/pairing-events.js.map +0 -1
  2087. package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
  2088. package/dist/src/channels/pairing/pairing-service.js.map +0 -1
  2089. package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
  2090. package/dist/src/channels/pairing/pairing-store.js.map +0 -1
  2091. package/dist/src/channels/pairing/paths.js.map +0 -1
  2092. package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
  2093. package/dist/src/channels/pipeline.js.map +0 -1
  2094. package/dist/src/channels/plugin-registry.js.map +0 -1
  2095. package/dist/src/channels/plugins/registry.js.map +0 -1
  2096. package/dist/src/channels/restart-policy.js.map +0 -1
  2097. package/dist/src/channels/security-helpers.js.map +0 -1
  2098. package/dist/src/channels/security.js.map +0 -1
  2099. package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
  2100. package/dist/src/chat-commands/agent-edit.js.map +0 -1
  2101. package/dist/src/chat-commands/builtins/config.js.map +0 -1
  2102. package/dist/src/chat-commands/builtins/context.js.map +0 -1
  2103. package/dist/src/chat-commands/builtins/goal.js.map +0 -1
  2104. package/dist/src/chat-commands/builtins/model.js.map +0 -1
  2105. package/dist/src/chat-commands/builtins/review.js.map +0 -1
  2106. package/dist/src/chat-commands/builtins/session.js.map +0 -1
  2107. package/dist/src/chat-commands/builtins/skill.js.map +0 -1
  2108. package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
  2109. package/dist/src/chat-commands/builtins/system.js.map +0 -1
  2110. package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
  2111. package/dist/src/chat-commands/builtins/tts.js.map +0 -1
  2112. package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
  2113. package/dist/src/chat-commands/command-parse.js.map +0 -1
  2114. package/dist/src/chat-commands/config-paths.js.map +0 -1
  2115. package/dist/src/chat-commands/config-value.js.map +0 -1
  2116. package/dist/src/chat-commands/context.js.map +0 -1
  2117. package/dist/src/chat-commands/format-output.js.map +0 -1
  2118. package/dist/src/chat-commands/index.js.map +0 -1
  2119. package/dist/src/chat-commands/processor.js.map +0 -1
  2120. package/dist/src/chat-commands/registry.js.map +0 -1
  2121. package/dist/src/chat-commands/session-key.js.map +0 -1
  2122. package/dist/src/cli/argv-invocation.js.map +0 -1
  2123. package/dist/src/cli/argv.js.map +0 -1
  2124. package/dist/src/cli/bin.js.map +0 -1
  2125. package/dist/src/cli/cli-log-level-preset.js.map +0 -1
  2126. package/dist/src/cli/command-catalog.js.map +0 -1
  2127. package/dist/src/cli/command-loaders.js.map +0 -1
  2128. package/dist/src/cli/command-manifest.js.map +0 -1
  2129. package/dist/src/cli/command-path-matches.js.map +0 -1
  2130. package/dist/src/cli/command-path-policy.js.map +0 -1
  2131. package/dist/src/cli/command-startup-policy.js.map +0 -1
  2132. package/dist/src/cli/commands/agent/interactive.js.map +0 -1
  2133. package/dist/src/cli/commands/agent/sessions.js.map +0 -1
  2134. package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
  2135. package/dist/src/cli/commands/agent.js.map +0 -1
  2136. package/dist/src/cli/commands/agents.js.map +0 -1
  2137. package/dist/src/cli/commands/auth.js.map +0 -1
  2138. package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
  2139. package/dist/src/cli/commands/browser.js.map +0 -1
  2140. package/dist/src/cli/commands/channels.js.map +0 -1
  2141. package/dist/src/cli/commands/config.js.map +0 -1
  2142. package/dist/src/cli/commands/connectors.js.map +0 -1
  2143. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
  2144. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
  2145. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
  2146. package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
  2147. package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
  2148. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
  2149. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
  2150. package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
  2151. package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
  2152. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
  2153. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
  2154. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
  2155. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
  2156. package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
  2157. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
  2158. package/dist/src/cli/commands/doctor/flow.js.map +0 -1
  2159. package/dist/src/cli/commands/doctor/format.js.map +0 -1
  2160. package/dist/src/cli/commands/doctor/index.js.map +0 -1
  2161. package/dist/src/cli/commands/extension-create.js.map +0 -1
  2162. package/dist/src/cli/commands/extension-dev.js.map +0 -1
  2163. package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
  2164. package/dist/src/cli/commands/extension-pack.js.map +0 -1
  2165. package/dist/src/cli/commands/extension.js.map +0 -1
  2166. package/dist/src/cli/commands/gateway/call.js.map +0 -1
  2167. package/dist/src/cli/commands/gateway/health.js.map +0 -1
  2168. package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
  2169. package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
  2170. package/dist/src/cli/commands/gateway/logs.js.map +0 -1
  2171. package/dist/src/cli/commands/gateway/probe.js.map +0 -1
  2172. package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
  2173. package/dist/src/cli/commands/gateway/restart.js.map +0 -1
  2174. package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
  2175. package/dist/src/cli/commands/gateway/service.js.map +0 -1
  2176. package/dist/src/cli/commands/gateway/shared.js.map +0 -1
  2177. package/dist/src/cli/commands/gateway/status.js.map +0 -1
  2178. package/dist/src/cli/commands/gateway/stop.js.map +0 -1
  2179. package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
  2180. package/dist/src/cli/commands/gateway/token.js.map +0 -1
  2181. package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
  2182. package/dist/src/cli/commands/gateway.js.map +0 -1
  2183. package/dist/src/cli/commands/goal.js.map +0 -1
  2184. package/dist/src/cli/commands/image.js.map +0 -1
  2185. package/dist/src/cli/commands/init.js.map +0 -1
  2186. package/dist/src/cli/commands/logs.js.map +0 -1
  2187. package/dist/src/cli/commands/models.js.map +0 -1
  2188. package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
  2189. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
  2190. package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
  2191. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
  2192. package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
  2193. package/dist/src/cli/commands/onboard/model.js.map +0 -1
  2194. package/dist/src/cli/commands/onboard.js.map +0 -1
  2195. package/dist/src/cli/commands/profile.js.map +0 -1
  2196. package/dist/src/cli/commands/project.js.map +0 -1
  2197. package/dist/src/cli/commands/providers.js.map +0 -1
  2198. package/dist/src/cli/commands/resume.js.map +0 -1
  2199. package/dist/src/cli/commands/search.js.map +0 -1
  2200. package/dist/src/cli/commands/session/actions.js.map +0 -1
  2201. package/dist/src/cli/commands/session/utils.js.map +0 -1
  2202. package/dist/src/cli/commands/session.js.map +0 -1
  2203. package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
  2204. package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
  2205. package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
  2206. package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
  2207. package/dist/src/cli/commands/setup.js.map +0 -1
  2208. package/dist/src/cli/commands/skills-test.js.map +0 -1
  2209. package/dist/src/cli/commands/skills.js.map +0 -1
  2210. package/dist/src/cli/commands/tailscale.js.map +0 -1
  2211. package/dist/src/cli/commands/tui-runner.js.map +0 -1
  2212. package/dist/src/cli/commands/tui.js.map +0 -1
  2213. package/dist/src/cli/commands/tunnel.js.map +0 -1
  2214. package/dist/src/cli/commands/update.js.map +0 -1
  2215. package/dist/src/cli/commands/voice.js.map +0 -1
  2216. package/dist/src/cli/context.js.map +0 -1
  2217. package/dist/src/cli/extension-cli-register.js.map +0 -1
  2218. package/dist/src/cli/gateway-run-argv.js.map +0 -1
  2219. package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
  2220. package/dist/src/cli/index.js.map +0 -1
  2221. package/dist/src/cli/registry.js.map +0 -1
  2222. package/dist/src/cli/templates.js.map +0 -1
  2223. package/dist/src/cli/utils/colors.js.map +0 -1
  2224. package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
  2225. package/dist/src/cli/utils/gateway-client.js.map +0 -1
  2226. package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
  2227. package/dist/src/cli/utils/init-workspace.js.map +0 -1
  2228. package/dist/src/cli/utils/oauth-login.js.map +0 -1
  2229. package/dist/src/cli/utils/oauth-providers.js.map +0 -1
  2230. package/dist/src/cli/utils/session.js.map +0 -1
  2231. package/dist/src/commands/agents.config.js.map +0 -1
  2232. package/dist/src/config/agent-profile.js.map +0 -1
  2233. package/dist/src/config/agent-typed-models.js.map +0 -1
  2234. package/dist/src/config/commands.flags.js.map +0 -1
  2235. package/dist/src/config/default-model.js.map +0 -1
  2236. package/dist/src/config/diff.js.map +0 -1
  2237. package/dist/src/config/gateway-bind.js.map +0 -1
  2238. package/dist/src/config/index.js.map +0 -1
  2239. package/dist/src/config/loader.js.map +0 -1
  2240. package/dist/src/config/mcp-config-normalize.js.map +0 -1
  2241. package/dist/src/config/model-input.js.map +0 -1
  2242. package/dist/src/config/models-json.js.map +0 -1
  2243. package/dist/src/config/paths-state.js.map +0 -1
  2244. package/dist/src/config/paths.js.map +0 -1
  2245. package/dist/src/config/profile.js.map +0 -1
  2246. package/dist/src/config/public-url.js.map +0 -1
  2247. package/dist/src/config/reload.js.map +0 -1
  2248. package/dist/src/config/resolve-config-value.js.map +0 -1
  2249. package/dist/src/config/rules.js.map +0 -1
  2250. package/dist/src/config/runtime-overrides.js.map +0 -1
  2251. package/dist/src/config/schema.js.map +0 -1
  2252. package/dist/src/config/validate-channel-configs.js.map +0 -1
  2253. package/dist/src/config/voice.js.map +0 -1
  2254. package/dist/src/config/web-patch.js.map +0 -1
  2255. package/dist/src/config/workspace-defaults.js.map +0 -1
  2256. package/dist/src/config/workspace-dirs.js.map +0 -1
  2257. package/dist/src/config/workspace-path-helpers.js.map +0 -1
  2258. package/dist/src/config/workspace-path.js.map +0 -1
  2259. package/dist/src/connectors/approval.js.map +0 -1
  2260. package/dist/src/connectors/auth-provider-registry.js.map +0 -1
  2261. package/dist/src/connectors/builtin-catalog.js.map +0 -1
  2262. package/dist/src/connectors/catalog.js.map +0 -1
  2263. package/dist/src/connectors/composio-catalog.js.map +0 -1
  2264. package/dist/src/connectors/composio-logo.js.map +0 -1
  2265. package/dist/src/connectors/composio-sessions.js.map +0 -1
  2266. package/dist/src/connectors/composio-triggers.js.map +0 -1
  2267. package/dist/src/connectors/composio.js.map +0 -1
  2268. package/dist/src/connectors/connector-memory-sync.js.map +0 -1
  2269. package/dist/src/connectors/health.js.map +0 -1
  2270. package/dist/src/connectors/install.js.map +0 -1
  2271. package/dist/src/connectors/instances.js.map +0 -1
  2272. package/dist/src/connectors/integration-strategy.js.map +0 -1
  2273. package/dist/src/connectors/lifecycle.js.map +0 -1
  2274. package/dist/src/connectors/materialize.js.map +0 -1
  2275. package/dist/src/connectors/policy.js.map +0 -1
  2276. package/dist/src/connectors/providers.js.map +0 -1
  2277. package/dist/src/connectors/registries/modelscope.js.map +0 -1
  2278. package/dist/src/connectors/registries/official-mcp.js.map +0 -1
  2279. package/dist/src/connectors/registries/search.js.map +0 -1
  2280. package/dist/src/connectors/registries/smithery.js.map +0 -1
  2281. package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
  2282. package/dist/src/connectors/secret-store.js.map +0 -1
  2283. package/dist/src/connectors/setup-secrets.js.map +0 -1
  2284. package/dist/src/connectors/supervisor.js.map +0 -1
  2285. package/dist/src/connectors/usage.js.map +0 -1
  2286. package/dist/src/connectors/workflow-preflight.js.map +0 -1
  2287. package/dist/src/daemon/constants.js.map +0 -1
  2288. package/dist/src/daemon/install-plan.js.map +0 -1
  2289. package/dist/src/daemon/launchd.js.map +0 -1
  2290. package/dist/src/daemon/schtasks.js.map +0 -1
  2291. package/dist/src/daemon/service-audit.js.map +0 -1
  2292. package/dist/src/daemon/service.js.map +0 -1
  2293. package/dist/src/daemon/systemd.js.map +0 -1
  2294. package/dist/src/document-understanding/extract.js.map +0 -1
  2295. package/dist/src/errors/index.js.map +0 -1
  2296. package/dist/src/extensions/activation-context.js.map +0 -1
  2297. package/dist/src/extensions/activation-planner.js.map +0 -1
  2298. package/dist/src/extensions/api.js.map +0 -1
  2299. package/dist/src/extensions/bundle-mcp.js.map +0 -1
  2300. package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
  2301. package/dist/src/extensions/diagnostics.js.map +0 -1
  2302. package/dist/src/extensions/discover-extensions.js.map +0 -1
  2303. package/dist/src/extensions/engine-check.js.map +0 -1
  2304. package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
  2305. package/dist/src/extensions/extension-registry-impl.js.map +0 -1
  2306. package/dist/src/extensions/health.js.map +0 -1
  2307. package/dist/src/extensions/hooks.js.map +0 -1
  2308. package/dist/src/extensions/index.js.map +0 -1
  2309. package/dist/src/extensions/install-transaction.js.map +0 -1
  2310. package/dist/src/extensions/install.js.map +0 -1
  2311. package/dist/src/extensions/loader.js.map +0 -1
  2312. package/dist/src/extensions/lockfile.js.map +0 -1
  2313. package/dist/src/extensions/manifest-registry.js.map +0 -1
  2314. package/dist/src/extensions/marketplace.js.map +0 -1
  2315. package/dist/src/extensions/media-provider-contracts.js.map +0 -1
  2316. package/dist/src/extensions/normalize-manifest.js.map +0 -1
  2317. package/dist/src/extensions/onboard-helpers.js.map +0 -1
  2318. package/dist/src/extensions/package-contract.js.map +0 -1
  2319. package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
  2320. package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
  2321. package/dist/src/extensions/sdk/index.js.map +0 -1
  2322. package/dist/src/extensions/sdk/lazy.js.map +0 -1
  2323. package/dist/src/extensions/sdk/testing.js.map +0 -1
  2324. package/dist/src/extensions/security.js.map +0 -1
  2325. package/dist/src/extensions/slots.js.map +0 -1
  2326. package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
  2327. package/dist/src/extensions/store-zip-limits.js.map +0 -1
  2328. package/dist/src/extensions/typed-event-bus.js.map +0 -1
  2329. package/dist/src/extensions/types/hooks.js.map +0 -1
  2330. package/dist/src/extensions/types/providers.js.map +0 -1
  2331. package/dist/src/extensions/update.js.map +0 -1
  2332. package/dist/src/extensions/when-context.js.map +0 -1
  2333. package/dist/src/extensions/when-expression.js.map +0 -1
  2334. package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
  2335. package/dist/src/gateway/agent-run-relay.js.map +0 -1
  2336. package/dist/src/gateway/agents-admin.js.map +0 -1
  2337. package/dist/src/gateway/auth.js.map +0 -1
  2338. package/dist/src/gateway/capability-presets-admin.js.map +0 -1
  2339. package/dist/src/gateway/chat-limits.js.map +0 -1
  2340. package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
  2341. package/dist/src/gateway/clarify-bridge.js.map +0 -1
  2342. package/dist/src/gateway/clarify-runtime.js.map +0 -1
  2343. package/dist/src/gateway/client-ip.js.map +0 -1
  2344. package/dist/src/gateway/config-tools-web.js.map +0 -1
  2345. package/dist/src/gateway/credential.js.map +0 -1
  2346. package/dist/src/gateway/discovery/mdns.js.map +0 -1
  2347. package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
  2348. package/dist/src/gateway/ensure-network-cors.js.map +0 -1
  2349. package/dist/src/gateway/file-path-classifier.js.map +0 -1
  2350. package/dist/src/gateway/file-reference-registry.js.map +0 -1
  2351. package/dist/src/gateway/global-defaults-admin.js.map +0 -1
  2352. package/dist/src/gateway/heartbeat/service.js.map +0 -1
  2353. package/dist/src/gateway/hono/app.js.map +0 -1
  2354. package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
  2355. package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
  2356. package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
  2357. package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
  2358. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
  2359. package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
  2360. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
  2361. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
  2362. package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
  2363. package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
  2364. package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
  2365. package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
  2366. package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
  2367. package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
  2368. package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
  2369. package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
  2370. package/dist/src/gateway/hono/oauth-async.js.map +0 -1
  2371. package/dist/src/gateway/hono/oauth.js.map +0 -1
  2372. package/dist/src/gateway/hono/routes/activity.js.map +0 -1
  2373. package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
  2374. package/dist/src/gateway/hono/routes/agents.js.map +0 -1
  2375. package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
  2376. package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
  2377. package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
  2378. package/dist/src/gateway/hono/routes/browser.js.map +0 -1
  2379. package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
  2380. package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
  2381. package/dist/src/gateway/hono/routes/channels.js.map +0 -1
  2382. package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
  2383. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
  2384. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
  2385. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
  2386. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
  2387. package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
  2388. package/dist/src/gateway/hono/routes/config.js.map +0 -1
  2389. package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
  2390. package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
  2391. package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
  2392. package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
  2393. package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
  2394. package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
  2395. package/dist/src/gateway/hono/routes/goals.js.map +0 -1
  2396. package/dist/src/gateway/hono/routes/home.js.map +0 -1
  2397. package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
  2398. package/dist/src/gateway/hono/routes/index.js.map +0 -1
  2399. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
  2400. package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
  2401. package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
  2402. package/dist/src/gateway/hono/routes/logs.js.map +0 -1
  2403. package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
  2404. package/dist/src/gateway/hono/routes/media.js.map +0 -1
  2405. package/dist/src/gateway/hono/routes/memory.js.map +0 -1
  2406. package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
  2407. package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
  2408. package/dist/src/gateway/hono/routes/models.js.map +0 -1
  2409. package/dist/src/gateway/hono/routes/notes.js.map +0 -1
  2410. package/dist/src/gateway/hono/routes/projects.js.map +0 -1
  2411. package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
  2412. package/dist/src/gateway/hono/routes/search.js.map +0 -1
  2413. package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
  2414. package/dist/src/gateway/hono/routes/shares.js.map +0 -1
  2415. package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
  2416. package/dist/src/gateway/hono/routes/status.js.map +0 -1
  2417. package/dist/src/gateway/hono/routes/tui.js.map +0 -1
  2418. package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
  2419. package/dist/src/gateway/hono/routes/update.js.map +0 -1
  2420. package/dist/src/gateway/hono/routes/voice.js.map +0 -1
  2421. package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
  2422. package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
  2423. package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
  2424. package/dist/src/gateway/hono/routes/you.js.map +0 -1
  2425. package/dist/src/gateway/hono/sse-json.js.map +0 -1
  2426. package/dist/src/gateway/hono/sse.js.map +0 -1
  2427. package/dist/src/gateway/host.js.map +0 -1
  2428. package/dist/src/gateway/image-capabilities.js.map +0 -1
  2429. package/dist/src/gateway/listen.js.map +0 -1
  2430. package/dist/src/gateway/lock.js.map +0 -1
  2431. package/dist/src/gateway/ports.js.map +0 -1
  2432. package/dist/src/gateway/protocol.js.map +0 -1
  2433. package/dist/src/gateway/public-url.js.map +0 -1
  2434. package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
  2435. package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
  2436. package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
  2437. package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
  2438. package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
  2439. package/dist/src/gateway/respawn.js.map +0 -1
  2440. package/dist/src/gateway/run-loop.js.map +0 -1
  2441. package/dist/src/gateway/runtime-config.js.map +0 -1
  2442. package/dist/src/gateway/security/audit.js.map +0 -1
  2443. package/dist/src/gateway/security/csp.js.map +0 -1
  2444. package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
  2445. package/dist/src/gateway/security/external-content.js.map +0 -1
  2446. package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
  2447. package/dist/src/gateway/security/loopback.js.map +0 -1
  2448. package/dist/src/gateway/security/operator-scopes.js.map +0 -1
  2449. package/dist/src/gateway/security/origin-check.js.map +0 -1
  2450. package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
  2451. package/dist/src/gateway/security/secret-equal.js.map +0 -1
  2452. package/dist/src/gateway/server-tailscale.js.map +0 -1
  2453. package/dist/src/gateway/server.js.map +0 -1
  2454. package/dist/src/gateway/service/agent-runner.js.map +0 -1
  2455. package/dist/src/gateway/service/config-coordinator.js.map +0 -1
  2456. package/dist/src/gateway/service/marketplace-service.js.map +0 -1
  2457. package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
  2458. package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
  2459. package/dist/src/gateway/service/sessions-api.js.map +0 -1
  2460. package/dist/src/gateway/service/sse-hub.js.map +0 -1
  2461. package/dist/src/gateway/service.js.map +0 -1
  2462. package/dist/src/gateway/session-reset-service.js.map +0 -1
  2463. package/dist/src/gateway/startup-readiness.js.map +0 -1
  2464. package/dist/src/gateway/startup-trace.js.map +0 -1
  2465. package/dist/src/gateway/tailscale-auth.js.map +0 -1
  2466. package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
  2467. package/dist/src/gateway/tls-server.js.map +0 -1
  2468. package/dist/src/gateway/trusted-proxy.js.map +0 -1
  2469. package/dist/src/gateway/user-turn-input.js.map +0 -1
  2470. package/dist/src/gateway/workspace-editor-path.js.map +0 -1
  2471. package/dist/src/gateway/workspace-file-search.js.map +0 -1
  2472. package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
  2473. package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
  2474. package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
  2475. package/dist/src/gateway/ws-security.js.map +0 -1
  2476. package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
  2477. package/dist/src/goals/goal-contract-draft.js.map +0 -1
  2478. package/dist/src/goals/goal-evidence-review.js.map +0 -1
  2479. package/dist/src/goals/goal-notifications.js.map +0 -1
  2480. package/dist/src/goals/goal-queue-store.js.map +0 -1
  2481. package/dist/src/goals/goal-runner.js.map +0 -1
  2482. package/dist/src/goals/goal-service.js.map +0 -1
  2483. package/dist/src/goals/goal-store.js.map +0 -1
  2484. package/dist/src/goals/goal-workflow-judge.js.map +0 -1
  2485. package/dist/src/heartbeat/active-hours.js.map +0 -1
  2486. package/dist/src/heartbeat/content-check.js.map +0 -1
  2487. package/dist/src/heartbeat/event-prompt.js.map +0 -1
  2488. package/dist/src/heartbeat/tokens.js.map +0 -1
  2489. package/dist/src/heartbeat/wake.js.map +0 -1
  2490. package/dist/src/i18n/format.js.map +0 -1
  2491. package/dist/src/i18n/goals-bundle.js.map +0 -1
  2492. package/dist/src/i18n/locale.js.map +0 -1
  2493. package/dist/src/i18n/locales/goals.en.js.map +0 -1
  2494. package/dist/src/i18n/locales/goals.zh.js.map +0 -1
  2495. package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
  2496. package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
  2497. package/dist/src/i18n/share-tool-bundle.js.map +0 -1
  2498. package/dist/src/index.js.map +0 -1
  2499. package/dist/src/infra/brew.js.map +0 -1
  2500. package/dist/src/infra/bus/queue.js.map +0 -1
  2501. package/dist/src/infra/debounce.js.map +0 -1
  2502. package/dist/src/infra/exec.js.map +0 -1
  2503. package/dist/src/infra/gateway-process-argv.js.map +0 -1
  2504. package/dist/src/infra/gateway-processes.js.map +0 -1
  2505. package/dist/src/infra/host-env-security-policy.js.map +0 -1
  2506. package/dist/src/infra/host-env-security.js.map +0 -1
  2507. package/dist/src/infra/http-proxy-env.js.map +0 -1
  2508. package/dist/src/infra/is-main.js.map +0 -1
  2509. package/dist/src/infra/json-utf8-bytes.js.map +0 -1
  2510. package/dist/src/infra/node-sqlite.js.map +0 -1
  2511. package/dist/src/infra/package-json.js.map +0 -1
  2512. package/dist/src/infra/package-update-steps.js.map +0 -1
  2513. package/dist/src/infra/path-env.js.map +0 -1
  2514. package/dist/src/infra/path-prepend.js.map +0 -1
  2515. package/dist/src/infra/ports.js.map +0 -1
  2516. package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
  2517. package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
  2518. package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
  2519. package/dist/src/infra/restart.js.map +0 -1
  2520. package/dist/src/infra/retry.js.map +0 -1
  2521. package/dist/src/infra/run-command.js.map +0 -1
  2522. package/dist/src/infra/sqlite-errors.js.map +0 -1
  2523. package/dist/src/infra/ssh-tunnel.js.map +0 -1
  2524. package/dist/src/infra/stable-node-path.js.map +0 -1
  2525. package/dist/src/infra/tailscale.js.map +0 -1
  2526. package/dist/src/infra/undici-fetch.js.map +0 -1
  2527. package/dist/src/infra/unhandled-rejections.js.map +0 -1
  2528. package/dist/src/infra/update-channels.js.map +0 -1
  2529. package/dist/src/infra/update-check.js.map +0 -1
  2530. package/dist/src/infra/update-global.js.map +0 -1
  2531. package/dist/src/infra/update-lock.js.map +0 -1
  2532. package/dist/src/infra/update-log.js.map +0 -1
  2533. package/dist/src/infra/update-restart.js.map +0 -1
  2534. package/dist/src/infra/update-runner.js.map +0 -1
  2535. package/dist/src/infra/update-startup.js.map +0 -1
  2536. package/dist/src/infra/warning-filter.js.map +0 -1
  2537. package/dist/src/infra/write-file-atomic.js.map +0 -1
  2538. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
  2539. package/dist/src/knowledge/coordinator.js.map +0 -1
  2540. package/dist/src/knowledge/ingestion-service.js.map +0 -1
  2541. package/dist/src/local-apps/acceptance.js.map +0 -1
  2542. package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
  2543. package/dist/src/local-apps/runtime-entry.js.map +0 -1
  2544. package/dist/src/local-apps/scaffold.js.map +0 -1
  2545. package/dist/src/local-apps/service.js.map +0 -1
  2546. package/dist/src/local-apps/store.js.map +0 -1
  2547. package/dist/src/markdown/chunk.js.map +0 -1
  2548. package/dist/src/markdown/code-spans.js.map +0 -1
  2549. package/dist/src/markdown/fences.js.map +0 -1
  2550. package/dist/src/markdown/frontmatter.js.map +0 -1
  2551. package/dist/src/markdown/ir.js.map +0 -1
  2552. package/dist/src/markdown/render.js.map +0 -1
  2553. package/dist/src/markdown/tables.js.map +0 -1
  2554. package/dist/src/mcp/channel-bridge.js.map +0 -1
  2555. package/dist/src/mcp/channel-server.js.map +0 -1
  2556. package/dist/src/mcp/channel-shared.js.map +0 -1
  2557. package/dist/src/mcp/channel-tools.js.map +0 -1
  2558. package/dist/src/mcp/gateway-http-client.js.map +0 -1
  2559. package/dist/src/media/media-reference.js.map +0 -1
  2560. package/dist/src/media/paths.js.map +0 -1
  2561. package/dist/src/media/session-references.js.map +0 -1
  2562. package/dist/src/media/store.js.map +0 -1
  2563. package/dist/src/media/uri.js.map +0 -1
  2564. package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
  2565. package/dist/src/media-shared/http/deadline.js.map +0 -1
  2566. package/dist/src/media-shared/http/private-network.js.map +0 -1
  2567. package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
  2568. package/dist/src/media-shared/http/provider-http.js.map +0 -1
  2569. package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
  2570. package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
  2571. package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
  2572. package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
  2573. package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
  2574. package/dist/src/media-understanding/registry.js.map +0 -1
  2575. package/dist/src/media-understanding/resolve-entries.js.map +0 -1
  2576. package/dist/src/media-understanding/runner.js.map +0 -1
  2577. package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
  2578. package/dist/src/migrations/registry.js.map +0 -1
  2579. package/dist/src/migrations/runner.js.map +0 -1
  2580. package/dist/src/mobile/notification-service.js.map +0 -1
  2581. package/dist/src/mobile/notification-store.js.map +0 -1
  2582. package/dist/src/mobile/notification-types.js.map +0 -1
  2583. package/dist/src/notes/agent-context.js.map +0 -1
  2584. package/dist/src/notes/attachment-ref.js.map +0 -1
  2585. package/dist/src/notes/note-attachment-sync.js.map +0 -1
  2586. package/dist/src/notes/note-index-meta.js.map +0 -1
  2587. package/dist/src/notes/note-markdown.js.map +0 -1
  2588. package/dist/src/notes/paths.js.map +0 -1
  2589. package/dist/src/notes/service.js.map +0 -1
  2590. package/dist/src/notes/store.js.map +0 -1
  2591. package/dist/src/package-version.js.map +0 -1
  2592. package/dist/src/pets/factory.js.map +0 -1
  2593. package/dist/src/pets/manifest.js.map +0 -1
  2594. package/dist/src/pets/validator.js.map +0 -1
  2595. package/dist/src/process/kill-tree.js.map +0 -1
  2596. package/dist/src/project-trust/trust-store.js.map +0 -1
  2597. package/dist/src/projects/automation-bind.js.map +0 -1
  2598. package/dist/src/projects/goal-bind.js.map +0 -1
  2599. package/dist/src/projects/memory-bind.js.map +0 -1
  2600. package/dist/src/projects/project-agent-suggestion.js.map +0 -1
  2601. package/dist/src/projects/project-agent.js.map +0 -1
  2602. package/dist/src/projects/project-kind.js.map +0 -1
  2603. package/dist/src/projects/project-loop.js.map +0 -1
  2604. package/dist/src/projects/project-service.js.map +0 -1
  2605. package/dist/src/projects/project-store.js.map +0 -1
  2606. package/dist/src/projects/session-bind.js.map +0 -1
  2607. package/dist/src/projects/workflow-bind.js.map +0 -1
  2608. package/dist/src/projects/workspace-project.js.map +0 -1
  2609. package/dist/src/projects/workspace.js.map +0 -1
  2610. package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
  2611. package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
  2612. package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
  2613. package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
  2614. package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
  2615. package/dist/src/providers/constants.js.map +0 -1
  2616. package/dist/src/providers/domestic-presets.js.map +0 -1
  2617. package/dist/src/providers/env-keys.js.map +0 -1
  2618. package/dist/src/providers/extension-stream-bridge.js.map +0 -1
  2619. package/dist/src/providers/index.js.map +0 -1
  2620. package/dist/src/providers/model-call.js.map +0 -1
  2621. package/dist/src/providers/model-discovery.js.map +0 -1
  2622. package/dist/src/providers/model-registry.js.map +0 -1
  2623. package/dist/src/providers/model-supplements.js.map +0 -1
  2624. package/dist/src/providers/plugin-registry.js.map +0 -1
  2625. package/dist/src/providers/presentation.js.map +0 -1
  2626. package/dist/src/remote-access/exposure-guards.js.map +0 -1
  2627. package/dist/src/remote-access/exposure-manager.js.map +0 -1
  2628. package/dist/src/review/review-git.js.map +0 -1
  2629. package/dist/src/review/review-types.js.map +0 -1
  2630. package/dist/src/routing/account-id.js.map +0 -1
  2631. package/dist/src/routing/agent-session-key.js.map +0 -1
  2632. package/dist/src/routing/bindings.js.map +0 -1
  2633. package/dist/src/routing/index.js.map +0 -1
  2634. package/dist/src/routing/resolve-route.js.map +0 -1
  2635. package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
  2636. package/dist/src/routing/session-key-utils.js.map +0 -1
  2637. package/dist/src/routing/session-key.js.map +0 -1
  2638. package/dist/src/session/abort-cutoff.js.map +0 -1
  2639. package/dist/src/session/chat-export.js.map +0 -1
  2640. package/dist/src/session/client-history.js.map +0 -1
  2641. package/dist/src/session/compaction-checkpoints.js.map +0 -1
  2642. package/dist/src/session/config-store.js.map +0 -1
  2643. package/dist/src/session/init-session-turn.js.map +0 -1
  2644. package/dist/src/session/lifecycle-timestamps.js.map +0 -1
  2645. package/dist/src/session/load-jsonl-entries.js.map +0 -1
  2646. package/dist/src/session/manager.js.map +0 -1
  2647. package/dist/src/session/patch-metadata.js.map +0 -1
  2648. package/dist/src/session/reset-policy.js.map +0 -1
  2649. package/dist/src/session/reset-triggers.js.map +0 -1
  2650. package/dist/src/session/reset-type.js.map +0 -1
  2651. package/dist/src/session/resolve-session.js.map +0 -1
  2652. package/dist/src/session/session-context-for-llm.js.map +0 -1
  2653. package/dist/src/session/session-id.js.map +0 -1
  2654. package/dist/src/session/session-title.js.map +0 -1
  2655. package/dist/src/session/session-workspace.js.map +0 -1
  2656. package/dist/src/session/store.js.map +0 -1
  2657. package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
  2658. package/dist/src/session/thinking-resolve.js.map +0 -1
  2659. package/dist/src/session/transcript-events.js.map +0 -1
  2660. package/dist/src/session/transcript-format.js.map +0 -1
  2661. package/dist/src/session/transcript-outline.js.map +0 -1
  2662. package/dist/src/session/transcript-stats.js.map +0 -1
  2663. package/dist/src/session/types.js.map +0 -1
  2664. package/dist/src/session/user-round-delete.js.map +0 -1
  2665. package/dist/src/share/share-audit.js.map +0 -1
  2666. package/dist/src/share/share-auto.js.map +0 -1
  2667. package/dist/src/share/share-config.js.map +0 -1
  2668. package/dist/src/share/share-landing.js.map +0 -1
  2669. package/dist/src/share/share-rate-limit.js.map +0 -1
  2670. package/dist/src/share/share-store.js.map +0 -1
  2671. package/dist/src/share/share-thumbnail.js.map +0 -1
  2672. package/dist/src/share/share-types.js.map +0 -1
  2673. package/dist/src/share/share-url.js.map +0 -1
  2674. package/dist/src/share/share-zip.js.map +0 -1
  2675. package/dist/src/share/site-proxy.js.map +0 -1
  2676. package/dist/src/share/site-share-config.js.map +0 -1
  2677. package/dist/src/share/site-share-router.js.map +0 -1
  2678. package/dist/src/share/site-share-store.js.map +0 -1
  2679. package/dist/src/share/site-share-types.js.map +0 -1
  2680. package/dist/src/share/site-static-serve.js.map +0 -1
  2681. package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
  2682. package/dist/src/storage/sqlite/config-repository.js.map +0 -1
  2683. package/dist/src/storage/sqlite/connection.js.map +0 -1
  2684. package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
  2685. package/dist/src/storage/sqlite/fts.js.map +0 -1
  2686. package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
  2687. package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
  2688. package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
  2689. package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
  2690. package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
  2691. package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
  2692. package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
  2693. package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
  2694. package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
  2695. package/dist/src/storage/sqlite/paths.js.map +0 -1
  2696. package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
  2697. package/dist/src/storage/sqlite/schema-version.js.map +0 -1
  2698. package/dist/src/storage/sqlite/schema.js.map +0 -1
  2699. package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
  2700. package/dist/src/storage/sqlite/session-repository.js.map +0 -1
  2701. package/dist/src/storage/sqlite/transaction.js.map +0 -1
  2702. package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
  2703. package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
  2704. package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
  2705. package/dist/src/tui/backends/embedded-backend.js.map +0 -1
  2706. package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
  2707. package/dist/src/tui/chat-history.js.map +0 -1
  2708. package/dist/src/tui/clipboard-image.js.map +0 -1
  2709. package/dist/src/tui/clipboard-text.js.map +0 -1
  2710. package/dist/src/tui/components/assistant-message.js.map +0 -1
  2711. package/dist/src/tui/components/bash-execution.js.map +0 -1
  2712. package/dist/src/tui/components/bash-summary.js.map +0 -1
  2713. package/dist/src/tui/components/branch-message-summary.js.map +0 -1
  2714. package/dist/src/tui/components/branch-summary.js.map +0 -1
  2715. package/dist/src/tui/components/chat-log.js.map +0 -1
  2716. package/dist/src/tui/components/compaction-summary.js.map +0 -1
  2717. package/dist/src/tui/components/custom-editor.js.map +0 -1
  2718. package/dist/src/tui/components/custom-message.js.map +0 -1
  2719. package/dist/src/tui/components/dynamic-border.js.map +0 -1
  2720. package/dist/src/tui/components/extension-dialog.js.map +0 -1
  2721. package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
  2722. package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
  2723. package/dist/src/tui/components/searchable-select-list.js.map +0 -1
  2724. package/dist/src/tui/components/session-selector.js.map +0 -1
  2725. package/dist/src/tui/components/settings-selector.js.map +0 -1
  2726. package/dist/src/tui/components/thinking-selector.js.map +0 -1
  2727. package/dist/src/tui/components/tool-execution.js.map +0 -1
  2728. package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
  2729. package/dist/src/tui/components/tui-header.js.map +0 -1
  2730. package/dist/src/tui/components/user-message.js.map +0 -1
  2731. package/dist/src/tui/components/visual-truncate.js.map +0 -1
  2732. package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
  2733. package/dist/src/tui/extension-host/host.js.map +0 -1
  2734. package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
  2735. package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
  2736. package/dist/src/tui/extension-host/runtime.js.map +0 -1
  2737. package/dist/src/tui/extension-host/surface.js.map +0 -1
  2738. package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
  2739. package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
  2740. package/dist/src/tui/sse-consumer.js.map +0 -1
  2741. package/dist/src/tui/theme/dark.js.map +0 -1
  2742. package/dist/src/tui/theme/light.js.map +0 -1
  2743. package/dist/src/tui/theme-manager.js.map +0 -1
  2744. package/dist/src/tui/theme.js.map +0 -1
  2745. package/dist/src/tui/tool-summary.js.map +0 -1
  2746. package/dist/src/tui/tui-agent-events.js.map +0 -1
  2747. package/dist/src/tui/tui-command-formatters.js.map +0 -1
  2748. package/dist/src/tui/tui-commands.js.map +0 -1
  2749. package/dist/src/tui/tui-context-usage.js.map +0 -1
  2750. package/dist/src/tui/tui-extension-user-message.js.map +0 -1
  2751. package/dist/src/tui/tui-fd-path.js.map +0 -1
  2752. package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
  2753. package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
  2754. package/dist/src/tui/tui-git-branch.js.map +0 -1
  2755. package/dist/src/tui/tui-keybindings-file.js.map +0 -1
  2756. package/dist/src/tui/tui-lifecycle.js.map +0 -1
  2757. package/dist/src/tui/tui-local-shell.js.map +0 -1
  2758. package/dist/src/tui/tui-model-picker.js.map +0 -1
  2759. package/dist/src/tui/tui-oauth-login.js.map +0 -1
  2760. package/dist/src/tui/tui-overlays.js.map +0 -1
  2761. package/dist/src/tui/tui-picker-overlay.js.map +0 -1
  2762. package/dist/src/tui/tui-run-state.js.map +0 -1
  2763. package/dist/src/tui/tui-run-status-format.js.map +0 -1
  2764. package/dist/src/tui/tui-runtime-hints.js.map +0 -1
  2765. package/dist/src/tui/tui-scoped-models.js.map +0 -1
  2766. package/dist/src/tui/tui-session-actions.js.map +0 -1
  2767. package/dist/src/tui/tui-session-format.js.map +0 -1
  2768. package/dist/src/tui/tui-session-snapshot.js.map +0 -1
  2769. package/dist/src/tui/tui-session-stats.js.map +0 -1
  2770. package/dist/src/tui/tui-settings.js.map +0 -1
  2771. package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
  2772. package/dist/src/tui/tui-startup-resources.js.map +0 -1
  2773. package/dist/src/tui/tui-startup-text.js.map +0 -1
  2774. package/dist/src/tui/tui-stdio-filter.js.map +0 -1
  2775. package/dist/src/tui/tui-submit.js.map +0 -1
  2776. package/dist/src/tui/tui-suspend.js.map +0 -1
  2777. package/dist/src/tui/tui-timeline-picker.js.map +0 -1
  2778. package/dist/src/tui/tui-timeline.js.map +0 -1
  2779. package/dist/src/tui/tui-tool-diff.js.map +0 -1
  2780. package/dist/src/tui/tui-tool-result.js.map +0 -1
  2781. package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
  2782. package/dist/src/tui/tui-transcript-tree.js.map +0 -1
  2783. package/dist/src/tui/tui-types.js.map +0 -1
  2784. package/dist/src/tui/tui-workflow-slash.js.map +0 -1
  2785. package/dist/src/tui/tui.js.map +0 -1
  2786. package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
  2787. package/dist/src/tunnel/broker-client.js.map +0 -1
  2788. package/dist/src/tunnel/consent.js.map +0 -1
  2789. package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
  2790. package/dist/src/tunnel/env.js.map +0 -1
  2791. package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
  2792. package/dist/src/tunnel/frpc-binary.js.map +0 -1
  2793. package/dist/src/tunnel/frpc-config.js.map +0 -1
  2794. package/dist/src/tunnel/frpc-extract.js.map +0 -1
  2795. package/dist/src/tunnel/frpc-process.js.map +0 -1
  2796. package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
  2797. package/dist/src/tunnel/pair-context.js.map +0 -1
  2798. package/dist/src/tunnel/pair-url.js.map +0 -1
  2799. package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
  2800. package/dist/src/tunnel/pairing.js.map +0 -1
  2801. package/dist/src/tunnel/tunnel-audit.js.map +0 -1
  2802. package/dist/src/tunnel/tunnel-config.js.map +0 -1
  2803. package/dist/src/tunnel/tunnel-persist.js.map +0 -1
  2804. package/dist/src/tunnel/tunnel-qr.js.map +0 -1
  2805. package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
  2806. package/dist/src/tunnel/tunnel-service.js.map +0 -1
  2807. package/dist/src/tunnel/tunnel-state.js.map +0 -1
  2808. package/dist/src/tunnel/well-known.js.map +0 -1
  2809. package/dist/src/user-context/config.js.map +0 -1
  2810. package/dist/src/user-context/import.js.map +0 -1
  2811. package/dist/src/user-context/owner.js.map +0 -1
  2812. package/dist/src/user-context/profile.js.map +0 -1
  2813. package/dist/src/user-context/projection.js.map +0 -1
  2814. package/dist/src/user-context/runtime.js.map +0 -1
  2815. package/dist/src/user-context/source-recommendations.js.map +0 -1
  2816. package/dist/src/user-context/trust-policy.js.map +0 -1
  2817. package/dist/src/utils/global-singleton.js.map +0 -1
  2818. package/dist/src/utils/helpers.js.map +0 -1
  2819. package/dist/src/utils/index.js.map +0 -1
  2820. package/dist/src/utils/is-record.js.map +0 -1
  2821. package/dist/src/utils/logger/audit.js.map +0 -1
  2822. package/dist/src/utils/logger/config.js.map +0 -1
  2823. package/dist/src/utils/logger/context.js.map +0 -1
  2824. package/dist/src/utils/logger/exporters.js.map +0 -1
  2825. package/dist/src/utils/logger/index.js.map +0 -1
  2826. package/dist/src/utils/logger/log-store.js.map +0 -1
  2827. package/dist/src/utils/logger/log-stream.js.map +0 -1
  2828. package/dist/src/utils/logger/pino-record.js.map +0 -1
  2829. package/dist/src/utils/logger/redact.js.map +0 -1
  2830. package/dist/src/utils/logger/rotation.js.map +0 -1
  2831. package/dist/src/utils/logger/shutdown.js.map +0 -1
  2832. package/dist/src/utils/logger/stats.js.map +0 -1
  2833. package/dist/src/utils/logger/streams.js.map +0 -1
  2834. package/dist/src/utils/logger/types.js.map +0 -1
  2835. package/dist/src/utils/logger.js.map +0 -1
  2836. package/dist/src/utils/redact-sensitive-url.js.map +0 -1
  2837. package/dist/src/utils/sanitize-log.js.map +0 -1
  2838. package/dist/src/utils/string-coerce.js.map +0 -1
  2839. package/dist/src/voice/language-profile.js.map +0 -1
  2840. package/dist/src/voice/local/model-files.js.map +0 -1
  2841. package/dist/src/voice/local/model-manager.js.map +0 -1
  2842. package/dist/src/voice/local/models.js.map +0 -1
  2843. package/dist/src/voice/local/runtime-client.js.map +0 -1
  2844. package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
  2845. package/dist/src/voice/local/runtime-worker.js.map +0 -1
  2846. package/dist/src/voice/local/wav.js.map +0 -1
  2847. package/dist/src/voice/metadata/builtin.js.map +0 -1
  2848. package/dist/src/voice/metadata/registry.js.map +0 -1
  2849. package/dist/src/voice/stt/availability.js.map +0 -1
  2850. package/dist/src/voice/stt/config-slice.js.map +0 -1
  2851. package/dist/src/voice/stt/factory.js.map +0 -1
  2852. package/dist/src/voice/stt/index.js.map +0 -1
  2853. package/dist/src/voice/stt/list-providers.js.map +0 -1
  2854. package/dist/src/voice/stt/mention.js.map +0 -1
  2855. package/dist/src/voice/stt/preflight.js.map +0 -1
  2856. package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
  2857. package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
  2858. package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
  2859. package/dist/src/voice/stt/transcribe-core.js.map +0 -1
  2860. package/dist/src/voice/stt/types.js.map +0 -1
  2861. package/dist/src/voice/tts/audio.js.map +0 -1
  2862. package/dist/src/voice/tts/config-slice.js.map +0 -1
  2863. package/dist/src/voice/tts/directives.js.map +0 -1
  2864. package/dist/src/voice/tts/factory.js.map +0 -1
  2865. package/dist/src/voice/tts/list-providers.js.map +0 -1
  2866. package/dist/src/voice/tts/merge-config.js.map +0 -1
  2867. package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
  2868. package/dist/src/voice/tts/payload.js.map +0 -1
  2869. package/dist/src/voice/tts/preprocess.js.map +0 -1
  2870. package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
  2871. package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
  2872. package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
  2873. package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
  2874. package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
  2875. package/dist/src/voice/tts/service.js.map +0 -1
  2876. package/dist/src/voice/tts/speak-core.js.map +0 -1
  2877. package/dist/src/voice/tts/speech-registry.js.map +0 -1
  2878. package/dist/src/voice/tts/status-tracker.js.map +0 -1
  2879. package/dist/src/voice/tts/summarize.js.map +0 -1
  2880. package/dist/src/voice/tts/types.js.map +0 -1
  2881. package/dist/src/work-discovery/analyzer.js.map +0 -1
  2882. package/dist/src/work-discovery/probe.js.map +0 -1
  2883. package/dist/src/work-discovery/repository.js.map +0 -1
  2884. package/dist/src/work-discovery/service.js.map +0 -1
  2885. package/dist/src/work-items/agent-context.js.map +0 -1
  2886. package/dist/src/work-items/work-item-service.js.map +0 -1
  2887. package/dist/src/work-items/work-item-store.js.map +0 -1
  2888. package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
  2889. package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
  2890. package/dist/src/workflows/domain/definition-utils.js.map +0 -1
  2891. package/dist/src/workflows/domain/run.js.map +0 -1
  2892. package/dist/src/workflows/domain/schema-validation.js.map +0 -1
  2893. package/dist/src/workflows/domain/validation.js.map +0 -1
  2894. package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
  2895. package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
  2896. package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
  2897. package/dist/src/workflows/engine/projector.js.map +0 -1
  2898. package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
  2899. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
  2900. package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
  2901. package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
  2902. package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
  2903. package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
  2904. package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
  2905. package/dist/src/workflows/store/event-store.js.map +0 -1
  2906. package/dist/src/workflows/store/paths.js.map +0 -1
  2907. package/dist/src/workflows/store/run-index-store.js.map +0 -1
  2908. package/dist/src/workflows/store/run-store.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-adapter.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/config-adapter.ts"],"sourcesContent":["import type { ChannelAccountSnapshot, ChannelConfigAdapter } from '@xopcai/xopc/channels/plugin-types.js';\nimport type { TelegramAccountManager } from '../account-manager.js';\nimport type { TelegramResolvedAccount } from './types.js';\n\nexport function createTelegramConfigAdapter(options: {\n accountManager: TelegramAccountManager;\n}): ChannelConfigAdapter<TelegramResolvedAccount> {\n const { accountManager } = options;\n\n return {\n listAccountIds: (_cfg) => accountManager.getAllAccounts().map((a) => a.accountId),\n resolveAccount: (_cfg, accountId = 'default') => {\n const account = accountManager.getAccount(accountId);\n if (!account) return { accountId, enabled: false, botToken: '' };\n return {\n accountId: account.accountId,\n name: account.name,\n enabled: account.enabled !== false,\n botToken: account.botToken || '',\n tokenFile: account.tokenFile,\n apiRoot: account.apiRoot,\n proxy: account.proxy,\n dmPolicy: account.dmPolicy as TelegramResolvedAccount['dmPolicy'],\n groupPolicy: account.groupPolicy as TelegramResolvedAccount['groupPolicy'],\n allowFrom: account.allowFrom,\n groupAllowFrom: account.groupAllowFrom,\n requireMention: (account as { requireMention?: boolean }).requireMention,\n replyToMode: account.replyToMode as TelegramResolvedAccount['replyToMode'],\n streaming: account.streaming as TelegramResolvedAccount['streaming'],\n pollingStallThresholdMs: account.pollingStallThresholdMs,\n reactionLevel: account.reactionLevel as TelegramResolvedAccount['reactionLevel'],\n reactionNotifications: account.reactionNotifications as TelegramResolvedAccount['reactionNotifications'],\n ackReaction: account.ackReaction,\n groups: account.groups,\n };\n },\n isEnabled: (account) => account.enabled !== false,\n disabledReason: (account) => {\n if (account.enabled === false) return 'Account disabled';\n if (!account.botToken) return 'No token configured';\n return '';\n },\n isConfigured: async (account) => !!account.botToken,\n describeAccount: (account) => {\n const status = accountManager.getStatus(account.accountId);\n return {\n accountId: account.accountId,\n channelId: 'telegram',\n enabled: account.enabled !== false,\n configured: !!account.botToken,\n status: status?.running ? 'running' : 'stopped',\n } as ChannelAccountSnapshot;\n },\n };\n}\n"],"mappings":";AAIA,SAAgB,4BAA4B,SAEM;CAChD,MAAM,EAAE,mBAAmB;AAE3B,QAAO;EACL,iBAAiB,SAAS,eAAe,gBAAgB,CAAC,KAAK,MAAM,EAAE,UAAU;EACjF,iBAAiB,MAAM,YAAY,cAAc;GAC/C,MAAM,UAAU,eAAe,WAAW,UAAU;AACpD,OAAI,CAAC,QAAS,QAAO;IAAE;IAAW,SAAS;IAAO,UAAU;IAAI;AAChE,UAAO;IACL,WAAW,QAAQ;IACnB,MAAM,QAAQ;IACd,SAAS,QAAQ,YAAY;IAC7B,UAAU,QAAQ,YAAY;IAC9B,WAAW,QAAQ;IACnB,SAAS,QAAQ;IACjB,OAAO,QAAQ;IACf,UAAU,QAAQ;IAClB,aAAa,QAAQ;IACrB,WAAW,QAAQ;IACnB,gBAAgB,QAAQ;IACxB,gBAAiB,QAAyC;IAC1D,aAAa,QAAQ;IACrB,WAAW,QAAQ;IACnB,yBAAyB,QAAQ;IACjC,eAAe,QAAQ;IACvB,uBAAuB,QAAQ;IAC/B,aAAa,QAAQ;IACrB,QAAQ,QAAQ;IACjB;;EAEH,YAAY,YAAY,QAAQ,YAAY;EAC5C,iBAAiB,YAAY;AAC3B,OAAI,QAAQ,YAAY,MAAO,QAAO;AACtC,OAAI,CAAC,QAAQ,SAAU,QAAO;AAC9B,UAAO;;EAET,cAAc,OAAO,YAAY,CAAC,CAAC,QAAQ;EAC3C,kBAAkB,YAAY;GAC5B,MAAM,SAAS,eAAe,UAAU,QAAQ,UAAU;AAC1D,UAAO;IACL,WAAW,QAAQ;IACnB,WAAW;IACX,SAAS,QAAQ,YAAY;IAC7B,YAAY,CAAC,CAAC,QAAQ;IACtB,QAAQ,QAAQ,UAAU,YAAY;IACvC;;EAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"debounce-keys.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/debounce-keys.ts"],"sourcesContent":["/**\n * Debouncer key / policy for coalescing short Telegram messages.\n */\n\nimport type { Context } from 'grammy';\nimport type { Message } from '@grammyjs/types';\n\nexport interface TelegramMessageEvent {\n ctx: Context;\n accountId: string;\n message: Message;\n}\n\nexport function telegramDebouncerKeyPolicy() {\n return {\n buildKey: (item: TelegramMessageEvent) => {\n const chatId = item.ctx.chat?.id?.toString();\n const userId = item.ctx.from?.id?.toString();\n if (!chatId || !userId) return undefined;\n return `telegram:${item.accountId}:${chatId}:${userId}`;\n },\n shouldDebounce: (item: TelegramMessageEvent) => {\n const text = item.message.text ?? item.message.caption ?? '';\n if (text.startsWith('/')) return false;\n if (item.message.photo || item.message.document || item.message.video) return false;\n return text.length < 100;\n },\n };\n}\n"],"mappings":";AAaA,SAAgB,6BAA6B;AAC3C,QAAO;EACL,WAAW,SAA+B;GACxC,MAAM,SAAS,KAAK,IAAI,MAAM,IAAI,UAAU;GAC5C,MAAM,SAAS,KAAK,IAAI,MAAM,IAAI,UAAU;AAC5C,OAAI,CAAC,UAAU,CAAC,OAAQ,QAAO,KAAA;AAC/B,UAAO,YAAY,KAAK,UAAU,GAAG,OAAO,GAAG;;EAEjD,iBAAiB,SAA+B;GAC9C,MAAM,OAAO,KAAK,QAAQ,QAAQ,KAAK,QAAQ,WAAW;AAC1D,OAAI,KAAK,WAAW,IAAI,CAAE,QAAO;AACjC,OAAI,KAAK,QAAQ,SAAS,KAAK,QAAQ,YAAY,KAAK,QAAQ,MAAO,QAAO;AAC9E,UAAO,KAAK,SAAS;;EAExB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gateway-adapter.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/gateway-adapter.ts"],"sourcesContent":["import type {\n ChannelGatewayAdapter,\n ChannelGatewayContext,\n} from '@xopcai/xopc/channels/plugin-types.js';\nimport type { TelegramResolvedAccount } from './types.js';\n\nexport function createTelegramGatewayAdapter(handlers: {\n startAccount: (account: TelegramResolvedAccount) => Promise<void>;\n stopAccount: (accountId: string) => Promise<void>;\n}): ChannelGatewayAdapter<TelegramResolvedAccount> {\n return {\n startAccount: async (ctx: ChannelGatewayContext<TelegramResolvedAccount>) => {\n await handlers.startAccount(ctx.account);\n },\n stopAccount: async (ctx: ChannelGatewayContext<TelegramResolvedAccount>) => {\n await handlers.stopAccount(ctx.accountId);\n },\n };\n}\n"],"mappings":";AAMA,SAAgB,6BAA6B,UAGM;AACjD,QAAO;EACL,cAAc,OAAO,QAAwD;AAC3E,SAAM,SAAS,aAAa,IAAI,QAAQ;;EAE1C,aAAa,OAAO,QAAwD;AAC1E,SAAM,SAAS,YAAY,IAAI,UAAU;;EAE5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gateway-setup.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/gateway-setup.ts"],"sourcesContent":["import type { Config } from '@xopcai/xopc/config/schema.js';\nimport type { ChannelRuntimeActionAdapter } from '@xopcai/xopc/channels/plugins/types.adapters.js';\n\nfunction isZh(locale: string | undefined): boolean {\n return locale?.toLowerCase().startsWith('zh') === true;\n}\n\nfunction readInput(input: unknown): Record<string, unknown> {\n return input && typeof input === 'object' && !Array.isArray(input)\n ? (input as Record<string, unknown>)\n : {};\n}\n\nfunction pickString(input: unknown): string {\n return typeof input === 'string' ? input.trim() : '';\n}\n\nfunction pickDmPolicy(input: unknown): 'open' | 'pairing' | 'allowlist' | 'disabled' {\n return input === 'open' || input === 'pairing' || input === 'allowlist' || input === 'disabled'\n ? input\n : 'pairing';\n}\n\nfunction existingDefaultAccount(config: Config): Record<string, unknown> {\n const telegram = config.channels?.telegram as Record<string, unknown> | undefined;\n const accounts = telegram?.accounts as Record<string, unknown> | undefined;\n const account = accounts?.default;\n return account && typeof account === 'object' && !Array.isArray(account)\n ? (account as Record<string, unknown>)\n : {};\n}\n\nfunction existingDefaults(config: Config): Record<string, unknown> {\n const telegram = config.channels?.telegram as Record<string, unknown> | undefined;\n const defaults = telegram?.defaults;\n return defaults && typeof defaults === 'object' && !Array.isArray(defaults)\n ? (defaults as Record<string, unknown>)\n : {};\n}\n\nfunction buildTelegramConfig(config: Config, input: Record<string, unknown>): Config {\n const existing = (config.channels?.telegram as Record<string, unknown> | undefined) ?? {};\n const existingAccounts = (existing.accounts as Record<string, unknown> | undefined) ?? {};\n const previousDefault = existingDefaultAccount(config);\n const previousDefaults = existingDefaults(config);\n\n const botToken = pickString(input.botToken) || pickString(previousDefault.botToken);\n const apiRoot = pickString(input.apiRoot);\n const proxy = pickString(input.proxy);\n const dmPolicy = pickDmPolicy(input.dmPolicy ?? previousDefault.dmPolicy ?? previousDefaults.dmPolicy);\n\n const defaults: Record<string, unknown> = {\n ...previousDefaults,\n dmPolicy: previousDefaults.dmPolicy ?? 'pairing',\n groupPolicy: previousDefaults.groupPolicy ?? 'open',\n replyToMode: previousDefaults.replyToMode ?? 'off',\n historyLimit: previousDefaults.historyLimit ?? 50,\n textChunkLimit: previousDefaults.textChunkLimit ?? 4000,\n streaming: previousDefaults.streaming ?? { mode: 'partial' },\n };\n if (apiRoot) defaults.apiRoot = apiRoot;\n if (proxy) defaults.proxy = proxy;\n\n const defaultAccount: Record<string, unknown> = {\n ...previousDefault,\n accountId: 'default',\n enabled: true,\n botToken,\n dmPolicy,\n allowFrom: dmPolicy === 'open' ? ['*'] : (previousDefault.allowFrom ?? []),\n };\n\n return {\n ...config,\n channels: {\n ...config.channels,\n telegram: {\n ...existing,\n enabled: true,\n defaults,\n accounts: {\n ...existingAccounts,\n default: defaultAccount,\n },\n },\n },\n };\n}\n\nfunction formPayload(config: Config, locale?: string) {\n const zh = isZh(locale);\n const account = existingDefaultAccount(config);\n const defaults = existingDefaults(config);\n return {\n type: 'form' as const,\n submitAction: 'setup.save',\n message: zh\n ? '填写 Bot Token 后保存即可启用 Telegram。默认私聊策略为 pairing;允许列表在账号配置里维护。'\n : 'Enter a Bot Token and save. The default DM policy is pairing; manage allow lists on the account configuration.',\n schema: {\n type: 'object',\n properties: {\n botToken: { type: 'string', title: zh ? 'Bot Token' : 'Bot Token', format: 'password' },\n dmPolicy: {\n type: 'string',\n title: zh ? '私聊访问' : 'Private chat access',\n enum: ['open', 'pairing', 'allowlist', 'disabled'],\n default: 'open',\n },\n apiRoot: {\n type: 'string',\n title: zh ? 'API Root(可选)' : 'API root (optional)',\n placeholder: 'https://api.telegram.org',\n },\n proxy: {\n type: 'string',\n title: zh ? '代理(可选)' : 'Proxy (optional)',\n placeholder: 'http://127.0.0.1:7897',\n },\n },\n required: ['botToken'],\n },\n values: {\n botToken: pickString(account.botToken),\n dmPolicy: pickDmPolicy(account.dmPolicy ?? defaults.dmPolicy ?? 'pairing'),\n apiRoot: pickString(account.apiRoot ?? defaults.apiRoot),\n proxy: pickString(account.proxy ?? defaults.proxy),\n },\n };\n}\n\nexport const telegramGatewaySetupActions: ChannelRuntimeActionAdapter = {\n async runAction({ actionId, input, locale }) {\n const zh = isZh(locale);\n if (actionId === 'setup.start') {\n const { loadConfig } = await import('@xopcai/xopc/config/loader.js');\n return { ok: true, payload: formPayload(loadConfig(), locale) };\n }\n\n if (actionId === 'setup.save') {\n const raw = readInput(input);\n const botToken = pickString(raw.botToken);\n if (!botToken) {\n return { ok: false, message: zh ? 'Bot Token 为必填项。' : 'Bot Token is required.' };\n }\n const { loadConfig, saveConfig } = await import('@xopcai/xopc/config/loader.js');\n await saveConfig(buildTelegramConfig(loadConfig(), raw));\n return {\n ok: true,\n payload: {\n type: 'ok',\n message: zh ? 'Telegram 配置已保存。私聊将按 pairing/允许列表策略放行。' : 'Telegram configuration saved. Private chat now follows the pairing/allow-list policy.',\n configChanged: true,\n },\n };\n }\n\n return { ok: false, message: `${zh ? '不支持的 Telegram 操作' : 'Unsupported Telegram action'}: ${actionId}` };\n },\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbound-access.js","names":["removeBotMentionAccess"],"sources":["../../../../../extensions/telegram/src/adapters/inbound-access.ts"],"sourcesContent":["/**\n * Access-control helpers passed to the inbound processor (Telegram-specific).\n */\n\nimport {\n normalizeAllowFromWithStore,\n evaluateGroupBaseAccess,\n resolveRequireMention,\n hasBotMention,\n removeBotMention as removeBotMentionAccess,\n} from '../access-control.js';\n\nexport function createTelegramInboundAccessControl() {\n return {\n normalizeAllowFromWithStore: (opts: { allowFrom?: Array<string | number>; storeAllowFrom?: string[] }) =>\n normalizeAllowFromWithStore(opts),\n evaluateGroupBaseAccess: (opts: Parameters<typeof evaluateGroupBaseAccess>[0]) => evaluateGroupBaseAccess(opts),\n resolveRequireMention: (opts: Parameters<typeof resolveRequireMention>[0]) => resolveRequireMention(opts),\n hasBotMention: (opts: Parameters<typeof hasBotMention>[0]) => hasBotMention(opts),\n removeBotMention: (text: string, botUsername: string) => removeBotMentionAccess(text, botUsername),\n };\n}\n"],"mappings":";;;;;AAYA,SAAgB,qCAAqC;AACnD,QAAO;EACL,8BAA8B,SAC5B,4BAA4B,KAAK;EACnC,0BAA0B,SAAwD,wBAAwB,KAAK;EAC/G,wBAAwB,SAAsD,sBAAsB,KAAK;EACzG,gBAAgB,SAA8C,cAAc,KAAK;EACjF,mBAAmB,MAAc,gBAAwBA,iBAAuB,MAAM,YAAY;EACnG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/index.ts"],"sourcesContent":["/**\n * Telegram ChannelPlugin adapter implementations (config, security, status).\n */\n\nimport type {\n ChannelConfigAdapter,\n ChannelSecurityAdapter,\n ChannelStatusAdapter,\n} from '@xopcai/xopc/channels/plugin-types.js';\nimport type { TelegramAccountManager } from '../account-manager.js';\nimport type { TelegramResolvedAccount } from './types.js';\nimport { createTelegramConfigAdapter } from './config-adapter.js';\nimport { createTelegramSecurityAdapter } from './security-adapter.js';\nimport { createTelegramStatusAdapter } from './status-adapter.js';\n\nexport type { TelegramResolvedAccount } from './types.js';\n\nexport function createTelegramPluginAdapters(options: {\n accountManager: TelegramAccountManager;\n}): {\n config: ChannelConfigAdapter<TelegramResolvedAccount>;\n security: ChannelSecurityAdapter<TelegramResolvedAccount>;\n status: ChannelStatusAdapter<TelegramResolvedAccount>;\n} {\n const { accountManager } = options;\n return {\n config: createTelegramConfigAdapter({ accountManager }),\n security: createTelegramSecurityAdapter(),\n status: createTelegramStatusAdapter({ accountManager }),\n };\n}\n\nexport { createTelegramSetupWizard } from './setup-wizard.js';\nexport {\n createTelegramOutboundSendMethods,\n telegramTextChunker,\n TELEGRAM_OUTBOUND_DEFAULTS,\n} from './outbound-adapter.js';\nexport { createTelegramInboundAccessControl } from './inbound-access.js';\nexport { telegramDebouncerKeyPolicy, type TelegramMessageEvent } from './debounce-keys.js';\n"],"mappings":";;;;;;;;AAiBA,SAAgB,6BAA6B,SAM3C;CACA,MAAM,EAAE,mBAAmB;AAC3B,QAAO;EACL,QAAQ,4BAA4B,EAAE,gBAAgB,CAAC;EACvD,UAAU,+BAA+B;EACzC,QAAQ,4BAA4B,EAAE,gBAAgB,CAAC;EACxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"onboard-cli.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/onboard-cli.ts"],"sourcesContent":["/**\n * Telegram interactive onboarding (CLI onboard) — {@link ChannelOnboardAdapter}.\n */\n\nimport { input, confirm, select } from '@inquirer/prompts';\n\nimport type { Config } from '@xopcai/xopc/config/schema.js';\nimport type { ChannelOnboardAdapter } from '@xopcai/xopc/channels/plugins/types.adapters.js';\n\ntype DmPolicy = 'pairing' | 'allowlist' | 'open' | 'disabled';\ntype GroupPolicy = 'open' | 'disabled' | 'allowlist';\n\nfunction isTelegramConfigured(config: Config): boolean {\n const telegram = config.channels?.telegram as Record<string, unknown> | undefined;\n if (!telegram) return false;\n\n const accounts = telegram.accounts as Record<string, Record<string, unknown>> | undefined;\n if (accounts) {\n for (const account of Object.values(accounts)) {\n if (account?.enabled === false) continue;\n if (typeof account.botToken === 'string' && account.botToken.trim()) return true;\n }\n }\n\n return false;\n}\n\nfunction detectEnvToken(): string | null {\n return process.env.TELEGRAM_BOT_TOKEN?.trim() || null;\n}\n\nasync function promptBotToken(config: Config): Promise<string | null> {\n const envToken = detectEnvToken();\n const tg = config.channels?.telegram as Record<string, unknown> | undefined;\n const accounts = tg?.accounts as Record<string, { botToken?: string }> | undefined;\n const existing = accounts?.default?.botToken?.trim();\n\n if (envToken && !existing) {\n const useEnv = await confirm({\n message: 'TELEGRAM_BOT_TOKEN is set in the environment. Use it?',\n default: true,\n });\n if (useEnv) return envToken;\n }\n\n if (typeof existing === 'string' && existing) {\n const keep = await confirm({\n message: 'A Telegram bot token is already configured. Keep it?',\n default: true,\n });\n if (keep) return existing;\n }\n\n console.log('\\n📝 Telegram Bot Token:');\n console.log(' 1. Open Telegram and chat with @BotFather');\n console.log(' 2. Send /newbot and follow the prompts');\n console.log(' 3. Copy the token BotFather gives you\\n');\n\n const token = await input({\n message: 'Enter bot token:',\n validate: (v) => v.trim().length > 0 || 'Token cannot be empty',\n });\n\n return token.trim();\n}\n\nasync function promptDmPolicy(): Promise<DmPolicy> {\n return select<DmPolicy>({\n message: 'DM (private chat) policy:',\n choices: [\n {\n value: 'pairing',\n name: 'pairing [recommended] verify new users with /pair',\n description: 'New users must send /pair before chatting',\n },\n {\n value: 'allowlist',\n name: 'allowlist allowlisted users only',\n description: 'Only listed users can message the bot',\n },\n {\n value: 'open',\n name: 'open anyone can DM (not recommended)',\n description: 'Any user can start a conversation',\n },\n {\n value: 'disabled',\n name: 'disabled DMs disabled',\n description: 'The bot does not respond to private messages',\n },\n ],\n default: 'pairing',\n });\n}\n\nasync function promptAllowlist(message: string): Promise<Array<string | number>> {\n const value = await input({\n message,\n default: '',\n });\n\n if (!value.trim()) return [];\n\n const entries = value\n .split(/[,\\s\\n]+/)\n .map((s) => s.trim())\n .filter(Boolean);\n\n return entries.map((e) => {\n const num = parseInt(e, 10);\n return !isNaN(num) && String(num) === e ? num : e;\n });\n}\n\nasync function promptGroupPolicy(): Promise<GroupPolicy> {\n return select<GroupPolicy>({\n message: 'Group chat policy:',\n choices: [\n {\n value: 'open',\n name: 'open all groups allowed',\n description: 'The bot can be used in any group',\n },\n {\n value: 'disabled',\n name: 'disabled groups disabled',\n description: 'The bot does not respond in groups',\n },\n {\n value: 'allowlist',\n name: 'allowlist allowlisted groups only',\n description: 'Only listed group chats can use the bot',\n },\n ],\n default: 'open',\n });\n}\n\nasync function configureTelegram(config: Config): Promise<Config> {\n console.log(`\\n${'='.repeat(50)}`);\n console.log('📱 Telegram setup');\n console.log(`${'='.repeat(50)}\\n`);\n\n const botToken = await promptBotToken(config);\n if (!botToken) {\n console.log('⚠️ No bot token; skipping Telegram setup.');\n return config;\n }\n\n const dmPolicy = await promptDmPolicy();\n\n let allowFrom: Array<string | number> | undefined;\n if (dmPolicy === 'allowlist') {\n allowFrom = await promptAllowlist('User IDs or usernames allowed for DMs (comma-separated):');\n }\n\n const groupPolicy = await promptGroupPolicy();\n\n let groupAllowFrom: Array<string | number> | undefined;\n if (groupPolicy === 'allowlist') {\n groupAllowFrom = await promptAllowlist('Allowed group chat IDs (comma-separated):');\n }\n\n const prev = config.channels?.telegram as Record<string, unknown> | undefined;\n const prevAccounts =\n prev?.accounts && typeof prev.accounts === 'object' && !Array.isArray(prev.accounts)\n ? { ...(prev.accounts as Record<string, unknown>) }\n : {};\n const prevDefault =\n prevAccounts.default && typeof prevAccounts.default === 'object' && !Array.isArray(prevAccounts.default)\n ? { ...(prevAccounts.default as Record<string, unknown>) }\n : {};\n\n const telegramConfig: Record<string, unknown> = {\n ...(prev ?? {}),\n enabled: true,\n defaults:\n prev?.defaults && typeof prev.defaults === 'object' && !Array.isArray(prev.defaults)\n ? prev.defaults\n : {\n dmPolicy: 'pairing',\n groupPolicy: 'open',\n replyToMode: 'off',\n historyLimit: 50,\n textChunkLimit: 4000,\n streaming: { mode: 'partial' },\n },\n accounts: {\n ...prevAccounts,\n default: {\n ...prevDefault,\n accountId: 'default',\n enabled: true,\n botToken,\n dmPolicy,\n groupPolicy,\n allowFrom: allowFrom ?? (prevDefault.allowFrom as Array<string | number> | undefined) ?? [],\n groupAllowFrom:\n groupAllowFrom ?? (prevDefault.groupAllowFrom as Array<string | number> | undefined) ?? [],\n },\n },\n };\n\n const newConfig: Config = {\n ...config,\n channels: {\n ...config.channels,\n telegram: telegramConfig,\n },\n };\n\n console.log('\\n✅ Telegram configuration complete\\n');\n return newConfig;\n}\n\nexport const telegramOnboardAdapter: ChannelOnboardAdapter = {\n isConfigured: isTelegramConfigured,\n configure: configureTelegram,\n};\n\n/** Optional entry: confirm before running the full Telegram configure flow. */\nexport async function setupTelegramOnboard(\n config: Config,\n options: { confirmMessage?: string; confirmDefault?: boolean } = {},\n): Promise<Config> {\n const shouldEnable = await confirm({\n message: options.confirmMessage || 'Enable Telegram channel?',\n default: options.confirmDefault ?? true,\n });\n if (!shouldEnable) {\n console.log('ℹ️ Telegram skipped.');\n return config;\n }\n return configureTelegram(config);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"outbound-adapter.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/outbound-adapter.ts"],"sourcesContent":["/**\n * Telegram outbound adapter: text chunker + sendText / sendMedia / sendPayload.\n */\n\nimport type {\n ChannelOutboundContext,\n ChannelOutboundPayloadContext,\n OutboundDeliveryResult,\n} from '@xopcai/xopc/channels/plugin-types.js';\nimport type { ChannelSendOptions, ChannelSendResult } from '@xopcai/xopc/channels/channel-domain.js';\nimport type { OutboundMessage } from '@xopcai/xopc/channels/transport-types.js';\nimport type { TelegramAccountManager } from '../account-manager.js';\nimport { telegramReplyTracker } from '../reply-params.js';\nimport { TELEGRAM_CHANNEL_DEFAULTS } from '../plugin-defaults.js';\n\nexport function telegramTextChunker(text: string, limit: number): string[] {\n const chunks: string[] = [];\n const lines = text.split('\\n');\n let current = '';\n for (const line of lines) {\n if ((current + '\\n' + line).length > limit) {\n if (current) chunks.push(current);\n current = line;\n } else {\n current = current ? current + '\\n' + line : line;\n }\n }\n if (current) chunks.push(current);\n return chunks;\n}\n\nfunction toDelivery(r: ChannelSendResult): OutboundDeliveryResult {\n return {\n messageId: r.messageId,\n chatId: r.chatId,\n success: r.success,\n error: r.error,\n };\n}\n\nexport function createTelegramOutboundSendMethods(\n send: (options: ChannelSendOptions) => Promise<ChannelSendResult>,\n accountManager?: TelegramAccountManager,\n): {\n sendText: (ctx: ChannelOutboundContext) => Promise<OutboundDeliveryResult>;\n sendMedia: (ctx: ChannelOutboundContext) => Promise<OutboundDeliveryResult>;\n sendPayload: (ctx: ChannelOutboundPayloadContext) => Promise<OutboundDeliveryResult>;\n} {\n const resolveReply = (ctx: ChannelOutboundContext): string | undefined => {\n if (ctx.replyToId != null && String(ctx.replyToId).trim()) {\n return String(ctx.replyToId);\n }\n const accountId = ctx.accountId ?? 'default';\n const account = accountManager?.getAccount(accountId);\n const meta = ctx.outboundMetadata;\n const inboundMessageId =\n meta && typeof meta.inboundMessageId === 'string' ? meta.inboundMessageId : undefined;\n return telegramReplyTracker.resolveReplyToMessageId({\n mode: account?.replyToMode,\n inboundMessageId,\n accountId,\n chatId: ctx.to,\n });\n };\n\n return {\n sendText: async (ctx: ChannelOutboundContext) => {\n const result = await send({\n chatId: ctx.to,\n content: ctx.text,\n accountId: ctx.accountId,\n threadId: ctx.threadId?.toString(),\n replyToMessageId: resolveReply(ctx),\n silent: ctx.silent,\n });\n return toDelivery(result);\n },\n\n sendPayload: async (ctx: ChannelOutboundContext & { payload: unknown }) => {\n const payload = ctx.payload as OutboundMessage;\n const result = await send({\n chatId: ctx.to,\n content: ctx.text,\n type: payload.type,\n accountId: ctx.accountId,\n threadId: ctx.threadId?.toString(),\n replyToMessageId: resolveReply(ctx),\n silent: ctx.silent,\n mediaUrl: ctx.mediaUrl,\n audioAsVoice: ctx.audioAsVoice,\n });\n return toDelivery(result);\n },\n\n sendMedia: async (ctx: ChannelOutboundContext) => {\n const mediaUrl = ctx.mediaUrl?.trim();\n if (!mediaUrl) {\n return { messageId: '', chatId: ctx.to, success: false, error: 'No media URL' };\n }\n const result = await send({\n chatId: ctx.to,\n content: ctx.text ?? '',\n accountId: ctx.accountId,\n threadId: ctx.threadId?.toString(),\n replyToMessageId: resolveReply(ctx),\n silent: ctx.silent,\n mediaUrl,\n mediaType: ctx.mediaType,\n audioAsVoice: ctx.audioAsVoice,\n });\n return toDelivery(result);\n },\n };\n}\n\nexport const TELEGRAM_OUTBOUND_DEFAULTS = {\n textChunkLimit: TELEGRAM_CHANNEL_DEFAULTS.outbound.textChunkLimit,\n} as const;\n"],"mappings":";;;AAeA,SAAgB,oBAAoB,MAAc,OAAyB;CACzE,MAAM,SAAmB,EAAE;CAC3B,MAAM,QAAQ,KAAK,MAAM,KAAK;CAC9B,IAAI,UAAU;AACd,MAAK,MAAM,QAAQ,MACjB,MAAK,UAAU,OAAO,MAAM,SAAS,OAAO;AAC1C,MAAI,QAAS,QAAO,KAAK,QAAQ;AACjC,YAAU;OAEV,WAAU,UAAU,UAAU,OAAO,OAAO;AAGhD,KAAI,QAAS,QAAO,KAAK,QAAQ;AACjC,QAAO;;AAGT,SAAS,WAAW,GAA8C;AAChE,QAAO;EACL,WAAW,EAAE;EACb,QAAQ,EAAE;EACV,SAAS,EAAE;EACX,OAAO,EAAE;EACV;;AAGH,SAAgB,kCACd,MACA,gBAKA;CACA,MAAM,gBAAgB,QAAoD;AACxE,MAAI,IAAI,aAAa,QAAQ,OAAO,IAAI,UAAU,CAAC,MAAM,CACvD,QAAO,OAAO,IAAI,UAAU;EAE9B,MAAM,YAAY,IAAI,aAAa;EACnC,MAAM,UAAU,gBAAgB,WAAW,UAAU;EACrD,MAAM,OAAO,IAAI;EACjB,MAAM,mBACJ,QAAQ,OAAO,KAAK,qBAAqB,WAAW,KAAK,mBAAmB,KAAA;AAC9E,SAAO,qBAAqB,wBAAwB;GAClD,MAAM,SAAS;GACf;GACA;GACA,QAAQ,IAAI;GACb,CAAC;;AAGJ,QAAO;EACL,UAAU,OAAO,QAAgC;AAS/C,UAAO,WAAW,MARG,KAAK;IACxB,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,WAAW,IAAI;IACf,UAAU,IAAI,UAAU,UAAU;IAClC,kBAAkB,aAAa,IAAI;IACnC,QAAQ,IAAI;IACb,CAAC,CACuB;;EAG3B,aAAa,OAAO,QAAuD;GACzE,MAAM,UAAU,IAAI;AAYpB,UAAO,WAAW,MAXG,KAAK;IACxB,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,MAAM,QAAQ;IACd,WAAW,IAAI;IACf,UAAU,IAAI,UAAU,UAAU;IAClC,kBAAkB,aAAa,IAAI;IACnC,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,cAAc,IAAI;IACnB,CAAC,CACuB;;EAG3B,WAAW,OAAO,QAAgC;GAChD,MAAM,WAAW,IAAI,UAAU,MAAM;AACrC,OAAI,CAAC,SACH,QAAO;IAAE,WAAW;IAAI,QAAQ,IAAI;IAAI,SAAS;IAAO,OAAO;IAAgB;AAajF,UAAO,WAAW,MAXG,KAAK;IACxB,QAAQ,IAAI;IACZ,SAAS,IAAI,QAAQ;IACrB,WAAW,IAAI;IACf,UAAU,IAAI,UAAU,UAAU;IAClC,kBAAkB,aAAa,IAAI;IACnC,QAAQ,IAAI;IACZ;IACA,WAAW,IAAI;IACf,cAAc,IAAI;IACnB,CAAC,CACuB;;EAE5B;;AAGH,MAAa,6BAA6B,EACxC,gBAAgB,0BAA0B,SAAS,gBACpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"security-adapter.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/security-adapter.ts"],"sourcesContent":["import type { Config } from '@xopcai/xopc/config/index.js';\nimport type {\n ChannelSecurityAdapter,\n ChannelSecurityContext,\n} from '@xopcai/xopc/channels/plugin-types.js';\nimport { readAllowFromIdsSync, resolveStandardAllowFromPath } from '@xopcai/xopc/channels/pairing/index.js';\nimport { evaluateAccess, resolveDmPolicy, resolveGroupPolicy } from '@xopcai/xopc/channels/security.js';\nimport type { DmPolicy, GroupPolicy } from '@xopcai/xopc/channels/channel-domain.js';\nimport type { TelegramResolvedAccount } from './types.js';\n\nexport function createTelegramSecurityAdapter(): ChannelSecurityAdapter<TelegramResolvedAccount> {\n return {\n resolveDmPolicy: ({ account }) => resolveDmPolicy(account.dmPolicy as DmPolicy | undefined, 'pairing'),\n resolveGroupPolicy: ({ account }) =>\n resolveGroupPolicy(account.groupPolicy as GroupPolicy | undefined, 'open'),\n resolveAllowFrom: ({ account }) => account.allowFrom,\n checkAccess: (ctx: ChannelSecurityContext, account, _cfg: Config) => {\n const isGroup = ctx.isGroup;\n const storeAllow = !isGroup\n ? readAllowFromIdsSync(resolveStandardAllowFromPath('telegram', account.accountId))\n : [];\n const allowFrom = isGroup\n ? (account.groupAllowFrom ?? account.allowFrom ?? [])\n : [...(account.allowFrom ?? []), ...storeAllow];\n const result = evaluateAccess({\n context: {\n channel: 'telegram',\n accountId: account.accountId,\n chatId: ctx.chatId,\n senderId: ctx.senderId,\n senderName: ctx.senderName,\n isGroup,\n isDm: !isGroup,\n },\n dmPolicy: account.dmPolicy as DmPolicy | undefined,\n groupPolicy: account.groupPolicy as GroupPolicy | undefined,\n allowFrom,\n groupAllowFrom: account.groupAllowFrom,\n allowNameMatching: true,\n });\n return { allowed: result.allowed, reason: result.reason };\n },\n };\n}\n"],"mappings":";;;;AAUA,SAAgB,gCAAiF;AAC/F,QAAO;EACL,kBAAkB,EAAE,cAAc,gBAAgB,QAAQ,UAAkC,UAAU;EACtG,qBAAqB,EAAE,cACrB,mBAAmB,QAAQ,aAAwC,OAAO;EAC5E,mBAAmB,EAAE,cAAc,QAAQ;EAC3C,cAAc,KAA6B,SAAS,SAAiB;GACnE,MAAM,UAAU,IAAI;GACpB,MAAM,aAAa,CAAC,UAChB,qBAAqB,6BAA6B,YAAY,QAAQ,UAAU,CAAC,GACjF,EAAE;GACN,MAAM,YAAY,UACb,QAAQ,kBAAkB,QAAQ,aAAa,EAAE,GAClD,CAAC,GAAI,QAAQ,aAAa,EAAE,EAAG,GAAG,WAAW;GACjD,MAAM,SAAS,eAAe;IAC5B,SAAS;KACP,SAAS;KACT,WAAW,QAAQ;KACnB,QAAQ,IAAI;KACZ,UAAU,IAAI;KACd,YAAY,IAAI;KAChB;KACA,MAAM,CAAC;KACR;IACD,UAAU,QAAQ;IAClB,aAAa,QAAQ;IACrB;IACA,gBAAgB,QAAQ;IACxB,mBAAmB;IACpB,CAAC;AACF,UAAO;IAAE,SAAS,OAAO;IAAS,QAAQ,OAAO;IAAQ;;EAE5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-wizard.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/setup-wizard.ts"],"sourcesContent":["/**\n * Telegram ChannelSetupWizard factory (onboard / tooling).\n */\n\nimport type { Config } from '@xopcai/xopc/config/index.js';\nimport type { ChannelSetupWizard } from '@xopcai/xopc/channels/plugins/types.adapters.js';\n\nfunction resolveTelegramToken(cfg: Config, _accountId?: string): string | undefined {\n const tg = cfg.channels?.telegram as Record<string, unknown> | undefined;\n const accounts = tg?.accounts as Record<string, { botToken?: string }> | undefined;\n const fromAcc = accounts && Object.values(accounts).find((a) => a?.botToken)?.botToken;\n return (fromAcc as string | undefined) || process.env.TELEGRAM_BOT_TOKEN;\n}\n\nexport function createTelegramSetupWizard(): ChannelSetupWizard {\n return {\n channel: 'telegram',\n status: {\n check: async (cfg, accountId) => {\n const first = resolveTelegramToken(cfg, accountId);\n return { ok: !!first, detail: first ? '' : 'No bot token configured' };\n },\n },\n envShortcut: {\n envVar: 'TELEGRAM_BOT_TOKEN',\n configPath: 'channels.telegram.accounts.default.botToken',\n },\n credentials: [\n {\n key: 'botToken',\n label: 'Bot API token',\n type: 'password',\n validate: (v) => (v && v.length > 10 ? null : 'Paste a token from @BotFather'),\n hint: 'From BotFather → /newbot or your bot’s API token',\n },\n ],\n finalize: {\n validate: async (cfg) => {\n const token = resolveTelegramToken(cfg);\n return token\n ? { ok: true }\n : { ok: false, error: 'Configure channels.telegram with a bot token' };\n },\n message: 'Telegram bot token saved.',\n },\n };\n}\n"],"mappings":";AAOA,SAAS,qBAAqB,KAAa,YAAyC;CAElF,MAAM,YADK,IAAI,UAAU,WACJ;AAErB,QADgB,YAAY,OAAO,OAAO,SAAS,CAAC,MAAM,MAAM,GAAG,SAAS,EAAE,YACpC,QAAQ,IAAI;;AAGxD,SAAgB,4BAAgD;AAC9D,QAAO;EACL,SAAS;EACT,QAAQ,EACN,OAAO,OAAO,KAAK,cAAc;GAC/B,MAAM,QAAQ,qBAAqB,KAAK,UAAU;AAClD,UAAO;IAAE,IAAI,CAAC,CAAC;IAAO,QAAQ,QAAQ,KAAK;IAA2B;KAEzE;EACD,aAAa;GACX,QAAQ;GACR,YAAY;GACb;EACD,aAAa,CACX;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,WAAW,MAAO,KAAK,EAAE,SAAS,KAAK,OAAO;GAC9C,MAAM;GACP,CACF;EACD,UAAU;GACR,UAAU,OAAO,QAAQ;AAEvB,WADc,qBAAqB,IACvB,GACR,EAAE,IAAI,MAAM,GACZ;KAAE,IAAI;KAAO,OAAO;KAAgD;;GAE1E,SAAS;GACV;EACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"status-adapter.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/status-adapter.ts"],"sourcesContent":["import type { ChannelAccountSnapshot, ChannelStatusAdapter } from '@xopcai/xopc/channels/plugin-types.js';\nimport type { TelegramAccountManager } from '../account-manager.js';\nimport { createTimeoutAbortSignal } from '../timeout-abort.js';\nimport type { TelegramResolvedAccount } from './types.js';\n\nexport function createTelegramStatusAdapter(options: {\n accountManager: TelegramAccountManager;\n}): ChannelStatusAdapter<TelegramResolvedAccount> {\n const { accountManager } = options;\n\n return {\n defaultRuntime: {\n accountId: 'default',\n channelId: 'telegram',\n enabled: true,\n configured: false,\n },\n buildChannelSummary: async ({ account }) => {\n const status = accountManager.getStatus(account.accountId);\n return {\n accountId: account.accountId,\n channelId: 'telegram',\n enabled: account.enabled !== false,\n configured: !!account.botToken,\n running: status?.running ?? false,\n username: accountManager.getBotUsername(account.accountId),\n };\n },\n probeAccount: async ({ account, timeoutMs }) => {\n const bot = accountManager.getBot(account.accountId);\n if (!bot) throw new Error('Bot not initialized');\n try {\n const ms = Math.min(Math.max(timeoutMs ?? 10_000, 3_000), 60_000);\n const { signal, dispose } = createTimeoutAbortSignal(ms);\n try {\n const me = await bot.api.getMe(signal);\n return { ok: true, username: me.username, id: me.id };\n } finally {\n dispose();\n }\n } catch (err) {\n return { ok: false, error: String(err) };\n }\n },\n buildAccountSnapshot: async ({ account }) => {\n const status = accountManager.getStatus(account.accountId);\n return {\n accountId: account.accountId,\n channelId: 'telegram',\n enabled: account.enabled !== false,\n configured: !!account.botToken,\n status: status?.running ? 'running' : 'stopped',\n } as ChannelAccountSnapshot;\n },\n resolveAccountState: ({ account, configured, enabled }) => {\n if (!configured) return 'offline';\n if (!enabled) return 'disabled';\n const status = accountManager.getStatus(account.accountId);\n return status?.running ? 'online' : 'offline';\n },\n };\n}\n"],"mappings":";;AAKA,SAAgB,4BAA4B,SAEM;CAChD,MAAM,EAAE,mBAAmB;AAE3B,QAAO;EACL,gBAAgB;GACd,WAAW;GACX,WAAW;GACX,SAAS;GACT,YAAY;GACb;EACD,qBAAqB,OAAO,EAAE,cAAc;GAC1C,MAAM,SAAS,eAAe,UAAU,QAAQ,UAAU;AAC1D,UAAO;IACL,WAAW,QAAQ;IACnB,WAAW;IACX,SAAS,QAAQ,YAAY;IAC7B,YAAY,CAAC,CAAC,QAAQ;IACtB,SAAS,QAAQ,WAAW;IAC5B,UAAU,eAAe,eAAe,QAAQ,UAAU;IAC3D;;EAEH,cAAc,OAAO,EAAE,SAAS,gBAAgB;GAC9C,MAAM,MAAM,eAAe,OAAO,QAAQ,UAAU;AACpD,OAAI,CAAC,IAAK,OAAM,IAAI,MAAM,sBAAsB;AAChD,OAAI;IAEF,MAAM,EAAE,QAAQ,YAAY,yBADjB,KAAK,IAAI,KAAK,IAAI,aAAa,KAAQ,IAAM,EAAE,IACH,CAAC;AACxD,QAAI;KACF,MAAM,KAAK,MAAM,IAAI,IAAI,MAAM,OAAO;AACtC,YAAO;MAAE,IAAI;MAAM,UAAU,GAAG;MAAU,IAAI,GAAG;MAAI;cAC7C;AACR,cAAS;;YAEJ,KAAK;AACZ,WAAO;KAAE,IAAI;KAAO,OAAO,OAAO,IAAI;KAAE;;;EAG5C,sBAAsB,OAAO,EAAE,cAAc;GAC3C,MAAM,SAAS,eAAe,UAAU,QAAQ,UAAU;AAC1D,UAAO;IACL,WAAW,QAAQ;IACnB,WAAW;IACX,SAAS,QAAQ,YAAY;IAC7B,YAAY,CAAC,CAAC,QAAQ;IACtB,QAAQ,QAAQ,UAAU,YAAY;IACvC;;EAEH,sBAAsB,EAAE,SAAS,YAAY,cAAc;AACzD,OAAI,CAAC,WAAY,QAAO;AACxB,OAAI,CAAC,QAAS,QAAO;AAErB,UADe,eAAe,UAAU,QAAQ,UACnC,EAAE,UAAU,WAAW;;EAEvC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"streaming-adapter.js","names":[],"sources":["../../../../../extensions/telegram/src/adapters/streaming-adapter.ts"],"sourcesContent":["/**\n * Telegram channel streaming: live assistant text via draft stream.\n */\n\nimport type {\n ChannelStreamHandle,\n ChannelStreamingAdapter,\n} from '@xopcai/xopc/channels/plugin-types.js';\nimport { createLogger } from '@xopcai/xopc/utils/logger.js';\nimport type { ProgressStage } from '@xopcai/xopc/agent/lifecycle/progress.js';\nimport type { TelegramAccountManager } from '../account-manager.js';\nimport { createTelegramDraftStream } from '../draft-stream.js';\nimport { renderTelegramHtmlText } from '../format.js';\nimport { resolveTelegramStreamingMode } from '../config-schema.js';\nimport { telegramReplyTracker } from '../reply-params.js';\n\nconst log = createLogger('TelegramStreaming');\n\nconst DM_MIN_INITIAL_CHARS = 30;\nconst BLOCK_DEFAULT_COALESCE = { minChars: 800, idleMs: 1000 };\n\nexport interface TelegramStreamingAdapterDeps {\n accountManager: TelegramAccountManager;\n}\n\nfunction isProbablyPrivateChat(chatId: string): boolean {\n const n = Number(chatId);\n if (Number.isFinite(n) && n < 0) {\n return false;\n }\n return true;\n}\n\nexport function createTelegramStreamingAdapter(\n deps: TelegramStreamingAdapterDeps,\n): ChannelStreamingAdapter {\n const { accountManager } = deps;\n\n return {\n startStream(options: {\n chatId: string;\n accountId?: string;\n threadId?: string;\n replyToMessageId?: string;\n parseMode?: 'Markdown' | 'HTML';\n }): ChannelStreamHandle | null {\n const accountId = options.accountId ?? 'default';\n const account = accountManager.getAccount(accountId);\n const streamMode = account ? resolveTelegramStreamingMode(account) : 'partial';\n\n if (streamMode === 'off') {\n return null;\n }\n\n const bot = accountManager.getBot(accountId);\n if (!bot) {\n log.warn({ accountId }, 'Streaming skipped: bot not available');\n return null;\n }\n\n const chatId = options.chatId;\n telegramReplyTracker.reset(accountId, chatId);\n\n const replyToMessageId = telegramReplyTracker.resolveReplyToMessageId({\n mode: account?.replyToMode,\n explicitReplyTo: options.replyToMessageId,\n inboundMessageId: options.replyToMessageId,\n accountId,\n chatId,\n });\n\n const threadParsed = options.threadId ? parseInt(options.threadId, 10) : NaN;\n const threadId = Number.isFinite(threadParsed) ? threadParsed : undefined;\n const replyParsed = replyToMessageId ? parseInt(replyToMessageId, 10) : NaN;\n const replyId = Number.isFinite(replyParsed) ? replyParsed : undefined;\n const isPrivate = isProbablyPrivateChat(chatId);\n\n const previewTransport = isPrivate ? ('message' as const) : ('auto' as const);\n const blockCoalesce = account?.streaming?.block?.coalesce;\n const throttleMs =\n streamMode === 'block'\n ? Math.max(250, blockCoalesce?.idleMs ?? BLOCK_DEFAULT_COALESCE.idleMs)\n : undefined;\n\n const draft = createTelegramDraftStream({\n api: bot.api,\n chatId,\n threadId: Number.isFinite(threadId!) ? threadId : undefined,\n replyToMessageId: Number.isFinite(replyId!) ? replyId : undefined,\n previewTransport,\n throttleMs,\n minInitialChars: isPrivate ? DM_MIN_INITIAL_CHARS : undefined,\n renderText: (text) => ({\n text: renderTelegramHtmlText(text),\n parseMode: 'HTML',\n }),\n warn: (m) => log.warn(m),\n });\n\n let reasoningDraft: ReturnType<typeof createTelegramDraftStream> | null = null;\n let pendingBlockBuffer = '';\n let blockFlushTimer: ReturnType<typeof setTimeout> | undefined;\n const blockMinChars = blockCoalesce?.minChars ?? BLOCK_DEFAULT_COALESCE.minChars;\n const blockIdleMs = blockCoalesce?.idleMs ?? BLOCK_DEFAULT_COALESCE.idleMs;\n\n const flushBlockBuffer = () => {\n if (!pendingBlockBuffer) return;\n draft.update(pendingBlockBuffer);\n pendingBlockBuffer = '';\n };\n\n const scheduleBlockFlush = () => {\n if (blockFlushTimer) clearTimeout(blockFlushTimer);\n blockFlushTimer = setTimeout(() => {\n blockFlushTimer = undefined;\n flushBlockBuffer();\n }, blockIdleMs);\n blockFlushTimer.unref?.();\n };\n\n let skipFinalOutbound = false;\n\n const end = async () => {\n if (streamMode === 'block') {\n if (blockFlushTimer) {\n clearTimeout(blockFlushTimer);\n blockFlushTimer = undefined;\n }\n flushBlockBuffer();\n }\n if (reasoningDraft) {\n await reasoningDraft.stop();\n reasoningDraft = null;\n }\n if (draft.previewMode?.() === 'draft' && typeof draft.materialize === 'function') {\n const mid = await draft.materialize();\n skipFinalOutbound = typeof mid === 'number';\n return;\n }\n await draft.flush();\n await draft.stop();\n skipFinalOutbound = typeof draft.messageId() === 'number';\n };\n\n const abort = async () => {\n if (blockFlushTimer) {\n clearTimeout(blockFlushTimer);\n blockFlushTimer = undefined;\n }\n pendingBlockBuffer = '';\n if (reasoningDraft) {\n await reasoningDraft.clear();\n reasoningDraft = null;\n }\n await draft.clear();\n skipFinalOutbound = false;\n };\n\n const update = (text: string) => {\n if (streamMode === 'block') {\n pendingBlockBuffer = text;\n if (text.length >= blockMinChars) {\n flushBlockBuffer();\n return;\n }\n scheduleBlockFlush();\n return;\n }\n draft.update(text);\n };\n\n const updateReasoning = (text: string) => {\n if (!reasoningDraft) {\n reasoningDraft = createTelegramDraftStream({\n api: bot.api,\n chatId,\n threadId: Number.isFinite(threadId!) ? threadId : undefined,\n previewTransport: 'message',\n renderText: (t) => ({\n text: `💭 ${renderTelegramHtmlText(t)}`,\n parseMode: 'HTML',\n }),\n warn: (m) => log.warn(m),\n });\n }\n reasoningDraft.update(text);\n };\n\n return {\n update,\n updateReasoning,\n updateProgress: (text, stage, detail) =>\n draft.updateWithProgress(text, stage as ProgressStage, detail),\n setProgress: (stage, detail) => draft.setProgress(stage as ProgressStage, detail),\n end,\n abort,\n messageId: () => draft.messageId(),\n skipFinalOutbound: () => skipFinalOutbound,\n };\n },\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-root.js","names":[],"sources":["../../../../extensions/telegram/src/api-root.ts"],"sourcesContent":["export const DEFAULT_TELEGRAM_API_ROOT = 'https://api.telegram.org';\n\nconst TELEGRAM_BOT_ENDPOINT_SEGMENT_RE = /^bot\\d+:[^/]+$/u;\n\nfunction isTelegramBotEndpointSegment(segment: string): boolean {\n try {\n return TELEGRAM_BOT_ENDPOINT_SEGMENT_RE.test(decodeURIComponent(segment));\n } catch {\n return TELEGRAM_BOT_ENDPOINT_SEGMENT_RE.test(segment);\n }\n}\n\n/** Strip trailing `/bot<token>` from a misconfigured apiRoot URL. */\nexport function normalizeTelegramApiRoot(apiRoot?: string): string {\n const trimmed = apiRoot?.trim();\n if (!trimmed) {\n return DEFAULT_TELEGRAM_API_ROOT;\n }\n\n let normalized = trimmed.replace(/\\/+$/u, '');\n try {\n const url = new URL(normalized);\n const segments = url.pathname.split('/').filter(Boolean);\n if (segments.length > 0 && isTelegramBotEndpointSegment(segments[segments.length - 1] ?? '')) {\n segments.pop();\n url.pathname = segments.length > 0 ? `/${segments.join('/')}` : '/';\n url.search = '';\n url.hash = '';\n normalized = url.toString().replace(/\\/+$/u, '');\n }\n } catch {\n // Invalid URLs are caught at config validation; keep trimmed value for runtime callers.\n }\n return normalized;\n}\n\nexport function hasTelegramBotEndpointApiRoot(apiRoot: unknown): boolean {\n if (typeof apiRoot !== 'string' || !apiRoot.trim()) {\n return false;\n }\n try {\n const url = new URL(apiRoot.trim());\n const segments = url.pathname.split('/').filter(Boolean);\n const last = segments[segments.length - 1];\n return Boolean(last && isTelegramBotEndpointSegment(last));\n } catch {\n return false;\n }\n}\n"],"mappings":";AAAA,MAAa,4BAA4B;AAEzC,MAAM,mCAAmC;AAEzC,SAAS,6BAA6B,SAA0B;AAC9D,KAAI;AACF,SAAO,iCAAiC,KAAK,mBAAmB,QAAQ,CAAC;SACnE;AACN,SAAO,iCAAiC,KAAK,QAAQ;;;;AAKzD,SAAgB,yBAAyB,SAA0B;CACjE,MAAM,UAAU,SAAS,MAAM;AAC/B,KAAI,CAAC,QACH,QAAO;CAGT,IAAI,aAAa,QAAQ,QAAQ,SAAS,GAAG;AAC7C,KAAI;EACF,MAAM,MAAM,IAAI,IAAI,WAAW;EAC/B,MAAM,WAAW,IAAI,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ;AACxD,MAAI,SAAS,SAAS,KAAK,6BAA6B,SAAS,SAAS,SAAS,MAAM,GAAG,EAAE;AAC5F,YAAS,KAAK;AACd,OAAI,WAAW,SAAS,SAAS,IAAI,IAAI,SAAS,KAAK,IAAI,KAAK;AAChE,OAAI,SAAS;AACb,OAAI,OAAO;AACX,gBAAa,IAAI,UAAU,CAAC,QAAQ,SAAS,GAAG;;SAE5C;AAGR,QAAO;;AAGT,SAAgB,8BAA8B,SAA2B;AACvE,KAAI,OAAO,YAAY,YAAY,CAAC,QAAQ,MAAM,CAChD,QAAO;AAET,KAAI;EAEF,MAAM,WAAW,IADD,IAAI,QAAQ,MAAM,CACd,CAAC,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ;EACxD,MAAM,OAAO,SAAS,SAAS,SAAS;AACxC,SAAO,QAAQ,QAAQ,6BAA6B,KAAK,CAAC;SACpD;AACN,SAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"approval-delivery.js","names":[],"sources":["../../../../extensions/telegram/src/approval-delivery.ts"],"sourcesContent":["import type { Bot } from 'grammy';\nimport { InlineKeyboard } from 'grammy';\nimport { createLogger } from '@xopcai/xopc/utils/logger.js';\nimport type { TelegramPendingApproval } from './approval-store.js';\nimport { resolveTelegramExecApprovers } from './exec-approvals.js';\nimport type { Config } from '@xopcai/xopc/config/index.js';\n\nconst log = createLogger('TelegramApprovalDelivery');\n\nexport async function deliverTelegramExecApprovalPrompt(params: {\n bot: Bot;\n cfg: Config;\n accountId: string;\n approval: TelegramPendingApproval;\n}): Promise<void> {\n const approvers = resolveTelegramExecApprovers(params.cfg, params.accountId);\n if (approvers.length === 0) {\n log.warn({ accountId: params.accountId }, 'No exec approvers configured');\n return;\n }\n\n const keyboard = new InlineKeyboard()\n .text('✅ Approve', `approval:approve:${params.approval.id}`)\n .text('❌ Deny', `approval:deny:${params.approval.id}`);\n\n const text = [\n '⚠️ Exec approval required',\n '',\n `Tool: ${params.approval.toolName}`,\n params.approval.summary,\n '',\n `ID: ${params.approval.id}`,\n ].join('\\n');\n\n for (const approver of approvers) {\n try {\n await params.bot.api.sendMessage(approver, text, { reply_markup: keyboard });\n } catch (err) {\n log.warn({ err, approver, approvalId: params.approval.id }, 'Failed to send approval prompt');\n }\n }\n}\n"],"mappings":";;;;;aAE4D;AAK5D,MAAM,MAAM,aAAa,2BAA2B;AAEpD,eAAsB,kCAAkC,QAKtC;CAChB,MAAM,YAAY,6BAA6B,OAAO,KAAK,OAAO,UAAU;AAC5E,KAAI,UAAU,WAAW,GAAG;AAC1B,MAAI,KAAK,EAAE,WAAW,OAAO,WAAW,EAAE,+BAA+B;AACzE;;CAGF,MAAM,WAAW,IAAI,gBAAgB,CAClC,KAAK,aAAa,oBAAoB,OAAO,SAAS,KAAK,CAC3D,KAAK,UAAU,iBAAiB,OAAO,SAAS,KAAK;CAExD,MAAM,OAAO;EACX;EACA;EACA,SAAS,OAAO,SAAS;EACzB,OAAO,SAAS;EAChB;EACA,OAAO,OAAO,SAAS;EACxB,CAAC,KAAK,KAAK;AAEZ,MAAK,MAAM,YAAY,UACrB,KAAI;AACF,QAAM,OAAO,IAAI,IAAI,YAAY,UAAU,MAAM,EAAE,cAAc,UAAU,CAAC;UACrE,KAAK;AACZ,MAAI,KAAK;GAAE;GAAK;GAAU,YAAY,OAAO,SAAS;GAAI,EAAE,iCAAiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"approval-store.js","names":[],"sources":["../../../../extensions/telegram/src/approval-store.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nexport type TelegramApprovalStatus = 'pending' | 'approved' | 'denied' | 'expired';\n\nexport interface TelegramPendingApproval {\n id: string;\n accountId: string;\n sessionKey: string;\n chatId: string;\n toolName: string;\n summary: string;\n createdAtMs: number;\n expiresAtMs: number;\n status: TelegramApprovalStatus;\n resolve?: (approved: boolean) => void;\n}\n\nconst DEFAULT_TTL_MS = 5 * 60 * 1000;\nconst pending = new Map<string, TelegramPendingApproval>();\n\nexport function createTelegramPendingApproval(params: {\n accountId: string;\n sessionKey: string;\n chatId: string;\n toolName: string;\n summary: string;\n ttlMs?: number;\n}): TelegramPendingApproval {\n const id = randomUUID().slice(0, 8);\n const now = Date.now();\n const entry: TelegramPendingApproval = {\n id,\n accountId: params.accountId,\n sessionKey: params.sessionKey,\n chatId: params.chatId,\n toolName: params.toolName,\n summary: params.summary,\n createdAtMs: now,\n expiresAtMs: now + (params.ttlMs ?? DEFAULT_TTL_MS),\n status: 'pending',\n };\n pending.set(id, entry);\n return entry;\n}\n\nexport function waitForTelegramApproval(id: string, timeoutMs = DEFAULT_TTL_MS): Promise<boolean> {\n const entry = pending.get(id);\n if (!entry || entry.status !== 'pending') {\n return Promise.resolve(false);\n }\n return new Promise((resolve) => {\n const timer = setTimeout(() => {\n if (entry.status === 'pending') {\n entry.status = 'expired';\n pending.delete(id);\n }\n resolve(false);\n }, timeoutMs);\n entry.resolve = (approved) => {\n clearTimeout(timer);\n resolve(approved);\n };\n });\n}\n\nexport function resolveTelegramApproval(id: string, approved: boolean): boolean {\n const entry = pending.get(id);\n if (!entry || entry.status !== 'pending') {\n return false;\n }\n entry.status = approved ? 'approved' : 'denied';\n entry.resolve?.(approved);\n pending.delete(id);\n return true;\n}\n\nexport function getTelegramPendingApproval(id: string): TelegramPendingApproval | undefined {\n return pending.get(id);\n}\n\nexport function listTelegramPendingApprovals(): TelegramPendingApproval[] {\n const now = Date.now();\n for (const [id, entry] of pending) {\n if (entry.status === 'pending' && entry.expiresAtMs <= now) {\n entry.status = 'expired';\n pending.delete(id);\n }\n }\n return [...pending.values()].filter((e) => e.status === 'pending');\n}\n"],"mappings":";;AAiBA,MAAM,iBAAiB,MAAS;AAChC,MAAM,0BAAU,IAAI,KAAsC;AAE1D,SAAgB,8BAA8B,QAOlB;CAC1B,MAAM,KAAK,YAAY,CAAC,MAAM,GAAG,EAAE;CACnC,MAAM,MAAM,KAAK,KAAK;CACtB,MAAM,QAAiC;EACrC;EACA,WAAW,OAAO;EAClB,YAAY,OAAO;EACnB,QAAQ,OAAO;EACf,UAAU,OAAO;EACjB,SAAS,OAAO;EAChB,aAAa;EACb,aAAa,OAAO,OAAO,SAAS;EACpC,QAAQ;EACT;AACD,SAAQ,IAAI,IAAI,MAAM;AACtB,QAAO;;AAGT,SAAgB,wBAAwB,IAAY,YAAY,gBAAkC;CAChG,MAAM,QAAQ,QAAQ,IAAI,GAAG;AAC7B,KAAI,CAAC,SAAS,MAAM,WAAW,UAC7B,QAAO,QAAQ,QAAQ,MAAM;AAE/B,QAAO,IAAI,SAAS,YAAY;EAC9B,MAAM,QAAQ,iBAAiB;AAC7B,OAAI,MAAM,WAAW,WAAW;AAC9B,UAAM,SAAS;AACf,YAAQ,OAAO,GAAG;;AAEpB,WAAQ,MAAM;KACb,UAAU;AACb,QAAM,WAAW,aAAa;AAC5B,gBAAa,MAAM;AACnB,WAAQ,SAAS;;GAEnB;;AAGJ,SAAgB,wBAAwB,IAAY,UAA4B;CAC9E,MAAM,QAAQ,QAAQ,IAAI,GAAG;AAC7B,KAAI,CAAC,SAAS,MAAM,WAAW,UAC7B,QAAO;AAET,OAAM,SAAS,WAAW,aAAa;AACvC,OAAM,UAAU,SAAS;AACzB,SAAQ,OAAO,GAAG;AAClB,QAAO;;AAGT,SAAgB,2BAA2B,IAAiD;AAC1F,QAAO,QAAQ,IAAI,GAAG;;AAGxB,SAAgB,+BAA0D;CACxE,MAAM,MAAM,KAAK,KAAK;AACtB,MAAK,MAAM,CAAC,IAAI,UAAU,QACxB,KAAI,MAAM,WAAW,aAAa,MAAM,eAAe,KAAK;AAC1D,QAAM,SAAS;AACf,UAAQ,OAAO,GAAG;;AAGtB,QAAO,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,QAAQ,MAAM,EAAE,WAAW,UAAU"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"caption.js","names":[],"sources":["../../../../extensions/telegram/src/caption.ts"],"sourcesContent":["/**\n * Telegram Caption Utilities\n *\n * Handles splitting text for media captions vs follow-up messages.\n * Telegram captions have a 1024 character limit.\n */\n\nconst TELEGRAM_CAPTION_LIMIT = 1024;\n\nexport interface CaptionSplit {\n /** The caption (max 1024 chars) */\n caption: string;\n /** Remaining text to send as follow-up */\n followUpText: string | undefined;\n /** Whether the text was split */\n wasSplit: boolean;\n}\n\n/**\n * Split text into caption and follow-up text\n * Tries to split at natural boundaries (paragraphs, sentences)\n */\nexport function splitTelegramCaption(text: string): CaptionSplit {\n if (!text || text.length <= TELEGRAM_CAPTION_LIMIT) {\n return {\n caption: text || '',\n followUpText: undefined,\n wasSplit: false,\n };\n }\n\n // Try to find a good split point before the limit\n let splitIndex = findGoodSplitPoint(text, TELEGRAM_CAPTION_LIMIT);\n\n // If no good split point, force split at limit\n if (splitIndex <= 0) {\n splitIndex = TELEGRAM_CAPTION_LIMIT;\n }\n\n const caption = text.slice(0, splitIndex).trim();\n const followUpText = text.slice(splitIndex).trim();\n\n return {\n caption,\n followUpText: followUpText || undefined,\n wasSplit: true,\n };\n}\n\n/**\n * Find a good split point near the limit\n * Prefers: paragraph break > sentence break > word break\n */\nfunction findGoodSplitPoint(text: string, limit: number): number {\n // Search backwards from limit\n const searchStart = Math.min(limit, text.length);\n const searchEnd = Math.max(0, limit - 200); // Look back up to 200 chars\n\n // 1. Look for paragraph break (double newline)\n for (let i = searchStart; i >= searchEnd; i--) {\n if (text.slice(i - 2, i) === '\\n\\n') {\n return i;\n }\n }\n\n // 2. Look for sentence break (.!? followed by space or end)\n const sentencePattern = /[.!?]\\s+/g;\n let match;\n let lastMatchIndex = -1;\n\n while ((match = sentencePattern.exec(text)) !== null) {\n if (match.index > searchEnd && match.index <= searchStart) {\n lastMatchIndex = match.index + 1; // Include the punctuation\n } else if (match.index > searchStart) {\n break;\n }\n }\n\n if (lastMatchIndex > 0) {\n return lastMatchIndex;\n }\n\n // 3. Look for word break (space)\n for (let i = searchStart; i >= searchEnd; i--) {\n if (text[i] === ' ' || text[i] === '\\n') {\n return i;\n }\n }\n\n // 4. Force split at limit\n return limit;\n}\n\n\n"],"mappings":";;;;;;;AAOA,MAAM,yBAAyB;;;;;AAe/B,SAAgB,qBAAqB,MAA4B;AAC/D,KAAI,CAAC,QAAQ,KAAK,UAAU,uBAC1B,QAAO;EACL,SAAS,QAAQ;EACjB,cAAc,KAAA;EACd,UAAU;EACX;CAIH,IAAI,aAAa,mBAAmB,MAAM,uBAAuB;AAGjE,KAAI,cAAc,EAChB,cAAa;AAMf,QAAO;EACL,SAJc,KAAK,MAAM,GAAG,WAAW,CAAC,MAIjC;EACP,cAJmB,KAAK,MAAM,WAAW,CAAC,MAIhB,IAAI,KAAA;EAC9B,UAAU;EACX;;;;;;AAOH,SAAS,mBAAmB,MAAc,OAAuB;CAE/D,MAAM,cAAc,KAAK,IAAI,OAAO,KAAK,OAAO;CAChD,MAAM,YAAY,KAAK,IAAI,GAAG,QAAQ,IAAI;AAG1C,MAAK,IAAI,IAAI,aAAa,KAAK,WAAW,IACxC,KAAI,KAAK,MAAM,IAAI,GAAG,EAAE,KAAK,OAC3B,QAAO;CAKX,MAAM,kBAAkB;CACxB,IAAI;CACJ,IAAI,iBAAiB;AAErB,SAAQ,QAAQ,gBAAgB,KAAK,KAAK,MAAM,KAC9C,KAAI,MAAM,QAAQ,aAAa,MAAM,SAAS,YAC5C,kBAAiB,MAAM,QAAQ;UACtB,MAAM,QAAQ,YACvB;AAIJ,KAAI,iBAAiB,EACnB,QAAO;AAIT,MAAK,IAAI,IAAI,aAAa,KAAK,WAAW,IACxC,KAAI,KAAK,OAAO,OAAO,KAAK,OAAO,KACjC,QAAO;AAKX,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-handler.js","names":[],"sources":["../../../../extensions/telegram/src/command-handler.ts"],"sourcesContent":["/**\n * Telegram Command Handler\n * \n * Handles Telegram-specific UI interactions (inline keyboards, callbacks).\n * Core commands (/new, /usage, /models, etc.) are handled by the unified command system.\n */\n\nimport type { Context } from 'grammy';\n\nimport type { TelegramAccountManager } from './account-manager.js';\nimport { createLogger } from '@xopcai/xopc/utils/logger.js';\nimport type { Config } from '@xopcai/xopc/config/index.js';\nimport { TelegramInlineKeyboards, type ProviderInfo } from './inline-keyboards.js';\nimport { generateSessionKey } from '@xopcai/xopc/chat-commands/session-key.js';\n\nconst log = createLogger('TelegramCommandHandler');\n\nexport interface TelegramCommandHandlerDeps {\n bus: any;\n config: Config;\n accountManager: TelegramAccountManager;\n getSessionModel: (sessionKey: string) => string | undefined;\n setSessionModel: (sessionKey: string, modelId: string) => void | Promise<void>;\n // Optional callbacks for inline keyboard handling\n showProviderModels?: (ctx: Context, providerId: string) => Promise<void>;\n showProvidersAgain?: (ctx: Context) => Promise<void>;\n handleCleanupConfirm?: (ctx: Context) => Promise<void>;\n}\n\nexport function createTelegramCommandHandler(deps: TelegramCommandHandlerDeps) {\n const { config, accountManager, getSessionModel, setSessionModel, bus } = deps;\n\n // ========== Helper Functions ==========\n\n const getAvailableProviders = async (): Promise<ProviderInfo[]> => {\n const { getAllProviders, getProviderDisplayName, isProviderConfiguredSync } = await import('@xopcai/xopc/providers/index.js');\n const allProviders = getAllProviders();\n const available: ProviderInfo[] = [];\n\n for (const providerId of allProviders) {\n if (isProviderConfiguredSync(providerId)) {\n available.push({ id: providerId, name: getProviderDisplayName(providerId) });\n }\n }\n\n if (available.length === 0) {\n available.push({ id: 'minimax', name: 'MiniMax' });\n }\n\n return available;\n };\n\n const getModelsForProvider = async (providerId: string) => {\n const { getModelsByProvider } = await import('@xopcai/xopc/providers/index.js');\n const models = getModelsByProvider(providerId);\n \n if (models.length === 0) {\n return [{ id: `${providerId}/default`, name: 'default', provider: providerId }];\n }\n \n return models.map(m => ({\n id: `${m.provider}/${m.id}`,\n name: m.name || m.id,\n provider: m.provider,\n }));\n };\n\n // ========== Helper Functions ==========\n\n // Helper to get sessionKey from Telegram context\n const getSessionKeyFromCtx = (ctx: Context): string => {\n const chatId = String(ctx.chat?.id);\n const senderId = String(ctx.from?.id);\n const isGroup = ctx.chat?.type === 'group' || ctx.chat?.type === 'supergroup';\n const threadId =\n (ctx.message as { message_thread_id?: number })?.message_thread_id ??\n (ctx.callbackQuery?.message as { message_thread_id?: number } | undefined)?.message_thread_id;\n\n const accountId = accountManager.resolveAccountIdFromContext(ctx);\n\n return generateSessionKey({\n source: 'telegram',\n chatId,\n senderId,\n isGroup,\n threadId: threadId ? String(threadId) : undefined,\n accountId,\n });\n };\n\n // ========== Command Handlers ==========\n\n /**\n * /start - Show welcome message\n * Note: Other commands (/new, /usage, /models, etc.) are handled by the unified command system\n */\n const handleStart = async (ctx: Context): Promise<void> => {\n try {\n const providers = await getAvailableProviders();\n const hasProviders = providers.length > 0;\n\n await ctx.reply(\n '👋 *Welcome to xopc!*\\n\\n' +\n 'I am your AI assistant. Here are the available commands:\\n\\n' +\n '🤖 *Model Selection*\\n' +\n '/models - List models (name + `provider/model` ref for /switch)\\n' +\n '/switch \\u003cprovider/model-id\\u003e - Same ref as shown in /models\\n\\n' +\n '📊 *Session Management*\\n' +\n '/new - Start a new session (archive current)\\n' +\n '/list - List all your sessions\\n' +\n '/usage - View token usage statistics\\n' +\n '/cleanup - Clean up old sessions\\n\\n' +\n '🔊 *Voice (TTS)*\\n' +\n '/tts - Show TTS settings\\n' +\n '/tts on|off - Enable/disable TTS\\n' +\n '/tts always|inbound|tagged|never - Set trigger mode\\n\\n' +\n '🛠️ *Skills*\\n' +\n '/skills reload - Reload all skills from disk\\n\\n' +\n '💡 *Tip*: Just send a message to start chatting!' +\n (hasProviders ? '' : '\\n\\n⚠️ *Note*: No LLM providers configured. Please set up API keys in your config.'),\n { parse_mode: 'Markdown' }\n );\n } catch (err) {\n log.error({ err }, 'Failed to handle start command');\n await ctx.reply('❌ Failed to show welcome message.');\n }\n };\n\n /**\n * /models - Show model selector with inline keyboard\n * Note: This provides a UI enhancement over the basic /models command\n */\n const handleModels = async (ctx: Context): Promise<void> => {\n try {\n const providers = await getAvailableProviders();\n\n if (providers.length === 0) {\n await ctx.reply('❌ No providers available. Please check your configuration.');\n return;\n }\n\n await ctx.reply('🤖 Select a provider:', {\n reply_markup: TelegramInlineKeyboards.providerSelector(providers),\n });\n } catch (err) {\n log.error({ err }, 'Failed to show provider selector');\n await ctx.reply('❌ Failed to load providers. Please try again.');\n }\n };\n\n /**\n * /cleanup - Show cleanup confirmation dialog\n */\n const handleCleanup = async (ctx: Context): Promise<void> => {\n try {\n await ctx.reply(\n '🧹 *Session Cleanup*\\n\\n' +\n 'This will archive sessions that have been inactive for more than 30 days.\\n\\n' +\n 'Archived sessions can be restored later.',\n { parse_mode: 'Markdown', reply_markup: TelegramInlineKeyboards.cleanupConfirm() }\n );\n } catch (err) {\n log.error({ err }, 'Failed to show cleanup dialog');\n await ctx.reply('❌ Failed to initiate cleanup.');\n }\n };\n\n // ========== Callback Handlers (Inline Keyboard) ==========\n\n const handleProviderSelect = async (ctx: Context, providerId: string): Promise<void> => {\n try {\n const sessionKey = getSessionKeyFromCtx(ctx);\n const { getDefaultModelSync, getProviderDisplayName } = await import('@xopcai/xopc/providers/index.js');\n const defaultModel = getDefaultModelSync(config);\n const currentModel = getSessionModel(sessionKey) || defaultModel;\n\n const models = await getModelsForProvider(providerId);\n \n if (models.length === 0) {\n await ctx.editMessageText('❌ No models available for this provider.');\n await ctx.answerCallbackQuery();\n return;\n }\n\n const keyboard = TelegramInlineKeyboards.modelSelector(models, currentModel);\n const providerName = getProviderDisplayName(providerId);\n \n await ctx.editMessageText(`🤖 Select a model from *${providerName}*:`, { \n reply_markup: keyboard,\n parse_mode: 'Markdown',\n });\n await ctx.answerCallbackQuery();\n } catch (err) {\n log.error({ err, providerId }, 'Failed to show provider models');\n await ctx.answerCallbackQuery('Failed to load models');\n }\n };\n\n const handleModelSelect = async (ctx: Context, modelId: string): Promise<void> => {\n try {\n const sessionKey = getSessionKeyFromCtx(ctx);\n await Promise.resolve(setSessionModel(sessionKey, modelId));\n\n const modelName = modelId.split('/').pop() || modelId;\n await ctx.editMessageText(\n `✅ Model switched to *${modelName}*\\n\\nThis model will be used for your next message.`,\n { parse_mode: 'Markdown' }\n );\n await ctx.answerCallbackQuery(`Switched to ${modelName}`);\n\n log.info({ sessionKey, modelId }, 'Model switched via Telegram');\n } catch (err) {\n log.error({ err }, 'Failed to handle model selection');\n await ctx.answerCallbackQuery('Failed to switch model');\n }\n };\n\n const handleShowProviders = async (ctx: Context): Promise<void> => {\n try {\n const providers = await getAvailableProviders();\n\n await ctx.editMessageText('🤖 Select a provider:', {\n reply_markup: TelegramInlineKeyboards.providerSelector(providers),\n });\n await ctx.answerCallbackQuery();\n } catch (err) {\n log.error({ err }, 'Failed to show providers again');\n await ctx.answerCallbackQuery('Failed to go back');\n }\n };\n\n const handleCleanupConfirm = async (ctx: Context): Promise<void> => {\n try {\n await ctx.editMessageText('🧹 Cleaning up old sessions...');\n \n const chatId = String(ctx.chat?.id);\n\n await bus.publishInbound({\n channel: 'system',\n sender_id: 'telegram:cleanup',\n chat_id: chatId,\n content: '/cleanup --days 30 --force',\n });\n\n await ctx.editMessageText('✅ Cleanup initiated. Old sessions will be archived.');\n await ctx.answerCallbackQuery('Cleanup started');\n } catch (err) {\n log.error({ err }, 'Failed to execute cleanup');\n await ctx.editMessageText('❌ Cleanup failed. Please try again later.');\n await ctx.answerCallbackQuery('Cleanup failed');\n }\n };\n\n const handleCancel = async (ctx: Context): Promise<void> => {\n await ctx.editMessageText('Cancelled.');\n await ctx.answerCallbackQuery();\n };\n\n return {\n // Command handlers\n handleStart,\n handleModels,\n handleCleanup,\n // Callback handlers\n handleProviderSelect,\n handleModelSelect,\n handleShowProviders,\n handleCleanupConfirm,\n handleCancel,\n // Helpers\n getAvailableProviders,\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-schema.js","names":[],"sources":["../../../../extensions/telegram/src/config-schema.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const TelegramStreamingBlockCoalesceSchema = z.object({\n minChars: z.number().default(800),\n idleMs: z.number().default(1000),\n}).strict();\n\nexport const TelegramStreamingPreviewSchema = z.object({\n toolProgress: z.boolean().default(true),\n}).strict();\n\nexport const TelegramStreamingConfigSchema = z.object({\n mode: z.enum(['off', 'partial', 'block']).default('partial'),\n preview: TelegramStreamingPreviewSchema.optional(),\n block: z\n .object({\n coalesce: TelegramStreamingBlockCoalesceSchema.optional(),\n })\n .strict()\n .optional(),\n}).strict();\n\nexport const TelegramTopicConfigSchema = z.object({\n topicId: z.string().optional(),\n requireMention: z.boolean().optional(),\n enabled: z.boolean().optional(),\n allowFrom: z.array(z.union([z.string(), z.number()])).optional(),\n systemPrompt: z.string().optional(),\n agentId: z.string().optional(),\n}).strict();\n\nexport const TelegramGroupConfigSchema = z.object({\n groupId: z.string().optional(),\n requireMention: z.boolean().optional(),\n enabled: z.boolean().optional(),\n allowFrom: z.array(z.union([z.string(), z.number()])).optional(),\n systemPrompt: z.string().optional(),\n agentId: z.string().optional(),\n topics: z.record(z.string(), TelegramTopicConfigSchema).optional(),\n}).strict();\n\nexport const TelegramActionsConfigSchema = z.object({\n reactions: z.boolean().default(true),\n sendMessage: z.boolean().default(true),\n editMessage: z.boolean().default(true),\n deleteMessage: z.boolean().default(false),\n poll: z.boolean().default(false),\n sticker: z.boolean().default(false),\n createForumTopic: z.boolean().default(false),\n}).strict();\n\nexport const TelegramExecApprovalsConfigSchema = z.object({\n enabled: z.boolean().default(false),\n approvers: z.array(z.union([z.string(), z.number()])).optional(),\n}).strict();\n\nexport const TelegramThreadBindingsConfigSchema = z.object({\n enabled: z.boolean().default(false),\n idleTimeoutMs: z.number().optional(),\n maxAgeMs: z.number().optional(),\n}).strict();\n\nexport const TelegramAccountDefaultsConfigSchema = z.object({\n dmPolicy: z.enum(['pairing', 'allowlist', 'open', 'disabled']).default('pairing'),\n groupPolicy: z.enum(['open', 'disabled', 'allowlist']).default('open'),\n replyToMode: z.enum(['off', 'first', 'all']).default('off'),\n historyLimit: z.number().default(50),\n textChunkLimit: z.number().default(4000),\n streaming: TelegramStreamingConfigSchema.default({ mode: 'partial' }),\n proxy: z.string().optional(),\n apiRoot: z.string().optional(),\n}).strict();\n\nexport const TelegramAccountConfigSchema = z.object({\n accountId: z.string().optional(),\n name: z.string().optional(),\n enabled: z.boolean().default(true),\n botToken: z.string().default(''),\n tokenFile: z.string().optional(),\n allowFrom: z.array(z.union([z.string(), z.number()])).default([]),\n groupAllowFrom: z.array(z.union([z.string(), z.number()])).default([]),\n dmPolicy: z.enum(['pairing', 'allowlist', 'open', 'disabled']).optional(),\n groupPolicy: z.enum(['open', 'disabled', 'allowlist']).optional(),\n replyToMode: z.enum(['off', 'first', 'all']).optional(),\n groups: z.record(z.string(), TelegramGroupConfigSchema).optional(),\n historyLimit: z.number().optional(),\n textChunkLimit: z.number().optional(),\n streaming: TelegramStreamingConfigSchema.optional(),\n proxy: z.string().optional(),\n apiRoot: z.string().optional(),\n pollingStallThresholdMs: z.number().min(30_000).max(600_000).optional(),\n reactionLevel: z.enum(['off', 'ack', 'minimal', 'extensive']).default('ack'),\n reactionNotifications: z.enum(['off', 'own', 'all']).default('own'),\n ackReaction: z.string().optional(),\n actions: TelegramActionsConfigSchema.optional(),\n execApprovals: TelegramExecApprovalsConfigSchema.optional(),\n threadBindings: TelegramThreadBindingsConfigSchema.optional(),\n}).strict();\n\nexport const TelegramConfigSchema = z.object({\n enabled: z.boolean().default(false),\n debug: z.boolean().default(false),\n defaults: TelegramAccountDefaultsConfigSchema.default({\n dmPolicy: 'pairing',\n groupPolicy: 'open',\n replyToMode: 'off',\n historyLimit: 50,\n textChunkLimit: 4000,\n streaming: { mode: 'partial' },\n }),\n accounts: z.record(z.string(), TelegramAccountConfigSchema).optional(),\n}).strict();\n\nexport type TelegramConfig = z.infer<typeof TelegramConfigSchema>;\nexport type TelegramStreamingConfig = z.infer<typeof TelegramStreamingConfigSchema>;\n\n/** Resolve effective streaming mode for an account. */\nexport function resolveTelegramStreamingMode(account: {\n streaming?: { mode?: 'off' | 'partial' | 'block' };\n}): 'off' | 'partial' | 'block' {\n return account.streaming?.mode ?? 'partial';\n}\n"],"mappings":";;;;AAqHA,SAAgB,6BAA6B,SAEb;AAC9B,QAAO,QAAQ,WAAW,QAAQ;;;;AAtHvB,wCAAuC,EAAE,OAAO;EAC3D,UAAU,EAAE,QAAQ,CAAC,QAAQ,IAAI;EACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAK;EACjC,CAAC,CAAC,QAAQ;AAEE,kCAAiC,EAAE,OAAO,EACrD,cAAc,EAAE,SAAS,CAAC,QAAQ,KAAK,EACxC,CAAC,CAAC,QAAQ;AAEE,iCAAgC,EAAE,OAAO;EACpD,MAAM,EAAE,KAAK;GAAC;GAAO;GAAW;GAAQ,CAAC,CAAC,QAAQ,UAAU;EAC5D,SAAS,+BAA+B,UAAU;EAClD,OAAO,EACJ,OAAO,EACN,UAAU,qCAAqC,UAAU,EAC1D,CAAC,CACD,QAAQ,CACR,UAAU;EACd,CAAC,CAAC,QAAQ;AAEE,6BAA4B,EAAE,OAAO;EAChD,SAAS,EAAE,QAAQ,CAAC,UAAU;EAC9B,gBAAgB,EAAE,SAAS,CAAC,UAAU;EACtC,SAAS,EAAE,SAAS,CAAC,UAAU;EAC/B,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU;EAChE,cAAc,EAAE,QAAQ,CAAC,UAAU;EACnC,SAAS,EAAE,QAAQ,CAAC,UAAU;EAC/B,CAAC,CAAC,QAAQ;AAEE,6BAA4B,EAAE,OAAO;EAChD,SAAS,EAAE,QAAQ,CAAC,UAAU;EAC9B,gBAAgB,EAAE,SAAS,CAAC,UAAU;EACtC,SAAS,EAAE,SAAS,CAAC,UAAU;EAC/B,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU;EAChE,cAAc,EAAE,QAAQ,CAAC,UAAU;EACnC,SAAS,EAAE,QAAQ,CAAC,UAAU;EAC9B,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,0BAA0B,CAAC,UAAU;EACnE,CAAC,CAAC,QAAQ;AAEE,+BAA8B,EAAE,OAAO;EAClD,WAAW,EAAE,SAAS,CAAC,QAAQ,KAAK;EACpC,aAAa,EAAE,SAAS,CAAC,QAAQ,KAAK;EACtC,aAAa,EAAE,SAAS,CAAC,QAAQ,KAAK;EACtC,eAAe,EAAE,SAAS,CAAC,QAAQ,MAAM;EACzC,MAAM,EAAE,SAAS,CAAC,QAAQ,MAAM;EAChC,SAAS,EAAE,SAAS,CAAC,QAAQ,MAAM;EACnC,kBAAkB,EAAE,SAAS,CAAC,QAAQ,MAAM;EAC7C,CAAC,CAAC,QAAQ;AAEE,qCAAoC,EAAE,OAAO;EACxD,SAAS,EAAE,SAAS,CAAC,QAAQ,MAAM;EACnC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU;EACjE,CAAC,CAAC,QAAQ;AAEE,sCAAqC,EAAE,OAAO;EACzD,SAAS,EAAE,SAAS,CAAC,QAAQ,MAAM;EACnC,eAAe,EAAE,QAAQ,CAAC,UAAU;EACpC,UAAU,EAAE,QAAQ,CAAC,UAAU;EAChC,CAAC,CAAC,QAAQ;AAEE,uCAAsC,EAAE,OAAO;EAC1D,UAAU,EAAE,KAAK;GAAC;GAAW;GAAa;GAAQ;GAAW,CAAC,CAAC,QAAQ,UAAU;EACjF,aAAa,EAAE,KAAK;GAAC;GAAQ;GAAY;GAAY,CAAC,CAAC,QAAQ,OAAO;EACtE,aAAa,EAAE,KAAK;GAAC;GAAO;GAAS;GAAM,CAAC,CAAC,QAAQ,MAAM;EAC3D,cAAc,EAAE,QAAQ,CAAC,QAAQ,GAAG;EACpC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,IAAK;EACxC,WAAW,8BAA8B,QAAQ,EAAE,MAAM,WAAW,CAAC;EACrE,OAAO,EAAE,QAAQ,CAAC,UAAU;EAC5B,SAAS,EAAE,QAAQ,CAAC,UAAU;EAC/B,CAAC,CAAC,QAAQ;AAEE,+BAA8B,EAAE,OAAO;EAClD,WAAW,EAAE,QAAQ,CAAC,UAAU;EAChC,MAAM,EAAE,QAAQ,CAAC,UAAU;EAC3B,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;EAClC,UAAU,EAAE,QAAQ,CAAC,QAAQ,GAAG;EAChC,WAAW,EAAE,QAAQ,CAAC,UAAU;EAChC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;EACjE,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;EACtE,UAAU,EAAE,KAAK;GAAC;GAAW;GAAa;GAAQ;GAAW,CAAC,CAAC,UAAU;EACzE,aAAa,EAAE,KAAK;GAAC;GAAQ;GAAY;GAAY,CAAC,CAAC,UAAU;EACjE,aAAa,EAAE,KAAK;GAAC;GAAO;GAAS;GAAM,CAAC,CAAC,UAAU;EACvD,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,0BAA0B,CAAC,UAAU;EAClE,cAAc,EAAE,QAAQ,CAAC,UAAU;EACnC,gBAAgB,EAAE,QAAQ,CAAC,UAAU;EACrC,WAAW,8BAA8B,UAAU;EACnD,OAAO,EAAE,QAAQ,CAAC,UAAU;EAC5B,SAAS,EAAE,QAAQ,CAAC,UAAU;EAC9B,yBAAyB,EAAE,QAAQ,CAAC,IAAI,IAAO,CAAC,IAAI,IAAQ,CAAC,UAAU;EACvE,eAAe,EAAE,KAAK;GAAC;GAAO;GAAO;GAAW;GAAY,CAAC,CAAC,QAAQ,MAAM;EAC5E,uBAAuB,EAAE,KAAK;GAAC;GAAO;GAAO;GAAM,CAAC,CAAC,QAAQ,MAAM;EACnE,aAAa,EAAE,QAAQ,CAAC,UAAU;EAClC,SAAS,4BAA4B,UAAU;EAC/C,eAAe,kCAAkC,UAAU;EAC3D,gBAAgB,mCAAmC,UAAU;EAC9D,CAAC,CAAC,QAAQ;AAEE,wBAAuB,EAAE,OAAO;EAC3C,SAAS,EAAE,SAAS,CAAC,QAAQ,MAAM;EACnC,OAAO,EAAE,SAAS,CAAC,QAAQ,MAAM;EACjC,UAAU,oCAAoC,QAAQ;GACpD,UAAU;GACV,aAAa;GACb,aAAa;GACb,cAAc;GACd,gBAAgB;GAChB,WAAW,EAAE,MAAM,WAAW;GAC/B,CAAC;EACF,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,UAAU;EACvE,CAAC,CAAC,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation-id.js","names":[],"sources":["../../../../extensions/telegram/src/conversation-id.ts"],"sourcesContent":["/** Canonical Telegram conversation id for forum/DM topics. */\nexport function buildTelegramConversationId(chatId: string, threadId?: string | number): string {\n if (threadId == null || threadId === '') return chatId;\n return `${chatId}:topic:${threadId}`;\n}\n\nexport function parseTelegramConversationId(conversationId: string): {\n chatId: string;\n threadId?: string;\n} {\n const marker = ':topic:';\n const idx = conversationId.indexOf(marker);\n if (idx === -1) {\n return { chatId: conversationId };\n }\n return {\n chatId: conversationId.slice(0, idx),\n threadId: conversationId.slice(idx + marker.length),\n };\n}\n"],"mappings":";;AACA,SAAgB,4BAA4B,QAAgB,UAAoC;AAC9F,KAAI,YAAY,QAAQ,aAAa,GAAI,QAAO;AAChD,QAAO,GAAG,OAAO,SAAS;;AAG5B,SAAgB,4BAA4B,gBAG1C;CAEA,MAAM,MAAM,eAAe,QAAQ,UAAO;AAC1C,KAAI,QAAQ,GACV,QAAO,EAAE,QAAQ,gBAAgB;AAEnC,QAAO;EACL,QAAQ,eAAe,MAAM,GAAG,IAAI;EACpC,UAAU,eAAe,MAAM,MAAM,EAAc;EACpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dedupe.js","names":[],"sources":["../../../../extensions/telegram/src/dedupe.ts"],"sourcesContent":["/**\n * Update Deduplication\n * \n * Prevents processing duplicate Telegram updates.\n * Telegram may occasionally send the same update multiple times.\n */\n\nconst DEFAULT_TTL_MS = 5 * 60 * 1000; // 5 minutes\nconst DEFAULT_MAX_SIZE = 2000;\n\ninterface CacheEntry {\n timestamp: number;\n}\n\nexport interface DedupeCacheOptions {\n /** Time-to-live in milliseconds */\n ttlMs?: number;\n /** Maximum cache size */\n maxSize?: number;\n}\n\nexport class DedupeCache {\n private cache = new Map<string, CacheEntry>();\n private ttlMs: number;\n private maxSize: number;\n\n constructor(options: DedupeCacheOptions = {}) {\n this.ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;\n this.maxSize = options.maxSize ?? DEFAULT_MAX_SIZE;\n }\n\n /**\n * Check if key exists and is not expired\n */\n has(key: string): boolean {\n this.cleanup();\n const entry = this.cache.get(key);\n if (!entry) return false;\n \n if (Date.now() - entry.timestamp > this.ttlMs) {\n this.cache.delete(key);\n return false;\n }\n return true;\n }\n\n /**\n * Add key to cache\n */\n add(key: string): void {\n this.cleanup();\n \n // Evict oldest if at capacity\n if (this.cache.size >= this.maxSize) {\n const oldestKey = this.cache.keys().next().value;\n if (oldestKey !== undefined) {\n this.cache.delete(oldestKey);\n }\n }\n \n this.cache.set(key, { timestamp: Date.now() });\n }\n\n /**\n * Check and add atomically - returns true if was already seen\n */\n checkAndAdd(key: string): boolean {\n if (this.has(key)) {\n return true;\n }\n this.add(key);\n return false;\n }\n\n /**\n * Clean up expired entries\n */\n private cleanup(): void {\n const now = Date.now();\n for (const [key, entry] of this.cache) {\n if (now - entry.timestamp > this.ttlMs) {\n this.cache.delete(key);\n }\n }\n }\n\n /**\n * Clear all entries\n */\n clear(): void {\n this.cache.clear();\n }\n\n /**\n * Get cache stats\n */\n getStats(): { size: number; maxSize: number; ttlMs: number } {\n this.cleanup();\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n ttlMs: this.ttlMs,\n };\n }\n}\n\n/**\n * Build a unique key for a Telegram update\n */\nexport function buildTelegramUpdateKey(ctx: {\n update?: {\n update_id?: number;\n message?: { message_id?: number; chat?: { id?: number } };\n };\n callbackQuery?: { id?: string };\n}): string | undefined {\n // Use update_id if available (most reliable)\n const updateId = ctx.update?.update_id;\n if (typeof updateId === 'number') {\n return `update:${updateId}`;\n }\n\n // Use callback query ID\n const callbackId = ctx.callbackQuery?.id;\n if (callbackId) {\n return `callback:${callbackId}`;\n }\n\n // Fall back to message identifier\n const msg = ctx.update?.message;\n const chatId = msg?.chat?.id;\n const messageId = msg?.message_id;\n if (typeof chatId === 'number' && typeof messageId === 'number') {\n return `message:${chatId}:${messageId}`;\n }\n\n return undefined;\n}\n\n// Singleton instance for the application\nexport const telegramUpdateDedupe = new DedupeCache({\n ttlMs: DEFAULT_TTL_MS,\n maxSize: DEFAULT_MAX_SIZE,\n});\n"],"mappings":";;;;;;;AAOA,MAAM,iBAAiB,MAAS;AAChC,MAAM,mBAAmB;AAazB,IAAa,cAAb,MAAyB;CACvB,wBAAgB,IAAI,KAAyB;CAC7C;CACA;CAEA,YAAY,UAA8B,EAAE,EAAE;AAC5C,OAAK,QAAQ,QAAQ,SAAS;AAC9B,OAAK,UAAU,QAAQ,WAAW;;;;;CAMpC,IAAI,KAAsB;AACxB,OAAK,SAAS;EACd,MAAM,QAAQ,KAAK,MAAM,IAAI,IAAI;AACjC,MAAI,CAAC,MAAO,QAAO;AAEnB,MAAI,KAAK,KAAK,GAAG,MAAM,YAAY,KAAK,OAAO;AAC7C,QAAK,MAAM,OAAO,IAAI;AACtB,UAAO;;AAET,SAAO;;;;;CAMT,IAAI,KAAmB;AACrB,OAAK,SAAS;AAGd,MAAI,KAAK,MAAM,QAAQ,KAAK,SAAS;GACnC,MAAM,YAAY,KAAK,MAAM,MAAM,CAAC,MAAM,CAAC;AAC3C,OAAI,cAAc,KAAA,EAChB,MAAK,MAAM,OAAO,UAAU;;AAIhC,OAAK,MAAM,IAAI,KAAK,EAAE,WAAW,KAAK,KAAK,EAAE,CAAC;;;;;CAMhD,YAAY,KAAsB;AAChC,MAAI,KAAK,IAAI,IAAI,CACf,QAAO;AAET,OAAK,IAAI,IAAI;AACb,SAAO;;;;;CAMT,UAAwB;EACtB,MAAM,MAAM,KAAK,KAAK;AACtB,OAAK,MAAM,CAAC,KAAK,UAAU,KAAK,MAC9B,KAAI,MAAM,MAAM,YAAY,KAAK,MAC/B,MAAK,MAAM,OAAO,IAAI;;;;;CAQ5B,QAAc;AACZ,OAAK,MAAM,OAAO;;;;;CAMpB,WAA6D;AAC3D,OAAK,SAAS;AACd,SAAO;GACL,MAAM,KAAK,MAAM;GACjB,SAAS,KAAK;GACd,OAAO,KAAK;GACb;;;;;;AAOL,SAAgB,uBAAuB,KAMhB;CAErB,MAAM,WAAW,IAAI,QAAQ;AAC7B,KAAI,OAAO,aAAa,SACtB,QAAO,UAAU;CAInB,MAAM,aAAa,IAAI,eAAe;AACtC,KAAI,WACF,QAAO,YAAY;CAIrB,MAAM,MAAM,IAAI,QAAQ;CACxB,MAAM,SAAS,KAAK,MAAM;CAC1B,MAAM,YAAY,KAAK;AACvB,KAAI,OAAO,WAAW,YAAY,OAAO,cAAc,SACrD,QAAO,WAAW,OAAO,GAAG;;AAOhC,MAAa,uBAAuB,IAAI,YAAY;CAClD,OAAO;CACP,SAAS;CACV,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery-chat-id.js","names":[],"sources":["../../../../extensions/telegram/src/delivery-chat-id.ts"],"sourcesContent":["import { parseSessionKey } from '@xopcai/xopc/routing/session-key.js';\n\n/**\n * Resolves Telegram Bot API `chat_id` from config/UI `to` / `targetChatId`.\n * Accepts numeric ids, full session keys (`agent:main:telegram:...`), or\n * routing suffixes (`account:dm:peerId` / `account:group:peerId`).\n */\nexport function normalizeTelegramDeliveryChatId(to: string): string {\n const trimmed = to.trim();\n if (!trimmed) {\n return trimmed;\n }\n\n const parsed = parseSessionKey(trimmed);\n if (parsed?.source === 'telegram') {\n return parsed.peerId;\n }\n\n const parts = trimmed.split(':');\n if (parts.length === 3 && (parts[1] === 'dm' || parts[1] === 'group') && parts[2] !== '') {\n return parts[2];\n }\n\n return trimmed;\n}\n"],"mappings":";;kBAAsE;;;;;;AAOtE,SAAgB,gCAAgC,IAAoB;CAClE,MAAM,UAAU,GAAG,MAAM;AACzB,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,SAAS,gBAAgB,QAAQ;AACvC,KAAI,QAAQ,WAAW,WACrB,QAAO,OAAO;CAGhB,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,KAAI,MAAM,WAAW,MAAM,MAAM,OAAO,QAAQ,MAAM,OAAO,YAAY,MAAM,OAAO,GACpF,QAAO,MAAM;AAGf,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"doctor.js","names":[],"sources":["../../../../extensions/telegram/src/doctor.ts"],"sourcesContent":["import type { Config } from '@xopcai/xopc/config/index.js';\nimport type { ChannelDoctorCheckResult } from '@xopcai/xopc/channels/plugin-types.js';\nimport { hasTelegramBotEndpointApiRoot, normalizeTelegramApiRoot } from './api-root.js';\nimport { createProxyFetch } from './proxy-fetch.js';\nimport { isTelegramUnauthorizedTokenError } from './startup-errors.js';\nimport { resolveTelegramBotToken } from './token-resolver.js';\n\nconst TELEGRAM_DOCTOR_GETME_TIMEOUT_MS = 10_000;\n\ntype TelegramCfg = {\n enabled?: boolean;\n defaults?: {\n dmPolicy?: string;\n apiRoot?: string;\n proxy?: string;\n };\n accounts?: Record<\n string,\n {\n enabled?: boolean;\n botToken?: string;\n tokenFile?: string;\n apiRoot?: string;\n proxy?: string;\n dmPolicy?: string;\n allowFrom?: Array<string | number>;\n }\n >;\n};\n\nfunction collectTokens(cfg: TelegramCfg): Map<string, string[]> {\n const map = new Map<string, string[]>();\n const accounts = cfg.accounts ?? {};\n for (const [id, acc] of Object.entries(accounts)) {\n const { token } = resolveTelegramBotToken({\n botToken: acc.botToken,\n tokenFile: acc.tokenFile,\n });\n if (!token) continue;\n const list = map.get(token) ?? [];\n list.push(id);\n map.set(token, list);\n }\n return map;\n}\n\nfunction formatGetMeError(err: unknown): string {\n if (err instanceof Error) return err.message;\n return String(err);\n}\n\nfunction createTimeoutSignal(timeoutMs: number): { signal: AbortSignal; dispose: () => void } {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(new Error(`Timed out after ${timeoutMs}ms`)), timeoutMs);\n timer.unref?.();\n return {\n signal: controller.signal,\n dispose: () => clearTimeout(timer),\n };\n}\n\nasync function checkGetMe(params: {\n accountId: string;\n token: string;\n apiRoot?: string;\n proxy?: string;\n fetchImpl?: typeof fetch;\n}): Promise<ChannelDoctorCheckResult> {\n const apiRoot = normalizeTelegramApiRoot(params.apiRoot);\n const url = `${apiRoot}/bot${params.token}/getMe`;\n const timeout = createTimeoutSignal(TELEGRAM_DOCTOR_GETME_TIMEOUT_MS);\n const fetchImpl = params.proxy ? createProxyFetch(params.proxy) : (params.fetchImpl ?? fetch);\n\n try {\n const startedAt = Date.now();\n const response = await fetchImpl(url, { signal: timeout.signal });\n const elapsedMs = Date.now() - startedAt;\n const body = (await response.json().catch(() => undefined)) as\n | { ok?: boolean; result?: { username?: string }; description?: string }\n | undefined;\n\n if (response.ok && body?.ok === true) {\n const username = body.result?.username ? ` @${body.result.username}` : '';\n return {\n id: `telegram-account-getme-${params.accountId}`,\n label: `Telegram getMe (${params.accountId})`,\n status: 'pass',\n message: `getMe succeeded${username} in ${elapsedMs}ms.`,\n hints: params.proxy ? [`Using proxy: ${params.proxy}`] : [],\n };\n }\n\n const description = body?.description || `HTTP ${response.status}`;\n return {\n id: `telegram-account-getme-${params.accountId}`,\n label: `Telegram getMe (${params.accountId})`,\n status: isTelegramUnauthorizedTokenError(description) ? 'fail' : 'warn',\n message: `getMe failed: ${description}`,\n hints: isTelegramUnauthorizedTokenError(description)\n ? ['Verify the bot token from @BotFather.']\n : ['Check channels.telegram.defaults.apiRoot / account apiRoot and network access.'],\n };\n } catch (err) {\n const message = formatGetMeError(err);\n return {\n id: `telegram-account-getme-${params.accountId}`,\n label: `Telegram getMe (${params.accountId})`,\n status: 'fail',\n message: `getMe network check failed: ${message}`,\n hints: [\n 'Verify this host can reach the Telegram Bot API.',\n 'If your shell uses HTTP(S)_PROXY, also set channels.telegram.defaults.proxy because Node fetch does not use env proxy automatically.',\n `Effective apiRoot: ${apiRoot}`,\n ],\n };\n } finally {\n timeout.dispose();\n }\n}\n\nexport async function runTelegramDoctorChecks(params: {\n cfg: Config;\n fetchImpl?: typeof fetch;\n}): Promise<ChannelDoctorCheckResult[]> {\n const results: ChannelDoctorCheckResult[] = [];\n const tg = params.cfg.channels?.telegram as TelegramCfg | undefined;\n if (!tg) {\n return results;\n }\n\n if (hasTelegramBotEndpointApiRoot(tg.defaults?.apiRoot)) {\n results.push({\n id: 'telegram-api-root-bot-endpoint',\n label: 'Telegram apiRoot',\n status: 'warn',\n message: 'apiRoot includes a bot token path segment; it will be normalized to the API root.',\n hints: [`Use \"${normalizeTelegramApiRoot(tg.defaults?.apiRoot)}\" instead.`],\n });\n }\n\n const tokenMap = collectTokens(tg);\n for (const [token, accountIds] of tokenMap) {\n if (accountIds.length > 1) {\n results.push({\n id: `telegram-duplicate-token-${accountIds.join('-')}`,\n label: 'Telegram duplicate bot token',\n status: 'fail',\n message: `Bot token is shared by accounts: ${accountIds.join(', ')}.`,\n hints: ['Use one token per account or disable duplicate accounts.'],\n });\n }\n void token;\n }\n\n for (const [id, acc] of Object.entries(tg.accounts ?? {})) {\n const effectiveDmPolicy = acc.dmPolicy ?? tg.defaults?.dmPolicy ?? 'pairing';\n if (tg.enabled && effectiveDmPolicy === 'open') {\n const allow = acc.allowFrom ?? [];\n const hasWildcard = allow.some((e) => String(e).trim() === '*');\n results.push({\n id: `telegram-dm-open-wildcard-${id}`,\n label: `Telegram DM open policy (${id})`,\n status: hasWildcard ? 'pass' : 'warn',\n message: hasWildcard\n ? `Account \"${id}\" DM policy is open with allowFrom wildcard.`\n : `Account \"${id}\" dmPolicy \"open\" should include allowFrom: [\"*\"] for explicit opt-in.`,\n hints: hasWildcard ? [] : [`Add \"allowFrom\": [\"*\"] to channels.telegram.accounts.${id} or switch to pairing/allowlist.`],\n });\n }\n if (hasTelegramBotEndpointApiRoot(acc.apiRoot)) {\n results.push({\n id: `telegram-account-api-root-${id}`,\n label: `Telegram apiRoot (${id})`,\n status: 'warn',\n message: `Account \"${id}\" apiRoot includes bot endpoint; will be normalized.`,\n hints: [`Use \"${normalizeTelegramApiRoot(acc.apiRoot)}\"`],\n });\n }\n const { token, source } = resolveTelegramBotToken({\n botToken: acc.botToken,\n tokenFile: acc.tokenFile,\n });\n if (tg.enabled && acc && source === 'none' && (acc as { enabled?: boolean }).enabled !== false) {\n results.push({\n id: `telegram-account-token-${id}`,\n label: `Telegram token (${id})`,\n status: 'fail',\n message: `Account \"${id}\" has no bot token or readable tokenFile.`,\n hints: ['Set botToken or tokenFile in channels.telegram.accounts.' + id],\n });\n }\n if (token && token.length < 20) {\n results.push({\n id: `telegram-account-token-short-${id}`,\n label: `Telegram token (${id})`,\n status: 'warn',\n message: `Account \"${id}\" bot token looks too short.`,\n hints: ['Verify the token from @BotFather.'],\n });\n }\n\n if (tg.enabled && token && acc.enabled !== false) {\n results.push(\n await checkGetMe({\n accountId: id,\n token,\n apiRoot: acc.apiRoot || tg.defaults?.apiRoot,\n proxy: acc.proxy || tg.defaults?.proxy,\n fetchImpl: params.fetchImpl,\n }),\n );\n }\n }\n\n return results;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"draft-stream-lifecycle.js","names":[],"sources":["../../../../extensions/telegram/src/draft-stream-lifecycle.ts"],"sourcesContent":["/**\n * Finalizable draft lifecycle helpers for draft streaming.\n */\n\nimport { createDraftStreamLoop, type DraftStreamLoop } from './draft-stream-loop.js';\n\nexport type FinalizableDraftStreamState = {\n stopped: boolean;\n final: boolean;\n};\n\ntype StopAndClearMessageIdParams<T> = {\n stopForClear: () => Promise<void>;\n readMessageId: () => T | undefined;\n clearMessageId: () => void;\n};\n\ntype ClearFinalizableDraftMessageParams<T> = StopAndClearMessageIdParams<T> & {\n isValidMessageId: (value: unknown) => value is T;\n deleteMessage: (messageId: T) => Promise<void>;\n onDeleteSuccess?: (messageId: T) => void;\n warn?: (message: string) => void;\n warnPrefix: string;\n};\n\ntype FinalizableDraftLifecycleParams<T> = Omit<\n ClearFinalizableDraftMessageParams<T>,\n 'stopForClear'\n> & {\n throttleMs: number;\n state: FinalizableDraftStreamState;\n sendOrEditStreamMessage: (text: string) => Promise<boolean>;\n};\n\nexport function createFinalizableDraftStreamControlsForState(params: {\n throttleMs: number;\n state: FinalizableDraftStreamState;\n sendOrEditStreamMessage: (text: string) => Promise<boolean>;\n}) {\n const loop = createDraftStreamLoop({\n throttleMs: params.throttleMs,\n isStopped: () => params.state.stopped,\n sendOrEditStreamMessage: params.sendOrEditStreamMessage,\n });\n\n const update = (text: string) => {\n if (params.state.stopped || params.state.final) {\n return;\n }\n loop.update(text);\n };\n\n const stop = async (): Promise<void> => {\n params.state.final = true;\n await loop.flush();\n };\n\n const stopForClear = async (): Promise<void> => {\n params.state.stopped = true;\n loop.stop();\n await loop.waitForInFlight();\n };\n\n return {\n loop,\n update,\n stop,\n stopForClear,\n };\n}\n\nexport async function clearFinalizableDraftMessage<T>(\n params: ClearFinalizableDraftMessageParams<T>,\n): Promise<void> {\n await params.stopForClear();\n const messageId = params.readMessageId();\n params.clearMessageId();\n if (!params.isValidMessageId(messageId)) {\n return;\n }\n try {\n await params.deleteMessage(messageId);\n params.onDeleteSuccess?.(messageId);\n } catch (err) {\n params.warn?.(`${params.warnPrefix}: ${err instanceof Error ? err.message : String(err)}`);\n }\n}\n\nexport function createFinalizableDraftLifecycle<T>(params: FinalizableDraftLifecycleParams<T>) {\n const controls = createFinalizableDraftStreamControlsForState({\n throttleMs: params.throttleMs,\n state: params.state,\n sendOrEditStreamMessage: params.sendOrEditStreamMessage,\n });\n\n const clear = async () => {\n await clearFinalizableDraftMessage({\n stopForClear: controls.stopForClear,\n readMessageId: params.readMessageId,\n clearMessageId: params.clearMessageId,\n isValidMessageId: params.isValidMessageId,\n deleteMessage: params.deleteMessage,\n onDeleteSuccess: params.onDeleteSuccess,\n warn: params.warn,\n warnPrefix: params.warnPrefix,\n });\n };\n\n return {\n ...controls,\n clear,\n };\n}\n"],"mappings":";;;;;AAkCA,SAAgB,6CAA6C,QAI1D;CACD,MAAM,OAAO,sBAAsB;EACjC,YAAY,OAAO;EACnB,iBAAiB,OAAO,MAAM;EAC9B,yBAAyB,OAAO;EACjC,CAAC;CAEF,MAAM,UAAU,SAAiB;AAC/B,MAAI,OAAO,MAAM,WAAW,OAAO,MAAM,MACvC;AAEF,OAAK,OAAO,KAAK;;CAGnB,MAAM,OAAO,YAA2B;AACtC,SAAO,MAAM,QAAQ;AACrB,QAAM,KAAK,OAAO;;CAGpB,MAAM,eAAe,YAA2B;AAC9C,SAAO,MAAM,UAAU;AACvB,OAAK,MAAM;AACX,QAAM,KAAK,iBAAiB;;AAG9B,QAAO;EACL;EACA;EACA;EACA;EACD;;AAGH,eAAsB,6BACpB,QACe;AACf,OAAM,OAAO,cAAc;CAC3B,MAAM,YAAY,OAAO,eAAe;AACxC,QAAO,gBAAgB;AACvB,KAAI,CAAC,OAAO,iBAAiB,UAAU,CACrC;AAEF,KAAI;AACF,QAAM,OAAO,cAAc,UAAU;AACrC,SAAO,kBAAkB,UAAU;UAC5B,KAAK;AACZ,SAAO,OAAO,GAAG,OAAO,WAAW,IAAI,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GAAG;;;AAI9F,SAAgB,gCAAmC,QAA4C;CAC7F,MAAM,WAAW,6CAA6C;EAC5D,YAAY,OAAO;EACnB,OAAO,OAAO;EACd,yBAAyB,OAAO;EACjC,CAAC;CAEF,MAAM,QAAQ,YAAY;AACxB,QAAM,6BAA6B;GACjC,cAAc,SAAS;GACvB,eAAe,OAAO;GACtB,gBAAgB,OAAO;GACvB,kBAAkB,OAAO;GACzB,eAAe,OAAO;GACtB,iBAAiB,OAAO;GACxB,MAAM,OAAO;GACb,YAAY,OAAO;GACpB,CAAC;;AAGJ,QAAO;EACL,GAAG;EACH;EACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"draft-stream-loop.js","names":[],"sources":["../../../../extensions/telegram/src/draft-stream-loop.ts"],"sourcesContent":["/**\n * Throttled draft stream loop.\n */\n\nexport type DraftStreamLoop = {\n update: (text: string) => void;\n flush: () => Promise<void>;\n stop: () => void;\n resetPending: () => void;\n resetThrottleWindow: () => void;\n waitForInFlight: () => Promise<void>;\n};\n\nexport function createDraftStreamLoop(params: {\n throttleMs: number;\n isStopped: () => boolean;\n sendOrEditStreamMessage: (text: string) => Promise<void | boolean>;\n}): DraftStreamLoop {\n let lastSentAt = 0;\n let pendingText = '';\n let inFlightPromise: Promise<void | boolean> | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const flush = async () => {\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n while (!params.isStopped()) {\n if (inFlightPromise) {\n await inFlightPromise;\n continue;\n }\n const text = pendingText;\n if (!text.trim()) {\n pendingText = '';\n return;\n }\n pendingText = '';\n const current = params.sendOrEditStreamMessage(text).finally(() => {\n if (inFlightPromise === current) {\n inFlightPromise = undefined;\n }\n });\n inFlightPromise = current;\n const sent = await current;\n if (sent === false) {\n pendingText = text;\n return;\n }\n lastSentAt = Date.now();\n if (!pendingText) {\n return;\n }\n }\n };\n\n const schedule = () => {\n if (timer) {\n return;\n }\n const delay = Math.max(0, params.throttleMs - (Date.now() - lastSentAt));\n timer = setTimeout(() => {\n void flush();\n }, delay);\n };\n\n return {\n update: (text: string) => {\n if (params.isStopped()) {\n return;\n }\n pendingText = text;\n if (inFlightPromise) {\n schedule();\n return;\n }\n if (!timer && Date.now() - lastSentAt >= params.throttleMs) {\n void flush();\n return;\n }\n schedule();\n },\n flush,\n stop: () => {\n pendingText = '';\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n },\n resetPending: () => {\n pendingText = '';\n },\n resetThrottleWindow: () => {\n lastSentAt = 0;\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n },\n waitForInFlight: async () => {\n if (inFlightPromise) {\n await inFlightPromise;\n }\n },\n };\n}\n"],"mappings":";AAaA,SAAgB,sBAAsB,QAIlB;CAClB,IAAI,aAAa;CACjB,IAAI,cAAc;CAClB,IAAI;CACJ,IAAI;CAEJ,MAAM,QAAQ,YAAY;AACxB,MAAI,OAAO;AACT,gBAAa,MAAM;AACnB,WAAQ,KAAA;;AAEV,SAAO,CAAC,OAAO,WAAW,EAAE;AAC1B,OAAI,iBAAiB;AACnB,UAAM;AACN;;GAEF,MAAM,OAAO;AACb,OAAI,CAAC,KAAK,MAAM,EAAE;AAChB,kBAAc;AACd;;AAEF,iBAAc;GACd,MAAM,UAAU,OAAO,wBAAwB,KAAK,CAAC,cAAc;AACjE,QAAI,oBAAoB,QACtB,mBAAkB,KAAA;KAEpB;AACF,qBAAkB;AAElB,OAAI,MADe,YACN,OAAO;AAClB,kBAAc;AACd;;AAEF,gBAAa,KAAK,KAAK;AACvB,OAAI,CAAC,YACH;;;CAKN,MAAM,iBAAiB;AACrB,MAAI,MACF;EAEF,MAAM,QAAQ,KAAK,IAAI,GAAG,OAAO,cAAc,KAAK,KAAK,GAAG,YAAY;AACxE,UAAQ,iBAAiB;AAClB,UAAO;KACX,MAAM;;AAGX,QAAO;EACL,SAAS,SAAiB;AACxB,OAAI,OAAO,WAAW,CACpB;AAEF,iBAAc;AACd,OAAI,iBAAiB;AACnB,cAAU;AACV;;AAEF,OAAI,CAAC,SAAS,KAAK,KAAK,GAAG,cAAc,OAAO,YAAY;AACrD,WAAO;AACZ;;AAEF,aAAU;;EAEZ;EACA,YAAY;AACV,iBAAc;AACd,OAAI,OAAO;AACT,iBAAa,MAAM;AACnB,YAAQ,KAAA;;;EAGZ,oBAAoB;AAClB,iBAAc;;EAEhB,2BAA2B;AACzB,gBAAa;AACb,OAAI,OAAO;AACT,iBAAa,MAAM;AACnB,YAAQ,KAAA;;;EAGZ,iBAAiB,YAAY;AAC3B,OAAI,gBACF,OAAM;;EAGX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"draft-stream.js","names":[],"sources":["../../../../extensions/telegram/src/draft-stream.ts"],"sourcesContent":["/**\n * Telegram draft stream for streaming message previews.\n *\n * Uses sendMessage + editMessageText, or sendMessageDraft when available (DM / supported clients),\n * with automatic fallback and optional materialize for draft transport.\n */\n\nimport type { Bot } from 'grammy';\nimport { createLogger } from '@xopcai/xopc/utils/logger.js';\nimport type { ProgressStage } from '@xopcai/xopc/agent/lifecycle/progress.js';\nimport { createFinalizableDraftLifecycle } from './draft-stream-lifecycle.js';\nimport {\n isSafeToRetrySendError,\n isTelegramClientRejection,\n isTelegramThreadNotFoundError,\n shouldFallbackFromDraftTransport,\n} from './telegram-draft-errors.js';\nimport { renderTelegramHtmlText, stripUnknownHtmlTags } from './format.js';\n\nconst log = createLogger('DraftStream');\n\nconst TELEGRAM_STREAM_MAX_CHARS = 4096;\nconst DEFAULT_THROTTLE_MS = 1000;\nconst TELEGRAM_DRAFT_ID_MAX = 2_147_483_647;\n\nconst TELEGRAM_DRAFT_STREAM_STATE_KEY = Symbol.for('xopc.telegramDraftStreamState');\n\nlet draftStreamState: { nextDraftId: number } | undefined;\n\nfunction getDraftStreamState(): { nextDraftId: number } {\n draftStreamState ??= { nextDraftId: 0 };\n return draftStreamState;\n}\n\nfunction allocateTelegramDraftId(): number {\n const state = getDraftStreamState();\n state.nextDraftId = state.nextDraftId >= TELEGRAM_DRAFT_ID_MAX ? 1 : state.nextDraftId + 1;\n return state.nextDraftId;\n}\n\ntype TelegramSendMessageDraft = (\n chatId: number | string,\n draftId: number,\n text: string,\n params?: {\n message_thread_id?: number;\n parse_mode?: 'HTML';\n },\n) => Promise<unknown>;\n\nfunction resolveSendMessageDraftApi(api: Bot['api']): TelegramSendMessageDraft | undefined {\n const sendMessageDraft = (api as Bot['api'] & { sendMessageDraft?: TelegramSendMessageDraft })\n .sendMessageDraft;\n if (typeof sendMessageDraft !== 'function') {\n return undefined;\n }\n return sendMessageDraft.bind(api as object);\n}\n\nconst STAGE_CONFIG: Record<ProgressStage, { emoji: string; label: string }> = {\n thinking: { emoji: '🤔', label: 'Thinking' },\n searching: { emoji: '🔍', label: 'Searching' },\n reading: { emoji: '📖', label: 'Reading' },\n writing: { emoji: '✍️', label: 'Writing' },\n executing: { emoji: '⚙️', label: 'Executing' },\n analyzing: { emoji: '📊', label: 'Analyzing' },\n idle: { emoji: '💬', label: 'Ready' },\n};\n\nexport type TelegramDraftPreview = {\n text: string;\n parseMode?: 'HTML';\n};\n\nexport interface TelegramDraftStreamOptions {\n api: Bot['api'];\n chatId: number | string;\n maxChars?: number;\n threadId?: number;\n replyToMessageId?: number;\n throttleMs?: number;\n /** Prefer draft API, real message edits, or auto (DM → draft when API exists). */\n previewTransport?: 'auto' | 'message' | 'draft';\n /** Minimum chars before first outbound preview (push notification quality). */\n minInitialChars?: number;\n /** Optional preview renderer (e.g. markdown → HTML). */\n renderText?: (text: string) => TelegramDraftPreview;\n /** Called when a late send resolves after forceNewMessage() rotated generations. */\n onSupersededPreview?: (preview: {\n messageId: number;\n textSnapshot: string;\n parseMode?: 'HTML';\n }) => void;\n warn?: (message: string) => void;\n /** When `renderText` is omitted, controls default text conversion (`HTML` = sanitize only). */\n parseMode?: 'Markdown' | 'HTML' | undefined;\n enableProgress?: boolean;\n}\n\nexport interface TelegramDraftStream {\n update: (text: string) => void;\n updateWithProgress: (text: string, stage?: ProgressStage, detail?: string) => void;\n flush: () => Promise<void>;\n messageId: () => number | undefined;\n previewMode?: () => 'message' | 'draft';\n previewRevision?: () => number;\n lastDeliveredText?: () => string;\n clear: () => Promise<void>;\n stop: () => Promise<void>;\n materialize?: () => Promise<number | undefined>;\n forceNewMessage: () => void;\n sendMayHaveLanded?: () => boolean;\n setProgress: (stage: ProgressStage, detail?: string) => void;\n}\n\nfunction isProbablyPrivateChat(chatId: number | string): boolean {\n const n = typeof chatId === 'string' ? Number(chatId) : chatId;\n if (Number.isFinite(n) && n < 0) {\n return false;\n }\n return true;\n}\n\nfunction defaultRenderText(\n trimmed: string,\n parseMode: TelegramDraftStreamOptions['parseMode'],\n): TelegramDraftPreview {\n if (parseMode === 'HTML') {\n return { text: stripUnknownHtmlTags(trimmed), parseMode: 'HTML' };\n }\n return {\n text: renderTelegramHtmlText(trimmed),\n parseMode: 'HTML',\n };\n}\n\n/**\n * Create a draft stream for streaming message previews.\n */\nexport function createTelegramDraftStream(options: TelegramDraftStreamOptions): TelegramDraftStream {\n const maxChars = Math.min(\n options.maxChars ?? TELEGRAM_STREAM_MAX_CHARS,\n TELEGRAM_STREAM_MAX_CHARS,\n );\n const throttleMs = Math.max(250, options.throttleMs ?? DEFAULT_THROTTLE_MS);\n const chatId = options.chatId;\n const requestedPreviewTransport = options.previewTransport ?? 'auto';\n const prefersDraftTransport =\n requestedPreviewTransport === 'draft'\n ? true\n : requestedPreviewTransport === 'message'\n ? false\n : isProbablyPrivateChat(chatId);\n const resolvedDraftApi = prefersDraftTransport ? resolveSendMessageDraftApi(options.api) : undefined;\n const usesDraftTransport = Boolean(prefersDraftTransport && resolvedDraftApi);\n if (prefersDraftTransport && !usesDraftTransport) {\n options.warn?.(\n 'telegram stream preview: sendMessageDraft unavailable; falling back to sendMessage/editMessageText',\n );\n }\n\n const threadParams: Record<string, number> = {};\n if (options.threadId != null) {\n threadParams.message_thread_id = options.threadId;\n }\n if (options.replyToMessageId != null) {\n threadParams.reply_to_message_id = options.replyToMessageId;\n }\n\n const replyParams = { ...threadParams };\n\n const streamState = { stopped: false, final: false };\n let messageSendAttempted = false;\n let streamMessageId: number | undefined;\n let streamDraftId = usesDraftTransport ? allocateTelegramDraftId() : undefined;\n let previewTransport: 'message' | 'draft' = usesDraftTransport ? 'draft' : 'message';\n let lastSentText = '';\n let lastDeliveredText = '';\n let lastSentParseMode: 'HTML' | undefined;\n let previewRevision = 0;\n let generation = 0;\n\n const minInitialChars = options.minInitialChars;\n\n const renderPreview = (trimmed: string): TelegramDraftPreview => {\n if (options.renderText) {\n return options.renderText(trimmed);\n }\n return defaultRenderText(trimmed, options.parseMode);\n };\n\n const sendRenderedMessageWithThreadFallback = async (sendArgs: {\n renderedText: string;\n renderedParseMode: 'HTML' | undefined;\n fallbackWarnMessage: string;\n }) => {\n const sendParams = sendArgs.renderedParseMode\n ? { ...replyParams, parse_mode: sendArgs.renderedParseMode }\n : replyParams;\n const usedThreadParams =\n 'message_thread_id' in (sendParams ?? {}) &&\n typeof (sendParams as { message_thread_id?: unknown }).message_thread_id === 'number';\n try {\n return {\n sent: await options.api.sendMessage(chatId, sendArgs.renderedText, sendParams),\n usedThreadParams,\n };\n } catch (err) {\n if (!usedThreadParams || !isTelegramThreadNotFoundError(err)) {\n throw err;\n }\n const threadlessParams = { ...(sendParams as Record<string, unknown>) };\n delete threadlessParams.message_thread_id;\n options.warn?.(sendArgs.fallbackWarnMessage);\n return {\n sent: await options.api.sendMessage(\n chatId,\n sendArgs.renderedText,\n Object.keys(threadlessParams).length > 0 ? threadlessParams : undefined,\n ),\n usedThreadParams: false,\n };\n }\n };\n\n type PreviewSendParams = {\n renderedText: string;\n renderedParseMode: 'HTML' | undefined;\n sendGeneration: number;\n };\n\n const sendMessageTransportPreview = async ({\n renderedText,\n renderedParseMode,\n sendGeneration,\n }: PreviewSendParams): Promise<boolean> => {\n if (typeof streamMessageId === 'number') {\n if (renderedParseMode) {\n await options.api.editMessageText(chatId, streamMessageId, renderedText, {\n parse_mode: renderedParseMode,\n });\n } else {\n await options.api.editMessageText(chatId, streamMessageId, renderedText);\n }\n return true;\n }\n messageSendAttempted = true;\n let sent: Awaited<ReturnType<typeof sendRenderedMessageWithThreadFallback>>['sent'];\n try {\n ({ sent } = await sendRenderedMessageWithThreadFallback({\n renderedText,\n renderedParseMode,\n fallbackWarnMessage:\n 'telegram stream preview send failed with message_thread_id, retrying without thread',\n }));\n } catch (err) {\n if (isSafeToRetrySendError(err) || isTelegramClientRejection(err)) {\n messageSendAttempted = false;\n }\n throw err;\n }\n const sentMessageId = sent?.message_id;\n if (typeof sentMessageId !== 'number' || !Number.isFinite(sentMessageId)) {\n streamState.stopped = true;\n options.warn?.('telegram stream preview stopped (missing message id from sendMessage)');\n return false;\n }\n const normalizedMessageId = Math.trunc(sentMessageId);\n if (sendGeneration !== generation) {\n options.onSupersededPreview?.({\n messageId: normalizedMessageId,\n textSnapshot: renderedText,\n parseMode: renderedParseMode,\n });\n return true;\n }\n streamMessageId = normalizedMessageId;\n return true;\n };\n\n const sendDraftTransportPreview = async ({\n renderedText,\n renderedParseMode,\n }: PreviewSendParams): Promise<boolean> => {\n const draftId = streamDraftId ?? allocateTelegramDraftId();\n streamDraftId = draftId;\n const draftParams = {\n ...(threadParams.message_thread_id != null\n ? { message_thread_id: threadParams.message_thread_id }\n : {}),\n ...(renderedParseMode ? { parse_mode: renderedParseMode } : {}),\n };\n await resolvedDraftApi!(\n chatId,\n draftId,\n renderedText,\n Object.keys(draftParams).length > 0 ? draftParams : undefined,\n );\n return true;\n };\n\n const sendOrEditStreamMessage = async (text: string): Promise<boolean> => {\n if (streamState.stopped && !streamState.final) {\n return false;\n }\n const trimmed = text.trimEnd();\n if (!trimmed) {\n return false;\n }\n const rendered = renderPreview(trimmed);\n const renderedText = rendered.text.trimEnd();\n const renderedParseMode = rendered.parseMode;\n if (!renderedText) {\n return false;\n }\n if (renderedText.length > maxChars) {\n streamState.stopped = true;\n options.warn?.(\n `telegram stream preview stopped (text length ${renderedText.length} > ${maxChars})`,\n );\n return false;\n }\n if (renderedText === lastSentText && renderedParseMode === lastSentParseMode) {\n return true;\n }\n const sendGeneration = generation;\n\n if (typeof streamMessageId !== 'number' && minInitialChars != null && !streamState.final) {\n if (renderedText.length < minInitialChars) {\n return false;\n }\n }\n\n lastSentText = renderedText;\n lastSentParseMode = renderedParseMode;\n try {\n let sent = false;\n if (previewTransport === 'draft') {\n try {\n sent = await sendDraftTransportPreview({\n renderedText,\n renderedParseMode,\n sendGeneration,\n });\n } catch (err) {\n if (!shouldFallbackFromDraftTransport(err)) {\n throw err;\n }\n previewTransport = 'message';\n streamDraftId = undefined;\n options.warn?.(\n 'telegram stream preview: sendMessageDraft rejected by API; falling back to sendMessage/editMessageText',\n );\n sent = await sendMessageTransportPreview({\n renderedText,\n renderedParseMode,\n sendGeneration,\n });\n }\n } else {\n sent = await sendMessageTransportPreview({\n renderedText,\n renderedParseMode,\n sendGeneration,\n });\n }\n if (sent) {\n previewRevision += 1;\n lastDeliveredText = trimmed;\n }\n return sent;\n } catch (err) {\n streamState.stopped = true;\n options.warn?.(\n `telegram stream preview failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n return false;\n }\n };\n\n const { loop, update, stop, clear } = createFinalizableDraftLifecycle({\n throttleMs,\n state: streamState,\n sendOrEditStreamMessage,\n readMessageId: () => streamMessageId,\n clearMessageId: () => {\n streamMessageId = undefined;\n },\n isValidMessageId: (value): value is number =>\n typeof value === 'number' && Number.isFinite(value),\n deleteMessage: async (messageId) => {\n await options.api.deleteMessage(chatId, messageId);\n },\n onDeleteSuccess: (messageId) => {\n log.debug({ chatId, messageId }, 'telegram stream preview deleted');\n },\n warn: (m) => options.warn?.(m),\n warnPrefix: 'telegram stream preview cleanup failed',\n });\n\n const forceNewMessage = () => {\n streamState.final = false;\n streamState.stopped = false;\n generation += 1;\n messageSendAttempted = false;\n streamMessageId = undefined;\n if (previewTransport === 'draft') {\n streamDraftId = allocateTelegramDraftId();\n }\n lastSentText = '';\n lastSentParseMode = undefined;\n loop.resetPending();\n loop.resetThrottleWindow();\n };\n\n const materialize = async (): Promise<number | undefined> => {\n await stop();\n if (previewTransport === 'message' && typeof streamMessageId === 'number') {\n return streamMessageId;\n }\n const renderedText = lastSentText || lastDeliveredText;\n if (!renderedText) {\n return undefined;\n }\n const renderedParseMode = lastSentText ? lastSentParseMode : undefined;\n try {\n const { sent, usedThreadParams } = await sendRenderedMessageWithThreadFallback({\n renderedText,\n renderedParseMode,\n fallbackWarnMessage:\n 'telegram stream preview materialize send failed with message_thread_id, retrying without thread',\n });\n const sentId = sent?.message_id;\n if (typeof sentId === 'number' && Number.isFinite(sentId)) {\n streamMessageId = Math.trunc(sentId);\n if (resolvedDraftApi != null && streamDraftId != null) {\n const clearDraftId = streamDraftId;\n const clearThreadParams =\n usedThreadParams && threadParams.message_thread_id != null\n ? { message_thread_id: threadParams.message_thread_id }\n : undefined;\n try {\n await resolvedDraftApi(chatId, clearDraftId, '', clearThreadParams);\n } catch {\n // Best-effort cleanup\n }\n }\n return streamMessageId;\n }\n } catch (err) {\n options.warn?.(\n `telegram stream preview materialize failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n return undefined;\n };\n\n let currentProgressStage: ProgressStage | null = null;\n let currentProgressDetail = '';\n\n const setProgress = (stage: ProgressStage, detail?: string) => {\n if (!options.enableProgress) return;\n currentProgressStage = stage;\n currentProgressDetail = detail || '';\n };\n\n const formatProgressIndicator = (stage: ProgressStage, detail?: string): string => {\n const config = STAGE_CONFIG[stage] || STAGE_CONFIG.idle;\n let indicator = `${config.emoji} ${config.label}`;\n if (detail) {\n indicator += `\\n${detail}`;\n }\n return indicator;\n };\n\n const updateWithProgress = (text: string, stage?: ProgressStage, detail?: string) => {\n if (streamState.stopped || streamState.final) {\n return;\n }\n if (stage) {\n setProgress(stage, detail);\n }\n let combinedText = text;\n if (options.enableProgress && currentProgressStage && currentProgressStage !== 'idle') {\n const indicator = formatProgressIndicator(currentProgressStage, currentProgressDetail);\n combinedText = `${indicator}\\n\\n${text}`;\n }\n update(combinedText);\n };\n\n log.debug({ chatId, maxChars, throttleMs, previewTransport }, 'Draft stream ready');\n\n return {\n update,\n updateWithProgress,\n flush: loop.flush,\n messageId: () => streamMessageId,\n previewMode: () => previewTransport,\n previewRevision: () => previewRevision,\n lastDeliveredText: () => lastDeliveredText,\n clear,\n stop,\n materialize,\n forceNewMessage,\n sendMayHaveLanded: () => messageSendAttempted && typeof streamMessageId !== 'number',\n setProgress,\n };\n}\n\nexport class DraftStreamManager {\n private streams = new Map<string, TelegramDraftStream>();\n\n getOrCreate(key: string, options: TelegramDraftStreamOptions): TelegramDraftStream {\n const existing = this.streams.get(key);\n if (existing) {\n return existing;\n }\n\n const stream = createTelegramDraftStream(options);\n this.streams.set(key, stream);\n\n const originalStop = stream.stop;\n stream.stop = async () => {\n await originalStop.call(stream);\n this.streams.delete(key);\n };\n\n return stream;\n }\n\n get(key: string): TelegramDraftStream | undefined {\n return this.streams.get(key);\n }\n\n async stop(key: string): Promise<void> {\n const stream = this.streams.get(key);\n if (stream) {\n await stream.flush();\n await stream.stop();\n this.streams.delete(key);\n }\n }\n\n async stopAll(): Promise<void> {\n const promises: Promise<void>[] = [];\n for (const [key, stream] of this.streams.entries()) {\n promises.push(\n (async () => {\n await stream.flush();\n await stream.stop();\n this.streams.delete(key);\n })(),\n );\n }\n await Promise.all(promises);\n }\n\n async clear(key: string): Promise<void> {\n const stream = this.streams.get(key);\n if (stream) {\n await stream.clear();\n }\n }\n}\n\nexport const draftStreamManager = new DraftStreamManager();\n\nexport const __testing = {\n resetTelegramDraftStreamForTests() {\n getDraftStreamState().nextDraftId = 0;\n },\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","names":[],"sources":["../../../../extensions/telegram/src/errors.ts"],"sourcesContent":["/**\n * Telegram Error Utilities\n */\n\n// Regex to detect Telegram HTML parse errors\nconst TELEGRAM_PARSE_ERR_RE = /can't parse entities|parse entities|find end of the entity|Unmatched end tag/i;\n\n/**\n * Check if error is a Telegram HTML parse error\n */\nexport function isTelegramHtmlParseError(err: unknown): boolean {\n if (!(err instanceof Error)) {\n return false;\n }\n return TELEGRAM_PARSE_ERR_RE.test(err.message);\n}\n"],"mappings":";;;;AAKA,MAAM,wBAAwB;;;;AAK9B,SAAgB,yBAAyB,KAAuB;AAC9D,KAAI,EAAE,eAAe,OACnB,QAAO;AAET,QAAO,sBAAsB,KAAK,IAAI,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec-approval-handler.js","names":[],"sources":["../../../../extensions/telegram/src/exec-approval-handler.ts"],"sourcesContent":["import type { Config } from '@xopcai/xopc/config/index.js';\nimport type { ExecApprovalHandler, ExecApprovalRequestPayload } from '@xopcai/xopc/channels/exec-approval-runtime.js';\nimport type { TelegramAccountManager } from './account-manager.js';\nimport {\n createTelegramPendingApproval,\n waitForTelegramApproval,\n} from './approval-store.js';\nimport { deliverTelegramExecApprovalPrompt } from './approval-delivery.js';\nimport { isTelegramExecApprovalEnabled, resolveTelegramExecApprovers } from './exec-approvals.js';\n\nexport function createTelegramExecApprovalHandler(deps: {\n accountManager: TelegramAccountManager;\n getConfig: () => Config;\n}): ExecApprovalHandler {\n return {\n isEnabled(cfg, params) {\n if (params.channel !== 'telegram') return false;\n return isTelegramExecApprovalEnabled(cfg, params.accountId ?? 'default');\n },\n\n async requestApproval(cfg, payload: ExecApprovalRequestPayload): Promise<boolean> {\n const accountId = payload.accountId ?? 'default';\n const approvers = resolveTelegramExecApprovers(cfg, accountId);\n if (approvers.length === 0) {\n return false;\n }\n\n const bot = deps.accountManager.getBot(accountId);\n if (!bot) {\n return false;\n }\n\n const approval = createTelegramPendingApproval({\n accountId,\n sessionKey: payload.sessionKey,\n chatId: payload.chatId,\n toolName: payload.toolName,\n summary: payload.summary,\n });\n\n await deliverTelegramExecApprovalPrompt({ bot, cfg: deps.getConfig(), accountId, approval });\n return waitForTelegramApproval(approval.id);\n },\n };\n}\n"],"mappings":";;;;AAUA,SAAgB,kCAAkC,MAG1B;AACtB,QAAO;EACL,UAAU,KAAK,QAAQ;AACrB,OAAI,OAAO,YAAY,WAAY,QAAO;AAC1C,UAAO,8BAA8B,KAAK,OAAO,aAAa,UAAU;;EAG1E,MAAM,gBAAgB,KAAK,SAAuD;GAChF,MAAM,YAAY,QAAQ,aAAa;AAEvC,OADkB,6BAA6B,KAAK,UACvC,CAAC,WAAW,EACvB,QAAO;GAGT,MAAM,MAAM,KAAK,eAAe,OAAO,UAAU;AACjD,OAAI,CAAC,IACH,QAAO;GAGT,MAAM,WAAW,8BAA8B;IAC7C;IACA,YAAY,QAAQ;IACpB,QAAQ,QAAQ;IAChB,UAAU,QAAQ;IAClB,SAAS,QAAQ;IAClB,CAAC;AAEF,SAAM,kCAAkC;IAAE;IAAK,KAAK,KAAK,WAAW;IAAE;IAAW;IAAU,CAAC;AAC5F,UAAO,wBAAwB,SAAS,GAAG;;EAE9C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec-approvals.js","names":[],"sources":["../../../../extensions/telegram/src/exec-approvals.ts"],"sourcesContent":["import type { Config } from '@xopcai/xopc/config/index.js';\n\nexport function isTelegramExecApprovalEnabled(cfg: Config, accountId = 'default'): boolean {\n const tg = cfg.channels?.telegram as\n | { accounts?: Record<string, { execApprovals?: { enabled?: boolean } }> }\n | undefined;\n const acc = tg?.accounts?.[accountId];\n return acc?.execApprovals?.enabled === true;\n}\n\nexport function resolveTelegramExecApprovers(\n cfg: Config,\n accountId = 'default',\n): string[] {\n const tg = cfg.channels?.telegram as\n | {\n accounts?: Record<\n string,\n {\n execApprovals?: { approvers?: Array<string | number> };\n allowFrom?: Array<string | number>;\n }\n >;\n }\n | undefined;\n const acc = tg?.accounts?.[accountId];\n const explicit = acc?.execApprovals?.approvers ?? [];\n const fallback = acc?.allowFrom ?? [];\n const merged = explicit.length > 0 ? explicit : fallback;\n return merged\n .map((v) => String(v).trim())\n .filter((v) => v && v !== '*' && /^\\d+$/.test(v.replace(/^(telegram|tg):/i, '')))\n .map((v) => v.replace(/^(telegram|tg):/i, ''));\n}\n\nexport function isTelegramExecApprovalApprover(params: {\n cfg: Config;\n accountId: string;\n senderId: string;\n}): boolean {\n const approvers = resolveTelegramExecApprovers(params.cfg, params.accountId);\n const sid = params.senderId.replace(/^(telegram|tg):/i, '');\n return approvers.includes(sid);\n}\n"],"mappings":";AAEA,SAAgB,8BAA8B,KAAa,YAAY,WAAoB;AAKzF,UAJW,IAAI,UAAU,WAGT,WAAW,aACf,eAAe,YAAY;;AAGzC,SAAgB,6BACd,KACA,YAAY,WACF;CAYV,MAAM,OAXK,IAAI,UAAU,WAWT,WAAW;CAC3B,MAAM,WAAW,KAAK,eAAe,aAAa,EAAE;CACpD,MAAM,WAAW,KAAK,aAAa,EAAE;AAErC,SADe,SAAS,SAAS,IAAI,WAAW,UAE7C,KAAK,MAAM,OAAO,EAAE,CAAC,MAAM,CAAC,CAC5B,QAAQ,MAAM,KAAK,MAAM,OAAO,QAAQ,KAAK,EAAE,QAAQ,oBAAoB,GAAG,CAAC,CAAC,CAChF,KAAK,MAAM,EAAE,QAAQ,oBAAoB,GAAG,CAAC;;AAGlD,SAAgB,+BAA+B,QAInC;CACV,MAAM,YAAY,6BAA6B,OAAO,KAAK,OAAO,UAAU;CAC5E,MAAM,MAAM,OAAO,SAAS,QAAQ,oBAAoB,GAAG;AAC3D,QAAO,UAAU,SAAS,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"focus-handler.js","names":[],"sources":["../../../../extensions/telegram/src/focus-handler.ts"],"sourcesContent":["import type { Context } from 'grammy';\nimport type { Config } from '@xopcai/xopc/config/index.js';\nimport { generateSessionKey } from '@xopcai/xopc/chat-commands/session-key.js';\nimport { createLogger } from '@xopcai/xopc/utils/logger.js';\nimport {\n clearTelegramThreadBinding,\n getTelegramThreadBinding,\n setTelegramThreadBinding,\n} from './thread-bindings.js';\nimport { buildTelegramConversationId } from './conversation-id.js';\n\nconst log = createLogger('TelegramFocus');\n\nexport async function handleTelegramFocusCommand(params: {\n ctx: Context;\n accountId: string;\n config: Config;\n}): Promise<void> {\n const { ctx, accountId } = params;\n const chatId = String(ctx.chat?.id ?? '');\n const senderId = String(ctx.from?.id ?? '');\n const isGroup = ctx.chat?.type === 'group' || ctx.chat?.type === 'supergroup';\n const threadId = (ctx.message as { message_thread_id?: number } | undefined)?.message_thread_id;\n const text = ctx.message?.text?.trim() ?? '';\n const parts = text.split(/\\s+/);\n const sub = parts[1]?.toLowerCase();\n\n if (sub === 'off' || sub === 'clear') {\n clearTelegramThreadBinding(chatId, threadId != null ? String(threadId) : undefined);\n await ctx.reply('Thread focus cleared.');\n return;\n }\n\n const sessionKey =\n parts.length > 1 && parts[1] && !parts[1].startsWith('/')\n ? parts.slice(1).join(' ').trim()\n : generateSessionKey({\n source: 'telegram',\n chatId,\n senderId,\n isGroup,\n threadId: threadId != null ? String(threadId) : undefined,\n accountId,\n });\n\n setTelegramThreadBinding({\n sessionKey,\n chatId,\n threadId: threadId != null ? String(threadId) : undefined,\n createdAtMs: Date.now(),\n lastActivityMs: Date.now(),\n });\n\n log.info(\n { accountId, chatId, threadId, sessionKey, conversationId: buildTelegramConversationId(chatId, threadId) },\n 'Telegram thread focus set',\n );\n\n await ctx.reply(`Focused on session:\\n${sessionKey}`);\n}\n\nexport function resolveTelegramFocusedSessionKey(params: {\n chatId: string;\n threadId?: string;\n defaultSessionKey: string;\n}): string {\n const binding = getTelegramThreadBinding(params.chatId, params.threadId);\n if (!binding) {\n return params.defaultSessionKey;\n }\n binding.lastActivityMs = Date.now();\n return binding.sessionKey;\n}\n"],"mappings":";;;;;;aAG4D;AAQ5D,MAAM,MAAM,aAAa,gBAAgB;AAEzC,eAAsB,2BAA2B,QAI/B;CAChB,MAAM,EAAE,KAAK,cAAc;CAC3B,MAAM,SAAS,OAAO,IAAI,MAAM,MAAM,GAAG;CACzC,MAAM,WAAW,OAAO,IAAI,MAAM,MAAM,GAAG;CAC3C,MAAM,UAAU,IAAI,MAAM,SAAS,WAAW,IAAI,MAAM,SAAS;CACjE,MAAM,WAAY,IAAI,SAAwD;CAE9E,MAAM,SADO,IAAI,SAAS,MAAM,MAAM,IAAI,IACvB,MAAM,MAAM;CAC/B,MAAM,MAAM,MAAM,IAAI,aAAa;AAEnC,KAAI,QAAQ,SAAS,QAAQ,SAAS;AACpC,6BAA2B,QAAQ,YAAY,OAAO,OAAO,SAAS,GAAG,KAAA,EAAU;AACnF,QAAM,IAAI,MAAM,wBAAwB;AACxC;;CAGF,MAAM,aACJ,MAAM,SAAS,KAAK,MAAM,MAAM,CAAC,MAAM,GAAG,WAAW,IAAI,GACrD,MAAM,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,GAC/B,mBAAmB;EACjB,QAAQ;EACR;EACA;EACA;EACA,UAAU,YAAY,OAAO,OAAO,SAAS,GAAG,KAAA;EAChD;EACD,CAAC;AAER,0BAAyB;EACvB;EACA;EACA,UAAU,YAAY,OAAO,OAAO,SAAS,GAAG,KAAA;EAChD,aAAa,KAAK,KAAK;EACvB,gBAAgB,KAAK,KAAK;EAC3B,CAAC;AAEF,KAAI,KACF;EAAE;EAAW;EAAQ;EAAU;EAAY,gBAAgB,4BAA4B,QAAQ,SAAS;EAAE,EAC1G,4BACD;AAED,OAAM,IAAI,MAAM,wBAAwB,aAAa;;AAGvD,SAAgB,iCAAiC,QAItC;CACT,MAAM,UAAU,yBAAyB,OAAO,QAAQ,OAAO,SAAS;AACxE,KAAI,CAAC,QACH,QAAO,OAAO;AAEhB,SAAQ,iBAAiB,KAAK,KAAK;AACnC,QAAO,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"format.js","names":[],"sources":["../../../../extensions/telegram/src/format.ts"],"sourcesContent":["/**\n * Telegram Message Formatting Utilities\n *\n * Converts Markdown to Telegram HTML format using the robust @src/markdown/ package.\n * Markdown → Telegram HTML via the shared markdown IR pipeline.\n */\n\nimport {\n markdownToIR,\n chunkMarkdownIR,\n renderMarkdownWithMarkers,\n type MarkdownIR,\n type MarkdownLinkSpan,\n type RenderStyleMap,\n} from \"@xopcai/xopc/markdown/index.js\";\nimport type { MarkdownTableMode } from \"@xopcai/xopc/config/types.base.js\";\n\n// Telegram HTML style markers\nconst TELEGRAM_STYLE_MARKERS: RenderStyleMap = {\n bold: { open: \"<b>\", close: \"</b>\" },\n italic: { open: \"<i>\", close: \"</i>\" },\n strikethrough: { open: \"<s>\", close: \"</s>\" },\n code: { open: \"<code>\", close: \"</code>\" },\n code_block: { open: \"<pre><code>\", close: \"</code></pre>\" },\n spoiler: { open: \"<tg-spoiler>\", close: \"</tg-spoiler>\" },\n blockquote: { open: \"<blockquote>\", close: \"</blockquote>\" },\n};\n\n/**\n * Escape HTML special characters\n */\nexport function escapeHtml(text: string): string {\n return text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\n}\n\n/**\n * Escape HTML attribute values\n */\nexport function escapeHtmlAttr(text: string): string {\n return escapeHtml(text).replace(/\"/g, \"&quot;\");\n}\n\n/**\n * Build a link renderer for Telegram HTML\n */\nfunction buildTelegramLinkRenderer(\n _irText: string\n): (link: MarkdownLinkSpan, text: string) => { start: number; end: number; open: string; close: string } | null {\n return (link, _text) => {\n const href = link.href.trim();\n if (!href) return null;\n\n // Validate URL scheme for Telegram\n const allowedSchemes = /^(https?|tg|mailto):/i;\n if (!allowedSchemes.test(href) && !href.startsWith(\"#\")) {\n return null;\n }\n\n return {\n start: link.start,\n end: link.end,\n open: `<a href=\"${escapeHtmlAttr(href)}\">`,\n close: \"</a>\",\n };\n };\n}\n\n/**\n * Strip or escape unknown HTML tags that Telegram doesn't support\n * Telegram only supports: b, strong, i, em, u, ins, s, strike, del, tg-spoiler,\n * a, pre, code, blockquote, br\n */\nconst TELEGRAM_ALLOWED_TAGS = new Set([\n 'b', 'strong', 'i', 'em', 'u', 'ins', 's', 'strike', 'del',\n 'tg-spoiler', 'a', 'pre', 'code', 'blockquote', 'br'\n]);\n\nexport function stripUnknownHtmlTags(html: string): string {\n // First pass: normalize escaped HTML entities to actual tags for processing\n let processed = html.replace(/&lt;(\\/?)([a-zA-Z][a-zA-Z0-9-]*)([^&]*?)&gt;/gi, (match, slash, tagName, attrs) => {\n const normalizedTag = tagName.toLowerCase();\n \n // Keep allowed tags (normalize them, preserve attributes)\n if (TELEGRAM_ALLOWED_TAGS.has(normalizedTag)) {\n // Decode attributes\n const decodedAttrs = attrs\n .replace(/&quot;/g, '\"')\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .trim();\n \n if (decodedAttrs) {\n return `<${slash}${normalizedTag} ${decodedAttrs}>`;\n }\n return `<${slash}${normalizedTag}>`;\n }\n \n // Strip unknown tags\n return '';\n });\n \n // Second pass: handle any remaining unescaped tags (shouldn't happen, but just in case)\n processed = processed.replace(/<(\\/?)([a-zA-Z][a-zA-Z0-9-]*)([^>]*?)>/gi, (match, slash, tagName, attrs) => {\n const normalizedTag = tagName.toLowerCase();\n \n if (TELEGRAM_ALLOWED_TAGS.has(normalizedTag)) {\n if (attrs.trim()) {\n return `<${slash}${normalizedTag} ${attrs.trim()}>`;\n }\n return `<${slash}${normalizedTag}>`;\n }\n \n return '';\n });\n \n return processed;\n}\n\n/**\n * Render Markdown IR to Telegram HTML\n */\nexport function renderIRToTelegramHtml(ir: MarkdownIR): string {\n let html = renderMarkdownWithMarkers(ir, {\n styleMarkers: TELEGRAM_STYLE_MARKERS,\n escapeText: escapeHtml,\n buildLink: buildTelegramLinkRenderer(ir.text),\n });\n \n // Strip any unknown HTML tags that might have slipped through\n html = stripUnknownHtmlTags(html);\n \n return html;\n}\n\n/**\n * Convert markdown to Telegram HTML\n */\nexport function markdownToTelegramHtml(\n markdown: string,\n options: { enableSpoilers?: boolean; tableMode?: MarkdownTableMode } = {}\n): string {\n const ir = markdownToIR(markdown, {\n linkify: true,\n enableSpoilers: options.enableSpoilers ?? true,\n tableMode: options.tableMode ?? \"off\",\n });\n return renderIRToTelegramHtml(ir);\n}\n\n/**\n * Convert markdown to plain text (strip formatting)\n */\nexport function markdownToPlainText(markdown: string): string {\n const ir = markdownToIR(markdown, {\n linkify: true,\n enableSpoilers: true,\n });\n\n // Build plain text by taking the IR text and adding link URLs\n let result = ir.text;\n\n // Process links in reverse order to preserve indices\n const sortedLinks = [...ir.links].sort((a, b) => b.start - a.start);\n for (const link of sortedLinks) {\n const linkText = ir.text.slice(link.start, link.end);\n const replacement = `${linkText} (${link.href})`;\n result = result.slice(0, link.start) + replacement + result.slice(link.end);\n }\n\n return result;\n}\n\n/**\n * Formatted chunk with both HTML and plain text representations\n */\nexport interface FormattedChunk {\n html: string;\n text: string;\n}\n\n/**\n * Convert markdown to Telegram HTML chunks\n * Splits long messages while preserving structure\n */\nexport function markdownToTelegramChunks(\n markdown: string,\n limit: number = 4000\n): FormattedChunk[] {\n const ir = markdownToIR(markdown, {\n linkify: true,\n enableSpoilers: true,\n });\n\n const chunks = chunkMarkdownIR(ir, limit);\n\n return chunks.map((chunk) => ({\n html: renderIRToTelegramHtml(chunk),\n text: chunk.text,\n }));\n}\n\n/**\n * Render markdown to Telegram HTML (single message)\n * Supports both markdown and HTML input modes\n */\nexport function renderTelegramHtmlText(\n text: string,\n options: { textMode?: \"markdown\" | \"html\"; enableSpoilers?: boolean } = {}\n): string {\n const textMode = options.textMode ?? \"markdown\";\n if (textMode === \"html\") {\n return text;\n }\n\n const ir = markdownToIR(text, {\n linkify: true,\n enableSpoilers: options.enableSpoilers ?? true,\n });\n return renderIRToTelegramHtml(ir);\n}\n\n// File extensions that share TLDs and commonly appear in code/documentation\nconst FILE_EXTENSIONS_WITH_TLD = new Set([\n \"md\", // Markdown (Moldova)\n \"go\", // Go language\n \"py\", // Python (Paraguay)\n \"pl\", // Perl (Poland)\n \"sh\", // Shell (Saint Helena)\n \"am\", // Automake files (Armenia)\n \"at\", // Assembly (Austria)\n \"be\", // Backend files (Belgium)\n \"cc\", // C++ source (Cocos Islands)\n]);\n\n/**\n * Wrap standalone file references in <code> tags\n * Prevents Telegram from generating domain registrar previews\n */\nexport function wrapFileReferencesInHtml(html: string): string {\n // Track nesting depth for tags that should not be modified\n let codeDepth = 0;\n let preDepth = 0;\n let anchorDepth = 0;\n let result = \"\";\n let lastIndex = 0;\n\n const HTML_TAG_PATTERN = /(<\\/?)([a-zA-Z][a-zA-Z0-9-]*)\\b[^>]*?>/gi;\n let match: RegExpExecArray | null;\n\n while ((match = HTML_TAG_PATTERN.exec(html)) !== null) {\n const tagStart = match.index;\n const tagEnd = tagStart + match[0].length;\n const tagName = match[2].toLowerCase();\n const isClosing = match[1] === \"</\";\n\n // Process text before this tag\n if (tagStart > lastIndex) {\n const textSegment = html.slice(lastIndex, tagStart);\n result += wrapSegmentFileRefs(textSegment, codeDepth, preDepth, anchorDepth);\n }\n\n // Update nesting depth\n if (tagName === \"code\") {\n codeDepth += isClosing ? -1 : 1;\n } else if (tagName === \"pre\") {\n preDepth += isClosing ? -1 : 1;\n } else if (tagName === \"a\") {\n anchorDepth += isClosing ? -1 : 1;\n }\n\n // Add the tag itself\n result += match[0];\n lastIndex = tagEnd;\n }\n\n // Process remaining text after last tag\n if (lastIndex < html.length) {\n const textSegment = html.slice(lastIndex);\n result += wrapSegmentFileRefs(textSegment, codeDepth, preDepth, anchorDepth);\n }\n\n return result;\n}\n\n/**\n * Wrap file references in a text segment (respecting nesting depth)\n */\nfunction wrapSegmentFileRefs(\n text: string,\n codeDepth: number,\n preDepth: number,\n anchorDepth: number\n): string {\n if (!text || codeDepth > 0 || preDepth > 0 || anchorDepth > 0) {\n return text;\n }\n\n const FILE_EXTENSIONS_PATTERN = Array.from(FILE_EXTENSIONS_WITH_TLD).join(\"|\");\n const FILE_REFERENCE_PATTERN = new RegExp(\n `(^|[^a-zA-Z0-9_\\\\-/])([a-zA-Z0-9_.\\\\-./]+\\\\.(?:${FILE_EXTENSIONS_PATTERN}))(?=$|[^a-zA-Z0-9_\\\\-/])`,\n \"gi\"\n );\n\n return text.replace(FILE_REFERENCE_PATTERN, (match, prefix, filename) => {\n if (filename.startsWith(\"//\")) {\n return match;\n }\n if (/https?:\\/\\/$/i.test(prefix)) {\n return match;\n }\n return `${prefix}<code>${escapeHtml(filename)}</code>`;\n });\n}\n\n/**\n * Format message for Telegram with proper HTML and file reference protection\n */\nexport function formatTelegramMessage(\n markdown: string,\n options: { wrapFileRefs?: boolean; textMode?: \"markdown\" | \"html\" } = {}\n): { html: string; text: string } {\n const html = renderTelegramHtmlText(markdown, { textMode: options.textMode });\n\n // Wrap file references if enabled\n const finalHtml = options.wrapFileRefs !== false ? wrapFileReferencesInHtml(html) : html;\n\n return {\n html: finalHtml,\n text: markdown,\n };\n}\n\n/**\n * Smart split message into chunks with both HTML and plain text\n * Uses Markdown IR for robust chunking that preserves structure\n */\nexport function splitTelegramMessageSmart(\n markdown: string,\n maxChars: number = 4000\n): FormattedChunk[] {\n return markdownToTelegramChunks(markdown, maxChars);\n}\n\n/**\n * Validate HTML string for Telegram parse_mode\n * Returns true if the HTML appears to be valid\n */\nexport function isValidTelegramHtml(html: string): boolean {\n const voidElements = new Set([\n \"br\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"area\",\n \"base\",\n \"col\",\n \"embed\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n ]);\n\n const openTags: string[] = [];\n let i = 0;\n\n while (i < html.length) {\n if (html[i] === \"<\" && i + 1 < html.length && html[i + 1] !== \"!\") {\n let tagEnd = html.indexOf(\">\", i);\n if (tagEnd === -1) return false;\n\n const fullTag = html.slice(i, tagEnd + 1);\n\n // Skip comments\n if (fullTag.startsWith(\"<!\") || fullTag.startsWith(\"<!--\")) {\n const commentEnd = html.indexOf(\"-->\", i);\n if (commentEnd !== -1) {\n i = commentEnd + 3;\n } else {\n return false;\n }\n continue;\n }\n\n const isClosing = fullTag.startsWith(\"</\");\n const tagName = fullTag\n .slice(isClosing ? 2 : 1, -1)\n .trim()\n .toLowerCase()\n .split(/\\s/)[0];\n\n if (!tagName) {\n i = tagEnd + 1;\n continue;\n }\n\n if (voidElements.has(tagName)) {\n // Void elements are self-closing, no need to track\n } else if (isClosing) {\n const lastIndex = openTags.lastIndexOf(tagName);\n if (lastIndex === -1) {\n // Closing tag without matching opening\n return false;\n }\n // Close all tags between lastIndex and end\n openTags.splice(lastIndex + 1);\n openTags.pop();\n } else {\n openTags.push(tagName);\n }\n\n i = tagEnd + 1;\n } else {\n i++;\n }\n }\n\n return openTags.length === 0;\n}\n\n/**\n * Fix malformed HTML tags by ensuring proper nesting\n * This handles cases where LLM generates invalid HTML\n */\nexport function fixMalformedHtml(html: string): string {\n const result: string[] = [];\n const openTags: string[] = [];\n let i = 0;\n\n // Tags that are self-closing or should not be tracked\n const voidElements = new Set([\n \"br\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"area\",\n \"base\",\n \"col\",\n \"embed\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n ]);\n\n // Tags that can be nested (inline elements)\n const inlineTags = new Set([\n \"a\",\n \"b\",\n \"i\",\n \"code\",\n \"s\",\n \"strike\",\n \"del\",\n \"u\",\n \"em\",\n \"strong\",\n \"span\",\n \"tg-spoiler\",\n ]);\n\n while (i < html.length) {\n // Check if we're at a tag\n if (html[i] === \"<\" && i + 1 < html.length && html[i + 1] !== \"!\") {\n // Find the end of the tag\n let tagEnd = html.indexOf(\">\", i);\n if (tagEnd === -1) {\n // No closing > found, treat as literal text\n result.push(html.slice(i));\n break;\n }\n\n const fullTag = html.slice(i, tagEnd + 1);\n\n // Skip HTML comments and DOCTYPE\n if (fullTag.startsWith(\"<!\") || fullTag.startsWith(\"<!--\")) {\n // Skip until end of comment\n const commentEnd = html.indexOf(\"-->\", i);\n if (commentEnd !== -1) {\n i = commentEnd + 3;\n } else {\n result.push(html.slice(i));\n break;\n }\n continue;\n }\n\n // Check if it's a closing tag\n if (fullTag.startsWith(\"</\")) {\n const tagName = fullTag\n .slice(2, -1)\n .trim()\n .toLowerCase()\n .split(/\\s/)[0];\n\n if (voidElements.has(tagName)) {\n // Invalid closing tag for void element, escape it\n result.push(escapeHtml(fullTag));\n } else {\n // Find and close the matching tag\n const lastIndex = openTags.lastIndexOf(tagName);\n if (lastIndex !== -1) {\n // Found matching tag, close all tags opened after it\n while (openTags.length > lastIndex + 1) {\n const tagToClose = openTags.pop()!;\n result.push(`</${tagToClose}>`);\n }\n // Close the matching tag\n openTags.pop();\n result.push(fullTag);\n } else {\n // No matching open tag, escape the closing tag\n result.push(escapeHtml(fullTag));\n }\n }\n } else if (\n fullTag.endsWith(\"/>\") ||\n voidElements.has(fullTag.slice(1, -1).trim().toLowerCase().split(/\\s/)[0])\n ) {\n // Self-closing tag or void element\n result.push(fullTag);\n } else {\n // Opening tag\n const tagName = fullTag.slice(1, -1).trim().toLowerCase().split(/\\s/)[0];\n\n if (tagName && (inlineTags.has(tagName) || tagName === \"pre\" || tagName === \"blockquote\")) {\n // Track inline/nestable tags\n openTags.push(tagName);\n }\n result.push(fullTag);\n }\n\n i = tagEnd + 1;\n } else {\n // Regular text\n result.push(html[i]);\n i++;\n }\n }\n\n // Close any remaining open tags\n while (openTags.length > 0) {\n result.push(`</${openTags.pop()}>`);\n }\n\n return result.join(\"\");\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"group-config-resolver.js","names":[],"sources":["../../../../extensions/telegram/src/group-config-resolver.ts"],"sourcesContent":["import type { TelegramAccountConfig, TelegramGroupConfig, TelegramTopicConfig } from './config-types.js';\n\nexport interface ResolvedTelegramGroupContext {\n groupConfig?: TelegramGroupConfig;\n topicConfig?: TelegramTopicConfig;\n systemPrompt?: string;\n agentId?: string;\n}\n\nexport function resolveTelegramGroupContext(params: {\n account: TelegramAccountConfig;\n chatId: string;\n threadId?: string | number;\n}): ResolvedTelegramGroupContext {\n const chatKey = params.chatId;\n const threadKey = params.threadId != null ? String(params.threadId) : undefined;\n const groupConfig = params.account.groups?.[chatKey];\n const topicConfig = threadKey ? groupConfig?.topics?.[threadKey] : undefined;\n\n const systemPrompt = topicConfig?.systemPrompt?.trim() || groupConfig?.systemPrompt?.trim() || undefined;\n const agentId = topicConfig?.agentId?.trim() || groupConfig?.agentId?.trim() || undefined;\n\n return { groupConfig, topicConfig, systemPrompt, agentId };\n}\n"],"mappings":";AASA,SAAgB,4BAA4B,QAIX;CAC/B,MAAM,UAAU,OAAO;CACvB,MAAM,YAAY,OAAO,YAAY,OAAO,OAAO,OAAO,SAAS,GAAG,KAAA;CACtE,MAAM,cAAc,OAAO,QAAQ,SAAS;CAC5C,MAAM,cAAc,YAAY,aAAa,SAAS,aAAa,KAAA;AAKnE,QAAO;EAAE;EAAa;EAAa,cAHd,aAAa,cAAc,MAAM,IAAI,aAAa,cAAc,MAAM,IAAI,KAAA;EAG9C,SAFjC,aAAa,SAAS,MAAM,IAAI,aAAa,SAAS,MAAM,IAAI,KAAA;EAEtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbound-coalescer.js","names":[],"sources":["../../../../extensions/telegram/src/inbound-coalescer.ts"],"sourcesContent":["import type { Context } from 'grammy';\nimport type { Message } from '@grammyjs/types';\n\nconst TEXT_FRAGMENT_GAP_MS = 500;\nconst MEDIA_GROUP_GAP_MS = 800;\nconst MAX_TEXT_FRAGMENTS = 12;\nconst MAX_TEXT_FRAGMENT_CHARS = 50_000;\n\ntype PendingTextFragment = {\n key: string;\n messages: Message[];\n timer?: ReturnType<typeof setTimeout>;\n};\n\ntype PendingMediaGroup = {\n key: string;\n messages: Message[];\n timer?: ReturnType<typeof setTimeout>;\n};\n\nexport type TelegramCoalescedInbound = {\n ctx: Context;\n accountId: string;\n messages: Message[];\n};\n\nexport function createTelegramInboundCoalescer() {\n const textFragments = new Map<string, PendingTextFragment>();\n const mediaGroups = new Map<string, PendingMediaGroup>();\n\n return {\n async enqueue(params: {\n ctx: Context;\n accountId: string;\n message: Message;\n onReady: (batch: TelegramCoalescedInbound) => Promise<void>;\n }): Promise<void> {\n const { ctx, accountId, message, onReady } = params;\n const mediaGroupId = message.media_group_id;\n if (mediaGroupId) {\n await enqueueMediaGroup({\n key: `${accountId}:${ctx.chat?.id}:${mediaGroupId}`,\n ctx,\n accountId,\n message,\n onReady,\n mediaGroups,\n });\n return;\n }\n\n if (message.text && message.message_id) {\n await enqueueTextFragment({\n key: `${accountId}:${ctx.chat?.id}:${ctx.from?.id}:${message.message_id}`,\n ctx,\n accountId,\n message,\n onReady,\n textFragments,\n });\n return;\n }\n\n await onReady({ ctx, accountId, messages: [message] });\n },\n };\n}\n\nasync function enqueueMediaGroup(params: {\n key: string;\n ctx: Context;\n accountId: string;\n message: Message;\n onReady: (batch: TelegramCoalescedInbound) => Promise<void>;\n mediaGroups: Map<string, PendingMediaGroup>;\n}): Promise<void> {\n const existing = params.mediaGroups.get(params.key);\n const entry = existing ?? { key: params.key, messages: [] };\n entry.messages.push(params.message);\n if (entry.timer) clearTimeout(entry.timer);\n entry.timer = setTimeout(async () => {\n params.mediaGroups.delete(params.key);\n await params.onReady({\n ctx: params.ctx,\n accountId: params.accountId,\n messages: entry.messages,\n });\n }, MEDIA_GROUP_GAP_MS);\n entry.timer.unref?.();\n params.mediaGroups.set(params.key, entry);\n}\n\nasync function enqueueTextFragment(params: {\n key: string;\n ctx: Context;\n accountId: string;\n message: Message;\n onReady: (batch: TelegramCoalescedInbound) => Promise<void>;\n textFragments: Map<string, PendingTextFragment>;\n}): Promise<void> {\n const text = params.message.text ?? '';\n const isFragmentCandidate = text.length >= 3500;\n if (!isFragmentCandidate) {\n await params.onReady({ ctx: params.ctx, accountId: params.accountId, messages: [params.message] });\n return;\n }\n\n const baseKey = `${params.accountId}:${params.ctx.chat?.id}:${params.ctx.from?.id}`;\n const existing = [...params.textFragments.values()].find((e) => e.key.startsWith(baseKey));\n const entry = existing ?? { key: `${baseKey}:${params.message.message_id}`, messages: [] };\n\n if (entry.messages.length >= MAX_TEXT_FRAGMENTS) {\n await flushTextFragment(entry, params);\n return;\n }\n\n entry.messages.push(params.message);\n const combinedLen = entry.messages.reduce((n, m) => n + (m.text?.length ?? 0), 0);\n if (combinedLen > MAX_TEXT_FRAGMENT_CHARS) {\n await flushTextFragment(entry, params);\n return;\n }\n\n if (entry.timer) clearTimeout(entry.timer);\n entry.timer = setTimeout(async () => {\n await flushTextFragment(entry, params);\n }, TEXT_FRAGMENT_GAP_MS);\n entry.timer.unref?.();\n params.textFragments.set(entry.key, entry);\n}\n\nasync function flushTextFragment(\n entry: PendingTextFragment,\n params: {\n ctx: Context;\n accountId: string;\n onReady: (batch: TelegramCoalescedInbound) => Promise<void>;\n textFragments: Map<string, PendingTextFragment>;\n },\n): Promise<void> {\n params.textFragments.delete(entry.key);\n if (entry.timer) clearTimeout(entry.timer);\n if (entry.messages.length === 0) return;\n const mergedText = entry.messages.map((m) => m.text ?? '').join('');\n const base = entry.messages[entry.messages.length - 1]!;\n const merged: Message = { ...base, text: mergedText };\n await params.onReady({ ctx: params.ctx, accountId: params.accountId, messages: [merged] });\n}\n"],"mappings":"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"}