@xopcai/xopc 0.0.98 → 0.0.100

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 (515) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  3. package/dist/extensions/feishu/src/workflow-progress.js +1 -1
  4. package/dist/extensions/telegram/src/account-manager.d.ts +3 -3
  5. package/dist/extensions/telegram/src/account-manager.js +8 -8
  6. package/dist/extensions/telegram/src/account-manager.js.map +1 -1
  7. package/dist/extensions/telegram/src/actions/message-actions.d.ts +4 -0
  8. package/dist/extensions/telegram/src/actions/message-actions.js +71 -0
  9. package/dist/extensions/telegram/src/actions/message-actions.js.map +1 -0
  10. package/dist/extensions/telegram/src/adapters/config-adapter.js +9 -1
  11. package/dist/extensions/telegram/src/adapters/config-adapter.js.map +1 -1
  12. package/dist/extensions/telegram/src/adapters/config-surface.js +1 -1
  13. package/dist/extensions/telegram/src/adapters/config-surface.js.map +1 -1
  14. package/dist/extensions/telegram/src/adapters/outbound-adapter.d.ts +2 -1
  15. package/dist/extensions/telegram/src/adapters/outbound-adapter.js +18 -4
  16. package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +1 -1
  17. package/dist/extensions/telegram/src/adapters/security-adapter.js +2 -1
  18. package/dist/extensions/telegram/src/adapters/security-adapter.js.map +1 -1
  19. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +90 -6
  20. package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +1 -1
  21. package/dist/extensions/telegram/src/adapters/types.d.ts +9 -1
  22. package/dist/extensions/telegram/src/api-root.d.ts +4 -0
  23. package/dist/extensions/telegram/src/api-root.js +42 -0
  24. package/dist/extensions/telegram/src/api-root.js.map +1 -0
  25. package/dist/extensions/telegram/src/approval-delivery.d.ts +9 -0
  26. package/dist/extensions/telegram/src/approval-delivery.js +36 -0
  27. package/dist/extensions/telegram/src/approval-delivery.js.map +1 -0
  28. package/dist/extensions/telegram/src/approval-store.d.ts +25 -0
  29. package/dist/extensions/telegram/src/approval-store.js +61 -0
  30. package/dist/extensions/telegram/src/approval-store.js.map +1 -0
  31. package/dist/extensions/telegram/src/config-schema.d.ts +185 -35
  32. package/dist/extensions/telegram/src/config-schema.js +67 -45
  33. package/dist/extensions/telegram/src/config-schema.js.map +1 -1
  34. package/dist/extensions/telegram/src/conversation-id.d.ts +6 -0
  35. package/dist/extensions/telegram/src/conversation-id.js +18 -0
  36. package/dist/extensions/telegram/src/conversation-id.js.map +1 -0
  37. package/dist/extensions/telegram/src/doctor.d.ts +5 -0
  38. package/dist/extensions/telegram/src/doctor.js +80 -0
  39. package/dist/extensions/telegram/src/doctor.js.map +1 -0
  40. package/dist/extensions/telegram/src/exec-approval-handler.d.ts +7 -0
  41. package/dist/extensions/telegram/src/exec-approval-handler.js +36 -0
  42. package/dist/extensions/telegram/src/exec-approval-handler.js.map +1 -0
  43. package/dist/extensions/telegram/src/exec-approvals.d.ts +8 -0
  44. package/dist/extensions/telegram/src/exec-approvals.js +20 -0
  45. package/dist/extensions/telegram/src/exec-approvals.js.map +1 -0
  46. package/dist/extensions/telegram/src/focus-handler.d.ts +12 -0
  47. package/dist/extensions/telegram/src/focus-handler.js +55 -0
  48. package/dist/extensions/telegram/src/focus-handler.js.map +1 -0
  49. package/dist/extensions/telegram/src/group-config-resolver.d.ts +12 -0
  50. package/dist/extensions/telegram/src/group-config-resolver.js +17 -0
  51. package/dist/extensions/telegram/src/group-config-resolver.js.map +1 -0
  52. package/dist/extensions/telegram/src/inbound-coalescer.d.ts +15 -0
  53. package/dist/extensions/telegram/src/inbound-coalescer.js +107 -0
  54. package/dist/extensions/telegram/src/inbound-coalescer.js.map +1 -0
  55. package/dist/extensions/telegram/src/inbound-processor.d.ts +1 -0
  56. package/dist/extensions/telegram/src/inbound-processor.js +41 -4
  57. package/dist/extensions/telegram/src/inbound-processor.js.map +1 -1
  58. package/dist/extensions/telegram/src/network-errors.d.ts +2 -0
  59. package/dist/extensions/telegram/src/network-errors.js +23 -0
  60. package/dist/extensions/telegram/src/network-errors.js.map +1 -0
  61. package/dist/extensions/telegram/src/plugin.d.ts +11 -0
  62. package/dist/extensions/telegram/src/plugin.js +192 -58
  63. package/dist/extensions/telegram/src/plugin.js.map +1 -1
  64. package/dist/extensions/telegram/src/polling-session.d.ts +17 -0
  65. package/dist/extensions/telegram/src/polling-session.js +112 -0
  66. package/dist/extensions/telegram/src/polling-session.js.map +1 -0
  67. package/dist/extensions/telegram/src/proxy-fetch.d.ts +2 -0
  68. package/dist/extensions/telegram/src/proxy-fetch.js +14 -0
  69. package/dist/extensions/telegram/src/proxy-fetch.js.map +1 -0
  70. package/dist/extensions/telegram/src/reactions.d.ts +14 -0
  71. package/dist/extensions/telegram/src/reactions.js +48 -0
  72. package/dist/extensions/telegram/src/reactions.js.map +1 -0
  73. package/dist/extensions/telegram/src/reply-params.d.ts +15 -0
  74. package/dist/extensions/telegram/src/reply-params.js +28 -0
  75. package/dist/extensions/telegram/src/reply-params.js.map +1 -0
  76. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  77. package/dist/extensions/telegram/src/startup-errors.d.ts +3 -0
  78. package/dist/extensions/telegram/src/startup-errors.js +27 -0
  79. package/dist/extensions/telegram/src/startup-errors.js.map +1 -0
  80. package/dist/extensions/telegram/src/telegram-actions.d.ts +25 -0
  81. package/dist/extensions/telegram/src/telegram-actions.js +65 -0
  82. package/dist/extensions/telegram/src/telegram-actions.js.map +1 -0
  83. package/dist/extensions/telegram/src/thread-bindings.d.ts +15 -0
  84. package/dist/extensions/telegram/src/thread-bindings.js +22 -0
  85. package/dist/extensions/telegram/src/thread-bindings.js.map +1 -0
  86. package/dist/extensions/telegram/src/token-resolver.d.ts +8 -0
  87. package/dist/extensions/telegram/src/token-resolver.js +34 -0
  88. package/dist/extensions/telegram/src/token-resolver.js.map +1 -0
  89. package/dist/extensions/telegram/src/update-offset-store.d.ts +9 -0
  90. package/dist/extensions/telegram/src/update-offset-store.js +66 -0
  91. package/dist/extensions/telegram/src/update-offset-store.js.map +1 -0
  92. package/dist/extensions/telegram/src/workflow-progress.js +1 -1
  93. package/dist/extensions/telegram/xopc.extension.json +1 -1
  94. package/dist/extensions/weixin/src/api/api.js +2 -2
  95. package/dist/extensions/weixin/src/auth/accounts.js +1 -1
  96. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  97. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  98. package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
  99. package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
  100. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  101. package/dist/extensions/weixin/src/plugin.js +1 -1
  102. package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
  103. package/dist/extensions/weixin/src/workflow-progress.js +1 -1
  104. package/dist/gateway/static/root/assets/{agents-NI7FFR-h.js → agents-C5jtBK-H.js} +1 -1
  105. package/dist/gateway/static/root/assets/{apps-page-BB4iSCrJ.js → apps-page-smJl-qf_.js} +1 -1
  106. package/dist/gateway/static/root/assets/channels-settings-CH6KgFK6.js +1 -0
  107. package/dist/gateway/static/root/assets/channels-status-swr-CV70xvY7.js +8 -0
  108. package/dist/gateway/static/root/assets/{cron-api-1dHoVFEA.js → cron-api-CgBO8B7I.js} +1 -1
  109. package/dist/gateway/static/root/assets/{cron-page-CVX6FPfb.js → cron-page-Be0cW1cR.js} +1 -1
  110. package/dist/gateway/static/root/assets/{dist-BZnl4G4p.js → dist-P8HRGUuh.js} +1 -1
  111. package/dist/gateway/static/root/assets/{extension-debug-page-DwQp_4Qv.js → extension-debug-page-BowuycYu.js} +1 -1
  112. package/dist/gateway/static/root/assets/{extension-page-l9crxSvM.js → extension-page-27-Zpv8O.js} +1 -1
  113. package/dist/gateway/static/root/assets/{extension-settings-page-CXzLbq9B.js → extension-settings-page-DDFa_rIq.js} +1 -1
  114. package/dist/gateway/static/root/assets/{fetch-BLLOP2CM.js → fetch-drJUxxKP.js} +1 -1
  115. package/dist/gateway/static/root/assets/{field-primitives-BRnEyxSl.js → field-primitives-BWLssxEb.js} +1 -1
  116. package/dist/gateway/static/root/assets/{heartbeat-config-api-eMo0k381.js → heartbeat-config-api-BVuYNYT_.js} +1 -1
  117. package/dist/gateway/static/root/assets/index-CRDAmr3W.js +4840 -0
  118. package/dist/gateway/static/root/assets/index-DjNDHzwG.css +1 -0
  119. package/dist/gateway/static/root/assets/{logs-page-BvTEevBZ.js → logs-page-BDX8IrDQ.js} +1 -1
  120. package/dist/gateway/static/root/assets/{note-detail-page-Dl3jhcWg.js → note-detail-page-BmQ9KeiA.js} +1 -1
  121. package/dist/gateway/static/root/assets/{note-time-D8Tlyotb.js → note-time-14I9Sgqh.js} +1 -1
  122. package/dist/gateway/static/root/assets/{notes-page-BWILOitx.js → notes-page-BMfP0FFf.js} +1 -1
  123. package/dist/gateway/static/root/assets/{sessions-page-3EJRugZg.js → sessions-page-C3scyChq.js} +1 -1
  124. package/dist/gateway/static/root/assets/{settings-advanced-gate-CZ5wlM_q.js → settings-advanced-gate-2ODuCjHP.js} +1 -1
  125. package/dist/gateway/static/root/assets/{settings-form-section-C6RYGnKK.js → settings-form-section-DUoGKAiW.js} +1 -1
  126. package/dist/gateway/static/root/assets/{settings-page-0egNvAMr.js → settings-page-CttAfOWV.js} +1 -1
  127. package/dist/gateway/static/root/assets/{share-preview-page-BVJtaSoK.js → share-preview-page-B77xqiiI.js} +1 -1
  128. package/dist/gateway/static/root/assets/{skills-page-DVnRQ5Mo.js → skills-page-B_bAZGzB.js} +1 -1
  129. package/dist/gateway/static/root/assets/{theme-store-e2q2yjs4.js → theme-store-BgCPrmxU.js} +1 -1
  130. package/dist/gateway/static/root/assets/url-q28QhI7l.js +3 -0
  131. package/dist/gateway/static/root/assets/{utils-Bl-94YzI.js → utils-CCGejlcX.js} +1 -1
  132. package/dist/gateway/static/root/assets/{voice-api-key-field-B53JA8qW.js → voice-api-key-field-DZzzihcY.js} +1 -1
  133. package/dist/gateway/static/root/assets/{workflow-page.utils-ontUT7yL.js → workflow-page.utils-D5RMAmT4.js} +1 -1
  134. package/dist/gateway/static/root/assets/{workflows-page-Bz7YRTdp.js → workflows-page-DEYpC6Bv.js} +1 -1
  135. package/dist/gateway/static/root/index.html +5 -5
  136. package/dist/package.js +1 -1
  137. package/dist/src/agent/agent-manager.d.ts +4 -0
  138. package/dist/src/agent/agent-manager.js +75 -11
  139. package/dist/src/agent/agent-manager.js.map +1 -1
  140. package/dist/src/agent/agent-scope.js +1 -1
  141. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -1
  142. package/dist/src/agent/child-agent-factory.d.ts +1 -0
  143. package/dist/src/agent/child-agent-factory.js +13 -10
  144. package/dist/src/agent/child-agent-factory.js.map +1 -1
  145. package/dist/src/agent/context/workspace-seed.js +2 -2
  146. package/dist/src/agent/context/workspace-state.js +1 -1
  147. package/dist/src/agent/embedded/run-for-session.d.ts +1 -0
  148. package/dist/src/agent/embedded/run-for-session.js +1 -0
  149. package/dist/src/agent/embedded/run-for-session.js.map +1 -1
  150. package/dist/src/agent/embedded/run-turn.js +1 -17
  151. package/dist/src/agent/embedded/run-turn.js.map +1 -1
  152. package/dist/src/agent/embedded/session-runner.js +3 -1
  153. package/dist/src/agent/embedded/session-runner.js.map +1 -1
  154. package/dist/src/agent/embedded/session-tool-result-guard.d.ts +1 -0
  155. package/dist/src/agent/embedded/session-tool-result-guard.js +1 -0
  156. package/dist/src/agent/embedded/session-tool-result-guard.js.map +1 -1
  157. package/dist/src/agent/goals/goal-run-store.js +4 -4
  158. package/dist/src/agent/goals/persistent-goal-service.js +1 -1
  159. package/dist/src/agent/goals/post-turn.js +2 -2
  160. package/dist/src/agent/image/load-image-media.js +2 -2
  161. package/dist/src/agent/inbound/attachment-pipeline.d.ts +37 -0
  162. package/dist/src/agent/inbound/attachment-pipeline.js +169 -0
  163. package/dist/src/agent/inbound/attachment-pipeline.js.map +1 -0
  164. package/dist/src/agent/inbound/turn-dispatcher.d.ts +3 -5
  165. package/dist/src/agent/inbound/turn-dispatcher.js +1 -2
  166. package/dist/src/agent/inbound/turn-dispatcher.js.map +1 -1
  167. package/dist/src/agent/ipc/bus.js +1 -1
  168. package/dist/src/agent/ipc/inbox.js +2 -2
  169. package/dist/src/agent/ipc/socket.js +1 -1
  170. package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
  171. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  172. package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
  173. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  174. package/dist/src/agent/memory/builtin-memory-store.js +1 -1
  175. package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
  176. package/dist/src/agent/memory/dreaming/events.js +1 -1
  177. package/dist/src/agent/memory/dreaming/last-run.js +1 -1
  178. package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
  179. package/dist/src/agent/memory/dreaming/preview.js +1 -1
  180. package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
  181. package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
  182. package/dist/src/agent/memory/dreaming/utils.js +1 -1
  183. package/dist/src/agent/memory/index.d.ts +2 -0
  184. package/dist/src/agent/memory/index.js +2 -1
  185. package/dist/src/agent/memory/memory-flush.d.ts +27 -0
  186. package/dist/src/agent/memory/memory-flush.js +124 -0
  187. package/dist/src/agent/memory/memory-flush.js.map +1 -0
  188. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  189. package/dist/src/agent/messaging/outbound-coordinator.js +2 -1
  190. package/dist/src/agent/messaging/outbound-coordinator.js.map +1 -1
  191. package/dist/src/agent/messaging/stream-manager.d.ts +2 -0
  192. package/dist/src/agent/messaging/stream-manager.js +3 -0
  193. package/dist/src/agent/messaging/stream-manager.js.map +1 -1
  194. package/dist/src/agent/models/manager.js +1 -1
  195. package/dist/src/agent/orchestration/agent-orchestrator.d.ts +0 -4
  196. package/dist/src/agent/orchestration/agent-orchestrator.js +40 -107
  197. package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
  198. package/dist/src/agent/prompt/contribution.d.ts +9 -0
  199. package/dist/src/agent/prompt/contribution.js +1 -0
  200. package/dist/src/agent/prompt/safety.js +0 -10
  201. package/dist/src/agent/prompt/safety.js.map +1 -1
  202. package/dist/src/agent/prompt/sanitize-for-prompt.d.ts +6 -0
  203. package/dist/src/agent/prompt/sanitize-for-prompt.js +13 -0
  204. package/dist/src/agent/prompt/sanitize-for-prompt.js.map +1 -0
  205. package/dist/src/agent/prompt/sections/behavior.d.ts +5 -0
  206. package/dist/src/agent/prompt/sections/behavior.js +50 -0
  207. package/dist/src/agent/prompt/sections/behavior.js.map +1 -0
  208. package/dist/src/agent/prompt/sections/memory-skills.d.ts +9 -0
  209. package/dist/src/agent/prompt/sections/memory-skills.js +59 -0
  210. package/dist/src/agent/prompt/sections/memory-skills.js.map +1 -0
  211. package/dist/src/agent/prompt/sections/messaging-runtime.d.ts +16 -0
  212. package/dist/src/agent/prompt/sections/messaging-runtime.js +69 -0
  213. package/dist/src/agent/prompt/sections/messaging-runtime.js.map +1 -0
  214. package/dist/src/agent/prompt/sections/project-context.d.ts +16 -0
  215. package/dist/src/agent/prompt/sections/project-context.js +58 -0
  216. package/dist/src/agent/prompt/sections/project-context.js.map +1 -0
  217. package/dist/src/agent/prompt/sections/tooling.d.ts +5 -0
  218. package/dist/src/agent/prompt/sections/tooling.js +119 -0
  219. package/dist/src/agent/prompt/sections/tooling.js.map +1 -0
  220. package/dist/src/agent/prompt/sections/workspace-runtime.d.ts +11 -0
  221. package/dist/src/agent/prompt/sections/workspace-runtime.js +32 -0
  222. package/dist/src/agent/prompt/sections/workspace-runtime.js.map +1 -0
  223. package/dist/src/agent/prompt/service-prompt-builder.d.ts +13 -0
  224. package/dist/src/agent/prompt/service-prompt-builder.js +56 -15
  225. package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
  226. package/dist/src/agent/prompt/subagent-context.d.ts +15 -0
  227. package/dist/src/agent/prompt/subagent-context.js +68 -0
  228. package/dist/src/agent/prompt/subagent-context.js.map +1 -0
  229. package/dist/src/agent/prompt/system-prompt-params.d.ts +53 -0
  230. package/dist/src/agent/prompt/system-prompt-params.js +74 -0
  231. package/dist/src/agent/prompt/system-prompt-params.js.map +1 -0
  232. package/dist/src/agent/prompt/system-prompt.d.ts +22 -11
  233. package/dist/src/agent/prompt/system-prompt.js +79 -193
  234. package/dist/src/agent/prompt/system-prompt.js.map +1 -1
  235. package/dist/src/agent/prompt/types.d.ts +3 -0
  236. package/dist/src/agent/reply/post-compaction-context.js +1 -1
  237. package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
  238. package/dist/src/agent/sandbox/path-policy.js +2 -2
  239. package/dist/src/agent/service/build-direct-message-content.d.ts +5 -21
  240. package/dist/src/agent/service/build-direct-message-content.js +11 -64
  241. package/dist/src/agent/service/build-direct-message-content.js.map +1 -1
  242. package/dist/src/agent/service/direct-turn-helpers.d.ts +1 -1
  243. package/dist/src/agent/service/direct-turn-helpers.js +7 -0
  244. package/dist/src/agent/service/direct-turn-helpers.js.map +1 -1
  245. package/dist/src/agent/service/process-direct-one-shot.d.ts +3 -3
  246. package/dist/src/agent/service/process-direct-one-shot.js +22 -17
  247. package/dist/src/agent/service/process-direct-one-shot.js.map +1 -1
  248. package/dist/src/agent/service/process-direct-streaming.d.ts +6 -20
  249. package/dist/src/agent/service/process-direct-streaming.js +39 -40
  250. package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
  251. package/dist/src/agent/service/webchat-tts.d.ts +4 -9
  252. package/dist/src/agent/service/webchat-tts.js +9 -20
  253. package/dist/src/agent/service/webchat-tts.js.map +1 -1
  254. package/dist/src/agent/service.d.ts +8 -19
  255. package/dist/src/agent/service.js +57 -15
  256. package/dist/src/agent/service.js.map +1 -1
  257. package/dist/src/agent/session/session-inspector.js +1 -1
  258. package/dist/src/agent/skills/config.js +1 -1
  259. package/dist/src/agent/skills/hub-hash.js +2 -2
  260. package/dist/src/agent/skills/hub-lock.js +1 -1
  261. package/dist/src/agent/skills/hub-pull.js +2 -2
  262. package/dist/src/agent/skills/index.js +1 -1
  263. package/dist/src/agent/skills/managed-store.js +1 -1
  264. package/dist/src/agent/skills/scanner.js +1 -1
  265. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  266. package/dist/src/agent/skills/skill-manager.js +1 -1
  267. package/dist/src/agent/tools/dreaming-tool.js +1 -1
  268. package/dist/src/agent/tools/factory.js +3 -1
  269. package/dist/src/agent/tools/factory.js.map +1 -1
  270. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  271. package/dist/src/agent/tools/index.d.ts +1 -0
  272. package/dist/src/agent/tools/index.js +2 -1
  273. package/dist/src/agent/tools/media-read-tool.d.ts +2 -0
  274. package/dist/src/agent/tools/media-read-tool.js +89 -0
  275. package/dist/src/agent/tools/media-read-tool.js.map +1 -0
  276. package/dist/src/agent/tools/send-media.js +1 -1
  277. package/dist/src/agent/tools/skill-manage-tool.js +1 -1
  278. package/dist/src/agent/tools/workflow-tool.js +1 -1
  279. package/dist/src/agent/tools/write.js +1 -1
  280. package/dist/src/agent/workflow/catalog.js +1 -1
  281. package/dist/src/auth/credentials.js +3 -3
  282. package/dist/src/auth/profiles/store.js +1 -1
  283. package/dist/src/auth/sync-provider-auth.js +1 -1
  284. package/dist/src/browser/cache-dir-policy.js +1 -1
  285. package/dist/src/browser/cdp-local-launcher.js +2 -2
  286. package/dist/src/browser/providers/browser-ext-install.js +3 -3
  287. package/dist/src/browser/providers/cloakbrowser.js +4 -4
  288. package/dist/src/browser/providers/playwright-doctor.js +1 -1
  289. package/dist/src/browser/stealth.js +1 -1
  290. package/dist/src/channels/attachments/attachment-classifiers.d.ts +8 -0
  291. package/dist/src/channels/attachments/attachment-classifiers.js +11 -0
  292. package/dist/src/channels/attachments/attachment-classifiers.js.map +1 -0
  293. package/dist/src/channels/attachments/inbound-persist.d.ts +13 -34
  294. package/dist/src/channels/attachments/inbound-persist.js +34 -102
  295. package/dist/src/channels/attachments/inbound-persist.js.map +1 -1
  296. package/dist/src/channels/attachments/inbound-types.d.ts +13 -0
  297. package/dist/src/channels/attachments/inbound-types.js +30 -0
  298. package/dist/src/channels/attachments/inbound-types.js.map +1 -0
  299. package/dist/src/channels/attachments/outbound-tts-persist.d.ts +3 -12
  300. package/dist/src/channels/attachments/outbound-tts-persist.js +28 -48
  301. package/dist/src/channels/attachments/outbound-tts-persist.js.map +1 -1
  302. package/dist/src/channels/attachments/voice-stt-webchat.d.ts +3 -3
  303. package/dist/src/channels/attachments/voice-stt-webchat.js +8 -14
  304. package/dist/src/channels/attachments/voice-stt-webchat.js.map +1 -1
  305. package/dist/src/channels/channel-domain.d.ts +30 -2
  306. package/dist/src/channels/exec-approval-runtime.d.ts +29 -0
  307. package/dist/src/channels/exec-approval-runtime.js +30 -0
  308. package/dist/src/channels/exec-approval-runtime.js.map +1 -0
  309. package/dist/src/channels/index.js +1 -1
  310. package/dist/src/channels/outbound/persist-store.js +1 -1
  311. package/dist/src/channels/pairing/allow-from-file.js +1 -1
  312. package/dist/src/channels/pairing/pairing-store.js +2 -2
  313. package/dist/src/channels/plugin-types.d.ts +1 -0
  314. package/dist/src/channels/transport-types.d.ts +2 -2
  315. package/dist/src/chat-commands/agent-edit.js +2 -2
  316. package/dist/src/chat-commands/builtins/config.js +2 -2
  317. package/dist/src/chat-commands/context.js +1 -1
  318. package/dist/src/cli/commands/channels.js +1 -1
  319. package/dist/src/cli/commands/config.js +1 -1
  320. package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
  321. package/dist/src/cli/commands/doctor/checks/database-schema.d.ts +2 -0
  322. package/dist/src/cli/commands/doctor/checks/database-schema.js +62 -0
  323. package/dist/src/cli/commands/doctor/checks/database-schema.js.map +1 -0
  324. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  325. package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
  326. package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
  327. package/dist/src/cli/commands/doctor/flow.js +2 -0
  328. package/dist/src/cli/commands/doctor/flow.js.map +1 -1
  329. package/dist/src/cli/commands/extension-dev.js +1 -1
  330. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  331. package/dist/src/cli/commands/extension-pack.js +1 -1
  332. package/dist/src/cli/commands/gateway/logs.js +1 -1
  333. package/dist/src/cli/commands/image.js +1 -1
  334. package/dist/src/cli/commands/init.js +5 -60
  335. package/dist/src/cli/commands/init.js.map +1 -1
  336. package/dist/src/cli/commands/onboard/channels/registry.js +1 -1
  337. package/dist/src/cli/commands/setup.js +6 -5
  338. package/dist/src/cli/commands/setup.js.map +1 -1
  339. package/dist/src/cli/utils/init-workspace-core.js +2 -3
  340. package/dist/src/cli/utils/init-workspace-core.js.map +1 -1
  341. package/dist/src/commands/agents.config.js +1 -1
  342. package/dist/src/config/agent-profile.js +1 -1
  343. package/dist/src/config/gateway-bind.js +1 -1
  344. package/dist/src/config/index.js +7 -7
  345. package/dist/src/config/loader.js +2 -2
  346. package/dist/src/config/models-json.js +2 -2
  347. package/dist/src/config/paths-state.js +1 -1
  348. package/dist/src/config/paths.d.ts +0 -13
  349. package/dist/src/config/paths.js +1 -20
  350. package/dist/src/config/paths.js.map +1 -1
  351. package/dist/src/config/profile.js +2 -2
  352. package/dist/src/config/rules.js +1 -1
  353. package/dist/src/config/schema.d.ts +24 -0
  354. package/dist/src/config/schema.js +33 -2
  355. package/dist/src/config/schema.js.map +1 -1
  356. package/dist/src/config/workspace-path.js +1 -1
  357. package/dist/src/cron/executor.js +4 -4
  358. package/dist/src/cron/persistence.js +1 -1
  359. package/dist/src/daemon/constants.js +1 -1
  360. package/dist/src/daemon/install-plan.js +2 -2
  361. package/dist/src/daemon/launchd.js +2 -2
  362. package/dist/src/daemon/schtasks.js +2 -2
  363. package/dist/src/daemon/systemd.js +2 -2
  364. package/dist/src/extensions/bundle-mcp.js +1 -1
  365. package/dist/src/extensions/discover-extensions.js +1 -1
  366. package/dist/src/extensions/health.js +1 -1
  367. package/dist/src/extensions/loader.js +1 -1
  368. package/dist/src/extensions/lockfile.js +2 -2
  369. package/dist/src/extensions/update.js +1 -1
  370. package/dist/src/gateway/agents-admin.js +3 -3
  371. package/dist/src/gateway/file-path-classifier.js +2 -2
  372. package/dist/src/gateway/heartbeat/service.js +1 -1
  373. package/dist/src/gateway/hono/lib/config-payload.js +2 -2
  374. package/dist/src/gateway/hono/lib/extension-store.js +2 -2
  375. package/dist/src/gateway/hono/lib/static-ui.js +2 -2
  376. package/dist/src/gateway/hono/oauth.js +1 -1
  377. package/dist/src/gateway/hono/routes/agents.js +1 -1
  378. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  379. package/dist/src/gateway/hono/routes/config-patch/channels.js +3 -3
  380. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +1 -1
  381. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  382. package/dist/src/gateway/hono/routes/dreaming.js +1 -1
  383. package/dist/src/gateway/hono/routes/host-fs.js +2 -2
  384. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  385. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
  386. package/dist/src/gateway/hono/routes/media.d.ts +3 -0
  387. package/dist/src/gateway/hono/routes/media.js +50 -0
  388. package/dist/src/gateway/hono/routes/media.js.map +1 -0
  389. package/dist/src/gateway/hono/routes/models.js +1 -1
  390. package/dist/src/gateway/hono/routes/sessions.js +6 -0
  391. package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
  392. package/dist/src/gateway/hono/routes/shares.js +1 -1
  393. package/dist/src/gateway/hono/routes/workspace.js +3 -89
  394. package/dist/src/gateway/hono/routes/workspace.js.map +1 -1
  395. package/dist/src/gateway/lock.js +3 -3
  396. package/dist/src/gateway/ports.js +1 -1
  397. package/dist/src/gateway/service/agent-runner.js +2 -2
  398. package/dist/src/gateway/service/marketplace-service.js +2 -2
  399. package/dist/src/gateway/service/sessions-api.js +3 -0
  400. package/dist/src/gateway/service/sessions-api.js.map +1 -1
  401. package/dist/src/gateway/service.js +1 -1
  402. package/dist/src/gateway/workspace-fs-file-list.js +1 -1
  403. package/dist/src/heartbeat/index.js +1 -1
  404. package/dist/src/infra/brew.js +1 -1
  405. package/dist/src/infra/package-json.js +1 -1
  406. package/dist/src/infra/package-update-steps.js +1 -1
  407. package/dist/src/infra/path-env.js +2 -2
  408. package/dist/src/infra/restart.js +2 -2
  409. package/dist/src/infra/stable-node-path.js +1 -1
  410. package/dist/src/infra/update-check.js +1 -1
  411. package/dist/src/infra/update-global.js +1 -1
  412. package/dist/src/infra/update-lock.js +3 -3
  413. package/dist/src/infra/update-runner.js +1 -1
  414. package/dist/src/infra/update-startup.js +2 -2
  415. package/dist/src/infra/write-file-atomic.js +2 -2
  416. package/dist/src/media/index.d.ts +5 -0
  417. package/dist/src/media/index.js +5 -0
  418. package/dist/src/media/media-reference.d.ts +23 -0
  419. package/dist/src/media/media-reference.js +34 -0
  420. package/dist/src/media/media-reference.js.map +1 -0
  421. package/dist/src/media/paths.d.ts +5 -0
  422. package/dist/src/media/paths.js +20 -0
  423. package/dist/src/media/paths.js.map +1 -0
  424. package/dist/src/media/session-references.d.ts +8 -0
  425. package/dist/src/media/session-references.js +45 -0
  426. package/dist/src/media/session-references.js.map +1 -0
  427. package/dist/src/media/store.d.ts +19 -0
  428. package/dist/src/media/store.js +131 -0
  429. package/dist/src/media/store.js.map +1 -0
  430. package/dist/src/media/types.d.ts +34 -0
  431. package/dist/src/media/types.js +1 -0
  432. package/dist/src/media/uri.d.ts +15 -0
  433. package/dist/src/media/uri.js +51 -0
  434. package/dist/src/media/uri.js.map +1 -0
  435. package/dist/src/notes/store.js +2 -2
  436. package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
  437. package/dist/src/providers/index.js +2 -2
  438. package/dist/src/providers/model-registry.js +1 -1
  439. package/dist/src/session/init-session-turn.js +2 -2
  440. package/dist/src/session/resolve-session.js +3 -3
  441. package/dist/src/session/session-title.js +8 -5
  442. package/dist/src/session/session-title.js.map +1 -1
  443. package/dist/src/session/store.js +3 -3
  444. package/dist/src/session/store.js.map +1 -1
  445. package/dist/src/session/types.d.ts +12 -7
  446. package/dist/src/session/types.js.map +1 -1
  447. package/dist/src/share/share-auto.js +2 -2
  448. package/dist/src/share/share-store.js +3 -3
  449. package/dist/src/share/share-thumbnail.js +2 -2
  450. package/dist/src/share/share-zip.js +1 -1
  451. package/dist/src/share/site-share-store.js +3 -3
  452. package/dist/src/share/site-static-serve.js +1 -1
  453. package/dist/src/storage/sqlite/connection.js +2 -2
  454. package/dist/src/storage/sqlite/index.d.ts +4 -1
  455. package/dist/src/storage/sqlite/index.js +6 -2
  456. package/dist/src/storage/sqlite/memory-index-repository.js +2 -2
  457. package/dist/src/storage/sqlite/migrations/002_add_flush_columns.sql +3 -0
  458. package/dist/src/storage/sqlite/migrations/discover.d.ts +4 -0
  459. package/dist/src/storage/sqlite/migrations/discover.js +38 -0
  460. package/dist/src/storage/sqlite/migrations/discover.js.map +1 -0
  461. package/dist/src/storage/sqlite/migrations/discover.ts +52 -0
  462. package/dist/src/storage/sqlite/migrations/errors.d.ts +11 -0
  463. package/dist/src/storage/sqlite/migrations/errors.js +27 -0
  464. package/dist/src/storage/sqlite/migrations/errors.js.map +1 -0
  465. package/dist/src/storage/sqlite/migrations/errors.ts +32 -0
  466. package/dist/src/storage/sqlite/migrations/runner.d.ts +22 -0
  467. package/dist/src/storage/sqlite/migrations/runner.js +97 -0
  468. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -0
  469. package/dist/src/storage/sqlite/migrations/runner.ts +153 -0
  470. package/dist/src/storage/sqlite/migrations/types.d.ts +12 -0
  471. package/dist/src/storage/sqlite/migrations/types.js +1 -0
  472. package/dist/src/storage/sqlite/migrations/types.ts +13 -0
  473. package/dist/src/storage/sqlite/row-mappers.d.ts +4 -0
  474. package/dist/src/storage/sqlite/row-mappers.js +4 -0
  475. package/dist/src/storage/sqlite/row-mappers.js.map +1 -1
  476. package/dist/src/storage/sqlite/schema-version.d.ts +6 -0
  477. package/dist/src/storage/sqlite/schema-version.js +29 -0
  478. package/dist/src/storage/sqlite/schema-version.js.map +1 -0
  479. package/dist/src/storage/sqlite/schema.d.ts +5 -3
  480. package/dist/src/storage/sqlite/schema.js +25 -29
  481. package/dist/src/storage/sqlite/schema.js.map +1 -1
  482. package/dist/src/storage/sqlite/schema.sql +2 -0
  483. package/dist/src/storage/sqlite/session-metadata.js +1 -0
  484. package/dist/src/storage/sqlite/session-metadata.js.map +1 -1
  485. package/dist/src/storage/sqlite/session-repository.js +7 -3
  486. package/dist/src/storage/sqlite/session-repository.js.map +1 -1
  487. package/dist/src/tui/clipboard-image.js +3 -3
  488. package/dist/src/tui/theme-manager.js +1 -1
  489. package/dist/src/tui/tui-keybindings-file.js +1 -1
  490. package/dist/src/tui/tui-scoped-models.js +2 -2
  491. package/dist/src/tui/tui-settings.js +1 -1
  492. package/dist/src/tui/tui.js +3 -3
  493. package/dist/src/tunnel/frpc-binary.js +3 -3
  494. package/dist/src/tunnel/frpc-config.js +1 -1
  495. package/dist/src/tunnel/frpc-extract.js +1 -1
  496. package/dist/src/tunnel/tunnel-state.js +1 -1
  497. package/dist/src/utils/logger/audit.js +1 -1
  498. package/dist/src/utils/logger/log-store.js +1 -1
  499. package/dist/src/utils/logger/rotation.js +1 -1
  500. package/dist/src/voice/tts/audio.js +1 -1
  501. package/dist/src/voice/tts/providers/edge-speech.js +2 -2
  502. package/dist/src/workflows/store/event-store.js +1 -1
  503. package/dist/src/workflows/store/run-store.js +1 -1
  504. package/package.json +1 -1
  505. package/dist/gateway/static/root/assets/channels-settings-BmN5udFV.js +0 -1
  506. package/dist/gateway/static/root/assets/channels-status-swr-LXGc1lXo.js +0 -8
  507. package/dist/gateway/static/root/assets/index-BJDmBCSl.css +0 -1
  508. package/dist/gateway/static/root/assets/index-DsmZjtSc.js +0 -4707
  509. package/dist/gateway/static/root/assets/url-DpFBIyN9.js +0 -3
  510. package/dist/src/cli/commands/onboard/workspace.d.ts +0 -14
  511. package/dist/src/cli/commands/onboard/workspace.js +0 -33
  512. package/dist/src/cli/commands/onboard/workspace.js.map +0 -1
  513. package/dist/src/cli/utils/workspace.d.ts +0 -35
  514. package/dist/src/cli/utils/workspace.js +0 -72
  515. package/dist/src/cli/utils/workspace.js.map +0 -1
@@ -0,0 +1,42 @@
1
+ //#region extensions/telegram/src/api-root.ts
2
+ const DEFAULT_TELEGRAM_API_ROOT = "https://api.telegram.org";
3
+ const TELEGRAM_BOT_ENDPOINT_SEGMENT_RE = /^bot\d+:[^/]+$/u;
4
+ function isTelegramBotEndpointSegment(segment) {
5
+ try {
6
+ return TELEGRAM_BOT_ENDPOINT_SEGMENT_RE.test(decodeURIComponent(segment));
7
+ } catch {
8
+ return TELEGRAM_BOT_ENDPOINT_SEGMENT_RE.test(segment);
9
+ }
10
+ }
11
+ /** Strip trailing `/bot<token>` from a misconfigured apiRoot URL. */
12
+ function normalizeTelegramApiRoot(apiRoot) {
13
+ const trimmed = apiRoot?.trim();
14
+ if (!trimmed) return DEFAULT_TELEGRAM_API_ROOT;
15
+ let normalized = trimmed.replace(/\/+$/u, "");
16
+ try {
17
+ const url = new URL(normalized);
18
+ const segments = url.pathname.split("/").filter(Boolean);
19
+ if (segments.length > 0 && isTelegramBotEndpointSegment(segments[segments.length - 1] ?? "")) {
20
+ segments.pop();
21
+ url.pathname = segments.length > 0 ? `/${segments.join("/")}` : "/";
22
+ url.search = "";
23
+ url.hash = "";
24
+ normalized = url.toString().replace(/\/+$/u, "");
25
+ }
26
+ } catch {}
27
+ return normalized;
28
+ }
29
+ function hasTelegramBotEndpointApiRoot(apiRoot) {
30
+ if (typeof apiRoot !== "string" || !apiRoot.trim()) return false;
31
+ try {
32
+ const segments = new URL(apiRoot.trim()).pathname.split("/").filter(Boolean);
33
+ const last = segments[segments.length - 1];
34
+ return Boolean(last && isTelegramBotEndpointSegment(last));
35
+ } catch {
36
+ return false;
37
+ }
38
+ }
39
+ //#endregion
40
+ export { DEFAULT_TELEGRAM_API_ROOT, hasTelegramBotEndpointApiRoot, normalizeTelegramApiRoot };
41
+
42
+ //# sourceMappingURL=api-root.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,9 @@
1
+ import type { Bot } from 'grammy';
2
+ import type { TelegramPendingApproval } from './approval-store.js';
3
+ import type { Config } from '@xopcai/xopc/config/index.js';
4
+ export declare function deliverTelegramExecApprovalPrompt(params: {
5
+ bot: Bot;
6
+ cfg: Config;
7
+ accountId: string;
8
+ approval: TelegramPendingApproval;
9
+ }): Promise<void>;
@@ -0,0 +1,36 @@
1
+ import { createLogger } from "../../../src/utils/logger/index.js";
2
+ import { init_logger } from "../../../src/utils/logger.js";
3
+ import { resolveTelegramExecApprovers } from "./exec-approvals.js";
4
+ import { InlineKeyboard } from "grammy";
5
+ //#region extensions/telegram/src/approval-delivery.ts
6
+ init_logger();
7
+ const log = createLogger("TelegramApprovalDelivery");
8
+ async function deliverTelegramExecApprovalPrompt(params) {
9
+ const approvers = resolveTelegramExecApprovers(params.cfg, params.accountId);
10
+ if (approvers.length === 0) {
11
+ log.warn({ accountId: params.accountId }, "No exec approvers configured");
12
+ return;
13
+ }
14
+ const keyboard = new InlineKeyboard().text("✅ Approve", `approval:approve:${params.approval.id}`).text("❌ Deny", `approval:deny:${params.approval.id}`);
15
+ const text = [
16
+ "⚠️ Exec approval required",
17
+ "",
18
+ `Tool: ${params.approval.toolName}`,
19
+ params.approval.summary,
20
+ "",
21
+ `ID: ${params.approval.id}`
22
+ ].join("\n");
23
+ for (const approver of approvers) try {
24
+ await params.bot.api.sendMessage(approver, text, { reply_markup: keyboard });
25
+ } catch (err) {
26
+ log.warn({
27
+ err,
28
+ approver,
29
+ approvalId: params.approval.id
30
+ }, "Failed to send approval prompt");
31
+ }
32
+ }
33
+ //#endregion
34
+ export { deliverTelegramExecApprovalPrompt };
35
+
36
+ //# sourceMappingURL=approval-delivery.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,25 @@
1
+ export type TelegramApprovalStatus = 'pending' | 'approved' | 'denied' | 'expired';
2
+ export interface TelegramPendingApproval {
3
+ id: string;
4
+ accountId: string;
5
+ sessionKey: string;
6
+ chatId: string;
7
+ toolName: string;
8
+ summary: string;
9
+ createdAtMs: number;
10
+ expiresAtMs: number;
11
+ status: TelegramApprovalStatus;
12
+ resolve?: (approved: boolean) => void;
13
+ }
14
+ export declare function createTelegramPendingApproval(params: {
15
+ accountId: string;
16
+ sessionKey: string;
17
+ chatId: string;
18
+ toolName: string;
19
+ summary: string;
20
+ ttlMs?: number;
21
+ }): TelegramPendingApproval;
22
+ export declare function waitForTelegramApproval(id: string, timeoutMs?: number): Promise<boolean>;
23
+ export declare function resolveTelegramApproval(id: string, approved: boolean): boolean;
24
+ export declare function getTelegramPendingApproval(id: string): TelegramPendingApproval | undefined;
25
+ export declare function listTelegramPendingApprovals(): TelegramPendingApproval[];
@@ -0,0 +1,61 @@
1
+ import { randomUUID } from "node:crypto";
2
+ //#region extensions/telegram/src/approval-store.ts
3
+ const DEFAULT_TTL_MS = 300 * 1e3;
4
+ const pending = /* @__PURE__ */ new Map();
5
+ function createTelegramPendingApproval(params) {
6
+ const id = randomUUID().slice(0, 8);
7
+ const now = Date.now();
8
+ const entry = {
9
+ id,
10
+ accountId: params.accountId,
11
+ sessionKey: params.sessionKey,
12
+ chatId: params.chatId,
13
+ toolName: params.toolName,
14
+ summary: params.summary,
15
+ createdAtMs: now,
16
+ expiresAtMs: now + (params.ttlMs ?? DEFAULT_TTL_MS),
17
+ status: "pending"
18
+ };
19
+ pending.set(id, entry);
20
+ return entry;
21
+ }
22
+ function waitForTelegramApproval(id, timeoutMs = DEFAULT_TTL_MS) {
23
+ const entry = pending.get(id);
24
+ if (!entry || entry.status !== "pending") return Promise.resolve(false);
25
+ return new Promise((resolve) => {
26
+ const timer = setTimeout(() => {
27
+ if (entry.status === "pending") {
28
+ entry.status = "expired";
29
+ pending.delete(id);
30
+ }
31
+ resolve(false);
32
+ }, timeoutMs);
33
+ entry.resolve = (approved) => {
34
+ clearTimeout(timer);
35
+ resolve(approved);
36
+ };
37
+ });
38
+ }
39
+ function resolveTelegramApproval(id, approved) {
40
+ const entry = pending.get(id);
41
+ if (!entry || entry.status !== "pending") return false;
42
+ entry.status = approved ? "approved" : "denied";
43
+ entry.resolve?.(approved);
44
+ pending.delete(id);
45
+ return true;
46
+ }
47
+ function getTelegramPendingApproval(id) {
48
+ return pending.get(id);
49
+ }
50
+ function listTelegramPendingApprovals() {
51
+ const now = Date.now();
52
+ for (const [id, entry] of pending) if (entry.status === "pending" && entry.expiresAtMs <= now) {
53
+ entry.status = "expired";
54
+ pending.delete(id);
55
+ }
56
+ return [...pending.values()].filter((e) => e.status === "pending");
57
+ }
58
+ //#endregion
59
+ export { createTelegramPendingApproval, getTelegramPendingApproval, listTelegramPendingApprovals, resolveTelegramApproval, waitForTelegramApproval };
60
+
61
+ //# sourceMappingURL=approval-store.js.map
@@ -0,0 +1 @@
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,27 +1,71 @@
1
1
  import { z } from 'zod';
2
+ export declare const TelegramStreamingBlockCoalesceSchema: z.ZodObject<{
3
+ minChars: z.ZodDefault<z.ZodNumber>;
4
+ idleMs: z.ZodDefault<z.ZodNumber>;
5
+ }, z.core.$strict>;
6
+ export declare const TelegramStreamingPreviewSchema: z.ZodObject<{
7
+ toolProgress: z.ZodDefault<z.ZodBoolean>;
8
+ }, z.core.$strict>;
9
+ export declare const TelegramStreamingConfigSchema: z.ZodObject<{
10
+ mode: z.ZodDefault<z.ZodEnum<{
11
+ off: "off";
12
+ partial: "partial";
13
+ block: "block";
14
+ }>>;
15
+ preview: z.ZodOptional<z.ZodObject<{
16
+ toolProgress: z.ZodDefault<z.ZodBoolean>;
17
+ }, z.core.$strict>>;
18
+ block: z.ZodOptional<z.ZodObject<{
19
+ coalesce: z.ZodOptional<z.ZodObject<{
20
+ minChars: z.ZodDefault<z.ZodNumber>;
21
+ idleMs: z.ZodDefault<z.ZodNumber>;
22
+ }, z.core.$strict>>;
23
+ }, z.core.$strict>>;
24
+ }, z.core.$strict>;
2
25
  export declare const TelegramTopicConfigSchema: z.ZodObject<{
3
- topicId: z.ZodString;
26
+ topicId: z.ZodOptional<z.ZodString>;
4
27
  requireMention: z.ZodOptional<z.ZodBoolean>;
5
28
  enabled: z.ZodOptional<z.ZodBoolean>;
6
29
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
7
30
  systemPrompt: z.ZodOptional<z.ZodString>;
8
- }, z.core.$strip>;
31
+ agentId: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$strict>;
9
33
  export declare const TelegramGroupConfigSchema: z.ZodObject<{
10
- groupId: z.ZodString;
34
+ groupId: z.ZodOptional<z.ZodString>;
11
35
  requireMention: z.ZodOptional<z.ZodBoolean>;
12
36
  enabled: z.ZodOptional<z.ZodBoolean>;
13
37
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
14
38
  systemPrompt: z.ZodOptional<z.ZodString>;
39
+ agentId: z.ZodOptional<z.ZodString>;
15
40
  topics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
16
- topicId: z.ZodString;
41
+ topicId: z.ZodOptional<z.ZodString>;
17
42
  requireMention: z.ZodOptional<z.ZodBoolean>;
18
43
  enabled: z.ZodOptional<z.ZodBoolean>;
19
44
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
20
45
  systemPrompt: z.ZodOptional<z.ZodString>;
21
- }, z.core.$strip>>>;
22
- }, z.core.$strip>;
46
+ agentId: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strict>>>;
48
+ }, z.core.$strict>;
49
+ export declare const TelegramActionsConfigSchema: z.ZodObject<{
50
+ reactions: z.ZodDefault<z.ZodBoolean>;
51
+ sendMessage: z.ZodDefault<z.ZodBoolean>;
52
+ editMessage: z.ZodDefault<z.ZodBoolean>;
53
+ deleteMessage: z.ZodDefault<z.ZodBoolean>;
54
+ poll: z.ZodDefault<z.ZodBoolean>;
55
+ sticker: z.ZodDefault<z.ZodBoolean>;
56
+ createForumTopic: z.ZodDefault<z.ZodBoolean>;
57
+ }, z.core.$strict>;
58
+ export declare const TelegramExecApprovalsConfigSchema: z.ZodObject<{
59
+ enabled: z.ZodDefault<z.ZodBoolean>;
60
+ approvers: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
61
+ }, z.core.$strict>;
62
+ export declare const TelegramThreadBindingsConfigSchema: z.ZodObject<{
63
+ enabled: z.ZodDefault<z.ZodBoolean>;
64
+ idleTimeoutMs: z.ZodOptional<z.ZodNumber>;
65
+ maxAgeMs: z.ZodOptional<z.ZodNumber>;
66
+ }, z.core.$strict>;
23
67
  export declare const TelegramAccountConfigSchema: z.ZodObject<{
24
- accountId: z.ZodString;
68
+ accountId: z.ZodOptional<z.ZodString>;
25
69
  name: z.ZodOptional<z.ZodString>;
26
70
  enabled: z.ZodDefault<z.ZodBoolean>;
27
71
  botToken: z.ZodDefault<z.ZodString>;
@@ -45,37 +89,81 @@ export declare const TelegramAccountConfigSchema: z.ZodObject<{
45
89
  all: "all";
46
90
  }>>;
47
91
  groups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
48
- groupId: z.ZodString;
92
+ groupId: z.ZodOptional<z.ZodString>;
49
93
  requireMention: z.ZodOptional<z.ZodBoolean>;
50
94
  enabled: z.ZodOptional<z.ZodBoolean>;
51
95
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
52
96
  systemPrompt: z.ZodOptional<z.ZodString>;
97
+ agentId: z.ZodOptional<z.ZodString>;
53
98
  topics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
54
- topicId: z.ZodString;
99
+ topicId: z.ZodOptional<z.ZodString>;
55
100
  requireMention: z.ZodOptional<z.ZodBoolean>;
56
101
  enabled: z.ZodOptional<z.ZodBoolean>;
57
102
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
58
103
  systemPrompt: z.ZodOptional<z.ZodString>;
59
- }, z.core.$strip>>>;
60
- }, z.core.$strip>>>;
104
+ agentId: z.ZodOptional<z.ZodString>;
105
+ }, z.core.$strict>>>;
106
+ }, z.core.$strict>>>;
61
107
  historyLimit: z.ZodDefault<z.ZodNumber>;
62
108
  textChunkLimit: z.ZodDefault<z.ZodNumber>;
63
- streamMode: z.ZodDefault<z.ZodEnum<{
64
- off: "off";
65
- partial: "partial";
66
- block: "block";
67
- }>>;
109
+ streaming: z.ZodOptional<z.ZodObject<{
110
+ mode: z.ZodDefault<z.ZodEnum<{
111
+ off: "off";
112
+ partial: "partial";
113
+ block: "block";
114
+ }>>;
115
+ preview: z.ZodOptional<z.ZodObject<{
116
+ toolProgress: z.ZodDefault<z.ZodBoolean>;
117
+ }, z.core.$strict>>;
118
+ block: z.ZodOptional<z.ZodObject<{
119
+ coalesce: z.ZodOptional<z.ZodObject<{
120
+ minChars: z.ZodDefault<z.ZodNumber>;
121
+ idleMs: z.ZodDefault<z.ZodNumber>;
122
+ }, z.core.$strict>>;
123
+ }, z.core.$strict>>;
124
+ }, z.core.$strict>>;
68
125
  proxy: z.ZodOptional<z.ZodString>;
69
126
  apiRoot: z.ZodOptional<z.ZodString>;
70
- }, z.core.$strip>;
71
- export declare const TelegramConfigSchema: z.ZodPreprocess<z.ZodObject<{
127
+ pollingStallThresholdMs: z.ZodOptional<z.ZodNumber>;
128
+ reactionLevel: z.ZodDefault<z.ZodEnum<{
129
+ off: "off";
130
+ minimal: "minimal";
131
+ ack: "ack";
132
+ extensive: "extensive";
133
+ }>>;
134
+ reactionNotifications: z.ZodDefault<z.ZodEnum<{
135
+ off: "off";
136
+ all: "all";
137
+ own: "own";
138
+ }>>;
139
+ ackReaction: z.ZodOptional<z.ZodString>;
140
+ actions: z.ZodOptional<z.ZodObject<{
141
+ reactions: z.ZodDefault<z.ZodBoolean>;
142
+ sendMessage: z.ZodDefault<z.ZodBoolean>;
143
+ editMessage: z.ZodDefault<z.ZodBoolean>;
144
+ deleteMessage: z.ZodDefault<z.ZodBoolean>;
145
+ poll: z.ZodDefault<z.ZodBoolean>;
146
+ sticker: z.ZodDefault<z.ZodBoolean>;
147
+ createForumTopic: z.ZodDefault<z.ZodBoolean>;
148
+ }, z.core.$strict>>;
149
+ execApprovals: z.ZodOptional<z.ZodObject<{
150
+ enabled: z.ZodDefault<z.ZodBoolean>;
151
+ approvers: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
152
+ }, z.core.$strict>>;
153
+ threadBindings: z.ZodOptional<z.ZodObject<{
154
+ enabled: z.ZodDefault<z.ZodBoolean>;
155
+ idleTimeoutMs: z.ZodOptional<z.ZodNumber>;
156
+ maxAgeMs: z.ZodOptional<z.ZodNumber>;
157
+ }, z.core.$strict>>;
158
+ }, z.core.$strict>;
159
+ export declare const TelegramConfigSchema: z.ZodObject<{
72
160
  enabled: z.ZodDefault<z.ZodBoolean>;
73
161
  allowFrom: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
74
162
  groupAllowFrom: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
75
163
  apiRoot: z.ZodOptional<z.ZodString>;
76
164
  debug: z.ZodDefault<z.ZodBoolean>;
77
165
  accounts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
78
- accountId: z.ZodString;
166
+ accountId: z.ZodOptional<z.ZodString>;
79
167
  name: z.ZodOptional<z.ZodString>;
80
168
  enabled: z.ZodDefault<z.ZodBoolean>;
81
169
  botToken: z.ZodDefault<z.ZodString>;
@@ -99,29 +187,73 @@ export declare const TelegramConfigSchema: z.ZodPreprocess<z.ZodObject<{
99
187
  all: "all";
100
188
  }>>;
101
189
  groups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
102
- groupId: z.ZodString;
190
+ groupId: z.ZodOptional<z.ZodString>;
103
191
  requireMention: z.ZodOptional<z.ZodBoolean>;
104
192
  enabled: z.ZodOptional<z.ZodBoolean>;
105
193
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
106
194
  systemPrompt: z.ZodOptional<z.ZodString>;
195
+ agentId: z.ZodOptional<z.ZodString>;
107
196
  topics: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
108
- topicId: z.ZodString;
197
+ topicId: z.ZodOptional<z.ZodString>;
109
198
  requireMention: z.ZodOptional<z.ZodBoolean>;
110
199
  enabled: z.ZodOptional<z.ZodBoolean>;
111
200
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
112
201
  systemPrompt: z.ZodOptional<z.ZodString>;
113
- }, z.core.$strip>>>;
114
- }, z.core.$strip>>>;
202
+ agentId: z.ZodOptional<z.ZodString>;
203
+ }, z.core.$strict>>>;
204
+ }, z.core.$strict>>>;
115
205
  historyLimit: z.ZodDefault<z.ZodNumber>;
116
206
  textChunkLimit: z.ZodDefault<z.ZodNumber>;
117
- streamMode: z.ZodDefault<z.ZodEnum<{
118
- off: "off";
119
- partial: "partial";
120
- block: "block";
121
- }>>;
207
+ streaming: z.ZodOptional<z.ZodObject<{
208
+ mode: z.ZodDefault<z.ZodEnum<{
209
+ off: "off";
210
+ partial: "partial";
211
+ block: "block";
212
+ }>>;
213
+ preview: z.ZodOptional<z.ZodObject<{
214
+ toolProgress: z.ZodDefault<z.ZodBoolean>;
215
+ }, z.core.$strict>>;
216
+ block: z.ZodOptional<z.ZodObject<{
217
+ coalesce: z.ZodOptional<z.ZodObject<{
218
+ minChars: z.ZodDefault<z.ZodNumber>;
219
+ idleMs: z.ZodDefault<z.ZodNumber>;
220
+ }, z.core.$strict>>;
221
+ }, z.core.$strict>>;
222
+ }, z.core.$strict>>;
122
223
  proxy: z.ZodOptional<z.ZodString>;
123
224
  apiRoot: z.ZodOptional<z.ZodString>;
124
- }, z.core.$strip>>>;
225
+ pollingStallThresholdMs: z.ZodOptional<z.ZodNumber>;
226
+ reactionLevel: z.ZodDefault<z.ZodEnum<{
227
+ off: "off";
228
+ minimal: "minimal";
229
+ ack: "ack";
230
+ extensive: "extensive";
231
+ }>>;
232
+ reactionNotifications: z.ZodDefault<z.ZodEnum<{
233
+ off: "off";
234
+ all: "all";
235
+ own: "own";
236
+ }>>;
237
+ ackReaction: z.ZodOptional<z.ZodString>;
238
+ actions: z.ZodOptional<z.ZodObject<{
239
+ reactions: z.ZodDefault<z.ZodBoolean>;
240
+ sendMessage: z.ZodDefault<z.ZodBoolean>;
241
+ editMessage: z.ZodDefault<z.ZodBoolean>;
242
+ deleteMessage: z.ZodDefault<z.ZodBoolean>;
243
+ poll: z.ZodDefault<z.ZodBoolean>;
244
+ sticker: z.ZodDefault<z.ZodBoolean>;
245
+ createForumTopic: z.ZodDefault<z.ZodBoolean>;
246
+ }, z.core.$strict>>;
247
+ execApprovals: z.ZodOptional<z.ZodObject<{
248
+ enabled: z.ZodDefault<z.ZodBoolean>;
249
+ approvers: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
250
+ }, z.core.$strict>>;
251
+ threadBindings: z.ZodOptional<z.ZodObject<{
252
+ enabled: z.ZodDefault<z.ZodBoolean>;
253
+ idleTimeoutMs: z.ZodOptional<z.ZodNumber>;
254
+ maxAgeMs: z.ZodOptional<z.ZodNumber>;
255
+ }, z.core.$strict>>;
256
+ }, z.core.$strict>>>;
125
257
  dmPolicy: z.ZodDefault<z.ZodEnum<{
126
258
  pairing: "pairing";
127
259
  allowlist: "allowlist";
@@ -138,13 +270,31 @@ export declare const TelegramConfigSchema: z.ZodPreprocess<z.ZodObject<{
138
270
  first: "first";
139
271
  all: "all";
140
272
  }>>;
141
- streamMode: z.ZodOptional<z.ZodEnum<{
142
- off: "off";
143
- partial: "partial";
144
- block: "block";
145
- }>>;
273
+ streaming: z.ZodOptional<z.ZodObject<{
274
+ mode: z.ZodDefault<z.ZodEnum<{
275
+ off: "off";
276
+ partial: "partial";
277
+ block: "block";
278
+ }>>;
279
+ preview: z.ZodOptional<z.ZodObject<{
280
+ toolProgress: z.ZodDefault<z.ZodBoolean>;
281
+ }, z.core.$strict>>;
282
+ block: z.ZodOptional<z.ZodObject<{
283
+ coalesce: z.ZodOptional<z.ZodObject<{
284
+ minChars: z.ZodDefault<z.ZodNumber>;
285
+ idleMs: z.ZodDefault<z.ZodNumber>;
286
+ }, z.core.$strict>>;
287
+ }, z.core.$strict>>;
288
+ }, z.core.$strict>>;
146
289
  historyLimit: z.ZodDefault<z.ZodNumber>;
147
290
  textChunkLimit: z.ZodDefault<z.ZodNumber>;
148
291
  proxy: z.ZodOptional<z.ZodString>;
149
- }, z.core.$strip>>;
292
+ }, z.core.$strict>;
150
293
  export type TelegramConfig = z.infer<typeof TelegramConfigSchema>;
294
+ export type TelegramStreamingConfig = z.infer<typeof TelegramStreamingConfigSchema>;
295
+ /** Resolve effective streaming mode for an account. */
296
+ export declare function resolveTelegramStreamingMode(account: {
297
+ streaming?: {
298
+ mode?: 'off' | 'partial' | 'block';
299
+ };
300
+ }): 'off' | 'partial' | 'block';
@@ -1,48 +1,63 @@
1
1
  import { __esmMin } from "../../../_virtual/_rolldown/runtime.js";
2
2
  import { z } from "zod";
3
3
  //#region extensions/telegram/src/config-schema.ts
4
- /** Migrate legacy top-level `botToken` into `accounts.default`; implicit enable when `accounts.default.botToken` is set. */
5
- function preprocessTelegramConfigInput(raw) {
6
- if (raw === null || raw === void 0) return raw;
7
- if (typeof raw !== "object" || Array.isArray(raw)) return raw;
8
- const o = { ...raw };
9
- const legacyToken = typeof o.botToken === "string" ? o.botToken.trim() : "";
10
- if (legacyToken) {
11
- const acc = { ...o.accounts && typeof o.accounts === "object" && !Array.isArray(o.accounts) ? o.accounts : {} };
12
- const rawDef = acc.default;
13
- const def = rawDef && typeof rawDef === "object" && !Array.isArray(rawDef) ? { ...rawDef } : {};
14
- if (!(typeof def.botToken === "string" ? def.botToken.trim() : "")) acc.default = {
15
- ...def,
16
- accountId: "default",
17
- botToken: legacyToken
18
- };
19
- o.accounts = acc;
20
- }
21
- delete o.botToken;
22
- const defaultAcc = o.accounts?.default;
23
- const token = defaultAcc && typeof defaultAcc === "object" && typeof defaultAcc.botToken === "string" ? defaultAcc.botToken : "";
24
- if (o.enabled === void 0 && token.trim().length > 0) o.enabled = true;
25
- return o;
4
+ /** Resolve effective streaming mode for an account. */
5
+ function resolveTelegramStreamingMode(account) {
6
+ return account.streaming?.mode ?? "partial";
26
7
  }
27
- var TelegramTopicConfigSchema, TelegramGroupConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchemaInner, TelegramConfigSchema;
8
+ var TelegramStreamingBlockCoalesceSchema, TelegramStreamingPreviewSchema, TelegramStreamingConfigSchema, TelegramTopicConfigSchema, TelegramGroupConfigSchema, TelegramActionsConfigSchema, TelegramExecApprovalsConfigSchema, TelegramThreadBindingsConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema;
28
9
  var init_config_schema = __esmMin((() => {
10
+ TelegramStreamingBlockCoalesceSchema = z.object({
11
+ minChars: z.number().default(800),
12
+ idleMs: z.number().default(1e3)
13
+ }).strict();
14
+ TelegramStreamingPreviewSchema = z.object({ toolProgress: z.boolean().default(true) }).strict();
15
+ TelegramStreamingConfigSchema = z.object({
16
+ mode: z.enum([
17
+ "off",
18
+ "partial",
19
+ "block"
20
+ ]).default("partial"),
21
+ preview: TelegramStreamingPreviewSchema.optional(),
22
+ block: z.object({ coalesce: TelegramStreamingBlockCoalesceSchema.optional() }).strict().optional()
23
+ }).strict();
29
24
  TelegramTopicConfigSchema = z.object({
30
- topicId: z.string(),
25
+ topicId: z.string().optional(),
31
26
  requireMention: z.boolean().optional(),
32
27
  enabled: z.boolean().optional(),
33
28
  allowFrom: z.array(z.union([z.string(), z.number()])).optional(),
34
- systemPrompt: z.string().optional()
35
- });
29
+ systemPrompt: z.string().optional(),
30
+ agentId: z.string().optional()
31
+ }).strict();
36
32
  TelegramGroupConfigSchema = z.object({
37
- groupId: z.string(),
33
+ groupId: z.string().optional(),
38
34
  requireMention: z.boolean().optional(),
39
35
  enabled: z.boolean().optional(),
40
36
  allowFrom: z.array(z.union([z.string(), z.number()])).optional(),
41
37
  systemPrompt: z.string().optional(),
38
+ agentId: z.string().optional(),
42
39
  topics: z.record(z.string(), TelegramTopicConfigSchema).optional()
43
- });
40
+ }).strict();
41
+ TelegramActionsConfigSchema = z.object({
42
+ reactions: z.boolean().default(true),
43
+ sendMessage: z.boolean().default(true),
44
+ editMessage: z.boolean().default(true),
45
+ deleteMessage: z.boolean().default(false),
46
+ poll: z.boolean().default(false),
47
+ sticker: z.boolean().default(false),
48
+ createForumTopic: z.boolean().default(false)
49
+ }).strict();
50
+ TelegramExecApprovalsConfigSchema = z.object({
51
+ enabled: z.boolean().default(false),
52
+ approvers: z.array(z.union([z.string(), z.number()])).optional()
53
+ }).strict();
54
+ TelegramThreadBindingsConfigSchema = z.object({
55
+ enabled: z.boolean().default(false),
56
+ idleTimeoutMs: z.number().optional(),
57
+ maxAgeMs: z.number().optional()
58
+ }).strict();
44
59
  TelegramAccountConfigSchema = z.object({
45
- accountId: z.string(),
60
+ accountId: z.string().optional(),
46
61
  name: z.string().optional(),
47
62
  enabled: z.boolean().default(true),
48
63
  botToken: z.string().default(""),
@@ -68,15 +83,27 @@ var init_config_schema = __esmMin((() => {
68
83
  groups: z.record(z.string(), TelegramGroupConfigSchema).optional(),
69
84
  historyLimit: z.number().default(50),
70
85
  textChunkLimit: z.number().default(4e3),
71
- streamMode: z.enum([
72
- "off",
73
- "partial",
74
- "block"
75
- ]).default("partial"),
86
+ streaming: TelegramStreamingConfigSchema.optional(),
76
87
  proxy: z.string().optional(),
77
- apiRoot: z.string().optional()
78
- });
79
- TelegramConfigSchemaInner = z.object({
88
+ apiRoot: z.string().optional(),
89
+ pollingStallThresholdMs: z.number().min(3e4).max(6e5).optional(),
90
+ reactionLevel: z.enum([
91
+ "off",
92
+ "ack",
93
+ "minimal",
94
+ "extensive"
95
+ ]).default("ack"),
96
+ reactionNotifications: z.enum([
97
+ "off",
98
+ "own",
99
+ "all"
100
+ ]).default("own"),
101
+ ackReaction: z.string().optional(),
102
+ actions: TelegramActionsConfigSchema.optional(),
103
+ execApprovals: TelegramExecApprovalsConfigSchema.optional(),
104
+ threadBindings: TelegramThreadBindingsConfigSchema.optional()
105
+ }).strict();
106
+ TelegramConfigSchema = z.object({
80
107
  enabled: z.boolean().default(false),
81
108
  allowFrom: z.array(z.union([z.string(), z.number()])).default([]),
82
109
  groupAllowFrom: z.array(z.union([z.string(), z.number()])).default([]),
@@ -99,19 +126,14 @@ var init_config_schema = __esmMin((() => {
99
126
  "first",
100
127
  "all"
101
128
  ]).default("off"),
102
- streamMode: z.enum([
103
- "off",
104
- "partial",
105
- "block"
106
- ]).optional(),
129
+ streaming: TelegramStreamingConfigSchema.optional(),
107
130
  historyLimit: z.number().default(50),
108
131
  textChunkLimit: z.number().default(4e3),
109
132
  proxy: z.string().optional()
110
- });
111
- TelegramConfigSchema = z.preprocess(preprocessTelegramConfigInput, TelegramConfigSchemaInner);
133
+ }).strict();
112
134
  }));
113
135
  //#endregion
114
136
  init_config_schema();
115
- export { TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, init_config_schema };
137
+ export { TelegramAccountConfigSchema, TelegramActionsConfigSchema, TelegramConfigSchema, TelegramExecApprovalsConfigSchema, TelegramGroupConfigSchema, TelegramStreamingBlockCoalesceSchema, TelegramStreamingConfigSchema, TelegramStreamingPreviewSchema, TelegramThreadBindingsConfigSchema, TelegramTopicConfigSchema, init_config_schema, resolveTelegramStreamingMode };
116
138
 
117
139
  //# sourceMappingURL=config-schema.js.map