@xopcai/xopc 0.0.323 → 0.0.324

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 (572) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/extensions/weixin/src/plugin.js +1 -9
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DFzmThVi.js → agent-avatar-dicebear-B-Gczr_A.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CxcIHW_Z.js +1 -0
  6. package/dist/gateway/static/root/assets/{agent-plugin-dialog-DYFYiuig.js → agent-plugin-dialog-CNuqJcHQ.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agents-BqIlB5Co.js → agents-CPpmkx7O.js} +1 -1
  8. package/dist/gateway/static/root/assets/{app-management-settings-panel-BgvMRGWe.js → app-management-settings-panel-BwWdVRlb.js} +1 -1
  9. package/dist/gateway/static/root/assets/{appearance-settings-CliHU03A.js → appearance-settings-EoXNDO1j.js} +1 -1
  10. package/dist/gateway/static/root/assets/apps-page-6xEgLDv8.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-DnuPpm0u.js → archive-plugin-B_T0uMvL.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-BiwaK0ie.js → attachment-load-D9DDwxd2.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-page-CJSISGQH.js → automations-page-jI9vNr2r.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-workspace-rztQnZDk.js +7 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-KDjduQZO.js → binary-plugins-Dzsxh9OL.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-bclvgove.js → block-editor-CWUUgWWk.js} +3 -3
  17. package/dist/gateway/static/root/assets/{browser-automation-inputs-CfQ2T9t6.js → browser-automation-inputs-DSWXq9lI.js} +1 -1
  18. package/dist/gateway/static/root/assets/{browser-automations-page-Cxq38Nnp.js → browser-automations-page-D96o3bDY.js} +2 -2
  19. package/dist/gateway/static/root/assets/browser-settings-page-DUQzQ3ic.js +3 -0
  20. package/dist/gateway/static/root/assets/capabilities-sAZT4brT.js +1 -0
  21. package/dist/gateway/static/root/assets/capabilities-settings-panel-CKWtXof8.js +8 -0
  22. package/dist/gateway/static/root/assets/channels-settings-C8ducWB7.js +1 -0
  23. package/dist/gateway/static/root/assets/{chat-terminal-dock-DKQC62nQ.js → chat-terminal-dock-WXZrEB3K.js} +1 -1
  24. package/dist/gateway/static/root/assets/{computer-settings-page-D1whpIqL.js → computer-settings-page-uy9YDwxJ.js} +1 -1
  25. package/dist/gateway/static/root/assets/{connector-service-page-BAuYTgf5.js → connector-service-page-BpF0SjB9.js} +1 -1
  26. package/dist/gateway/static/root/assets/connectors-page-eZTfIMWI.js +2 -0
  27. package/dist/gateway/static/root/assets/date-picker-Do1dl0La.js +1 -0
  28. package/dist/gateway/static/root/assets/{dependency-picker-DOuVO2M1.js → dependency-picker-BhS8s080.js} +1 -1
  29. package/dist/gateway/static/root/assets/{desktop-pet-D9tu6Bhu.js → desktop-pet-DPVPqFlh.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-CQPXub2f.js → desktop-pet-settings-Dv3vG9HZ.js} +1 -1
  31. package/dist/gateway/static/root/assets/{device-pairing-wizard-DxkOYSut.js → device-pairing-wizard-DdvO1O6W.js} +1 -1
  32. package/dist/gateway/static/root/assets/dist-3h6cXXhT.js +1 -0
  33. package/dist/gateway/static/root/assets/{extension-debug-page-CtWClPz-.js → extension-debug-page-cuG5Lnwf.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-page-BHh9HLCz.js → extension-page-BCTAXdyE.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-settings-page-BdT3v5Uh.js → extension-settings-page-kadW_icu.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-config-swr-1eqyz9vZ.js → gateway-config-swr-CoQVulMd.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-settings-CZas_Ekx.js → gateway-settings-CLZyN-u9.js} +1 -1
  38. package/dist/gateway/static/root/assets/{gateway-startup-retry-C4rsW6vJ.js → gateway-startup-retry-B5GJ-CQV.js} +1 -1
  39. package/dist/gateway/static/root/assets/home-page-BSqg-JE9.js +1 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-B5DXMylk.js → image-generation-api-DvWDkbk1.js} +1 -1
  41. package/dist/gateway/static/root/assets/{imports-page-B1JH0G5j.js → imports-page-_pddpuej.js} +1 -1
  42. package/dist/gateway/static/root/assets/{index-CNc4N4TX.css → index-BKL5tg2f.css} +1 -1
  43. package/dist/gateway/static/root/assets/index-CJuypaNt.js +121 -0
  44. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DGrLJ8Yh.js → keyboard-shortcuts-settings-C1fKIjz4.js} +1 -1
  45. package/dist/gateway/static/root/assets/local-app-workbench-page-DXFnYiA0.js +1 -0
  46. package/dist/gateway/static/root/assets/{local-apps-page-DqjStqbL.js → local-apps-page-CkXKS5xe.js} +1 -1
  47. package/dist/gateway/static/root/assets/{locale-store-BIkcRr3t.js → locale-store-BPZR8x9b.js} +1 -1
  48. package/dist/gateway/static/root/assets/logs-page-C33z-ife.js +2 -0
  49. package/dist/gateway/static/root/assets/{management-settings-gCfH4cwH.js → management-settings-8eDZb0uS.js} +1 -1
  50. package/dist/gateway/static/root/assets/{markdown-view-Ck_5MADq.js → markdown-view-Dft8ASFD.js} +1 -1
  51. package/dist/gateway/static/root/assets/{media-plugins-DTsZqgo6.js → media-plugins-Cjj-fidX.js} +1 -1
  52. package/dist/gateway/static/root/assets/messages-kFWhF6_t.js +3 -0
  53. package/dist/gateway/static/root/assets/note-detail-panel-C95RtLuL.js +5 -0
  54. package/dist/gateway/static/root/assets/notes-page-kFxknjMR.js +8 -0
  55. package/dist/gateway/static/root/assets/{page-context-capture-button-DTI_g4tz.js → page-context-capture-button-OUL3fEYh.js} +1 -1
  56. package/dist/gateway/static/root/assets/{page-tabs-CfW_Q-K5.js → page-tabs-CVbY7_N5.js} +1 -1
  57. package/dist/gateway/static/root/assets/popover-select-DcsFzD_i.js +1 -0
  58. package/dist/gateway/static/root/assets/{preview-open-alternatives-CuPN-vAn.js → preview-open-alternatives-CKiIby0r.js} +1 -1
  59. package/dist/gateway/static/root/assets/{product-open-page-BHjxRz1E.js → product-open-page-DlpCi5zT.js} +1 -1
  60. package/dist/gateway/static/root/assets/project-detail-page-LPAxUszX.js +1 -0
  61. package/dist/gateway/static/root/assets/{projects-page-Bk-es4i9.js → projects-page-Cbyb4hyy.js} +1 -1
  62. package/dist/gateway/static/root/assets/{registry-api-BAAZUGnU.js → registry-api-DWWO6ajd.js} +1 -1
  63. package/dist/gateway/static/root/assets/remote-access-hub-BtDFZc6g.js +1 -0
  64. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CHJBJKL1.js → runtime-tools-settings-panel-BT_ANpaT.js} +1 -1
  65. package/dist/gateway/static/root/assets/scenes-page-CJlc-mg1.js +2 -0
  66. package/dist/gateway/static/root/assets/{schema-form-FQAit5HL.js → schema-form-BcqsqSsV.js} +1 -1
  67. package/dist/gateway/static/root/assets/sessions-page-CUo6-iV2.js +1 -0
  68. package/dist/gateway/static/root/assets/settings-advanced-gate-XeSxPjP7.js +1 -0
  69. package/dist/gateway/static/root/assets/{settings-form-section-BDc6bw1q.js → settings-form-section-Dol9j_pF.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-page-DnhxBJjV.js → settings-page-B65vii9U.js} +1 -1
  71. package/dist/gateway/static/root/assets/{settings-page-layout-D3KNSQ5g.js → settings-page-layout-eqTUTW2L.js} +1 -1
  72. package/dist/gateway/static/root/assets/setup-status-panel-BCt__prc.js +1 -0
  73. package/dist/gateway/static/root/assets/{share-preview-page-DVQCRxwK.js → share-preview-page-BS8o58NJ.js} +1 -1
  74. package/dist/gateway/static/root/assets/shares-settings-BsjSqEnw.js +1 -0
  75. package/dist/gateway/static/root/assets/skill-reload-api-evN7gs0S.js +1 -0
  76. package/dist/gateway/static/root/assets/skills-page-BifYwEhe.js +2 -0
  77. package/dist/gateway/static/root/assets/{skills-page.utils-mDwC9UJ-.js → skills-page.utils-DOk-iOvN.js} +1 -1
  78. package/dist/gateway/static/root/assets/{system-settings-panel-Bk7GrMij.js → system-settings-panel-CcSvoHfY.js} +1 -1
  79. package/dist/gateway/static/root/assets/task-detail-page-pCRG7Jb3.js +1 -0
  80. package/dist/gateway/static/root/assets/{tunnel-api-D3Aquraj.js → tunnel-api-DDGMf44u.js} +1 -1
  81. package/dist/gateway/static/root/assets/{use-autosave-C1xQ-sHn.js → use-autosave-DiIkxIq7.js} +1 -1
  82. package/dist/gateway/static/root/assets/user-model-page-CvYeM0Ml.js +2 -0
  83. package/dist/gateway/static/root/assets/{voice-api-key-field-DCNECvcp.js → voice-api-key-field-DJV-qERt.js} +1 -1
  84. package/dist/gateway/static/root/assets/{voice-config-api-B-_niUTU.js → voice-config-api-BaxITrwZ.js} +1 -1
  85. package/dist/gateway/static/root/assets/{work-discovery-overlay-BrGx_JS_.js → work-discovery-overlay-DcHhy54L.js} +1 -1
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CmmC2Pdr.js → workflow-run-setup-panel-DbVtLh0R.js} +2 -2
  87. package/dist/gateway/static/root/assets/workflows-page-CT8ouKcB.js +6 -0
  88. package/dist/gateway/static/root/index.html +11 -10
  89. package/dist/package.js +1 -1
  90. package/dist/packages/gateway-contract/src/home.js +284 -55
  91. package/dist/packages/gateway-contract/src/index.js +0 -2
  92. package/dist/packages/gateway-contract/src/notifications.js +3 -10
  93. package/dist/src/activity/emitter.js +2 -1
  94. package/dist/src/activity/service.js +2 -1
  95. package/dist/src/agent/agent-manager.d.ts +3 -2
  96. package/dist/src/agent/agent-manager.js +36 -44
  97. package/dist/src/agent/agent-scope.d.ts +19 -48
  98. package/dist/src/agent/agent-scope.js +47 -169
  99. package/dist/src/agent/background-review/run-background-review.js +5 -4
  100. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -1
  101. package/dist/src/agent/commands/command-registry.js +7 -3
  102. package/dist/src/agent/context/coordinator.js +1 -1
  103. package/dist/src/agent/context/execution-context.js +2 -1
  104. package/dist/src/agent/context/execution-scope.js +2 -1
  105. package/dist/src/agent/context/workspace-seed.d.ts +1 -2
  106. package/dist/src/agent/context/workspace-seed.js +3 -3
  107. package/dist/src/agent/context/workspace-state.js +1 -1
  108. package/dist/src/agent/embedded/run-for-session.js +2 -2
  109. package/dist/src/agent/embedded/run-turn.js +2 -1
  110. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +2 -1
  111. package/dist/src/agent/external-tools/cliProvider.js +2 -1
  112. package/dist/src/agent/external-tools/composio-provider.js +2 -1
  113. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  114. package/dist/src/agent/external-tools/index.js +2 -3
  115. package/dist/src/agent/external-tools/mcp-provider.js +2 -2
  116. package/dist/src/agent/image/tool-model-config.js +4 -5
  117. package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
  118. package/dist/src/agent/ipc/bus.js +1 -1
  119. package/dist/src/agent/ipc/socket.js +3 -3
  120. package/dist/src/agent/media-generation/runtime-shared.d.ts +1 -1
  121. package/dist/src/agent/media-generation/runtime-shared.js +1 -1
  122. package/dist/src/agent/memory/plugin-discovery.js +1 -2
  123. package/dist/src/agent/models/manager.d.ts +1 -1
  124. package/dist/src/agent/models/manager.js +2 -2
  125. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +1 -1
  126. package/dist/src/agent/prompt/response-language.js +2 -1
  127. package/dist/src/agent/prompt/service-prompt-builder.js +6 -3
  128. package/dist/src/agent/prompt/system-prompt.js +2 -1
  129. package/dist/src/agent/reply/post-compaction-context.js +2 -2
  130. package/dist/src/agent/service/build-direct-message-content.js +1 -1
  131. package/dist/src/agent/service/direct-turn-helpers.js +2 -1
  132. package/dist/src/agent/service/parse-outbound-session-key.js +2 -1
  133. package/dist/src/agent/service/process-direct-streaming.js +3 -2
  134. package/dist/src/agent/service/webchat-tts.js +2 -1
  135. package/dist/src/agent/service.d.ts +1 -1
  136. package/dist/src/agent/service.js +12 -11
  137. package/dist/src/agent/service.types.d.ts +2 -0
  138. package/dist/src/agent/session/session-inspector.js +4 -5
  139. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +5 -0
  140. package/dist/src/agent/starter-agents.d.ts +4 -5
  141. package/dist/src/agent/starter-agents.js +21 -20
  142. package/dist/src/agent/tasks/task-judge-service.js +2 -2
  143. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  144. package/dist/src/agent/tool-manuals/xopc-use.js +31 -1
  145. package/dist/src/agent/tools/delegation-parent-policy.js +2 -3
  146. package/dist/src/agent/tools/factory.d.ts +2 -0
  147. package/dist/src/agent/tools/factory.js +10 -9
  148. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  149. package/dist/src/agent/tools/workflow-tool.js +2 -3
  150. package/dist/src/agent/tools/xopc-use-tool.d.ts +3 -2
  151. package/dist/src/agent/tools/xopc-use-tool.js +54 -6
  152. package/dist/src/agent/workflow/workflow-child-tools.js +1 -2
  153. package/dist/src/agent/workspace-runtime/registry.d.ts +1 -1
  154. package/dist/src/agent/workspace-runtime/registry.js +2 -2
  155. package/dist/src/agent-catalog/capabilities.d.ts +3 -0
  156. package/dist/src/agent-catalog/capabilities.js +238 -0
  157. package/dist/src/agent-catalog/id.d.ts +15 -0
  158. package/dist/src/agent-catalog/id.js +101 -0
  159. package/dist/src/agent-catalog/index.d.ts +6 -0
  160. package/dist/src/agent-catalog/index.js +10 -0
  161. package/dist/src/agent-catalog/migrations/legacy-config-cutover.d.ts +11 -0
  162. package/dist/src/agent-catalog/migrations/legacy-config-cutover.js +195 -0
  163. package/dist/src/agent-catalog/repository.d.ts +39 -0
  164. package/dist/src/agent-catalog/repository.js +319 -0
  165. package/dist/src/agent-catalog/service.d.ts +33 -0
  166. package/dist/src/agent-catalog/service.js +202 -0
  167. package/dist/src/agent-catalog/test-support.d.ts +14 -0
  168. package/dist/src/agent-catalog/test-support.js +34 -0
  169. package/dist/src/agent-catalog/types.d.ts +26 -0
  170. package/dist/src/agent-catalog/types.js +1 -0
  171. package/dist/src/agent-config/index.js +2 -2
  172. package/dist/src/agent-config/schema.d.ts +1 -172
  173. package/dist/src/agent-config/schema.js +2 -41
  174. package/dist/src/auth/credentials.js +3 -3
  175. package/dist/src/auth/oauth/xopc-cloud.js +1 -1
  176. package/dist/src/auth/sync-provider-auth.d.ts +1 -1
  177. package/dist/src/auth/sync-provider-auth.js +5 -9
  178. package/dist/src/automations/capabilities/drafts.js +8 -7
  179. package/dist/src/automations/service/action-executor.js +2 -1
  180. package/dist/src/bootstrap/application-state.d.ts +10 -0
  181. package/dist/src/bootstrap/application-state.js +26 -0
  182. package/dist/src/browser/automations/repository.js +2 -1
  183. package/dist/src/browser/automations/schema.d.ts +1 -1
  184. package/dist/src/browser/automations/service.d.ts +1 -1
  185. package/dist/src/browser/native-messaging-host.js +5 -4
  186. package/dist/src/browser/providers/extension.js +4 -2
  187. package/dist/src/browser/providers/realtime-extension.js +2 -1
  188. package/dist/src/capabilities/readiness/from-config.js +7 -4
  189. package/dist/src/capabilities/runtime/dispatcher.d.ts +1 -0
  190. package/dist/src/capabilities/runtime/dispatcher.js +10 -4
  191. package/dist/src/capabilities/runtime/product.js +2 -0
  192. package/dist/src/channels/catalog/channel-catalog-service.js +7 -13
  193. package/dist/src/chat-commands/agent-edit.js +4 -3
  194. package/dist/src/chat-commands/builtins/config.js +6 -8
  195. package/dist/src/chat-commands/builtins/review.js +1 -1
  196. package/dist/src/chat-commands/builtins/workflow.js +1 -1
  197. package/dist/src/chat-commands/config-paths.js +1 -1
  198. package/dist/src/chat-commands/context.js +2 -3
  199. package/dist/src/chat-previews/store.js +2 -1
  200. package/dist/src/cli/command-manifest.js +1 -1
  201. package/dist/src/cli/commands/agent.js +4 -4
  202. package/dist/src/cli/commands/agents.d.ts +1 -1
  203. package/dist/src/cli/commands/agents.js +36 -48
  204. package/dist/src/cli/commands/auth.js +1 -0
  205. package/dist/src/cli/commands/browser-cli-helpers.js +1 -2
  206. package/dist/src/cli/commands/channels.js +2 -4
  207. package/dist/src/cli/commands/config.js +4 -5
  208. package/dist/src/cli/commands/connectors.js +1 -2
  209. package/dist/src/cli/commands/doctor/checks/channel-config.js +2 -4
  210. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +1 -2
  211. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +1 -2
  212. package/dist/src/cli/commands/doctor/checks/config-health.js +1 -2
  213. package/dist/src/cli/commands/doctor/checks/database-schema.js +4 -4
  214. package/dist/src/cli/commands/doctor/checks/gateway-health.js +1 -2
  215. package/dist/src/cli/commands/doctor/checks/gateway-service.js +1 -2
  216. package/dist/src/cli/commands/doctor/checks/provider-auth.js +13 -11
  217. package/dist/src/cli/commands/doctor/checks/security-audit.js +1 -2
  218. package/dist/src/cli/commands/doctor/checks/session-integrity.js +3 -3
  219. package/dist/src/cli/commands/doctor/checks/tool-runtimes.js +1 -2
  220. package/dist/src/cli/commands/doctor/checks/workspace-status.js +5 -7
  221. package/dist/src/cli/commands/extension-agent-plugin.js +1 -2
  222. package/dist/src/cli/commands/extension-dev.js +2 -4
  223. package/dist/src/cli/commands/extension-marketplace.js +1 -2
  224. package/dist/src/cli/commands/extension-pack.js +1 -2
  225. package/dist/src/cli/commands/extension.js +1 -2
  226. package/dist/src/cli/commands/gateway/run-foreground.js +3 -3
  227. package/dist/src/cli/commands/gateway/shared.js +1 -1
  228. package/dist/src/cli/commands/history.js +2 -1
  229. package/dist/src/cli/commands/image.js +2 -2
  230. package/dist/src/cli/commands/init.js +11 -30
  231. package/dist/src/cli/commands/mcp.js +1 -2
  232. package/dist/src/cli/commands/models.js +13 -11
  233. package/dist/src/cli/commands/onboard/channels/registry.js +1 -2
  234. package/dist/src/cli/commands/onboard/gateway.js +1 -2
  235. package/dist/src/cli/commands/onboard/model.d.ts +1 -1
  236. package/dist/src/cli/commands/onboard/model.js +17 -25
  237. package/dist/src/cli/commands/onboard.js +4 -2
  238. package/dist/src/cli/commands/platform.js +1 -0
  239. package/dist/src/cli/commands/project.js +3 -3
  240. package/dist/src/cli/commands/providers.js +1 -0
  241. package/dist/src/cli/commands/runtime.js +1 -2
  242. package/dist/src/cli/commands/search.js +1 -2
  243. package/dist/src/cli/commands/skills.js +1 -2
  244. package/dist/src/cli/commands/tui-runner.js +3 -2
  245. package/dist/src/cli/commands/tui.js +6 -8
  246. package/dist/src/cli/commands/tunnel.js +1 -1
  247. package/dist/src/cli/commands/voice.js +1 -2
  248. package/dist/src/cli/extension-cli-register.js +1 -1
  249. package/dist/src/cli/index.js +4 -2
  250. package/dist/src/cli/utils/gateway-client.js +1 -1
  251. package/dist/src/cli/utils/init-workspace-core.js +15 -16
  252. package/dist/src/cli/utils/session.js +1 -2
  253. package/dist/src/computer/model-config.d.ts +3 -3
  254. package/dist/src/computer/model-config.js +10 -20
  255. package/dist/src/computer/runtime.js +1 -1
  256. package/dist/src/config/agent-model-intents.js +2 -2
  257. package/dist/src/config/agent-profile.d.ts +5 -6
  258. package/dist/src/config/agent-profile.js +19 -19
  259. package/dist/src/config/config-surface.d.ts +0 -3
  260. package/dist/src/config/default-model.js +2 -6
  261. package/dist/src/config/index.js +7 -8
  262. package/dist/src/config/loader.js +12 -18
  263. package/dist/src/config/models-json.d.ts +6 -6
  264. package/dist/src/config/paths.d.ts +18 -19
  265. package/dist/src/config/paths.js +35 -35
  266. package/dist/src/config/reload.d.ts +0 -1
  267. package/dist/src/config/reload.js +1 -6
  268. package/dist/src/config/rules.js +0 -15
  269. package/dist/src/config/schema.d.ts +3 -406
  270. package/dist/src/config/schema.js +24 -86
  271. package/dist/src/config/validate-channel-configs.js +8 -14
  272. package/dist/src/config/workspace-dirs.d.ts +3 -4
  273. package/dist/src/config/workspace-dirs.js +9 -8
  274. package/dist/src/config/workspace-path-helpers.d.ts +1 -1
  275. package/dist/src/config/workspace-path-helpers.js +2 -2
  276. package/dist/src/connectors/cli/lifecycle.js +2 -1
  277. package/dist/src/connectors/composio-managed-events.js +2 -1
  278. package/dist/src/connectors/connected-source-ingestion.js +2 -1
  279. package/dist/src/connectors/connected-source-understanding.js +4 -2
  280. package/dist/src/connectors/content-enrichment.js +2 -1
  281. package/dist/src/connectors/learning-coordinator.js +2 -1
  282. package/dist/src/connectors/runtime-adapter-registry.js +2 -1
  283. package/dist/src/connectors/workflow-preflight.d.ts +8 -1
  284. package/dist/src/connectors/workflow-preflight.js +11 -3
  285. package/dist/src/discussions/analyzer.js +2 -2
  286. package/dist/src/endpoint-tools/runtime.js +2 -1
  287. package/dist/src/execution-environments/subject.js +2 -1
  288. package/dist/src/extensions/activation-context.js +3 -16
  289. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  290. package/dist/src/extensions/discover-extensions.js +9 -15
  291. package/dist/src/extensions/extension-metadata-snapshot.d.ts +1 -1
  292. package/dist/src/extensions/extension-metadata-snapshot.js +9 -16
  293. package/dist/src/extensions/index.js +4 -10
  294. package/dist/src/extensions/install.js +1 -1
  295. package/dist/src/extensions/loader.js +7 -14
  296. package/dist/src/extensions/manifest-registry.js +93 -98
  297. package/dist/src/extensions/marketplace.js +5 -2
  298. package/dist/src/extensions/normalize-manifest.js +12 -17
  299. package/dist/src/extensions/update.js +1 -2
  300. package/dist/src/files/file-service.js +7 -8
  301. package/dist/src/gateway/agents-admin.d.ts +23 -27
  302. package/dist/src/gateway/agents-admin.js +109 -130
  303. package/dist/src/gateway/file-path-classifier.js +3 -3
  304. package/dist/src/gateway/file-space-service.js +2 -1
  305. package/dist/src/gateway/global-defaults-admin.d.ts +6 -4
  306. package/dist/src/gateway/global-defaults-admin.js +21 -20
  307. package/dist/src/gateway/hono/app.js +2 -1
  308. package/dist/src/gateway/hono/lib/config-payload.js +12 -9
  309. package/dist/src/gateway/hono/middleware/auth.js +2 -1
  310. package/dist/src/gateway/hono/middleware/scopes.js +2 -1
  311. package/dist/src/gateway/hono/routes/agents.js +22 -49
  312. package/dist/src/gateway/hono/routes/browser.js +4 -2
  313. package/dist/src/gateway/hono/routes/channels.js +1 -2
  314. package/dist/src/gateway/hono/routes/cli-connectors.js +2 -1
  315. package/dist/src/gateway/hono/routes/commands-skills.js +3 -1
  316. package/dist/src/gateway/hono/routes/composer-history.js +2 -1
  317. package/dist/src/gateway/hono/routes/config-patch/index.d.ts +1 -3
  318. package/dist/src/gateway/hono/routes/config-patch/index.js +1 -2
  319. package/dist/src/gateway/hono/routes/config-patch/misc.js +18 -11
  320. package/dist/src/gateway/hono/routes/config.js +0 -2
  321. package/dist/src/gateway/hono/routes/connectors.js +8 -4
  322. package/dist/src/gateway/hono/routes/context-sources.js +4 -3
  323. package/dist/src/gateway/hono/routes/device-pairing-approval.js +2 -1
  324. package/dist/src/gateway/hono/routes/device-push.js +3 -2
  325. package/dist/src/gateway/hono/routes/devices.js +6 -3
  326. package/dist/src/gateway/hono/routes/discussions.js +2 -1
  327. package/dist/src/gateway/hono/routes/endpoint-tools.js +2 -1
  328. package/dist/src/gateway/hono/routes/global-defaults.js +8 -16
  329. package/dist/src/gateway/hono/routes/home.js +93 -4
  330. package/dist/src/gateway/hono/routes/interaction-state.js +2 -1
  331. package/dist/src/gateway/hono/routes/models.js +8 -7
  332. package/dist/src/gateway/hono/routes/notes.js +4 -5
  333. package/dist/src/gateway/hono/routes/projects.js +6 -6
  334. package/dist/src/gateway/hono/routes/public-gateway.js +2 -1
  335. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  336. package/dist/src/gateway/hono/routes/sessions.js +4 -2
  337. package/dist/src/gateway/hono/routes/shares.js +4 -3
  338. package/dist/src/gateway/hono/routes/site-shares.js +2 -2
  339. package/dist/src/gateway/hono/routes/status.js +2 -3
  340. package/dist/src/gateway/hono/routes/tasks.js +1 -2
  341. package/dist/src/gateway/hono/routes/user-model-refresh.js +2 -1
  342. package/dist/src/gateway/hono/routes/user-model.js +3 -2
  343. package/dist/src/gateway/hono/routes/work-discovery.js +1 -1
  344. package/dist/src/gateway/hono/routes/workflows.js +2 -2
  345. package/dist/src/gateway/image-generation-setup.d.ts +19 -10
  346. package/dist/src/gateway/image-generation-setup.js +59 -23
  347. package/dist/src/gateway/index.js +1 -4
  348. package/dist/src/gateway/lock.js +13 -18
  349. package/dist/src/gateway/memory-maintenance-automation-reconciler.js +4 -3
  350. package/dist/src/gateway/run-loop.js +2 -3
  351. package/dist/src/gateway/security/gateway-scopes.js +6 -2
  352. package/dist/src/gateway/security/index.js +4 -1
  353. package/dist/src/gateway/service/agent-runner.js +4 -2
  354. package/dist/src/gateway/service/app-context-access.js +2 -1
  355. package/dist/src/gateway/service/config-coordinator.d.ts +0 -1
  356. package/dist/src/gateway/service/config-coordinator.js +4 -22
  357. package/dist/src/gateway/service/marketplace-service.js +3 -1
  358. package/dist/src/gateway/service/run-gateway-agent.js +4 -2
  359. package/dist/src/gateway/service/session-input-coordinator.js +4 -2
  360. package/dist/src/gateway/service.d.ts +5 -0
  361. package/dist/src/gateway/service.js +109 -33
  362. package/dist/src/gateway/session-context-summary.js +4 -2
  363. package/dist/src/gateway/xopc-cloud-capability-setup.d.ts +2 -0
  364. package/dist/src/gateway/xopc-cloud-capability-setup.js +15 -10
  365. package/dist/src/home-intelligence/application-service.d.ts +31 -0
  366. package/dist/src/home-intelligence/application-service.js +134 -0
  367. package/dist/src/home-intelligence/capability-preflight.d.ts +32 -0
  368. package/dist/src/home-intelligence/capability-preflight.js +118 -0
  369. package/dist/src/home-intelligence/evaluation.d.ts +34 -0
  370. package/dist/src/home-intelligence/evaluation.js +49 -0
  371. package/dist/src/home-intelligence/generator.d.ts +125 -0
  372. package/dist/src/home-intelligence/generator.js +227 -0
  373. package/dist/src/home-intelligence/host.d.ts +53 -0
  374. package/dist/src/home-intelligence/host.js +257 -0
  375. package/dist/src/home-intelligence/notification.d.ts +8 -0
  376. package/dist/src/home-intelligence/notification.js +20 -0
  377. package/dist/src/home-intelligence/policy.d.ts +16 -0
  378. package/dist/src/home-intelligence/policy.js +152 -0
  379. package/dist/src/home-intelligence/repository.d.ts +81 -0
  380. package/dist/src/home-intelligence/repository.js +495 -0
  381. package/dist/src/home-intelligence/snapshot.d.ts +43 -0
  382. package/dist/src/home-intelligence/snapshot.js +133 -0
  383. package/dist/src/home-intelligence/strategy.d.ts +14 -0
  384. package/dist/src/home-intelligence/strategy.js +10 -0
  385. package/dist/src/home-intelligence/types.d.ts +13 -0
  386. package/dist/src/home-intelligence/types.js +1 -0
  387. package/dist/src/infra/update-restart.js +4 -2
  388. package/dist/src/knowledge/connected-knowledge-pipeline.js +2 -1
  389. package/dist/src/knowledge/ingestion-service.js +2 -1
  390. package/dist/src/knowledge-memory/repository.js +2 -1
  391. package/dist/src/local-apps/service.js +1 -1
  392. package/dist/src/local-apps/store.js +2 -1
  393. package/dist/src/mcp/channel-bridge.js +1 -2
  394. package/dist/src/mcp/channel-server.js +1 -2
  395. package/dist/src/mcp/gateway-http-client.js +1 -2
  396. package/dist/src/media/session-references.js +2 -1
  397. package/dist/src/memory-maintenance/service.js +2 -1
  398. package/dist/src/migrations/memory-config.js +1 -2
  399. package/dist/src/notes/agent-context.js +2 -1
  400. package/dist/src/notes/attachment-ref.js +8 -4
  401. package/dist/src/notes/note-attachment-sync.js +2 -1
  402. package/dist/src/notes/note-index-meta.js +14 -7
  403. package/dist/src/notes/note-markdown.js +13 -7
  404. package/dist/src/notes/service.js +6 -3
  405. package/dist/src/notes/store.js +4 -2
  406. package/dist/src/notifications/device-store.js +1 -1
  407. package/dist/src/notifications/planner.js +24 -0
  408. package/dist/src/notifications/service.d.ts +7 -14
  409. package/dist/src/notifications/service.js +13 -3
  410. package/dist/src/notifications/store.js +1 -1
  411. package/dist/src/notifications/types.d.ts +1 -1
  412. package/dist/src/notifications/types.js +1 -1
  413. package/dist/src/projects/capabilities/write.js +2 -1
  414. package/dist/src/projects/project-agent-suggestion.js +1 -1
  415. package/dist/src/projects/project-agent.js +4 -4
  416. package/dist/src/projects/project-service.js +2 -1
  417. package/dist/src/projects/workspace.js +3 -2
  418. package/dist/src/providers/index.js +3 -3
  419. package/dist/src/providers/model-reference-auditor.d.ts +1 -2
  420. package/dist/src/providers/model-reference-auditor.js +8 -5
  421. package/dist/src/realtime/runtime.js +2 -1
  422. package/dist/src/routing/binding-schema.d.ts +41 -0
  423. package/dist/src/routing/binding-schema.js +26 -0
  424. package/dist/src/routing/bindings.d.ts +4 -2
  425. package/dist/src/routing/bindings.js +4 -4
  426. package/dist/src/routing/index.d.ts +1 -1
  427. package/dist/src/routing/resolve-route.d.ts +7 -24
  428. package/dist/src/routing/resolve-route.js +17 -18
  429. package/dist/src/routing/resolve-tui-session-key.d.ts +1 -4
  430. package/dist/src/routing/resolve-tui-session-key.js +10 -9
  431. package/dist/src/scenes/execution.d.ts +1 -1
  432. package/dist/src/scenes/model.js +1 -1
  433. package/dist/src/scenes/taskFollowUp/contracts.d.ts +1 -1
  434. package/dist/src/scenes/taskFollowUp/service.js +6 -4
  435. package/dist/src/scenes/templates.d.ts +2 -2
  436. package/dist/src/session/config-store.js +2 -1
  437. package/dist/src/session/init-session-turn.js +2 -1
  438. package/dist/src/session/resolve-session.js +2 -1
  439. package/dist/src/session/session-workspace.js +1 -1
  440. package/dist/src/session/store.js +3 -2
  441. package/dist/src/storage/sqlite/activity-repository.js +6 -2
  442. package/dist/src/storage/sqlite/browser-tab-binding-repository.js +6 -2
  443. package/dist/src/storage/sqlite/clarification-wait-repository.js +13 -8
  444. package/dist/src/storage/sqlite/collaboration-rule-repository.d.ts +1 -1
  445. package/dist/src/storage/sqlite/collaboration-rule-repository.js +8 -3
  446. package/dist/src/storage/sqlite/composer-input-history-repository.js +8 -3
  447. package/dist/src/storage/sqlite/config-repository.js +9 -5
  448. package/dist/src/storage/sqlite/connector-learning-repository.js +6 -2
  449. package/dist/src/storage/sqlite/connector-sync-policy-repository.js +6 -2
  450. package/dist/src/storage/sqlite/context-evidence-repository.js +8 -3
  451. package/dist/src/storage/sqlite/context-extraction-repository.js +8 -3
  452. package/dist/src/storage/sqlite/device-access-repository.js +15 -9
  453. package/dist/src/storage/sqlite/device-pairing-approval.js +6 -2
  454. package/dist/src/storage/sqlite/device-pairing-repository.js +10 -5
  455. package/dist/src/storage/sqlite/endpoint-principal-repository.js +6 -2
  456. package/dist/src/storage/sqlite/endpoint-session-binding-repository.js +6 -2
  457. package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.js +6 -2
  458. package/dist/src/storage/sqlite/gateway-identity-repository.js +6 -2
  459. package/dist/src/storage/sqlite/home-attention-repository.js +6 -2
  460. package/dist/src/storage/sqlite/index.d.ts +0 -1
  461. package/dist/src/storage/sqlite/index.js +72 -42
  462. package/dist/src/storage/sqlite/interaction-state-repository.js +10 -4
  463. package/dist/src/storage/sqlite/knowledge-repository.js +6 -2
  464. package/dist/src/storage/sqlite/migrations/203_remove_retired_proactive_contracts.sql +70 -0
  465. package/dist/src/storage/sqlite/migrations/204_home_intelligence.sql +78 -0
  466. package/dist/src/storage/sqlite/migrations/205_agent_catalog.sql +66 -0
  467. package/dist/src/storage/sqlite/migrations/206_home_advice_strategy_version.sql +3 -0
  468. package/dist/src/storage/sqlite/migrations/conversation-backup.d.ts +2 -0
  469. package/dist/src/storage/sqlite/migrations/conversation-backup.js +8 -4
  470. package/dist/src/storage/sqlite/migrations/conversation-windows-owners.d.ts +7 -1
  471. package/dist/src/storage/sqlite/migrations/conversation-windows-owners.js +2 -2
  472. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  473. package/dist/src/storage/sqlite/migrations/runner.js +4 -4
  474. package/dist/src/storage/sqlite/note-agent-context-repository.js +6 -2
  475. package/dist/src/storage/sqlite/notes-repository.js +9 -4
  476. package/dist/src/storage/sqlite/schema.js +1 -1
  477. package/dist/src/storage/sqlite/session-task-plan-repository.js +14 -9
  478. package/dist/src/storage/sqlite/session-turn-replace-repository.js +9 -5
  479. package/dist/src/storage/sqlite/sidebar-layout-repository.js +14 -9
  480. package/dist/src/storage/sqlite/transcript-repository.js +10 -6
  481. package/dist/src/storage/sqlite/user-people-repository.js +8 -3
  482. package/dist/src/storage/sqlite/user-trust-repository.js +8 -3
  483. package/dist/src/tasks/attention-governor.d.ts +0 -1
  484. package/dist/src/tasks/attention-governor.js +1 -7
  485. package/dist/src/tasks/capabilities/read.js +2 -2
  486. package/dist/src/tasks/capabilities/write.d.ts +1 -1
  487. package/dist/src/tasks/execution-context.d.ts +2 -2
  488. package/dist/src/tasks/execution-context.js +6 -5
  489. package/dist/src/tasks/home-query-service.d.ts +3 -2
  490. package/dist/src/tasks/home-query-service.js +23 -44
  491. package/dist/src/tasks/task-context-assembler.js +2 -1
  492. package/dist/src/tasks/task-context-repository.d.ts +1 -1
  493. package/dist/src/tasks/task-contract-planner.d.ts +0 -3
  494. package/dist/src/tasks/task-contract-planner.js +1 -4
  495. package/dist/src/tasks/task-handoff-service.d.ts +0 -2
  496. package/dist/src/tasks/task-handoff-service.js +3 -3
  497. package/dist/src/tasks/task-value-metrics-service.js +2 -1
  498. package/dist/src/tui/backends/embedded-backend.js +12 -14
  499. package/dist/src/tui/extension-host/load-extensions.js +1 -1
  500. package/dist/src/tui/tui-commands.js +5 -3
  501. package/dist/src/tui/tui-skills-autocomplete.js +1 -1
  502. package/dist/src/tui/tui-startup-resources.js +3 -3
  503. package/dist/src/tui/tui.js +5 -5
  504. package/dist/src/tunnel/registration-proof.js +2 -1
  505. package/dist/src/user-context/access-policy.js +2 -1
  506. package/dist/src/user-context/domain.d.ts +1 -1
  507. package/dist/src/user-context/domain.js +18 -13
  508. package/dist/src/user-context/extraction/registry.js +2 -1
  509. package/dist/src/user-context/interaction-state.js +4 -1
  510. package/dist/src/user-context/relationship-continuity.js +2 -1
  511. package/dist/src/user-context/trust-policy.js +13 -8
  512. package/dist/src/user-model/bootstrap.js +2 -1
  513. package/dist/src/user-model/capture/executor.js +4 -2
  514. package/dist/src/user-model/capture/semantic.d.ts +1 -1
  515. package/dist/src/user-model/capture/semantic.js +1 -1
  516. package/dist/src/user-model/domain.js +7 -2
  517. package/dist/src/user-model/goals.js +2 -1
  518. package/dist/src/user-model/index.js +4 -1
  519. package/dist/src/user-model/repository.js +2 -1
  520. package/dist/src/utils/helpers.js +1 -4
  521. package/dist/src/utils/index.js +2 -2
  522. package/dist/src/utils/logger/index.d.ts +1 -1
  523. package/dist/src/utils/logger/index.js +2 -2
  524. package/dist/src/utils/logger/redact.d.ts +2 -0
  525. package/dist/src/utils/logger/redact.js +11 -3
  526. package/dist/src/utils/logger.js +2 -2
  527. package/dist/src/voice/realtime/memory-context.js +2 -1
  528. package/dist/src/voice/realtime/persona-context.js +6 -6
  529. package/dist/src/voice/tts/audio.js +1 -1
  530. package/dist/src/work-discovery/analyzer.js +3 -3
  531. package/dist/src/work-discovery/investigator.js +1 -1
  532. package/dist/src/work-discovery/service.js +12 -11
  533. package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
  534. package/dist/src/workflows/service/workflow-run-service.js +4 -5
  535. package/dist/src/workflows/store/paths.js +1 -1
  536. package/package.json +3 -3
  537. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CAFHadiy.js +0 -1
  538. package/dist/gateway/static/root/assets/apps-page-Drt3Foi9.js +0 -1
  539. package/dist/gateway/static/root/assets/automations-workspace-B-Eduqwz.js +0 -7
  540. package/dist/gateway/static/root/assets/browser-settings-page-Dwgir6mu.js +0 -3
  541. package/dist/gateway/static/root/assets/capabilities-settings-panel-H5L5vynP.js +0 -8
  542. package/dist/gateway/static/root/assets/capabilities-uFKh3Hd0.js +0 -1
  543. package/dist/gateway/static/root/assets/channels-settings-RFBRYe5S.js +0 -1
  544. package/dist/gateway/static/root/assets/connectors-page-Px-v3Q6Q.js +0 -2
  545. package/dist/gateway/static/root/assets/date-picker-CfCo3lqh.js +0 -1
  546. package/dist/gateway/static/root/assets/home-page-w3_aWeNt.js +0 -1
  547. package/dist/gateway/static/root/assets/index--3c0awkr.js +0 -121
  548. package/dist/gateway/static/root/assets/local-app-workbench-page-BYKrJpFF.js +0 -1
  549. package/dist/gateway/static/root/assets/logs-page-Dl4kM4Na.js +0 -2
  550. package/dist/gateway/static/root/assets/messages-7VAhscYe.js +0 -3
  551. package/dist/gateway/static/root/assets/note-detail-panel-j6sioeL1.js +0 -5
  552. package/dist/gateway/static/root/assets/notes-page-CMvvHv0f.js +0 -8
  553. package/dist/gateway/static/root/assets/popover-select-B-GDnZO9.js +0 -1
  554. package/dist/gateway/static/root/assets/project-detail-page-C9K_e-EV.js +0 -1
  555. package/dist/gateway/static/root/assets/remote-access-hub-CLGJNA42.js +0 -1
  556. package/dist/gateway/static/root/assets/scenes-page-ClLAD1pz.js +0 -2
  557. package/dist/gateway/static/root/assets/sessions-page-Xj8MkXN1.js +0 -1
  558. package/dist/gateway/static/root/assets/settings-advanced-gate-DwALV8mi.js +0 -1
  559. package/dist/gateway/static/root/assets/setup-status-panel-F0rCQ-2a.js +0 -1
  560. package/dist/gateway/static/root/assets/shares-settings-C7hf6Cov.js +0 -1
  561. package/dist/gateway/static/root/assets/skill-reload-api-xPrFejRE.js +0 -1
  562. package/dist/gateway/static/root/assets/skills-page-RdDYu7Yj.js +0 -2
  563. package/dist/gateway/static/root/assets/task-detail-page-2A966jFY.js +0 -1
  564. package/dist/gateway/static/root/assets/user-model-page-CnBxPBVe.js +0 -2
  565. package/dist/gateway/static/root/assets/workflows-page-BZVpqw4T.js +0 -6
  566. package/dist/packages/gateway-contract/src/proactive.js +0 -136
  567. package/dist/src/commands/agents.config.d.ts +0 -31
  568. package/dist/src/commands/agents.config.js +0 -129
  569. package/dist/src/gateway/hono/routes/config-patch/agents.d.ts +0 -2
  570. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -6
  571. package/dist/src/storage/sqlite/relationship-settings-repository.d.ts +0 -17
  572. package/dist/src/storage/sqlite/relationship-settings-repository.js +0 -65
@@ -8,7 +8,7 @@ Load this manual before a non-trivial mutation.
8
8
 
9
9
  \`\`\`json
10
10
  {
11
- "mode": "scene | project | automation | note | task | task_run | chat_preview | local_app | settings",
11
+ "mode": "agent | scene | project | automation | note | task | task_run | chat_preview | local_app | settings",
12
12
  "command": "...",
13
13
  "args": {},
14
14
  "dryRun": false
@@ -29,6 +29,7 @@ language. A scene prepares suggestions or drafts and never sends mail or perform
29
29
 
30
30
  | Object | Tool |
31
31
  | --- | --- |
32
+ | Agent definition and default Agent | \`xopc_use\` mode \`agent\` |
32
33
  | Scene and scene result | \`xopc_use\` mode \`scene\` |
33
34
  | Project, milestone, project update | \`xopc_use\` mode \`project\` |
34
35
  | Automation | \`xopc_use\` mode \`automation\` |
@@ -45,6 +46,35 @@ Do not emulate Workflow APIs through \`xopc_use\`. A Task is durable intent;
45
46
  a TaskRun is one execution attempt; a WorkflowRun is a procedure execution and may belong
46
47
  to a TaskRun. Never treat these three objects as interchangeable.
47
48
 
49
+ ## Agents
50
+
51
+ Commands: \`list\`, \`get\`, \`create\`, \`update\`, \`set_default\`, \`disable\`,
52
+ \`delete\`, and \`purge\`.
53
+
54
+ An Agent profile accepts only \`name\` and optional \`instructions\`. Put personality,
55
+ language, role, and behavioral guidance in \`profile.instructions\`; do not invent profile
56
+ fields such as \`description\`, \`language\`, \`emoji\`, or \`creature\`.
57
+
58
+ \`\`\`json
59
+ {
60
+ "mode": "agent",
61
+ "command": "create",
62
+ "args": {
63
+ "id": "xiaomei",
64
+ "profile": {
65
+ "name": "小美",
66
+ "instructions": "使用中文交流,语气温柔、亲切、可爱,同时保持回答清晰可靠。"
67
+ },
68
+ "idempotencyKey": "create-agent-xiaomei"
69
+ }
70
+ }
71
+ \`\`\`
72
+
73
+ Use \`list\` before creating an Agent so an existing id is updated rather than duplicated.
74
+ Mutations other than \`create\` require the current \`expectedRevision\`; \`set_default\` uses
75
+ the catalog revision returned by \`list\`. \`delete\` preserves on-disk data, while \`purge\`
76
+ also removes it. Use \`dryRun: true\` to validate the exact same input contract without writing.
77
+
48
78
  ## Reliable protocol
49
79
 
50
80
  1. Use \`list\` then \`get\` when an id is unknown.
@@ -6,9 +6,8 @@ import { createAgentTurnPolicy } from "../orchestration/agent-turn-policy.js";
6
6
  /** Noninteractive callers cannot silently turn an ask policy into an allow. */
7
7
  function createDelegationParentPolicy(options) {
8
8
  const policies = (name, args) => {
9
- const config = options.getConfig();
10
- if (!config) return [];
11
- const resolved = options.conversationId ? resolveEffectiveAgentConfigForSession(config, options.conversationId) : options.agentId ? resolveEffectiveAgentConfigForAgent(config, options.agentId) : resolveEffectiveAgentConfigForSession(config, void 0);
9
+ if (!options.getConfig()) return [];
10
+ const resolved = options.conversationId ? resolveEffectiveAgentConfigForSession(options.conversationId) : options.agentId ? resolveEffectiveAgentConfigForAgent(options.agentId) : resolveEffectiveAgentConfigForSession(void 0);
12
11
  const names = [name];
13
12
  if (name === "xopc_tool_execute") {
14
13
  const parsed = parseExternalToolRef(String(args?.toolRef ?? ""), "mcp");
@@ -68,6 +68,8 @@ export interface ToolFactoryDeps {
68
68
  dispatchTaskEvents?: () => void;
69
69
  /** Gateway: queues Task execution for xopc_use task start/resume/verify actions. */
70
70
  dispatchTaskRuns?: () => void;
71
+ /** Gateway: refreshes Agent runtime state after xopc_use mutates the catalog. */
72
+ onAgentCatalogMutate?: () => void;
71
73
  /** Gateway: starts persisted workflow runs (dedicated chat session per run). */
72
74
  getWorkflowRunService?: () => WorkflowRunServiceLike | undefined;
73
75
  /** Current session skill indexing (tool gating + allowlist); used by skills_list / skill_view. */
@@ -2,10 +2,10 @@ import { init_paths_state, resolveStateDir } from "../../config/paths-state.js";
2
2
  import { createLogger } from "../../utils/logger/index.js";
3
3
  import { init_logger } from "../../utils/logger.js";
4
4
  import { isXopcDatabaseOpen } from "../../storage/sqlite/connection.js";
5
- import { getBrowserTabBinding } from "../../storage/sqlite/browser-tab-binding-repository.js";
5
+ import { getBrowserTabBinding, init_browser_tab_binding_repository } from "../../storage/sqlite/browser-tab-binding-repository.js";
6
6
  import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
7
7
  import { getSessionTaskPlan, setSessionTaskPlan } from "../../storage/sqlite/session-task-plan-repository.js";
8
- import "../../storage/sqlite/index.js";
8
+ import { init_sqlite } from "../../storage/sqlite/index.js";
9
9
  import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
10
10
  import { resolveEffectiveAgentConfigForAgent, resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
11
11
  import "../../../packages/browser-control-contract/src/index.js";
@@ -74,7 +74,9 @@ import "../capabilities/index.js";
74
74
  import { sortToolsForPromptCache } from "./cache-stability.js";
75
75
  //#region src/agent/tools/factory.ts
76
76
  init_agent_scope();
77
+ init_browser_tab_binding_repository();
77
78
  init_logger();
79
+ init_sqlite();
78
80
  init_paths_state();
79
81
  const log = createLogger("AgentToolsFactory");
80
82
  /** Channels where `clarify` can block for a user answer (web UI, Telegram, CLI readline). */
@@ -219,10 +221,10 @@ var AgentToolsFactory = class AgentToolsFactory {
219
221
  const imageGenerateTool = createImageGenerateTool({
220
222
  config: cfg,
221
223
  workspace,
222
- agentId: options?.agentId ?? (cfg ? resolveDefaultAgentId(cfg) : "main")
224
+ agentId: options?.agentId ?? (cfg ? resolveDefaultAgentId() : "main")
223
225
  });
224
226
  const agentId = options?.agentId;
225
- const resolvedAgentId = agentId ?? (cfg ? resolveDefaultAgentId(cfg) : "main");
227
+ const resolvedAgentId = agentId ?? (cfg ? resolveDefaultAgentId() : "main");
226
228
  const currentConversationId = () => options?.conversationId ?? this.deps.getCurrentContext?.()?.conversationId;
227
229
  const deliveryContext = () => {
228
230
  if (currentConversationId() && getSessionMetadata(currentConversationId())?.sessionType === "heartbeat") throw new Error("Heartbeat notifications must be returned in the final response for policy-controlled delivery.");
@@ -235,8 +237,7 @@ var AgentToolsFactory = class AgentToolsFactory {
235
237
  return key ? getSessionMetadata(key)?.projectId : void 0;
236
238
  };
237
239
  const getCommandIsolation = () => {
238
- const config = this.deps.getConfig?.();
239
- return config ? (currentConversationId() ? resolveEffectiveAgentConfigForSession(config, currentConversationId()) : resolveEffectiveAgentConfigForAgent(config, resolvedAgentId)).config.runtime.commandIsolation : void 0;
240
+ return this.deps.getConfig?.() ? (currentConversationId() ? resolveEffectiveAgentConfigForSession(currentConversationId()) : resolveEffectiveAgentConfigForAgent(resolvedAgentId)).config.runtime.commandIsolation : void 0;
240
241
  };
241
242
  const externalTools = createDefaultExternalToolGatewayTools({
242
243
  workspace,
@@ -442,7 +443,8 @@ var AgentToolsFactory = class AgentToolsFactory {
442
443
  getLocalAppService: this.deps.getLocalAppService,
443
444
  getChatPreviewService: this.deps.getChatPreviewService,
444
445
  dispatchTaskEvents: this.deps.dispatchTaskEvents,
445
- dispatchTaskRuns: this.deps.dispatchTaskRuns
446
+ dispatchTaskRuns: this.deps.dispatchTaskRuns,
447
+ onAgentCatalogMutate: this.deps.onAgentCatalogMutate
446
448
  })] : [],
447
449
  ...cfg?.computer.enabled && this.deps.endpointTools && this.deps.gatewayClarify ? [createComputerUseTool({
448
450
  runtime: this.ensureComputerRuntime(),
@@ -530,8 +532,7 @@ var AgentToolsFactory = class AgentToolsFactory {
530
532
  "xopc_tool_execute"
531
533
  ].some((name) => !disabled?.has(name))) {
532
534
  const dataTools = () => {
533
- const config = this.deps.getConfig?.();
534
- const policies = config ? (currentConversationId() ? resolveEffectiveAgentConfigForSession(config, currentConversationId()) : resolveEffectiveAgentConfigForAgent(config, resolvedAgentId)).config.tools : void 0;
535
+ const policies = this.deps.getConfig?.() ? (currentConversationId() ? resolveEffectiveAgentConfigForSession(currentConversationId()) : resolveEffectiveAgentConfigForAgent(resolvedAgentId)).config.tools : void 0;
535
536
  if (policies?.data_batch?.mode === "deny") return [];
536
537
  return filterToolsByDisabledSet(core, disabled).filter((tool) => policies?.[tool.name]?.mode !== "deny");
537
538
  };
@@ -128,7 +128,7 @@ async function loadInputImages(params) {
128
128
  return out;
129
129
  }
130
130
  function resolveImageGenerationModelConfigForTool(params) {
131
- const explicit = params.cfg ? getAgentDefaultImageGenerationModelConfig(params.cfg, params.agentId) : void 0;
131
+ const explicit = params.cfg ? getAgentDefaultImageGenerationModelConfig(params.agentId) : void 0;
132
132
  if (explicit?.primary?.trim()) {
133
133
  const plan = buildCapabilityPlansForConfig(params.cfg)["image-generation"];
134
134
  const primarySlash = explicit.primary.indexOf("/");
@@ -49,9 +49,8 @@ function createWorkflowTool(deps) {
49
49
  details: { error: message }
50
50
  };
51
51
  }
52
- const config = deps.getConfig();
53
52
  const parentConversationId = deps.getCurrentConversationId?.()?.trim();
54
- const agentId = extractProfileAgentId(parentConversationId, config);
53
+ const agentId = extractProfileAgentId(parentConversationId);
55
54
  const goal = params.goal?.trim() || "";
56
55
  const taskRunId = params.taskRunId?.trim();
57
56
  const source = parentConversationId ? {
@@ -145,7 +144,7 @@ function resolveDefinitionId(params, catalog, config, conversationId) {
145
144
  catalog.load(name);
146
145
  return name;
147
146
  }
148
- const configuredDefault = config ? resolveEffectiveAgentProfileForSession(config, conversationId).config.workflows.default : void 0;
147
+ const configuredDefault = config ? resolveEffectiveAgentProfileForSession(conversationId).config.workflows.default : void 0;
149
148
  if (configuredDefault) {
150
149
  catalog.load(configuredDefault);
151
150
  return configuredDefault;
@@ -9,12 +9,12 @@ import { type ProjectService } from '../../projects/index.js';
9
9
  import type { LocalAppService } from '../../local-apps/index.js';
10
10
  import type { ChatPreviewService } from '../../chat-previews/index.js';
11
11
  declare const XopcUseToolSchema: import("@sinclair/typebox").TObject<{
12
- mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"context">, import("@sinclair/typebox").TLiteral<"scene">, import("@sinclair/typebox").TLiteral<"project">, import("@sinclair/typebox").TLiteral<"automation">, import("@sinclair/typebox").TLiteral<"note">, import("@sinclair/typebox").TLiteral<"task">, import("@sinclair/typebox").TLiteral<"task_run">, import("@sinclair/typebox").TLiteral<"local_app">, import("@sinclair/typebox").TLiteral<"chat_preview">, import("@sinclair/typebox").TLiteral<"settings">]>;
12
+ mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"context">, import("@sinclair/typebox").TLiteral<"scene">, import("@sinclair/typebox").TLiteral<"project">, import("@sinclair/typebox").TLiteral<"automation">, import("@sinclair/typebox").TLiteral<"note">, import("@sinclair/typebox").TLiteral<"task">, import("@sinclair/typebox").TLiteral<"task_run">, import("@sinclair/typebox").TLiteral<"local_app">, import("@sinclair/typebox").TLiteral<"chat_preview">, import("@sinclair/typebox").TLiteral<"agent">, import("@sinclair/typebox").TLiteral<"settings">]>;
13
13
  command: import("@sinclair/typebox").TString;
14
14
  args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>>;
15
15
  dryRun: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
16
16
  }>;
17
- export type XopcUseMode = 'context' | 'scene' | 'project' | 'automation' | 'note' | 'task' | 'task_run' | 'chat_preview' | 'local_app' | 'settings';
17
+ export type XopcUseMode = 'context' | 'scene' | 'project' | 'automation' | 'note' | 'task' | 'task_run' | 'chat_preview' | 'local_app' | 'agent' | 'settings';
18
18
  export interface XopcUseToolInput {
19
19
  mode: XopcUseMode;
20
20
  command: string;
@@ -36,6 +36,7 @@ export interface XopcUseToolDeps {
36
36
  getChatPreviewService?: () => ChatPreviewService | undefined;
37
37
  dispatchTaskEvents?: () => void;
38
38
  dispatchTaskRuns?: () => void;
39
+ onAgentCatalogMutate?: () => void;
39
40
  }
40
41
  type XopcUseDetails = {
41
42
  mode: XopcUseMode;
@@ -7,11 +7,11 @@ import { init_src } from "../../../packages/gateway-contract/src/index.js";
7
7
  import { TaskRepository } from "../../tasks/task-repository.js";
8
8
  import { TaskRunRepository } from "../../tasks/task-run-repository.js";
9
9
  import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
10
- import "../../storage/sqlite/index.js";
10
+ import { init_sqlite } from "../../storage/sqlite/index.js";
11
11
  import "../../activity/index.js";
12
- import { getDefaultAgentId, init_resolve_route } from "../../routing/resolve-route.js";
13
12
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
14
13
  import "../../capabilities/runtime/dispatcher.js";
14
+ import { getDefaultAgentId, init_resolve_route } from "../../routing/resolve-route.js";
15
15
  import { resolveProjectAgentId } from "../../projects/project-agent.js";
16
16
  import "../../projects/index.js";
17
17
  import { TaskDeletionService } from "../../tasks/task-deletion-service.js";
@@ -27,6 +27,7 @@ import { Type } from "@sinclair/typebox";
27
27
  //#region src/agent/tools/xopc-use-tool.ts
28
28
  init_src();
29
29
  init_resolve_route();
30
+ init_sqlite();
30
31
  const XopcUseToolSchema = Type.Object({
31
32
  mode: Type.Union([
32
33
  Type.Literal("context"),
@@ -38,9 +39,10 @@ const XopcUseToolSchema = Type.Object({
38
39
  Type.Literal("task_run"),
39
40
  Type.Literal("local_app"),
40
41
  Type.Literal("chat_preview"),
42
+ Type.Literal("agent"),
41
43
  Type.Literal("settings")
42
44
  ]),
43
- command: Type.String({ description: "Context resolve takes an explicit AppContextEnvelope; never guess a current page. Automation draft/repair_draft accept prompt/id, agentId?, language?, idempotencyKey?; simulate explains an automation without running it. Local_app record_acceptance records supplied checks and sourceHash, not proof that checks were executed. Project create accepts idempotencyKey; update/pin/unpin/delete accepts {projectId, expectedVersion?, idempotencyKey?}; stable retries require the original expectedVersion. Delete preserves workspace files and does not confirm external execution stopped. Project milestone writes support idempotencyKey; update_milestone/delete_milestone require original expectedRevision for stable retries, and create_update requires original expectedVersion. TaskRun cancel accepts idempotencyKey and expectedVersion, and does not confirm external execution stopped. Automation diagnostics: get_run/run_events {runId}, metrics {}, product_events {eventType, source?, payloadKey?, payloadValue?, limit?}; payload filters require both key and value. Automation also supports cancel/read {runId, idempotencyKey?} and read_all {projectId?, idempotencyKey?}; omitted projectId means all projects. Cancel acceptance is not confirmation of stopping. Object command. Scene commands: templates, list, get {id}, mail_accounts, mail_search {accountId, query}, mail_sources, read_notes {id}, preflight/start {templateKey, templateVersion, goal, scope, permissions}, configure {id, expectedRevision, goal, scope, permissions}, transition {id, expectedRevision, status: paused|active|completed|archived}, check {id}, notes {id, expectedRevision, content, validUntil?}, work_item {id, subjectId, accountId, dueAt}, update_work_item {workItemId, expectedRevision, dueAt?, status?}, schedule {id, triggerKey, expectedRevision, schedule}, results {id?}, feedback {presentationId, expectedRevision, rating}, mark_read {presentationId, read}, diagnostics, get_preferences, set_preferences {expectedRevision, ...preferences}. Start and check accept a stable requestId for retries. Scenes prepare read-only suggestions and drafts; never send mail. Only create a scene for work explicitly delegated by the user; inspect existing scenes first. Supports project list/get/create/update/resolve_workspace/list_milestones/create_milestone/update_milestone/list_updates/create_update, automation list/get/create/update/delete/run/rerun/pause/resume/history (rerun takes runId; run/rerun accept idempotencyKey), note list/get/project_summaries/history {noteId}/snapshot {noteId, timestamp}/create/append/update/preview_edit/delete, task list/get/create/update_dependencies/add_context/remove_context/command/delete, task_run list/get/cancel, chat_preview create/revise/get, local_app list/get/create/validate, and settings open." }),
45
+ command: Type.String({ description: "Context resolve takes an explicit AppContextEnvelope; never guess a current page. Automation draft/repair_draft accept prompt/id, agentId?, language?, idempotencyKey?; simulate explains an automation without running it. Local_app record_acceptance records supplied checks and sourceHash, not proof that checks were executed. Agent commands: list, get {id}, create {id, profile, workspace?, models?, skills?, tools?, workflows?, runtime?, idempotencyKey?}, update {id, expectedRevision, patch, idempotencyKey?}, set_default {id, expectedRevision, idempotencyKey?}, disable/delete/purge {id, expectedRevision, idempotencyKey?}. Purge also removes on-disk data. Project create accepts idempotencyKey; update/pin/unpin/delete accepts {projectId, expectedVersion?, idempotencyKey?}; stable retries require the original expectedVersion. Delete preserves workspace files and does not confirm external execution stopped. Project milestone writes support idempotencyKey; update_milestone/delete_milestone require original expectedRevision for stable retries, and create_update requires original expectedVersion. TaskRun cancel accepts idempotencyKey and expectedVersion, and does not confirm external execution stopped. Automation diagnostics: get_run/run_events {runId}, metrics {}, product_events {eventType, source?, payloadKey?, payloadValue?, limit?}; payload filters require both key and value. Automation also supports cancel/read {runId, idempotencyKey?} and read_all {projectId?, idempotencyKey?}; omitted projectId means all projects. Cancel acceptance is not confirmation of stopping. Object command. Scene commands: templates, list, get {id}, mail_accounts, mail_search {accountId, query}, mail_sources, read_notes {id}, preflight/start {templateKey, templateVersion, goal, scope, permissions}, configure {id, expectedRevision, goal, scope, permissions}, transition {id, expectedRevision, status: paused|active|completed|archived}, check {id}, notes {id, expectedRevision, content, validUntil?}, work_item {id, subjectId, accountId, dueAt}, update_work_item {workItemId, expectedRevision, dueAt?, status?}, schedule {id, triggerKey, expectedRevision, schedule}, results {id?}, feedback {presentationId, expectedRevision, rating}, mark_read {presentationId, read}, diagnostics, get_preferences, set_preferences {expectedRevision, ...preferences}. Start and check accept a stable requestId for retries. Scenes prepare read-only suggestions and drafts; never send mail. Only create a scene for work explicitly delegated by the user; inspect existing scenes first. Supports project list/get/create/update/resolve_workspace/list_milestones/create_milestone/update_milestone/list_updates/create_update, automation list/get/create/update/delete/run/rerun/pause/resume/history (rerun takes runId; run/rerun accept idempotencyKey), note list/get/project_summaries/history {noteId}/snapshot {noteId, timestamp}/create/append/update/preview_edit/delete, task list/get/create/update_dependencies/add_context/remove_context/command/delete, task_run list/get/cancel, chat_preview create/revise/get, local_app list/get/create/validate, and settings open." }),
44
46
  args: Type.Optional(Type.Record(Type.String(), Type.Any())),
45
47
  dryRun: Type.Optional(Type.Boolean({ description: "Validate and preview the action without mutating xopc state." }))
46
48
  });
@@ -412,6 +414,52 @@ function optionalProjectWorkspaceRootArg(args) {
412
414
  if (args.workspacePath !== void 0) return optionalString(args.workspacePath);
413
415
  if (args.path !== void 0) return optionalString(args.path);
414
416
  }
417
+ async function handleAgent(command, args, dryRun, capabilities, deps, toolCallId, signal) {
418
+ const readCommands = new Set(["list", "get"]);
419
+ const writeCommands = new Set([
420
+ "create",
421
+ "update",
422
+ "set_default",
423
+ "disable",
424
+ "delete",
425
+ "purge"
426
+ ]);
427
+ if (!readCommands.has(command) && !writeCommands.has(command)) return {
428
+ ok: false,
429
+ error: `Unsupported agent command: ${command}`
430
+ };
431
+ const operation = `xopc.agents.${command}`;
432
+ const { idempotencyKey, ...fields } = args;
433
+ if (idempotencyKey !== void 0 && !trimString(idempotencyKey)) return {
434
+ ok: false,
435
+ error: "idempotencyKey must be a non-empty string"
436
+ };
437
+ const input = command === "list" ? {} : fields;
438
+ const caller = {
439
+ principalId: `agent:${deps.getCurrentAgentId?.() ?? "main"}`,
440
+ surface: "agent",
441
+ scopes: writeCommands.has(command) ? ["gateway.admin"] : ["agents.read"],
442
+ actor: {
443
+ kind: "agent",
444
+ id: deps.getCurrentAgentId?.() ?? "main"
445
+ },
446
+ authorize: deps.authorizeCapability ?? (() => true),
447
+ signal
448
+ };
449
+ if (dryRun && writeCommands.has(command)) return {
450
+ ok: true,
451
+ dryRun: true,
452
+ action: command,
453
+ input: await capabilities.validateInput(operation, input, caller)
454
+ };
455
+ const expected = writeCommands.has(command) ? {
456
+ ...capabilities.describe(operation, caller),
457
+ idempotencyKey: trimString(idempotencyKey) ?? toolCallId
458
+ } : void 0;
459
+ const result = await capabilities.call(operation, input, caller, expected);
460
+ if (writeCommands.has(command)) deps.onAgentCatalogMutate?.();
461
+ return result;
462
+ }
415
463
  async function handleProject(command, args, deps, dryRun, capabilities) {
416
464
  const projects = deps.getProjectService?.();
417
465
  if (!projects) return {
@@ -1211,7 +1259,7 @@ async function handleTask(command, args, deps, dryRun, capabilities) {
1211
1259
  projects: projectService,
1212
1260
  explicitAgentId,
1213
1261
  projectId
1214
- }) : explicitAgentId ?? (config ? getDefaultAgentId(config) : deps.getCurrentAgentId?.() ?? "main");
1262
+ }) : explicitAgentId ?? (config ? getDefaultAgentId() : deps.getCurrentAgentId?.() ?? "main");
1215
1263
  const input = {
1216
1264
  idempotencyKey: trimString(args.idempotencyKey) ?? randomUUID(),
1217
1265
  title: trimString(args.title) ?? objective,
@@ -1638,7 +1686,7 @@ function createXopcUseTool(deps) {
1638
1686
  return {
1639
1687
  name: "xopc_use",
1640
1688
  label: "XOPC Use",
1641
- description: "Operate first-class xopc objects through one safe entry point. Use chat_preview for lightweight UI mockups in the current conversation; do not create a Local App unless the user asks for a durable app. Local App capabilities takes extensionId and discovers already granted bindings. Local App invoke requires extensionId, the discovered manifestDigest, capabilityId and a pinned call {majorVersion, descriptorDigest, input, idempotencyKey for writes}. Never manufacture grants or change a retry key after an uncertain write. Use for scenes, projects, automations, notes, tasks, TaskRuns, chat previews, local apps, and exact settings jump targets instead of editing storage files directly. For non-trivial object changes, load the built-in manual first with tool_manual({ tool: \"xopc_use\" }).",
1689
+ description: "Operate first-class xopc objects through one safe entry point. Use chat_preview for lightweight UI mockups in the current conversation; do not create a Local App unless the user asks for a durable app. Local App capabilities takes extensionId and discovers already granted bindings. Local App invoke requires extensionId, the discovered manifestDigest, capabilityId and a pinned call {majorVersion, descriptorDigest, input, idempotencyKey for writes}. Never manufacture grants or change a retry key after an uncertain write. Use for Agents, scenes, projects, automations, notes, tasks, TaskRuns, chat previews, local apps, and exact settings jump targets instead of editing storage files directly. For non-trivial object changes, load the built-in manual first with tool_manual({ tool: \"xopc_use\" }).",
1642
1690
  parameters: XopcUseToolSchema,
1643
1691
  mutatesWorkspace: true,
1644
1692
  mutationScope: "external",
@@ -2078,7 +2126,7 @@ function createXopcUseTool(deps) {
2078
2126
  kind: "xopc_use",
2079
2127
  toolCallId
2080
2128
  }
2081
- }, async () => mode === "scene" ? await handleScene(command, args, deps, dryRun) : mode === "project" ? await handleProject(command, args, deps, dryRun, capabilities) : mode === "automation" ? await handleAutomation(command, args, deps, dryRun, capabilities) : mode === "note" ? await handleNote(command, args, deps, dryRun, capabilities) : mode === "task" ? await handleTask(command, args, deps, dryRun, capabilities) : mode === "task_run" ? await handleTaskRun(command, args, dryRun, deps, capabilities) : mode === "local_app" ? await handleLocalApp(command, args, deps, dryRun) : mode === "chat_preview" ? await handleChatPreview(command, args, deps, dryRun) : {
2129
+ }, async () => mode === "scene" ? await handleScene(command, args, deps, dryRun) : mode === "agent" ? await handleAgent(command, args, dryRun, capabilities, deps, toolCallId, signal) : mode === "project" ? await handleProject(command, args, deps, dryRun, capabilities) : mode === "automation" ? await handleAutomation(command, args, deps, dryRun, capabilities) : mode === "note" ? await handleNote(command, args, deps, dryRun, capabilities) : mode === "task" ? await handleTask(command, args, deps, dryRun, capabilities) : mode === "task_run" ? await handleTaskRun(command, args, dryRun, deps, capabilities) : mode === "local_app" ? await handleLocalApp(command, args, deps, dryRun) : mode === "chat_preview" ? await handleChatPreview(command, args, deps, dryRun) : {
2082
2130
  ok: false,
2083
2131
  error: `Unsupported mode: ${String(mode)}`
2084
2132
  });
@@ -3,8 +3,7 @@ import { AgentToolsFactory } from "../tools/factory.js";
3
3
  //#region src/agent/workflow/workflow-child-tools.ts
4
4
  /** Builds the tool set for workflow child agents (wired from gateway to avoid cycles). */
5
5
  function buildWorkflowChildTools(childOptions) {
6
- const config = childOptions.getConfig();
7
- const profile = config ? childOptions.browserConversationId ? resolveEffectiveAgentProfileForSession(config, childOptions.browserConversationId) : childOptions.agentId ? resolveEffectiveAgentProfile(config, childOptions.agentId) : resolveEffectiveAgentProfileForSession(config, void 0) : void 0;
6
+ const profile = childOptions.getConfig() ? childOptions.browserConversationId ? resolveEffectiveAgentProfileForSession(childOptions.browserConversationId) : childOptions.agentId ? resolveEffectiveAgentProfile(childOptions.agentId) : resolveEffectiveAgentProfileForSession(void 0) : void 0;
8
7
  return new AgentToolsFactory({
9
8
  workspace: childOptions.workspace,
10
9
  bus: childOptions.bus,
@@ -48,7 +48,7 @@ export declare class WorkspaceRuntimeRegistry {
48
48
  values(): IterableIterator<WorkspaceRuntime>;
49
49
  /**
50
50
  * Tear down every runtime (shutdown memory providers) and forget the cache.
51
- * Used by `AgentManager.updateAgentDefaults` and `AgentManager.dispose`.
51
+ * Used by `AgentManager.updateRuntimeConfiguration` and `AgentManager.dispose`.
52
52
  */
53
53
  clearAll(): Promise<void>;
54
54
  }
@@ -23,7 +23,7 @@ var WorkspaceRuntimeRegistry = class {
23
23
  /** Lazily construct and cache an agent-scoped runtime for a workspace. */
24
24
  getOrCreate(resolvedPath, requestedAgentId) {
25
25
  const cfg = this.getConfig();
26
- const runtimeKey = `${normalizeAgentId(requestedAgentId?.trim() || resolveAgentIdForWorkspacePath(cfg, resolvedPath))}\u0000${resolvedPath}`;
26
+ const runtimeKey = `${normalizeAgentId(requestedAgentId?.trim() || resolveAgentIdForWorkspacePath(resolvedPath))}\u0000${resolvedPath}`;
27
27
  const existing = this.runtimes.get(runtimeKey);
28
28
  if (existing) return existing;
29
29
  const { memoryManager } = this.userContextRuntimes.getOrCreate(cfg);
@@ -50,7 +50,7 @@ var WorkspaceRuntimeRegistry = class {
50
50
  }
51
51
  /**
52
52
  * Tear down every runtime (shutdown memory providers) and forget the cache.
53
- * Used by `AgentManager.updateAgentDefaults` and `AgentManager.dispose`.
53
+ * Used by `AgentManager.updateRuntimeConfiguration` and `AgentManager.dispose`.
54
54
  */
55
55
  async clearAll() {
56
56
  this.runtimes.clear();
@@ -0,0 +1,3 @@
1
+ import { type CapabilityDispatcher } from '../capabilities/runtime/dispatcher.js';
2
+ /** Register Agent catalog operations for UI, HTTP, CLI, and conversational tools. */
3
+ export declare function registerAgentCapabilities(dispatcher: CapabilityDispatcher): void;
@@ -0,0 +1,238 @@
1
+ import { AgentEntrySchema, EffectiveAgentConfigSchema } from "../agent-config/schema.js";
2
+ import { resolveEffectiveAgentConfig } from "../agent-config/resolver.js";
3
+ import { init_agent_config } from "../agent-config/index.js";
4
+ import { CapabilityError } from "../capabilities/runtime/errors.js";
5
+ import { defineAtomicCapability, defineReadCapability } from "../capabilities/runtime/dispatcher.js";
6
+ import { AgentCatalogRepository, init_repository } from "./repository.js";
7
+ import { init_agent_scope, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
8
+ import { AgentCatalogService } from "./service.js";
9
+ import { z } from "zod";
10
+ //#region src/agent-catalog/capabilities.ts
11
+ init_agent_config();
12
+ init_agent_scope();
13
+ init_repository();
14
+ const AgentIdInputSchema = z.strictObject({ id: AgentEntrySchema.shape.id });
15
+ const EmptyInputSchema = z.strictObject({});
16
+ const StoredAgentSchema = AgentEntrySchema.extend({
17
+ revision: z.number().int().positive(),
18
+ provisioningState: z.enum([
19
+ "pending",
20
+ "ready",
21
+ "error"
22
+ ]),
23
+ provisioningError: z.string().optional(),
24
+ createdAt: z.number().int().nonnegative(),
25
+ updatedAt: z.number().int().nonnegative(),
26
+ deletedAt: z.number().int().nonnegative().optional()
27
+ });
28
+ const AgentViewSchema = z.object({
29
+ agent: StoredAgentSchema,
30
+ effective: EffectiveAgentConfigSchema
31
+ });
32
+ const AgentMutationOutputSchema = AgentViewSchema.extend({ ok: z.literal(true) });
33
+ const AgentListOutputSchema = z.object({
34
+ ok: z.literal(true),
35
+ defaultAgentId: AgentEntrySchema.shape.id,
36
+ catalogRevision: z.number().int().positive(),
37
+ agents: z.array(AgentViewSchema)
38
+ });
39
+ const AgentUpdateInputSchema = z.strictObject({
40
+ id: AgentEntrySchema.shape.id,
41
+ expectedRevision: z.number().int().positive(),
42
+ patch: AgentEntrySchema.omit({ id: true }).partial()
43
+ });
44
+ const AgentSetDefaultInputSchema = z.strictObject({
45
+ id: AgentEntrySchema.shape.id,
46
+ expectedRevision: z.number().int().positive()
47
+ });
48
+ const AgentDeleteOutputSchema = z.object({
49
+ ok: z.literal(true),
50
+ deleted: z.literal(true),
51
+ agent: StoredAgentSchema,
52
+ removedBindings: z.number().int().nonnegative()
53
+ });
54
+ function effective(repository, agent) {
55
+ const { revision: _revision, provisioningState: _state, provisioningError: _error, createdAt: _created, updatedAt: _updated, deletedAt: _deleted, ...entry } = agent;
56
+ return resolveEffectiveAgentConfig({
57
+ defaults: repository.getSettings().defaults,
58
+ agent: entry,
59
+ defaultWorkspace: resolveAgentWorkspaceDir
60
+ }).config;
61
+ }
62
+ function view(repository, agent) {
63
+ return {
64
+ agent,
65
+ effective: effective(repository, agent)
66
+ };
67
+ }
68
+ function requireAgent(repository, id) {
69
+ const agent = repository.get(id);
70
+ if (!agent) throw new CapabilityError("NOT_FOUND", `Agent "${id}" not found`);
71
+ return agent;
72
+ }
73
+ function translateMutationError(execute) {
74
+ try {
75
+ return execute();
76
+ } catch (error) {
77
+ if (error instanceof CapabilityError) throw error;
78
+ const message = error instanceof Error ? error.message : String(error);
79
+ throw new CapabilityError(/not found/i.test(message) ? "NOT_FOUND" : /conflict|already exists|default Agent|cannot be disabled|not available/i.test(message) ? "REVISION_CONFLICT" : "INVALID_INPUT", message);
80
+ }
81
+ }
82
+ /** Register Agent catalog operations for UI, HTTP, CLI, and conversational tools. */
83
+ function registerAgentCapabilities(dispatcher) {
84
+ const repository = new AgentCatalogRepository();
85
+ const service = new AgentCatalogService(repository);
86
+ const readPolicy = {
87
+ majorVersion: 1,
88
+ effect: "read",
89
+ surfaces: [
90
+ "http",
91
+ "agent",
92
+ "cli"
93
+ ],
94
+ scopes: ["agents.read"]
95
+ };
96
+ const writePolicy = {
97
+ majorVersion: 1,
98
+ effect: "local-write",
99
+ surfaces: [
100
+ "http",
101
+ "agent",
102
+ "cli"
103
+ ],
104
+ scopes: ["gateway.admin"]
105
+ };
106
+ dispatcher.register(defineReadCapability({
107
+ ...readPolicy,
108
+ id: "xopc.agents.list",
109
+ description: "List Agent definitions with their effective inherited configuration.",
110
+ input: EmptyInputSchema,
111
+ output: AgentListOutputSchema,
112
+ execute() {
113
+ const settings = repository.getSettings();
114
+ return {
115
+ ok: true,
116
+ defaultAgentId: settings.defaultAgentId,
117
+ catalogRevision: settings.revision,
118
+ agents: repository.list().map((agent) => view(repository, agent))
119
+ };
120
+ }
121
+ }));
122
+ dispatcher.register(defineReadCapability({
123
+ ...readPolicy,
124
+ id: "xopc.agents.get",
125
+ description: "Read one Agent definition and its effective inherited configuration.",
126
+ input: AgentIdInputSchema,
127
+ output: AgentMutationOutputSchema,
128
+ execute({ id }) {
129
+ return {
130
+ ok: true,
131
+ ...view(repository, requireAgent(repository, id))
132
+ };
133
+ }
134
+ }));
135
+ dispatcher.register(defineAtomicCapability({
136
+ ...writePolicy,
137
+ id: "xopc.agents.create",
138
+ description: "Create a complete Agent definition and queue recoverable directory provisioning.",
139
+ input: AgentEntrySchema,
140
+ output: AgentMutationOutputSchema,
141
+ execute(input) {
142
+ return {
143
+ ok: true,
144
+ ...view(repository, translateMutationError(() => repository.create(input)))
145
+ };
146
+ },
147
+ afterCommit: () => service.resumePendingProvisioning()
148
+ }));
149
+ dispatcher.register(defineAtomicCapability({
150
+ ...writePolicy,
151
+ id: "xopc.agents.update",
152
+ description: "Update an Agent at an exact revision.",
153
+ input: AgentUpdateInputSchema,
154
+ output: AgentMutationOutputSchema,
155
+ execute({ id, expectedRevision, patch }) {
156
+ const { revision: _revision, provisioningState: _state, provisioningError: _error, createdAt: _created, updatedAt: _updated, deletedAt: _deleted, ...entry } = requireAgent(repository, id);
157
+ return {
158
+ ok: true,
159
+ ...view(repository, translateMutationError(() => repository.update(id, expectedRevision, {
160
+ ...entry,
161
+ ...patch,
162
+ id
163
+ }, { reprovision: true })))
164
+ };
165
+ },
166
+ afterCommit: () => service.resumePendingProvisioning()
167
+ }));
168
+ dispatcher.register(defineAtomicCapability({
169
+ ...writePolicy,
170
+ id: "xopc.agents.set_default",
171
+ description: "Select the global default Agent at an exact catalog revision.",
172
+ input: AgentSetDefaultInputSchema,
173
+ output: z.object({
174
+ ok: z.literal(true),
175
+ defaultAgentId: AgentEntrySchema.shape.id,
176
+ catalogRevision: z.number().int().positive()
177
+ }),
178
+ execute({ id, expectedRevision }) {
179
+ const settings = translateMutationError(() => repository.setDefault(id, expectedRevision));
180
+ return {
181
+ ok: true,
182
+ defaultAgentId: settings.defaultAgentId,
183
+ catalogRevision: settings.revision
184
+ };
185
+ }
186
+ }));
187
+ dispatcher.register(defineAtomicCapability({
188
+ ...writePolicy,
189
+ id: "xopc.agents.disable",
190
+ description: "Disable a non-default Agent at an exact revision.",
191
+ input: z.strictObject({
192
+ id: AgentEntrySchema.shape.id,
193
+ expectedRevision: z.number().int().positive()
194
+ }),
195
+ output: AgentMutationOutputSchema,
196
+ execute({ id, expectedRevision }) {
197
+ const { revision: _revision, provisioningState: _state, provisioningError: _error, createdAt: _created, updatedAt: _updated, deletedAt: _deleted, ...entry } = requireAgent(repository, id);
198
+ return {
199
+ ok: true,
200
+ ...view(repository, translateMutationError(() => repository.update(id, expectedRevision, {
201
+ ...entry,
202
+ enabled: false,
203
+ id
204
+ })))
205
+ };
206
+ }
207
+ }));
208
+ for (const purge of [false, true]) dispatcher.register(defineAtomicCapability({
209
+ ...writePolicy,
210
+ id: purge ? "xopc.agents.purge" : "xopc.agents.delete",
211
+ description: purge ? "Delete an Agent and remove its state and workspace after commit." : "Delete an Agent definition without removing workspace files.",
212
+ input: z.strictObject({
213
+ id: AgentEntrySchema.shape.id,
214
+ expectedRevision: z.number().int().positive()
215
+ }),
216
+ output: AgentDeleteOutputSchema,
217
+ ...purge ? { prepare: ({ id, expectedRevision }) => {
218
+ const current = requireAgent(repository, id);
219
+ if (current.revision !== expectedRevision) throw new CapabilityError("REVISION_CONFLICT", "Agent changed");
220
+ service.validatePurgeEntry(current, repository.getSettings().defaultAgentId);
221
+ } } : {},
222
+ execute({ id, expectedRevision }) {
223
+ if (requireAgent(repository, id).revision !== expectedRevision) throw new CapabilityError("REVISION_CONFLICT", "Agent changed");
224
+ const result = translateMutationError(() => repository.delete(id, { purge }));
225
+ return {
226
+ ok: true,
227
+ deleted: true,
228
+ agent: result.agent,
229
+ removedBindings: result.removedBindings
230
+ };
231
+ },
232
+ ...purge ? { afterCommit: async () => {
233
+ if ((await service.resumePendingPurge()).length) throw new CapabilityError("UNAVAILABLE", "Agent was deleted; data purge is pending retry");
234
+ } } : {}
235
+ }));
236
+ }
237
+ //#endregion
238
+ export { registerAgentCapabilities };
@@ -0,0 +1,15 @@
1
+ export declare const DEFAULT_AGENT_ID = "main";
2
+ /** Normalized id segment safe for directory names under `agents/<id>/`. */
3
+ export declare const STRICT_AGENT_ID_RE: RegExp;
4
+ /** Path-safe agent id. */
5
+ export declare function normalizeAgentId(value: string | undefined | null): string;
6
+ /** Derive a folder-safe id, including for display names with no ASCII characters. */
7
+ export declare function deriveAgentIdFromDisplayName(displayName: string): string;
8
+ /** Validate a new Agent id before it becomes a filesystem path segment. */
9
+ export declare function validateAgentIdForNewAgent(explicitId: string | undefined | null, displayNameForDerivation: string): {
10
+ ok: true;
11
+ agentId: string;
12
+ } | {
13
+ ok: false;
14
+ error: string;
15
+ };