@xopcai/xopc 0.0.325 → 0.0.330

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 (385) hide show
  1. package/README.md +4 -3
  2. package/README.zh-CN.md +4 -3
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CxfXpPWs.js → agent-avatar-dicebear-BDG0hI-J.js} +1 -1
  6. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-ArM6Sm9S.js +1 -0
  7. package/dist/gateway/static/root/assets/agent-plugin-dialog-BX_Bhre1.js +1 -0
  8. package/dist/gateway/static/root/assets/agents-BiQqpMw0.js +70 -0
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-p7fZB4dT.js → app-management-settings-panel-DgttzUCG.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-C-clVcfp.js → appearance-settings-CHpyWV8Z.js} +1 -1
  11. package/dist/gateway/static/root/assets/apps-page-BhfYQcm8.js +1 -0
  12. package/dist/gateway/static/root/assets/{archive-plugin-Xm6xChUX.js → archive-plugin-B7Q7Oeo7.js} +1 -1
  13. package/dist/gateway/static/root/assets/{attachment-load-Di8kuG4L.js → attachment-load-BYwqQ8qN.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automations-page-GUZgDhKj.js → automations-page-CsvAtTNd.js} +1 -1
  15. package/dist/gateway/static/root/assets/automations-workspace-DMH_1Ped.js +7 -0
  16. package/dist/gateway/static/root/assets/{binary-plugins-OCrDjC9O.js → binary-plugins-DdgWCI-M.js} +1 -1
  17. package/dist/gateway/static/root/assets/{block-editor-m9tqvu7x.js → block-editor-DyOagNnn.js} +3 -3
  18. package/dist/gateway/static/root/assets/{browser-automation-inputs-DSWXq9lI.js → browser-automation-inputs-CwF8OQFN.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-automations-page-DuOaridE.js → browser-automations-page-D_EQjiiu.js} +2 -2
  20. package/dist/gateway/static/root/assets/browser-settings-page-BE6691Jz.js +3 -0
  21. package/dist/gateway/static/root/assets/capabilities-page-MweWNrC1.js +2 -0
  22. package/dist/gateway/static/root/assets/capabilities-settings-panel-CdSWkh89.js +8 -0
  23. package/dist/gateway/static/root/assets/capability-header-actions-C5F2GNE9.js +1 -0
  24. package/dist/gateway/static/root/assets/capability-icon-BYm2-nS-.js +1 -0
  25. package/dist/gateway/static/root/assets/channels-NGfwR3He.js +1 -0
  26. package/dist/gateway/static/root/assets/{chat-terminal-dock-BfnVh8oo.js → chat-terminal-dock-C6tl9Rfw.js} +2 -2
  27. package/dist/gateway/static/root/assets/computer-settings-page-C0MsVw4l.js +1 -0
  28. package/dist/gateway/static/root/assets/connector-service-page-DsF60pPs.js +1 -0
  29. package/dist/gateway/static/root/assets/connectors-page-BE8NdQcR.js +2 -0
  30. package/dist/gateway/static/root/assets/{date-picker-CtDyij_x.js → date-picker-CELKKqYN.js} +1 -1
  31. package/dist/gateway/static/root/assets/dependency-picker-BcEwCnI5.js +1 -0
  32. package/dist/gateway/static/root/assets/{desktop-pet-BsIYCAkG.js → desktop-pet-Ww7Gm8-x.js} +1 -1
  33. package/dist/gateway/static/root/assets/desktop-pet-settings-D-dbAxGu.js +1 -0
  34. package/dist/gateway/static/root/assets/device-pairing-wizard-DsYY6szg.js +1 -0
  35. package/dist/gateway/static/root/assets/directory-picker-path-field-CVmuCRyO.js +1 -0
  36. package/dist/gateway/static/root/assets/ellipsis-0k4rZLoy.js +1 -0
  37. package/dist/gateway/static/root/assets/{extension-debug-page-Ct9pABNW.js → extension-debug-page-UUHNJj-d.js} +1 -1
  38. package/dist/gateway/static/root/assets/{extension-page-BktsR4hj.js → extension-page-BvL452mX.js} +1 -1
  39. package/dist/gateway/static/root/assets/{extension-settings-page-BQJc-vXH.js → extension-settings-page-CrNnUSOs.js} +1 -1
  40. package/dist/gateway/static/root/assets/external-link-DjqjBmc3.js +1 -0
  41. package/dist/gateway/static/root/assets/eye-CABVeTq0.js +1 -0
  42. package/dist/gateway/static/root/assets/folder-open-CyzJ19I9.js +1 -0
  43. package/dist/gateway/static/root/assets/{gateway-config-swr-CoQVulMd.js → gateway-config-swr-DMm1vU51.js} +1 -1
  44. package/dist/gateway/static/root/assets/gateway-settings-DrHhtZqv.js +1 -0
  45. package/dist/gateway/static/root/assets/{gateway-startup-retry-B5GJ-CQV.js → gateway-startup-retry-Ck6tj6yE.js} +1 -1
  46. package/dist/gateway/static/root/assets/globe-DSSGFWFn.js +1 -0
  47. package/dist/gateway/static/root/assets/home-page-YgI6jfGA.js +1 -0
  48. package/dist/gateway/static/root/assets/{image-generation-api-DvWDkbk1.js → image-generation-api-BOh6j0BF.js} +1 -1
  49. package/dist/gateway/static/root/assets/imports-page-BuqdzA7h.js +1 -0
  50. package/dist/gateway/static/root/assets/index-DJmO2VAY.css +1 -0
  51. package/dist/gateway/static/root/assets/index-vCIBfJp7.js +121 -0
  52. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-ctJLm8TP.js → keyboard-shortcuts-settings-D9L7IdUg.js} +1 -1
  53. package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +1 -0
  54. package/dist/gateway/static/root/assets/loader-circle-CifKLtgG.js +1 -0
  55. package/dist/gateway/static/root/assets/local-app-workbench-page-DO8uUtos.js +1 -0
  56. package/dist/gateway/static/root/assets/{local-apps-page-BxC_LTqq.js → local-apps-page-BEvyufm7.js} +1 -1
  57. package/dist/gateway/static/root/assets/locale-store-DAOwT3Zp.js +1 -0
  58. package/dist/gateway/static/root/assets/logs-page-Jev1m9sS.js +2 -0
  59. package/dist/gateway/static/root/assets/management-settings-41i7B1RO.js +1 -0
  60. package/dist/gateway/static/root/assets/{markdown-view-Dft8ASFD.js → markdown-view-nL4xzvI8.js} +2 -2
  61. package/dist/gateway/static/root/assets/{media-plugins-ni5zJ4Ok.js → media-plugins-dHbcqMan.js} +1 -1
  62. package/dist/gateway/static/root/assets/message-square-plus-XP0tGdlV.js +1 -0
  63. package/dist/gateway/static/root/assets/messages-BZbt9x1y.js +3 -0
  64. package/dist/gateway/static/root/assets/minimize-2-DtOGrlpo.js +1 -0
  65. package/dist/gateway/static/root/assets/note-detail-panel-DonP0E6Q.js +5 -0
  66. package/dist/gateway/static/root/assets/note-image-lightbox-1qg2v-9j.js +1 -0
  67. package/dist/gateway/static/root/assets/notes-page-CYHMeVKo.js +8 -0
  68. package/dist/gateway/static/root/assets/page-context-capture-button-BKsMcPOy.js +1 -0
  69. package/dist/gateway/static/root/assets/pencil-DmIY3Oa-.js +1 -0
  70. package/dist/gateway/static/root/assets/preview-open-alternatives-Du18QgWc.js +1 -0
  71. package/dist/gateway/static/root/assets/{product-open-page-DQctU8z3.js → product-open-page-IY1QL6s0.js} +1 -1
  72. package/dist/gateway/static/root/assets/project-detail-page-Bpw9mxfV.js +1 -0
  73. package/dist/gateway/static/root/assets/projects-page-BdYbDNUn.js +1 -0
  74. package/dist/gateway/static/root/assets/{registry-api-DWWO6ajd.js → registry-api-DCFXWBOt.js} +1 -1
  75. package/dist/gateway/static/root/assets/remote-access-hub-CLhbz3TF.js +1 -0
  76. package/dist/gateway/static/root/assets/rotate-cw-LIg3Am9S.js +1 -0
  77. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-xhOSYfiX.js → runtime-tools-settings-panel-CuTFmXyj.js} +2 -2
  78. package/dist/gateway/static/root/assets/scenes-page-XwK2IEmr.js +2 -0
  79. package/dist/gateway/static/root/assets/{schema-form-z8IeSdBp.js → schema-form-qWQii8IU.js} +1 -1
  80. package/dist/gateway/static/root/assets/search-DA7gz22f.js +1 -0
  81. package/dist/gateway/static/root/assets/sessions-page-4-QoiDES.js +1 -0
  82. package/dist/gateway/static/root/assets/settings-advanced-gate-BggQVM1y.js +1 -0
  83. package/dist/gateway/static/root/assets/settings-form-section-B0ZBr0L9.js +1 -0
  84. package/dist/gateway/static/root/assets/{settings-page-Br9no5e4.js → settings-page-DpII4NO3.js} +1 -1
  85. package/dist/gateway/static/root/assets/settings-page-layout-X1x-2Cp9.js +1 -0
  86. package/dist/gateway/static/root/assets/setup-status-panel-HPpC7EE0.js +1 -0
  87. package/dist/gateway/static/root/assets/{share-preview-page-CE0SER59.js → share-preview-page-B2CGYZHc.js} +1 -1
  88. package/dist/gateway/static/root/assets/shares-settings-DhVCRYGP.js +1 -0
  89. package/dist/gateway/static/root/assets/skill-api-_ddww47C.js +1 -0
  90. package/dist/gateway/static/root/assets/skill-reload-api-XPZkWJJe.js +1 -0
  91. package/dist/gateway/static/root/assets/skills-page-uF7DkJMC.js +2 -0
  92. package/dist/gateway/static/root/assets/system-settings-panel-25ABVt7H.js +1 -0
  93. package/dist/gateway/static/root/assets/task-detail-page-gepxhO4j.js +1 -0
  94. package/dist/gateway/static/root/assets/tunnel-api-CwQGBI_4.js +1 -0
  95. package/dist/gateway/static/root/assets/use-autosave-CL3wytbs.js +1 -0
  96. package/dist/gateway/static/root/assets/user-model-page-DldQW9Wh.js +2 -0
  97. package/dist/gateway/static/root/assets/{voice-api-key-field-By6Lgbse.js → voice-api-key-field-zjAzQrx4.js} +1 -1
  98. package/dist/gateway/static/root/assets/voice-config-api-DvzQ-128.js +1 -0
  99. package/dist/gateway/static/root/assets/{work-discovery-overlay-DdhgIlyf.js → work-discovery-overlay-MaPPjWwl.js} +1 -1
  100. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BOJYQaxX.js → workflow-run-setup-panel-C3dQN1fE.js} +2 -2
  101. package/dist/gateway/static/root/assets/workflows-page-B9lnTU3U.js +6 -0
  102. package/dist/gateway/static/root/connector-icons/SOURCES.md +1 -0
  103. package/dist/gateway/static/root/connector-icons/wecom.svg +9 -0
  104. package/dist/gateway/static/root/index.html +20 -8
  105. package/dist/package.js +1 -1
  106. package/dist/src/agent/agent-instance-gateway.d.ts +2 -2
  107. package/dist/src/agent/agent-manager.d.ts +5 -2
  108. package/dist/src/agent/agent-manager.js +77 -23
  109. package/dist/src/agent/background-review/coordinator.d.ts +2 -7
  110. package/dist/src/agent/background-review/coordinator.js +17 -34
  111. package/dist/src/agent/background-review/prompts.d.ts +13 -5
  112. package/dist/src/agent/background-review/prompts.js +17 -12
  113. package/dist/src/agent/background-review/run-background-review.d.ts +3 -3
  114. package/dist/src/agent/background-review/run-background-review.js +59 -44
  115. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -1
  116. package/dist/src/agent/capabilities/definitions.d.ts +3 -2
  117. package/dist/src/agent/capabilities/definitions.js +3 -2
  118. package/dist/src/agent/context/execution-context.js +5 -2
  119. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  120. package/dist/src/agent/image/tool-model-config.js +1 -1
  121. package/dist/src/agent/mcp/index.js +1 -1
  122. package/dist/src/agent/mcp/mcp-transport.js +2 -2
  123. package/dist/src/agent/mcp/oauth/index.js +1 -1
  124. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +2 -2
  125. package/dist/src/agent/mcp/oauth/mcp-oauth-provider.js +1 -1
  126. package/dist/src/agent/orchestration/agent-orchestrator.js +1 -1
  127. package/dist/src/agent/orchestration/llm-turn-retry.js +2 -15
  128. package/dist/src/agent/prompt/sections/tooling.js +3 -0
  129. package/dist/src/agent/service/direct-turn-helpers.js +1 -1
  130. package/dist/src/agent/service.d.ts +1 -0
  131. package/dist/src/agent/service.js +5 -2
  132. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +12 -0
  133. package/dist/src/agent/tasks/task-judge-service.js +1 -1
  134. package/dist/src/agent/tools/factory.js +3 -2
  135. package/dist/src/agent/tools/index.d.ts +1 -0
  136. package/dist/src/agent/tools/index.js +2 -1
  137. package/dist/src/agent/tools/user-context-tool.js +29 -4
  138. package/dist/src/agent/tools/workflow-manage-tool.d.ts +2 -0
  139. package/dist/src/agent/tools/workflow-manage-tool.js +225 -0
  140. package/dist/src/agent/tools/xopc-use-tool.js +1 -1
  141. package/dist/src/agent-catalog/capabilities.js +2 -2
  142. package/dist/src/auth/credentials.js +1 -1
  143. package/dist/src/auth/oauth-provider-lock.js +1 -1
  144. package/dist/src/auth/sync-provider-auth.js +1 -1
  145. package/dist/src/automations/capabilities/drafts.js +1 -1
  146. package/dist/src/automations/domain/types.d.ts +7 -1
  147. package/dist/src/automations/draft/automation-draft-service.js +13 -4
  148. package/dist/src/automations/service/action-executor.d.ts +2 -2
  149. package/dist/src/automations/service/action-executor.js +36 -13
  150. package/dist/src/automations/service/automation-service.js +2 -1
  151. package/dist/src/bootstrap/application-state.js +1 -1
  152. package/dist/src/browser/automations/index.js +2 -2
  153. package/dist/src/browser/automations/service.d.ts +11 -2
  154. package/dist/src/browser/automations/service.js +19 -5
  155. package/dist/src/capabilities/readiness/from-config.d.ts +0 -1
  156. package/dist/src/capabilities/readiness/from-config.js +2 -4
  157. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  158. package/dist/src/capabilities/runtime/product.js +1 -1
  159. package/dist/src/chat-commands/agent-edit.js +1 -1
  160. package/dist/src/chat-commands/builtins/config.js +1 -1
  161. package/dist/src/chat-previews/service.js +1 -2
  162. package/dist/src/cli/commands/agent.js +1 -1
  163. package/dist/src/cli/commands/agents.js +1 -1
  164. package/dist/src/cli/commands/auth.js +1 -1
  165. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  166. package/dist/src/cli/commands/extension-agent-plugin.js +2 -1
  167. package/dist/src/cli/commands/models.js +1 -1
  168. package/dist/src/cli/commands/onboard/model.js +3 -3
  169. package/dist/src/cli/commands/providers.js +1 -1
  170. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  171. package/dist/src/config/index.js +4 -4
  172. package/dist/src/config/loader.js +2 -2
  173. package/dist/src/config/models-json.js +1 -1
  174. package/dist/src/config/schema.js +5 -5
  175. package/dist/src/connectors/china-catalog.js +5 -1
  176. package/dist/src/connectors/connected-source-ingestion.js +6 -1
  177. package/dist/src/connectors/connected-source-observations.d.ts +10 -0
  178. package/dist/src/connectors/connected-source-observations.js +80 -0
  179. package/dist/src/connectors/connected-source-understanding.js +198 -8
  180. package/dist/src/connectors/learning-coordinator.js +63 -26
  181. package/dist/src/connectors/learning-recipes.js +19 -2
  182. package/dist/src/discussions/audio-repair.d.ts +1 -1
  183. package/dist/src/discussions/live-worker.js +1 -3
  184. package/dist/src/discussions/recording.js +2 -2
  185. package/dist/src/discussions/sealer.js +2 -2
  186. package/dist/src/extensions/agent-plugins/auth.d.ts +2 -2
  187. package/dist/src/extensions/agent-plugins/auth.js +6 -35
  188. package/dist/src/extensions/agent-plugins/credentials.d.ts +2 -0
  189. package/dist/src/extensions/agent-plugins/credentials.js +37 -0
  190. package/dist/src/extensions/agent-plugins/plugin-oauth-scope.d.ts +1 -0
  191. package/dist/src/extensions/agent-plugins/plugin-oauth-scope.js +8 -0
  192. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  193. package/dist/src/extensions/bundled-extension-activation.d.ts +3 -1
  194. package/dist/src/extensions/bundled-extension-activation.js +5 -8
  195. package/dist/src/extensions/marketplace.d.ts +4 -0
  196. package/dist/src/extensions/marketplace.js +4 -0
  197. package/dist/src/gateway/agents-admin.js +2 -2
  198. package/dist/src/gateway/file-path-classifier.js +1 -1
  199. package/dist/src/gateway/file-space-service.d.ts +9 -2
  200. package/dist/src/gateway/gateway-workflow-host.types.d.ts +1 -0
  201. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  202. package/dist/src/gateway/hono/routes/agent-plugins.js +2 -1
  203. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +27 -5
  204. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
  205. package/dist/src/gateway/hono/routes/config.js +0 -3
  206. package/dist/src/gateway/hono/routes/connectors.js +3 -10
  207. package/dist/src/gateway/hono/routes/context-sources.d.ts +0 -1
  208. package/dist/src/gateway/hono/routes/context-sources.js +12 -15
  209. package/dist/src/gateway/hono/routes/notes.js +2 -2
  210. package/dist/src/gateway/hono/routes/projects.js +2 -2
  211. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  212. package/dist/src/gateway/hono/routes/status.js +0 -1
  213. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  214. package/dist/src/gateway/hono/routes/user-model.js +21 -3
  215. package/dist/src/gateway/hono/routes/voice.js +0 -67
  216. package/dist/src/gateway/hono/routes/workflows.js +1 -23
  217. package/dist/src/gateway/image-generation-setup.js +2 -2
  218. package/dist/src/gateway/lock.js +1 -1
  219. package/dist/src/gateway/service/config-coordinator.d.ts +4 -4
  220. package/dist/src/gateway/service/config-coordinator.js +6 -6
  221. package/dist/src/gateway/service/marketplace-service.js +8 -6
  222. package/dist/src/gateway/service.d.ts +1 -1
  223. package/dist/src/gateway/service.js +20 -18
  224. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  225. package/dist/src/home-intelligence/generator.js +7 -6
  226. package/dist/src/home-intelligence/host.js +1 -1
  227. package/dist/src/local-apps/service.js +1 -1
  228. package/dist/src/media-understanding/types.d.ts +1 -1
  229. package/dist/src/memory-maintenance/service.d.ts +1 -0
  230. package/dist/src/memory-maintenance/service.js +13 -0
  231. package/dist/src/migrations/retired-local-stt.d.ts +2 -0
  232. package/dist/src/migrations/retired-local-stt.js +52 -0
  233. package/dist/src/migrations/runner.js +2 -1
  234. package/dist/src/providers/model-catalog-persistence.js +1 -1
  235. package/dist/src/providers/model-response.d.ts +2 -0
  236. package/dist/src/providers/model-response.js +24 -1
  237. package/dist/src/session/turn-outcome-projector.js +1 -1
  238. package/dist/src/storage/sqlite/connection.js +1 -0
  239. package/dist/src/storage/sqlite/migrations/207_user_model_policy_contract.sql +121 -0
  240. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  241. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  242. package/dist/src/storage/sqlite/schema.js +1 -1
  243. package/dist/src/storage/sqlite/sql-assets.d.ts +1 -0
  244. package/dist/src/storage/sqlite/sql-assets.js +7 -4
  245. package/dist/src/tasks/capabilities/read.js +2 -2
  246. package/dist/src/tasks/index.js +2 -2
  247. package/dist/src/tasks/task-application-service.d.ts +1 -0
  248. package/dist/src/tasks/task-application-service.js +4 -2
  249. package/dist/src/tasks/task-context-assembler.js +10 -1
  250. package/dist/src/tasks/task-run-dispatcher.d.ts +1 -0
  251. package/dist/src/tasks/task-run-dispatcher.js +15 -2
  252. package/dist/src/tui/backends/embedded-backend.js +6 -3
  253. package/dist/src/tui/tui-commands.js +2 -2
  254. package/dist/src/tui/tui-startup-resources.js +1 -1
  255. package/dist/src/tui/tui.js +3 -3
  256. package/dist/src/user-context/sources/consent-repository.d.ts +7 -0
  257. package/dist/src/user-context/sources/consent-repository.js +81 -0
  258. package/dist/src/user-context/sources/index.d.ts +1 -0
  259. package/dist/src/user-context/sources/index.js +2 -1
  260. package/dist/src/user-context/sources/repository.js +73 -1
  261. package/dist/src/user-context/sources/types.d.ts +16 -0
  262. package/dist/src/user-model/action-rule-suggestions.d.ts +11 -0
  263. package/dist/src/user-model/action-rule-suggestions.js +29 -0
  264. package/dist/src/user-model/bootstrap.js +1 -1
  265. package/dist/src/user-model/capture/executor.js +83 -7
  266. package/dist/src/user-model/capture/semantic.d.ts +5 -2
  267. package/dist/src/user-model/capture/semantic.js +27 -11
  268. package/dist/src/user-model/domain.d.ts +26 -0
  269. package/dist/src/user-model/domain.js +40 -2
  270. package/dist/src/user-model/index.d.ts +2 -0
  271. package/dist/src/user-model/index.js +6 -4
  272. package/dist/src/user-model/maintenance-policy.d.ts +1 -0
  273. package/dist/src/user-model/maintenance-policy.js +13 -0
  274. package/dist/src/user-model/observation-repository.d.ts +48 -0
  275. package/dist/src/user-model/observation-repository.js +100 -0
  276. package/dist/src/user-model/repository.d.ts +5 -0
  277. package/dist/src/user-model/repository.js +121 -10
  278. package/dist/src/user-model/usage-policy.d.ts +5 -2
  279. package/dist/src/user-model/usage-policy.js +2 -2
  280. package/dist/src/voice/audio/normalize.d.ts +1 -1
  281. package/dist/src/voice/audio/normalize.js +1 -1
  282. package/dist/src/voice/{local → audio}/wav.js +1 -1
  283. package/dist/src/voice/language-profile.js +10 -16
  284. package/dist/src/voice/metadata/builtin.js +0 -46
  285. package/dist/src/voice/platform-streams.js +15 -7
  286. package/dist/src/voice/realtime/agentEngine.js +19 -3
  287. package/dist/src/voice/realtime/pcmFrameBuffer.js +2 -1
  288. package/dist/src/voice/realtime/persona-context.js +1 -1
  289. package/dist/src/voice/realtime/playback-echo.js +16 -1
  290. package/dist/src/voice/stt/providers/index.d.ts +0 -1
  291. package/dist/src/voice/stt/providers/index.js +1 -2
  292. package/dist/src/voice/stt/types.js +3 -4
  293. package/dist/src/voice/tts/merge-config.js +1 -1
  294. package/dist/src/voice/tts/speech-registry.d.ts +1 -1
  295. package/dist/src/voice/tts/types.d.ts +1 -1
  296. package/dist/src/work-discovery/analyzer.js +6 -5
  297. package/dist/src/work-discovery/service.js +2 -2
  298. package/dist/src/work-discovery/types.d.ts +1 -1
  299. package/dist/src/workflows/authoring/index.d.ts +1 -0
  300. package/dist/src/workflows/authoring/index.js +2 -1
  301. package/dist/src/workflows/authoring/workflow-draft-defaults.d.ts +3 -0
  302. package/dist/src/workflows/authoring/workflow-draft-defaults.js +63 -0
  303. package/dist/src/workflows/context/workflow-context.js +5 -1
  304. package/dist/src/workflows/domain/index.js +1 -1
  305. package/dist/src/workflows/engine/workflow-engine.js +1 -1
  306. package/dist/src/workflows/index.js +4 -4
  307. package/dist/src/workflows/service/workflow-run-service.d.ts +1 -0
  308. package/dist/src/workflows/service/workflow-run-service.js +39 -7
  309. package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
  310. package/package.json +12 -16
  311. package/skills/engineering/workflow-authoring/SKILL.md +32 -0
  312. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CDHe8gJf.js +0 -1
  313. package/dist/gateway/static/root/assets/agent-plugin-dialog-DMv-udoZ.js +0 -1
  314. package/dist/gateway/static/root/assets/agents-D_xOAXgj.js +0 -1
  315. package/dist/gateway/static/root/assets/apps-page-Dz2g7eAN.js +0 -1
  316. package/dist/gateway/static/root/assets/automations-workspace-BUZhG9aJ.js +0 -7
  317. package/dist/gateway/static/root/assets/browser-settings-page-D2_PgHep.js +0 -3
  318. package/dist/gateway/static/root/assets/capabilities-settings-panel-7Y_pJqyt.js +0 -8
  319. package/dist/gateway/static/root/assets/channels-settings-B-Igy1ro.js +0 -1
  320. package/dist/gateway/static/root/assets/computer-settings-page-aRG2lU4w.js +0 -1
  321. package/dist/gateway/static/root/assets/connector-service-page-B5EhnfJH.js +0 -1
  322. package/dist/gateway/static/root/assets/connectors-page-7HfRt1LW.js +0 -2
  323. package/dist/gateway/static/root/assets/dependency-picker-z6ouWxmz.js +0 -1
  324. package/dist/gateway/static/root/assets/desktop-pet-settings-z-0aQ5ct.js +0 -1
  325. package/dist/gateway/static/root/assets/device-pairing-wizard-DlmhQvY5.js +0 -1
  326. package/dist/gateway/static/root/assets/gateway-settings-BfDVlvy6.js +0 -1
  327. package/dist/gateway/static/root/assets/home-page-CI_eQTPL.js +0 -1
  328. package/dist/gateway/static/root/assets/imports-page-DFpQfHVU.js +0 -1
  329. package/dist/gateway/static/root/assets/index-19rMUT3d.js +0 -121
  330. package/dist/gateway/static/root/assets/index-BKL5tg2f.css +0 -1
  331. package/dist/gateway/static/root/assets/local-app-workbench-page-C9kaP3Dy.js +0 -1
  332. package/dist/gateway/static/root/assets/locale-store-BPZR8x9b.js +0 -1
  333. package/dist/gateway/static/root/assets/logs-page-Ok5SpG-G.js +0 -2
  334. package/dist/gateway/static/root/assets/management-settings-aOzRaQHM.js +0 -1
  335. package/dist/gateway/static/root/assets/messages-kFWhF6_t.js +0 -3
  336. package/dist/gateway/static/root/assets/note-detail-panel-C9OEltN9.js +0 -5
  337. package/dist/gateway/static/root/assets/notes-page-Dj9rMgdi.js +0 -8
  338. package/dist/gateway/static/root/assets/page-context-capture-button-BJA3d8vU.js +0 -1
  339. package/dist/gateway/static/root/assets/page-tabs-Dyc3wKkl.js +0 -1
  340. package/dist/gateway/static/root/assets/preview-open-alternatives-tIOIQbNX.js +0 -1
  341. package/dist/gateway/static/root/assets/project-detail-page-Dy-EwZcc.js +0 -1
  342. package/dist/gateway/static/root/assets/projects-page-JaGKa6rM.js +0 -1
  343. package/dist/gateway/static/root/assets/remote-access-hub-Cb8-nd60.js +0 -1
  344. package/dist/gateway/static/root/assets/scenes-page-ClBkFdRY.js +0 -2
  345. package/dist/gateway/static/root/assets/sessions-page-BYW5l_nY.js +0 -1
  346. package/dist/gateway/static/root/assets/settings-advanced-gate-CDNwmXuH.js +0 -1
  347. package/dist/gateway/static/root/assets/settings-form-section-BXTJAser.js +0 -1
  348. package/dist/gateway/static/root/assets/settings-page-layout-D6745w0p.js +0 -1
  349. package/dist/gateway/static/root/assets/setup-status-panel-D2N9764S.js +0 -1
  350. package/dist/gateway/static/root/assets/shares-settings-Dk3_QOKQ.js +0 -1
  351. package/dist/gateway/static/root/assets/skill-reload-api-CPt61fEv.js +0 -1
  352. package/dist/gateway/static/root/assets/skills-page-Db6PB2C6.js +0 -2
  353. package/dist/gateway/static/root/assets/skills-page.utils-DrtW5FBy.js +0 -1
  354. package/dist/gateway/static/root/assets/system-settings-panel-CuY1Zh5s.js +0 -1
  355. package/dist/gateway/static/root/assets/task-detail-page-o7RiDUMi.js +0 -1
  356. package/dist/gateway/static/root/assets/tunnel-api-PGHDgvWb.js +0 -1
  357. package/dist/gateway/static/root/assets/use-autosave-B55oBQUt.js +0 -1
  358. package/dist/gateway/static/root/assets/user-model-page-DspelwAa.js +0 -2
  359. package/dist/gateway/static/root/assets/voice-config-api-BaxITrwZ.js +0 -1
  360. package/dist/gateway/static/root/assets/workflows-page-6ObD0IQZ.js +0 -6
  361. package/dist/src/voice/local/model-files.d.ts +0 -14
  362. package/dist/src/voice/local/model-files.js +0 -92
  363. package/dist/src/voice/local/model-manager.d.ts +0 -18
  364. package/dist/src/voice/local/model-manager.js +0 -133
  365. package/dist/src/voice/local/models.d.ts +0 -28
  366. package/dist/src/voice/local/models.js +0 -99
  367. package/dist/src/voice/local/provider-switch.d.ts +0 -4
  368. package/dist/src/voice/local/provider-switch.js +0 -36
  369. package/dist/src/voice/local/runtime-client.d.ts +0 -28
  370. package/dist/src/voice/local/runtime-client.js +0 -183
  371. package/dist/src/voice/local/runtime-worker.d.ts +0 -1
  372. package/dist/src/voice/local/runtime-worker.js +0 -271
  373. package/dist/src/voice/stt/providers/local-transcription.d.ts +0 -2
  374. package/dist/src/voice/stt/providers/local-transcription.js +0 -53
  375. package/dist/src/workflows/draft/index.d.ts +0 -3
  376. package/dist/src/workflows/draft/index.js +0 -3
  377. package/dist/src/workflows/draft/workflow-draft-prompt.d.ts +0 -22
  378. package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -54
  379. package/dist/src/workflows/draft/workflow-draft-service.d.ts +0 -12
  380. package/dist/src/workflows/draft/workflow-draft-service.js +0 -125
  381. package/dist/src/workflows/draft/workflow-draft-validator.d.ts +0 -4
  382. package/dist/src/workflows/draft/workflow-draft-validator.js +0 -123
  383. package/dist/src/workflows/draft/workflow-draft.types.d.ts +0 -44
  384. package/dist/src/workflows/draft/workflow-draft.types.js +0 -1
  385. /package/dist/src/voice/{local → audio}/wav.d.ts +0 -0
@@ -2,8 +2,10 @@ import { init_transaction, runSqliteWriteTransaction } from "../../../storage/sq
2
2
  import { createCollaborationRule, getCollaborationRule, init_collaboration_rule_repository, listCollaborationRules, setCollaborationRuleStatus } from "../../../storage/sqlite/collaboration-rule-repository.js";
3
3
  import { KnowledgeReviewConflictError, deleteKnowledgeItem, getKnowledgeItem, listKnowledgeItems, reviewKnowledgeItem, searchKnowledgeItems } from "../../../knowledge-memory/repository.js";
4
4
  import "../../../knowledge-memory/index.js";
5
- import { createPriorityWindow, createUserGoal, listPriorityWindows, listUserGoals, setUserGoalStatus, updatePriorityWindow, updateUserGoal } from "../../../user-model/goals.js";
6
5
  import { deleteUserAssertion, getAssertionSlot, getUserAssertion, listUserAssertionSources, listUserAssertions, reconcileAssertion, setAssertionStatus } from "../../../user-model/repository.js";
6
+ import { listActionRuleSuggestions } from "../../../user-model/action-rule-suggestions.js";
7
+ import { createPriorityWindow, createUserGoal, listPriorityWindows, listUserGoals, setUserGoalStatus, updatePriorityWindow, updateUserGoal } from "../../../user-model/goals.js";
8
+ import { listUserAssertionEdges, listUserModelObservations } from "../../../user-model/observation-repository.js";
7
9
  import { applyUserProfilePatch, getUserProfileSnapshot } from "../../../user-model/profile.js";
8
10
  import { bootstrapUserModel } from "../../../user-model/bootstrap.js";
9
11
  import { canUseAssertion } from "../../../user-model/usage-policy.js";
@@ -11,6 +13,7 @@ import "../../../user-model/index.js";
11
13
  import { listMemoryMaintenanceRuns } from "../../../memory-maintenance/service.js";
12
14
  import "../../../memory-maintenance/index.js";
13
15
  import { getExecutionContextAudit, recordExecutionContextFeedback } from "../../../agent/context/audit.js";
16
+ import { getActiveUnderstandingConsent } from "../../../user-context/sources/consent-repository.js";
14
17
  import { listUnderstandingSourceGrants } from "../../../user-context/sources/repository.js";
15
18
  import { userInfo } from "node:os";
16
19
  //#region src/gateway/hono/routes/user-model.ts
@@ -122,7 +125,10 @@ function assertionView(assertion, sources = listUserAssertionSources([assertion.
122
125
  subject: slot.subject,
123
126
  scope: slot.scope,
124
127
  sources,
125
- usable: canUseAssertion(assertion)
128
+ usable: canUseAssertion(assertion, Date.now(), {
129
+ use: "answer",
130
+ ...assertion.allowedAgentIds?.[0] ? { agentId: assertion.allowedAgentIds[0] } : {}
131
+ })
126
132
  };
127
133
  }
128
134
  function registerUserModelRoutes(authenticated, deps) {
@@ -153,13 +159,17 @@ function registerUserModelRoutes(authenticated, deps) {
153
159
  adapterId: source.adapterId,
154
160
  category: source.category,
155
161
  displayName: source.displayName,
156
- ...source.lastCollectedAt ? { lastCollectedAt: source.lastCollectedAt } : {}
162
+ ...source.lastCollectedAt ? { lastCollectedAt: source.lastCollectedAt } : {},
163
+ consent: getActiveUnderstandingConsent(source.id)
157
164
  }));
158
165
  return c.json({
159
166
  assertions,
167
+ assertionEdges: listUserAssertionEdges(assertions.map((item) => item.id)),
168
+ observations: listUserModelObservations({ limit: 500 }),
160
169
  goals,
161
170
  priorities,
162
171
  rules: listCollaborationRules(),
172
+ ruleSuggestions: listActionRuleSuggestions(),
163
173
  knowledge,
164
174
  maintenance: { lastRun: listMemoryMaintenanceRuns(1)[0] ?? null },
165
175
  profile,
@@ -311,9 +321,17 @@ function registerUserModelRoutes(authenticated, deps) {
311
321
  volatility: current.volatility,
312
322
  sensitivity: current.sensitivity,
313
323
  disclosurePolicy: current.disclosurePolicy,
324
+ domain: current.domain,
325
+ layer: current.layer,
326
+ sensitivityCategories: current.sensitivityCategories,
327
+ purposeIds: current.purposeIds,
328
+ allowedUses: current.allowedUses,
329
+ allowedAgentIds: current.allowedAgentIds,
330
+ deleteAfter: current.deleteAfter,
314
331
  applicability: current.applicability,
315
332
  ...current.validFrom === void 0 ? {} : { validFrom: current.validFrom },
316
333
  ...current.validTo === void 0 ? {} : { validTo: current.validTo },
334
+ ...current.reviewAt === void 0 ? {} : { reviewAt: current.reviewAt },
317
335
  observedAt: Date.now(),
318
336
  createdBy: "user",
319
337
  correctionOfAssertionId: current.id
@@ -2,8 +2,6 @@ import { voiceSelectionSchema } from "../../../../packages/realtime-protocol/src
2
2
  import { createVoiceSessionRequestSchema, init_voice } from "../../../../packages/realtime-protocol/src/voice.js";
3
3
  import { getDefaultModelSync, init_providers, resolveModel } from "../../../providers/index.js";
4
4
  import { completeWithResolvedCredentials } from "../../../providers/model-call.js";
5
- import { getLocalVoiceRuntimeClient } from "../../../voice/local/runtime-client.js";
6
- import { getAudioDecoderStatus } from "../../../voice/audio/normalize.js";
7
5
  import { resolveSttProviderConfigSlice } from "../../../voice/stt/config-slice.js";
8
6
  import { STTTranscriptionError, transcribe } from "../../../voice/stt/transcribe-core.js";
9
7
  import { isSTTAvailable } from "../../../voice/stt/availability.js";
@@ -21,7 +19,6 @@ import { VoiceSessionCreationError, resolveStreamingStt, resolveStreamingTts } f
21
19
  import { getGatewayPrincipal } from "../../security/gateway-principal.js";
22
20
  import { createGatewayRouteLogger } from "../lib/route-logger.js";
23
21
  import { selectPlatformVoice, voiceSettingsCatalog } from "../../../voice/platform-settings.js";
24
- import { listLocalVoiceModelStatuses, removeLocalVoiceModel, startLocalVoiceModelInstall } from "../../../voice/local/model-manager.js";
25
22
  import { listTtsProvidersForApi } from "../../../voice/tts/list-providers.js";
26
23
  import { z } from "zod";
27
24
  //#region src/gateway/hono/routes/voice.ts
@@ -410,70 +407,6 @@ function registerVoiceRoutes(authenticated, deps) {
410
407
  payload
411
408
  });
412
409
  });
413
- authenticated.get("/api/voice/local/status", async (c) => {
414
- const config = service.currentConfig;
415
- const sttConfig = mergeSttConfigFromAppConfig(config.tools?.media?.audio, config.tools?.media);
416
- const modelId = typeof sttConfig.providers?.["xopc-local"]?.model === "string" ? sttConfig.providers["xopc-local"].model : "sensevoice-small";
417
- const models = await listLocalVoiceModelStatuses();
418
- const decoder = getAudioDecoderStatus();
419
- try {
420
- const runtime = await getLocalVoiceRuntimeClient().request("health", { modelId }, {
421
- timeoutMs: 1e4,
422
- stopOnTimeout: false
423
- });
424
- return c.json({
425
- ok: true,
426
- payload: {
427
- runtime: {
428
- ...runtime,
429
- ready: true
430
- },
431
- decoder,
432
- models
433
- }
434
- });
435
- } catch (error) {
436
- const message = error instanceof Error ? error.message : String(error);
437
- return c.json({
438
- ok: true,
439
- payload: {
440
- runtime: {
441
- ready: false,
442
- error: message
443
- },
444
- decoder,
445
- models
446
- }
447
- });
448
- }
449
- });
450
- authenticated.post("/api/voice/local/models/:modelId/install", strictRateLimitMiddleware, (c) => {
451
- try {
452
- const status = startLocalVoiceModelInstall(c.req.param("modelId"));
453
- return c.json({
454
- ok: true,
455
- payload: { model: status }
456
- }, 202);
457
- } catch (error) {
458
- const message = error instanceof Error ? error.message : String(error);
459
- return c.json({
460
- ok: false,
461
- error: { message }
462
- }, 400);
463
- }
464
- });
465
- authenticated.delete("/api/voice/local/models/:modelId", strictRateLimitMiddleware, async (c) => {
466
- try {
467
- await removeLocalVoiceModel(c.req.param("modelId"));
468
- return c.json({ ok: true });
469
- } catch (error) {
470
- const message = error instanceof Error ? error.message : String(error);
471
- return c.json({
472
- ok: false,
473
- error: { message }
474
- }, 400);
475
- }
476
- });
477
410
  /**
478
411
  * POST /api/voice/reveal-api-key — return plaintext voice provider apiKey from config file only.
479
412
  * Body: `{ kind: 'stt' | 'tts', provider: string }`
@@ -3,13 +3,11 @@ import { resolveProjectAgentId } from "../../../projects/project-agent.js";
3
3
  import "../../../projects/index.js";
4
4
  import { messagesToClientHistory } from "../../../session/client-history.js";
5
5
  import { validateWorkflowDefinitionInput } from "../../../workflows/domain/validation.js";
6
- import { WorkflowDraftService } from "../../../workflows/draft/workflow-draft-service.js";
7
6
  import { WorkflowNameConflictError, WorkflowRevisionConflictError, createWorkflowCatalog } from "../../../agent/workflow/catalog.js";
8
7
  import "../../../workflows/domain/index.js";
9
- import { resolveWorkflowRunArtifactsDir } from "../../../workflows/store/paths.js";
10
8
  import { WorkflowDraftConflictError, WorkflowDraftStore } from "../../../workflows/authoring/workflow-draft-store.js";
11
9
  import "../../../workflows/authoring/index.js";
12
- import "../../../workflows/draft/index.js";
10
+ import { resolveWorkflowRunArtifactsDir } from "../../../workflows/store/paths.js";
13
11
  import { ProjectWorkflowPresetRepository } from "../../../workflows/project-presets/project-workflow-preset-repository.js";
14
12
  import { basename, join } from "node:path";
15
13
  import { readFile, stat } from "node:fs/promises";
@@ -108,26 +106,6 @@ function registerWorkflowRoutes(authenticated, deps) {
108
106
  });
109
107
  return c.json(result);
110
108
  });
111
- authenticated.post("/api/workflows/definitions/generate", async (c) => {
112
- const body = await readJsonBody(c.req.raw);
113
- const prompt = body.prompt?.trim();
114
- if (!prompt) return c.json({ error: "prompt is required" }, 400);
115
- const agentId = getAgentId(body.agentId ?? c.req.query("agentId"), service.currentConfig);
116
- const draftService = new WorkflowDraftService({ config: service.currentConfig });
117
- try {
118
- const draft = await draftService.createDraft({
119
- prompt,
120
- agentId,
121
- language: body.language,
122
- mode: body.mode,
123
- existingGraph: body.existingGraph,
124
- constraints: body.constraints
125
- }, c.req.raw.signal);
126
- return c.json({ draft }, 201);
127
- } catch (err) {
128
- return c.json({ error: err instanceof Error ? err.message : "Failed to create workflow draft" }, 400);
129
- }
130
- });
131
109
  authenticated.post("/api/workflows/definitions", async (c) => {
132
110
  const body = await readJsonBody(c.req.raw);
133
111
  if (body.expectedRevision !== 0) return c.json({ error: "expectedRevision must be 0 when creating a workflow" }, 400);
@@ -1,11 +1,11 @@
1
1
  import { normalizeAgentId } from "../agent-catalog/id.js";
2
2
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
3
- import { init_agent_scope } from "../agent/agent-scope.js";
4
- import { AgentCatalogService } from "../agent-catalog/service.js";
5
3
  import { ConfigSchema, init_schema } from "../config/schema.js";
4
+ import { init_agent_scope } from "../agent/agent-scope.js";
6
5
  import { resolveEffectiveAgentConfigForAgent } from "../config/agent-profile.js";
7
6
  import { fetchWithTimeoutGuarded } from "../media-shared/http/provider-http.js";
8
7
  import "../media-shared/http/index.js";
8
+ import { AgentCatalogService } from "../agent-catalog/service.js";
9
9
  import { getImageGenerationProvider, listImageGenerationProvidersSummary } from "../agent/image/generation/provider-registry.js";
10
10
  //#region src/gateway/image-generation-setup.ts
11
11
  init_repository();
@@ -1,8 +1,8 @@
1
1
  import path from "node:path";
2
2
  import fs from "node:fs";
3
3
  import { createHash } from "node:crypto";
4
- import fs$1 from "node:fs/promises";
5
4
  import net from "node:net";
5
+ import fs$1 from "node:fs/promises";
6
6
  import { homedir } from "os";
7
7
  //#region src/gateway/lock.ts
8
8
  /**
@@ -5,7 +5,7 @@
5
5
  * Was 350 lines of `GatewayService` covering nine concerns:
6
6
  * - manual `reloadConfig()` (CLI/UI trigger)
7
7
  * - `saveConfig()` / `updateConfig()` (PATCH /api/config)
8
- * - `setBundledExtensionActivationTarget` (extension store install)
8
+ * - `setExtensionActivationTarget` (extension lifecycle)
9
9
  * - `afterWeixinCredentialsPersisted` / `afterFeishuCredentialsPersisted`
10
10
  * (QR-login follow-ups that bypass the watcher)
11
11
  * - `ConfigHotReloader` (fs.watch → debounced per-section dispatch)
@@ -69,11 +69,11 @@ export declare class GatewayConfigCoordinator {
69
69
  error?: string;
70
70
  }>;
71
71
  /**
72
- * App store (phase 1): persist `extensions.enabled` / `extensions.disabled`
73
- * for a bundled extension. Marketplace-only extensions hot-load on enable;
72
+ * Persist `extensions.enabled` / `extensions.disabled` for a discovered extension.
73
+ * Extensions hot-load on enable;
74
74
  * disable still needs a gateway restart to unload.
75
75
  */
76
- setBundledExtensionActivationTarget(extensionId: string, wanted: boolean): Promise<{
76
+ setExtensionActivationTarget(extensionId: string, wanted: boolean): Promise<{
77
77
  ok: boolean;
78
78
  error?: string;
79
79
  requiresGatewayRestart: boolean;
@@ -8,7 +8,7 @@ import "../../agent/mcp/bundle-mcp-tools.js";
8
8
  import { loadConfig, saveConfig } from "../../config/loader.js";
9
9
  import { ConfigHotReloader } from "../../config/reload.js";
10
10
  import "../../config/index.js";
11
- import { computeBundledExtensionExtensionsPatch } from "../../extensions/bundled-extension-activation.js";
11
+ import { computeExtensionActivationPatch } from "../../extensions/bundled-extension-activation.js";
12
12
  import { sanitizeTunnelConfig } from "../../tunnel/tunnel-config.js";
13
13
  //#region src/gateway/service/config-coordinator.ts
14
14
  init_providers();
@@ -113,11 +113,11 @@ var GatewayConfigCoordinator = class {
113
113
  }
114
114
  }
115
115
  /**
116
- * App store (phase 1): persist `extensions.enabled` / `extensions.disabled`
117
- * for a bundled extension. Marketplace-only extensions hot-load on enable;
116
+ * Persist `extensions.enabled` / `extensions.disabled` for a discovered extension.
117
+ * Extensions hot-load on enable;
118
118
  * disable still needs a gateway restart to unload.
119
119
  */
120
- async setBundledExtensionActivationTarget(extensionId, wanted) {
120
+ async setExtensionActivationTarget(extensionId, wanted) {
121
121
  const loader = this.opts.getExtensionLoader();
122
122
  if (!loader) return {
123
123
  ok: false,
@@ -130,7 +130,7 @@ var GatewayConfigCoordinator = class {
130
130
  error: "Invalid extension id",
131
131
  requiresGatewayRestart: false
132
132
  };
133
- const patch = computeBundledExtensionExtensionsPatch(loader, this.opts.getConfig(), id, wanted);
133
+ const patch = computeExtensionActivationPatch(loader, this.opts.getConfig(), id, wanted);
134
134
  if (patch.ok === false) return {
135
135
  ok: false,
136
136
  error: patch.error,
@@ -163,7 +163,7 @@ var GatewayConfigCoordinator = class {
163
163
  }
164
164
  this.opts.emit("config.reload", {
165
165
  section: "extensions",
166
- source: "bundled-activation"
166
+ source: "extension-activation"
167
167
  });
168
168
  return {
169
169
  ok: true,
@@ -402,14 +402,16 @@ var GatewayMarketplaceService = class {
402
402
  const id = extensionId.trim();
403
403
  const prevExt = currentConfig.extensions;
404
404
  const baseExt = prevExt && typeof prevExt === "object" && !Array.isArray(prevExt) ? { ...prevExt } : {};
405
- const enabledRaw = baseExt.enabled;
406
- const enabled = Array.isArray(enabledRaw) ? enabledRaw.filter((x) => typeof x === "string" && x !== id) : [];
405
+ for (const key of ["enabled", "disabled"]) {
406
+ const value = baseExt[key];
407
+ if (!Array.isArray(value)) continue;
408
+ const next = value.filter((x) => typeof x === "string" && x !== id);
409
+ if (next.length > 0) baseExt[key] = next;
410
+ else delete baseExt[key];
411
+ }
407
412
  return {
408
413
  ...currentConfig,
409
- extensions: {
410
- ...baseExt,
411
- enabled
412
- }
414
+ extensions: baseExt
413
415
  };
414
416
  }
415
417
  };
@@ -221,7 +221,7 @@ export declare class GatewayService {
221
221
  mode: 'auto' | 'manual';
222
222
  error?: string;
223
223
  }>;
224
- setBundledExtensionActivationTarget(extensionId: string, wanted: boolean): Promise<{
224
+ setExtensionActivationTarget(extensionId: string, wanted: boolean): Promise<{
225
225
  ok: boolean;
226
226
  error?: string;
227
227
  requiresGatewayRestart: boolean;
@@ -17,14 +17,14 @@ import { init_session_repository, listSessionMetadata, patchSessionMetadata } fr
17
17
  import { getSessionConfig, init_config_repository } from "../storage/sqlite/config-repository.js";
18
18
  import { init_sqlite } from "../storage/sqlite/index.js";
19
19
  import { normalizeAgentId } from "../agent-catalog/id.js";
20
- import { init_agent_scope, listAgentEntries, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
21
- import { init_paths, resolveConfigPath, resolveExtensionsDir } from "../config/paths.js";
22
20
  import { init_config, resolveKnowledgeReadPolicy } from "../user-context/config.js";
23
21
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
22
+ import { init_agent_scope, listAgentEntries, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
24
23
  import { init_agent_session_key, resolveAgentMainConversationId } from "../routing/agent-session-key.js";
25
24
  import { init_session_key, resolveConversationId, sanitizeSegment } from "../routing/session-key.js";
26
25
  import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
27
26
  import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
27
+ import { init_paths, resolveConfigPath, resolveExtensionsDir } from "../config/paths.js";
28
28
  import { prewarmModelRegistry } from "../providers/model-registry.js";
29
29
  import { init_providers, providers_exports } from "../providers/index.js";
30
30
  import { TaskConversationRepository } from "../tasks/task-conversation-repository.js";
@@ -72,20 +72,24 @@ import { ChatPreviewService } from "../chat-previews/service.js";
72
72
  import "../chat-previews/index.js";
73
73
  import { getWorkspacePath } from "../config/workspace-path-helpers.js";
74
74
  import "../config/index.js";
75
- import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
76
- import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
77
- import "../knowledge/index.js";
78
- import { ConnectionRecoveryService } from "../connectors/connection-recovery-service.js";
79
- import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
80
- import { startConnectorSupervisor } from "../connectors/supervisor.js";
81
75
  import { DiscussionService } from "../discussions/service.js";
82
76
  import { DiscussionOrganizer } from "../discussions/organizer.js";
83
77
  import { DiscussionLiveWorker } from "../discussions/live-worker.js";
84
78
  import { DiscussionOrganizerWorker } from "../discussions/organizer-worker.js";
85
79
  import { DiscussionSealer } from "../discussions/sealer.js";
86
80
  import "../discussions/index.js";
81
+ import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
82
+ import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
83
+ import "../knowledge/index.js";
84
+ import { ConnectionRecoveryService } from "../connectors/connection-recovery-service.js";
85
+ import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
86
+ import { startConnectorSupervisor } from "../connectors/supervisor.js";
87
87
  import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
88
88
  import "../endpoint-tools/index.js";
89
+ import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
90
+ import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
91
+ import { HomeIntelligenceHost } from "../home-intelligence/host.js";
92
+ import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
89
93
  import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
90
94
  import { prepareAutomationAgentSession } from "./automation-agent-session.js";
91
95
  import { stopTailscaleExposure } from "./tailscale-lifecycle.js";
@@ -140,10 +144,6 @@ import { createGatewayStartupTrace } from "./startup-trace.js";
140
144
  import { GatewaySceneHost } from "./scenes/host.js";
141
145
  import { checkAppContextAccess, prepareAppContext } from "./service/app-context-access.js";
142
146
  import { applyAutomaticVoiceLanguage, inferProductLanguageFromEnvironment, initializeVoiceDefaults } from "../voice/language-profile.js";
143
- import { HomeIntelligenceHost } from "../home-intelligence/host.js";
144
- import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
145
- import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
146
- import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
147
147
  import crypto from "node:crypto";
148
148
  //#region src/gateway/service.ts
149
149
  init_session_repository();
@@ -699,7 +699,7 @@ var GatewayService = class {
699
699
  prepareAgentSession: (input) => prepareAutomationAgentSession(this.sessionIndex.getStore(), this.projects, input),
700
700
  workflowRunService: this.createWorkflowRunService(),
701
701
  browserAutomationService: this.browserAutomations,
702
- executeTaskCommand: ({ taskId, idempotencyKey, command }) => {
702
+ executeTaskCommand: ({ taskId, idempotencyKey, command, triggerEvent }) => {
703
703
  const task = new TaskRepository().get(taskId);
704
704
  if (!task) return {
705
705
  ok: false,
@@ -713,7 +713,8 @@ var GatewayService = class {
713
713
  actor: {
714
714
  kind: "system",
715
715
  id: "automation"
716
- }
716
+ },
717
+ ...triggerEvent ? { triggerContext: { automationTrigger: triggerEvent } } : {}
717
718
  });
718
719
  if (result.ok && result.runId) this.dispatchTaskRuns();
719
720
  if (result.ok === false) return {
@@ -1206,7 +1207,7 @@ var GatewayService = class {
1206
1207
  prepareAgentSession: (input) => prepareAutomationAgentSession(this.sessionIndex.getStore(), this.projects, input),
1207
1208
  workflowRunService: this.createWorkflowRunService(),
1208
1209
  browserAutomationService: this.browserAutomations,
1209
- executeTaskCommand: ({ taskId, idempotencyKey, command }) => {
1210
+ executeTaskCommand: ({ taskId, idempotencyKey, command, triggerEvent }) => {
1210
1211
  const task = new TaskRepository().get(taskId);
1211
1212
  if (!task) return {
1212
1213
  ok: false,
@@ -1220,7 +1221,8 @@ var GatewayService = class {
1220
1221
  actor: {
1221
1222
  kind: "system",
1222
1223
  id: "automation"
1223
- }
1224
+ },
1225
+ ...triggerEvent ? { triggerContext: { automationTrigger: triggerEvent } } : {}
1224
1226
  });
1225
1227
  if (result.ok && result.runId) this.dispatchTaskRuns();
1226
1228
  if (result.ok === false) return {
@@ -1496,8 +1498,8 @@ var GatewayService = class {
1496
1498
  mode
1497
1499
  };
1498
1500
  }
1499
- setBundledExtensionActivationTarget(extensionId, wanted) {
1500
- return this.configCoordinator.setBundledExtensionActivationTarget(extensionId, wanted);
1501
+ setExtensionActivationTarget(extensionId, wanted) {
1502
+ return this.configCoordinator.setExtensionActivationTarget(extensionId, wanted);
1501
1503
  }
1502
1504
  updateConfig(updates) {
1503
1505
  return this.configCoordinator.updateConfig(updates);
@@ -1,7 +1,7 @@
1
1
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
2
- import { AgentCatalogService } from "../agent-catalog/service.js";
3
2
  import { getModelCatalogStore, init_model_catalog_store } from "../providers/model-catalog-store.js";
4
3
  import { compareCatalogModels } from "../providers/model-catalog-ranking.js";
4
+ import { AgentCatalogService } from "../agent-catalog/service.js";
5
5
  import { prepareUpdateGlobalDefaults } from "./global-defaults-admin.js";
6
6
  //#region src/gateway/xopc-cloud-capability-setup.ts
7
7
  init_repository();
@@ -1,6 +1,7 @@
1
1
  import { init_agent_scope, resolveDefaultAgentId } from "../agent/agent-scope.js";
2
2
  import { init_providers, resolveModel } from "../providers/index.js";
3
3
  import { completeWithResolvedCredentials, isLocalModelBaseUrl } from "../providers/model-call.js";
4
+ import { extractAssistantText, getAssistantMessageErrorReason } from "../providers/model-response.js";
4
5
  import { resolveModelSelector } from "../config/agent-model-intents.js";
5
6
  import { z } from "zod";
6
7
  //#region src/home-intelligence/generator.ts
@@ -104,10 +105,10 @@ function buildSystemPrompt(locale) {
104
105
  `Write only user-visible prose values such as title, rationale, steps, and prompts in ${locale === "zh" ? "Simplified Chinese" : "English"}. Machine values listed above must remain in English.`
105
106
  ].join("\n");
106
107
  }
107
- function extractText(content) {
108
- if (typeof content === "string") return content;
109
- if (!Array.isArray(content)) return "";
110
- return content.map((part) => part && typeof part === "object" && "text" in part && typeof part.text === "string" ? part.text : "").join("");
108
+ function extractHomeResponseText(response) {
109
+ const modelError = getAssistantMessageErrorReason(response);
110
+ if (modelError) throw new Error(`Home intelligence provider request failed: ${modelError}`);
111
+ return extractAssistantText(response.content);
111
112
  }
112
113
  function parseJson(raw) {
113
114
  const fenced = raw.match(/```json\s*([\s\S]*?)```/i)?.[1];
@@ -182,7 +183,7 @@ var HomeAdviceGenerator = class {
182
183
  temperature: .1,
183
184
  signal: requestSignal
184
185
  });
185
- const raw = extractText(response.content);
186
+ const raw = extractHomeResponseText(response);
186
187
  let result;
187
188
  try {
188
189
  result = HomeModelResultSchema.parse(parseJson(raw));
@@ -206,7 +207,7 @@ var HomeAdviceGenerator = class {
206
207
  signal: requestSignal
207
208
  });
208
209
  try {
209
- result = HomeModelResultSchema.parse(parseJson(extractText(corrected.content)));
210
+ result = HomeModelResultSchema.parse(parseJson(extractHomeResponseText(corrected)));
210
211
  } catch (correctionError) {
211
212
  throw new Error(`Home intelligence model returned invalid structured JSON after correction: ${validationSummary(correctionError)}`);
212
213
  }
@@ -1,9 +1,9 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
3
  import { homePatternKey } from "./strategy.js";
4
- import { HomeAdvicePolicy } from "./policy.js";
5
4
  import { HomeIntelligenceRepository } from "./repository.js";
6
5
  import { HomeOpportunityApplicationService } from "./application-service.js";
6
+ import { HomeAdvicePolicy } from "./policy.js";
7
7
  import { buildHomeOpportunityNotification } from "./notification.js";
8
8
  import { createHash } from "node:crypto";
9
9
  //#region src/home-intelligence/host.ts
@@ -5,10 +5,10 @@ import { currentOperationId, init_operation_context } from "../infra/operation-c
5
5
  import { afterSqliteCommit, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
6
6
  import { ExtensionCapabilityBindingsSchema, extensionCapabilityPermissions } from "../../packages/gateway-contract/src/extension-capabilities.js";
7
7
  import { init_src } from "../../packages/gateway-contract/src/index.js";
8
- import { CapabilityError } from "../capabilities/runtime/errors.js";
9
8
  import { init_paths, resolveExtensionsDir } from "../config/paths.js";
10
9
  import { LocalAppStore } from "./store.js";
11
10
  import { slugifyProjectName } from "../projects/project-store.js";
11
+ import { CapabilityError } from "../capabilities/runtime/errors.js";
12
12
  import { DomainOutboxDispatcher } from "../infra/domain-outbox-dispatcher.js";
13
13
  import { validateLocalAppCapabilityContracts } from "./capabilities/contracts.js";
14
14
  import { buildLocalAppFixGuidance } from "./fix-guidance.js";
@@ -228,7 +228,7 @@ export interface MediaUnderstandingProvider {
228
228
  * Defaults to true.
229
229
  */
230
230
  requiresApiKey?: boolean;
231
- /** Optional runtime readiness check for bundled providers such as local STT. */
231
+ /** Optional runtime readiness check for providers whose backing service may be unavailable. */
232
232
  isConfigured?: (options?: {
233
233
  model?: string;
234
234
  }) => boolean;
@@ -5,6 +5,7 @@ export interface MemoryMaintenanceMetrics {
5
5
  needsReview: number;
6
6
  activated: number;
7
7
  expiredPriorities: number;
8
+ expiredObservations: number;
8
9
  archived: number;
9
10
  repairedIndexes: number;
10
11
  }
@@ -12,6 +12,7 @@ function emptyMetrics() {
12
12
  needsReview: 0,
13
13
  activated: 0,
14
14
  expiredPriorities: 0,
15
+ expiredObservations: 0,
15
16
  archived: 0,
16
17
  repairedIndexes: 0
17
18
  };
@@ -33,6 +34,17 @@ function addDecision(db, runId, objectType, objectId, action, reason, before, af
33
34
  decision_id, run_id, object_type, object_id, action, reason, before_json, after_json, created_at
34
35
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(randomUUID(), runId, objectType, objectId, action, reason, before === void 0 ? null : JSON.stringify(before), after === void 0 ? null : JSON.stringify(after), now);
35
36
  }
37
+ function purgeExpiredObservations(db, runId, principalId, now, limit, metrics) {
38
+ const rows = db.prepare(`SELECT observation_id, delete_after FROM user_model_observations
39
+ WHERE principal_id = ? AND delete_after IS NOT NULL AND delete_after <= ?
40
+ ORDER BY delete_after, observation_id LIMIT ?`).all(principalId, now, limit);
41
+ metrics.scanned += rows.length;
42
+ for (const row of rows) {
43
+ db.prepare("DELETE FROM user_model_observations WHERE observation_id = ?").run(row.observation_id);
44
+ addDecision(db, runId, "evidence", row.observation_id, "deleted", "observation_retention_expired", row, void 0, now);
45
+ metrics.expiredObservations += 1;
46
+ }
47
+ }
36
48
  function transitionAssertions(db, runId, principalId, now, limit, metrics) {
37
49
  const rows = db.prepare(`SELECT a.assertion_id, a.status FROM user_assertions a
38
50
  JOIN user_assertion_slots s ON s.slot_id = a.slot_id
@@ -211,6 +223,7 @@ function runMemoryMaintenance(input) {
211
223
  transitionAssertions(db, runId, principalId, now, limit, metrics);
212
224
  transitionPriorities(db, runId, principalId, now, limit, metrics);
213
225
  transitionKnowledge(db, runId, principalId, now, limit, metrics);
226
+ purgeExpiredObservations(db, runId, principalId, now, limit, metrics);
214
227
  if (input.jobType === "daily_reconciliation" || input.jobType === "manual_repair") {
215
228
  reconcileEvidence(db, runId, principalId, now, limit, evidenceThreshold, metrics);
216
229
  activateKnowledge(db, runId, principalId, now, limit, metrics);
@@ -0,0 +1,2 @@
1
+ import type { Migration } from './types.js';
2
+ export declare const retiredLocalSttMigration: Migration;
@@ -0,0 +1,52 @@
1
+ import { isGatewayConfigLockedByAnotherProcessSync } from "../gateway/lock.js";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ //#region src/migrations/retired-local-stt.ts
4
+ const id = "retire-builtin-local-stt";
5
+ function migratedConfig(ctx) {
6
+ if (!existsSync(ctx.configPath)) return null;
7
+ const config = JSON.parse(readFileSync(ctx.configPath, "utf8"));
8
+ const tools = config.tools;
9
+ if (!tools || typeof tools !== "object" || Array.isArray(tools)) return null;
10
+ const media = tools.media;
11
+ if (!media || typeof media !== "object" || Array.isArray(media)) return null;
12
+ const audio = media.audio;
13
+ if (!audio || typeof audio !== "object" || Array.isArray(audio)) return null;
14
+ const stt = audio;
15
+ if (stt.provider !== "xopc-local" && stt.provider !== "local") return null;
16
+ stt.enabled = false;
17
+ stt.provider = "openai";
18
+ stt.fallback = {
19
+ enabled: false,
20
+ order: []
21
+ };
22
+ return config;
23
+ }
24
+ function item(status) {
25
+ return {
26
+ id,
27
+ title: "Retire built-in local speech recognition",
28
+ kind: "config",
29
+ safety: "auto",
30
+ status,
31
+ message: "Disable the removed xopc-local STT provider. Select an installed STT extension or another provider before enabling voice input again."
32
+ };
33
+ }
34
+ const retiredLocalSttMigration = {
35
+ id,
36
+ kind: "config",
37
+ safety: "auto",
38
+ detect: (ctx) => migratedConfig(ctx) ? item("planned") : null,
39
+ apply: (ctx) => {
40
+ if (isGatewayConfigLockedByAnotherProcessSync(ctx.configPath)) return {
41
+ ...item("skipped"),
42
+ message: "Deferred local STT retirement until the running gateway restarts."
43
+ };
44
+ const config = migratedConfig(ctx);
45
+ return config ? {
46
+ ...item("applied"),
47
+ details: { config }
48
+ } : item("not_needed");
49
+ }
50
+ };
51
+ //#endregion
52
+ export { retiredLocalSttMigration };
@@ -3,6 +3,7 @@ import { init_logger } from "../utils/logger.js";
3
3
  import { ConfigSchema, init_schema } from "../config/schema.js";
4
4
  import { listRegisteredMigrations } from "./registry.js";
5
5
  import { memoryConfigMigration } from "./memory-config.js";
6
+ import { retiredLocalSttMigration } from "./retired-local-stt.js";
6
7
  import { dirname, join } from "node:path";
7
8
  import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
8
9
  //#region src/migrations/runner.ts
@@ -11,7 +12,7 @@ init_logger();
11
12
  const log = createLogger("Migrations");
12
13
  const MIGRATION_LEDGER_FILENAME = "migrations.json";
13
14
  const CONFIG_BACKUP_COUNT = 10;
14
- const CORE_MIGRATIONS = [memoryConfigMigration];
15
+ const CORE_MIGRATIONS = [memoryConfigMigration, retiredLocalSttMigration];
15
16
  function listAllMigrations() {
16
17
  return [...CORE_MIGRATIONS, ...listRegisteredMigrations().map((entry) => entry.migration)];
17
18
  }