@xopcai/xopc 0.0.191 → 0.0.193

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 (348) 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-DstnJCS5.js → activity-store-BwmdJ5pv.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DvEkT222.js → agent-avatar-dicebear-DmNq0t2n.js} +1 -1
  5. package/dist/gateway/static/root/assets/agents-BOo1rVn9.js +68 -0
  6. package/dist/gateway/static/root/assets/{api-BTL9kayv.js → api-BM1hNzjw.js} +1 -1
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-COpP_pKN.js → app-management-settings-panel-B3xStqSX.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-DTVNUEDq.js → appearance-settings-DglyenDq.js} +1 -1
  9. package/dist/gateway/static/root/assets/apps-page-DC9qPFTx.js +1 -0
  10. package/dist/gateway/static/root/assets/{archive-plugin-IpX6VA0o.js → archive-plugin-DvtcrBss.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-CKVFNUi1.js → attachment-load-CALdq4xM.js} +1 -1
  12. package/dist/gateway/static/root/assets/automations-page-BIGGKb0T.js +6 -0
  13. package/dist/gateway/static/root/assets/{binary-plugins-BrfvfOS4.js → binary-plugins-GaVuvrDI.js} +1 -1
  14. package/dist/gateway/static/root/assets/{block-editor-D9sEfg32.js → block-editor-C2KrMYa_.js} +4 -4
  15. package/dist/gateway/static/root/assets/browser-settings-page-CPW_E-xj.js +8 -0
  16. package/dist/gateway/static/root/assets/{browser-workflow-inputs-BixZ5lCR.js → browser-workflow-inputs-FfEEjhIS.js} +1 -1
  17. package/dist/gateway/static/root/assets/{browser-workflows-page-YEFuodJI.js → browser-workflows-page-DFP9_UQk.js} +2 -2
  18. package/dist/gateway/static/root/assets/capabilities-settings-panel-CsD8aGHU.js +7 -0
  19. package/dist/gateway/static/root/assets/capability-presets-api-BoOzFotX.js +1 -0
  20. package/dist/gateway/static/root/assets/capability-presets-settings-panel-NCeyWH6Z.js +3 -0
  21. package/dist/gateway/static/root/assets/{channel-recipient-api-BThDGiO3.js → channel-recipient-api-_8IiTxRB.js} +1 -1
  22. package/dist/gateway/static/root/assets/channels-settings-CknzwxNC.js +1 -0
  23. package/dist/gateway/static/root/assets/channels-status-swr-DPaJSYX_.js +1 -0
  24. package/dist/gateway/static/root/assets/{code-editor-D4_k-6QN.js → code-editor-dFzqyDXS.js} +1 -1
  25. package/dist/gateway/static/root/assets/{connectors-api-BMMqC0_9.js → connectors-api-vaSrhPF8.js} +1 -1
  26. package/dist/gateway/static/root/assets/connectors-page-DEGE7xp_.js +2 -0
  27. package/dist/gateway/static/root/assets/{cron-expression-Bm8koRoD.js → cron-expression-BjFuXlGY.js} +1 -1
  28. package/dist/gateway/static/root/assets/dependency-picker-DOdkHdPv.js +1 -0
  29. package/dist/gateway/static/root/assets/{desktop-pet-CMG3mcaJ.js → desktop-pet-Dz-Yf8Uu.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-D8aaPb0x.js → desktop-pet-settings-C8EHFEtd.js} +1 -1
  31. package/dist/gateway/static/root/assets/{directory-picker-path-field-C95yW03b.js → directory-picker-path-field-DKbfmZlZ.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-DsG7Z9lV.js → extension-debug-page-Dq0xsr_e.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-CUAXEbAt.js → extension-page-IgSLUyWP.js} +1 -1
  34. package/dist/gateway/static/root/assets/extension-settings-page-VC-8Pjn2.js +1 -0
  35. package/dist/gateway/static/root/assets/{gateway-config-api-DL70Nakc.js → gateway-config-api-CH2R7yqo.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-settings-BgDxQ08c.js → gateway-settings-DLQJWaBQ.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-EO9mKvzE.js → gateway-startup-retry--2njcDpC.js} +1 -1
  38. package/dist/gateway/static/root/assets/{heartbeat-settings-BX7q55uZ.js → heartbeat-settings-43loWoGb.js} +1 -1
  39. package/dist/gateway/static/root/assets/home-page-DqvpI6LC.js +3 -0
  40. package/dist/gateway/static/root/assets/html-workspace-editor-bXK5tq64.js +1 -0
  41. package/dist/gateway/static/root/assets/{image-generation-api-Bu7PyVSh.js → image-generation-api-Cki7jfEV.js} +1 -1
  42. package/dist/gateway/static/root/assets/index-BpkdvHH0.js +150 -0
  43. package/dist/gateway/static/root/assets/index-CFVjH-EK.css +1 -0
  44. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Dt6wS5zW.js → keyboard-shortcuts-settings-DJDZes_8.js} +1 -1
  45. package/dist/gateway/static/root/assets/local-app-workbench-page-CvNQM6qm.js +2 -0
  46. package/dist/gateway/static/root/assets/{local-apps-page-DcD3-N00.js → local-apps-page-C2ajOn1D.js} +1 -1
  47. package/dist/gateway/static/root/assets/{locale-store-deR2zRaE.js → locale-store-Bjvw7jtg.js} +1 -1
  48. package/dist/gateway/static/root/assets/logs-page-BLm5yWqQ.js +2 -0
  49. package/dist/gateway/static/root/assets/{management-settings-B6EVkJQy.js → management-settings--_eXnFVr.js} +1 -1
  50. package/dist/gateway/static/root/assets/{markdown-editor-BvUebh3C.js → markdown-editor-TWGaF7Xa.js} +2 -2
  51. package/dist/gateway/static/root/assets/{markdown-split-CHUjCnBh.js → markdown-split-iL2oi-x2.js} +1 -1
  52. package/dist/gateway/static/root/assets/{media-plugins-DRrtI2O0.js → media-plugins-BIbkLVpQ.js} +1 -1
  53. package/dist/gateway/static/root/assets/messages-DQ5X6cXp.js +3 -0
  54. package/dist/gateway/static/root/assets/{notes-page-fermYvpI.js → notes-page-xFxaZ6gT.js} +1 -1
  55. package/dist/gateway/static/root/assets/notes-workbench-PAftxL3V.js +4 -0
  56. package/dist/gateway/static/root/assets/{page-tabs-BO262zuu.js → page-tabs-CROi9zm1.js} +1 -1
  57. package/dist/gateway/static/root/assets/{preview-open-alternatives-yZYTy-2e.js → preview-open-alternatives-BwYcPjOM.js} +1 -1
  58. package/dist/gateway/static/root/assets/{product-open-page-Dgy8XWhR.js → product-open-page-BezeuVFd.js} +1 -1
  59. package/dist/gateway/static/root/assets/project-detail-page-CCdfZcw-.js +1 -0
  60. package/dist/gateway/static/root/assets/projects-page-DOG9zm5e.js +1 -0
  61. package/dist/gateway/static/root/assets/remote-access-hub-DQBFgveI.js +1 -0
  62. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-Bs6tpSyX.js +5 -0
  63. package/dist/gateway/static/root/assets/{schema-form-DdE4gtw_.js → schema-form-CWoSjz9s.js} +1 -1
  64. package/dist/gateway/static/root/assets/sessions-page-Db6L6M2H.js +1 -0
  65. package/dist/gateway/static/root/assets/settings-advanced-gate-CcO2bd6q.js +1 -0
  66. package/dist/gateway/static/root/assets/{settings-form-section-CiYU8AvV.js → settings-form-section-BJaMEHsX.js} +1 -1
  67. package/dist/gateway/static/root/assets/{settings-loading-skeleton-Bv03cWib.js → settings-loading-skeleton-sn4k17x7.js} +1 -1
  68. package/dist/gateway/static/root/assets/settings-page-D2hfeFPX.js +1 -0
  69. package/dist/gateway/static/root/assets/{settings-page-layout-t_Ox1slk.js → settings-page-layout-CLtUsWsu.js} +1 -1
  70. package/dist/gateway/static/root/assets/setup-status-panel-UmQC_uZ1.js +1 -0
  71. package/dist/gateway/static/root/assets/{share-preview-page-DF8gW6bo.js → share-preview-page-BJ58AluH.js} +1 -1
  72. package/dist/gateway/static/root/assets/shares-settings-BZKn6Fdc.js +1 -0
  73. package/dist/gateway/static/root/assets/skill-reload-api-Cx3i24w_.js +1 -0
  74. package/dist/gateway/static/root/assets/skills-page-DjUllGtk.js +2 -0
  75. package/dist/gateway/static/root/assets/skills-page.utils-CZYIuE26.js +1 -0
  76. package/dist/gateway/static/root/assets/style-TIDOdKy0.js +7 -0
  77. package/dist/gateway/static/root/assets/system-settings-panel-DUrgdQMk.js +1 -0
  78. package/dist/gateway/static/root/assets/task-detail-page-BGG2cFe9.js +1 -0
  79. package/dist/gateway/static/root/assets/{theme-store-DnBOcGXi.js → theme-store-DtxpMC5S.js} +1 -1
  80. package/dist/gateway/static/root/assets/{typed-models-lib-4XBsLEuv.js → typed-models-lib-CRNMvvFX.js} +1 -1
  81. package/dist/gateway/static/root/assets/{use-autosave-BN2QgFGn.js → use-autosave-Dle3-zdQ.js} +1 -1
  82. package/dist/gateway/static/root/assets/user-context-page-BLLmw5S1.js +1 -0
  83. package/dist/gateway/static/root/assets/{vendor-codemirror--gTq3YAI.js → vendor-codemirror-DRr7hFaD.js} +16 -16
  84. package/dist/gateway/static/root/assets/voice-api-key-field-BrWH0dCl.js +1 -0
  85. package/dist/gateway/static/root/assets/{work-discovery-overlay-nmEAafFl.js → work-discovery-overlay-BZ1l9CFM.js} +1 -1
  86. package/dist/gateway/static/root/assets/work-discovery-page-BnPF2vx7.js +1 -0
  87. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BnNWBDwz.js → workflow-run-setup-panel-BK6e9yzK.js} +2 -2
  88. package/dist/gateway/static/root/assets/workflows-page-Bp5JxQJa.js +5 -0
  89. package/dist/gateway/static/root/index.html +7 -7
  90. package/dist/gateway/static/root/notification-sw.js +15 -0
  91. package/dist/package.js +1 -1
  92. package/dist/src/agent/agent-manager.d.ts +2 -0
  93. package/dist/src/agent/agent-manager.js +76 -0
  94. package/dist/src/agent/background-review/prompts.d.ts +1 -1
  95. package/dist/src/agent/background-review/prompts.js +1 -1
  96. package/dist/src/agent/background-review/run-background-review.js +3 -12
  97. package/dist/src/agent/embedded/run-for-session.js +3 -0
  98. package/dist/src/agent/embedded/run-turn.js +4 -1
  99. package/dist/src/agent/embedded/session-runner.js +3 -4
  100. package/dist/src/agent/embedded/types.d.ts +10 -1
  101. package/dist/src/agent/embedded/xopc-stream-bridge.js +3 -2
  102. package/dist/src/agent/external-tools/mcp-provider.d.ts +1 -0
  103. package/dist/src/agent/external-tools/mcp-provider.js +21 -6
  104. package/dist/src/agent/image/generation/provider-registry.js +1 -0
  105. package/dist/src/agent/image/generation/providers/dashscope.js +20 -0
  106. package/dist/src/agent/image/generation/providers/fal.d.ts +1 -1
  107. package/dist/src/agent/image/generation/providers/fal.js +12 -6
  108. package/dist/src/agent/image/generation/providers/google.js +8 -0
  109. package/dist/src/agent/image/generation/providers/minimax.js +20 -0
  110. package/dist/src/agent/image/generation/providers/openai.js +36 -26
  111. package/dist/src/agent/image/generation/types.d.ts +13 -0
  112. package/dist/src/agent/mcp/bundle-mcp-gateway.d.ts +1 -0
  113. package/dist/src/agent/mcp/bundle-mcp-gateway.js +2 -1
  114. package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +5 -1
  115. package/dist/src/agent/mcp/bundle-mcp-policy.js +11 -3
  116. package/dist/src/agent/mcp/bundle-mcp-runtime.js +3 -2
  117. package/dist/src/agent/mcp/bundle-mcp-types.d.ts +2 -1
  118. package/dist/src/agent/mcp/index.js +2 -2
  119. package/dist/src/agent/mcp/mcp-stdio-transport.js +1 -1
  120. package/dist/src/agent/mcp/mcp-transport.d.ts +2 -1
  121. package/dist/src/agent/mcp/mcp-transport.js +22 -4
  122. package/dist/src/agent/memory/compaction.js +19 -17
  123. package/dist/src/agent/memory/context-budget.js +2 -3
  124. package/dist/src/agent/memory/understanding/service.d.ts +1 -0
  125. package/dist/src/agent/memory/understanding/service.js +49 -20
  126. package/dist/src/agent/memory/understanding/types.d.ts +1 -0
  127. package/dist/src/agent/memory/user-context-coordinator.js +6 -0
  128. package/dist/src/agent/orchestration/agent-orchestrator.js +15 -1
  129. package/dist/src/agent/service/direct-turn-helpers.js +14 -5
  130. package/dist/src/agent/skills/index.d.ts +1 -1
  131. package/dist/src/agent/skills/index.js +2 -2
  132. package/dist/src/agent/skills/installer.d.ts +3 -10
  133. package/dist/src/agent/skills/installer.js +99 -156
  134. package/dist/src/agent/skills/marketplace/adapter.types.d.ts +3 -1
  135. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +30 -6
  136. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +21 -4
  137. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +7 -4
  138. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +3 -0
  139. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +7 -1
  140. package/dist/src/agent/skills/marketplace/search.d.ts +2 -2
  141. package/dist/src/agent/skills/marketplace/search.js +52 -21
  142. package/dist/src/agent/skills/skills-marketplace.d.ts +1 -1
  143. package/dist/src/agent/skills/skills-marketplace.js +2 -2
  144. package/dist/src/agent/skills/types.d.ts +0 -8
  145. package/dist/src/agent/tools/exec-command.d.ts +1 -0
  146. package/dist/src/agent/tools/exec-command.js +2 -1
  147. package/dist/src/agent/tools/factory.d.ts +1 -0
  148. package/dist/src/agent/tools/factory.js +17 -2
  149. package/dist/src/agent/tools/managed-job-tool.d.ts +1 -1
  150. package/dist/src/agent/tools/managed-job-tool.js +3 -2
  151. package/dist/src/agent/tools/skill-install-tool.d.ts +2 -2
  152. package/dist/src/agent/tools/skill-install-tool.js +8 -4
  153. package/dist/src/agent/tools/skills-marketplace-search-tool.js +3 -2
  154. package/dist/src/agent/tools/workflow-tool.d.ts +1 -0
  155. package/dist/src/agent/tools/workflow-tool.js +14 -4
  156. package/dist/src/agent-manifest/schema.d.ts +20 -0
  157. package/dist/src/agent-manifest/schema.js +6 -1
  158. package/dist/src/auth/oauth/xopc-cloud.js +163 -7
  159. package/dist/src/browser/providers/cloakbrowser.js +1 -1
  160. package/dist/src/cli/command-loaders.js +1 -0
  161. package/dist/src/cli/command-manifest.js +4 -0
  162. package/dist/src/cli/commands/doctor/checks/node-version.js +3 -3
  163. package/dist/src/cli/commands/doctor/checks/tool-runtimes.d.ts +2 -0
  164. package/dist/src/cli/commands/doctor/checks/tool-runtimes.js +36 -0
  165. package/dist/src/cli/commands/doctor/flow.js +2 -0
  166. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  167. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  168. package/dist/src/cli/commands/models.js +0 -1
  169. package/dist/src/cli/commands/onboard/model.d.ts +16 -1
  170. package/dist/src/cli/commands/onboard/model.js +65 -4
  171. package/dist/src/cli/commands/onboard.js +13 -1
  172. package/dist/src/cli/commands/runtime.d.ts +1 -0
  173. package/dist/src/cli/commands/runtime.js +77 -0
  174. package/dist/src/cli/commands/setup.js +15 -1
  175. package/dist/src/cli/commands/skills.js +7 -4
  176. package/dist/src/cli/commands/update.js +1 -1
  177. package/dist/src/config/index.js +2 -2
  178. package/dist/src/config/schema.d.ts +125 -0
  179. package/dist/src/config/schema.js +77 -2
  180. package/dist/src/config/voice.d.ts +6 -0
  181. package/dist/src/config/voice.js +17 -0
  182. package/dist/src/extensions/install.js +1 -1
  183. package/dist/src/extensions/types/providers.d.ts +4 -0
  184. package/dist/src/gateway/capability-presets-admin.d.ts +9 -0
  185. package/dist/src/gateway/capability-presets-admin.js +24 -6
  186. package/dist/src/gateway/chat-stream/mapper.js +8 -4
  187. package/dist/src/gateway/chat-stream/protocol.d.ts +10 -1
  188. package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -0
  189. package/dist/src/gateway/hono/routes/commands-skills.js +2 -1
  190. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  191. package/dist/src/gateway/hono/routes/local-apps.js +1 -1
  192. package/dist/src/gateway/hono/routes/models.js +2 -3
  193. package/dist/src/gateway/hono/routes/runtime-tools.d.ts +3 -0
  194. package/dist/src/gateway/hono/routes/runtime-tools.js +142 -0
  195. package/dist/src/gateway/hono/routes/understanding-sources.js +2 -1
  196. package/dist/src/gateway/hono/routes/update.js +2 -2
  197. package/dist/src/gateway/hono/routes/voice.js +43 -2
  198. package/dist/src/gateway/hono/routes/you.js +22 -25
  199. package/dist/src/gateway/image-generation-setup.d.ts +2 -3
  200. package/dist/src/gateway/image-generation-setup.js +39 -8
  201. package/dist/src/gateway/index.js +1 -1
  202. package/dist/src/gateway/run-loop.js +1 -1
  203. package/dist/src/gateway/service/marketplace-service.d.ts +1 -1
  204. package/dist/src/gateway/service/marketplace-service.js +2 -2
  205. package/dist/src/gateway/service/run-gateway-agent.js +21 -8
  206. package/dist/src/gateway/service.js +5 -5
  207. package/dist/src/infra/gateway-processes.js +1 -1
  208. package/dist/src/infra/update-global.js +1 -1
  209. package/dist/src/infra/update-restart.js +1 -1
  210. package/dist/src/infra/update-runner.js +2 -2
  211. package/dist/src/infra/update-startup.js +1 -1
  212. package/dist/src/providers/extension-stream-bridge.js +8 -7
  213. package/dist/src/providers/model-catalog-store.d.ts +24 -4
  214. package/dist/src/providers/model-catalog-store.js +11 -0
  215. package/dist/src/providers/model-registry.js +1 -1
  216. package/dist/src/providers/prompt-cache-payload.d.ts +13 -0
  217. package/dist/src/providers/prompt-cache-payload.js +110 -0
  218. package/dist/src/providers/register-runtime-providers.js +1 -1
  219. package/dist/src/providers/xopc-cloud-model-source.js +52 -6
  220. package/dist/src/runtime-tools/archive.d.ts +8 -0
  221. package/dist/src/runtime-tools/archive.js +99 -0
  222. package/dist/src/runtime-tools/bootstrap.d.ts +16 -0
  223. package/dist/src/runtime-tools/bootstrap.js +33 -0
  224. package/dist/src/runtime-tools/catalog.d.ts +19 -0
  225. package/dist/src/runtime-tools/catalog.js +59 -0
  226. package/dist/src/runtime-tools/command.d.ts +15 -0
  227. package/dist/src/runtime-tools/command.js +59 -0
  228. package/dist/src/runtime-tools/download-source.d.ts +24 -0
  229. package/dist/src/runtime-tools/download-source.js +125 -0
  230. package/dist/src/runtime-tools/downloader.d.ts +21 -0
  231. package/dist/src/runtime-tools/downloader.js +137 -0
  232. package/dist/src/runtime-tools/environment.d.ts +20 -0
  233. package/dist/src/runtime-tools/environment.js +113 -0
  234. package/dist/src/runtime-tools/errors.d.ts +10 -0
  235. package/dist/src/runtime-tools/errors.js +14 -0
  236. package/dist/src/runtime-tools/index.d.ts +7 -0
  237. package/dist/src/runtime-tools/index.js +7 -0
  238. package/dist/src/runtime-tools/install-lock.d.ts +1 -0
  239. package/dist/src/runtime-tools/install-lock.js +50 -0
  240. package/dist/src/runtime-tools/manager.d.ts +20 -0
  241. package/dist/src/runtime-tools/manager.js +641 -0
  242. package/dist/src/runtime-tools/manifest-store.d.ts +3 -0
  243. package/dist/src/runtime-tools/manifest-store.js +26 -0
  244. package/dist/src/runtime-tools/network.d.ts +9 -0
  245. package/dist/src/runtime-tools/network.js +41 -0
  246. package/dist/src/runtime-tools/offline-bundle.d.ts +16 -0
  247. package/dist/src/runtime-tools/offline-bundle.js +41 -0
  248. package/dist/src/runtime-tools/paths.d.ts +7 -0
  249. package/dist/src/runtime-tools/paths.js +22 -0
  250. package/dist/src/runtime-tools/probe.d.ts +7 -0
  251. package/dist/src/runtime-tools/probe.js +71 -0
  252. package/dist/src/runtime-tools/prune.d.ts +10 -0
  253. package/dist/src/runtime-tools/prune.js +93 -0
  254. package/dist/src/runtime-tools/types.d.ts +70 -0
  255. package/dist/src/runtime-tools/types.js +1 -0
  256. package/dist/src/share/share-zip.js +1 -1
  257. package/dist/src/storage/sqlite/migrations/113_memory_evidence_single_source.sql +42 -20
  258. package/dist/src/tasks/home-query-service.js +1 -5
  259. package/dist/src/tasks/index.js +2 -2
  260. package/dist/src/tasks/project-operating-view-service.d.ts +2 -1
  261. package/dist/src/tasks/project-operating-view-service.js +6 -4
  262. package/dist/src/tasks/task-dependency-service.d.ts +2 -1
  263. package/dist/src/tasks/task-dependency-service.js +15 -0
  264. package/dist/src/tui/backends/gateway-realtime-backend.js +1 -1
  265. package/dist/src/tunnel/frpc-binary.js +1 -1
  266. package/dist/src/user-context/domain.d.ts +2 -1
  267. package/dist/src/user-context/domain.js +12 -1
  268. package/dist/src/user-context/manual-understanding.js +8 -10
  269. package/dist/src/user-context/planner.js +1 -6
  270. package/dist/src/user-context/sources/activity-clustering.d.ts +5 -0
  271. package/dist/src/user-context/sources/activity-clustering.js +130 -0
  272. package/dist/src/user-context/sources/catalog.js +26 -0
  273. package/dist/src/user-context/sources/local-source-contract.d.ts +3 -0
  274. package/dist/src/user-context/sources/local-source-contract.js +15 -0
  275. package/dist/src/user-context/sources/repository.js +7 -1
  276. package/dist/src/user-context/sources/types.d.ts +7 -1
  277. package/dist/src/user-context/understanding.d.ts +15 -0
  278. package/dist/src/user-context/understanding.js +24 -0
  279. package/dist/src/voice/local/model-files.js +1 -1
  280. package/dist/src/voice/metadata/builtin.js +99 -32
  281. package/dist/src/voice/metadata/types.d.ts +3 -0
  282. package/dist/src/voice/stt/availability.js +4 -1
  283. package/dist/src/voice/stt/config-slice.d.ts +0 -2
  284. package/dist/src/voice/stt/config-slice.js +1 -6
  285. package/dist/src/voice/stt/factory.js +2 -2
  286. package/dist/src/voice/stt/index.d.ts +2 -3
  287. package/dist/src/voice/stt/list-providers.js +1 -1
  288. package/dist/src/voice/stt/providers/alibaba-transcription.d.ts +0 -19
  289. package/dist/src/voice/stt/providers/alibaba-transcription.js +59 -132
  290. package/dist/src/voice/stt/providers/index.d.ts +1 -0
  291. package/dist/src/voice/stt/providers/index.js +2 -1
  292. package/dist/src/voice/stt/providers/openai-transcription.d.ts +2 -2
  293. package/dist/src/voice/stt/providers/openai-transcription.js +4 -4
  294. package/dist/src/voice/stt/providers/xopc-cloud-transcription.d.ts +2 -0
  295. package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +49 -0
  296. package/dist/src/voice/stt/types.js +2 -2
  297. package/dist/src/voice/tts/providers/index.d.ts +1 -0
  298. package/dist/src/voice/tts/providers/index.js +2 -1
  299. package/dist/src/voice/tts/providers/xopc-cloud-speech.d.ts +2 -0
  300. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +113 -0
  301. package/dist/src/voice/tts/types.d.ts +1 -1
  302. package/dist/src/work-discovery/analyzer.js +9 -4
  303. package/dist/src/work-discovery/candidate-discovery.d.ts +1 -0
  304. package/dist/src/work-discovery/candidate-discovery.js +3 -3
  305. package/dist/src/work-discovery/index.js +2 -2
  306. package/dist/src/work-discovery/service.d.ts +2 -1
  307. package/dist/src/work-discovery/service.js +126 -37
  308. package/dist/src/work-discovery/types.d.ts +1 -0
  309. package/dist/src/workflows/service/workflow-run-service.js +8 -0
  310. package/dist/src/workflows/service/workflow-run-service.types.d.ts +1 -1
  311. package/package.json +2 -2
  312. package/dist/gateway/static/root/assets/agents-CXyivfqY.js +0 -68
  313. package/dist/gateway/static/root/assets/apps-page-DsE67BSO.js +0 -1
  314. package/dist/gateway/static/root/assets/automations-page-D0TVev47.js +0 -6
  315. package/dist/gateway/static/root/assets/browser-settings-page-DpZzq8j2.js +0 -8
  316. package/dist/gateway/static/root/assets/capabilities-settings-panel-B9Cmcuff.js +0 -7
  317. package/dist/gateway/static/root/assets/capability-presets-api-BB8t4Ja7.js +0 -1
  318. package/dist/gateway/static/root/assets/capability-presets-settings-panel-C_EpuQtk.js +0 -1
  319. package/dist/gateway/static/root/assets/channels-settings-CvzD5qSv.js +0 -1
  320. package/dist/gateway/static/root/assets/channels-status-swr-Cz7SAAkm.js +0 -1
  321. package/dist/gateway/static/root/assets/connectors-page-BKrm7tJ9.js +0 -2
  322. package/dist/gateway/static/root/assets/extension-settings-page-CsR7QOJo.js +0 -1
  323. package/dist/gateway/static/root/assets/home-page-C08Nen5T.js +0 -3
  324. package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +0 -1
  325. package/dist/gateway/static/root/assets/index-B-_CEvIX.js +0 -150
  326. package/dist/gateway/static/root/assets/index-D6e3tPL-.css +0 -1
  327. package/dist/gateway/static/root/assets/local-app-workbench-page-BQVC0tWq.js +0 -2
  328. package/dist/gateway/static/root/assets/logs-page-D6yvW-E4.js +0 -2
  329. package/dist/gateway/static/root/assets/messages-B4XqB8I6.js +0 -3
  330. package/dist/gateway/static/root/assets/notes-workbench-BVCwabjq.js +0 -4
  331. package/dist/gateway/static/root/assets/project-detail-page-CS4Ujor7.js +0 -1
  332. package/dist/gateway/static/root/assets/projects-page-DMtPC8c4.js +0 -1
  333. package/dist/gateway/static/root/assets/remote-access-hub-BpfHZT88.js +0 -1
  334. package/dist/gateway/static/root/assets/sessions-page-BZkyrJBM.js +0 -1
  335. package/dist/gateway/static/root/assets/settings-advanced-gate-DQlK0A4l.js +0 -1
  336. package/dist/gateway/static/root/assets/settings-page-C-LdINFj.js +0 -1
  337. package/dist/gateway/static/root/assets/setup-status-panel-HRG_lK4_.js +0 -1
  338. package/dist/gateway/static/root/assets/shares-settings-v_iLhxxa.js +0 -1
  339. package/dist/gateway/static/root/assets/skill-reload-api-S-bjtsXX.js +0 -1
  340. package/dist/gateway/static/root/assets/skills-page-BiNBfaX5.js +0 -2
  341. package/dist/gateway/static/root/assets/skills-page.utils-DlnGtvAH.js +0 -1
  342. package/dist/gateway/static/root/assets/system-settings-panel-Bv7GXFc6.js +0 -1
  343. package/dist/gateway/static/root/assets/task-detail-page-BhQcOpnx.js +0 -1
  344. package/dist/gateway/static/root/assets/user-context-page-PtcY7BoJ.js +0 -1
  345. package/dist/gateway/static/root/assets/voice-api-key-field-DnhJtC5l.js +0 -1
  346. package/dist/gateway/static/root/assets/work-discovery-page-C5Kwe_bc.js +0 -1
  347. package/dist/gateway/static/root/assets/workflows-page-Z_qzaohv.js +0 -11
  348. /package/dist/gateway/static/root/assets/{workflows-page-DLioOiRN.css → style-DLioOiRN.css} +0 -0
@@ -64,7 +64,7 @@ function parseModelRef(ref) {
64
64
  model: trimmed.slice(idx + 1).trim()
65
65
  };
66
66
  }
67
- var AgentModelRefSchema, AgentImageGenerationModelSchema, AgentTypedModelRoleSchema, AgentTypedModelRolesSchema, AgentModelsSchema, AgentsConfigSchema, BrowserCloudConfigSchema, BrowserExtensionConfigSchema, BrowserCloakConfigSchema, BrowserConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, SessionResetModeSchema, SessionResetConfigSchema, SessionResetByTypeSchema, SessionScopeSchema, SessionConfigSchema, ChannelsConfigSchema, SearchProviderEntrySchema, WebSearchConfigSchema, WebsiteBlocklistSchema, WebToolsConfigSchema, ToolsConfigSchema, GatewayAuthRateLimitSchema, GatewaySecuritySchema, GatewayTrustedProxySchema, GatewayAuthSchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayRemoteSchema, GatewayTlsSchema, GatewayModeSchema, HeartbeatConfigSchema, GatewayChannelConnectDeferModeSchema, TunnelConsentSchema, TunnelConfigSchema, WorkspaceImportConfigSchema, WorkspaceConfigSchema, GatewayBindModeSchema, GatewayWebchatConfigSchema, GatewayConfigSchema, ModelsDevConfigSchema, ModelCatalogConfigSchema, SttProviderConfigCatchallSchema, STTProviderConfigSchema, STTFallbackConfigSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, STTConfigSchema, TtsProviderConfigCatchallSchema, TTSProviderConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSEdgeConfigSchema, TTSSummarizationConfigSchema, TTSConfigSchema, VoiceRefinementConfigSchema, VoiceConfigSchema, MessagesConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProviderAuthConfigSchema, ProvidersConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, UpdateAutoConfigSchema, UpdateConfigSchema, CommandsConfigSchema, TuiConfigSchema, McpHttpUrlSchema, ConnectorSecretReferenceSchema, McpConfigScalarSchema, McpServerSchema, McpConfigSchema, ConnectorsConfigSchema, ExperimentalConfigSchema, ConfigSchema;
67
+ var AgentModelRefSchema, AgentImageGenerationModelSchema, AgentTypedModelRoleSchema, AgentTypedModelRolesSchema, AgentModelsSchema, AgentsConfigSchema, BrowserCloudConfigSchema, BrowserExtensionConfigSchema, BrowserCloakConfigSchema, BrowserConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, SessionResetModeSchema, SessionResetConfigSchema, SessionResetByTypeSchema, SessionScopeSchema, SessionConfigSchema, ChannelsConfigSchema, SearchProviderEntrySchema, WebSearchConfigSchema, WebsiteBlocklistSchema, WebToolsConfigSchema, ToolsConfigSchema, RuntimePreferenceSchema, RuntimeProvisionSchema, LanguageRuntimeSchema, DEFAULT_RUNTIME_TOOLS_CONFIG, RuntimeToolsConfigSchema, GatewayAuthRateLimitSchema, GatewaySecuritySchema, GatewayTrustedProxySchema, GatewayAuthSchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayRemoteSchema, GatewayTlsSchema, GatewayModeSchema, HeartbeatConfigSchema, GatewayChannelConnectDeferModeSchema, TunnelConsentSchema, TunnelConfigSchema, WorkspaceImportConfigSchema, WorkspaceConfigSchema, GatewayBindModeSchema, GatewayWebchatConfigSchema, GatewayConfigSchema, ModelsDevConfigSchema, ModelCatalogConfigSchema, SttProviderConfigCatchallSchema, STTProviderConfigSchema, STTFallbackConfigSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, STTConfigSchema, TtsProviderConfigCatchallSchema, TTSProviderConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSEdgeConfigSchema, TTSSummarizationConfigSchema, TTSConfigSchema, VoiceRefinementConfigSchema, VoiceConfigSchema, MessagesConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProviderAuthConfigSchema, ProvidersConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, UpdateAutoConfigSchema, UpdateConfigSchema, CommandsConfigSchema, TuiConfigSchema, McpHttpUrlSchema, ConnectorSecretReferenceSchema, McpConfigScalarSchema, McpServerSchema, McpConfigSchema, ConnectorsConfigSchema, ExperimentalConfigSchema, ConfigSchema;
68
68
  var init_schema = __esmMin((() => {
69
69
  init_schema$1();
70
70
  init_preset_chain();
@@ -306,6 +306,79 @@ var init_schema = __esmMin((() => {
306
306
  maxResults: 5,
307
307
  providers: []
308
308
  } } });
309
+ RuntimePreferenceSchema = z.enum([
310
+ "managed-only",
311
+ "managed-first",
312
+ "system-first",
313
+ "system-only"
314
+ ]);
315
+ RuntimeProvisionSchema = z.enum([
316
+ "eager",
317
+ "on-demand",
318
+ "disabled"
319
+ ]);
320
+ LanguageRuntimeSchema = z.object({
321
+ enabled: z.boolean().default(true),
322
+ version: z.string().min(1).optional(),
323
+ preference: RuntimePreferenceSchema.default("managed-first"),
324
+ provision: RuntimeProvisionSchema.default("on-demand")
325
+ });
326
+ DEFAULT_RUNTIME_TOOLS_CONFIG = {
327
+ enabled: true,
328
+ node: {
329
+ enabled: true,
330
+ preference: "managed-first",
331
+ provision: "eager"
332
+ },
333
+ python: {
334
+ enabled: true,
335
+ preference: "managed-first",
336
+ provision: "on-demand"
337
+ },
338
+ uv: { enabled: true },
339
+ download: {
340
+ source: "auto",
341
+ gatewayBaseUrl: "https://xopc.ai/api/runtime/v1",
342
+ timeoutMs: 6e5
343
+ },
344
+ retention: { keepVersions: 2 }
345
+ };
346
+ RuntimeToolsConfigSchema = z.object({
347
+ enabled: z.boolean().default(true),
348
+ node: LanguageRuntimeSchema.default({
349
+ enabled: true,
350
+ preference: "managed-first",
351
+ provision: "eager"
352
+ }),
353
+ python: LanguageRuntimeSchema.default({
354
+ enabled: true,
355
+ preference: "managed-first",
356
+ provision: "on-demand"
357
+ }),
358
+ uv: z.object({
359
+ enabled: z.boolean().default(true),
360
+ version: z.string().min(1).optional()
361
+ }).default({ enabled: true }),
362
+ download: z.object({
363
+ bundleDir: z.string().min(1).optional(),
364
+ proxy: z.string().url().optional(),
365
+ source: z.enum([
366
+ "auto",
367
+ "website-only",
368
+ "direct-only"
369
+ ]).default("auto"),
370
+ gatewayBaseUrl: z.string().url().default("https://xopc.ai/api/runtime/v1"),
371
+ timeoutMs: z.number().int().min(1e4).max(18e5).default(6e5)
372
+ }).strict().default({
373
+ source: "auto",
374
+ gatewayBaseUrl: "https://xopc.ai/api/runtime/v1",
375
+ timeoutMs: 6e5
376
+ }),
377
+ retention: z.object({
378
+ keepVersions: z.number().int().min(1).max(5).default(2),
379
+ maxCacheBytes: z.number().int().positive().optional()
380
+ }).default({ keepVersions: 2 })
381
+ }).default(DEFAULT_RUNTIME_TOOLS_CONFIG);
309
382
  GatewayAuthRateLimitSchema = z.object({
310
383
  enabled: z.boolean().default(true),
311
384
  maxAttempts: z.number().int().min(1).default(5),
@@ -917,6 +990,7 @@ workDiscoveryOnboarding: z.boolean().default(true) }).strict().default({ workDis
917
990
  tunnel: TunnelConfigSchema.optional(),
918
991
  workspace: WorkspaceConfigSchema,
919
992
  tools: ToolsConfigSchema,
993
+ runtimeTools: RuntimeToolsConfigSchema,
920
994
  mcp: McpConfigSchema,
921
995
  connectors: ConnectorsConfigSchema,
922
996
  experimental: ExperimentalConfigSchema,
@@ -1032,6 +1106,7 @@ workDiscoveryOnboarding: z.boolean().default(true) }).strict().default({ workDis
1032
1106
  maxResults: 5,
1033
1107
  providers: []
1034
1108
  } } },
1109
+ runtimeTools: DEFAULT_RUNTIME_TOOLS_CONFIG,
1035
1110
  experimental: { workDiscoveryOnboarding: true },
1036
1111
  extensions: {
1037
1112
  allow: [],
@@ -1055,4 +1130,4 @@ workDiscoveryOnboarding: z.boolean().default(true) }).strict().default({ workDis
1055
1130
  }));
1056
1131
  //#endregion
1057
1132
  init_schema();
1058
- export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigSchema, ConnectorsConfigSchema, ExperimentalConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GatewayWebchatConfigSchema, HeartbeatConfigSchema, McpConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelCatalogConfigSchema, ModelsDevConfigSchema, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, VoiceConfigSchema, VoiceRefinementConfigSchema, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WeixinAccountConfigSchema, WeixinConfigSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, getAgentDefaultImageGenerationModelConfig, getAgentDefaultImageModelConfig, getAgentDefaultModelRef, init_schema, parseModelRef };
1133
+ export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigSchema, ConnectorsConfigSchema, ExperimentalConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GatewayWebchatConfigSchema, HeartbeatConfigSchema, McpConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelCatalogConfigSchema, ModelsDevConfigSchema, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, RuntimeToolsConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, VoiceConfigSchema, VoiceRefinementConfigSchema, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WeixinAccountConfigSchema, WeixinConfigSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, getAgentDefaultImageGenerationModelConfig, getAgentDefaultImageModelConfig, getAgentDefaultModelRef, init_schema, parseModelRef };
@@ -2,6 +2,12 @@ export interface VoiceModel {
2
2
  id: string;
3
3
  name: string;
4
4
  description?: string;
5
+ tts?: {
6
+ speed: boolean;
7
+ instructions: boolean;
8
+ outputFormats: string[];
9
+ defaultVoice?: string;
10
+ };
5
11
  }
6
12
  export interface VoiceModelsConfig {
7
13
  stt: Record<string, VoiceModel[]>;
@@ -1,6 +1,8 @@
1
+ import { getModelCatalogStore, init_model_catalog_store } from "../providers/model-catalog-store.js";
1
2
  import { listVoiceProviderMetadata } from "../voice/metadata/registry.js";
2
3
  import "../voice/metadata/index.js";
3
4
  //#region src/config/voice.ts
5
+ init_model_catalog_store();
4
6
  function toVoiceModels(values) {
5
7
  return (values ?? []).map((value) => ({
6
8
  id: value.id,
@@ -22,6 +24,21 @@ function getVoiceModelsConfig() {
22
24
  config.tts[metadata.id] = toVoiceModels(metadata.models);
23
25
  config.ttsVoices[metadata.id] = toVoiceModels(metadata.voices);
24
26
  }
27
+ const cloudModels = getModelCatalogStore().getSource("xopc-cloud")?.models ?? [];
28
+ config.stt["xopc-cloud"] = cloudModels.filter((model) => model.availability === "available" && model.kind === "stt").map((model) => ({
29
+ id: model.id,
30
+ name: model.name
31
+ }));
32
+ config.tts["xopc-cloud"] = cloudModels.filter((model) => model.availability === "available" && model.kind === "tts").map((model) => ({
33
+ id: model.id,
34
+ name: model.name,
35
+ ...model.tts ? { tts: {
36
+ speed: model.tts.speed,
37
+ instructions: model.tts.instructions,
38
+ outputFormats: [...model.tts.outputFormats],
39
+ ...model.tts.defaultVoice ? { defaultVoice: model.tts.defaultVoice } : {}
40
+ } } : {}
41
+ }));
25
42
  return config;
26
43
  }
27
44
  function getTTSProviders() {
@@ -8,8 +8,8 @@ import { collectExtensionPackageDependencyIssues } from "./package-contract.js";
8
8
  import { dirname, isAbsolute, join, resolve, sep } from "path";
9
9
  import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "fs";
10
10
  import { execSync } from "child_process";
11
- import { tmpdir } from "os";
12
11
  import AdmZip from "adm-zip";
12
+ import { tmpdir } from "os";
13
13
  //#region src/extensions/install.ts
14
14
  /**
15
15
  * Extension Installation Module
@@ -131,6 +131,8 @@ export interface ProviderStreamChunk {
131
131
  usage?: {
132
132
  input: number;
133
133
  output: number;
134
+ cacheRead?: number;
135
+ cacheWrite?: number;
134
136
  total?: number;
135
137
  };
136
138
  /** Error message */
@@ -155,6 +157,8 @@ export interface ProviderResponse {
155
157
  usage?: {
156
158
  input: number;
157
159
  output: number;
160
+ cacheRead?: number;
161
+ cacheWrite?: number;
158
162
  total: number;
159
163
  };
160
164
  /** Finish reason */
@@ -1,4 +1,5 @@
1
1
  import { type CapabilityPreset } from '../agent-manifest/schema.js';
2
+ import { resolveCapabilityPresetLayer } from '../agent-manifest/resolver.js';
2
3
  import type { Config } from '../config/schema.js';
3
4
  export type CapabilityPresetAdminResult<T> = {
4
5
  ok: true;
@@ -15,6 +16,8 @@ export type CapabilityPresetAgentUsage = {
15
16
  };
16
17
  export type CapabilityPresetRow = CapabilityPreset & {
17
18
  usage: CapabilityPresetAgentUsage[];
19
+ inherited: ReturnType<typeof resolveCapabilityPresetLayer>['patch'];
20
+ inheritedSources: Record<string, string>;
18
21
  };
19
22
  export type CapabilityPresetsListResponse = {
20
23
  defaultPresetId: string;
@@ -25,6 +28,12 @@ export type CapabilityPresetsListResponse = {
25
28
  extends: string[];
26
29
  }>;
27
30
  builtinToolIds: string[];
31
+ mcpServerIds: string[];
32
+ workflows: Array<{
33
+ id: string;
34
+ title: string;
35
+ description: string;
36
+ }>;
28
37
  };
29
38
  export type CapabilityPresetPreviewDiff = {
30
39
  path: string;
@@ -1,7 +1,9 @@
1
1
  import { CapabilityPresetSchema, init_schema } from "../agent-manifest/schema.js";
2
2
  import { init_preset_chain, linearizePresetIds } from "../agent-manifest/preset-chain.js";
3
- import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
3
+ import { resolveCapabilityPresetLayer, resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
4
+ import { normalizeConfiguredMcpServers } from "../config/mcp-config-normalize.js";
4
5
  import { GATEWAY_BUILTIN_TOOL_IDS } from "./agent-builtin-tools.js";
6
+ import { createWorkflowCatalog } from "../agent/workflow/catalog.js";
5
7
  //#region src/gateway/capability-presets-admin.ts
6
8
  init_schema();
7
9
  init_preset_chain();
@@ -129,20 +131,36 @@ function nextConfigWithPresets(cfg, presets) {
129
131
  };
130
132
  }
131
133
  function listCapabilityPresets(cfg) {
132
- const presets = Object.values(presetMap(cfg)).map((preset) => ({
133
- ...preset,
134
- usage: agentUsage(cfg, preset.id)
135
- })).sort((a, b) => a.id.localeCompare(b.id));
134
+ const presets = Object.values(presetMap(cfg)).map((preset) => {
135
+ const inherited = resolveCapabilityPresetLayer({
136
+ presetIds: preset.extends,
137
+ presets: cfg.agents.capabilityPresets,
138
+ defaultPresetId: preset.id === cfg.agents.defaultPreset ? "__none__" : cfg.agents.defaultPreset
139
+ });
140
+ return {
141
+ ...preset,
142
+ usage: agentUsage(cfg, preset.id),
143
+ inherited: inherited.patch,
144
+ inheritedSources: inherited.sources
145
+ };
146
+ }).sort((a, b) => a.id.localeCompare(b.id));
136
147
  const agents = cfg.agents.list.map((agent) => ({
137
148
  id: agent.id,
138
149
  ...agent.identity.name ? { name: agent.identity.name } : {},
139
150
  extends: [...agent.extends ?? []]
140
151
  })).sort((a, b) => a.id.localeCompare(b.id));
152
+ const workflows = createWorkflowCatalog().list().map((entry) => ({
153
+ id: entry.name,
154
+ title: entry.title,
155
+ description: entry.description
156
+ }));
141
157
  return {
142
158
  defaultPresetId: cfg.agents.defaultPreset,
143
159
  presets,
144
160
  agents,
145
- builtinToolIds: [...GATEWAY_BUILTIN_TOOL_IDS]
161
+ builtinToolIds: [...GATEWAY_BUILTIN_TOOL_IDS],
162
+ mcpServerIds: Object.keys(normalizeConfiguredMcpServers(cfg.mcp?.servers)).sort(),
163
+ workflows
146
164
  };
147
165
  }
148
166
  function prepareCreateCapabilityPreset(cfg, body) {
@@ -109,7 +109,8 @@ var ChatStreamMapper = class {
109
109
  purpose
110
110
  }] : [];
111
111
  }) : [] })];
112
- case "memory_captured": return [this.make("memory_captured", { records: Array.isArray(event.records) ? event.records.flatMap((raw) => {
112
+ case "memory_captured":
113
+ case "memory_candidate": return [this.make(event.type, { records: Array.isArray(event.records) ? event.records.flatMap((raw) => {
113
114
  if (!raw || typeof raw !== "object") return [];
114
115
  const record = raw;
115
116
  const id = typeof record.id === "string" ? record.id : "";
@@ -480,11 +481,14 @@ function extractUsage(message) {
480
481
  const usage = message.usage;
481
482
  if (!usage || typeof usage !== "object") return void 0;
482
483
  const rec = usage;
484
+ const cost = asRecord(rec.cost);
483
485
  return {
484
- inputTokens: typeof rec.inputTokens === "number" ? rec.inputTokens : void 0,
485
- outputTokens: typeof rec.outputTokens === "number" ? rec.outputTokens : void 0,
486
+ inputTokens: typeof rec.input === "number" ? rec.input : typeof rec.inputTokens === "number" ? rec.inputTokens : void 0,
487
+ outputTokens: typeof rec.output === "number" ? rec.output : typeof rec.outputTokens === "number" ? rec.outputTokens : void 0,
488
+ cacheReadTokens: typeof rec.cacheRead === "number" ? rec.cacheRead : typeof rec.cacheReadTokens === "number" ? rec.cacheReadTokens : void 0,
489
+ cacheWriteTokens: typeof rec.cacheWrite === "number" ? rec.cacheWrite : typeof rec.cacheWriteTokens === "number" ? rec.cacheWriteTokens : void 0,
486
490
  totalTokens: typeof rec.totalTokens === "number" ? rec.totalTokens : void 0,
487
- cost: typeof rec.cost === "number" ? rec.cost : void 0
491
+ cost: typeof rec.cost === "number" ? rec.cost : typeof cost?.total === "number" ? cost.total : void 0
488
492
  };
489
493
  }
490
494
  function extractDetails(value) {
@@ -169,6 +169,8 @@ export type AssistantMessageEndEvent = ChatStreamEnvelope<'assistant_message_end
169
169
  usage?: {
170
170
  inputTokens?: number;
171
171
  outputTokens?: number;
172
+ cacheReadTokens?: number;
173
+ cacheWriteTokens?: number;
172
174
  totalTokens?: number;
173
175
  cost?: number;
174
176
  };
@@ -217,6 +219,13 @@ export type MemoryCapturedEvent = ChatStreamEnvelope<'memory_captured', {
217
219
  kind: string;
218
220
  }>;
219
221
  }>;
222
+ export type MemoryCandidateEvent = ChatStreamEnvelope<'memory_candidate', {
223
+ records: Array<{
224
+ id: string;
225
+ content: string;
226
+ kind: string;
227
+ }>;
228
+ }>;
220
229
  export type RunEndEvent = ChatStreamEnvelope<'run_end', {
221
230
  status: ChatStreamStatus;
222
231
  summary?: string;
@@ -228,4 +237,4 @@ export type StreamErrorEvent = ChatStreamEnvelope<'error', {
228
237
  recoverable?: boolean;
229
238
  petFeedback: PetFeedback;
230
239
  }>;
231
- export type ChatStreamEvent = RunStartEvent | UserMessageEvent | UserTranscriptEvent | AssistantMessageStartEvent | AssistantDeltaEvent | ThinkingDeltaEvent | ThinkingEndEvent | ToolStartEvent | ToolUpdateEvent | ToolEndEvent | CommandStartedEvent | CommandOutputDeltaEvent | CommandCompletedEvent | PatchAppliedEvent | TurnPlanUpdatedEvent | TaskPlanUpdatedEvent | TurnDiffEvent | ReviewStartEvent | ReviewDeltaEvent | ReviewEndEvent | ReviewEvent | AssistantMessageEndEvent | ProgressEvent | CompactionEvent | TtsAudioEvent | ClarifyRequestEvent | MemoryConsentRequiredEvent | MemoryCapturedEvent | RunEndEvent | StreamErrorEvent;
240
+ export type ChatStreamEvent = RunStartEvent | UserMessageEvent | UserTranscriptEvent | AssistantMessageStartEvent | AssistantDeltaEvent | ThinkingDeltaEvent | ThinkingEndEvent | ToolStartEvent | ToolUpdateEvent | ToolEndEvent | CommandStartedEvent | CommandOutputDeltaEvent | CommandCompletedEvent | PatchAppliedEvent | TurnPlanUpdatedEvent | TaskPlanUpdatedEvent | TurnDiffEvent | ReviewStartEvent | ReviewDeltaEvent | ReviewEndEvent | ReviewEvent | AssistantMessageEndEvent | ProgressEvent | CompactionEvent | TtsAudioEvent | ClarifyRequestEvent | MemoryConsentRequiredEvent | MemoryCapturedEvent | MemoryCandidateEvent | RunEndEvent | StreamErrorEvent;
@@ -191,6 +191,7 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
191
191
  maxTurns?: number;
192
192
  timeoutMs?: number;
193
193
  maxToolFailuresPerTurn?: number;
194
+ promptCacheRetention?: "none" | "short" | "long";
194
195
  };
195
196
  locks?: string[];
196
197
  }>;
@@ -207,8 +207,9 @@ function registerCommandsSkillsRoutes(authenticated, deps) {
207
207
  });
208
208
  authenticated.get("/api/skills/marketplace/categories", async (c) => {
209
209
  const provider = parseMarketplaceProviderQuery(c.req.query("provider"));
210
+ const locale = c.req.query("locale") ?? c.req.header("X-XOPC-Locale") ?? c.req.header("Accept-Language")?.split(",")[0];
210
211
  try {
211
- const payload = await service.marketplace.fetchSkillsCategories(provider);
212
+ const payload = await service.marketplace.fetchSkillsCategories(provider, locale);
212
213
  return c.json({
213
214
  ok: true,
214
215
  payload
@@ -3,6 +3,14 @@ function startsWithAny(path, prefixes) {
3
3
  return prefixes.some((prefix) => path === prefix || path.startsWith(`${prefix}/`));
4
4
  }
5
5
  const AUTHENTICATED_LAZY_ROUTE_BUNDLES = [
6
+ {
7
+ id: "runtime-tools",
8
+ match: (path) => startsWithAny(path, ["/api/runtime-tools"]),
9
+ load: async () => {
10
+ const { registerRuntimeToolsRoutes } = await import("./runtime-tools.js");
11
+ return { register: registerRuntimeToolsRoutes };
12
+ }
13
+ },
6
14
  {
7
15
  id: "media",
8
16
  match: (path) => startsWithAny(path, ["/api/media"]),
@@ -1,6 +1,6 @@
1
1
  import { readLocalAppAcceptanceConfig } from "../../../local-apps/acceptance.js";
2
- import { LOCAL_APP_RUNTIME_BRIDGE_HASH, injectLocalAppRuntimeBridge } from "../../../local-apps/preview-runtime-bridge.js";
3
2
  import { extensionAssetMimeType } from "../lib/extension-assets.js";
3
+ import { LOCAL_APP_RUNTIME_BRIDGE_HASH, injectLocalAppRuntimeBridge } from "../../../local-apps/preview-runtime-bridge.js";
4
4
  import { relative, resolve } from "node:path";
5
5
  import { existsSync, readFileSync, statSync } from "node:fs";
6
6
  //#region src/gateway/hono/routes/local-apps.ts
@@ -465,8 +465,7 @@ function registerModelsRoutes(authenticated, deps) {
465
465
  const prepared = prepareImageGenerationSetup(service.currentConfig, c.req.param("agentId"), {
466
466
  providerId: body.providerId,
467
467
  ...typeof body.modelId === "string" ? { modelId: body.modelId } : {},
468
- ...body.region === "cn" || body.region === "intl" ? { region: body.region } : {},
469
- ...typeof body.baseUrl === "string" ? { baseUrl: body.baseUrl } : {}
468
+ ...body.providerConfig && typeof body.providerConfig === "object" && !Array.isArray(body.providerConfig) ? { providerConfig: body.providerConfig } : {}
470
469
  });
471
470
  if (prepared.ok === false) return c.json({
472
471
  ok: false,
@@ -484,7 +483,7 @@ function registerModelsRoutes(authenticated, deps) {
484
483
  const verification = usesApiKey && suppliedKey ? await verifyImageGenerationCredential({
485
484
  providerId: prepared.providerId,
486
485
  apiKey: suppliedKey,
487
- baseUrl: typeof body.baseUrl === "string" ? body.baseUrl : void 0
486
+ baseUrl: typeof body.providerConfig?.baseUrl === "string" ? body.providerConfig.baseUrl : void 0
488
487
  }) : {
489
488
  verified: false,
490
489
  supported: false
@@ -0,0 +1,3 @@
1
+ import type { Hono } from 'hono';
2
+ import type { AuthenticatedRouteDeps } from './deps.js';
3
+ export declare function registerRuntimeToolsRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void;
@@ -0,0 +1,142 @@
1
+ import { init_paths_state, resolveStateDir } from "../../../config/paths-state.js";
2
+ import { RuntimeToolsConfigSchema, init_schema } from "../../../config/schema.js";
3
+ import { ManagedRuntimeManager } from "../../../runtime-tools/manager.js";
4
+ import { createGatewayRouteLogger } from "../lib/route-logger.js";
5
+ import { pruneRuntimeTools } from "../../../runtime-tools/prune.js";
6
+ import { streamSSE } from "hono/streaming";
7
+ //#region src/gateway/hono/routes/runtime-tools.ts
8
+ init_paths_state();
9
+ init_schema();
10
+ const log = createGatewayRouteLogger("RuntimeTools");
11
+ const RUNTIMES = new Set([
12
+ "node",
13
+ "uv",
14
+ "python"
15
+ ]);
16
+ function parseRuntime(value) {
17
+ return RUNTIMES.has(value) ? value : null;
18
+ }
19
+ function runtimeManager(config) {
20
+ return new ManagedRuntimeManager({
21
+ stateDir: resolveStateDir(),
22
+ config: config.runtimeTools
23
+ });
24
+ }
25
+ async function readJson(c) {
26
+ try {
27
+ return await c.req.json();
28
+ } catch {
29
+ return {};
30
+ }
31
+ }
32
+ function registerRuntimeToolsRoutes(authenticated, deps) {
33
+ const { service, strictRateLimitMiddleware } = deps;
34
+ authenticated.get("/api/runtime-tools", async (c) => {
35
+ const statuses = await runtimeManager(service.currentConfig).statusAll();
36
+ return c.json({
37
+ ok: true,
38
+ payload: {
39
+ config: service.currentConfig.runtimeTools,
40
+ statuses
41
+ }
42
+ });
43
+ });
44
+ authenticated.patch("/api/runtime-tools/config", strictRateLimitMiddleware, async (c) => {
45
+ const body = await readJson(c);
46
+ const parsed = RuntimeToolsConfigSchema.safeParse(body);
47
+ if (!parsed.success) return c.json({
48
+ ok: false,
49
+ error: "invalid-config",
50
+ message: parsed.error.issues[0]?.message ?? "Invalid runtime tools config"
51
+ }, 400);
52
+ const config = structuredClone(service.currentConfig);
53
+ config.runtimeTools = parsed.data;
54
+ const result = await service.saveConfig(config);
55
+ if (!result.saved) return c.json({
56
+ ok: false,
57
+ error: "save-failed",
58
+ message: result.error
59
+ }, 500);
60
+ service.emit("runtime-tools.updated", { config: parsed.data });
61
+ return c.json({
62
+ ok: true,
63
+ payload: { config: parsed.data }
64
+ });
65
+ });
66
+ authenticated.post("/api/runtime-tools/prune", strictRateLimitMiddleware, async (c) => {
67
+ const payload = await pruneRuntimeTools({
68
+ stateDir: resolveStateDir(),
69
+ config: service.currentConfig.runtimeTools
70
+ });
71
+ return c.json({
72
+ ok: true,
73
+ payload
74
+ });
75
+ });
76
+ const registerOperation = (action) => {
77
+ authenticated.post(`/api/runtime-tools/:runtime/${action}/stream`, strictRateLimitMiddleware, async (c) => {
78
+ const runtime = parseRuntime(c.req.param("runtime"));
79
+ if (!runtime) return c.json({
80
+ ok: false,
81
+ error: "invalid-runtime"
82
+ }, 400);
83
+ const body = await readJson(c);
84
+ const version = typeof body.version === "string" && body.version.trim() ? body.version.trim() : void 0;
85
+ return streamSSE(c, async (stream) => {
86
+ const manager = runtimeManager(service.currentConfig);
87
+ let writes = Promise.resolve();
88
+ const onProgress = (event) => {
89
+ writes = writes.then(async () => {
90
+ try {
91
+ await stream.writeSSE({
92
+ event: "progress",
93
+ data: JSON.stringify(event)
94
+ });
95
+ } catch {}
96
+ });
97
+ };
98
+ manager.on("progress", onProgress);
99
+ try {
100
+ const resolved = action === "repair" ? await manager.repair(runtime) : await manager.install(runtime, version);
101
+ await writes;
102
+ await stream.writeSSE({
103
+ event: "result",
104
+ data: JSON.stringify({
105
+ ok: true,
106
+ payload: resolved
107
+ })
108
+ });
109
+ service.emit("runtime-tools.updated", {
110
+ runtime,
111
+ action,
112
+ resolved
113
+ });
114
+ } catch (error) {
115
+ const message = error instanceof Error ? error.message : String(error);
116
+ log.warn({
117
+ err: error,
118
+ runtime,
119
+ action
120
+ }, `Runtime ${action} failed: ${message}`);
121
+ await writes;
122
+ try {
123
+ await stream.writeSSE({
124
+ event: "result",
125
+ data: JSON.stringify({
126
+ ok: false,
127
+ error: `${action}-failed`,
128
+ message
129
+ })
130
+ });
131
+ } catch {}
132
+ } finally {
133
+ manager.off("progress", onProgress);
134
+ }
135
+ });
136
+ });
137
+ };
138
+ registerOperation("install");
139
+ registerOperation("repair");
140
+ }
141
+ //#endregion
142
+ export { registerRuntimeToolsRoutes };
@@ -150,7 +150,8 @@ function registerUnderstandingSourceRoutes(authenticated, deps) {
150
150
  error: "No understanding source items were provided"
151
151
  }, 400);
152
152
  try {
153
- const result = await service.importUnderstandingSources(items, c.req.raw.signal, stringField(body, "workDiscoveryRunId") || void 0);
153
+ const checkpoints = body && typeof body === "object" && body.sourceCheckpoints && typeof body.sourceCheckpoints === "object" ? body.sourceCheckpoints : void 0;
154
+ const result = await service.importUnderstandingSources(items, c.req.raw.signal, stringField(body, "workDiscoveryRunId") || void 0, checkpoints);
154
155
  return c.json({
155
156
  ok: true,
156
157
  ...result
@@ -1,11 +1,11 @@
1
1
  import { PACKAGE_VERSION, init_package_version } from "../../../package-version.js";
2
2
  import { loadConfig } from "../../../config/loader.js";
3
3
  import "../../../config/index.js";
4
- import { normalizeUpdateChannel } from "../../../infra/update-channels.js";
5
4
  import { acquireUpdateLock } from "../../../infra/update-lock.js";
6
- import { formatUpdateApiResult, runGatewayUpdateWithPostSteps } from "../../../infra/update-runner.js";
5
+ import { normalizeUpdateChannel } from "../../../infra/update-channels.js";
7
6
  import { getUpdateAvailable, runGatewayUpdateCheck } from "../../../infra/update-startup.js";
8
7
  import { createGatewayRouteLogger } from "../lib/route-logger.js";
8
+ import { formatUpdateApiResult, runGatewayUpdateWithPostSteps } from "../../../infra/update-runner.js";
9
9
  import { streamSSE } from "hono/streaming";
10
10
  //#region src/gateway/hono/routes/update.ts
11
11
  init_package_version();
@@ -1,7 +1,7 @@
1
1
  import { getDefaultModelSync, init_providers, resolveModel } from "../../../providers/index.js";
2
2
  import { completeWithResolvedCredentials } from "../../../providers/model-call.js";
3
3
  import { resolveTtsProviderConfigSlice } from "../../../voice/tts/config-slice.js";
4
- import { isTTSAvailable } from "../../../voice/tts/factory.js";
4
+ import { isTTSAvailable, resolveSpeechProvider } from "../../../voice/tts/factory.js";
5
5
  import { speak } from "../../../voice/tts/speak-core.js";
6
6
  import { mergeTtsConfigFromAppConfig } from "../../../voice/tts/merge-config.js";
7
7
  import { getLocalVoiceRuntimeClient } from "../../../voice/local/runtime-client.js";
@@ -144,6 +144,47 @@ function registerVoiceRoutes(authenticated, deps) {
144
144
  payload
145
145
  });
146
146
  });
147
+ authenticated.get("/api/voice/tts-voices", async (c) => {
148
+ const provider = c.req.query("provider")?.trim() ?? "";
149
+ const model = c.req.query("model")?.trim() ?? "";
150
+ if (!provider || !model || provider.length > 100 || model.length > 200) return c.json({
151
+ ok: false,
152
+ error: { message: "provider and model are required" }
153
+ }, 400);
154
+ const config = service.currentConfig;
155
+ const baseConfig = mergeTtsConfigFromAppConfig(config.messages?.tts);
156
+ const resolved = resolveSpeechProvider(provider, {
157
+ ...baseConfig,
158
+ provider,
159
+ providers: {
160
+ ...baseConfig.providers ?? {},
161
+ [provider]: {
162
+ ...baseConfig.providers?.[provider] ?? {},
163
+ model
164
+ }
165
+ }
166
+ });
167
+ if (!resolved?.plugin.listVoices) return c.json({
168
+ ok: true,
169
+ payload: { voices: [] }
170
+ });
171
+ try {
172
+ const voices = await resolved.plugin.listVoices({
173
+ cfg: config,
174
+ providerConfig: resolved.providerConfig
175
+ });
176
+ return c.json({
177
+ ok: true,
178
+ payload: { voices }
179
+ });
180
+ } catch (error) {
181
+ const message = error instanceof Error ? error.message : String(error);
182
+ return c.json({
183
+ ok: false,
184
+ error: { message: `Voice discovery failed: ${message}` }
185
+ }, 502);
186
+ }
187
+ });
147
188
  /**
148
189
  * GET /api/voice/stt-providers
149
190
  *
@@ -440,7 +481,7 @@ function registerVoiceRoutes(authenticated, deps) {
440
481
  const startedAt = Date.now();
441
482
  try {
442
483
  const result = await transcribe(input.audioBuffer, sttConfig, {
443
- language: input.language || (sttConfig.provider === "alibaba" ? "zh" : void 0),
484
+ language: input.language,
444
485
  mime: input.mimeType,
445
486
  fileName: input.fileName,
446
487
  signal: c.req.raw.signal