@xopcai/xopc 0.0.364 → 0.0.366

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 (238) hide show
  1. package/dist/browser-ext/dist/sidepanel.js +16 -4
  2. package/dist/browser-ext/manifest.json +1 -1
  3. package/dist/extensions/telegram/xopc.extension.json +1 -1
  4. package/dist/gateway/static/root/assets/{activity-store-GvR2gZ0T.js → activity-store-SVmnh__i.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-7Ct-ZlfL.js → agent-avatar-dicebear-CS9lg5h2.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-wYj-iyqv.js → agent-defaults-settings-panel-CvUPtxS4.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agent-plugin-dialog-C9HYMhnJ.js → agent-plugin-dialog-1tRxDfjI.js} +1 -1
  8. package/dist/gateway/static/root/assets/{agents-admin-api-BkXb7VEZ.js → agents-admin-api-CVdFV-cU.js} +1 -1
  9. package/dist/gateway/static/root/assets/{agents-hPkFQ81z.js → agents-gdT0whx9.js} +3 -3
  10. package/dist/gateway/static/root/assets/{app-management-settings-panel-CjfsIn9A.js → app-management-settings-panel-CaxnUxvy.js} +1 -1
  11. package/dist/gateway/static/root/assets/{appearance-settings-qqHZ15GU.js → appearance-settings-6NKquG3v.js} +1 -1
  12. package/dist/gateway/static/root/assets/{apps-page-Ba2VkQk6.js → apps-page-BoB3MbsB.js} +1 -1
  13. package/dist/gateway/static/root/assets/{archive-plugin-CKe3qAaL.js → archive-plugin-BWtLZtK1.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automations-page-Bt8Q58ut.js → automations-page-CNngHw2c.js} +1 -1
  15. package/dist/gateway/static/root/assets/{automations-workspace-Ch0ViAJW.js → automations-workspace-BKHsdiQ8.js} +1 -1
  16. package/dist/gateway/static/root/assets/{binary-plugins-J51oS7-D.js → binary-plugins-fIhH-wg6.js} +1 -1
  17. package/dist/gateway/static/root/assets/{block-editor-ClRFbHP7.js → block-editor-BhstSZNE.js} +1 -1
  18. package/dist/gateway/static/root/assets/{browser-automation-inputs-5B3qAdmb.js → browser-automation-inputs-B6sOBxVA.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-automations-page-BjMub7JM.js → browser-automations-page-HZAKkVVt.js} +1 -1
  20. package/dist/gateway/static/root/assets/{browser-settings-page-CYrPA-Fp.js → browser-settings-page-D8IpVQI6.js} +1 -1
  21. package/dist/gateway/static/root/assets/{capabilities-CT_ZW9fT.js → capabilities-C4grvUkw.js} +1 -1
  22. package/dist/gateway/static/root/assets/{capabilities-BKu9BqPe.js → capabilities-CAIQmCrH.js} +1 -1
  23. package/dist/gateway/static/root/assets/{capabilities-page-dW6FXtOy.js → capabilities-page-DK8FJRW4.js} +2 -2
  24. package/dist/gateway/static/root/assets/{capabilities-settings-panel-gZ8auLwa.js → capabilities-settings-panel-BP2roWcM.js} +1 -1
  25. package/dist/gateway/static/root/assets/{capability-header-actions-L1NvoOUG.js → capability-header-actions-BA1M7RRP.js} +1 -1
  26. package/dist/gateway/static/root/assets/{channels-Dx5T2G73.js → channels-EQGCxr8W.js} +1 -1
  27. package/dist/gateway/static/root/assets/{chat-terminal-dock-DsCpKPBe.js → chat-terminal-dock-KS_yk1H7.js} +1 -1
  28. package/dist/gateway/static/root/assets/{computer-settings-page-6FWwxYLe.js → computer-settings-page-CGBR0KFw.js} +1 -1
  29. package/dist/gateway/static/root/assets/{connector-service-page-mtH9mEBf.js → connector-service-page-CY_3H_l9.js} +1 -1
  30. package/dist/gateway/static/root/assets/{connectors-page-DgDLaws0.js → connectors-page-CUOL6JX0.js} +1 -1
  31. package/dist/gateway/static/root/assets/{date-picker-BDcwEaIx.js → date-picker-CDSZ-PWV.js} +1 -1
  32. package/dist/gateway/static/root/assets/{dependency-picker-B_fPQBTM.js → dependency-picker-CyNH4m20.js} +1 -1
  33. package/dist/gateway/static/root/assets/{desktop-pet-CJrO9Vd_.js → desktop-pet-BsZQsQ2_.js} +1 -1
  34. package/dist/gateway/static/root/assets/{desktop-pet-settings-DYAfri9w.js → desktop-pet-settings-DMgkUy6g.js} +1 -1
  35. package/dist/gateway/static/root/assets/{device-pairing-wizard-CqRys2R8.js → device-pairing-wizard-JjbUN8y-.js} +1 -1
  36. package/dist/gateway/static/root/assets/{directory-picker-path-field-D7_qSxNZ.js → directory-picker-path-field-CBTI3tKh.js} +1 -1
  37. package/dist/gateway/static/root/assets/{extension-debug-page-BGyJpRv4.js → extension-debug-page-C7nSpOKj.js} +1 -1
  38. package/dist/gateway/static/root/assets/{extension-page-D1zBmd8F.js → extension-page-BYUjAvsZ.js} +1 -1
  39. package/dist/gateway/static/root/assets/{extension-provider-F9JzOWZ3.js → extension-provider-DaLt3bC-.js} +1 -1
  40. package/dist/gateway/static/root/assets/{extension-settings-page-CTR8AjCG.js → extension-settings-page-CRasspq0.js} +1 -1
  41. package/dist/gateway/static/root/assets/{fallback-models-Chhv4Nfv.js → fallback-models-BLJFYASE.js} +1 -1
  42. package/dist/gateway/static/root/assets/{gateway-config-swr-CoRoOG1l.js → gateway-config-swr-DIIzvDLQ.js} +1 -1
  43. package/dist/gateway/static/root/assets/{gateway-realtime-D0ygm6bc.js → gateway-realtime-DD70L42G.js} +1 -1
  44. package/dist/gateway/static/root/assets/gateway-realtime-store-DeUVEPPE.js +1 -0
  45. package/dist/gateway/static/root/assets/{gateway-settings-BVfz4Tla.js → gateway-settings-B9n5naCr.js} +1 -1
  46. package/dist/gateway/static/root/assets/{gateway-startup-retry-FDS6S6qa.js → gateway-startup-retry-D_EwU7-6.js} +1 -1
  47. package/dist/gateway/static/root/assets/{home-page-BF_9C9yW.js → home-page-BP6qAgBt.js} +1 -1
  48. package/dist/gateway/static/root/assets/{image-generation-api-BPd76jW5.js → image-generation-api-BkK22JsL.js} +1 -1
  49. package/dist/gateway/static/root/assets/{imports-page-9EnECtcl.js → imports-page-YJKcTKKr.js} +1 -1
  50. package/dist/gateway/static/root/assets/index-6JNNrzCq.js +106 -0
  51. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-MC7mG2h2.js → keyboard-shortcuts-settings-BG_kM_Rm.js} +1 -1
  52. package/dist/gateway/static/root/assets/{local-app-workbench-page-CytNu0-_.js → local-app-workbench-page-lHi21M1T.js} +1 -1
  53. package/dist/gateway/static/root/assets/{local-apps-page-c3HncHZ3.js → local-apps-page-jqthjcQO.js} +1 -1
  54. package/dist/gateway/static/root/assets/local-session-drafts-C4et6msJ.js +1 -0
  55. package/dist/gateway/static/root/assets/{locale-store-DId6-v2R.js → locale-store-CvNO-hbt.js} +1 -1
  56. package/dist/gateway/static/root/assets/{logs-page-D4aXtitd.js → logs-page-CH7W-dm5.js} +1 -1
  57. package/dist/gateway/static/root/assets/{management-settings-CRzWi_iJ.js → management-settings-DVgI_KNm.js} +1 -1
  58. package/dist/gateway/static/root/assets/{markdown-view-DQZ51j9e.js → markdown-view-DDJlD5jR.js} +1 -1
  59. package/dist/gateway/static/root/assets/{media-plugins-XLewwq2q.js → media-plugins-C25mOgs2.js} +1 -1
  60. package/dist/gateway/static/root/assets/messages-pGa2qMzG.js +3 -0
  61. package/dist/gateway/static/root/assets/models-hub-cache-DzFiL4xV.js +1 -0
  62. package/dist/gateway/static/root/assets/{note-detail-panel-BgbByI-4.js → note-detail-panel-kyX-n1db.js} +3 -3
  63. package/dist/gateway/static/root/assets/{notes-api-Byt65v3r.js → notes-api-CKLw9vjk.js} +1 -1
  64. package/dist/gateway/static/root/assets/{notes-page-R2BX5XCE.js → notes-page-CLZygZlm.js} +1 -1
  65. package/dist/gateway/static/root/assets/{oauth-api-BYsCbyGZ.js → oauth-api-CC5KkSgG.js} +1 -1
  66. package/dist/gateway/static/root/assets/{page-context-capture-button-RBp1QK0F.js → page-context-capture-button-KX9mrcJW.js} +1 -1
  67. package/dist/gateway/static/root/assets/{personal-page-F0jTBWva.js → personal-page-DnXlcJNJ.js} +1 -1
  68. package/dist/gateway/static/root/assets/{product-open-page-BtDK68qb.js → product-open-page-D7pknlCh.js} +1 -1
  69. package/dist/gateway/static/root/assets/{project-detail-page-DmQEm0yH.js → project-detail-page-DhV9DPj8.js} +1 -1
  70. package/dist/gateway/static/root/assets/{projects-page-CrLQvkHX.js → projects-page-D181xkFw.js} +1 -1
  71. package/dist/gateway/static/root/assets/{registry-api-7F2WNEZC.js → registry-api-CiN49wvk.js} +1 -1
  72. package/dist/gateway/static/root/assets/{remote-access-hub-C25_hQAd.js → remote-access-hub-CQnBARQW.js} +1 -1
  73. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-B0c120iI.js → runtime-tools-settings-panel-wZjlSBiM.js} +1 -1
  74. package/dist/gateway/static/root/assets/{scenes-page-DM64yMnx.js → scenes-page-DWt54veq.js} +1 -1
  75. package/dist/gateway/static/root/assets/{schema-form-DQpQc9tH.js → schema-form-CMB61TV1.js} +1 -1
  76. package/dist/gateway/static/root/assets/secret-input-D93UrW4C.js +1 -0
  77. package/dist/gateway/static/root/assets/{send-session-input-D1oc6BC6.js → send-session-input-jH6MQwdZ.js} +1 -1
  78. package/dist/gateway/static/root/assets/{session-api-N3N37MrR.js → session-api-CW2X7g_U.js} +1 -1
  79. package/dist/gateway/static/root/assets/{session-manager-CMGUwtbN.js → session-manager-BDpdi3lF.js} +2 -2
  80. package/dist/gateway/static/root/assets/{sessions-page-DvDO8LtA.js → sessions-page-DPEdjUdR.js} +1 -1
  81. package/dist/gateway/static/root/assets/settings-advanced-gate-B6WGnTLY.js +1 -0
  82. package/dist/gateway/static/root/assets/{settings-page-GgBEp6O7.js → settings-page-Ch71KQjb.js} +1 -1
  83. package/dist/gateway/static/root/assets/{setup-status-panel-10bMi6yL.js → setup-status-panel-C7sLy8Hl.js} +1 -1
  84. package/dist/gateway/static/root/assets/{share-link-dialog-TBBGJPfT.js → share-link-dialog-DCSmx-Rl.js} +1 -1
  85. package/dist/gateway/static/root/assets/{share-preview-page-DyRLPsPv.js → share-preview-page-C93IM3QK.js} +1 -1
  86. package/dist/gateway/static/root/assets/{shares-api-DU0fHP2G.js → shares-api-B4rLfG3l.js} +1 -1
  87. package/dist/gateway/static/root/assets/{shares-settings-DJ1ME-XM.js → shares-settings-C_6idV8e.js} +1 -1
  88. package/dist/gateway/static/root/assets/{skill-api-1Puv6wOz.js → skill-api-sKX8SSlQ.js} +1 -1
  89. package/dist/gateway/static/root/assets/{skill-reload-api-ClyFqHk7.js → skill-reload-api-Ro-s69NW.js} +1 -1
  90. package/dist/gateway/static/root/assets/{skills-page-D52pEr5x.js → skills-page-TsrjLYcI.js} +1 -1
  91. package/dist/gateway/static/root/assets/{system-settings-panel--yV67a8L.js → system-settings-panel-DIjaUlla.js} +1 -1
  92. package/dist/gateway/static/root/assets/{task-detail-page-D-tcS2bS.js → task-detail-page-B4Lby289.js} +1 -1
  93. package/dist/gateway/static/root/assets/{theme-store-OhcbFEUR.js → theme-store-DbRLBHVY.js} +1 -1
  94. package/dist/gateway/static/root/assets/tracing-settings-page-IgY26AYH.js +1 -0
  95. package/dist/gateway/static/root/assets/{tunnel-api-COLdiP_E.js → tunnel-api-CgARwbus.js} +1 -1
  96. package/dist/gateway/static/root/assets/{usage-page-CtM5IfrL.js → usage-page-CKju62Cm.js} +1 -1
  97. package/dist/gateway/static/root/assets/{use-autosave-veoM0dHn.js → use-autosave-C889OTsP.js} +1 -1
  98. package/dist/gateway/static/root/assets/{use-composer-attachments-DB0bBGzZ.js → use-composer-attachments-Dlm9EFTO.js} +1 -1
  99. package/dist/gateway/static/root/assets/{use-file-preview-expanded-Bope6MW6.js → use-file-preview-expanded-BOpcSApw.js} +2 -2
  100. package/dist/gateway/static/root/assets/{user-model-page-CSh61kZ5.js → user-model-page-CTkCLRhE.js} +1 -1
  101. package/dist/gateway/static/root/assets/{voice-api-key-field-CwD6a3KQ.js → voice-api-key-field-evWflGY6.js} +1 -1
  102. package/dist/gateway/static/root/assets/{voice-config-api-Daexehmc.js → voice-config-api-CZoV2Lt4.js} +1 -1
  103. package/dist/gateway/static/root/assets/{work-discovery-overlay-C9u7tuEc.js → work-discovery-overlay-B2-2F39_.js} +1 -1
  104. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BMOBbf33.js → workflow-run-setup-panel-cOGM8Nug.js} +1 -1
  105. package/dist/gateway/static/root/assets/{workflows-page-BrD9vXqO.js → workflows-page-Csk8xrRk.js} +1 -1
  106. package/dist/gateway/static/root/assets/{workspace-api-Cs4sjV2A.js → workspace-api-B9M9ECTB.js} +2 -2
  107. package/dist/gateway/static/root/index.html +28 -28
  108. package/dist/package.js +1 -1
  109. package/dist/packages/gateway-contract/src/session-input-command.js +1 -0
  110. package/dist/src/agent/agent-manager.d.ts +1 -0
  111. package/dist/src/agent/agent-manager.js +35 -3
  112. package/dist/src/agent/background-review/run-background-review.js +1 -1
  113. package/dist/src/agent/context/execution-context.js +1 -1
  114. package/dist/src/agent/context/project-context.js +4 -4
  115. package/dist/src/agent/embedded/run-for-session.js +1 -1
  116. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  117. package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
  118. package/dist/src/agent/prompt/voice-presentation.d.ts +1 -1
  119. package/dist/src/agent/prompt/voice-presentation.js +1 -1
  120. package/dist/src/agent/service/direct-turn-helpers.js +17 -1
  121. package/dist/src/agent/service.js +3 -3
  122. package/dist/src/agent/skills/index.js +1 -1
  123. package/dist/src/agent/skills/managed-store.js +1 -1
  124. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  125. package/dist/src/agent/tools/delegation-parent-policy.js +2 -0
  126. package/dist/src/agent/tools/delegation-policy.js +2 -0
  127. package/dist/src/agent/tools/factory.d.ts +2 -0
  128. package/dist/src/agent/tools/factory.js +26 -4
  129. package/dist/src/agent/tools/index.d.ts +2 -2
  130. package/dist/src/agent/tools/index.js +3 -3
  131. package/dist/src/agent/tools/knowledge-memory-tool.d.ts +2 -0
  132. package/dist/src/agent/tools/knowledge-memory-tool.js +60 -1
  133. package/dist/src/agent/tools/personal-task-tool.d.ts +12 -8
  134. package/dist/src/agent/tools/personal-task-tool.js +35 -41
  135. package/dist/src/agent/tools/user-context-tool.d.ts +2 -0
  136. package/dist/src/agent/tools/user-context-tool.js +61 -2
  137. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  138. package/dist/src/agent-catalog/capabilities.js +2 -2
  139. package/dist/src/agent-catalog/migrations/legacy-config-cutover.js +1 -1
  140. package/dist/src/agent-catalog/repository.d.ts +1 -0
  141. package/dist/src/agent-catalog/repository.js +4 -1
  142. package/dist/src/automations/capabilities/drafts.js +1 -1
  143. package/dist/src/bootstrap/application-state.js +1 -1
  144. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  145. package/dist/src/capabilities/runtime/product.js +1 -1
  146. package/dist/src/chat-commands/personal-command-policy.d.ts +2 -0
  147. package/dist/src/chat-commands/personal-command-policy.js +9 -0
  148. package/dist/src/chat-commands/registry.js +6 -0
  149. package/dist/src/cli/commands/agents.js +1 -1
  150. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  151. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  152. package/dist/src/cli/commands/models.js +1 -1
  153. package/dist/src/cli/commands/onboard/model.js +2 -2
  154. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  155. package/dist/src/config/agent-profile.js +1 -1
  156. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  157. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  158. package/dist/src/gateway/agents-admin.js +2 -2
  159. package/dist/src/gateway/hono/routes/agents.js +1 -1
  160. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  161. package/dist/src/gateway/hono/routes/notes.js +2 -2
  162. package/dist/src/gateway/hono/routes/observability.js +8 -0
  163. package/dist/src/gateway/hono/routes/projects.js +3 -3
  164. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +2 -0
  165. package/dist/src/gateway/hono/routes/session-input-handler.js +9 -1
  166. package/dist/src/gateway/hono/routes/sessions.js +1 -1
  167. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  168. package/dist/src/gateway/hono/routes/voice.js +1 -1
  169. package/dist/src/gateway/image-generation-setup.js +1 -1
  170. package/dist/src/gateway/service/agent-runner.d.ts +1 -0
  171. package/dist/src/gateway/service/agent-runner.js +12 -1
  172. package/dist/src/gateway/service/run-gateway-agent.d.ts +1 -0
  173. package/dist/src/gateway/service/run-gateway-agent.js +15 -0
  174. package/dist/src/gateway/service/session-command-service.js +5 -3
  175. package/dist/src/gateway/service/session-input-coordinator.d.ts +12 -0
  176. package/dist/src/gateway/service/session-input-coordinator.js +63 -5
  177. package/dist/src/gateway/service/sessions-api.js +1 -1
  178. package/dist/src/gateway/service.d.ts +2 -0
  179. package/dist/src/gateway/service.js +16 -10
  180. package/dist/src/gateway/session-context-summary.js +1 -1
  181. package/dist/src/gateway/session-reset-service.js +1 -1
  182. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  183. package/dist/src/local-apps/service.js +2 -2
  184. package/dist/src/personal-agent/capability-service.js +3 -2
  185. package/dist/src/personal-agent/communication.d.ts +3 -2
  186. package/dist/src/personal-agent/communication.js +4 -3
  187. package/dist/src/personal-agent/conversation-state.d.ts +5 -0
  188. package/dist/src/personal-agent/conversation-state.js +17 -0
  189. package/dist/src/personal-agent/persona.d.ts +6 -0
  190. package/dist/src/personal-agent/persona.js +16 -0
  191. package/dist/src/personal-agent/policy.d.ts +3 -1
  192. package/dist/src/personal-agent/policy.js +26 -6
  193. package/dist/src/personal-agent/prompt-context.d.ts +10 -0
  194. package/dist/src/personal-agent/prompt-context.js +119 -0
  195. package/dist/src/personal-agent/prompts.d.ts +7 -0
  196. package/dist/src/personal-agent/prompts.js +124 -0
  197. package/dist/src/personal-agent/reply-composer.d.ts +1 -1
  198. package/dist/src/personal-agent/reply-composer.js +39 -11
  199. package/dist/src/personal-agent/repository.d.ts +1 -1
  200. package/dist/src/personal-agent/repository.js +1 -1
  201. package/dist/src/personal-agent/request-delivery.js +1 -1
  202. package/dist/src/personal-agent/request-service.js +2 -2
  203. package/dist/src/personal-agent/service.d.ts +1 -2
  204. package/dist/src/personal-agent/service.js +5 -93
  205. package/dist/src/personal-agent/specialist-capabilities.d.ts +9 -0
  206. package/dist/src/personal-agent/specialist-capabilities.js +37 -0
  207. package/dist/src/session/init-session-turn.js +10 -0
  208. package/dist/src/session/store.js +1 -1
  209. package/dist/src/storage/sqlite/migrations/235_personal_conversation_priority.sql +3 -0
  210. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  211. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  212. package/dist/src/storage/sqlite/schema.js +1 -1
  213. package/dist/src/storage/sqlite/session-input-repository.d.ts +2 -0
  214. package/dist/src/storage/sqlite/session-input-repository.js +18 -5
  215. package/dist/src/tasks/capabilities/read.js +2 -2
  216. package/dist/src/tasks/execution-context.js +1 -1
  217. package/dist/src/tasks/task-main-update-decision-service.js +1 -1
  218. package/dist/src/tasks/task-result-delivery-service.js +1 -1
  219. package/dist/src/tui/backends/embedded-backend.js +1 -1
  220. package/dist/src/voice/realtime/agentEngine.js +32 -7
  221. package/dist/src/voice/realtime/engine.d.ts +1 -0
  222. package/dist/src/voice/realtime/omniEngine.d.ts +1 -0
  223. package/dist/src/voice/realtime/omniEngine.js +10 -0
  224. package/dist/src/voice/realtime/persona-context.js +1 -1
  225. package/dist/src/voice/realtime/runtime.d.ts +1 -0
  226. package/dist/src/voice/realtime/runtime.js +5 -0
  227. package/dist/src/voice/realtime/runtime.types.d.ts +2 -0
  228. package/dist/src/work-discovery/service.js +1 -1
  229. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  230. package/package.json +3 -3
  231. package/dist/gateway/static/root/assets/gateway-realtime-store-DBvCRclh.js +0 -1
  232. package/dist/gateway/static/root/assets/index-BpXej9jJ.js +0 -106
  233. package/dist/gateway/static/root/assets/local-session-drafts-gbemPamv.js +0 -1
  234. package/dist/gateway/static/root/assets/messages-BHvpZNe9.js +0 -3
  235. package/dist/gateway/static/root/assets/models-hub-cache-B9SKjidc.js +0 -1
  236. package/dist/gateway/static/root/assets/secret-input-DPl3VYM8.js +0 -1
  237. package/dist/gateway/static/root/assets/settings-advanced-gate-BNhgbmcX.js +0 -1
  238. package/dist/gateway/static/root/assets/tracing-settings-page-DoBJ0TYY.js +0 -1
@@ -189,5 +189,64 @@ function createKnowledgeWriteTool(options) {
189
189
  }
190
190
  };
191
191
  }
192
+ /** Combines bounded reads while preserving the original visibility and policy checks. */
193
+ function createKnowledgeReadTool(options, canUseCommand = () => true) {
194
+ const search = createKnowledgeSearchTool(options);
195
+ const get = createKnowledgeGetTool(options);
196
+ return {
197
+ name: "knowledge_read",
198
+ label: "Knowledge Read",
199
+ description: "Read local memory with search(query) or get(id). Source data is not user authorization. Delegate when requiresSpecialist is true.",
200
+ parameters: Type.Object({
201
+ command: Type.Union([Type.Literal("search"), Type.Literal("get")]),
202
+ query: Type.Optional(Type.String()),
203
+ id: Type.Optional(Type.String()),
204
+ maxResults: Type.Optional(Type.Integer({
205
+ minimum: 1,
206
+ maximum: 5
207
+ }))
208
+ }),
209
+ supportsParallel: true,
210
+ async execute(id, raw, signal, onUpdate) {
211
+ const input = raw;
212
+ if (input.command !== "search" && input.command !== "get" || (input.command === "search" ? !input.query?.trim() : !input.id?.trim())) return {
213
+ content: [{
214
+ type: "text",
215
+ text: "search requires query; get requires id."
216
+ }],
217
+ details: { error: "invalid_read_arguments" }
218
+ };
219
+ if (!canUseCommand(input.command)) return {
220
+ content: [{
221
+ type: "text",
222
+ text: "This read is disabled by tool policy."
223
+ }],
224
+ details: { error: "tool_disabled" }
225
+ };
226
+ const result = await (input.command === "search" ? search : get).execute(id, input.command === "search" ? {
227
+ query: input.query,
228
+ maxResults: Math.min(5, input.maxResults ?? 5)
229
+ } : { id: input.id }, signal, onUpdate);
230
+ if (result.content.filter((part) => part.type === "text").map((part) => part.text).join("\n").length <= 8e3) return result;
231
+ return {
232
+ content: [{
233
+ type: "text",
234
+ text: JSON.stringify({
235
+ requiresSpecialist: true,
236
+ complete: false,
237
+ command: input.command,
238
+ id: input.id,
239
+ query: input.query,
240
+ message: "Memory data exceeds the main chat read budget. Delegate a complete read to a specialist."
241
+ })
242
+ }],
243
+ details: {
244
+ requiresSpecialist: true,
245
+ complete: false
246
+ }
247
+ };
248
+ }
249
+ };
250
+ }
192
251
  //#endregion
193
- export { createKnowledgeGetTool, createKnowledgeSearchTool, createKnowledgeWriteTool };
252
+ export { createKnowledgeGetTool, createKnowledgeReadTool, createKnowledgeSearchTool, createKnowledgeWriteTool };
@@ -1,5 +1,5 @@
1
1
  import type { AgentTool } from '@earendil-works/pi-agent-core';
2
- import { type EffectiveAgentConfig } from '../../agent-config/index.js';
2
+ export { getAvailablePersonalAgentTools, personalAgentModelAvailability } from '../../personal-agent/specialist-capabilities.js';
3
3
  import { type XopcUseToolDeps } from './xopc-use-tool.js';
4
4
  declare const PersonalTaskSchema: import("@sinclair/typebox").TObject<{
5
5
  command: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"agents">, import("@sinclair/typebox").TLiteral<"create">, import("@sinclair/typebox").TLiteral<"list">, import("@sinclair/typebox").TLiteral<"get">, import("@sinclair/typebox").TLiteral<"instruct">, import("@sinclair/typebox").TLiteral<"answer">]>;
@@ -13,14 +13,19 @@ declare const PersonalTaskSchema: import("@sinclair/typebox").TObject<{
13
13
  expectedOutputs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
14
14
  acceptanceCriteria: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
15
15
  constraints: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
16
+ requiredSkills: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
16
17
  requiredTools: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
17
18
  idempotencyKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
18
19
  }>;
19
- export declare function getAvailablePersonalAgentTools(config: EffectiveAgentConfig, deps: XopcUseToolDeps): string[];
20
- export declare function personalAgentModelAvailability(config: EffectiveAgentConfig): {
21
- available: boolean;
22
- reason?: string;
23
- };
20
+ export interface PersonalTaskToolDeps extends XopcUseToolDeps {
21
+ getAgentSkillAvailability?: (agentId: string) => {
22
+ skills: Array<{
23
+ name: string;
24
+ availableForCurrentAgent: boolean;
25
+ unavailableReason?: string | null;
26
+ }>;
27
+ };
28
+ }
24
29
  export declare function buildPersonalTaskBrief(input: {
25
30
  title?: string;
26
31
  objective: string;
@@ -31,5 +36,4 @@ export declare function buildPersonalTaskBrief(input: {
31
36
  body?: string;
32
37
  };
33
38
  /** A narrow Task surface for the fast personal conversation. */
34
- export declare function createPersonalTaskTool(deps: XopcUseToolDeps): AgentTool<typeof PersonalTaskSchema, Record<string, never>>;
35
- export {};
39
+ export declare function createPersonalTaskTool(deps: PersonalTaskToolDeps): AgentTool<typeof PersonalTaskSchema, Record<string, never>>;
@@ -2,8 +2,8 @@ import { resolveEffectiveAgentConfig } from "../../agent-config/resolver.js";
2
2
  import { init_agent_config } from "../../agent-config/index.js";
3
3
  import { AgentCatalogRepository, init_repository } from "../../agent-catalog/repository.js";
4
4
  import { resolveEffectiveAgentConfigForAgent } from "../../config/agent-profile.js";
5
- import { init_providers, isProviderConfiguredSync, resolveModel } from "../../providers/index.js";
6
5
  import { isPersonalConversation } from "../../personal-agent/repository.js";
6
+ import { getAvailablePersonalAgentTools, personalAgentModelAvailability } from "../../personal-agent/specialist-capabilities.js";
7
7
  import { TaskOriginRepository } from "../../tasks/task-origin-repository.js";
8
8
  import { createXopcUseTool } from "./xopc-use-tool.js";
9
9
  import { PERSONAL_WORKER_RESULT_GUIDANCE } from "../../personal-agent/communication.js";
@@ -12,7 +12,6 @@ import { Type } from "@sinclair/typebox";
12
12
  //#region src/agent/tools/personal-task-tool.ts
13
13
  init_repository();
14
14
  init_agent_config();
15
- init_providers();
16
15
  const PersonalTaskSchema = Type.Object({
17
16
  command: Type.Union([
18
17
  Type.Literal("agents"),
@@ -32,42 +31,25 @@ const PersonalTaskSchema = Type.Object({
32
31
  expectedOutputs: Type.Optional(Type.Array(Type.String())),
33
32
  acceptanceCriteria: Type.Optional(Type.Array(Type.String())),
34
33
  constraints: Type.Optional(Type.Array(Type.String())),
34
+ requiredSkills: Type.Optional(Type.Array(Type.String({
35
+ minLength: 1,
36
+ description: "Canonical Skill names explicitly requested by the user. Verify through agents before creation."
37
+ }))),
35
38
  requiredTools: Type.Optional(Type.Array(Type.String({ description: "Tool names needed for this Task. Use names returned by agents; omit when matching by role or expertise." }))),
36
39
  idempotencyKey: Type.Optional(Type.String())
37
40
  });
38
- const MAX_PERSONAL_TASK_TITLE = 60;
39
- const DISCOVERY_TOOLS = [
40
- "web_search",
41
- "web_fetch",
42
- "browser_use",
43
- "read_file",
44
- "write_file",
45
- "exec_command",
46
- "image",
47
- "image_generate",
48
- "read_media",
49
- "automation",
50
- "workflow",
51
- "xopc_use",
52
- "xopc_tool_search",
53
- "xopc_tool_describe",
54
- "xopc_tool_execute",
55
- "computer_use",
56
- "send_message",
57
- "text_to_speech"
58
- ];
59
- function getAvailablePersonalAgentTools(config, deps) {
60
- return (config.toolAllowlist ? [...new Set([...DISCOVERY_TOOLS, ...config.toolAllowlist])] : DISCOVERY_TOOLS).filter((name) => (name !== "browser_use" || deps.getConfig?.()?.browser?.enabled !== false) && (!config.toolAllowlist || config.toolAllowlist.includes(name)) && config.tools[name]?.mode !== "deny");
61
- }
62
- function personalAgentModelAvailability(config) {
63
- for (const ref of [config.models.chat.primary, ...config.models.chat.fallbacks]) try {
64
- if (isProviderConfiguredSync(resolveModel(ref).provider)) return { available: true };
65
- } catch {}
66
- return {
67
- available: false,
68
- reason: "No configured chat model resolves to an available provider"
69
- };
41
+ var PersonalSkillUnavailableError = class extends Error {};
42
+ function resolveRequiredSkills(deps, agentId, requested) {
43
+ if (requested.length === 0) return [];
44
+ if (!deps.getAgentSkillAvailability) throw new Error("Specialist Skill availability cannot be verified");
45
+ const skills = deps.getAgentSkillAvailability(agentId).skills;
46
+ return [...new Set(requested.map((name) => name.trim().toLowerCase()))].map((name) => {
47
+ const skill = skills.find((item) => item.name.toLowerCase() === name);
48
+ if (!skill?.availableForCurrentAgent) throw new PersonalSkillUnavailableError(`Agent ${agentId} cannot use required Skill ${name}: ${skill?.unavailableReason ?? "not-installed"}. Do not substitute the requested Skill without the user’s direction.`);
49
+ return skill.name;
50
+ });
70
51
  }
52
+ const MAX_PERSONAL_TASK_TITLE = 60;
71
53
  function buildPersonalTaskBrief(input) {
72
54
  const fullObjective = input.objective.trim();
73
55
  const titleSource = (input.title?.trim() || fullObjective).replace(/\s+/g, " ");
@@ -87,7 +69,7 @@ function createPersonalTaskTool(deps) {
87
69
  return {
88
70
  name: "personal_task",
89
71
  label: "Personal Task",
90
- description: "Find specialist Agents by role, availableTools, and model.available; delegate work, inspect Tasks, send instructions, or answer worker questions. Choose an Agent whose model.available is true. Before saying you cannot do a request, inspect another Agent. If a candidate fails, try another suitable Agent or approach within the user’s authorization. agents can filter by requiredTools; if none match, inspect unfiltered Agents. Return to the user quickly after creation.",
72
+ description: "Find specialist Agents by role, availableTools, and model.available; delegate work, inspect Tasks, send instructions, or answer worker questions. Choose an Agent whose model.available is true. Before saying you cannot do a request, inspect another Agent. If a candidate fails, retry alternatives within the user’s authorization only when the user has not required a particular Agent or Skill. For explicitly requested Skills, use requiredSkills in agents and create; creation validates availability and includes them in the worker brief. agents can filter by requiredTools or requiredSkills; if none match, inspect unfiltered Agents. Return to the user quickly after creation.",
91
73
  parameters: PersonalTaskSchema,
92
74
  mutatesWorkspace: true,
93
75
  mutationScope: "external",
@@ -99,6 +81,7 @@ function createPersonalTaskTool(deps) {
99
81
  if (!conversationId || !ownAgentId || !isPersonalConversation(conversationId)) throw new Error("Personal conversation context is unavailable");
100
82
  if (input.command === "agents") {
101
83
  const requiredTools = input.requiredTools ?? [];
84
+ if (input.requiredSkills?.length && !deps.getAgentSkillAvailability) throw new Error("Specialist Skill availability cannot be verified");
102
85
  const catalog = new AgentCatalogRepository().snapshot();
103
86
  const agents = catalog.agents.filter((agent) => agent.enabled !== false && agent.id !== ownAgentId && !agent.id.startsWith("personal-")).map((agent) => {
104
87
  const config = resolveEffectiveAgentConfig({
@@ -106,14 +89,22 @@ function createPersonalTaskTool(deps) {
106
89
  agent
107
90
  }).config;
108
91
  const availableTools = getAvailablePersonalAgentTools(config, deps);
92
+ let requiredSkills;
93
+ try {
94
+ requiredSkills = resolveRequiredSkills(deps, agent.id, input.requiredSkills ?? []);
95
+ } catch (error) {
96
+ if (error instanceof PersonalSkillUnavailableError) return null;
97
+ throw error;
98
+ }
109
99
  return {
100
+ ...requiredSkills.length ? { verifiedSkills: requiredSkills } : {},
110
101
  id: agent.id,
111
102
  name: agent.profile?.name ?? agent.id,
112
103
  description: agent.profile?.description ?? "",
113
104
  availableTools,
114
105
  model: personalAgentModelAvailability(config)
115
106
  };
116
- }).filter((agent) => requiredTools.every((tool) => agent.availableTools.includes(tool)));
107
+ }).filter((agent) => agent !== null && requiredTools.every((tool) => agent.availableTools.includes(tool)));
117
108
  return {
118
109
  content: [{
119
110
  type: "text",
@@ -137,12 +128,15 @@ function createPersonalTaskTool(deps) {
137
128
  const availableTools = getAvailablePersonalAgentTools(config, deps);
138
129
  const missingTools = (input.requiredTools ?? []).filter((tool) => !availableTools.includes(tool));
139
130
  if (missingTools.length > 0) throw new Error(`Agent ${agentId} lacks required tools: ${missingTools.join(", ")}. Find another Agent or approach.`);
131
+ const requiredSkills = resolveRequiredSkills(deps, agentId, input.requiredSkills ?? []);
132
+ const brief = buildPersonalTaskBrief({
133
+ title: input.title,
134
+ objective,
135
+ description: input.description
136
+ });
140
137
  args = {
141
- ...buildPersonalTaskBrief({
142
- title: input.title,
143
- objective,
144
- description: input.description
145
- }),
138
+ ...brief,
139
+ body: [brief.body, requiredSkills.length ? `## Required Skills\n\n${requiredSkills.map((name) => `- ${name}`).join("\n")}\n\nRead and follow these Skills before performing the task. Report any availability failure; do not claim a Skill was used without actually following it.` : void 0].filter(Boolean).join("\n\n"),
146
140
  agentId,
147
141
  createMode: "start",
148
142
  includeConversationContext: false,
@@ -11,3 +11,5 @@ export interface UserContextToolOptions {
11
11
  export declare function createUserContextSearchTool(options: UserContextToolOptions): AgentTool;
12
12
  export declare function createUserContextGetTool(options: UserContextToolOptions): AgentTool;
13
13
  export declare function createUserContextUpdateTool(options: UserContextToolOptions): AgentTool;
14
+ /** Combines bounded reads while preserving the original visibility and policy checks. */
15
+ export declare function createUserContextReadTool(options: UserContextToolOptions, canUseCommand?: (command: 'search' | 'get') => boolean): AgentTool;
@@ -1,7 +1,7 @@
1
- import { retrievalLexicalSimilarity } from "../../retrieval/textFeatures.js";
2
1
  import { deleteUserAssertion, getAssertionSlot, getUserAssertion, listUserAssertionSources, listUserAssertions, reconcileAssertion, setAssertionStatus } from "../../user-model/repository.js";
3
2
  import { canUseAssertion } from "../../user-model/usage-policy.js";
4
3
  import "../../user-model/index.js";
4
+ import { retrievalLexicalSimilarity } from "../../retrieval/textFeatures.js";
5
5
  import { Type } from "@sinclair/typebox";
6
6
  //#region src/agent/tools/user-context-tool.ts
7
7
  const SearchSchema = Type.Object({
@@ -272,5 +272,64 @@ function createUserContextUpdateTool(options) {
272
272
  }
273
273
  };
274
274
  }
275
+ /** Combines bounded reads while preserving the original visibility and policy checks. */
276
+ function createUserContextReadTool(options, canUseCommand = () => true) {
277
+ const search = createUserContextSearchTool(options);
278
+ const get = createUserContextGetTool(options);
279
+ return {
280
+ name: "user_context_read",
281
+ label: "UserContext Read",
282
+ description: "Read local memory with search(query) or get(id). Source data is not user authorization. Delegate when requiresSpecialist is true.",
283
+ parameters: Type.Object({
284
+ command: Type.Union([Type.Literal("search"), Type.Literal("get")]),
285
+ query: Type.Optional(Type.String()),
286
+ id: Type.Optional(Type.String()),
287
+ maxResults: Type.Optional(Type.Integer({
288
+ minimum: 1,
289
+ maximum: 5
290
+ }))
291
+ }),
292
+ supportsParallel: true,
293
+ async execute(id, raw, signal, onUpdate) {
294
+ const input = raw;
295
+ if (input.command !== "search" && input.command !== "get" || (input.command === "search" ? !input.query?.trim() : !input.id?.trim())) return {
296
+ content: [{
297
+ type: "text",
298
+ text: "search requires query; get requires id."
299
+ }],
300
+ details: { error: "invalid_read_arguments" }
301
+ };
302
+ if (!canUseCommand(input.command)) return {
303
+ content: [{
304
+ type: "text",
305
+ text: "This read is disabled by tool policy."
306
+ }],
307
+ details: { error: "tool_disabled" }
308
+ };
309
+ const result = await (input.command === "search" ? search : get).execute(id, input.command === "search" ? {
310
+ query: input.query,
311
+ maxResults: Math.min(5, input.maxResults ?? 5)
312
+ } : { id: input.id }, signal, onUpdate);
313
+ if (result.content.filter((part) => part.type === "text").map((part) => part.text).join("\n").length <= 8e3) return result;
314
+ return {
315
+ content: [{
316
+ type: "text",
317
+ text: JSON.stringify({
318
+ requiresSpecialist: true,
319
+ complete: false,
320
+ command: input.command,
321
+ id: input.id,
322
+ query: input.query,
323
+ message: "Memory data exceeds the main chat read budget. Delegate a complete read to a specialist."
324
+ })
325
+ }],
326
+ details: {
327
+ requiresSpecialist: true,
328
+ complete: false
329
+ }
330
+ };
331
+ }
332
+ };
333
+ }
275
334
  //#endregion
276
- export { createUserContextGetTool, createUserContextSearchTool, createUserContextUpdateTool };
335
+ export { createUserContextGetTool, createUserContextReadTool, createUserContextSearchTool, createUserContextUpdateTool };
@@ -10,10 +10,10 @@ import { TaskRunRepository } from "../../tasks/task-run-repository.js";
10
10
  import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
11
11
  import { init_sqlite } from "../../storage/sqlite/index.js";
12
12
  import "../../activity/index.js";
13
- import { CapabilityError } from "../../capabilities/runtime/errors.js";
14
- import "../../capabilities/runtime/dispatcher.js";
15
13
  import { getDefaultAgentId, init_resolve_route } from "../../routing/resolve-route.js";
16
14
  import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
15
+ import { CapabilityError } from "../../capabilities/runtime/errors.js";
16
+ import "../../capabilities/runtime/dispatcher.js";
17
17
  import { resolveProjectAgentId } from "../../projects/project-agent.js";
18
18
  import "../../projects/index.js";
19
19
  import { TaskDeletionService } from "../../tasks/task-deletion-service.js";
@@ -1,10 +1,10 @@
1
1
  import { AgentEntrySchema, EffectiveAgentConfigSchema } from "../agent-config/schema.js";
2
2
  import { resolveEffectiveAgentConfig } from "../agent-config/resolver.js";
3
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
4
  import { AgentCatalogRepository, init_repository } from "./repository.js";
7
5
  import { init_agent_scope, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
6
+ import { CapabilityError } from "../capabilities/runtime/errors.js";
7
+ import { defineAtomicCapability, defineReadCapability } from "../capabilities/runtime/dispatcher.js";
8
8
  import { AgentCatalogService } from "./service.js";
9
9
  import { z } from "zod";
10
10
  //#region src/agent-catalog/capabilities.ts
@@ -2,11 +2,11 @@ import { backupDatabaseBeforeCutover, init_conversation_backup } from "../../sto
2
2
  import { getXopcDatabase } from "../../storage/sqlite/connection.js";
3
3
  import { runSqliteWriteTransaction } from "../../storage/sqlite/transaction.js";
4
4
  import { init_sqlite } from "../../storage/sqlite/index.js";
5
+ import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
5
6
  import { AgentDefaultsSchema, AgentEntrySchema, AgentIdSchema, DEFAULT_AGENT_MODEL_REF, DEFAULT_SKILL_POLICY } from "../../agent-config/schema.js";
6
7
  import { init_agent_config } from "../../agent-config/index.js";
7
8
  import { BindingsSchema, init_binding_schema } from "../../routing/binding-schema.js";
8
9
  import { AgentCatalogRepository, init_repository } from "../repository.js";
9
- import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
10
10
  import { copyFileSync, existsSync, readFileSync } from "node:fs";
11
11
  import { createHash, randomUUID } from "node:crypto";
12
12
  import { z } from "zod";
@@ -3,6 +3,7 @@ import { type BindingRule } from '../routing/binding-schema.js';
3
3
  import type { AgentCatalogSettings, AgentCatalogSnapshot, StoredAgent } from './types.js';
4
4
  export declare class AgentCatalogRepository {
5
5
  ensureInitialized(defaults?: AgentDefaults): void;
6
+ getRevision(): number;
6
7
  getSettings(): AgentCatalogSettings;
7
8
  list(options?: {
8
9
  includeDeleted?: boolean;
@@ -1,9 +1,9 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
2
  import { getSqliteDatabase, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
3
3
  import { init_sqlite } from "../storage/sqlite/index.js";
4
+ import { DEFAULT_AGENT_ID, init_id, normalizeAgentId } from "./id.js";
4
5
  import { AgentDefaultsSchema, AgentEntrySchema, DEFAULT_AGENT_MODEL_REF, DEFAULT_SKILL_POLICY } from "../agent-config/schema.js";
5
6
  import { init_agent_config } from "../agent-config/index.js";
6
- import { DEFAULT_AGENT_ID, init_id, normalizeAgentId } from "./id.js";
7
7
  import { BindingsSchema, init_binding_schema } from "../routing/binding-schema.js";
8
8
  import { randomUUID } from "node:crypto";
9
9
  //#region src/agent-catalog/repository.ts
@@ -96,6 +96,9 @@ var init_repository = __esmMin((() => {
96
96
  VALUES (?, 'provision', 'pending', 0, NULL, ?, ?)`).run(DEFAULT_AGENT_ID, now, now);
97
97
  });
98
98
  }
99
+ getRevision() {
100
+ return getSqliteDatabase().prepare("SELECT revision FROM agent_catalog_settings WHERE singleton_id = 1").get().revision;
101
+ }
99
102
  getSettings() {
100
103
  return requireSettings();
101
104
  }
@@ -3,10 +3,10 @@ import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { init_trust_policy, resolveAutomationSafetyForTrust } from "../../user-context/trust-policy.js";
4
4
  import { getUserTrustPolicy } from "../../storage/sqlite/user-trust-repository.js";
5
5
  import { init_sqlite } from "../../storage/sqlite/index.js";
6
+ import { init_agent_scope, resolveDefaultAgentId } from "../../agent/agent-scope.js";
6
7
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
7
8
  import { ExternalEffectNotAppliedError } from "../../capabilities/runtime/external-operations.js";
8
9
  import { defineExternalCapability, defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
9
- import { init_agent_scope, resolveDefaultAgentId } from "../../agent/agent-scope.js";
10
10
  import { AutomationCreateCapabilityInputSchema } from "./write.js";
11
11
  import { simulateAutomation } from "../draft/automation-draft-validator.js";
12
12
  import { AutomationDraftService } from "../draft/automation-draft-service.js";
@@ -1,9 +1,9 @@
1
1
  import { requireXopcDatabase } from "../storage/sqlite/connection.js";
2
2
  import { init_sqlite } from "../storage/sqlite/index.js";
3
3
  import { AgentCatalogService } from "../agent-catalog/service.js";
4
+ import { ensureStarterAgentsInitialized } from "../agent/starter-agents.js";
4
5
  import { cutoverLegacyAgentConfig } from "../agent-catalog/migrations/legacy-config-cutover.js";
5
6
  import "../agent-catalog/index.js";
6
- import { ensureStarterAgentsInitialized } from "../agent/starter-agents.js";
7
7
  import { migrateIdentityMarkdownToCatalog } from "../agent-catalog/migrations/identity-markdown-cutover.js";
8
8
  import { runBootstrapMigrationsSync } from "../migrations/runner.js";
9
9
  //#region src/bootstrap/application-state.ts
@@ -1,7 +1,7 @@
1
1
  import { SqliteCommitEffectError, init_transaction } from "../../storage/sqlite/transaction.js";
2
- import { OperationConflictError, executeAtomicOperation } from "./atomic-operations.js";
3
2
  import { CapabilityError } from "./errors.js";
4
3
  import { executeExternalOperation } from "./external-operations.js";
4
+ import { OperationConflictError, executeAtomicOperation } from "./atomic-operations.js";
5
5
  import { createHash } from "node:crypto";
6
6
  import { z } from "zod";
7
7
  //#region src/capabilities/runtime/dispatcher.ts
@@ -1,6 +1,5 @@
1
1
  import { CapabilityError } from "./errors.js";
2
2
  import { CapabilityDispatcher } from "./dispatcher.js";
3
- import { registerAgentCapabilities } from "../../agent-catalog/capabilities.js";
4
3
  import { registerLocalAppReadCapabilities } from "../../local-apps/capabilities/read.js";
5
4
  import { registerNoteReadCapabilities } from "../../notes/capabilities/read.js";
6
5
  import { registerNoteWriteCapabilities } from "../../notes/capabilities/write.js";
@@ -19,6 +18,7 @@ import { registerSceneReadCapabilities } from "../../scenes/capabilities/read.js
19
18
  import { registerSceneWriteCapabilities } from "../../scenes/capabilities/write.js";
20
19
  import { registerSettingsCapability } from "./settings.js";
21
20
  import { registerAppContextCapability } from "./app-context.js";
21
+ import { registerAgentCapabilities } from "../../agent-catalog/capabilities.js";
22
22
  //#region src/capabilities/runtime/product.ts
23
23
  function createProductDispatcher(getNotes, taskWrites) {
24
24
  const dispatcher = new CapabilityDispatcher();
@@ -0,0 +1,2 @@
1
+ /** Personal conversations expose only reply cancellation through the command system. */
2
+ export declare function personalCommandRejection(conversationId: string, commandId: string, name: string): string | undefined;
@@ -0,0 +1,9 @@
1
+ import { isPersonalConversation } from "../personal-agent/repository.js";
2
+ //#region src/chat-commands/personal-command-policy.ts
3
+ /** Personal conversations expose only reply cancellation through the command system. */
4
+ function personalCommandRejection(conversationId, commandId, name) {
5
+ if (!isPersonalConversation(conversationId) || commandId === "session.abort") return void 0;
6
+ return `Personal AI does not support /${name}. Describe your request directly; manage capabilities and preferences in settings.`;
7
+ }
8
+ //#endregion
9
+ export { personalCommandRejection };
@@ -1,6 +1,7 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
3
  import { normalizeTelegramCommandName, parseSlashCommand } from "./command-parse.js";
4
+ import { personalCommandRejection } from "./personal-command-policy.js";
4
5
  //#region src/chat-commands/registry.ts
5
6
  init_logger();
6
7
  const log = createLogger("CommandRegistry");
@@ -97,6 +98,11 @@ var CommandRegistry = class CommandRegistry {
97
98
  content: `Unknown command: /${name}\nType /help to see available commands.`,
98
99
  success: false
99
100
  };
101
+ const rejection = personalCommandRejection(context.conversationId, command.id, name);
102
+ if (rejection) return {
103
+ content: rejection,
104
+ success: false
105
+ };
100
106
  const scope = context.isGroup ? "group" : "private";
101
107
  if (!command.scope.includes("global") && !command.scope.includes(scope)) return {
102
108
  content: `Command /${name} is not available in ${scope} chats.`,
@@ -1,8 +1,8 @@
1
1
  import { normalizeAgentId, validateAgentIdForNewAgent } from "../../agent-catalog/id.js";
2
2
  import { AgentCatalogRepository, init_repository } from "../../agent-catalog/repository.js";
3
3
  import { init_agent_scope, resolveAgentDir, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../../agent/agent-scope.js";
4
- import { AgentCatalogService } from "../../agent-catalog/service.js";
5
4
  import { resolveEffectiveAgentConfigForAgent } from "../../config/agent-profile.js";
5
+ import { AgentCatalogService } from "../../agent-catalog/service.js";
6
6
  import { colors } from "../utils/colors.js";
7
7
  //#region src/cli/commands/agents.ts
8
8
  init_repository();
@@ -53,7 +53,7 @@ async function checkDatabaseSchema(ctx) {
53
53
  id: "database-schema",
54
54
  label: "Database schema",
55
55
  status: "pass",
56
- message: `SQLite schema v${status.dbVersion} (current release v234).`,
56
+ message: `SQLite schema v${status.dbVersion} (current release v235).`,
57
57
  hints: []
58
58
  };
59
59
  }
@@ -1,5 +1,5 @@
1
- import { AgentCatalogRepository, init_repository } from "../../../../agent-catalog/repository.js";
2
1
  import { PROVIDER_ENV_MAP, init_env_keys } from "../../../../providers/env-keys.js";
2
+ import { AgentCatalogRepository, init_repository } from "../../../../agent-catalog/repository.js";
3
3
  import { getModelOAuthProviderIds, init_registry } from "../../../../auth/oauth/registry.js";
4
4
  import { CredentialResolver, init_credentials } from "../../../../auth/credentials.js";
5
5
  import { getAgentDefaultModelRef, init_schema, parseModelRef } from "../../../../config/schema.js";
@@ -1,8 +1,8 @@
1
1
  import { AgentCatalogRepository, init_repository } from "../../agent-catalog/repository.js";
2
- import { AgentCatalogService } from "../../agent-catalog/service.js";
3
2
  import { CredentialResolver, init_credentials } from "../../auth/credentials.js";
4
3
  import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
5
4
  import { getAllModels, getAvailableModels, getConfiguredProviders, getProviderAuthState, getProviderDisplayName, init_providers, isProviderConfigured, providerSupportsApiKey, providerSupportsOAuth, resolveModel } from "../../providers/index.js";
5
+ import { AgentCatalogService } from "../../agent-catalog/service.js";
6
6
  import { loadConfig } from "../../config/loader.js";
7
7
  import { formatExamples, register } from "../registry.js";
8
8
  import { getContextWithOpts } from "../context.js";
@@ -1,12 +1,12 @@
1
- import { AgentCatalogRepository, init_repository } from "../../../agent-catalog/repository.js";
2
- import { AgentCatalogService } from "../../../agent-catalog/service.js";
3
1
  import { getApiKeyFromEnv } from "../../../providers/env-keys.js";
2
+ import { AgentCatalogRepository, init_repository } from "../../../agent-catalog/repository.js";
4
3
  import { resolveModelsJsonPath } from "../../../config/paths.js";
5
4
  import { CredentialResolver, init_credentials } from "../../../auth/credentials.js";
6
5
  import { getAgentDefaultModelRef, init_schema } from "../../../config/schema.js";
7
6
  import { init_models_json, loadModelsJson, saveModelsJson } from "../../../config/models-json.js";
8
7
  import { getModelRegistry } from "../../../providers/model-registry.js";
9
8
  import { getAllProviders, getModelsByProvider, getProviderDisplayName, init_providers, providerSupportsApiKey, providerSupportsOAuth } from "../../../providers/index.js";
9
+ import { AgentCatalogService } from "../../../agent-catalog/service.js";
10
10
  import { prepareUpdateGlobalDefaults } from "../../../gateway/global-defaults-admin.js";
11
11
  import { discoverProviderModels, isProviderApiDiscoverable } from "../../../providers/model-discovery.js";
12
12
  import { getXopcCloudCatalogCoordinator } from "../../../providers/xopc-cloud-catalog-coordinator.js";
@@ -1,6 +1,6 @@
1
1
  import { AgentCatalogRepository, init_repository } from "../../agent-catalog/repository.js";
2
- import { AgentCatalogService } from "../../agent-catalog/service.js";
3
2
  import { ConfigSchema, init_schema } from "../../config/schema.js";
3
+ import { AgentCatalogService } from "../../agent-catalog/service.js";
4
4
  import { assertConfigRewriteSafeForRunningGateway, saveConfig } from "../../config/loader.js";
5
5
  import { ensureStarterAgentsInitialized } from "../../agent/starter-agents.js";
6
6
  import { bootstrapApplicationStateSync } from "../../bootstrap/application-state.js";
@@ -1,6 +1,6 @@
1
+ import { normalizeAgentId } from "../agent-catalog/id.js";
1
2
  import { resolveEffectiveAgentConfig } from "../agent-config/resolver.js";
2
3
  import { init_agent_config } from "../agent-config/index.js";
3
- import { normalizeAgentId } from "../agent-catalog/id.js";
4
4
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
5
5
  import { init_agent_scope, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
6
6
  import { getConversationRouting } from "../storage/sqlite/conversation-repository.js";
@@ -1,8 +1,8 @@
1
1
  import { dirname, isAbsolute, join, relative, resolve } from "node:path";
2
2
  import { existsSync, lstatSync, readFileSync, readdirSync, realpathSync, statSync } from "node:fs";
3
3
  import { z } from "zod";
4
- import yaml from "js-yaml";
5
4
  import { validateHeaderName, validateHeaderValue } from "node:http";
5
+ import yaml from "js-yaml";
6
6
  //#region src/extensions/agent-plugins/validation.ts
7
7
  const PLUGIN_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json";
8
8
  const MCP_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json";
@@ -277,4 +277,4 @@ export declare const GATEWAY_BUILTIN_TOOLS: readonly [{
277
277
  readonly zh: "使用已验证的参数执行选定的外部工具。";
278
278
  };
279
279
  }];
280
- export declare const GATEWAY_BUILTIN_TOOL_IDS: ("automation" | "workflow" | "find" | "image" | "knowledge_search" | "knowledge_get" | "knowledge_write" | "user_context_search" | "user_context_get" | "user_context_update" | "web_search" | "web_fetch" | "browser_use" | "grep" | "session_search" | "read_file" | "list_dir" | "write_file" | "apply_patch" | "exec_command" | "update_plan" | "todo" | "clarify" | "xopc_tool_execute" | "web_extract" | "image_generate" | "skills_list" | "skill_view" | "skill_manage" | "skills_marketplace_search" | "computer_use" | "session_status" | "memory_maintenance" | "tool_manual" | "skill_install" | "send_message" | "send_media" | "read_media" | "create_share" | "text_to_speech" | "delegate_task" | "execute_code" | "create_desktop_pet" | "xopc_tool_search" | "xopc_tool_describe")[];
280
+ export declare const GATEWAY_BUILTIN_TOOL_IDS: ("automation" | "workflow" | "find" | "image" | "knowledge_search" | "knowledge_get" | "knowledge_write" | "user_context_search" | "user_context_get" | "user_context_update" | "web_search" | "web_fetch" | "browser_use" | "grep" | "session_search" | "read_file" | "list_dir" | "write_file" | "apply_patch" | "exec_command" | "update_plan" | "todo" | "clarify" | "xopc_tool_execute" | "web_extract" | "image_generate" | "read_media" | "xopc_tool_search" | "xopc_tool_describe" | "computer_use" | "send_message" | "text_to_speech" | "skills_list" | "skill_view" | "skill_manage" | "skills_marketplace_search" | "session_status" | "memory_maintenance" | "tool_manual" | "skill_install" | "send_media" | "create_share" | "delegate_task" | "execute_code" | "create_desktop_pet")[];
@@ -1,10 +1,10 @@
1
1
  import { normalizeAgentId, validateAgentIdForNewAgent } from "../agent-catalog/id.js";
2
2
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
3
3
  import { init_agent_scope, listAgentEntries, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId, resolveUserPath } from "../agent/agent-scope.js";
4
- import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES, REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET } from "../agent/context/workspace.js";
5
- import { AgentCatalogService } from "../agent-catalog/service.js";
6
4
  import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
5
+ import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES, REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET } from "../agent/context/workspace.js";
7
6
  import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
7
+ import { AgentCatalogService } from "../agent-catalog/service.js";
8
8
  import { GATEWAY_BUILTIN_TOOL_IDS } from "./agent-builtin-tools.js";
9
9
  import { resolve } from "node:path";
10
10
  import { mkdir, readFile, realpath, stat, unlink, writeFile } from "node:fs/promises";
@@ -1,6 +1,6 @@
1
+ import { normalizeAgentId } from "../../../agent-catalog/id.js";
1
2
  import { AgentEntrySchema, AgentModelsOverrideSchema, AgentProfileSchema, RuntimePolicySchema, SkillOverrideSchema, ToolPoliciesSchema, WorkflowPolicySchema } from "../../../agent-config/schema.js";
2
3
  import { init_agent_config } from "../../../agent-config/index.js";
3
- import { normalizeAgentId } from "../../../agent-catalog/id.js";
4
4
  import { init_agent_scope } from "../../../agent/agent-scope.js";
5
5
  import { createGatewayAgent, deleteAgentAvatarFile, deleteGatewayAgent, getGatewayAgentEffectiveConfig, listAgentProfileFiles, listGatewayAgents, readAgentAvatarFile, readAgentProfileFile, updateGatewayAgent, writeAgentAvatarFromBase64, writeAgentProfileFile } from "../../agents-admin.js";
6
6
  import { getVoiceModelsConfig } from "../../../config/voice.js";