@xopcai/xopc 0.0.242 → 0.0.243

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 (234) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-MU5XrVv8.js → activity-store-CAah-_8h.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-B_Wc0wuL.js → agent-avatar-dicebear-DDH4HgP7.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-BDCfJZhh.js +1 -0
  6. package/dist/gateway/static/root/assets/agents-B0ZWgf-U.js +1 -0
  7. package/dist/gateway/static/root/assets/{api-DLyc8BQp.js → api-B2tKxbcz.js} +1 -1
  8. package/dist/gateway/static/root/assets/app-management-settings-panel-Blfwszzn.js +1 -0
  9. package/dist/gateway/static/root/assets/{appearance-settings-DB5gEQhN.js → appearance-settings-C3V7Na75.js} +1 -1
  10. package/dist/gateway/static/root/assets/apps-page-BiEks0-F.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-BOx0EJZs.js → archive-plugin-BmSx7wzY.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-CYnYIyLr.js → attachment-load-BS-S4LJ9.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-page-ChTflpmA.js → automations-page-C7Y3L30D.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-workspace-A3zPkPuo.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-BjbLfNwG.js → binary-plugins-BM9B5kcm.js} +1 -1
  16. package/dist/gateway/static/root/assets/block-editor-BbnpkYP9.js +185 -0
  17. package/dist/gateway/static/root/assets/browser-settings-page-Dk4FQ7fY.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-DGQxD0vD.js → browser-workflow-inputs-CRnkgZHI.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-B9gfdd7L.js → browser-workflows-page-B9qGL-it.js} +2 -2
  20. package/dist/gateway/static/root/assets/{button-CSEbl4zT.js → button-CtTvuElV.js} +1 -1
  21. package/dist/gateway/static/root/assets/capabilities-settings-panel--tR_El9e.js +7 -0
  22. package/dist/gateway/static/root/assets/channels-settings-D347vl_J.js +1 -0
  23. package/dist/gateway/static/root/assets/{channels-status-swr-TkU42f-W.js → channels-status-swr-DuY4MGxe.js} +1 -1
  24. package/dist/gateway/static/root/assets/{chat-terminal-dock-CWMPcnoN.js → chat-terminal-dock-DABPvwBT.js} +2 -2
  25. package/dist/gateway/static/root/assets/connectors-page-B-tvJkRJ.js +2 -0
  26. package/dist/gateway/static/root/assets/{cron-expression-3h3rR0cf.js → cron-expression-D3bsKbNd.js} +1 -1
  27. package/dist/gateway/static/root/assets/{date-picker-Bz1sLBEx.js → date-picker-BsGM6Yty.js} +1 -1
  28. package/dist/gateway/static/root/assets/{dependency-picker-p9DWR8uU.js → dependency-picker-Dj3g6YXZ.js} +1 -1
  29. package/dist/gateway/static/root/assets/{desktop-pet-D1TDB_gR.js → desktop-pet-C1QT0Sur.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-DWPZpoB7.js → desktop-pet-settings-r6kAOnfY.js} +1 -1
  31. package/dist/gateway/static/root/assets/dist-CpzYSoz7.js +1 -0
  32. package/dist/gateway/static/root/assets/{dist-DaxPZj9e.js → dist-DBS3OB8K.js} +1 -1
  33. package/dist/gateway/static/root/assets/dist-DLmwHyAh.js +1 -0
  34. package/dist/gateway/static/root/assets/es2015-BvLh9GaE.js +41 -0
  35. package/dist/gateway/static/root/assets/{extension-debug-page-BrRbK2rJ.js → extension-debug-page-DOkf7nh9.js} +1 -1
  36. package/dist/gateway/static/root/assets/{extension-page-CD65czfS.js → extension-page-Cq2IA4Ho.js} +1 -1
  37. package/dist/gateway/static/root/assets/{extension-settings-page-BRDDKhpi.js → extension-settings-page-DQn4qjDZ.js} +1 -1
  38. package/dist/gateway/static/root/assets/{files-DQjhZjr2.js → files-D6vf3S30.js} +1 -1
  39. package/dist/gateway/static/root/assets/{gateway-config-api-CjbBsr5M.js → gateway-config-api-DM3poL22.js} +1 -1
  40. package/dist/gateway/static/root/assets/{gateway-config-swr-HT7sLeO9.js → gateway-config-swr-BC3pgb_P.js} +1 -1
  41. package/dist/gateway/static/root/assets/{gateway-settings-BQjmfYD4.js → gateway-settings-DPgH1hnh.js} +1 -1
  42. package/dist/gateway/static/root/assets/{gateway-startup-retry-iBCtaAuT.js → gateway-startup-retry-uMcSfLru.js} +1 -1
  43. package/dist/gateway/static/root/assets/{heartbeat-settings-BzZxLgrw.js → heartbeat-settings-Bk80-E3b.js} +1 -1
  44. package/dist/gateway/static/root/assets/home-page-DKo5JiMR.js +1 -0
  45. package/dist/gateway/static/root/assets/{image-generation-api-dj9TNEn2.js → image-generation-api-D1qlQA-A.js} +1 -1
  46. package/dist/gateway/static/root/assets/index-B0WJL9N1.js +71 -0
  47. package/dist/gateway/static/root/assets/index-Dbh5SXyV.css +2 -0
  48. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BEnuEPD3.js → keyboard-shortcuts-settings-BEwvd8ZU.js} +1 -1
  49. package/dist/gateway/static/root/assets/local-app-workbench-page--eJ5rmNj.js +2 -0
  50. package/dist/gateway/static/root/assets/{local-apps-page-DXQtppWq.js → local-apps-page-CgkY9E-r.js} +1 -1
  51. package/dist/gateway/static/root/assets/{locale-store-DVzTJSj2.js → locale-store-CMZljTJx.js} +1 -1
  52. package/dist/gateway/static/root/assets/logs-page-Z49Td0J9.js +2 -0
  53. package/dist/gateway/static/root/assets/{management-settings-DIpBMWrA.js → management-settings-Dv8NSJKt.js} +1 -1
  54. package/dist/gateway/static/root/assets/{markdown-split-BFHyGwNF.js → markdown-split-Cm0RBB-t.js} +1 -1
  55. package/dist/gateway/static/root/assets/{markdown-view-DR3yVwtV.js → markdown-view-PPCLt7fu.js} +3 -3
  56. package/dist/gateway/static/root/assets/{media-plugins-BjjMxC5_.js → media-plugins-Bcr5sU1f.js} +1 -1
  57. package/dist/gateway/static/root/assets/messages-CTSgFlE4.js +3 -0
  58. package/dist/gateway/static/root/assets/mobile-pairing-wizard-kKDiXofY.js +1 -0
  59. package/dist/gateway/static/root/assets/models-hub-cache-ZrbGRiGY.js +1 -0
  60. package/dist/gateway/static/root/assets/{notes-page-BbvtelJa.js → notes-page-CgsaRaGi.js} +1 -1
  61. package/dist/gateway/static/root/assets/notes-workbench-C1DEE09k.js +4 -0
  62. package/dist/gateway/static/root/assets/{oauth-api-BB-VYJ5j.js → oauth-api-4VeMbkTJ.js} +1 -1
  63. package/dist/gateway/static/root/assets/popover-select-C-Hj-nXR.js +1 -0
  64. package/dist/gateway/static/root/assets/{product-delivery-dUJgmBQZ.js → product-delivery-CV4pDOtG.js} +1 -1
  65. package/dist/gateway/static/root/assets/product-open-page-BU0HiZtv.js +1 -0
  66. package/dist/gateway/static/root/assets/project-detail-page-isRapnp5.js +1 -0
  67. package/dist/gateway/static/root/assets/projects-page-zvsjg0mi.js +1 -0
  68. package/dist/gateway/static/root/assets/{registry-api-DXsR8oGN.js → registry-api-CWOtPFrE.js} +1 -1
  69. package/dist/gateway/static/root/assets/remote-access-hub-C9TGZ9Hc.js +1 -0
  70. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DoEfLjPB.js → runtime-tools-settings-panel-2zm9edMA.js} +2 -2
  71. package/dist/gateway/static/root/assets/{schema-form-BsqpbBDv.js → schema-form-54A5gzkN.js} +1 -1
  72. package/dist/gateway/static/root/assets/{schemas-zIBW3wiV.js → schemas-BHS7bo06.js} +1 -1
  73. package/dist/gateway/static/root/assets/sessions-page-BP8RyiUn.js +1 -0
  74. package/dist/gateway/static/root/assets/settings-advanced-gate-D4EMxWAZ.js +1 -0
  75. package/dist/gateway/static/root/assets/{settings-page-CE7ZcCTK.js → settings-page-DzDhoyxv.js} +1 -1
  76. package/dist/gateway/static/root/assets/{setup-status-panel-CGlne9i0.js → setup-status-panel-uDicHU1w.js} +1 -1
  77. package/dist/gateway/static/root/assets/{share-preview-page-Bn0qMX8V.js → share-preview-page-lOmLCWFS.js} +1 -1
  78. package/dist/gateway/static/root/assets/shares-settings-T4Yvouvv.js +1 -0
  79. package/dist/gateway/static/root/assets/skill-reload-api-DVb7nrXz.js +1 -0
  80. package/dist/gateway/static/root/assets/{skills-page-dRkeYh5P.js → skills-page-CnyNH3To.js} +1 -1
  81. package/dist/gateway/static/root/assets/skills-page.utils-CgDtf2qs.js +1 -0
  82. package/dist/gateway/static/root/assets/{system-settings-panel-C0ZCuCM4.js → system-settings-panel-C8yWfwtR.js} +1 -1
  83. package/dist/gateway/static/root/assets/task-detail-page-Tzfjlbf3.js +1 -0
  84. package/dist/gateway/static/root/assets/{theme-store-Cth-eChE.js → theme-store-uxUwr10D.js} +1 -1
  85. package/dist/gateway/static/root/assets/tunnel-api-Bvg679no.js +1 -0
  86. package/dist/gateway/static/root/assets/{use-autosave-PSV89QuQ.js → use-autosave-D88VGoyG.js} +1 -1
  87. package/dist/gateway/static/root/assets/user-context-page-RijPtyfO.js +1 -0
  88. package/dist/gateway/static/root/assets/{voice-api-key-field-DXWdJ8cR.js → voice-api-key-field-CBHLsMcc.js} +1 -1
  89. package/dist/gateway/static/root/assets/voice-config-api-MqyI6cgq.js +1 -0
  90. package/dist/gateway/static/root/assets/work-discovery-overlay-GGe2TQ98.js +1 -0
  91. package/dist/gateway/static/root/assets/workflow-run-setup-panel-C0layUE9.js +3 -0
  92. package/dist/gateway/static/root/assets/workflows-page-DQXIzBAc.js +5 -0
  93. package/dist/gateway/static/root/index.html +21 -22
  94. package/dist/package.js +1 -1
  95. package/dist/packages/realtime-protocol/src/voice-audio.js +20 -0
  96. package/dist/packages/realtime-protocol/src/voice.js +208 -0
  97. package/dist/src/agent/embedded/run-for-session.d.ts +1 -0
  98. package/dist/src/agent/embedded/run-for-session.js +2 -1
  99. package/dist/src/agent/inbound/turn-dispatcher.d.ts +1 -0
  100. package/dist/src/agent/inbound/turn-dispatcher.js +2 -1
  101. package/dist/src/agent/prompt/voice-presentation.d.ts +2 -0
  102. package/dist/src/agent/prompt/voice-presentation.js +12 -0
  103. package/dist/src/agent/service/direct-turn-helpers.d.ts +1 -0
  104. package/dist/src/agent/service/direct-turn-helpers.js +1 -0
  105. package/dist/src/agent/service/process-direct-streaming.d.ts +1 -0
  106. package/dist/src/agent/service/process-direct-streaming.js +2 -1
  107. package/dist/src/agent/session/session-config-service.js +4 -2
  108. package/dist/src/automations/draft/automation-draft-service.js +1 -1
  109. package/dist/src/config/models-json.d.ts +8 -8
  110. package/dist/src/config/schema.d.ts +60 -0
  111. package/dist/src/config/schema.js +31 -1
  112. package/dist/src/files/file-service.d.ts +1 -0
  113. package/dist/src/files/file-service.js +4 -0
  114. package/dist/src/gateway/chat-stream/thinking-delta-coalescer.js +8 -3
  115. package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -11
  116. package/dist/src/gateway/hono/lib/config-payload.js +2 -2
  117. package/dist/src/gateway/hono/lib/safe-voice-config.d.ts +14 -0
  118. package/dist/src/gateway/hono/lib/safe-voice-config.js +29 -1
  119. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
  120. package/dist/src/gateway/hono/routes/files.js +7 -0
  121. package/dist/src/gateway/hono/routes/lazy-fallback.js +18 -4
  122. package/dist/src/gateway/hono/routes/session-input-handler.js +14 -0
  123. package/dist/src/gateway/hono/routes/sessions.js +4 -1
  124. package/dist/src/gateway/hono/routes/voice.js +139 -2
  125. package/dist/src/gateway/server.js +1 -0
  126. package/dist/src/gateway/service/agent-runner.d.ts +1 -0
  127. package/dist/src/gateway/service/agent-runner.js +1 -6
  128. package/dist/src/gateway/service/run-gateway-agent.d.ts +1 -0
  129. package/dist/src/gateway/service/run-gateway-agent.js +19 -1
  130. package/dist/src/gateway/service.d.ts +2 -0
  131. package/dist/src/gateway/service.js +73 -0
  132. package/dist/src/media-understanding/types.d.ts +61 -0
  133. package/dist/src/session/client-history.js +12 -0
  134. package/dist/src/session/manager.d.ts +1 -0
  135. package/dist/src/session/session-context-for-llm.js +8 -0
  136. package/dist/src/session/store.d.ts +1 -0
  137. package/dist/src/session/store.js +1 -0
  138. package/dist/src/session/stored-rows-to-file-entries.js +5 -1
  139. package/dist/src/session/voice-transcript.d.ts +9 -0
  140. package/dist/src/session/voice-transcript.js +45 -0
  141. package/dist/src/storage/sqlite/config-repository.js +9 -0
  142. package/dist/src/storage/sqlite/remote-context-repository.d.ts +3 -0
  143. package/dist/src/storage/sqlite/remote-context-repository.js +40 -0
  144. package/dist/src/storage/sqlite/session-repository.js +13 -0
  145. package/dist/src/storage/sqlite/user-context-repository.d.ts +3 -1
  146. package/dist/src/storage/sqlite/user-context-repository.js +50 -4
  147. package/dist/src/tui/tui.js +2 -1
  148. package/dist/src/user-context/automatic-context.d.ts +17 -0
  149. package/dist/src/user-context/automatic-context.js +85 -0
  150. package/dist/src/user-context/changes.d.ts +7 -0
  151. package/dist/src/user-context/changes.js +28 -0
  152. package/dist/src/user-context/planner.js +1 -24
  153. package/dist/src/user-context/retriever.js +10 -11
  154. package/dist/src/user-context/selection-policy.d.ts +20 -0
  155. package/dist/src/user-context/selection-policy.js +33 -0
  156. package/dist/src/user-context/sources/index.js +2 -2
  157. package/dist/src/user-context/sources/repository.d.ts +2 -1
  158. package/dist/src/user-context/sources/repository.js +26 -5
  159. package/dist/src/voice/dashscope/streaming-stt-session.d.ts +2 -0
  160. package/dist/src/voice/dashscope/streaming-stt-session.js +249 -0
  161. package/dist/src/voice/dashscope/streaming-tts-stream.d.ts +12 -0
  162. package/dist/src/voice/dashscope/streaming-tts-stream.js +153 -0
  163. package/dist/src/voice/realtime/agentEngine.d.ts +10 -0
  164. package/dist/src/voice/realtime/agentEngine.js +403 -0
  165. package/dist/src/voice/realtime/audio-playback-window.d.ts +9 -0
  166. package/dist/src/voice/realtime/audio-playback-window.js +49 -0
  167. package/dist/src/voice/realtime/conversation-context.d.ts +11 -0
  168. package/dist/src/voice/realtime/conversation-context.js +76 -0
  169. package/dist/src/voice/realtime/engine.d.ts +13 -0
  170. package/dist/src/voice/realtime/engine.js +1 -0
  171. package/dist/src/voice/realtime/memory-context.d.ts +17 -0
  172. package/dist/src/voice/realtime/memory-context.js +100 -0
  173. package/dist/src/voice/realtime/omniEngine.d.ts +18 -0
  174. package/dist/src/voice/realtime/omniEngine.js +443 -0
  175. package/dist/src/voice/realtime/omniRoute.d.ts +10 -0
  176. package/dist/src/voice/realtime/omniRoute.js +31 -0
  177. package/dist/src/voice/realtime/runtime.d.ts +99 -0
  178. package/dist/src/voice/realtime/runtime.js +622 -0
  179. package/dist/src/voice/realtime/speakable-segmenter.d.ts +10 -0
  180. package/dist/src/voice/realtime/speakable-segmenter.js +87 -0
  181. package/dist/src/voice/stt/list-providers.js +2 -1
  182. package/dist/src/voice/stt/providers/alibaba-transcription.js +13 -1
  183. package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +23 -0
  184. package/dist/src/voice/tts/factory.js +1 -0
  185. package/dist/src/voice/tts/openai-compatible-speech.js +3 -1
  186. package/dist/src/voice/tts/providers/alibaba-speech.d.ts +1 -5
  187. package/dist/src/voice/tts/providers/alibaba-speech.js +25 -8
  188. package/dist/src/voice/tts/providers/edge-speech.js +21 -22
  189. package/dist/src/voice/tts/providers/minimax-speech.js +6 -3
  190. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +26 -1
  191. package/dist/src/voice/tts/speak-core.d.ts +6 -2
  192. package/dist/src/voice/tts/speak-core.js +46 -34
  193. package/dist/src/voice/tts/speech-provider-types.d.ts +1 -0
  194. package/package.json +5 -5
  195. package/dist/gateway/static/root/assets/Combination-14nmIgxH.js +0 -41
  196. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-Cf7U2aUi.js +0 -1
  197. package/dist/gateway/static/root/assets/agents-Ce9oOnwE.js +0 -1
  198. package/dist/gateway/static/root/assets/app-chrome-BeB4KgOf.js +0 -1
  199. package/dist/gateway/static/root/assets/app-management-settings-panel-CACOOS-a.js +0 -1
  200. package/dist/gateway/static/root/assets/apps-page-BaTFOCmR.js +0 -1
  201. package/dist/gateway/static/root/assets/automations-workspace-DK6EreCr.js +0 -6
  202. package/dist/gateway/static/root/assets/block-editor-DgAs5aJc.js +0 -184
  203. package/dist/gateway/static/root/assets/browser-settings-page-CHStw5UW.js +0 -8
  204. package/dist/gateway/static/root/assets/capabilities-settings-panel-JGH6Kfkr.js +0 -7
  205. package/dist/gateway/static/root/assets/channels-settings-YkUaaWkY.js +0 -1
  206. package/dist/gateway/static/root/assets/connectors-page-BI0FG3gA.js +0 -2
  207. package/dist/gateway/static/root/assets/dist-BPoKqzeH.js +0 -1
  208. package/dist/gateway/static/root/assets/dist-DqPZM2MH.js +0 -1
  209. package/dist/gateway/static/root/assets/home-page--9fKq0mL.js +0 -1
  210. package/dist/gateway/static/root/assets/index-D499B1qS.css +0 -2
  211. package/dist/gateway/static/root/assets/index-J3FsIvTs.js +0 -70
  212. package/dist/gateway/static/root/assets/local-app-workbench-page-FqG00zS1.js +0 -2
  213. package/dist/gateway/static/root/assets/logs-page-c6CfZ8PA.js +0 -2
  214. package/dist/gateway/static/root/assets/messages-_tYhRAHD.js +0 -3
  215. package/dist/gateway/static/root/assets/mobile-pairing-wizard-CHnXZTwb.js +0 -1
  216. package/dist/gateway/static/root/assets/models-hub-cache-DiXjKuuY.js +0 -1
  217. package/dist/gateway/static/root/assets/notes-workbench-DIR37b-K.js +0 -4
  218. package/dist/gateway/static/root/assets/popover-select-DrILF6mR.js +0 -1
  219. package/dist/gateway/static/root/assets/product-open-page-CRm9Q66h.js +0 -1
  220. package/dist/gateway/static/root/assets/project-detail-page-DHiLTiRW.js +0 -1
  221. package/dist/gateway/static/root/assets/projects-page-God7NCcI.js +0 -1
  222. package/dist/gateway/static/root/assets/remote-access-hub-YpF0-mx2.js +0 -1
  223. package/dist/gateway/static/root/assets/sessions-page-CP8O1TxR.js +0 -1
  224. package/dist/gateway/static/root/assets/settings-advanced-gate-DzdbK3j9.js +0 -1
  225. package/dist/gateway/static/root/assets/shares-settings-B7NeVl4g.js +0 -1
  226. package/dist/gateway/static/root/assets/skill-reload-api-DDTmi4a7.js +0 -1
  227. package/dist/gateway/static/root/assets/skills-page.utils--q8p7MAn.js +0 -1
  228. package/dist/gateway/static/root/assets/task-detail-page-yiMzii2b.js +0 -1
  229. package/dist/gateway/static/root/assets/tunnel-api-CC3jOB4n.js +0 -1
  230. package/dist/gateway/static/root/assets/user-context-page-Vtwg7fQc.js +0 -1
  231. package/dist/gateway/static/root/assets/voice-config-api-BDoeXgww.js +0 -1
  232. package/dist/gateway/static/root/assets/work-discovery-overlay-BV_Jj5iD.js +0 -1
  233. package/dist/gateway/static/root/assets/workflow-run-setup-panel-DNHbWGPq.js +0 -3
  234. package/dist/gateway/static/root/assets/workflows-page-BkFIbMrz.js +0 -5
@@ -0,0 +1,31 @@
1
+ import { init_xopc_cloud_config, resolveXopcModelRouterUrl } from "../../providers/xopc-cloud-config.js";
2
+ import { getProviderAuthService, init_provider_auth_service } from "../../providers/provider-auth-service.js";
3
+ //#region src/voice/realtime/omniRoute.ts
4
+ init_provider_auth_service();
5
+ init_xopc_cloud_config();
6
+ async function resolveOmniRoute(config) {
7
+ const slice = config.voice?.realtime?.omni;
8
+ if (!slice) throw new Error("Natural conversation is not configured");
9
+ if (slice.model !== "qwen3-omni-flash-realtime") throw new Error("This Omni model has not been certified");
10
+ const managed = slice.provider === "xopc-cloud";
11
+ const url = new URL(managed ? `${resolveXopcModelRouterUrl(slice.baseUrl)}/audio/conversations/realtime` : slice.baseUrl ?? "wss://dashscope.aliyuncs.com/api-ws/v1/realtime");
12
+ if (managed && url.protocol === "https:") url.protocol = "wss:";
13
+ if (url.protocol !== "wss:" || url.username || url.password || url.hash || url.port) throw new Error("Omni requires a secure WebSocket endpoint");
14
+ if (!managed && (!(new Set(["dashscope.aliyuncs.com", "dashscope-intl.aliyuncs.com"]).has(url.hostname) || /^[a-zA-Z0-9-]+\.(cn-beijing|ap-southeast-1)\.maas\.aliyuncs\.com$/.test(url.hostname)) || url.pathname !== "/api-ws/v1/realtime")) throw new Error("Unsupported DashScope realtime endpoint");
15
+ const apiKey = managed ? await getProviderAuthService().resolveApiKey("xopc-cloud") : slice.apiKey ?? config.tools?.media?.audio?.providers?.alibaba?.apiKey ?? await getProviderAuthService().resolveApiKey("dashscope");
16
+ if (!apiKey) throw new Error("Omni credentials are unavailable");
17
+ url.search = new URLSearchParams({ model: slice.model }).toString();
18
+ return {
19
+ route: {
20
+ provider: slice.provider,
21
+ model: slice.model,
22
+ managed
23
+ },
24
+ url: url.toString(),
25
+ apiKey,
26
+ voice: slice.voice,
27
+ instructions: slice.instructions
28
+ };
29
+ }
30
+ //#endregion
31
+ export { resolveOmniRoute };
@@ -0,0 +1,99 @@
1
+ import type { IncomingMessage } from 'node:http';
2
+ import type { Socket } from 'node:net';
3
+ import { type CreateVoiceSessionRequest, type CreateVoiceSessionResponse, type VoiceProviderRoute } from '@xopcai/realtime-protocol/voice';
4
+ import type { Config } from '../../config/schema.js';
5
+ import type { MediaUnderstandingProvider } from '../../media-understanding/types.js';
6
+ import { type ResolvedSpeechProvider } from '../tts/factory.js';
7
+ import type { TTSConfig } from '../tts/types.js';
8
+ import { type VoiceConversationContext } from './conversation-context.js';
9
+ import { type OmniRoute } from './omniRoute.js';
10
+ import { type OmniTranscript } from './omniEngine.js';
11
+ interface ResolvedStreamingStt {
12
+ plugin: MediaUnderstandingProvider & Required<Pick<MediaUnderstandingProvider, 'openAudioStream' | 'streamingAudio'>>;
13
+ model: string;
14
+ apiKey?: string;
15
+ baseUrl?: string;
16
+ headers?: Record<string, string>;
17
+ language?: string;
18
+ prompt?: string;
19
+ route: VoiceProviderRoute;
20
+ }
21
+ export interface VoiceTicketClaim {
22
+ sessionId: string;
23
+ principalId: string;
24
+ request: CreateVoiceSessionRequest;
25
+ inputMode: 'server_vad';
26
+ idleTimeoutMs: number;
27
+ maxSessionMs: number;
28
+ silenceDurationMs: number;
29
+ stt?: ResolvedStreamingStt;
30
+ omni?: OmniRoute;
31
+ conversationSessionId?: string;
32
+ tts?: ResolvedStreamingTts;
33
+ config: Config;
34
+ createdAt: number;
35
+ expiresAt: number;
36
+ }
37
+ interface ResolvedStreamingTts {
38
+ provider: ResolvedSpeechProvider;
39
+ config: TTSConfig;
40
+ route: VoiceProviderRoute;
41
+ }
42
+ export type VoiceSessionCreationErrorCode = 'VOICE_DISABLED' | 'SESSION_NOT_FOUND' | 'SESSION_CONFLICT' | 'SESSION_LIMIT' | 'PROVIDER_UNAVAILABLE';
43
+ export declare class VoiceSessionCreationError extends Error {
44
+ readonly code: VoiceSessionCreationErrorCode;
45
+ readonly status: 404 | 409 | 429 | 503;
46
+ constructor(code: VoiceSessionCreationErrorCode, message: string, status: 404 | 409 | 429 | 503);
47
+ }
48
+ interface VoiceAgentEvent {
49
+ type: string;
50
+ payload?: {
51
+ delta?: unknown;
52
+ message?: unknown;
53
+ status?: unknown;
54
+ toolCallId?: unknown;
55
+ toolName?: unknown;
56
+ requestId?: unknown;
57
+ question?: unknown;
58
+ choices?: unknown;
59
+ };
60
+ }
61
+ export interface VoiceRealtimeRuntimeOptions {
62
+ recordOmniTranscript?: (sessionKey: string, callId: string, entry: OmniTranscript, expectedSessionId: string) => Promise<void>;
63
+ getConversationContext?: (sessionKey: string, expectedSessionId: string) => Promise<VoiceConversationContext>;
64
+ getSessionIdentity?: (sessionKey: string) => Promise<string | undefined>;
65
+ getConfig: () => Config;
66
+ sessionExists: (sessionKey: string) => Promise<boolean>;
67
+ sessionBusy: (sessionKey: string) => boolean;
68
+ runAgent: (text: string, sessionKey: string, signal: AbortSignal) => AsyncIterable<VoiceAgentEvent>;
69
+ recordInterruption: (entry: {
70
+ sessionKey: string;
71
+ responseId: string;
72
+ reason: 'barge_in' | 'client_cancelled';
73
+ generatedCharacters: number;
74
+ interruptedDuring: 'thinking' | 'speaking';
75
+ }) => Promise<void>;
76
+ }
77
+ export declare function resolveStreamingStt(config: Config, language?: string): ResolvedStreamingStt | undefined;
78
+ export declare function resolveStreamingTts(config: Config): ResolvedStreamingTts | undefined;
79
+ export declare class VoiceRealtimeRuntime {
80
+ private readonly options;
81
+ private readonly wss;
82
+ private readonly tickets;
83
+ private readonly preauthBudget;
84
+ private readonly socketsByPrincipal;
85
+ private readonly conversationReservations;
86
+ private closed;
87
+ constructor(options: VoiceRealtimeRuntimeOptions);
88
+ private prepareSession;
89
+ preflight(request: CreateVoiceSessionRequest): Promise<void>;
90
+ createSession(request: CreateVoiceSessionRequest, principalId: string, now?: number): Promise<CreateVoiceSessionResponse>;
91
+ handleUpgrade(req: IncomingMessage, socket: Socket, head: Buffer): boolean;
92
+ hasConversation(sessionKey: string): boolean;
93
+ close(): void;
94
+ private releaseConversationReservation;
95
+ private consumeTicket;
96
+ private pruneTickets;
97
+ private handleConnection;
98
+ }
99
+ export {};