@xopcai/xopc 0.0.406 → 0.0.408

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 (242) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BE3ci_lj.js → agent-avatar-dicebear-B0em9Xfs.js} +1 -1
  4. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CtE1h2xU.js +1 -0
  5. package/dist/gateway/static/root/assets/agents-DAgFeHEb.js +77 -0
  6. package/dist/gateway/static/root/assets/{agents-admin-api-D6XzhsQy.js → agents-admin-api-D0UyB0Y_.js} +1 -1
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-BDbJKxa-.js → app-management-settings-panel-B1qR8ElB.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-CEOOrVYb.js → appearance-settings-GA819R2q.js} +1 -1
  9. package/dist/gateway/static/root/assets/apps-page-DZptDZ7h.js +1 -0
  10. package/dist/gateway/static/root/assets/{archive-plugin-B7pzPErg.js → archive-plugin-BjWaZIHe.js} +1 -1
  11. package/dist/gateway/static/root/assets/{automations-page-CcQjEiqk.js → automations-page-IkrLEkMb.js} +1 -1
  12. package/dist/gateway/static/root/assets/automations-workspace-qfEjk_ws.js +6 -0
  13. package/dist/gateway/static/root/assets/{binary-plugins-D5kTu6gH.js → binary-plugins-DKy1DC62.js} +1 -1
  14. package/dist/gateway/static/root/assets/{block-editor-CnW6rF_e.js → block-editor-4E-OdmNm.js} +40 -40
  15. package/dist/gateway/static/root/assets/{browser-automation-inputs-CAcUtInP.js → browser-automation-inputs-Bs-AkQ1q.js} +1 -1
  16. package/dist/gateway/static/root/assets/browser-automations-page-D0Vbe1Q_.js +3 -0
  17. package/dist/gateway/static/root/assets/browser-settings-page-BXCNNpQd.js +3 -0
  18. package/dist/gateway/static/root/assets/capabilities-CD6PzNK7.js +1 -0
  19. package/dist/gateway/static/root/assets/capabilities-page-DMtxaYgt.js +2 -0
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-BlWrMG6Z.js +8 -0
  21. package/dist/gateway/static/root/assets/{capability-header-actions-jztljvVW.js → capability-header-actions-BMffrHhT.js} +1 -1
  22. package/dist/gateway/static/root/assets/channels-C96r2Rqq.js +1 -0
  23. package/dist/gateway/static/root/assets/{chat-terminal-dock-BVlFOKJj.js → chat-terminal-dock-vb3kBSeI.js} +2 -2
  24. package/dist/gateway/static/root/assets/computer-settings-page-75SDQxQW.js +1 -0
  25. package/dist/gateway/static/root/assets/{connector-service-page-BNcTUa99.js → connector-service-page-DmJ9dIql.js} +1 -1
  26. package/dist/gateway/static/root/assets/connectors-page-Bua_nhSH.js +1 -0
  27. package/dist/gateway/static/root/assets/{date-picker-BKUmdSp7.js → date-picker-BEDH1AbM.js} +1 -1
  28. package/dist/gateway/static/root/assets/dependency-picker-LwWL5fo8.js +1 -0
  29. package/dist/gateway/static/root/assets/{desktop-pet-IvADYxyi.js → desktop-pet-Bb-s29ag.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-y6WzhGEK.js → desktop-pet-settings-Btt-DzyT.js} +1 -1
  31. package/dist/gateway/static/root/assets/device-pairing-wizard-_UWo9-4N.js +1 -0
  32. package/dist/gateway/static/root/assets/{directory-picker-path-field-DnEvwMTm.js → directory-picker-path-field-CkGfC105.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-debug-page-CCvuK1m0.js → extension-debug-page-Cm0F3rcI.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-page-DegRwY3R.js → extension-page-B72a-tnZ.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-settings-page-B8UQgGgZ.js → extension-settings-page-BEDAm_Ib.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-config-swr-BvuySoCX.js → gateway-config-swr-CTXr917C.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-realtime-SBtdXzco.js → gateway-realtime-CP6L2jIR.js} +1 -1
  38. package/dist/gateway/static/root/assets/gateway-realtime-store-yXB4a40_.js +1 -0
  39. package/dist/gateway/static/root/assets/gateway-settings-BapgXAhB.js +1 -0
  40. package/dist/gateway/static/root/assets/{gateway-startup-retry-CEpuztYK.js → gateway-startup-retry-DD2fsxdd.js} +1 -1
  41. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-MjAoJQJX.js → highlighted-body-KQOG7T2V-BWjkqT5j.js} +1 -1
  42. package/dist/gateway/static/root/assets/home-page-DNGjF6h4.js +2 -0
  43. package/dist/gateway/static/root/assets/{image-generation-api-SQDixWjO.js → image-generation-api-Bi1-Hvtr.js} +1 -1
  44. package/dist/gateway/static/root/assets/{imports-page-1ZId0Ng0.js → imports-page-b4VDs6Bd.js} +1 -1
  45. package/dist/gateway/static/root/assets/index-Cgd4fGVP.js +267 -0
  46. package/dist/gateway/static/root/assets/index-gYRNcY2Q.css +1 -0
  47. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-yMwBt1Sv.js → keyboard-shortcuts-settings-Cf29ltoI.js} +1 -1
  48. package/dist/gateway/static/root/assets/local-app-workbench-page-dgUxHhW8.js +1 -0
  49. package/dist/gateway/static/root/assets/{local-apps-page-CF6_kS9C.js → local-apps-page-D3k9GjgF.js} +1 -1
  50. package/dist/gateway/static/root/assets/{local-session-drafts-DhJjHCfQ.js → local-session-drafts-TqLFKwYo.js} +1 -1
  51. package/dist/gateway/static/root/assets/{locale-store-D5h-Ha6-.js → locale-store-D_migb9R.js} +1 -1
  52. package/dist/gateway/static/root/assets/logs-page-BUlU7t8l.js +2 -0
  53. package/dist/gateway/static/root/assets/management-settings-2L7XFZXc.js +1 -0
  54. package/dist/gateway/static/root/assets/{markdown-view-CthsQiiO.js → markdown-view-B35a4o1v.js} +1 -1
  55. package/dist/gateway/static/root/assets/markdown-view-ixUWAmoy.css +1 -0
  56. package/dist/gateway/static/root/assets/{media-plugins-UYX1YivF.js → media-plugins-Bl1Xga_v.js} +1 -1
  57. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-Bi62iXra.js +1 -0
  58. package/dist/gateway/static/root/assets/messages-D__oW2yE.js +3 -0
  59. package/dist/gateway/static/root/assets/note-detail-panel-ogBu93h0.js +5 -0
  60. package/dist/gateway/static/root/assets/note-image-lightbox-Dxvo_WsE.js +1 -0
  61. package/dist/gateway/static/root/assets/notes-page-CNdoxzIZ.js +8 -0
  62. package/dist/gateway/static/root/assets/{page-context-capture-button-DOrPS73o.js → page-context-capture-button-Bq4Xpop5.js} +1 -1
  63. package/dist/gateway/static/root/assets/personal-page-7P2leCsB.js +1 -0
  64. package/dist/gateway/static/root/assets/personal-proactivity-BJcZ3Yhi.js +1 -0
  65. package/dist/gateway/static/root/assets/personal-settings-panel-D6n6TObP.js +1 -0
  66. package/dist/gateway/static/root/assets/plugin-details-dialog-JTxDbMI4.js +1 -0
  67. package/dist/gateway/static/root/assets/plugin-presentation-CO5BFDGW.js +1 -0
  68. package/dist/gateway/static/root/assets/{preview-open-alternatives-BP9C0kH3.js → preview-open-alternatives-6XU-2lVI.js} +1 -1
  69. package/dist/gateway/static/root/assets/{product-open-page-D151rJVy.js → product-open-page-BpB0klIl.js} +1 -1
  70. package/dist/gateway/static/root/assets/product-preview-content-DxQaoQew.js +1 -0
  71. package/dist/gateway/static/root/assets/project-detail-page-LilHE2OV.js +1 -0
  72. package/dist/gateway/static/root/assets/projects-page-D4Jxhuhq.js +1 -0
  73. package/dist/gateway/static/root/assets/{registry-api-Bf0hVPNV.js → registry-api-4NZOh0iz.js} +1 -1
  74. package/dist/gateway/static/root/assets/remote-access-hub-Cy71CCQq.js +1 -0
  75. package/dist/gateway/static/root/assets/{runtime-tools-api-ByH1meP7.js → runtime-tools-api-CmEWVrOg.js} +1 -1
  76. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DyLxlqWV.js → runtime-tools-settings-panel-CrbjrokA.js} +1 -1
  77. package/dist/gateway/static/root/assets/{schema-form-ClP4uPSj.js → schema-form-DITi2cne.js} +1 -1
  78. package/dist/gateway/static/root/assets/{session-api-fVuszA_P.js → session-api-aQLptIs9.js} +1 -1
  79. package/dist/gateway/static/root/assets/session-manager-D2sLfkw-.js +16 -0
  80. package/dist/gateway/static/root/assets/sessions-page-D1THmRXE.js +1 -0
  81. package/dist/gateway/static/root/assets/settings-advanced-gate-CjRLXfoo.js +1 -0
  82. package/dist/gateway/static/root/assets/{settings-form-section-B4NShgv-.js → settings-form-section-Cl0eF4hl.js} +1 -1
  83. package/dist/gateway/static/root/assets/settings-page-1jcGeVtB.js +1 -0
  84. package/dist/gateway/static/root/assets/{setup-status-panel-BVKQ2inq.js → setup-status-panel-CFhDHkyK.js} +1 -1
  85. package/dist/gateway/static/root/assets/{share-preview-page-BxN9t3MD.js → share-preview-page-By4IKKgg.js} +1 -1
  86. package/dist/gateway/static/root/assets/shares-settings-q2sa1VvF.js +1 -0
  87. package/dist/gateway/static/root/assets/{skill-api-E0E-MH1S.js → skill-api-BxCyuPhf.js} +1 -1
  88. package/dist/gateway/static/root/assets/skill-reload-api-CIHSQxr1.js +1 -0
  89. package/dist/gateway/static/root/assets/skills-page-BQaej_2C.js +2 -0
  90. package/dist/gateway/static/root/assets/{style-Bs9x3WBj.js → style-Dt_oHNvB.js} +1 -1
  91. package/dist/gateway/static/root/assets/{system-settings-panel-DpQPaJId.js → system-settings-panel-C9ejxax1.js} +1 -1
  92. package/dist/gateway/static/root/assets/task-detail-page-SipLlGGk.js +2 -0
  93. package/dist/gateway/static/root/assets/{task-expandable-content-BoGtWYbk.js → task-expandable-content-BMCvE36l.js} +1 -1
  94. package/dist/gateway/static/root/assets/tracing-settings-page-bn9vnLrf.js +1 -0
  95. package/dist/gateway/static/root/assets/{tunnel-api-3GopOQ_S.js → tunnel-api-BeTAD8BN.js} +1 -1
  96. package/dist/gateway/static/root/assets/{usage-page-B8j47CWQ.js → usage-page-BPuc6leN.js} +1 -1
  97. package/dist/gateway/static/root/assets/{use-autosave-CYIuWnRn.js → use-autosave-DwcmmxWR.js} +1 -1
  98. package/dist/gateway/static/root/assets/user-model-page-YWSqv_kR.js +2 -0
  99. package/dist/gateway/static/root/assets/{voice-api-key-field-BN37Lklj.js → voice-api-key-field-Bk947X8N.js} +1 -1
  100. package/dist/gateway/static/root/assets/{voice-config-api-CRjdZdJF.js → voice-config-api-4yGMrp7J.js} +1 -1
  101. package/dist/gateway/static/root/assets/{work-discovery-overlay-C_bcAAX6.js → work-discovery-overlay-mjj7w_wU.js} +1 -1
  102. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-B5oKCzTn.js → workflow-run-setup-panel-xQUvtVUU.js} +2 -2
  103. package/dist/gateway/static/root/assets/workflows-page-DbKRAEWP.js +6 -0
  104. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-DGGi4zVC.js → xopc-cloud-account-card-C4jQM6Uo.js} +1 -1
  105. package/dist/gateway/static/root/index.html +17 -16
  106. package/dist/package.js +1 -1
  107. package/dist/packages/gateway-contract/src/capabilities.js +30 -3
  108. package/dist/src/agent/external-tools/cliProvider.js +1 -1
  109. package/dist/src/agent/prompt/conversational-configuration-guide.d.ts +4 -0
  110. package/dist/src/agent/prompt/conversational-configuration-guide.js +25 -0
  111. package/dist/src/agent/prompt/service-prompt-builder.js +6 -1
  112. package/dist/src/agent/prompt/system-prompt.js +2 -2
  113. package/dist/src/agent/tool-manuals/xopc-configuration.d.ts +8 -0
  114. package/dist/src/agent/tool-manuals/xopc-configuration.js +55 -0
  115. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  116. package/dist/src/agent/tool-manuals/xopc-use.js +4 -1
  117. package/dist/src/agent/tools/factory.js +0 -5
  118. package/dist/src/agent/tools/tool-manual-tool.d.ts +1 -0
  119. package/dist/src/agent/tools/tool-manual-tool.js +27 -2
  120. package/dist/src/agent/tools/xopc-use-tool.js +12 -7
  121. package/dist/src/agent-catalog/capabilities.js +27 -1
  122. package/dist/src/agent-config/index.js +2 -2
  123. package/dist/src/agent-config/schema.d.ts +0 -116
  124. package/dist/src/agent-config/schema.js +2 -32
  125. package/dist/src/capabilities/store-connector.d.ts +9 -1
  126. package/dist/src/capabilities/store-connector.js +30 -1
  127. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  128. package/dist/src/config/schema.d.ts +1 -1
  129. package/dist/src/connectors/cli/adapterRegistry.js +1 -8
  130. package/dist/src/connectors/cli/runtime.js +1 -1
  131. package/dist/src/connectors/composio-catalog.d.ts +2 -2
  132. package/dist/src/connectors/composio-catalog.js +3 -8
  133. package/dist/src/connectors/composio-sessions.js +2 -0
  134. package/dist/src/connectors/composio.js +0 -6
  135. package/dist/src/connectors/connection-candidates.js +0 -5
  136. package/dist/src/connectors/connection-capabilities.js +0 -4
  137. package/dist/src/connectors/excluded-connectors.d.ts +4 -0
  138. package/dist/src/connectors/excluded-connectors.js +24 -0
  139. package/dist/src/connectors/install.js +3 -0
  140. package/dist/src/connectors/integration-strategy.js +0 -5
  141. package/dist/src/connectors/providers.d.ts +0 -1
  142. package/dist/src/connectors/providers.js +2 -14
  143. package/dist/src/extensions/agent-plugins/cli-authorization.js +7 -3
  144. package/dist/src/extensions/agent-plugins/mcp-adapter.js +3 -1
  145. package/dist/src/extensions/agent-plugins/node-runtime.d.ts +5 -0
  146. package/dist/src/extensions/agent-plugins/node-runtime.js +14 -0
  147. package/dist/src/gateway/hono/routes/personal-agent.js +4 -5
  148. package/dist/src/gateway/service/config-coordinator.d.ts +1 -1
  149. package/dist/src/personal-agent/communication.d.ts +2 -2
  150. package/dist/src/personal-agent/communication.js +2 -1
  151. package/dist/src/personal-agent/default-style.d.ts +2 -0
  152. package/dist/src/personal-agent/default-style.js +11 -0
  153. package/dist/src/personal-agent/persona.d.ts +1 -1
  154. package/dist/src/personal-agent/persona.js +1 -1
  155. package/dist/src/personal-agent/policy.d.ts +1 -1
  156. package/dist/src/personal-agent/policy.js +0 -1
  157. package/dist/src/personal-agent/proactivity/service.js +1 -4
  158. package/dist/src/personal-agent/prompts.d.ts +1 -5
  159. package/dist/src/personal-agent/prompts.js +28 -39
  160. package/dist/src/personal-agent/reply-composer.js +3 -2
  161. package/dist/src/personal-agent/reply-style.d.ts +10 -2
  162. package/dist/src/personal-agent/reply-style.js +61 -3
  163. package/dist/src/personal-agent/repository.d.ts +0 -8
  164. package/dist/src/personal-agent/repository.js +1 -9
  165. package/dist/src/personal-agent/service.d.ts +2 -32
  166. package/dist/src/personal-agent/service.js +11 -17
  167. package/dist/src/platform/contracts.d.ts +3 -3
  168. package/dist/src/session/client-history.js +3 -0
  169. package/dist/src/session/session-context-for-llm.js +4 -0
  170. package/dist/src/session/task-allocation-status.d.ts +2 -0
  171. package/dist/src/session/task-allocation-status.js +14 -0
  172. package/dist/src/storage/sqlite/migrations/259_personal_default_style.sql +10 -0
  173. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  174. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  175. package/dist/src/storage/sqlite/schema.js +1 -1
  176. package/dist/src/tasks/task-allocation-repository.js +8 -5
  177. package/dist/src/tasks/task-main-update-decision-service.js +1 -1
  178. package/package.json +5 -2
  179. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DzDaum4Y.js +0 -1
  180. package/dist/gateway/static/root/assets/agents-BfC3FYYe.js +0 -77
  181. package/dist/gateway/static/root/assets/apps-page-CpoG_3PG.js +0 -1
  182. package/dist/gateway/static/root/assets/automations-workspace-BVTP3pzt.js +0 -6
  183. package/dist/gateway/static/root/assets/browser-BLJWD7WI.js +0 -8
  184. package/dist/gateway/static/root/assets/browser-automations-page-DT7-lnPN.js +0 -3
  185. package/dist/gateway/static/root/assets/browser-settings-page-ByK8znt2.js +0 -3
  186. package/dist/gateway/static/root/assets/capabilities-Dl3LttAm.js +0 -1
  187. package/dist/gateway/static/root/assets/capabilities-page-C8tv6M_O.js +0 -2
  188. package/dist/gateway/static/root/assets/capabilities-settings-panel-OVLgL6yL.js +0 -8
  189. package/dist/gateway/static/root/assets/capability-icon-DVoZxEgW.js +0 -1
  190. package/dist/gateway/static/root/assets/capability-links-DzQWK1Fh.js +0 -1
  191. package/dist/gateway/static/root/assets/channels-D8BKMMPW.js +0 -1
  192. package/dist/gateway/static/root/assets/computer-settings-page-CvQgrTwb.js +0 -1
  193. package/dist/gateway/static/root/assets/connectors-page-CWlLRQpK.js +0 -1
  194. package/dist/gateway/static/root/assets/dependency-picker-BarQvwoO.js +0 -1
  195. package/dist/gateway/static/root/assets/device-pairing-wizard-D3IUZ8xW.js +0 -1
  196. package/dist/gateway/static/root/assets/gateway-realtime-store-dKq2fm2X.js +0 -1
  197. package/dist/gateway/static/root/assets/gateway-settings-DlLyLsXY.js +0 -1
  198. package/dist/gateway/static/root/assets/home-page-DAYtNK3o.js +0 -2
  199. package/dist/gateway/static/root/assets/index-K2cy4f-3.js +0 -260
  200. package/dist/gateway/static/root/assets/index-QegseiyI.css +0 -1
  201. package/dist/gateway/static/root/assets/local-app-workbench-page-a7J0NPIs.js +0 -1
  202. package/dist/gateway/static/root/assets/logs-page-C8y5yhoM.js +0 -2
  203. package/dist/gateway/static/root/assets/management-settings-C7dL_jNu.js +0 -1
  204. package/dist/gateway/static/root/assets/markdown-view-Ct4sKkUf.css +0 -1
  205. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-7zpLTDLZ.js +0 -1
  206. package/dist/gateway/static/root/assets/messages-Bwv-AOYl.js +0 -3
  207. package/dist/gateway/static/root/assets/note-detail-panel-Bxm523Up.js +0 -5
  208. package/dist/gateway/static/root/assets/note-image-lightbox-B7ARnjnB.js +0 -1
  209. package/dist/gateway/static/root/assets/notes-page-BOeS2v6x.js +0 -8
  210. package/dist/gateway/static/root/assets/personal-page-BujiHops.js +0 -1
  211. package/dist/gateway/static/root/assets/plugin-details-dialog-XOzQrJQN.js +0 -1
  212. package/dist/gateway/static/root/assets/plugin-presentation-CPEwVLd4.js +0 -1
  213. package/dist/gateway/static/root/assets/product-preview-content-CAo0XpP-.js +0 -1
  214. package/dist/gateway/static/root/assets/project-detail-page-CxB_kF0F.js +0 -1
  215. package/dist/gateway/static/root/assets/projects-page-Dvu_3c2g.js +0 -1
  216. package/dist/gateway/static/root/assets/remote-access-hub-CbzBV_BL.js +0 -1
  217. package/dist/gateway/static/root/assets/session-manager-DMDBMYfh.js +0 -16
  218. package/dist/gateway/static/root/assets/sessions-page-CvfoPeM6.js +0 -1
  219. package/dist/gateway/static/root/assets/settings-advanced-gate-BOkrHL8q.js +0 -1
  220. package/dist/gateway/static/root/assets/settings-page-C54bw5J9.js +0 -1
  221. package/dist/gateway/static/root/assets/shares-settings-BOa9NAUc.js +0 -1
  222. package/dist/gateway/static/root/assets/skill-reload-api-DEN6tOwG.js +0 -1
  223. package/dist/gateway/static/root/assets/skills-page-CeNVBQG9.js +0 -2
  224. package/dist/gateway/static/root/assets/task-detail-page-DzK53B5p.js +0 -2
  225. package/dist/gateway/static/root/assets/tracing-settings-page-BUUnZfZW.js +0 -1
  226. package/dist/gateway/static/root/assets/user-model-page-DxcH74eP.js +0 -2
  227. package/dist/gateway/static/root/assets/workflows-page-Bo5b5t_9.js +0 -6
  228. package/dist/src/agent/tools/personal-preference-tool.d.ts +0 -10
  229. package/dist/src/agent/tools/personal-preference-tool.js +0 -55
  230. package/dist/src/connectors/china-catalog.d.ts +0 -2
  231. package/dist/src/connectors/china-catalog.js +0 -873
  232. package/dist/src/connectors/cli/adapters/lark.d.ts +0 -2
  233. package/dist/src/connectors/cli/adapters/lark.js +0 -143
  234. package/dist/src/connectors/cli/adapters/larkShortcuts.d.ts +0 -3
  235. package/dist/src/connectors/cli/adapters/larkShortcuts.js +0 -64
  236. package/dist/src/connectors/cli/adapters/wecom.d.ts +0 -2
  237. package/dist/src/connectors/cli/adapters/wecom.js +0 -97
  238. package/dist/src/connectors/cli/adapters/wps365/bundle.js +0 -575
  239. package/dist/src/connectors/cli/adapters/wps365.d.ts +0 -2
  240. package/dist/src/connectors/cli/adapters/wps365.js +0 -115
  241. package/dist/src/connectors/cli/distributions.d.ts +0 -4
  242. package/dist/src/connectors/cli/distributions.js +0 -69
@@ -12,11 +12,11 @@ import { connectorArgumentsHash, connectorArgumentsPreview } from "../../connect
12
12
  import { connectorPrincipalForSession } from "../../connectors/principal.js";
13
13
  import { selectConnectorAccount } from "../../connectors/account-selection.js";
14
14
  import { cliContextPath } from "../../connectors/cli/process.js";
15
- import { validateActionInput } from "../../connectors/cli/protocol.js";
16
15
  import { getCliAdapter } from "../../connectors/cli/adapterRegistry.js";
17
16
  import { evaluateConnectorExecutionPolicy } from "../../connectors/policy.js";
18
17
  import { listConnectorInstances } from "../../connectors/instances.js";
19
18
  import { cliOwnerId, recoverCliExecutions } from "../../connectors/cli/store.js";
19
+ import { validateActionInput } from "../../connectors/cli/protocol.js";
20
20
  import { describeCliAction, executeCliAction } from "../../connectors/cli/runtime.js";
21
21
  import { externalToolRef, parseExternalToolRef } from "./refs.js";
22
22
  import { join } from "node:path";
@@ -0,0 +1,4 @@
1
+ /** Product guidance selected by the paired compact configuration evaluation. */
2
+ export declare const conversationalConfigurationGuide = "# Conversational xopc use\nAct on clear authorized requests with registered tools; ordinary answers need no product actions.\n\"You\" means the host's current Agent id, not main/default. Other Agents or global defaults\nrequire an explicit request and permission. Never bypass a denial or edit product storage.\nRead the target/revision. For profile-only changes use agent patch_profile\n{id,expectedRevision,patch,idempotencyKey?}; omitted fields are preserved. Inspect product ok\nand saved fields. On conflict re-read, preserve concurrent fields and retry once with a new\nrevision/key; after an uncertain write keep the original key and inspect first.\nWhen workflow or parameters are unclear, read tool_manual({tool:\"xopc_use\",topic:\"agent\"}),\nor topic:\"settings\", \"automation\", \"connections\" as relevant; no need to load a known recipe.\nsettings open is navigation only; voice uses section:\"capabilities/voice\". Saved is not tested.\nMissing connection/device tools mean an honest blocker, never invented links or completed tests.\n";
3
+ /** Tool registration already reflects the host's allowlist and deny policy. */
4
+ export declare function getConversationalConfigurationGuide(toolNames: readonly string[]): string;
@@ -0,0 +1,25 @@
1
+ //#region src/agent/prompt/conversational-configuration-guide.ts
2
+ /** Product guidance selected by the paired compact configuration evaluation. */
3
+ const conversationalConfigurationGuide = `# Conversational xopc use
4
+ Act on clear authorized requests with registered tools; ordinary answers need no product actions.
5
+ "You" means the host's current Agent id, not main/default. Other Agents or global defaults
6
+ require an explicit request and permission. Never bypass a denial or edit product storage.
7
+ Read the target/revision. For profile-only changes use agent patch_profile
8
+ {id,expectedRevision,patch,idempotencyKey?}; omitted fields are preserved. Inspect product ok
9
+ and saved fields. On conflict re-read, preserve concurrent fields and retry once with a new
10
+ revision/key; after an uncertain write keep the original key and inspect first.
11
+ When workflow or parameters are unclear, read tool_manual({tool:"xopc_use",topic:"agent"}),
12
+ or topic:"settings", "automation", "connections" as relevant; no need to load a known recipe.
13
+ settings open is navigation only; voice uses section:"capabilities/voice". Saved is not tested.
14
+ Missing connection/device tools mean an honest blocker, never invented links or completed tests.
15
+ `;
16
+ const manualRouting = `When workflow or parameters are unclear, read tool_manual({tool:"xopc_use",topic:"agent"}),
17
+ or topic:"settings", "automation", "connections" as relevant; no need to load a known recipe.
18
+ `;
19
+ /** Tool registration already reflects the host's allowlist and deny policy. */
20
+ function getConversationalConfigurationGuide(toolNames) {
21
+ if (!toolNames.includes("xopc_use")) return "";
22
+ return toolNames.includes("tool_manual") ? conversationalConfigurationGuide : conversationalConfigurationGuide.replace(manualRouting, "No tool_manual is registered. Use documented registered parameters; report a blocker if required details are unavailable.\n");
23
+ }
24
+ //#endregion
25
+ export { conversationalConfigurationGuide, getConversationalConfigurationGuide };
@@ -14,6 +14,7 @@ import { buildSystemPrompt } from "./system-prompt.js";
14
14
  import { resolveResponseLanguageForSession } from "./response-language.js";
15
15
  import { buildTtsSystemPromptHint } from "../../voice/tts/directives.js";
16
16
  import { mergeTtsConfigFromAppConfig } from "../../voice/tts/merge-config.js";
17
+ import { getConversationalConfigurationGuide } from "./conversational-configuration-guide.js";
17
18
  //#region src/agent/prompt/service-prompt-builder.ts
18
19
  init_sqlite();
19
20
  init_interaction_state();
@@ -53,7 +54,11 @@ var SystemPromptBuilder = class {
53
54
  userTimezone,
54
55
  externalMemoryInstructions: options.externalMemoryInstructions,
55
56
  ttsSystemHint,
56
- extraSystemPrompt: [options.extraSystemPrompt, interactionPrompt].filter(Boolean).join("\n\n"),
57
+ extraSystemPrompt: [
58
+ options.extraSystemPrompt,
59
+ getConversationalConfigurationGuide(reg),
60
+ interactionPrompt
61
+ ].filter(Boolean).join("\n\n"),
57
62
  activeProjectContext: options.activeProjectContext,
58
63
  modelRef: options.modelRef,
59
64
  agentId: options.agentId,
@@ -1,6 +1,6 @@
1
1
  import { buildActionTrustPrompt, init_trust_policy } from "../../user-context/trust-policy.js";
2
2
  import { PROMPT_CACHE_BOUNDARY, splitPromptCacheBoundary } from "./cache-boundary.js";
3
- import { projectPersonalInstructions } from "../../personal-agent/prompts.js";
3
+ import { personalInstructions, projectPersonalInstructions } from "../../personal-agent/prompts.js";
4
4
  import { buildAestheticSection, buildExecutionBiasSection, buildHumanCollaborationSection, buildPersonalCoordinationSection, buildProblemSolvingSection, buildSafetySection, buildToolCallStyleSection, buildWorkContinuitySection } from "./sections/behavior.js";
5
5
  import { buildExternalMemorySection, buildMemorySection, buildSkillsSection } from "./sections/memory-skills.js";
6
6
  import { buildMessagingSection, buildOutputDirectivesSection, buildSilentRepliesSection, buildTimeSection } from "./sections/messaging-runtime.js";
@@ -20,7 +20,7 @@ function joinSections(sections) {
20
20
  */
21
21
  function buildSystemPrompt(workspaceDir, options = {}) {
22
22
  const { contextFiles = [], promptMode = "full", promptRole = "executor", toolNames = [], toolSummaries, memoryCitationsMode = "on", includeMemorySection, userTimezone, runtime, agentId, channels = [], externalMemoryInstructions, ttsSystemHint, extraSystemPrompt, activeProjectContext, silentReplyPromptMode = "generic", promptContribution, includeProblemSolving = true, includeToneSection = true, actionTrustLevel, responseLanguage = "auto", customInstructions: storedCustomInstructions, agentProfile } = options;
23
- const customInstructions = promptRole === "personal" && storedCustomInstructions ? projectPersonalInstructions(storedCustomInstructions, toolNames) : storedCustomInstructions;
23
+ const customInstructions = promptRole === "personal" ? projectPersonalInstructions(personalInstructions(), toolNames) : storedCustomInstructions;
24
24
  if (promptMode === "none") return joinSections([
25
25
  "You are a personal AI assistant running inside xopc.",
26
26
  customInstructions?.trim() ? `<custom_instructions>\n${customInstructions.trim()}\n</custom_instructions>` : void 0,
@@ -0,0 +1,8 @@
1
+ /** Focused product workflows; loaded on demand instead of expanding every turn. */
2
+ export declare const xopcConfigurationTopics: {
3
+ readonly agent: "# xopc Agent configuration\nThe host's current Agent id is authoritative. \"You / this assistant\" means that Agent,\nnot main or the default Agent. Read agent get {id} (or list for discovery) for revision\nand effective inherited configuration. For identity changes prefer agent patch_profile\n{id,expectedRevision,patch:{name?,description?,style?,language?,...},idempotencyKey?}:\nomitted fields are preserved atomically. Existing agent update {id,expectedRevision,patch}\nremains a full replacement for patch.profile, so include every field to retain when using it.\nSet a chat model with update patch.models.chat={primary:\"provider/model\",fallbacks:[]}.\nChange only the requested Agent. Global defaults and other Agents are separate explicit\nrequests and still require permission. For creation list first, then create\n{id,profile:{name,language?,style?}}; do not invent a Project or custom workspace.\nset_default {id,expectedRevision} uses the catalog revision from list, not an Agent revision.\nAfter a revision conflict re-read the target, preserve concurrent fields and retry the\nrequested change once with the new revision and a new intent key. After an uncertain write,\ninspect first and retain the original idempotency key. A permission denial is not a conflict:\ndo not switch identity, target or tools to bypass it. Inspect returned product ok and saved\nfields before reporting success. A saved model reference does not prove it can be called.";
4
+ readonly settings: "# xopc settings and capability checks\nsettings open is navigation only; it does not read, apply or verify configuration.\nVoice: {section:\"capabilities/voice\",title:\"语音设置\"}; models: section:\"capabilities/models\";\nbrowser: section:\"agent-browser\". Unknown sections are rejected. There is no generic\nconfig/set, capability inspect or voice mutation in xopc_use. Never edit storage directly.\nFor a capability report read the current Agent's configuration, and use actual dedicated\nstatus/test tools if available. Model names or credentials alone are not proof of readiness.\nReport unknown when no verification tool exists. Saved, runtime-ready and tested differ.\nVoice settings are shared. Microphone permission, recording and playback need actual device\ninteraction. Return the exact product link and state the remaining action; never claim the\npage has opened or the device test passed from a navigation receipt. Do not invent UI buttons\nor promise audio verification unless the active tools can perform it.";
5
+ readonly automation: "# xopc automations\nUse automation list/get before changing an existing schedule or creating a potentially\nduplicate one. pause/resume takes {automationId,expectedRevision,idempotencyKey}; revision\nis the original updatedAtMs. Pause affects future scheduling, not proof a running job stopped.\nCreate with {name,enabled,trigger:{kind:\"schedule\",schedule:{kind:\"cron\",expr,tz}},\naction:{kind:\"agent\",instruction},delivery:{notificationPolicy:\"attention\",destinations:[]}}.\nUse the user's timezone. For 09:00 Asia/Shanghai use expr:\"0 9 * * *\",tz:\"Asia/Shanghai\".\nDraft / don't enable / don't run means enabled:false and no run call. simulate is not a real\nexecution. A one-off answer does not authorize creating a Task, Project, Agent or Automation.\nCheck returned ok and saved state; handle revision conflicts by re-reading, preserving changes\nand retrying once with the new revision. Keep original keys after uncertain writes.";
6
+ readonly connections: "# xopc external connections\nExternal services use their dedicated discovery, description, connection and execution tools,\nnot invented xopc_use connector commands or settings sections. When Gmail connection/read\ntools are absent, explain that specific blocker. Do not create or enable an email schedule\nbefore verifying the required account and a real read. Never invent a connection URL,\nconnected-apps/connections settings section, messages, or successful OAuth/reads.\nThe user saying \"connected\" is not evidence of working tools: rediscover and verify the\naccount and read permission before proceeding. Do not promise future execution while those\ntools are absent. Do not request passwords or API keys in ordinary chat.";
7
+ };
8
+ export type XopcConfigurationTopic = keyof typeof xopcConfigurationTopics;
@@ -0,0 +1,55 @@
1
+ //#region src/agent/tool-manuals/xopc-configuration.ts
2
+ /** Focused product workflows; loaded on demand instead of expanding every turn. */
3
+ const xopcConfigurationTopics = {
4
+ agent: `# xopc Agent configuration
5
+ The host's current Agent id is authoritative. "You / this assistant" means that Agent,
6
+ not main or the default Agent. Read agent get {id} (or list for discovery) for revision
7
+ and effective inherited configuration. For identity changes prefer agent patch_profile
8
+ {id,expectedRevision,patch:{name?,description?,style?,language?,...},idempotencyKey?}:
9
+ omitted fields are preserved atomically. Existing agent update {id,expectedRevision,patch}
10
+ remains a full replacement for patch.profile, so include every field to retain when using it.
11
+ Set a chat model with update patch.models.chat={primary:"provider/model",fallbacks:[]}.
12
+ Change only the requested Agent. Global defaults and other Agents are separate explicit
13
+ requests and still require permission. For creation list first, then create
14
+ {id,profile:{name,language?,style?}}; do not invent a Project or custom workspace.
15
+ set_default {id,expectedRevision} uses the catalog revision from list, not an Agent revision.
16
+ After a revision conflict re-read the target, preserve concurrent fields and retry the
17
+ requested change once with the new revision and a new intent key. After an uncertain write,
18
+ inspect first and retain the original idempotency key. A permission denial is not a conflict:
19
+ do not switch identity, target or tools to bypass it. Inspect returned product ok and saved
20
+ fields before reporting success. A saved model reference does not prove it can be called.`,
21
+ settings: `# xopc settings and capability checks
22
+ settings open is navigation only; it does not read, apply or verify configuration.
23
+ Voice: {section:"capabilities/voice",title:"语音设置"}; models: section:"capabilities/models";
24
+ browser: section:"agent-browser". Unknown sections are rejected. There is no generic
25
+ config/set, capability inspect or voice mutation in xopc_use. Never edit storage directly.
26
+ For a capability report read the current Agent's configuration, and use actual dedicated
27
+ status/test tools if available. Model names or credentials alone are not proof of readiness.
28
+ Report unknown when no verification tool exists. Saved, runtime-ready and tested differ.
29
+ Voice settings are shared. Microphone permission, recording and playback need actual device
30
+ interaction. Return the exact product link and state the remaining action; never claim the
31
+ page has opened or the device test passed from a navigation receipt. Do not invent UI buttons
32
+ or promise audio verification unless the active tools can perform it.`,
33
+ automation: `# xopc automations
34
+ Use automation list/get before changing an existing schedule or creating a potentially
35
+ duplicate one. pause/resume takes {automationId,expectedRevision,idempotencyKey}; revision
36
+ is the original updatedAtMs. Pause affects future scheduling, not proof a running job stopped.
37
+ Create with {name,enabled,trigger:{kind:"schedule",schedule:{kind:"cron",expr,tz}},
38
+ action:{kind:"agent",instruction},delivery:{notificationPolicy:"attention",destinations:[]}}.
39
+ Use the user's timezone. For 09:00 Asia/Shanghai use expr:"0 9 * * *",tz:"Asia/Shanghai".
40
+ Draft / don't enable / don't run means enabled:false and no run call. simulate is not a real
41
+ execution. A one-off answer does not authorize creating a Task, Project, Agent or Automation.
42
+ Check returned ok and saved state; handle revision conflicts by re-reading, preserving changes
43
+ and retrying once with the new revision. Keep original keys after uncertain writes.`,
44
+ connections: `# xopc external connections
45
+ External services use their dedicated discovery, description, connection and execution tools,
46
+ not invented xopc_use connector commands or settings sections. When Gmail connection/read
47
+ tools are absent, explain that specific blocker. Do not create or enable an email schedule
48
+ before verifying the required account and a real read. Never invent a connection URL,
49
+ connected-apps/connections settings section, messages, or successful OAuth/reads.
50
+ The user saying "connected" is not evidence of working tools: rediscover and verify the
51
+ account and read permission before proceeding. Do not promise future execution while those
52
+ tools are absent. Do not request passwords or API keys in ordinary chat.`
53
+ };
54
+ //#endregion
55
+ export { xopcConfigurationTopics };
@@ -1 +1 @@
1
- export declare const xopcUseManual = "# XOPC Use Tool Manual\n\n## Purpose\n\n`xopc_use` operates first-class XOPC product objects without editing SQLite or product files directly.\nLoad this manual before a non-trivial mutation.\n\n```json\n{\n \"mode\": \"agent | project | automation | note | task | task_run | chat_preview | local_app | settings\",\n \"command\": \"...\",\n \"args\": {},\n \"dryRun\": false\n}\n```\n\nSend one object command per call. Inspect the returned JSON `ok` field; a tool call can\ncomplete successfully while the product command returns `ok: false`.\n\n## Object routing\n\n| Object | Tool |\n| --- | --- |\n| Agent definition and default Agent | `xopc_use` mode `agent` |\n| Project, milestone, project update | `xopc_use` mode `project` |\n| Automation | `xopc_use` mode `automation` |\n| Task intent and lifecycle | `xopc_use` mode `task` |\n| Task execution attempt, receipt, events and waits | `xopc_use` mode `task_run` |\n| Note | `xopc_use` mode `note` |\n| Lightweight UI preview | `xopc_use` mode `chat_preview` |\n| Local app | `xopc_use` mode `local_app` |\n| Settings jump target | `xopc_use` mode `settings` |\n| Workflow run | dedicated `workflow` tool; pass `taskId` to link it to a Task |\n| Session, memory, skill, connected app or workspace file | its dedicated tool |\n\nDo not emulate Workflow APIs through `xopc_use`. A Task is durable intent;\na TaskRun is one execution attempt; a WorkflowRun is a procedure execution and may belong\nto a TaskRun. Never treat these three objects as interchangeable.\n\n## Agents\n\nCommands: `list`, `get`, `create`, `update`, `set_default`, `disable`,\n`delete`, and `purge`.\n\nAn Agent profile stores `name` and optional `description`, `creature`, `style`, `language`,\n`emoji`, and `avatar` identity fields. Use `instructions` for short execution rules.\nPut personality in SOUL.md and ongoing work guidance in AGENTS.md.\n\n```json\n{\n \"mode\": \"agent\",\n \"command\": \"create\",\n \"args\": {\n \"id\": \"xiaomei\",\n \"profile\": {\n \"name\": \"\u5C0F\u7F8E\",\n \"description\": \"\u5E2E\u52A9\u6574\u7406\u65E5\u5E38\u4E8B\u9879\",\n \"language\": \"zh-CN\",\n \"style\": \"\u6E29\u67D4\u3001\u4EB2\u5207\",\n \"instructions\": \"\u7ED9\u51FA\u64CD\u4F5C\u5EFA\u8BAE\u524D\u5148\u6838\u5BF9\u5173\u952E\u4E8B\u5B9E\u3002\"\n },\n \"idempotencyKey\": \"create-agent-xiaomei\"\n }\n}\n```\n\nUse `list` before creating an Agent so an existing id is updated rather than duplicated.\nMutations other than `create` require the current `expectedRevision`; `set_default` uses\nthe catalog revision returned by `list`. `delete` preserves on-disk data, while `purge`\nalso removes it. Use `dryRun: true` to validate the exact same input contract without writing.\n\n## Reliable protocol\n\n1. Use `list` then `get` when an id is unknown.\n2. Read the current `version` before a Task mutation.\n3. Use `dryRun: true` for broad Project changes or uncertain mutations.\n4. Mutate once with the exact id and current concurrency token.\n5. Verify the returned object and preserve any \u201COpen in xopc\u201D delivery link.\n6. On a conflict, read again and reconsider the operation; do not blindly retry.\n\nTimestamps are Unix epoch milliseconds. Array fields are arrays of strings. Omission\npreserves a patchable field; an empty array intentionally clears it. Prefer explicit\n`projectId`, `taskId`, `runId`, `noteId`, and `localAppId` fields over `id`.\n\n## Projects\n\nCommands: `list`, `get`, `create`, `update`, `resolve_workspace`,\n`list_milestones`, `create_milestone`, `update_milestone`, `list_updates`,\nand `create_update`.\n\nProject statuses: `planned`, `active`, `paused`, `completed`, `cancelled`,\n`archived`. Health values: `unknown`, `on_track`, `at_risk`, `off_track`.\n\nA Project defines bounded shared context for related work. Its durable planning fields are `outcome`,\n`successCriteria`, `scope`, `nonGoals`, `ownerId`, `targetAt`, and `health`.\nUse `brief` for a concise description and `instructions` for durable operating guidance.\n\n### Create\n\n```json\n{\n \"mode\": \"project\",\n \"command\": \"create\",\n \"args\": {\n \"name\": \"AI Product Research\",\n \"outcome\": \"Choose a validated product direction\",\n \"successCriteria\": [\"Ten customer interviews\", \"Decision recorded\"],\n \"scope\": { \"market\": \"developer tools\" },\n \"nonGoals\": [\"Build the production product\"],\n \"health\": \"on_track\",\n \"targetAt\": 1760000000000,\n \"workspaceRoot\": \"/path/to/repo\"\n }\n}\n```\n\n### Update\n\n```json\n{\n \"mode\": \"project\",\n \"command\": \"update\",\n \"args\": {\n \"projectId\": \"project_id\",\n \"status\": \"active\",\n \"health\": \"at_risk\",\n \"successCriteria\": [\"Ten interviews\", \"Evidence-backed decision\"]\n }\n}\n```\n\n### Resolve a workspace\n\nUse `autoCreate: false` for lookup. Set it to true only when creating a Project is authorized.\n\n```json\n{ \"mode\": \"project\", \"command\": \"resolve_workspace\", \"args\": { \"workspacePath\": \"/path/to/repo\", \"autoCreate\": false } }\n```\n\n### Milestones\n\nMilestone statuses: `planned`, `active`, `completed`, `cancelled`.\n\n```json\n{\n \"mode\": \"project\",\n \"command\": \"create_milestone\",\n \"args\": {\n \"projectId\": \"project_id\",\n \"title\": \"Finish discovery\",\n \"status\": \"active\",\n \"targetAt\": 1760000000000,\n \"sortOrder\": 10\n }\n}\n```\n\nUse `list_milestones` with `projectId`. Use `update_milestone` with both\n`projectId` and `milestoneId`. Milestone deletion is intentionally not exposed.\n\n### Immutable project updates\n\nProject updates are append-only progress snapshots. They also update Project health.\n\n```json\n{\n \"mode\": \"project\",\n \"command\": \"create_update\",\n \"args\": {\n \"projectId\": \"project_id\",\n \"health\": \"on_track\",\n \"summary\": \"Discovery is complete\",\n \"progress\": [\"Interviewed ten users\"],\n \"risks\": [\"Pricing remains unvalidated\"],\n \"nextSteps\": [\"Run pricing tests\"]\n }\n}\n```\n\nUse `list_updates` with `projectId` and optional `limit`. Updates cannot be edited.\n\n## Automations\n\nCommands: `list`, `get`, `create`, `update`, `delete`, `run`, `pause`,\n`resume`, and `history`.\n\nAutomation `create` automatically uses the current session Project when `projectId` is\nomitted. An explicit `projectId` takes precedence and is validated before mutation. Use an\nexplicit id when creating for a Project other than the current session Project.\n\n### Create in the current Project\n\n`trigger` and `action` use the same shapes as the Automation product API.\n\n```json\n{\n \"mode\": \"automation\",\n \"command\": \"create\",\n \"args\": {\n \"name\": \"Daily project review\",\n \"trigger\": { \"kind\": \"schedule\", \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 9 * * 1-5\", \"tz\": \"Asia/Shanghai\" } },\n \"action\": { \"kind\": \"agent\", \"instruction\": \"Review the current project and summarize risks.\" }\n }\n}\n```\n\nTo override the inherited Project, add `\"projectId\": \"project_id\"` to `args`.\nThe create payload may also be nested under `args.automation`; top-level `args.projectId`\nhas precedence.\n\n### List and history\n\n`list` and unqualified `history` inherit the current session Project. Pass an explicit\n`projectId` to query another Project. Pass `automationId` to `history` for one Automation.\n\n### Update and operate\n\nUse `automationId` for `get`, `update`, `delete`, `run`, `pause`, and `resume`.\nFor `update`, patch fields may be direct args or nested under `args.patch`. Supplying a new\n`projectId` reassigns the Automation after validating the target Project.\n\n## Tasks\n\nTask locale follows the conversation response language, then the user request and profile.\nKeep every user-facing contract field (criteria, expected outputs, constraints, assumptions and risks)\nin that language, even when attached source material is English. Preserve paths, URLs and proper nouns.\nAn explicit locale must reflect the user\u2019s language choice.\n\nCommands: `list`, `get`, `create`, `delegated_tasks`, `collaboration`,\n`collaboration_post`, `update_dependencies`, `add_context`, `remove_context`,\n`command`, and `delete`.\n\nTask phases are `backlog`, `ready`, `active`, `review`, and `closed`.\nOperational state is projected separately as `idle`, `queued`, `running`, `waiting`,\n`verifying`, `succeeded`, `failed`, or `cancelled`. Never send either value as a\nfree-form status update.\n\n`task.get` returns the Task, its projected `model`, dependencies, dependents, context,\nauthority grants, TaskRuns, receipts, and waits.\nThe projected model is the correct source for current operational state and attention items.\n\n`delete` permanently removes the Task and its contracts, waits, context links, TaskRuns,\nreceipts, and Task-owned execution records. It does not delete linked Sessions, workspace files,\nor external artifacts. Cancel an active TaskRun before deletion, and use `dryRun: true` when\nthe user's intent is ambiguous.\n\n```json\n{ \"mode\": \"task\", \"command\": \"delete\", \"args\": { \"taskId\": \"task_id\" }, \"dryRun\": true }\n```\n\n### Capture or start\n\n`createMode` defaults to `capture`, which creates a backlog Task without executing it.\nUse `start` only when immediate execution is intended.\n\nFor an immediate delegated task, use the minimal call below. The objective can include the\nworker instructions and constraints; optional lists are unnecessary for a simple delegation.\n\n```json\n{ \"mode\": \"task\", \"command\": \"create\", \"args\": { \"objective\": \"Calculate the requested result and report progress\", \"createMode\": \"start\" } }\n```\n\n```json\n{\n \"mode\": \"task\",\n \"command\": \"create\",\n \"args\": {\n \"objective\": \"Complete the customer research report\",\n \"projectId\": \"project_id\",\n \"createMode\": \"capture\",\n \"priority\": \"high\",\n \"expectedOutputs\": [\"Research report\"],\n \"acceptanceCriteria\": [\"Sources are cited\"],\n \"constraints\": [\"Do not contact customers without approval\"],\n \"dependsOnTaskIds\": []\n }\n}\n```\n\n### Main Agent and worker collaboration\n\nThe user-facing Agent can call `delegated_tasks` to list Tasks created from this conversation,\nthen `collaboration` with `{ \"taskId\": \"...\", \"afterSequence\": 0 }` to read the ordered board.\nUse the Task and TaskRun receipt as the final source of execution status.\n\nUse `collaboration_post` with `taskId`, `kind`, `body`, and a stable `idempotencyKey`.\nThe main Agent may write `instruction`, `question`, or `answer`; answers include\n`causationId` of the worker's question. The worker may write `progress`, `question`,\nor `ack`; acknowledgements include `causationId` of the instruction. A worker question\npauses the active TaskRun. After posting it, stop the execution turn and wait for an answer.\nAn instruction is first recorded, then delivered to the worker conversation, and is only\nconfirmed when the worker acknowledges it. Ordinary progress does not interrupt the user.\n\n```json\n{ \"mode\": \"task\", \"command\": \"collaboration_post\", \"args\": { \"taskId\": \"task_id\", \"kind\": \"progress\", \"body\": \"Completed source review\", \"idempotencyKey\": \"stable-key\" } }\n```\n\n### Dependencies\n\n```json\n{\n \"mode\": \"task\",\n \"command\": \"update_dependencies\",\n \"args\": {\n \"taskId\": \"task_id\",\n \"expectedVersion\": 3,\n \"dependsOnTaskIds\": [\"dependency_task_id\"]\n }\n}\n```\n\n### Context links\n\nUse `add_context` to link a document, file, URL, session, memory, Task, artifact, or source\nas `input`, `reference`, `constraint`, `deliverable`, or `evidence` context.\n\n```json\n{\n \"mode\": \"task\",\n \"command\": \"add_context\",\n \"args\": {\n \"taskId\": \"task_id\",\n \"targetKind\": \"file\",\n \"targetId\": \"/path/to/spec.md\",\n \"role\": \"input\",\n \"title\": \"Product specification\",\n \"pinned\": true,\n \"retrievalPolicy\": {},\n \"metadata\": {}\n }\n}\n```\n\nUse `remove_context` with `taskId` and the exact `edgeId` returned by `task.get`.\nDo not add authority grants through this tool; an Agent must not authorize itself.\n\n### Typed lifecycle commands\n\nEvery command requires `taskId`, the Task's current `expectedVersion`, a `type`, and\ntype-specific fields inside `commandArgs`.\n\nSupported command types:\n\n- `mark_ready`\n- `start`: `{ \"executor\": { \"kind\": \"agent\", \"agentId\": \"main\" } }`\n- `request_review`\n- `close`: `{ \"resolution\": \"done | cancelled | duplicate | wont_do\" }`\n- `reopen`: `{ \"phase\": \"ready | active\" }`\n- `add_wait`: `{ \"wait\": { \"kind\": \"dependency | approval | input | schedule | external | paused\", \"reason\": \"...\", \"condition\": {} } }`\n- `resolve_wait`: `{ \"waitId\": \"wait_id\", \"resolution\": {} }`\n- `delegate`: `{ \"agentId\": \"agent_id\" }`\n- `revise_contract`: `{ \"contract\": { ...complete contract... } }`\n\n```json\n{\n \"mode\": \"task\",\n \"command\": \"command\",\n \"args\": {\n \"taskId\": \"task_id\",\n \"expectedVersion\": 3,\n \"type\": \"start\",\n \"commandArgs\": {\n \"executor\": { \"kind\": \"agent\", \"agentId\": \"main\" }\n }\n }\n}\n```\n\nContract revision is replacement, not a patch. Read the Task and preserve all contract fields\nthe user did not ask to change. Resolve a wait through `resolve_wait`; do not directly mutate\na TaskRun or manufacture a phase transition.\n\n## TaskRuns\n\nTaskRun inspection is read-only except for explicit cancellation. Other execution state is\ncontrolled by Task commands and the runtime coordinator.\n\n### List attempts for a Task\n\n```json\n{ \"mode\": \"task_run\", \"command\": \"list\", \"args\": { \"taskId\": \"task_id\", \"limit\": 20 } }\n```\n\nThe result contains run attempts, finalized receipts, and active waits.\n\n### Inspect one attempt\n\n```json\n{ \"mode\": \"task_run\", \"command\": \"get\", \"args\": { \"runId\": \"run_id\" } }\n```\n\nThe result contains the TaskRun, its receipt when terminal, ordered events, and active Task waits.\n\n### Cancel an attempt\n\nRead the run first, then pass its current version. Cancellation creates a terminal receipt.\n\n```json\n{\n \"mode\": \"task_run\",\n \"command\": \"cancel\",\n \"args\": { \"runId\": \"run_id\", \"expectedVersion\": 2, \"reason\": \"User cancelled execution\" }\n}\n```\n\nDo not guess commands such as retry, force-complete, heartbeat, or transition; they are not Agent APIs.\n\n## Notes\n\nCommands: `list`, `get`, `create`, `append`, `preview_edit`, `update`, and `delete`.\nUse Notes for durable prose and reference material, not as a Task substitute. Prefer `append`\nwhen preserving user content. Use `preview_edit` before a canonical rewrite.\n\n```json\n{ \"mode\": \"note\", \"command\": \"create\", \"args\": { \"title\": \"Decision\", \"markdown\": \"...\", \"projectId\": \"project_id\" } }\n```\n\n```json\n{ \"mode\": \"note\", \"command\": \"append\", \"args\": { \"noteId\": \"note_id\", \"heading\": \"AI synthesis\", \"content\": \"...\" } }\n```\n\nUse `update` with `status: \"trashed\"` for a recoverable removal. `delete` permanently\nremoves the Note and its stored snapshots and media; use `dryRun: true` first when the\nuser's intent is ambiguous.\n\n```json\n{ \"mode\": \"note\", \"command\": \"delete\", \"args\": { \"noteId\": \"note_id\" }, \"dryRun\": true }\n```\n\n## Chat previews, local apps, and settings\n\nUse `chat_preview` by default when the user asks to design, mock up, or quickly show a UI in\nthe current conversation. It creates no Project and no Local App. Commands are `create`,\n`get`, and `revise`. Source consists of `markup`, `styles`, and optional `script`;\ndo not include a full HTML document or remote dependencies. Revision requires the exact\n`baseRevision` returned by the prior call.\n\nUse `local_app` only when the user explicitly asks for a durable, installable app or chooses\n\u201CSave as app\u201D on a chat preview. Do not create a Local App merely to render a UI draft.\n\nLocal app commands are `list`, `get`, `create`, and `validate`. Installation,\nactivation, rollback, and uninstall remain product runtime operations.\n\nSettings supports only `open` and returns an exact product jump target without changing config.\n\n## Error recovery\n\n| Result | Recovery |\n| --- | --- |\n| service unavailable | Stop retrying and report the unavailable capability. |\n| not found | Re-list in the intended scope; do not invent another id. |\n| conflict | Read the current object and reassess using its latest version. |\n| waiting | Inspect the Task projection and TaskRun waits; resolve only the real blocker. |\n| invalid command or state | Read the object and use only a documented transition. |\n| unsupported operation | Use the dedicated tool or product UI; never write storage directly. |\n\n## Deliberate boundaries\n\n- Project deletion and milestone deletion are not Agent APIs.\n- TaskRun mutation is internal to execution coordination except for optimistic cancellation.\n- Project updates are immutable.\n- Workflow and Automation operations remain in their dedicated tools.\n- Only the documented Task and TaskRun commands are valid; do not infer hidden aliases.\n";
1
+ export declare const xopcUseManual = "# XOPC Use Tool Manual\n\n## Purpose\n\n`xopc_use` operates first-class XOPC product objects without editing SQLite or product files directly.\nLoad this manual before a non-trivial mutation. For focused configuration workflows use\n`tool_manual({tool:\"xopc_use\",topic:\"agent|settings|automation|connections\"})`.\nFor identity-only changes prefer `agent patch_profile {id,expectedRevision,patch,idempotencyKey?}`,\nwhich preserves omitted profile fields. Existing update keeps replacement semantics for profile.\n\n```json\n{\n \"mode\": \"agent | project | automation | note | task | task_run | chat_preview | local_app | settings\",\n \"command\": \"...\",\n \"args\": {},\n \"dryRun\": false\n}\n```\n\nSend one object command per call. Inspect the returned JSON `ok` field; a tool call can\ncomplete successfully while the product command returns `ok: false`.\n\n## Object routing\n\n| Object | Tool |\n| --- | --- |\n| Agent definition and default Agent | `xopc_use` mode `agent` |\n| Project, milestone, project update | `xopc_use` mode `project` |\n| Automation | `xopc_use` mode `automation` |\n| Task intent and lifecycle | `xopc_use` mode `task` |\n| Task execution attempt, receipt, events and waits | `xopc_use` mode `task_run` |\n| Note | `xopc_use` mode `note` |\n| Lightweight UI preview | `xopc_use` mode `chat_preview` |\n| Local app | `xopc_use` mode `local_app` |\n| Settings jump target | `xopc_use` mode `settings` |\n| Workflow run | dedicated `workflow` tool; pass `taskId` to link it to a Task |\n| Session, memory, skill, connected app or workspace file | its dedicated tool |\n\nDo not emulate Workflow APIs through `xopc_use`. A Task is durable intent;\na TaskRun is one execution attempt; a WorkflowRun is a procedure execution and may belong\nto a TaskRun. Never treat these three objects as interchangeable.\n\n## Agents\n\nCommands: `list`, `get`, `create`, `update`, `set_default`, `disable`,\n`delete`, and `purge`.\n\nAn Agent profile stores `name` and optional `description`, `creature`, `style`, `language`,\n`emoji`, and `avatar` identity fields. Use `instructions` for short execution rules.\nPut personality in SOUL.md and ongoing work guidance in AGENTS.md.\n\n```json\n{\n \"mode\": \"agent\",\n \"command\": \"create\",\n \"args\": {\n \"id\": \"xiaomei\",\n \"profile\": {\n \"name\": \"\u5C0F\u7F8E\",\n \"description\": \"\u5E2E\u52A9\u6574\u7406\u65E5\u5E38\u4E8B\u9879\",\n \"language\": \"zh-CN\",\n \"style\": \"\u6E29\u67D4\u3001\u4EB2\u5207\",\n \"instructions\": \"\u7ED9\u51FA\u64CD\u4F5C\u5EFA\u8BAE\u524D\u5148\u6838\u5BF9\u5173\u952E\u4E8B\u5B9E\u3002\"\n },\n \"idempotencyKey\": \"create-agent-xiaomei\"\n }\n}\n```\n\nUse `list` before creating an Agent so an existing id is updated rather than duplicated.\nMutations other than `create` require the current `expectedRevision`; `set_default` uses\nthe catalog revision returned by `list`. `delete` preserves on-disk data, while `purge`\nalso removes it. Use `dryRun: true` to validate the exact same input contract without writing.\n\n## Reliable protocol\n\n1. Use `list` then `get` when an id is unknown.\n2. Read the current `version` before a Task mutation.\n3. Use `dryRun: true` for broad Project changes or uncertain mutations.\n4. Mutate once with the exact id and current concurrency token.\n5. Verify the returned object and preserve any \u201COpen in xopc\u201D delivery link.\n6. On a conflict, read again and reconsider the operation; do not blindly retry.\n\nTimestamps are Unix epoch milliseconds. Array fields are arrays of strings. Omission\npreserves a patchable field; an empty array intentionally clears it. Prefer explicit\n`projectId`, `taskId`, `runId`, `noteId`, and `localAppId` fields over `id`.\n\n## Projects\n\nCommands: `list`, `get`, `create`, `update`, `resolve_workspace`,\n`list_milestones`, `create_milestone`, `update_milestone`, `list_updates`,\nand `create_update`.\n\nProject statuses: `planned`, `active`, `paused`, `completed`, `cancelled`,\n`archived`. Health values: `unknown`, `on_track`, `at_risk`, `off_track`.\n\nA Project defines bounded shared context for related work. Its durable planning fields are `outcome`,\n`successCriteria`, `scope`, `nonGoals`, `ownerId`, `targetAt`, and `health`.\nUse `brief` for a concise description and `instructions` for durable operating guidance.\n\n### Create\n\n```json\n{\n \"mode\": \"project\",\n \"command\": \"create\",\n \"args\": {\n \"name\": \"AI Product Research\",\n \"outcome\": \"Choose a validated product direction\",\n \"successCriteria\": [\"Ten customer interviews\", \"Decision recorded\"],\n \"scope\": { \"market\": \"developer tools\" },\n \"nonGoals\": [\"Build the production product\"],\n \"health\": \"on_track\",\n \"targetAt\": 1760000000000,\n \"workspaceRoot\": \"/path/to/repo\"\n }\n}\n```\n\n### Update\n\n```json\n{\n \"mode\": \"project\",\n \"command\": \"update\",\n \"args\": {\n \"projectId\": \"project_id\",\n \"status\": \"active\",\n \"health\": \"at_risk\",\n \"successCriteria\": [\"Ten interviews\", \"Evidence-backed decision\"]\n }\n}\n```\n\n### Resolve a workspace\n\nUse `autoCreate: false` for lookup. Set it to true only when creating a Project is authorized.\n\n```json\n{ \"mode\": \"project\", \"command\": \"resolve_workspace\", \"args\": { \"workspacePath\": \"/path/to/repo\", \"autoCreate\": false } }\n```\n\n### Milestones\n\nMilestone statuses: `planned`, `active`, `completed`, `cancelled`.\n\n```json\n{\n \"mode\": \"project\",\n \"command\": \"create_milestone\",\n \"args\": {\n \"projectId\": \"project_id\",\n \"title\": \"Finish discovery\",\n \"status\": \"active\",\n \"targetAt\": 1760000000000,\n \"sortOrder\": 10\n }\n}\n```\n\nUse `list_milestones` with `projectId`. Use `update_milestone` with both\n`projectId` and `milestoneId`. Milestone deletion is intentionally not exposed.\n\n### Immutable project updates\n\nProject updates are append-only progress snapshots. They also update Project health.\n\n```json\n{\n \"mode\": \"project\",\n \"command\": \"create_update\",\n \"args\": {\n \"projectId\": \"project_id\",\n \"health\": \"on_track\",\n \"summary\": \"Discovery is complete\",\n \"progress\": [\"Interviewed ten users\"],\n \"risks\": [\"Pricing remains unvalidated\"],\n \"nextSteps\": [\"Run pricing tests\"]\n }\n}\n```\n\nUse `list_updates` with `projectId` and optional `limit`. Updates cannot be edited.\n\n## Automations\n\nCommands: `list`, `get`, `create`, `update`, `delete`, `run`, `pause`,\n`resume`, and `history`.\n\nAutomation `create` automatically uses the current session Project when `projectId` is\nomitted. An explicit `projectId` takes precedence and is validated before mutation. Use an\nexplicit id when creating for a Project other than the current session Project.\n\n### Create in the current Project\n\n`trigger` and `action` use the same shapes as the Automation product API.\n\n```json\n{\n \"mode\": \"automation\",\n \"command\": \"create\",\n \"args\": {\n \"name\": \"Daily project review\",\n \"trigger\": { \"kind\": \"schedule\", \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 9 * * 1-5\", \"tz\": \"Asia/Shanghai\" } },\n \"action\": { \"kind\": \"agent\", \"instruction\": \"Review the current project and summarize risks.\" }\n }\n}\n```\n\nTo override the inherited Project, add `\"projectId\": \"project_id\"` to `args`.\nThe create payload may also be nested under `args.automation`; top-level `args.projectId`\nhas precedence.\n\n### List and history\n\n`list` and unqualified `history` inherit the current session Project. Pass an explicit\n`projectId` to query another Project. Pass `automationId` to `history` for one Automation.\n\n### Update and operate\n\nUse `automationId` for `get`, `update`, `delete`, `run`, `pause`, and `resume`.\nFor `update`, patch fields may be direct args or nested under `args.patch`. Supplying a new\n`projectId` reassigns the Automation after validating the target Project.\n\n## Tasks\n\nTask locale follows the conversation response language, then the user request and profile.\nKeep every user-facing contract field (criteria, expected outputs, constraints, assumptions and risks)\nin that language, even when attached source material is English. Preserve paths, URLs and proper nouns.\nAn explicit locale must reflect the user\u2019s language choice.\n\nCommands: `list`, `get`, `create`, `delegated_tasks`, `collaboration`,\n`collaboration_post`, `update_dependencies`, `add_context`, `remove_context`,\n`command`, and `delete`.\n\nTask phases are `backlog`, `ready`, `active`, `review`, and `closed`.\nOperational state is projected separately as `idle`, `queued`, `running`, `waiting`,\n`verifying`, `succeeded`, `failed`, or `cancelled`. Never send either value as a\nfree-form status update.\n\n`task.get` returns the Task, its projected `model`, dependencies, dependents, context,\nauthority grants, TaskRuns, receipts, and waits.\nThe projected model is the correct source for current operational state and attention items.\n\n`delete` permanently removes the Task and its contracts, waits, context links, TaskRuns,\nreceipts, and Task-owned execution records. It does not delete linked Sessions, workspace files,\nor external artifacts. Cancel an active TaskRun before deletion, and use `dryRun: true` when\nthe user's intent is ambiguous.\n\n```json\n{ \"mode\": \"task\", \"command\": \"delete\", \"args\": { \"taskId\": \"task_id\" }, \"dryRun\": true }\n```\n\n### Capture or start\n\n`createMode` defaults to `capture`, which creates a backlog Task without executing it.\nUse `start` only when immediate execution is intended.\n\nFor an immediate delegated task, use the minimal call below. The objective can include the\nworker instructions and constraints; optional lists are unnecessary for a simple delegation.\n\n```json\n{ \"mode\": \"task\", \"command\": \"create\", \"args\": { \"objective\": \"Calculate the requested result and report progress\", \"createMode\": \"start\" } }\n```\n\n```json\n{\n \"mode\": \"task\",\n \"command\": \"create\",\n \"args\": {\n \"objective\": \"Complete the customer research report\",\n \"projectId\": \"project_id\",\n \"createMode\": \"capture\",\n \"priority\": \"high\",\n \"expectedOutputs\": [\"Research report\"],\n \"acceptanceCriteria\": [\"Sources are cited\"],\n \"constraints\": [\"Do not contact customers without approval\"],\n \"dependsOnTaskIds\": []\n }\n}\n```\n\n### Main Agent and worker collaboration\n\nThe user-facing Agent can call `delegated_tasks` to list Tasks created from this conversation,\nthen `collaboration` with `{ \"taskId\": \"...\", \"afterSequence\": 0 }` to read the ordered board.\nUse the Task and TaskRun receipt as the final source of execution status.\n\nUse `collaboration_post` with `taskId`, `kind`, `body`, and a stable `idempotencyKey`.\nThe main Agent may write `instruction`, `question`, or `answer`; answers include\n`causationId` of the worker's question. The worker may write `progress`, `question`,\nor `ack`; acknowledgements include `causationId` of the instruction. A worker question\npauses the active TaskRun. After posting it, stop the execution turn and wait for an answer.\nAn instruction is first recorded, then delivered to the worker conversation, and is only\nconfirmed when the worker acknowledges it. Ordinary progress does not interrupt the user.\n\n```json\n{ \"mode\": \"task\", \"command\": \"collaboration_post\", \"args\": { \"taskId\": \"task_id\", \"kind\": \"progress\", \"body\": \"Completed source review\", \"idempotencyKey\": \"stable-key\" } }\n```\n\n### Dependencies\n\n```json\n{\n \"mode\": \"task\",\n \"command\": \"update_dependencies\",\n \"args\": {\n \"taskId\": \"task_id\",\n \"expectedVersion\": 3,\n \"dependsOnTaskIds\": [\"dependency_task_id\"]\n }\n}\n```\n\n### Context links\n\nUse `add_context` to link a document, file, URL, session, memory, Task, artifact, or source\nas `input`, `reference`, `constraint`, `deliverable`, or `evidence` context.\n\n```json\n{\n \"mode\": \"task\",\n \"command\": \"add_context\",\n \"args\": {\n \"taskId\": \"task_id\",\n \"targetKind\": \"file\",\n \"targetId\": \"/path/to/spec.md\",\n \"role\": \"input\",\n \"title\": \"Product specification\",\n \"pinned\": true,\n \"retrievalPolicy\": {},\n \"metadata\": {}\n }\n}\n```\n\nUse `remove_context` with `taskId` and the exact `edgeId` returned by `task.get`.\nDo not add authority grants through this tool; an Agent must not authorize itself.\n\n### Typed lifecycle commands\n\nEvery command requires `taskId`, the Task's current `expectedVersion`, a `type`, and\ntype-specific fields inside `commandArgs`.\n\nSupported command types:\n\n- `mark_ready`\n- `start`: `{ \"executor\": { \"kind\": \"agent\", \"agentId\": \"main\" } }`\n- `request_review`\n- `close`: `{ \"resolution\": \"done | cancelled | duplicate | wont_do\" }`\n- `reopen`: `{ \"phase\": \"ready | active\" }`\n- `add_wait`: `{ \"wait\": { \"kind\": \"dependency | approval | input | schedule | external | paused\", \"reason\": \"...\", \"condition\": {} } }`\n- `resolve_wait`: `{ \"waitId\": \"wait_id\", \"resolution\": {} }`\n- `delegate`: `{ \"agentId\": \"agent_id\" }`\n- `revise_contract`: `{ \"contract\": { ...complete contract... } }`\n\n```json\n{\n \"mode\": \"task\",\n \"command\": \"command\",\n \"args\": {\n \"taskId\": \"task_id\",\n \"expectedVersion\": 3,\n \"type\": \"start\",\n \"commandArgs\": {\n \"executor\": { \"kind\": \"agent\", \"agentId\": \"main\" }\n }\n }\n}\n```\n\nContract revision is replacement, not a patch. Read the Task and preserve all contract fields\nthe user did not ask to change. Resolve a wait through `resolve_wait`; do not directly mutate\na TaskRun or manufacture a phase transition.\n\n## TaskRuns\n\nTaskRun inspection is read-only except for explicit cancellation. Other execution state is\ncontrolled by Task commands and the runtime coordinator.\n\n### List attempts for a Task\n\n```json\n{ \"mode\": \"task_run\", \"command\": \"list\", \"args\": { \"taskId\": \"task_id\", \"limit\": 20 } }\n```\n\nThe result contains run attempts, finalized receipts, and active waits.\n\n### Inspect one attempt\n\n```json\n{ \"mode\": \"task_run\", \"command\": \"get\", \"args\": { \"runId\": \"run_id\" } }\n```\n\nThe result contains the TaskRun, its receipt when terminal, ordered events, and active Task waits.\n\n### Cancel an attempt\n\nRead the run first, then pass its current version. Cancellation creates a terminal receipt.\n\n```json\n{\n \"mode\": \"task_run\",\n \"command\": \"cancel\",\n \"args\": { \"runId\": \"run_id\", \"expectedVersion\": 2, \"reason\": \"User cancelled execution\" }\n}\n```\n\nDo not guess commands such as retry, force-complete, heartbeat, or transition; they are not Agent APIs.\n\n## Notes\n\nCommands: `list`, `get`, `create`, `append`, `preview_edit`, `update`, and `delete`.\nUse Notes for durable prose and reference material, not as a Task substitute. Prefer `append`\nwhen preserving user content. Use `preview_edit` before a canonical rewrite.\n\n```json\n{ \"mode\": \"note\", \"command\": \"create\", \"args\": { \"title\": \"Decision\", \"markdown\": \"...\", \"projectId\": \"project_id\" } }\n```\n\n```json\n{ \"mode\": \"note\", \"command\": \"append\", \"args\": { \"noteId\": \"note_id\", \"heading\": \"AI synthesis\", \"content\": \"...\" } }\n```\n\nUse `update` with `status: \"trashed\"` for a recoverable removal. `delete` permanently\nremoves the Note and its stored snapshots and media; use `dryRun: true` first when the\nuser's intent is ambiguous.\n\n```json\n{ \"mode\": \"note\", \"command\": \"delete\", \"args\": { \"noteId\": \"note_id\" }, \"dryRun\": true }\n```\n\n## Chat previews, local apps, and settings\n\nUse `chat_preview` by default when the user asks to design, mock up, or quickly show a UI in\nthe current conversation. It creates no Project and no Local App. Commands are `create`,\n`get`, and `revise`. Source consists of `markup`, `styles`, and optional `script`;\ndo not include a full HTML document or remote dependencies. Revision requires the exact\n`baseRevision` returned by the prior call.\n\nUse `local_app` only when the user explicitly asks for a durable, installable app or chooses\n\u201CSave as app\u201D on a chat preview. Do not create a Local App merely to render a UI draft.\n\nLocal app commands are `list`, `get`, `create`, and `validate`. Installation,\nactivation, rollback, and uninstall remain product runtime operations.\n\nSettings supports only `open` and returns an exact product jump target without changing config.\n\n## Error recovery\n\n| Result | Recovery |\n| --- | --- |\n| service unavailable | Stop retrying and report the unavailable capability. |\n| not found | Re-list in the intended scope; do not invent another id. |\n| conflict | Read the current object and reassess using its latest version. |\n| waiting | Inspect the Task projection and TaskRun waits; resolve only the real blocker. |\n| invalid command or state | Read the object and use only a documented transition. |\n| unsupported operation | Use the dedicated tool or product UI; never write storage directly. |\n\n## Deliberate boundaries\n\n- Project deletion and milestone deletion are not Agent APIs.\n- TaskRun mutation is internal to execution coordination except for optimistic cancellation.\n- Project updates are immutable.\n- Workflow and Automation operations remain in their dedicated tools.\n- Only the documented Task and TaskRun commands are valid; do not infer hidden aliases.\n";
@@ -4,7 +4,10 @@ const xopcUseManual = `# XOPC Use Tool Manual
4
4
  ## Purpose
5
5
 
6
6
  \`xopc_use\` operates first-class XOPC product objects without editing SQLite or product files directly.
7
- Load this manual before a non-trivial mutation.
7
+ Load this manual before a non-trivial mutation. For focused configuration workflows use
8
+ \`tool_manual({tool:"xopc_use",topic:"agent|settings|automation|connections"})\`.
9
+ For identity-only changes prefer \`agent patch_profile {id,expectedRevision,patch,idempotencyKey?}\`,
10
+ which preserves omitted profile fields. Existing update keeps replacement semantics for profile.
8
11
 
9
12
  \`\`\`json
10
13
  {
@@ -79,7 +79,6 @@ import { withTaskEvidenceIdentity } from "./task-evidence.js";
79
79
  import { withPersonalPerformance } from "./personal-performance.js";
80
80
  import { createPersonalRequestTools } from "./personal-request-tool.js";
81
81
  import { createPersonalRequestConnectionTool, createPersonalRequestResultTool } from "./personal-request-result-tool.js";
82
- import { createPersonalPreferenceTool } from "./personal-preference-tool.js";
83
82
  import { createBrowserUseTool } from "./browser/tool/browser-use-tool.js";
84
83
  import { ComputerRuntime } from "../../computer/runtime.js";
85
84
  import { createComputerUseTool } from "./computer-use-tool.js";
@@ -548,10 +547,6 @@ var AgentToolsFactory = class AgentToolsFactory {
548
547
  createPersonalAttentionTool({
549
548
  getConversationId: () => this.deps.getCurrentContext()?.conversationId,
550
549
  getConfig: () => this.deps.getConfig?.()
551
- }),
552
- createPersonalPreferenceTool({
553
- getCurrentConversationId: () => this.deps.getCurrentContext()?.conversationId,
554
- onAgentCatalogMutate: this.deps.onAgentCatalogMutate
555
550
  })
556
551
  ] : []] : [],
557
552
  ...cfg?.computer.enabled && this.deps.endpointTools ? [createComputerUseTool({
@@ -1,6 +1,7 @@
1
1
  import type { AgentTool } from '@earendil-works/pi-agent-core';
2
2
  declare const ToolManualSchema: import("@sinclair/typebox").TObject<{
3
3
  tool: import("@sinclair/typebox").TString;
4
+ topic: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"agent">, import("@sinclair/typebox").TLiteral<"settings">, import("@sinclair/typebox").TLiteral<"automation">, import("@sinclair/typebox").TLiteral<"connections">]>>;
4
5
  }>;
5
6
  export declare function createToolManualTool(): AgentTool<typeof ToolManualSchema, {}>;
6
7
  export {};
@@ -1,15 +1,40 @@
1
+ import { xopcConfigurationTopics } from "../tool-manuals/xopc-configuration.js";
1
2
  import { getToolManual, listToolManuals } from "../tool-manuals/index.js";
2
3
  import { Type } from "@sinclair/typebox";
3
4
  //#region src/agent/tools/tool-manual-tool.ts
4
- const ToolManualSchema = Type.Object({ tool: Type.String({ description: "Built-in tool name, e.g. browser_use" }) });
5
+ const ToolManualSchema = Type.Object({
6
+ tool: Type.String({ description: "Built-in tool name, e.g. browser_use" }),
7
+ topic: Type.Optional(Type.Union([
8
+ Type.Literal("agent"),
9
+ Type.Literal("settings"),
10
+ Type.Literal("automation"),
11
+ Type.Literal("connections")
12
+ ], { description: "Focused xopc_use workflow; omit for the full parameter manual." }))
13
+ });
5
14
  function createToolManualTool() {
6
15
  return {
7
16
  name: "tool_manual",
8
17
  label: "📘 Tool Manual",
9
- description: "Load built-in usage manuals for complex tools. Use before non-trivial use of tools such as browser_use or xopc_use.",
18
+ description: "Focused xopc_use workflows are available as topic agent, settings, automation or connections; omit topic for full parameters. Load built-in usage manuals for complex tools. Use before non-trivial use of tools such as browser_use or xopc_use.",
10
19
  parameters: ToolManualSchema,
11
20
  async execute(_toolCallId, params) {
12
21
  const toolName = params.tool.trim();
22
+ if (params.topic) {
23
+ if (toolName !== "xopc_use") return {
24
+ content: [{
25
+ type: "text",
26
+ text: "Topics are supported only for xopc_use; omit topic for other manuals."
27
+ }],
28
+ details: {}
29
+ };
30
+ return {
31
+ content: [{
32
+ type: "text",
33
+ text: xopcConfigurationTopics[params.topic]
34
+ }],
35
+ details: {}
36
+ };
37
+ }
13
38
  const manual = getToolManual(toolName);
14
39
  if (!manual) return {
15
40
  content: [{
@@ -52,7 +52,7 @@ const XopcUseToolSchema = Type.Object({
52
52
  Type.Literal("agent"),
53
53
  Type.Literal("settings")
54
54
  ]),
55
- command: Type.String({ description: "Context resolve takes an explicit AppContextEnvelope; never guess a current page. Automation draft/repair_draft accept prompt/id, agentId?, language?, idempotencyKey?; simulate explains an automation without running it. Local_app record_acceptance records supplied checks and sourceHash, not proof that checks were executed. Agent commands: list, get {id}, create {id, profile, workspace?, models?, skills?, tools?, workflows?, runtime?, idempotencyKey?}, update {id, expectedRevision, patch, idempotencyKey?}, set_default {id, expectedRevision, idempotencyKey?}, disable/delete/purge {id, expectedRevision, idempotencyKey?}. Purge also removes on-disk data. Project create accepts idempotencyKey; update/pin/unpin/delete accepts {projectId, expectedVersion?, idempotencyKey?}; stable retries require the original expectedVersion. Delete preserves workspace files and does not confirm external execution stopped. Project milestone writes support idempotencyKey; update_milestone/delete_milestone require original expectedRevision for stable retries, and create_update requires original expectedVersion. TaskRun cancel accepts idempotencyKey and expectedVersion, and does not confirm external execution stopped. Automation diagnostics: get_run/run_events {runId}, metrics {}, events {eventType?, source?, limit?}, deliveries {runId?, limit?}, product_events {eventType, source?, payloadKey?, payloadValue?, limit?}; payload filters require both key and value. Recovery commands: replay_event {eventId, reason, idempotencyKey}, retry_delivery {runId, destinationKey, reason, idempotencyKey}. Automation also supports cancel/read {runId, idempotencyKey?} and read_all {projectId?, idempotencyKey?}; omitted projectId means all projects. Cancel acceptance is not confirmation of stopping. Object command. Supports project list/get/create/update/resolve_workspace/list_milestones/create_milestone/update_milestone/list_updates/create_update, automation list/get/create/update/delete/run/rerun/pause/resume/history (rerun takes runId; run/rerun accept idempotencyKey), note list/get/project_summaries/history {noteId}/snapshot {noteId, timestamp}/create/append/update/preview_edit/delete, task list/get/create/update_dependencies/add_context/remove_context/command/delete, task_run list/get/cancel, chat_preview create/revise/get, local_app list/get/create/validate, and settings open." }),
55
+ command: Type.String({ description: "Context resolve takes an explicit AppContextEnvelope; never guess a current page. Automation draft/repair_draft accept prompt/id, agentId?, language?, idempotencyKey?; simulate explains an automation without running it. Local_app record_acceptance records supplied checks and sourceHash, not proof that checks were executed. Agent profile-only changes: patch_profile {id, expectedRevision, patch:{name?,description?,style?,language?,...}, idempotencyKey?} preserves omitted fields. Agent commands: list, get {id}, create {id, profile, workspace?, models?, skills?, tools?, workflows?, runtime?, idempotencyKey?}, update {id, expectedRevision, patch, idempotencyKey?}, set_default {id, expectedRevision, idempotencyKey?}, disable/delete/purge {id, expectedRevision, idempotencyKey?}. Purge also removes on-disk data. Project create accepts idempotencyKey; update/pin/unpin/delete accepts {projectId, expectedVersion?, idempotencyKey?}; stable retries require the original expectedVersion. Delete preserves workspace files and does not confirm external execution stopped. Project milestone writes support idempotencyKey; update_milestone/delete_milestone require original expectedRevision for stable retries, and create_update requires original expectedVersion. TaskRun cancel accepts idempotencyKey and expectedVersion, and does not confirm external execution stopped. Automation diagnostics: get_run/run_events {runId}, metrics {}, events {eventType?, source?, limit?}, deliveries {runId?, limit?}, product_events {eventType, source?, payloadKey?, payloadValue?, limit?}; payload filters require both key and value. Recovery commands: replay_event {eventId, reason, idempotencyKey}, retry_delivery {runId, destinationKey, reason, idempotencyKey}. Automation also supports cancel/read {runId, idempotencyKey?} and read_all {projectId?, idempotencyKey?}; omitted projectId means all projects. Cancel acceptance is not confirmation of stopping. Object command. Supports project list/get/create/update/resolve_workspace/list_milestones/create_milestone/update_milestone/list_updates/create_update, automation list/get/create/update/delete/run/rerun/pause/resume/history (rerun takes runId; run/rerun accept idempotencyKey), note list/get/project_summaries/history {noteId}/snapshot {noteId, timestamp}/create/append/update/preview_edit/delete, task list/get/create/update_dependencies/add_context/remove_context/command/delete, task_run list/get/cancel, chat_preview create/revise/get, local_app list/get/create/validate, and settings open." }),
56
56
  args: Type.Optional(Type.Record(Type.String(), Type.Any())),
57
57
  dryRun: Type.Optional(Type.Boolean({ description: "Validate and preview the action without mutating xopc state." }))
58
58
  });
@@ -433,6 +433,7 @@ async function handleAgent(command, args, dryRun, capabilities, deps, toolCallId
433
433
  const writeCommands = new Set([
434
434
  "create",
435
435
  "update",
436
+ "patch_profile",
436
437
  "set_default",
437
438
  "disable",
438
439
  "delete",
@@ -1978,12 +1979,16 @@ function createXopcUseTool(deps) {
1978
1979
  authorize: deps.authorizeCapability ?? (() => true),
1979
1980
  signal
1980
1981
  };
1981
- const result = await capabilities.call("xopc.settings.open", args, caller);
1982
- return okText({
1983
- ...details,
1984
- result,
1985
- delivery: deliveryForXopcResult(mode, command, result, dryRun)
1986
- });
1982
+ try {
1983
+ const result = await capabilities.call("xopc.settings.open", args, caller);
1984
+ return okText({
1985
+ ...details,
1986
+ result,
1987
+ delivery: deliveryForXopcResult(mode, command, result, dryRun)
1988
+ });
1989
+ } catch (error) {
1990
+ return errorText(error instanceof CapabilityError && error.code === "INVALID_INPUT" ? "Invalid settings target. Read tool_manual({tool:\"xopc_use\",topic:\"settings\"}); never invent a settings section." : error instanceof Error ? error.message : String(error), details);
1991
+ }
1987
1992
  }
1988
1993
  if (mode === "local_app" && (command === "get" || command === "list" || command === "validate")) {
1989
1994
  const caller = {
@@ -1,4 +1,4 @@
1
- import { AgentEntrySchema, EffectiveAgentConfigSchema } from "../agent-config/schema.js";
1
+ import { AgentEntrySchema, AgentProfileSchema, 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
4
  import { CapabilityError } from "../capabilities/runtime/errors.js";
@@ -165,6 +165,32 @@ function registerAgentCapabilities(dispatcher) {
165
165
  },
166
166
  afterCommit: () => service.resumePendingProvisioning()
167
167
  }));
168
+ dispatcher.register(defineAtomicCapability({
169
+ ...writePolicy,
170
+ id: "xopc.agents.patch_profile",
171
+ description: "Patch selected profile fields at an exact revision, preserving omitted fields.",
172
+ input: z.strictObject({
173
+ id: AgentEntrySchema.shape.id,
174
+ expectedRevision: z.number().int().positive(),
175
+ patch: AgentProfileSchema.partial().refine((value) => Object.keys(value).length > 0, "Provide at least one profile field")
176
+ }),
177
+ output: AgentMutationOutputSchema,
178
+ execute({ id, expectedRevision, patch }) {
179
+ const { revision: _revision, provisioningState: _state, provisioningError: _error, createdAt: _created, updatedAt: _updated, deletedAt: _deleted, ...entry } = requireAgent(repository, id);
180
+ const profile = AgentProfileSchema.parse({
181
+ ...entry.profile,
182
+ ...patch
183
+ });
184
+ return {
185
+ ok: true,
186
+ ...view(repository, translateMutationError(() => repository.update(id, expectedRevision, {
187
+ ...entry,
188
+ profile
189
+ }, { reprovision: true })))
190
+ };
191
+ },
192
+ afterCommit: () => service.resumePendingProvisioning()
193
+ }));
168
194
  dispatcher.register(defineAtomicCapability({
169
195
  ...writePolicy,
170
196
  id: "xopc.agents.set_default",
@@ -1,5 +1,5 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
- import { AgentDefaultsSchema, AgentEntrySchema, AgentIdSchema, AgentModelsDefaultsSchema, AgentModelsOverrideSchema, AgentProfileSchema, ComputerModelRouteSchema, DEFAULT_AGENT_MODEL_REF, DEFAULT_CORE_SKILLS, DEFAULT_SKILL_POLICY, EffectiveAgentConfigSchema, ImageGenerationRouteSchema, ModelIntentSchema, ModelRefSchema, ModelRouteSchema, ResponsePreferencesSchema, RuntimePolicySchema, SkillDefaultsSchema, SkillOverrideSchema, ToolModeSchema, ToolPoliciesSchema, ToolPolicySchema, WorkflowPolicySchema, init_schema } from "./schema.js";
2
+ import { AgentDefaultsSchema, AgentEntrySchema, AgentIdSchema, AgentModelsDefaultsSchema, AgentModelsOverrideSchema, AgentProfileSchema, ComputerModelRouteSchema, DEFAULT_AGENT_MODEL_REF, DEFAULT_CORE_SKILLS, DEFAULT_SKILL_POLICY, EffectiveAgentConfigSchema, ImageGenerationRouteSchema, ModelIntentSchema, ModelRefSchema, ModelRouteSchema, RuntimePolicySchema, SkillDefaultsSchema, SkillOverrideSchema, ToolModeSchema, ToolPoliciesSchema, ToolPolicySchema, WorkflowPolicySchema, init_schema } from "./schema.js";
3
3
  import { init_resolver, resolveEffectiveAgentConfig } from "./resolver.js";
4
4
  //#region src/agent-config/index.ts
5
5
  var init_agent_config = __esmMin((() => {
@@ -8,4 +8,4 @@ var init_agent_config = __esmMin((() => {
8
8
  }));
9
9
  //#endregion
10
10
  init_agent_config();
11
- export { AgentDefaultsSchema, AgentEntrySchema, AgentIdSchema, AgentModelsDefaultsSchema, AgentModelsOverrideSchema, AgentProfileSchema, ComputerModelRouteSchema, DEFAULT_AGENT_MODEL_REF, DEFAULT_CORE_SKILLS, DEFAULT_SKILL_POLICY, EffectiveAgentConfigSchema, ImageGenerationRouteSchema, ModelIntentSchema, ModelRefSchema, ModelRouteSchema, ResponsePreferencesSchema, RuntimePolicySchema, SkillDefaultsSchema, SkillOverrideSchema, ToolModeSchema, ToolPoliciesSchema, ToolPolicySchema, WorkflowPolicySchema, init_agent_config, resolveEffectiveAgentConfig };
11
+ export { AgentDefaultsSchema, AgentEntrySchema, AgentIdSchema, AgentModelsDefaultsSchema, AgentModelsOverrideSchema, AgentProfileSchema, ComputerModelRouteSchema, DEFAULT_AGENT_MODEL_REF, DEFAULT_CORE_SKILLS, DEFAULT_SKILL_POLICY, EffectiveAgentConfigSchema, ImageGenerationRouteSchema, ModelIntentSchema, ModelRefSchema, ModelRouteSchema, RuntimePolicySchema, SkillDefaultsSchema, SkillOverrideSchema, ToolModeSchema, ToolPoliciesSchema, ToolPolicySchema, WorkflowPolicySchema, init_agent_config, resolveEffectiveAgentConfig };
@@ -287,35 +287,6 @@ export declare const AgentDefaultsSchema: z.ZodObject<{
287
287
  }, z.core.$strict>>;
288
288
  }, z.core.$strict>>;
289
289
  }, z.core.$strict>;
290
- export declare const ResponsePreferencesSchema: z.ZodObject<{
291
- addressAs: z.ZodOptional<z.ZodString>;
292
- guidance: z.ZodOptional<z.ZodString>;
293
- warmth: z.ZodOptional<z.ZodEnum<{
294
- balanced: "balanced";
295
- reserved: "reserved";
296
- gentle: "gentle";
297
- }>>;
298
- humor: z.ZodOptional<z.ZodEnum<{
299
- none: "none";
300
- occasional: "occasional";
301
- playful: "playful";
302
- }>>;
303
- supportMode: z.ZodOptional<z.ZodEnum<{
304
- listen: "listen";
305
- untangle: "untangle";
306
- solutions: "solutions";
307
- }>>;
308
- detailLevel: z.ZodOptional<z.ZodEnum<{
309
- brief: "brief";
310
- balanced: "balanced";
311
- detailed: "detailed";
312
- }>>;
313
- proactivity: z.ZodOptional<z.ZodEnum<{
314
- open: "open";
315
- decisions: "decisions";
316
- important: "important";
317
- }>>;
318
- }, z.core.$strict>;
319
290
  export declare const AgentProfileSchema: z.ZodObject<{
320
291
  name: z.ZodString;
321
292
  description: z.ZodOptional<z.ZodString>;
@@ -332,35 +303,6 @@ export declare const AgentProfileSchema: z.ZodObject<{
332
303
  voiceCallPreferences: z.ZodOptional<z.ZodObject<{
333
304
  openingGreetingEnabled: z.ZodBoolean;
334
305
  }, z.core.$strict>>;
335
- responsePreferences: z.ZodOptional<z.ZodObject<{
336
- addressAs: z.ZodOptional<z.ZodString>;
337
- guidance: z.ZodOptional<z.ZodString>;
338
- warmth: z.ZodOptional<z.ZodEnum<{
339
- balanced: "balanced";
340
- reserved: "reserved";
341
- gentle: "gentle";
342
- }>>;
343
- humor: z.ZodOptional<z.ZodEnum<{
344
- none: "none";
345
- occasional: "occasional";
346
- playful: "playful";
347
- }>>;
348
- supportMode: z.ZodOptional<z.ZodEnum<{
349
- listen: "listen";
350
- untangle: "untangle";
351
- solutions: "solutions";
352
- }>>;
353
- detailLevel: z.ZodOptional<z.ZodEnum<{
354
- brief: "brief";
355
- balanced: "balanced";
356
- detailed: "detailed";
357
- }>>;
358
- proactivity: z.ZodOptional<z.ZodEnum<{
359
- open: "open";
360
- decisions: "decisions";
361
- important: "important";
362
- }>>;
363
- }, z.core.$strict>>;
364
306
  instructions: z.ZodOptional<z.ZodString>;
365
307
  }, z.core.$strict>;
366
308
  export declare const AgentEntrySchema: z.ZodObject<{
@@ -383,35 +325,6 @@ export declare const AgentEntrySchema: z.ZodObject<{
383
325
  voiceCallPreferences: z.ZodOptional<z.ZodObject<{
384
326
  openingGreetingEnabled: z.ZodBoolean;
385
327
  }, z.core.$strict>>;
386
- responsePreferences: z.ZodOptional<z.ZodObject<{
387
- addressAs: z.ZodOptional<z.ZodString>;
388
- guidance: z.ZodOptional<z.ZodString>;
389
- warmth: z.ZodOptional<z.ZodEnum<{
390
- balanced: "balanced";
391
- reserved: "reserved";
392
- gentle: "gentle";
393
- }>>;
394
- humor: z.ZodOptional<z.ZodEnum<{
395
- none: "none";
396
- occasional: "occasional";
397
- playful: "playful";
398
- }>>;
399
- supportMode: z.ZodOptional<z.ZodEnum<{
400
- listen: "listen";
401
- untangle: "untangle";
402
- solutions: "solutions";
403
- }>>;
404
- detailLevel: z.ZodOptional<z.ZodEnum<{
405
- brief: "brief";
406
- balanced: "balanced";
407
- detailed: "detailed";
408
- }>>;
409
- proactivity: z.ZodOptional<z.ZodEnum<{
410
- open: "open";
411
- decisions: "decisions";
412
- important: "important";
413
- }>>;
414
- }, z.core.$strict>>;
415
328
  instructions: z.ZodOptional<z.ZodString>;
416
329
  }, z.core.$strict>>;
417
330
  purpose: z.ZodOptional<z.ZodEnum<{
@@ -553,35 +466,6 @@ export declare const EffectiveAgentConfigSchema: z.ZodObject<{
553
466
  voiceCallPreferences: z.ZodOptional<z.ZodObject<{
554
467
  openingGreetingEnabled: z.ZodBoolean;
555
468
  }, z.core.$strict>>;
556
- responsePreferences: z.ZodOptional<z.ZodObject<{
557
- addressAs: z.ZodOptional<z.ZodString>;
558
- guidance: z.ZodOptional<z.ZodString>;
559
- warmth: z.ZodOptional<z.ZodEnum<{
560
- balanced: "balanced";
561
- reserved: "reserved";
562
- gentle: "gentle";
563
- }>>;
564
- humor: z.ZodOptional<z.ZodEnum<{
565
- none: "none";
566
- occasional: "occasional";
567
- playful: "playful";
568
- }>>;
569
- supportMode: z.ZodOptional<z.ZodEnum<{
570
- listen: "listen";
571
- untangle: "untangle";
572
- solutions: "solutions";
573
- }>>;
574
- detailLevel: z.ZodOptional<z.ZodEnum<{
575
- brief: "brief";
576
- balanced: "balanced";
577
- detailed: "detailed";
578
- }>>;
579
- proactivity: z.ZodOptional<z.ZodEnum<{
580
- open: "open";
581
- decisions: "decisions";
582
- important: "important";
583
- }>>;
584
- }, z.core.$strict>>;
585
469
  instructions: z.ZodOptional<z.ZodString>;
586
470
  }, z.core.$strict>>;
587
471
  purpose: z.ZodOptional<z.ZodEnum<{