@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
@@ -11,7 +11,7 @@
11
11
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260910-1" />
12
12
  <link rel="manifest" href="/site.webmanifest?v=20260910-1" />
13
13
  <title>XOPC — Keep what matters moving.</title>
14
- <script type="module" crossorigin src="/assets/index-BpXej9jJ.js"></script>
14
+ <script type="module" crossorigin src="/assets/index-6JNNrzCq.js"></script>
15
15
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
@@ -25,15 +25,15 @@
25
25
  <link rel="modulepreload" crossorigin href="/assets/download-Dk-ZjtO6.js">
26
26
  <link rel="modulepreload" crossorigin href="/assets/plus-Q2yW6OE7.js">
27
27
  <link rel="modulepreload" crossorigin href="/assets/x-B_N4OPjy.js">
28
- <link rel="modulepreload" crossorigin href="/assets/messages-BHvpZNe9.js">
29
- <link rel="modulepreload" crossorigin href="/assets/locale-store-DId6-v2R.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/messages-pGa2qMzG.js">
29
+ <link rel="modulepreload" crossorigin href="/assets/locale-store-CvNO-hbt.js">
30
30
  <link rel="modulepreload" crossorigin href="/assets/cn-JdwAhgNB.js">
31
31
  <link rel="modulepreload" crossorigin href="/assets/schemas-CObaziC7.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/local-apps-yys1VChX.js">
33
33
  <link rel="modulepreload" crossorigin href="/assets/product-delivery-BAks11S4.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/app-link-DRL0YnPs.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/copy-to-clipboard-HOJ79TWv.js">
36
- <link rel="modulepreload" crossorigin href="/assets/markdown-view-DQZ51j9e.js">
36
+ <link rel="modulepreload" crossorigin href="/assets/markdown-view-DDJlD5jR.js">
37
37
  <link rel="modulepreload" crossorigin href="/assets/dist-Che_jiQF.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/vendor-swr-BIWyz7Rc.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/activity-YogQEteU.js">
@@ -59,7 +59,7 @@
59
59
  <link rel="modulepreload" crossorigin href="/assets/form-field-width-DJw_jULe.js">
60
60
  <link rel="modulepreload" crossorigin href="/assets/interaction-BdhHBbYa.js">
61
61
  <link rel="modulepreload" crossorigin href="/assets/is-masked-secret-DOkL5b_X.js">
62
- <link rel="modulepreload" crossorigin href="/assets/secret-input-DPl3VYM8.js">
62
+ <link rel="modulepreload" crossorigin href="/assets/secret-input-D93UrW4C.js">
63
63
  <link rel="modulepreload" crossorigin href="/assets/mic-CuUb7zc-.js">
64
64
  <link rel="modulepreload" crossorigin href="/assets/folder-open-CyzJ19I9.js">
65
65
  <link rel="modulepreload" crossorigin href="/assets/link-2-D_ZKYUW7.js">
@@ -69,30 +69,30 @@
69
69
  <link rel="modulepreload" crossorigin href="/assets/rotate-cw-LIg3Am9S.js">
70
70
  <link rel="modulepreload" crossorigin href="/assets/search-DA7gz22f.js">
71
71
  <link rel="modulepreload" crossorigin href="/assets/index.module-Cd9ENXfk.js">
72
- <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-FDS6S6qa.js">
73
- <link rel="modulepreload" crossorigin href="/assets/session-api-N3N37MrR.js">
72
+ <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-D_EwU7-6.js">
73
+ <link rel="modulepreload" crossorigin href="/assets/session-api-CW2X7g_U.js">
74
74
  <link rel="modulepreload" crossorigin href="/assets/constants-Dy8Gw0sF.js">
75
75
  <link rel="modulepreload" crossorigin href="/assets/app-chrome-BeB4KgOf.js">
76
76
  <link rel="modulepreload" crossorigin href="/assets/attachment-utils-core-BIOUBrpT.js">
77
77
  <link rel="modulepreload" crossorigin href="/assets/files-Bw4SBGdM.js">
78
- <link rel="modulepreload" crossorigin href="/assets/workspace-api-Cs4sjV2A.js">
78
+ <link rel="modulepreload" crossorigin href="/assets/workspace-api-B9M9ECTB.js">
79
79
  <link rel="modulepreload" crossorigin href="/assets/electron-env-Dit0bHgy.js">
80
80
  <link rel="modulepreload" crossorigin href="/assets/use-async-resource-GrnWNwMZ.js">
81
- <link rel="modulepreload" crossorigin href="/assets/activity-store-GvR2gZ0T.js">
82
- <link rel="modulepreload" crossorigin href="/assets/use-file-preview-expanded-Bope6MW6.js">
81
+ <link rel="modulepreload" crossorigin href="/assets/activity-store-SVmnh__i.js">
82
+ <link rel="modulepreload" crossorigin href="/assets/use-file-preview-expanded-BOpcSApw.js">
83
83
  <link rel="modulepreload" crossorigin href="/assets/globe-DSSGFWFn.js">
84
84
  <link rel="modulepreload" crossorigin href="/assets/button-CS04eWY9.js">
85
85
  <link rel="modulepreload" crossorigin href="/assets/copy-text-row-BHDs3cBa.js">
86
- <link rel="modulepreload" crossorigin href="/assets/share-link-dialog-TBBGJPfT.js">
87
- <link rel="modulepreload" crossorigin href="/assets/local-session-drafts-gbemPamv.js">
86
+ <link rel="modulepreload" crossorigin href="/assets/share-link-dialog-DCSmx-Rl.js">
87
+ <link rel="modulepreload" crossorigin href="/assets/local-session-drafts-C4et6msJ.js">
88
88
  <link rel="modulepreload" crossorigin href="/assets/tasks-CH6KoBeY.js">
89
- <link rel="modulepreload" crossorigin href="/assets/capabilities-CT_ZW9fT.js">
89
+ <link rel="modulepreload" crossorigin href="/assets/capabilities-C4grvUkw.js">
90
90
  <link rel="modulepreload" crossorigin href="/assets/skill-wire-pattern-BPpeIcCi.js">
91
- <link rel="modulepreload" crossorigin href="/assets/shares-api-DU0fHP2G.js">
92
- <link rel="modulepreload" crossorigin href="/assets/capabilities-BKu9BqPe.js">
93
- <link rel="modulepreload" crossorigin href="/assets/use-composer-attachments-DB0bBGzZ.js">
91
+ <link rel="modulepreload" crossorigin href="/assets/shares-api-B4rLfG3l.js">
92
+ <link rel="modulepreload" crossorigin href="/assets/capabilities-CAIQmCrH.js">
93
+ <link rel="modulepreload" crossorigin href="/assets/use-composer-attachments-Dlm9EFTO.js">
94
94
  <link rel="modulepreload" crossorigin href="/assets/git-branch-Dh9uxTot.js">
95
- <link rel="modulepreload" crossorigin href="/assets/notes-api-Byt65v3r.js">
95
+ <link rel="modulepreload" crossorigin href="/assets/notes-api-CKLw9vjk.js">
96
96
  <link rel="modulepreload" crossorigin href="/assets/message-square-fVE7Ghj1.js">
97
97
  <link rel="modulepreload" crossorigin href="/assets/pause-DuPxgSxk.js">
98
98
  <link rel="modulepreload" crossorigin href="/assets/play-kxZvpBg8.js">
@@ -100,19 +100,19 @@
100
100
  <link rel="modulepreload" crossorigin href="/assets/settings-2-D-csvaET.js">
101
101
  <link rel="modulepreload" crossorigin href="/assets/sparkles-DHlfQFAF.js">
102
102
  <link rel="modulepreload" crossorigin href="/assets/middleware-Pd0e8Igk.js">
103
- <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-store-DBvCRclh.js">
104
- <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-D0ygm6bc.js">
103
+ <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-store-DeUVEPPE.js">
104
+ <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-DD70L42G.js">
105
105
  <link rel="modulepreload" crossorigin href="/assets/tool-activity-BtJkgjFf.js">
106
- <link rel="modulepreload" crossorigin href="/assets/registry-api-7F2WNEZC.js">
107
- <link rel="modulepreload" crossorigin href="/assets/gateway-config-swr-CoRoOG1l.js">
108
- <link rel="modulepreload" crossorigin href="/assets/agents-admin-api-BkXb7VEZ.js">
109
- <link rel="modulepreload" crossorigin href="/assets/session-manager-CMGUwtbN.js">
110
- <link rel="modulepreload" crossorigin href="/assets/send-session-input-D1oc6BC6.js">
111
- <link rel="modulepreload" crossorigin href="/assets/theme-store-OhcbFEUR.js">
112
- <link rel="modulepreload" crossorigin href="/assets/extension-provider-F9JzOWZ3.js">
106
+ <link rel="modulepreload" crossorigin href="/assets/registry-api-CiN49wvk.js">
107
+ <link rel="modulepreload" crossorigin href="/assets/gateway-config-swr-DIIzvDLQ.js">
108
+ <link rel="modulepreload" crossorigin href="/assets/agents-admin-api-CVdFV-cU.js">
109
+ <link rel="modulepreload" crossorigin href="/assets/session-manager-BDpdi3lF.js">
110
+ <link rel="modulepreload" crossorigin href="/assets/send-session-input-jH6MQwdZ.js">
111
+ <link rel="modulepreload" crossorigin href="/assets/theme-store-DbRLBHVY.js">
112
+ <link rel="modulepreload" crossorigin href="/assets/extension-provider-DaLt3bC-.js">
113
113
  <link rel="modulepreload" crossorigin href="/assets/loopi-Djb8XU3l.js">
114
- <link rel="modulepreload" crossorigin href="/assets/models-hub-cache-B9SKjidc.js">
115
- <link rel="modulepreload" crossorigin href="/assets/oauth-api-BYsCbyGZ.js">
114
+ <link rel="modulepreload" crossorigin href="/assets/models-hub-cache-DzFiL4xV.js">
115
+ <link rel="modulepreload" crossorigin href="/assets/oauth-api-CC5KkSgG.js">
116
116
  <link rel="modulepreload" crossorigin href="/assets/skill-api-utils-C7V4JVXM.js">
117
117
  <link rel="modulepreload" crossorigin href="/assets/settings-form-draft-Dy10ldo8.js">
118
118
  <link rel="stylesheet" crossorigin href="/assets/markdown-view-DSjfHfaW.css">
package/dist/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  //#region package.json
2
- var version = "0.0.364";
2
+ var version = "0.0.366";
3
3
  //#endregion
4
4
  export { version };
@@ -86,6 +86,7 @@ var init_session_input_command = __esmMin((() => {
86
86
  expectedTranscriptId: z.string().min(1).max(128),
87
87
  configVersion: z.number().int().nonnegative(),
88
88
  delivery: z.enum(["next", "steer"]),
89
+ interrupt: z.boolean().optional(),
89
90
  input: sessionInputContentSchema,
90
91
  origin: originSchema
91
92
  })]);
@@ -288,6 +288,7 @@ export declare class AgentManager implements AgentInstanceGateway {
288
288
  refreshCredentials(): Promise<void>;
289
289
  private resolveApiKeyWithCache;
290
290
  private composeDynamicProjectContext;
291
+ private readonly personalPromptContext;
291
292
  private buildExecutionScopeContext;
292
293
  private getInteractionStateVersion;
293
294
  private getUserContextAccessVersion;
@@ -8,7 +8,6 @@ import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js
8
8
  import { init_sqlite } from "../storage/sqlite/index.js";
9
9
  import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
10
10
  import { init_agent_scope, listAgentEntries, resolveAgentProfileDir } from "./agent-scope.js";
11
- import { extractTextContent } from "./context/workspace.js";
12
11
  import { init_paths, resolveBundledSkillsDir } from "../config/paths.js";
13
12
  import { CredentialResolver, init_credentials } from "../auth/credentials.js";
14
13
  import { traceTools } from "../observability/runtime.js";
@@ -19,6 +18,10 @@ import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync
19
18
  import { getApiKeySync, getDefaultModelSync, init_providers, resolveModel } from "../providers/index.js";
20
19
  import { createExtensionAwareStreamFn } from "../providers/extension-stream-bridge.js";
21
20
  import { continuesAfterTool, trackAiUsageStream } from "../usage/recorder.js";
21
+ import { extractTextContent } from "./context/workspace.js";
22
+ import { resolveUserContextSessionAccess } from "../user-context/access-policy.js";
23
+ import { isPersonalConversation } from "../personal-agent/repository.js";
24
+ import { PersonalPromptContext } from "../personal-agent/prompt-context.js";
22
25
  import { buildExecutionScopeContextForPrompt } from "./context/execution-scope.js";
23
26
  import { clearBootstrapSnapshot } from "./bootstrap/bootstrap-cache.js";
24
27
  import { resolveBootstrapContextSync } from "./bootstrap/bootstrap-files.js";
@@ -35,7 +38,6 @@ import { resolveWorkspaceSkillsDir, resolveWorkspaceSkillsLockPath } from "./ski
35
38
  import { replaceAgentSystemPrompt } from "./prompt/agent-system-prompt.js";
36
39
  import { evictAllEmbeddedSessionRunners, evictEmbeddedSessionRunner } from "./embedded/session-runner.js";
37
40
  import { createAgentTurnPolicy } from "./orchestration/agent-turn-policy.js";
38
- import { resolveUserContextSessionAccess } from "../user-context/access-policy.js";
39
41
  import { createAgentCapabilitySessionState, resolveAgentCapabilityCatalog } from "./capabilities/registry.js";
40
42
  import "./capabilities/index.js";
41
43
  import { sortToolsForPromptCache } from "./tools/cache-stability.js";
@@ -258,6 +260,7 @@ var AgentManager = class {
258
260
  getPrimaryModel: () => this.resolveModelStringToModel(this.pickDefaultModelRef()),
259
261
  getMemoryManager: () => this.getCurrentWorkspaceRuntime().memoryManager,
260
262
  getSkillManager: () => this.getCurrentWorkspaceRuntime().skillManager,
263
+ getAgentSkillAvailability: (agentId) => this.getAgentSkillAvailability(agentId),
261
264
  getSessionStore: this.config.getSessionStore,
262
265
  gatewayClarify: this.config.gatewayClarify,
263
266
  getAutomationService: this.config.getAutomationService,
@@ -393,7 +396,7 @@ var AgentManager = class {
393
396
  prepareSkillTurn(conversationId, text) {
394
397
  this.getOrCreateAgent(conversationId);
395
398
  const inst = this.agents.get(conversationId);
396
- if (!text.includes("/skill:")) return {
399
+ if (isPersonalConversation(conversationId) || !text.includes("/skill:")) return {
397
400
  text,
398
401
  activatedCapabilityNames: this.activeCapabilityNames(inst)
399
402
  };
@@ -969,7 +972,9 @@ var AgentManager = class {
969
972
  composeDynamicProjectContext(...sections) {
970
973
  return sections.map((section) => section?.trim()).filter((section) => Boolean(section)).join("\n\n") || void 0;
971
974
  }
975
+ personalPromptContext = new PersonalPromptContext();
972
976
  buildExecutionScopeContext(conversationId) {
977
+ if (isXopcDatabaseOpen() && isPersonalConversation(conversationId)) return this.personalPromptContext.build(this.config.config, conversationId);
973
978
  const access = resolveUserContextSessionAccess(this.config.config, conversationId);
974
979
  return buildExecutionScopeContextForPrompt(conversationId, {
975
980
  includeKnowledge: access.knowledge,
@@ -1133,6 +1138,33 @@ var AgentManager = class {
1133
1138
  }
1134
1139
  resolveToolPolicy(profile, toolName, args) {
1135
1140
  const gatewayPolicy = profile.config.tools[toolName];
1141
+ if (toolName === "user_context_read" || toolName === "knowledge_read") {
1142
+ const command = args?.command;
1143
+ if (command === "search" || command === "get") {
1144
+ const legacyId = `${toolName.slice(0, -5)}_${command}`;
1145
+ const legacyPolicy = profile.config.tools[legacyId];
1146
+ const policies = [gatewayPolicy && {
1147
+ id: toolName,
1148
+ ...gatewayPolicy
1149
+ }, legacyPolicy && {
1150
+ id: legacyId,
1151
+ ...legacyPolicy
1152
+ }].filter((policy) => Boolean(policy));
1153
+ const rank = {
1154
+ allow: 0,
1155
+ ask: 1,
1156
+ deny: 2
1157
+ };
1158
+ policies.sort((a, b) => rank[b.mode] - rank[a.mode]);
1159
+ const selected = policies[0];
1160
+ if (!selected) return void 0;
1161
+ const limits = policies.flatMap((policy) => policy.maxCallsPerTurn ? [policy.maxCallsPerTurn] : []);
1162
+ return {
1163
+ ...selected,
1164
+ ...limits.length ? { maxCallsPerTurn: Math.min(...limits) } : {}
1165
+ };
1166
+ }
1167
+ }
1136
1168
  if (gatewayPolicy && gatewayPolicy.mode !== "allow") return {
1137
1169
  id: toolName,
1138
1170
  ...gatewayPolicy
@@ -4,12 +4,12 @@ import { finishContextExtractionRun } from "../../storage/sqlite/context-extract
4
4
  import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
5
5
  import { loadCompactionSourceSnapshot } from "../../storage/sqlite/transcript-repository.js";
6
6
  import { init_sqlite } from "../../storage/sqlite/index.js";
7
- import { extractTextContent } from "../context/workspace.js";
8
7
  import { extractProfileAgentId } from "../../config/agent-profile.js";
9
8
  import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/sync-provider-auth.js";
10
9
  import { getApiKeySync, init_providers, resolveModel } from "../../providers/index.js";
11
10
  import { createExtensionAwareStreamFn } from "../../providers/extension-stream-bridge.js";
12
11
  import { trackAiUsageStream } from "../../usage/recorder.js";
12
+ import { extractTextContent } from "../context/workspace.js";
13
13
  import { getAssertionSlot, listUserAssertions } from "../../user-model/repository.js";
14
14
  import { readAgentMessageContent } from "../memory/agent-message-access.js";
15
15
  import { isAssistantTurnAborted, isAssistantTurnFailed } from "../orchestration/llm-turn-retry.js";
@@ -2,10 +2,10 @@ import { getSqliteDatabase, init_transaction } from "../../storage/sqlite/transa
2
2
  import { init_collaboration_rule_repository, listCollaborationRules } from "../../storage/sqlite/collaboration-rule-repository.js";
3
3
  import { searchKnowledgeItems } from "../../knowledge-memory/repository.js";
4
4
  import "../../knowledge-memory/index.js";
5
- import { retrievalLexicalSimilarity } from "../../retrieval/textFeatures.js";
6
5
  import { listUserAssertions } from "../../user-model/repository.js";
7
6
  import { calculateExecutionValue } from "../../user-model/importance.js";
8
7
  import { canUseAssertion } from "../../user-model/usage-policy.js";
8
+ import { retrievalLexicalSimilarity } from "../../retrieval/textFeatures.js";
9
9
  import { getExecutionContextFeedbackScores } from "./audit.js";
10
10
  import { buildUserContextBlock } from "../memory/context-fence.js";
11
11
  import { randomUUID } from "node:crypto";
@@ -1,11 +1,11 @@
1
1
  import { TaskRepository, init_task_repository } from "../../tasks/task-repository.js";
2
+ import { knowledgeItemAllowed, listKnowledgeItems, searchKnowledgeItems } from "../../knowledge-memory/repository.js";
3
+ import "../../knowledge-memory/index.js";
4
+ import { ProjectStore } from "../../projects/project-store.js";
5
+ import { getProjectForSession, getProjectWorkspacePathForSession } from "../../projects/workspace.js";
2
6
  import { sanitizeForPromptLiteral } from "../prompt/sanitize-for-prompt.js";
3
7
  import { TaskReadModelProjector } from "../../tasks/task-read-model-projector.js";
4
8
  import { LocalAppStore } from "../../local-apps/store.js";
5
- import { ProjectStore } from "../../projects/project-store.js";
6
- import { getProjectForSession, getProjectWorkspacePathForSession } from "../../projects/workspace.js";
7
- import { knowledgeItemAllowed, listKnowledgeItems, searchKnowledgeItems } from "../../knowledge-memory/repository.js";
8
- import "../../knowledge-memory/index.js";
9
9
  //#region src/agent/context/project-context.ts
10
10
  init_task_repository();
11
11
  const MAX_TEXT = 1200;
@@ -6,9 +6,9 @@ import { setTraceIdentity, startObservation, traceOperation, traceRun } from "..
6
6
  import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
7
7
  import { init_providers, resolveModel } from "../../providers/index.js";
8
8
  import { appendDynamicPromptSection } from "../prompt/cache-boundary.js";
9
+ import { isPersonalConversation } from "../../personal-agent/repository.js";
9
10
  import { runWithEmbeddedExecutionSession } from "./execution-context.js";
10
11
  import { resolveAgentTurnTimeoutMs } from "../orchestration/run-agent-turn-with-timeout.js";
11
- import { isPersonalConversation } from "../../personal-agent/repository.js";
12
12
  import { resolvePromptCachePolicy } from "../../providers/prompt-cache-plan.js";
13
13
  import { evaluateContextBudget } from "../memory/context-budget.js";
14
14
  import { assessContext, recoverContext as recoverContext$1 } from "../memory/context-recovery.js";
@@ -1,7 +1,7 @@
1
- import { executeExternalOperation } from "../../capabilities/runtime/external-operations.js";
2
- import { canonicalCapabilityJson } from "../../capabilities/runtime/dispatcher.js";
3
1
  import { COMPUTER_CONTROL_TOOL, init_src } from "../../../packages/computer-control-contract/src/index.js";
4
2
  import { BROWSER_CONTROL_ENDPOINT_TOOL_NAME } from "../../../packages/browser-control-contract/src/index.js";
3
+ import { executeExternalOperation } from "../../capabilities/runtime/external-operations.js";
4
+ import { canonicalCapabilityJson } from "../../capabilities/runtime/dispatcher.js";
5
5
  import { externalToolRef, parseExternalToolRef } from "./refs.js";
6
6
  import { createHash } from "node:crypto";
7
7
  //#region src/agent/external-tools/endpoint-provider.ts
@@ -1,10 +1,10 @@
1
1
  import { stripRuntimeUserMessageEnvelope } from "../../../packages/gateway-contract/src/user-message-display.js";
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { extractProfileAgentId } from "../../config/agent-profile.js";
4
+ import { isPersonalConversation } from "../../personal-agent/repository.js";
4
5
  import { mimeTypeFromMediaPath } from "../../media/store.js";
5
6
  import { readAgentMessageContent } from "../memory/agent-message-access.js";
6
7
  import { readMediaReference } from "../../media/media-reference.js";
7
- import { isPersonalConversation } from "../../personal-agent/repository.js";
8
8
  import { isImageInboundAttachment } from "../../channels/attachments/attachment-classifiers.js";
9
9
  import "../../channels/attachments/inbound-persist.js";
10
10
  import { expandAtFileMentionsInPlainText } from "../context/expand-at-file-mentions.js";
@@ -1,2 +1,2 @@
1
1
  /** Per-turn presentation only; never persisted as a user message or Agent identity. */
2
- export declare const voicePresentationPrompt = "This turn is a live voice conversation in the same Chat.\nLead with the useful answer. Prefer one to three natural spoken sentences unless the user asks for detail.\nAllow silence. Do not repeatedly greet, recap unrelated old tasks, or end every reply with a question.\nFor work, briefly say what you are doing, use the available tools, then report the actual result.\nKeep code, long URLs, tables and detailed reference material in Chat; introduce them with a short spoken explanation.\nDo not imply a task continues in the background unless an existing task or workflow actually started it.\nUse the existing clarification and approval mechanisms. A background sound or ambiguous interjection is not permission for an action.\nStopping speech does not undo a completed tool action. State consequential results accurately.";
2
+ export declare const voicePresentationPrompt = "This turn is a live voice conversation in the same Chat.\nLead with the useful answer. Prefer one to three natural spoken sentences unless the user asks for detail.\nAllow silence. Do not repeatedly greet, recap unrelated old tasks, or end every reply with a question.\nFor work, briefly say what you are doing, use the available tools, then report the actual result.\nKeep code, long URLs, tables and detailed reference material in Chat; introduce them with a short spoken explanation.\nDo not imply a task continues in the background unless an existing task or workflow actually started it.\nAsk ordinary follow-up questions directly in speech, then let the user answer in the next turn; do not use a blocking clarification form. Keep formal action approvals in the existing approval mechanism. A background sound or ambiguous interjection is not permission for an action.\nStopping speech does not undo a completed tool action. State consequential results accurately.";
@@ -6,7 +6,7 @@ Allow silence. Do not repeatedly greet, recap unrelated old tasks, or end every
6
6
  For work, briefly say what you are doing, use the available tools, then report the actual result.
7
7
  Keep code, long URLs, tables and detailed reference material in Chat; introduce them with a short spoken explanation.
8
8
  Do not imply a task continues in the background unless an existing task or workflow actually started it.
9
- Use the existing clarification and approval mechanisms. A background sound or ambiguous interjection is not permission for an action.
9
+ Ask ordinary follow-up questions directly in speech, then let the user answer in the next turn; do not use a blocking clarification form. Keep formal action approvals in the existing approval mechanism. A background sound or ambiguous interjection is not permission for an action.
10
10
  Stopping speech does not undo a completed tool action. State consequential results accurately.`;
11
11
  //#endregion
12
12
  export { voicePresentationPrompt };
@@ -1,10 +1,12 @@
1
1
  import { getClarificationResumeInput, init_clarification_wait_repository } from "../../storage/sqlite/clarification-wait-repository.js";
2
2
  import { getConnectionResumeInput, init_connection_wait_repository } from "../../storage/sqlite/connection-wait-repository.js";
3
+ import { isPersonalConversation } from "../../personal-agent/repository.js";
3
4
  import { resolveImageHandlingStrategy } from "../image/vision-detection.js";
4
5
  import { hydrateUserTurnForLlm } from "../inbound/attachment-pipeline.js";
5
6
  import { buildDelegatedTaskDirective, buildTaskExecutionDirective } from "../../tasks/task-context-assembler.js";
6
7
  import { shouldSkipResetOverlapCommand } from "../../session/reset-triggers.js";
7
8
  import { parseSlashCommand } from "../../chat-commands/command-parse.js";
9
+ import { personalCommandRejection } from "../../chat-commands/personal-command-policy.js";
8
10
  import { commandRegistry } from "../../chat-commands/registry.js";
9
11
  import "../../chat-commands/index.js";
10
12
  import { runEmbeddedTurnForSession } from "../embedded/run-for-session.js";
@@ -33,11 +35,25 @@ async function hydratePerTurnState(deps, conversationId, thinking) {
33
35
  * can persist the receipt or stream it as a token.
34
36
  */
35
37
  async function tryRunSlashCommand(deps, ctx, content, options) {
36
- const parsed = parseSlashCommand(content);
38
+ const personal = isPersonalConversation(ctx.conversationId);
39
+ const parsed = personal ? /^\/[a-z][a-z0-9_:-]*(?:\s|$)/i.test(content.trim()) ? parseSlashCommand(content.trim().split(/\r?\n/)[0]) : null : parseSlashCommand(content);
37
40
  if (!parsed) return {
38
41
  matched: false,
39
42
  aggregatedText: ""
40
43
  };
44
+ if (personal) {
45
+ const command = commandRegistry.findByName(parsed.command);
46
+ if (!command && !parsed.command.startsWith("skill:")) return {
47
+ matched: false,
48
+ aggregatedText: ""
49
+ };
50
+ const rejection = personalCommandRejection(ctx.conversationId, command?.id ?? "skill.invoke", parsed.command);
51
+ if (rejection) return {
52
+ matched: true,
53
+ aggregatedText: rejection,
54
+ command: parsed.command
55
+ };
56
+ }
41
57
  if (options?.skipResetCommands && shouldSkipResetOverlapCommand(parsed.command, true)) return {
42
58
  matched: false,
43
59
  aggregatedText: ""
@@ -2,22 +2,22 @@ import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
3
  import { init_attachment_ref, parseNoteAttachmentTarget } from "../notes/attachment-ref.js";
4
4
  import { init_agent_scope, resolveAgentHomeDir, resolveDefaultAgentId } from "./agent-scope.js";
5
- import { extractTextContent } from "./context/workspace.js";
6
5
  import { configureTracing, flushTracing } from "../observability/runtime.js";
7
6
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
8
7
  import { applyConfigOverrides } from "../config/runtime-overrides.js";
9
8
  import { init_agent_session_key, resolveAgentIdFromConversationId } from "../routing/agent-session-key.js";
10
9
  import { extractProfileAgentId, resolveEffectiveAgentConfigForSession } from "../config/agent-profile.js";
11
10
  import { init_providers, resolveModel } from "../providers/index.js";
11
+ import { extractTextContent } from "./context/workspace.js";
12
12
  import { effectiveWorkspacePathForSession } from "../session/session-workspace.js";
13
13
  import { getProjectForSession } from "../projects/workspace.js";
14
+ import { getUserTimezone } from "../user-model/repository.js";
15
+ import "../user-model/index.js";
14
16
  import { runWithEmbeddedExecutionSession } from "./embedded/execution-context.js";
15
17
  import { removeSkillsLockEntry } from "./skills/hub-lock.js";
16
18
  import { installSkillFromZip } from "./skills/managed-store.js";
17
19
  import { resolveWorkspaceSkillsDir, resolveWorkspaceSkillsLockPath } from "./skills/workspace-skills-dir.js";
18
20
  import { pullSkillFromSource } from "./skills/hub-pull.js";
19
- import { getUserTimezone } from "../user-model/repository.js";
20
- import "../user-model/index.js";
21
21
  import { resolveAgentTurnTimeoutMs } from "./orchestration/run-agent-turn-with-timeout.js";
22
22
  import { onSessionTranscriptUpdate } from "../session/transcript-events.js";
23
23
  import { persistInboundAttachments } from "../channels/attachments/inbound-persist.js";
@@ -1,8 +1,8 @@
1
1
  import { 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
- import { parseFrontmatter } from "../../markdown/frontmatter.js";
5
4
  import { init_paths } from "../../config/paths.js";
5
+ import { parseFrontmatter } from "../../markdown/frontmatter.js";
6
6
  import { findInstallSpec, hasBinary, installSkill } from "./installer.js";
7
7
  import { applySkillEnvOverrides, createSkillConfigManager, getSkillEnvironment, isSkillEnabled, resolveSkillConfig, validateSkillConfig } from "./config.js";
8
8
  import { parseSkillToolConditions } from "./skill-tool-gating.js";
@@ -1,5 +1,5 @@
1
- import { parseFrontmatter } from "../../markdown/frontmatter.js";
2
1
  import { init_paths, resolveSkillsDir } from "../../config/paths.js";
2
+ import { parseFrontmatter } from "../../markdown/frontmatter.js";
3
3
  import { loadSkillsLock } from "./hub-lock.js";
4
4
  import { dirname, join, resolve, sep } from "node:path";
5
5
  import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
@@ -1,5 +1,5 @@
1
- import { parseFrontmatter } from "../../markdown/frontmatter.js";
2
1
  import { init_paths, resolveSkillsDir } from "../../config/paths.js";
2
+ import { parseFrontmatter } from "../../markdown/frontmatter.js";
3
3
  import { resolveWorkspaceSkillsDir } from "./workspace-skills-dir.js";
4
4
  import { formatScanSummary, scanSkillDirectory } from "./scanner.js";
5
5
  import { fuzzyFindText, normalizeForFuzzyMatch, normalizeToLF, restoreLineEndings } from "../tools/edit-diff.js";
@@ -9,6 +9,8 @@ function createDelegationParentPolicy(options) {
9
9
  if (!options.getConfig()) return [];
10
10
  const resolved = options.conversationId ? resolveEffectiveAgentConfigForSession(options.conversationId) : options.agentId ? resolveEffectiveAgentConfigForAgent(options.agentId) : resolveEffectiveAgentConfigForSession(void 0);
11
11
  const names = [name];
12
+ const command = args?.command;
13
+ if ((name === "user_context_read" || name === "knowledge_read") && (command === "search" || command === "get")) names.push(`${name.slice(0, -5)}_${command}`);
12
14
  if (name === "xopc_tool_execute") {
13
15
  const parsed = parseExternalToolRef(String(args?.toolRef ?? ""), "mcp");
14
16
  const ref = String(args?.toolRef ?? "");
@@ -23,6 +23,8 @@ const DELEGATION_TOOL_CAPABILITIES = {
23
23
  web_search: "web_read",
24
24
  web_fetch: "web_read",
25
25
  web_extract: "web_read",
26
+ knowledge_read: "knowledge_read",
27
+ user_context_read: "knowledge_read",
26
28
  knowledge_search: "knowledge_read",
27
29
  knowledge_get: "knowledge_read",
28
30
  session_search: "knowledge_read",
@@ -15,6 +15,7 @@ import type { TurnOrigin } from '@xopcai/endpoint-tools-protocol';
15
15
  import type { ExtensionRegistry } from '../../extensions/types/index.js';
16
16
  import type { MessageBus } from '../../infra/bus/index.js';
17
17
  import { type SkillInstallToolOptions, type SkillInstallToolResult, type MarketplaceSkillInstallToolOptions, type MarketplaceSkillInstallToolResult } from './index.js';
18
+ import { type PersonalTaskToolDeps } from './personal-task-tool.js';
18
19
  import type { MemoryManager } from '../memory/manager.js';
19
20
  import type { SessionStore } from '../../session/store.js';
20
21
  import type { GatewayClarifyRequestFn } from './clarify-tool.js';
@@ -47,6 +48,7 @@ export interface ToolFactoryDeps {
47
48
  getMemoryManager?: () => MemoryManager;
48
49
  /** Skill runtime for the current workspace/session. */
49
50
  getSkillManager?: () => SkillManager;
51
+ getAgentSkillAvailability?: PersonalTaskToolDeps['getAgentSkillAvailability'];
50
52
  /** Session store for `session_search`. */
51
53
  getSessionStore?: () => SessionStore;
52
54
  /** When set (gateway webchat), enables the `clarify` tool. */
@@ -10,7 +10,9 @@ import { getSessionTaskPlan, setSessionTaskPlan } from "../../storage/sqlite/ses
10
10
  import { init_sqlite } from "../../storage/sqlite/index.js";
11
11
  import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
12
12
  import { resolveEffectiveAgentConfigForAgent, resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
13
+ import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
13
14
  import "../../../packages/browser-control-contract/src/index.js";
15
+ import { PERSONAL_TOOL_DESCRIPTIONS } from "../../personal-agent/policy.js";
14
16
  import { getEmbeddedExecutionRunId, getEmbeddedExecutionSession } from "../embedded/execution-context.js";
15
17
  import { wrapToolsWithProtection } from "./executor.js";
16
18
  import { EXTERNAL_TOOL_NAMES } from "../external-tools/gateway-tools.js";
@@ -24,8 +26,8 @@ import { createListDirTool } from "./list-dir.js";
24
26
  import { createPublishArtifactsTool } from "./publish-artifacts.js";
25
27
  import { createExecCommandTool } from "./exec-command.js";
26
28
  import { createApplyPatchTool } from "./apply-patch.js";
27
- import { createUserContextGetTool, createUserContextSearchTool, createUserContextUpdateTool } from "./user-context-tool.js";
28
- import { createKnowledgeGetTool, createKnowledgeSearchTool, createKnowledgeWriteTool } from "./knowledge-memory-tool.js";
29
+ import { createUserContextGetTool, createUserContextReadTool, createUserContextSearchTool, createUserContextUpdateTool } from "./user-context-tool.js";
30
+ import { createKnowledgeGetTool, createKnowledgeReadTool, createKnowledgeSearchTool, createKnowledgeWriteTool } from "./knowledge-memory-tool.js";
29
31
  import { createSessionSearchTool } from "./session-search-tool.js";
30
32
  import { createSessionRecallTool } from "./session-recall-tool.js";
31
33
  import { createGrepTool } from "./grep.js";
@@ -68,7 +70,6 @@ import { createPersonalTaskTool } from "./personal-task-tool.js";
68
70
  import { createPersonalRequestTools } from "./personal-request-tool.js";
69
71
  import { createPersonalRequestConnectionTool, createPersonalRequestResultTool } from "./personal-request-result-tool.js";
70
72
  import { createPersonalPreferenceTool } from "./personal-preference-tool.js";
71
- import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
72
73
  import { createBrowserUseTool } from "./browser/tool/browser-use-tool.js";
73
74
  import { ComputerRuntime } from "../../computer/runtime.js";
74
75
  import { createComputerUseTool } from "./computer-use-tool.js";
@@ -294,6 +295,7 @@ var AgentToolsFactory = class AgentToolsFactory {
294
295
  const grep = createGrepTool(workspace);
295
296
  const find = createFindTool(workspace);
296
297
  const productToolDeps = {
298
+ getAgentSkillAvailability: this.deps.getAgentSkillAvailability,
297
299
  getWorkspace: () => this.deps.workspace,
298
300
  getConfig: () => this.deps.getConfig?.(),
299
301
  getCurrentAgentId: () => options?.agentId,
@@ -412,6 +414,13 @@ var AgentToolsFactory = class AgentToolsFactory {
412
414
  workspace,
413
415
  getConfig: () => this.deps.getConfig?.()
414
416
  })] : [],
417
+ ...personalToolsConfigured || allowed?.has("user_context_read") ? [createUserContextReadTool({
418
+ agentId: resolvedAgentId,
419
+ workspaceId: workspace,
420
+ getSessionId: currentConversationId,
421
+ getProjectId: currentProjectId,
422
+ canRead: () => currentAccess().userModel
423
+ }, (command) => !disabled?.has(`user_context_${command}`) && (!isXopcDatabaseOpen() || resolveEffectiveAgentConfigForAgent(resolvedAgentId).config.tools[`user_context_${command}`]?.mode !== "deny"))] : [],
415
424
  createUserContextSearchTool({
416
425
  agentId: resolvedAgentId,
417
426
  workspaceId: workspace,
@@ -438,6 +447,16 @@ var AgentToolsFactory = class AgentToolsFactory {
438
447
  return conversationId ? getPendingTranscriptUserText(conversationId) : void 0;
439
448
  }
440
449
  }),
450
+ ...personalToolsConfigured || allowed?.has("knowledge_read") ? [createKnowledgeReadTool({
451
+ agentId: resolvedAgentId,
452
+ workspaceId: workspace,
453
+ getSessionId: currentConversationId,
454
+ getProjectId: currentProjectId,
455
+ canRead: () => currentAccess().knowledge,
456
+ canWrite: () => currentAccess().knowledge,
457
+ getWritePolicy: knowledgeWritePolicy,
458
+ getReadPolicy: () => currentAccess().knowledgePolicy
459
+ }, (command) => !disabled?.has(`knowledge_${command}`) && (!isXopcDatabaseOpen() || resolveEffectiveAgentConfigForAgent(resolvedAgentId).config.tools[`knowledge_${command}`]?.mode !== "deny"))] : [],
441
460
  createKnowledgeSearchTool({
442
461
  agentId: resolvedAgentId,
443
462
  workspaceId: workspace,
@@ -591,7 +610,10 @@ var AgentToolsFactory = class AgentToolsFactory {
591
610
  allowHostGit: () => getCommandIsolation()?.mode !== "docker"
592
611
  }));
593
612
  }
594
- return filterToolsByDisabledSet(core, disabled).filter((tool) => !allowed || allowed.has(tool.name));
613
+ return filterToolsByDisabledSet(core, disabled).filter((tool) => (!allowed || allowed.has(tool.name)) && !(personalToolsConfigured && tool.name === "clarify")).map((tool) => personalToolsConfigured && PERSONAL_TOOL_DESCRIPTIONS[tool.name] ? {
614
+ ...tool,
615
+ description: PERSONAL_TOOL_DESCRIPTIONS[tool.name]
616
+ } : tool);
595
617
  }
596
618
  createCapabilityTools(capabilityNames, options) {
597
619
  const disabled = options?.disabledTools;
@@ -6,8 +6,8 @@ export { createWriteFileTool, writeFileTool } from './write.js';
6
6
  export { createListDirTool, listDirTool } from './list-dir.js';
7
7
  export { createExecCommandTool, type ExecCommandDetails, type ExecCommandUpdateDetails, } from './exec-command.js';
8
8
  export { createApplyPatchTool, type AppliedPatchChange, type ApplyPatchDetails, } from './apply-patch.js';
9
- export { createUserContextSearchTool, createUserContextGetTool, createUserContextUpdateTool, type UserContextToolOptions, } from './user-context-tool.js';
10
- export { createKnowledgeSearchTool, createKnowledgeGetTool, createKnowledgeWriteTool, type KnowledgeToolOptions, } from './knowledge-memory-tool.js';
9
+ export { createUserContextReadTool, createUserContextSearchTool, createUserContextGetTool, createUserContextUpdateTool, type UserContextToolOptions, } from './user-context-tool.js';
10
+ export { createKnowledgeReadTool, createKnowledgeSearchTool, createKnowledgeGetTool, createKnowledgeWriteTool, type KnowledgeToolOptions, } from './knowledge-memory-tool.js';
11
11
  export { createSessionSearchTool } from './session-search-tool.js';
12
12
  export { createSessionRecallTool, type SessionRecallToolDeps } from './session-recall-tool.js';
13
13
  export { grepTool, createGrepTool, type GrepToolInput, type GrepToolDetails, } from './grep.js';
@@ -9,8 +9,8 @@ import { createPublishArtifactsTool } from "./publish-artifacts.js";
9
9
  import { createExecCommandTool } from "./exec-command.js";
10
10
  import { fuzzyFindText, generateDiffString, normalizeForFuzzyMatch, normalizeToLF, restoreLineEndings, stripBom } from "./edit-diff.js";
11
11
  import { createApplyPatchTool } from "./apply-patch.js";
12
- import { createUserContextGetTool, createUserContextSearchTool, createUserContextUpdateTool } from "./user-context-tool.js";
13
- import { createKnowledgeGetTool, createKnowledgeSearchTool, createKnowledgeWriteTool } from "./knowledge-memory-tool.js";
12
+ import { createUserContextGetTool, createUserContextReadTool, createUserContextSearchTool, createUserContextUpdateTool } from "./user-context-tool.js";
13
+ import { createKnowledgeGetTool, createKnowledgeReadTool, createKnowledgeSearchTool, createKnowledgeWriteTool } from "./knowledge-memory-tool.js";
14
14
  import { createSessionSearchTool } from "./session-search-tool.js";
15
15
  import { createSessionRecallTool } from "./session-recall-tool.js";
16
16
  import { createGrepTool, grepTool } from "./grep.js";
@@ -46,4 +46,4 @@ import { createManagedJobTool } from "./managed-job-tool.js";
46
46
  import { createImageTool } from "./image-tool.js";
47
47
  import { createImageGenerateTool, resolveImageGenerationModelConfigForTool } from "./image-generate-tool.js";
48
48
  import { createPersonalReadTool } from "./personal-read-tool.js";
49
- export { BrowserRuntime, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_TOOL_METADATA, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, TodoStore, ToolConcurrencyController, assertBrowserUrlAllowed, createApplyPatchTool, createAutomationTool, createBrowserAutomationTool, createClarifyTool, createCreateShareTool, createDataBatchTool, createDelegateTool, createDesktopPetTool, createExecCommandTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createKnowledgeGetTool, createKnowledgeSearchTool, createKnowledgeWriteTool, createListDirTool, createManagedJobTool, createMemoryMaintenanceTool, createMessageTool, createPersonalReadTool, createPublishArtifactsTool, createReadFileTool, createReadMediaTool, createSendMediaTool, createSessionRecallTool, createSessionSearchTool, createSessionStatusTool, createSkillInstallTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createSkillsMarketplaceSearchTool, createTodoTool, createToolManualTool, createUpdatePlanTool, createUserContextGetTool, createUserContextSearchTool, createUserContextUpdateTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWorkflowManageTool, createWorkflowTool, createWriteFileTool, createXopcUseTool, findTool, formatSize, fuzzyFindText, generateDiffString, getToolMetadata, grepTool, isShareToolAvailable, listDirTool, normalizeForFuzzyMatch, normalizeToLF, resolveImageGenerationModelConfigForTool, resolveImageModelConfigForTool, resolveToolLockMode, restoreLineEndings, stripBom, stripHtmlBoilerplate, truncateHead, truncateLine, truncateTail, writeFileTool };
49
+ export { BrowserRuntime, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_TOOL_METADATA, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, TodoStore, ToolConcurrencyController, assertBrowserUrlAllowed, createApplyPatchTool, createAutomationTool, createBrowserAutomationTool, createClarifyTool, createCreateShareTool, createDataBatchTool, createDelegateTool, createDesktopPetTool, createExecCommandTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createKnowledgeGetTool, createKnowledgeReadTool, createKnowledgeSearchTool, createKnowledgeWriteTool, createListDirTool, createManagedJobTool, createMemoryMaintenanceTool, createMessageTool, createPersonalReadTool, createPublishArtifactsTool, createReadFileTool, createReadMediaTool, createSendMediaTool, createSessionRecallTool, createSessionSearchTool, createSessionStatusTool, createSkillInstallTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createSkillsMarketplaceSearchTool, createTodoTool, createToolManualTool, createUpdatePlanTool, createUserContextGetTool, createUserContextReadTool, createUserContextSearchTool, createUserContextUpdateTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWorkflowManageTool, createWorkflowTool, createWriteFileTool, createXopcUseTool, findTool, formatSize, fuzzyFindText, generateDiffString, getToolMetadata, grepTool, isShareToolAvailable, listDirTool, normalizeForFuzzyMatch, normalizeToLF, resolveImageGenerationModelConfigForTool, resolveImageModelConfigForTool, resolveToolLockMode, restoreLineEndings, stripBom, stripHtmlBoilerplate, truncateHead, truncateLine, truncateTail, writeFileTool };
@@ -13,3 +13,5 @@ export interface KnowledgeToolOptions {
13
13
  export declare function createKnowledgeSearchTool(options: KnowledgeToolOptions): AgentTool;
14
14
  export declare function createKnowledgeGetTool(options: KnowledgeToolOptions): AgentTool;
15
15
  export declare function createKnowledgeWriteTool(options: KnowledgeToolOptions): AgentTool;
16
+ /** Combines bounded reads while preserving the original visibility and policy checks. */
17
+ export declare function createKnowledgeReadTool(options: KnowledgeToolOptions, canUseCommand?: (command: 'search' | 'get') => boolean): AgentTool;