@xopcai/xopc 0.0.390 → 0.0.391

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 (192) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/src/plugin.js +1 -1
  3. package/dist/extensions/telegram/xopc.extension.json +1 -1
  4. package/dist/gateway/static/root/assets/{activity-store-DGMAYkw8.js → activity-store-DWQCDi8M.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-B4AsZzJR.js → agent-avatar-dicebear-CzS0TUv9.js} +1 -1
  6. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DE910MyU.js +1 -0
  7. package/dist/gateway/static/root/assets/agent-plugin-dialog-0SlvsYl7.js +1 -0
  8. package/dist/gateway/static/root/assets/agents-BZh28Qn1.js +77 -0
  9. package/dist/gateway/static/root/assets/{agents-admin-api-DxdaiFWn.js → agents-admin-api-Bb3Kvz3X.js} +1 -1
  10. package/dist/gateway/static/root/assets/{app-management-settings-panel-DHRfLkYD.js → app-management-settings-panel-9A7JN5V5.js} +1 -1
  11. package/dist/gateway/static/root/assets/{appearance-settings-DtKSapgb.js → appearance-settings-BPdLEo6L.js} +1 -1
  12. package/dist/gateway/static/root/assets/{apps-page-B9kuRt_z.js → apps-page-Cz7LypV9.js} +1 -1
  13. package/dist/gateway/static/root/assets/{archive-plugin-AgySTXp_.js → archive-plugin-DFnHPNie.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automations-page-D1o7ZtUW.js → automations-page-CnBLPVNh.js} +1 -1
  15. package/dist/gateway/static/root/assets/automations-workspace-BBjS-sk-.js +6 -0
  16. package/dist/gateway/static/root/assets/{binary-plugins-A1AXOsO6.js → binary-plugins-BQC0Tzoi.js} +1 -1
  17. package/dist/gateway/static/root/assets/{block-editor-DUNLkLKF.js → block-editor-DSh5019z.js} +4 -4
  18. package/dist/gateway/static/root/assets/{browser-automation-inputs-BvUC6OiW.js → browser-automation-inputs-C5tIrIRL.js} +1 -1
  19. package/dist/gateway/static/root/assets/browser-automations-page-CFCMNfJN.js +3 -0
  20. package/dist/gateway/static/root/assets/browser-settings-page-C__tyPwu.js +3 -0
  21. package/dist/gateway/static/root/assets/{capabilities-D61uSJPy.js → capabilities-D6RJG4QY.js} +1 -1
  22. package/dist/gateway/static/root/assets/{capabilities-BkCutK0V.js → capabilities-DGEmBQnF.js} +1 -1
  23. package/dist/gateway/static/root/assets/capabilities-page-B5AZa7ir.js +2 -0
  24. package/dist/gateway/static/root/assets/capabilities-settings-panel-Dskz2_bh.js +8 -0
  25. package/dist/gateway/static/root/assets/{capability-header-actions-D9uGs4Pw.js → capability-header-actions-xzjWZVbg.js} +1 -1
  26. package/dist/gateway/static/root/assets/{channels-xb7n8rwF.js → channels-DRse_dD3.js} +1 -1
  27. package/dist/gateway/static/root/assets/{chat-terminal-dock-Dgn09YDs.js → chat-terminal-dock-CQF0M4kE.js} +1 -1
  28. package/dist/gateway/static/root/assets/{computer-settings-page-C66P4ifT.js → computer-settings-page-ZfzCTS0N.js} +1 -1
  29. package/dist/gateway/static/root/assets/{connector-service-page-Dp35XdYf.js → connector-service-page-CwAeWVLK.js} +1 -1
  30. package/dist/gateway/static/root/assets/connectors-page-CanakKaj.js +1 -0
  31. package/dist/gateway/static/root/assets/{date-picker-CddHY982.js → date-picker-hmJlEAQZ.js} +1 -1
  32. package/dist/gateway/static/root/assets/{dependency-picker-Ob6BZTqv.js → dependency-picker-Us_Juz6I.js} +1 -1
  33. package/dist/gateway/static/root/assets/{desktop-pet-dmwCV-I4.js → desktop-pet-CvOTI4uw.js} +1 -1
  34. package/dist/gateway/static/root/assets/{desktop-pet-settings-B-TBkZAZ.js → desktop-pet-settings-DYg-Gb8t.js} +1 -1
  35. package/dist/gateway/static/root/assets/device-pairing-wizard-B1FbZ8C1.js +1 -0
  36. package/dist/gateway/static/root/assets/{directory-picker-path-field-6VZa4fT1.js → directory-picker-path-field-DZN9EDvM.js} +1 -1
  37. package/dist/gateway/static/root/assets/{extension-debug-page-C0_njMva.js → extension-debug-page-YIibp6Kk.js} +1 -1
  38. package/dist/gateway/static/root/assets/{extension-page-BeBLMFmW.js → extension-page-DkcGyb28.js} +1 -1
  39. package/dist/gateway/static/root/assets/{extension-provider-DWI0KAKT.js → extension-provider-B1PQGTtY.js} +1 -1
  40. package/dist/gateway/static/root/assets/extension-settings-page-C_rJiSKo.js +1 -0
  41. package/dist/gateway/static/root/assets/{gateway-config-swr-CmYcOqhb.js → gateway-config-swr-Dv_A5FMu.js} +1 -1
  42. package/dist/gateway/static/root/assets/{gateway-realtime-Ci1Jst5g.js → gateway-realtime-DghCGfY_.js} +1 -1
  43. package/dist/gateway/static/root/assets/gateway-realtime-store-CMJVSnvi.js +1 -0
  44. package/dist/gateway/static/root/assets/gateway-settings-CjCWPHNJ.js +1 -0
  45. package/dist/gateway/static/root/assets/{gateway-startup-retry-C-BG5M7H.js → gateway-startup-retry-CkTVSESs.js} +1 -1
  46. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-CsA7lCVc.js → highlighted-body-KQOG7T2V-DV2wNqBn.js} +1 -1
  47. package/dist/gateway/static/root/assets/home-page-fAYsd7kG.js +2 -0
  48. package/dist/gateway/static/root/assets/{image-generation-api-B_DqCwtV.js → image-generation-api-B98iXt6A.js} +1 -1
  49. package/dist/gateway/static/root/assets/{imports-page-oAvAF9QS.js → imports-page-DoBCBN8G.js} +1 -1
  50. package/dist/gateway/static/root/assets/index-DFgXwLsv.js +260 -0
  51. package/dist/gateway/static/root/assets/index-a6ZvhclR.css +1 -0
  52. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings--MjYe-Pb.js → keyboard-shortcuts-settings-DXVu4lqV.js} +1 -1
  53. package/dist/gateway/static/root/assets/local-app-workbench-page-B3fz6uRi.js +1 -0
  54. package/dist/gateway/static/root/assets/{local-apps-page-DOa7mxjB.js → local-apps-page-BC6xhmUh.js} +1 -1
  55. package/dist/gateway/static/root/assets/{local-session-drafts-DAtLkTPg.js → local-session-drafts-DFnZQu9A.js} +1 -1
  56. package/dist/gateway/static/root/assets/{locale-store-DMy9W6IG.js → locale-store-BpK9AiDq.js} +1 -1
  57. package/dist/gateway/static/root/assets/logs-page-CSqSFDRU.js +2 -0
  58. package/dist/gateway/static/root/assets/{management-settings-C0TzuD3-.js → management-settings-gq5L0THs.js} +1 -1
  59. package/dist/gateway/static/root/assets/{markdown-view-wyOHdXEg.js → markdown-view-IsYTotu6.js} +18 -18
  60. package/dist/gateway/static/root/assets/{media-plugins-Pb2zr_-L.js → media-plugins-oSChWbcP.js} +1 -1
  61. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-C_QKwqDN.js +1 -0
  62. package/dist/gateway/static/root/assets/{messages-O0BEUKnx.js → messages-CKTo_sIF.js} +2 -2
  63. package/dist/gateway/static/root/assets/{models-hub-cache-DdH1MODX.js → models-hub-cache-TjpL7hZ5.js} +1 -1
  64. package/dist/gateway/static/root/assets/note-detail-panel-CdpNXre-.js +5 -0
  65. package/dist/gateway/static/root/assets/{notes-api-CYt2pGsm.js → notes-api-CBb944yw.js} +1 -1
  66. package/dist/gateway/static/root/assets/notes-page-EGvGw8MN.js +8 -0
  67. package/dist/gateway/static/root/assets/{page-context-capture-button-3uj5EcQC.js → page-context-capture-button-CoWb7BYP.js} +1 -1
  68. package/dist/gateway/static/root/assets/personal-page-DYzbNTyN.js +1 -0
  69. package/dist/gateway/static/root/assets/{product-open-page-hI13tPS1.js → product-open-page-CTyy7H7-.js} +1 -1
  70. package/dist/gateway/static/root/assets/{product-preview-content-lT_in0-Q.js → product-preview-content-D4xqTaEy.js} +1 -1
  71. package/dist/gateway/static/root/assets/project-detail-page-DIVCw0QQ.js +1 -0
  72. package/dist/gateway/static/root/assets/projects-page-B4L9VnBN.js +1 -0
  73. package/dist/gateway/static/root/assets/{registry-api-CgQrCqL6.js → registry-api-Dsa2LvRt.js} +1 -1
  74. package/dist/gateway/static/root/assets/remote-access-hub-B8PvgLVz.js +1 -0
  75. package/dist/gateway/static/root/assets/{runtime-tools-api-D12qVKeC.js → runtime-tools-api-C2Uw89eY.js} +1 -1
  76. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DOSPOfCU.js → runtime-tools-settings-panel-Bqnp3tyt.js} +1 -1
  77. package/dist/gateway/static/root/assets/scenes-page-D50g4GM2.js +2 -0
  78. package/dist/gateway/static/root/assets/{schema-form-CwOFgsyh.js → schema-form-h_RCNfiO.js} +1 -1
  79. package/dist/gateway/static/root/assets/{send-session-input-nH8Cw0US.js → send-session-input-DypbVTT7.js} +1 -1
  80. package/dist/gateway/static/root/assets/{session-api-B9HrwF-c.js → session-api-ga-SUOq_.js} +1 -1
  81. package/dist/gateway/static/root/assets/{session-manager-aXqXuqDX.js → session-manager-C_OiKblh.js} +8 -8
  82. package/dist/gateway/static/root/assets/sessions-page-BsqDIbIr.js +1 -0
  83. package/dist/gateway/static/root/assets/settings-advanced-gate-D3zJAW4p.js +1 -0
  84. package/dist/gateway/static/root/assets/{settings-page-BN70wE6R.js → settings-page-DPCgrICd.js} +1 -1
  85. package/dist/gateway/static/root/assets/{setup-status-panel-CHzcVRi-.js → setup-status-panel-jjSYJpDd.js} +1 -1
  86. package/dist/gateway/static/root/assets/{share-link-dialog-B1TDyhPt.js → share-link-dialog-BGicglAS.js} +1 -1
  87. package/dist/gateway/static/root/assets/{share-preview-page-Br-eAZaP.js → share-preview-page-BORe9rLB.js} +1 -1
  88. package/dist/gateway/static/root/assets/{shares-api-Bl1ZBh5S.js → shares-api-Dbx3z6-1.js} +1 -1
  89. package/dist/gateway/static/root/assets/shares-settings-C13FgfWk.js +1 -0
  90. package/dist/gateway/static/root/assets/{skill-api-ClUw3SRC.js → skill-api-Cq6O1DZK.js} +1 -1
  91. package/dist/gateway/static/root/assets/{skill-reload-api--1BfIPzb.js → skill-reload-api-Cq7QDjMA.js} +1 -1
  92. package/dist/gateway/static/root/assets/skills-page-BM1ShEjx.js +2 -0
  93. package/dist/gateway/static/root/assets/{system-settings-panel-tWrqu7ai.js → system-settings-panel-BNCGFO1e.js} +1 -1
  94. package/dist/gateway/static/root/assets/task-detail-page-4VG82wcF.js +2 -0
  95. package/dist/gateway/static/root/assets/{task-expandable-content-D2t4ahzR.js → task-expandable-content-DAZGz5YC.js} +1 -1
  96. package/dist/gateway/static/root/assets/{theme-store-BBLjE0fi.js → theme-store-Db7hDESt.js} +1 -1
  97. package/dist/gateway/static/root/assets/{tracing-settings-page-5ATxQH5c.js → tracing-settings-page-C6p2Mu92.js} +1 -1
  98. package/dist/gateway/static/root/assets/{tunnel-api-CF1Qh4wU.js → tunnel-api-Dw15EJp0.js} +1 -1
  99. package/dist/gateway/static/root/assets/usage-page-DDrIqgGe.js +1 -0
  100. package/dist/gateway/static/root/assets/{use-autosave-tY3keIbm.js → use-autosave-DDjIdW4U.js} +1 -1
  101. package/dist/gateway/static/root/assets/{use-composer-attachments-CXsocZjt.js → use-composer-attachments-DNl7O3Vb.js} +1 -1
  102. package/dist/gateway/static/root/assets/{use-file-preview-expanded-CEsxnDnQ.js → use-file-preview-expanded-DMHehhwG.js} +2 -2
  103. package/dist/gateway/static/root/assets/user-model-page-CaS9dOIr.js +2 -0
  104. package/dist/gateway/static/root/assets/{voice-api-key-field-COTNLUU3.js → voice-api-key-field-ByAxHE4P.js} +1 -1
  105. package/dist/gateway/static/root/assets/{voice-config-api-DrxBjSja.js → voice-config-api-Dl39b27p.js} +1 -1
  106. package/dist/gateway/static/root/assets/{voice-transcribe-api-B47j0_xA.js → voice-transcribe-api-CVaU83Jc.js} +1 -1
  107. package/dist/gateway/static/root/assets/{work-discovery-overlay-PByMJrhV.js → work-discovery-overlay-BvVvPA1T.js} +1 -1
  108. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BcFm9QcC.js +3 -0
  109. package/dist/gateway/static/root/assets/workflows-page-DMec_XZB.js +6 -0
  110. package/dist/gateway/static/root/assets/{workspace-api-Bmx1O449.js → workspace-api-BpfKsrtP.js} +2 -2
  111. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-DVsAbvwP.js → xopc-cloud-account-card-CU5lzzE9.js} +1 -1
  112. package/dist/gateway/static/root/index.html +28 -36
  113. package/dist/package.js +1 -1
  114. package/dist/src/agent/agent-manager.d.ts +1 -0
  115. package/dist/src/agent/agent-manager.js +4 -1
  116. package/dist/src/agent/context/execution-scope.js +1 -1
  117. package/dist/src/agent/embedded/execution-tool-policy.d.ts +2 -0
  118. package/dist/src/agent/embedded/execution-tool-policy.js +8 -3
  119. package/dist/src/agent/embedded/run-turn.js +2 -1
  120. package/dist/src/agent/embedded/session-runner.js +1 -1
  121. package/dist/src/agent/tools/factory.js +14 -12
  122. package/dist/src/agent/tools/personal-read-tool.js +4 -0
  123. package/dist/src/agent/tools/task-collaboration-tool.js +1 -1
  124. package/dist/src/channels/index.js +1 -1
  125. package/dist/src/channels/manager.js +1 -1
  126. package/dist/src/cli/commands/channels.js +1 -1
  127. package/dist/src/cli/commands/connectors.js +1 -1
  128. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  129. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  130. package/dist/src/cli/commands/models.js +1 -1
  131. package/dist/src/cli/commands/onboard.js +1 -1
  132. package/dist/src/extensions/sdk/index.js +1 -1
  133. package/dist/src/gateway/hono/lib/voice-settings-revisions.js +2 -1
  134. package/dist/src/gateway/hono/routes/commands-skills.js +15 -0
  135. package/dist/src/gateway/service.js +9 -7
  136. package/dist/src/home-intelligence/host.js +2 -2
  137. package/dist/src/providers/setup/profiles.d.ts +2 -2
  138. package/dist/src/providers/setup/profiles.js +6 -22
  139. package/dist/src/storage/sqlite/migrations/256_task_main_update_retries.sql +21 -0
  140. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  141. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  142. package/dist/src/storage/sqlite/schema.js +1 -1
  143. package/dist/src/tasks/task-collaboration-repository.d.ts +2 -0
  144. package/dist/src/tasks/task-collaboration-repository.js +7 -1
  145. package/dist/src/tasks/task-main-update-delivery.js +11 -4
  146. package/dist/src/tasks/task-main-update-input.js +2 -1
  147. package/dist/src/tasks/task-main-update-retry.d.ts +5 -0
  148. package/dist/src/tasks/task-main-update-retry.js +15 -0
  149. package/package.json +3 -3
  150. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-9NUY1sO3.js +0 -1
  151. package/dist/gateway/static/root/assets/agent-plugin-dialog-CNc6ntzP.js +0 -1
  152. package/dist/gateway/static/root/assets/agents-QNY9Vkrf.js +0 -77
  153. package/dist/gateway/static/root/assets/automations-workspace-BJenz0P1.js +0 -6
  154. package/dist/gateway/static/root/assets/bot-DjLkhyZL.js +0 -1
  155. package/dist/gateway/static/root/assets/browser-automations-page-Dq2LlVMh.js +0 -3
  156. package/dist/gateway/static/root/assets/browser-settings-page-BOZ-1g51.js +0 -3
  157. package/dist/gateway/static/root/assets/capabilities-page-BDP6gzlv.js +0 -2
  158. package/dist/gateway/static/root/assets/capabilities-settings-panel-D6PL3Mfl.js +0 -8
  159. package/dist/gateway/static/root/assets/circle-pause-CN9jYH2s.js +0 -1
  160. package/dist/gateway/static/root/assets/clock-3-DnrAnuyZ.js +0 -1
  161. package/dist/gateway/static/root/assets/connectors-page-BHcRxYib.js +0 -1
  162. package/dist/gateway/static/root/assets/device-pairing-wizard-SWHwRgG3.js +0 -1
  163. package/dist/gateway/static/root/assets/extension-settings-page-BiLUwoKx.js +0 -1
  164. package/dist/gateway/static/root/assets/gateway-realtime-store-BMUiUQMk.js +0 -1
  165. package/dist/gateway/static/root/assets/gateway-settings-CzWT_v09.js +0 -1
  166. package/dist/gateway/static/root/assets/git-branch-Dh9uxTot.js +0 -1
  167. package/dist/gateway/static/root/assets/home-page-BeXJfxsg.js +0 -2
  168. package/dist/gateway/static/root/assets/index-W9ls-0Yd.css +0 -1
  169. package/dist/gateway/static/root/assets/index-xTL-vb51.js +0 -260
  170. package/dist/gateway/static/root/assets/local-app-workbench-page-DL33dtd7.js +0 -1
  171. package/dist/gateway/static/root/assets/logs-page-C-GbTYsM.js +0 -2
  172. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-BxyGGa4D.js +0 -1
  173. package/dist/gateway/static/root/assets/message-square-fVE7Ghj1.js +0 -1
  174. package/dist/gateway/static/root/assets/note-detail-panel-BFpEqskQ.js +0 -5
  175. package/dist/gateway/static/root/assets/notes-page-h-qqFJ6Z.js +0 -8
  176. package/dist/gateway/static/root/assets/pause-DuPxgSxk.js +0 -1
  177. package/dist/gateway/static/root/assets/personal-page-BGyW6cdt.js +0 -1
  178. package/dist/gateway/static/root/assets/play-kxZvpBg8.js +0 -1
  179. package/dist/gateway/static/root/assets/project-detail-page-Baj7fQ7N.js +0 -1
  180. package/dist/gateway/static/root/assets/projects-page-D7DyQFU3.js +0 -1
  181. package/dist/gateway/static/root/assets/remote-access-hub-DU_d93Tm.js +0 -1
  182. package/dist/gateway/static/root/assets/scenes-page-swyUIF5A.js +0 -2
  183. package/dist/gateway/static/root/assets/sessions-page-CI_PJmlX.js +0 -1
  184. package/dist/gateway/static/root/assets/settings-advanced-gate-DCVaeBLW.js +0 -1
  185. package/dist/gateway/static/root/assets/shares-settings-jgCC_E4Y.js +0 -1
  186. package/dist/gateway/static/root/assets/skills-page-C9oRZSuL.js +0 -2
  187. package/dist/gateway/static/root/assets/sparkles-DHlfQFAF.js +0 -1
  188. package/dist/gateway/static/root/assets/task-detail-page-BYRW7Rrr.js +0 -2
  189. package/dist/gateway/static/root/assets/usage-page-CuEHzXil.js +0 -1
  190. package/dist/gateway/static/root/assets/user-model-page-Dvt5TIZ6.js +0 -2
  191. package/dist/gateway/static/root/assets/workflow-run-setup-panel-CSUkMo63.js +0 -3
  192. package/dist/gateway/static/root/assets/workflows-page-BUDvFo3R.js +0 -6
@@ -11,15 +11,15 @@
11
11
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260910-1" />
12
12
  <link rel="manifest" href="/site.webmanifest?v=20260910-1" />
13
13
  <title>XOPC — Keep what matters moving.</title>
14
- <script type="module" crossorigin src="/assets/index-xTL-vb51.js"></script>
14
+ <script type="module" crossorigin src="/assets/index-DFgXwLsv.js"></script>
15
15
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
18
18
  <link rel="modulepreload" crossorigin href="/assets/dist-CxGUk8J-.js">
19
19
  <link rel="modulepreload" crossorigin href="/assets/es2015-DBLcMg5B.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/middleware-Pd0e8Igk.js">
21
- <link rel="modulepreload" crossorigin href="/assets/messages-O0BEUKnx.js">
22
- <link rel="modulepreload" crossorigin href="/assets/locale-store-DMy9W6IG.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/messages-CKTo_sIF.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/locale-store-BpK9AiDq.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/floating-ui.dom-B7uQOZZW.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/dist-CI_fqRk-.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/dist-BGTk37IG.js">
@@ -37,14 +37,13 @@
37
37
  <link rel="modulepreload" crossorigin href="/assets/bundle-mjs-rHxsej31.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/cn-0WouolD0.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/copy-to-clipboard-HOJ79TWv.js">
40
- <link rel="modulepreload" crossorigin href="/assets/markdown-view-wyOHdXEg.js">
40
+ <link rel="modulepreload" crossorigin href="/assets/markdown-view-IsYTotu6.js">
41
41
  <link rel="modulepreload" crossorigin href="/assets/check-DUBLcKHA.js">
42
42
  <link rel="modulepreload" crossorigin href="/assets/copy-Dv6d4Dvw.js">
43
43
  <link rel="modulepreload" crossorigin href="/assets/button-aIC072nz.js">
44
44
  <link rel="modulepreload" crossorigin href="/assets/copy-text-row-C7egVuKr.js">
45
45
  <link rel="modulepreload" crossorigin href="/assets/vendor-swr-BIWyz7Rc.js">
46
46
  <link rel="modulepreload" crossorigin href="/assets/activity-YogQEteU.js">
47
- <link rel="modulepreload" crossorigin href="/assets/bot-DjLkhyZL.js">
48
47
  <link rel="modulepreload" crossorigin href="/assets/chevron-left-DqFhpbvK.js">
49
48
  <link rel="modulepreload" crossorigin href="/assets/chevron-right-BweFrslA.js">
50
49
  <link rel="modulepreload" crossorigin href="/assets/dist-C3DSFZCi.js">
@@ -55,8 +54,6 @@
55
54
  <link rel="modulepreload" crossorigin href="/assets/circle-check-C23XjkUj.js">
56
55
  <link rel="modulepreload" crossorigin href="/assets/circle-dashed-8qMD7gHf.js">
57
56
  <link rel="modulepreload" crossorigin href="/assets/circle-dot-BAseJTrF.js">
58
- <link rel="modulepreload" crossorigin href="/assets/circle-pause-CN9jYH2s.js">
59
- <link rel="modulepreload" crossorigin href="/assets/clock-3-DnrAnuyZ.js">
60
57
  <link rel="modulepreload" crossorigin href="/assets/cloud-C4-yfnnk.js">
61
58
  <link rel="modulepreload" crossorigin href="/assets/ellipsis-0k4rZLoy.js">
62
59
  <link rel="modulepreload" crossorigin href="/assets/external-link-DjqjBmc3.js">
@@ -73,55 +70,50 @@
73
70
  <link rel="modulepreload" crossorigin href="/assets/rotate-cw-LIg3Am9S.js">
74
71
  <link rel="modulepreload" crossorigin href="/assets/search-DA7gz22f.js">
75
72
  <link rel="modulepreload" crossorigin href="/assets/index.module-Cd9ENXfk.js">
76
- <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-C-BG5M7H.js">
77
- <link rel="modulepreload" crossorigin href="/assets/session-api-B9HrwF-c.js">
73
+ <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-CkTVSESs.js">
74
+ <link rel="modulepreload" crossorigin href="/assets/session-api-ga-SUOq_.js">
78
75
  <link rel="modulepreload" crossorigin href="/assets/constants-DeXt1mV-.js">
79
76
  <link rel="modulepreload" crossorigin href="/assets/app-chrome-BeB4KgOf.js">
80
77
  <link rel="modulepreload" crossorigin href="/assets/attachment-utils-core-BIOUBrpT.js">
81
78
  <link rel="modulepreload" crossorigin href="/assets/files-Bw4SBGdM.js">
82
- <link rel="modulepreload" crossorigin href="/assets/workspace-api-Bmx1O449.js">
79
+ <link rel="modulepreload" crossorigin href="/assets/workspace-api-BpfKsrtP.js">
83
80
  <link rel="modulepreload" crossorigin href="/assets/electron-env-Dit0bHgy.js">
84
81
  <link rel="modulepreload" crossorigin href="/assets/use-async-resource-GrnWNwMZ.js">
85
- <link rel="modulepreload" crossorigin href="/assets/activity-store-DGMAYkw8.js">
86
- <link rel="modulepreload" crossorigin href="/assets/use-file-preview-expanded-CEsxnDnQ.js">
82
+ <link rel="modulepreload" crossorigin href="/assets/activity-store-DWQCDi8M.js">
83
+ <link rel="modulepreload" crossorigin href="/assets/use-file-preview-expanded-DMHehhwG.js">
87
84
  <link rel="modulepreload" crossorigin href="/assets/mic-CuUb7zc-.js">
88
85
  <link rel="modulepreload" crossorigin href="/assets/globe-DSSGFWFn.js">
89
- <link rel="modulepreload" crossorigin href="/assets/share-link-dialog-B1TDyhPt.js">
90
- <link rel="modulepreload" crossorigin href="/assets/local-session-drafts-DAtLkTPg.js">
86
+ <link rel="modulepreload" crossorigin href="/assets/share-link-dialog-BGicglAS.js">
87
+ <link rel="modulepreload" crossorigin href="/assets/local-session-drafts-DFnZQu9A.js">
91
88
  <link rel="modulepreload" crossorigin href="/assets/specialists-4bkS5rZ4.js">
92
89
  <link rel="modulepreload" crossorigin href="/assets/tasks-PuIUgF9L.js">
93
- <link rel="modulepreload" crossorigin href="/assets/capabilities-BkCutK0V.js">
90
+ <link rel="modulepreload" crossorigin href="/assets/capabilities-DGEmBQnF.js">
94
91
  <link rel="modulepreload" crossorigin href="/assets/skill-wire-pattern-BPpeIcCi.js">
95
- <link rel="modulepreload" crossorigin href="/assets/shares-api-Bl1ZBh5S.js">
96
- <link rel="modulepreload" crossorigin href="/assets/capabilities-D61uSJPy.js">
97
- <link rel="modulepreload" crossorigin href="/assets/use-composer-attachments-CXsocZjt.js">
98
- <link rel="modulepreload" crossorigin href="/assets/git-branch-Dh9uxTot.js">
99
- <link rel="modulepreload" crossorigin href="/assets/notes-api-CYt2pGsm.js">
100
- <link rel="modulepreload" crossorigin href="/assets/message-square-fVE7Ghj1.js">
101
- <link rel="modulepreload" crossorigin href="/assets/pause-DuPxgSxk.js">
102
- <link rel="modulepreload" crossorigin href="/assets/play-kxZvpBg8.js">
92
+ <link rel="modulepreload" crossorigin href="/assets/shares-api-Dbx3z6-1.js">
93
+ <link rel="modulepreload" crossorigin href="/assets/capabilities-D6RJG4QY.js">
94
+ <link rel="modulepreload" crossorigin href="/assets/use-composer-attachments-DNl7O3Vb.js">
95
+ <link rel="modulepreload" crossorigin href="/assets/notes-api-CBb944yw.js">
103
96
  <link rel="modulepreload" crossorigin href="/assets/rotate-ccw-JM1TBLpp.js">
104
97
  <link rel="modulepreload" crossorigin href="/assets/settings-2-D-csvaET.js">
105
- <link rel="modulepreload" crossorigin href="/assets/sparkles-DHlfQFAF.js">
106
- <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-store-BMUiUQMk.js">
107
- <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-Ci1Jst5g.js">
98
+ <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-store-CMJVSnvi.js">
99
+ <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-DghCGfY_.js">
108
100
  <link rel="modulepreload" crossorigin href="/assets/tool-activity-BtJkgjFf.js">
109
- <link rel="modulepreload" crossorigin href="/assets/registry-api-CgQrCqL6.js">
110
- <link rel="modulepreload" crossorigin href="/assets/gateway-config-swr-CmYcOqhb.js">
111
- <link rel="modulepreload" crossorigin href="/assets/agents-admin-api-DxdaiFWn.js">
112
- <link rel="modulepreload" crossorigin href="/assets/session-manager-aXqXuqDX.js">
113
- <link rel="modulepreload" crossorigin href="/assets/voice-transcribe-api-B47j0_xA.js">
114
- <link rel="modulepreload" crossorigin href="/assets/send-session-input-nH8Cw0US.js">
115
- <link rel="modulepreload" crossorigin href="/assets/theme-store-BBLjE0fi.js">
116
- <link rel="modulepreload" crossorigin href="/assets/extension-provider-DWI0KAKT.js">
101
+ <link rel="modulepreload" crossorigin href="/assets/registry-api-Dsa2LvRt.js">
102
+ <link rel="modulepreload" crossorigin href="/assets/gateway-config-swr-Dv_A5FMu.js">
103
+ <link rel="modulepreload" crossorigin href="/assets/agents-admin-api-Bb3Kvz3X.js">
104
+ <link rel="modulepreload" crossorigin href="/assets/session-manager-C_OiKblh.js">
105
+ <link rel="modulepreload" crossorigin href="/assets/voice-transcribe-api-CVaU83Jc.js">
106
+ <link rel="modulepreload" crossorigin href="/assets/send-session-input-DypbVTT7.js">
107
+ <link rel="modulepreload" crossorigin href="/assets/theme-store-Db7hDESt.js">
108
+ <link rel="modulepreload" crossorigin href="/assets/extension-provider-B1PQGTtY.js">
117
109
  <link rel="modulepreload" crossorigin href="/assets/loopi-Djb8XU3l.js">
118
- <link rel="modulepreload" crossorigin href="/assets/models-hub-cache-DdH1MODX.js">
110
+ <link rel="modulepreload" crossorigin href="/assets/models-hub-cache-TjpL7hZ5.js">
119
111
  <link rel="modulepreload" crossorigin href="/assets/skill-api-utils-C7V4JVXM.js">
120
112
  <link rel="modulepreload" crossorigin href="/assets/date-formatters-CUZAyDEg.js">
121
113
  <link rel="modulepreload" crossorigin href="/assets/settings-form-draft-Dy10ldo8.js">
122
114
  <link rel="stylesheet" crossorigin href="/assets/markdown-view-Ct4sKkUf.css">
123
115
  <link rel="stylesheet" crossorigin href="/assets/loopi-C09I2mNj.css">
124
- <link rel="stylesheet" crossorigin href="/assets/index-W9ls-0Yd.css">
116
+ <link rel="stylesheet" crossorigin href="/assets/index-a6ZvhclR.css">
125
117
  </head>
126
118
  <body>
127
119
  <div id="root"></div>
package/dist/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  //#region package.json
2
- var version = "0.0.390";
2
+ var version = "0.0.391";
3
3
  //#endregion
4
4
  export { version };
@@ -131,6 +131,7 @@ export interface AgentInstance {
131
131
  activeProjectContext?: string;
132
132
  interactionStateVersion?: number;
133
133
  userContextAccessVersion: string;
134
+ executionToolPolicyVersion: string;
134
135
  /** Declared env var names from skill_view; exec_command reads values from process.env at spawn time. */
135
136
  skillEnvPassthroughKeys: Set<string>;
136
137
  }
@@ -26,6 +26,7 @@ import { runPersistentLearningJob } from "./background-review/run-background-rev
26
26
  import { applyConfigOverrides } from "../config/runtime-overrides.js";
27
27
  import { isPersonalConversation } from "../personal-agent/repository.js";
28
28
  import { PersonalPromptContext } from "../personal-agent/prompt-context.js";
29
+ import { resolveExecutionToolPolicy } from "./embedded/execution-tool-policy.js";
29
30
  import { buildExecutionScopeContextForPrompt } from "./context/execution-scope.js";
30
31
  import { clearBootstrapSnapshot } from "./bootstrap/bootstrap-cache.js";
31
32
  import { resolveBootstrapContextSync } from "./bootstrap/bootstrap-files.js";
@@ -769,9 +770,10 @@ var AgentManager = class {
769
770
  getOrCreateAgent(conversationId) {
770
771
  const targetPath = this.getResolvedWorkspaceForSession(conversationId);
771
772
  const existing = this.agents.get(conversationId);
773
+ const executionToolPolicyVersion = JSON.stringify(resolveExecutionToolPolicy(conversationId));
772
774
  if (existing) {
773
775
  const currentConfig = resolveEffectiveAgentProfileForSession(conversationId).config;
774
- if (!existing.agent.state.isStreaming && (existing.resolvedWorkspacePath !== targetPath || JSON.stringify(existing.effectiveProfile.config) !== JSON.stringify(currentConfig))) this.removeAgent(conversationId);
776
+ if (!existing.agent.state.isStreaming && (existing.executionToolPolicyVersion !== executionToolPolicyVersion || existing.resolvedWorkspacePath !== targetPath || JSON.stringify(existing.effectiveProfile.config) !== JSON.stringify(currentConfig))) this.removeAgent(conversationId);
775
777
  else {
776
778
  this.refreshDynamicContextIfChanged(existing);
777
779
  existing.lastUsedAt = Date.now();
@@ -807,6 +809,7 @@ var AgentManager = class {
807
809
  activeProjectContext,
808
810
  interactionStateVersion: this.getInteractionStateVersion(conversationId),
809
811
  userContextAccessVersion: this.getUserContextAccessVersion(conversationId),
812
+ executionToolPolicyVersion,
810
813
  skillEnvPassthroughKeys: /* @__PURE__ */ new Set()
811
814
  });
812
815
  log.debug({
@@ -3,8 +3,8 @@ import { TaskRepository, init_task_repository } from "../../tasks/task-repositor
3
3
  import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
4
4
  import { init_sqlite } from "../../storage/sqlite/index.js";
5
5
  import { TaskReadModelProjector } from "../../tasks/task-read-model-projector.js";
6
- import { sanitizeForPromptLiteral } from "../prompt/sanitize-for-prompt.js";
7
6
  import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
7
+ import { sanitizeForPromptLiteral } from "../prompt/sanitize-for-prompt.js";
8
8
  import { buildActiveProjectContextForPrompt } from "./project-context.js";
9
9
  //#region src/agent/context/execution-scope.ts
10
10
  init_sqlite();
@@ -1,7 +1,9 @@
1
1
  import type { AgentTool } from '@earendil-works/pi-agent-core';
2
+ export declare const TASK_EXECUTION_TOOL_IDS: readonly string[];
2
3
  export declare const PERSONAL_REQUEST_TOOL_IDS: readonly ["xopc_tool_search", "xopc_tool_describe", "xopc_tool_execute", "personal_request_result", "personal_request_connection", "task_collaboration"];
3
4
  export type ExecutionToolPolicy = Readonly<{
4
5
  surface: 'agent' | 'personal_main' | 'personal_request_worker';
6
+ taskExecution: boolean;
5
7
  nativeMcp: boolean;
6
8
  externalMaterialization: boolean;
7
9
  discovery: boolean;
@@ -4,10 +4,12 @@ import { getSessionMetadata } from "../../storage/sqlite/session-read-repository
4
4
  import { init_session_repository } from "../../storage/sqlite/session-repository.js";
5
5
  import { isPersonalConversation } from "../../personal-agent/repository.js";
6
6
  import { PERSONAL_MAIN_TOOL_IDS } from "../../personal-agent/policy.js";
7
+ import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
7
8
  //#region src/agent/embedded/execution-tool-policy.ts
8
9
  init_request_repository();
9
10
  init_connection();
10
11
  init_session_repository();
12
+ const TASK_EXECUTION_TOOL_IDS = ["task_collaboration", "publish_task_result"];
11
13
  const PERSONAL_REQUEST_TOOL_IDS = [
12
14
  "xopc_tool_search",
13
15
  "xopc_tool_describe",
@@ -22,21 +24,24 @@ function resolveExecutionToolPolicy(conversationId) {
22
24
  if (isPersonalConversation(conversationId)) surface = "personal_main";
23
25
  else if (personalRequestForExecution(conversationId) || isXopcDatabaseOpen() && getSessionMetadata(conversationId)?.customData?.personalReadRequestId) surface = "personal_request_worker";
24
26
  const configured = surface === "agent";
27
+ const taskExecution = Boolean(isXopcDatabaseOpen() && new TaskConversationRepository().resolveActiveExecutionSession(conversationId));
25
28
  return {
26
29
  surface,
30
+ taskExecution,
27
31
  nativeMcp: configured,
28
32
  externalMaterialization: configured,
29
33
  discovery: configured,
30
34
  codemode: configured,
31
- revision: "personal-tool-boundaries-v2"
35
+ revision: "personal-tool-boundaries-v3"
32
36
  };
33
37
  }
34
38
  function allowsExecutionTool(policy, name) {
35
- if (policy.surface === "agent") return true;
39
+ if (TASK_EXECUTION_TOOL_IDS.includes(name) && !policy.taskExecution) return false;
40
+ if (policy.surface === "agent") return !name.startsWith("personal_");
36
41
  return (policy.surface === "personal_main" ? PERSONAL_MAIN_TOOL_IDS : PERSONAL_REQUEST_TOOL_IDS).includes(name);
37
42
  }
38
43
  function filterExecutionTools(policy, tools) {
39
44
  return tools.filter((tool) => allowsExecutionTool(policy, tool.name));
40
45
  }
41
46
  //#endregion
42
- export { PERSONAL_REQUEST_TOOL_IDS, allowsExecutionTool, filterExecutionTools, resolveExecutionToolPolicy };
47
+ export { PERSONAL_REQUEST_TOOL_IDS, TASK_EXECUTION_TOOL_IDS, allowsExecutionTool, filterExecutionTools, resolveExecutionToolPolicy };
@@ -624,7 +624,8 @@ async function runXopcEmbeddedTurnInner(params) {
624
624
  block: true,
625
625
  reason: "Tool is outside this execution scope."
626
626
  };
627
- if (executionToolPolicy.surface !== "agent" && resolveExecutionToolPolicy(toolPolicyConversationId).surface !== executionToolPolicy.surface) {
627
+ const currentToolPolicy = resolveExecutionToolPolicy(toolPolicyConversationId);
628
+ if (currentToolPolicy.surface !== executionToolPolicy.surface || currentToolPolicy.taskExecution !== executionToolPolicy.taskExecution) {
628
629
  policyStopped = true;
629
630
  policyStopReason = "Execution identity changed during the run";
630
631
  quarantineRunner = true;
@@ -1,7 +1,7 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import { isCodemodeCoreRead } from "../tools/codemode-permissions.js";
4
3
  import { filterExecutionTools, resolveExecutionToolPolicy } from "./execution-tool-policy.js";
4
+ import { isCodemodeCoreRead } from "../tools/codemode-permissions.js";
5
5
  import { deferredToolContract, getXopcToolMetadata } from "./tool-metadata.js";
6
6
  import { abortEmbeddedRun } from "./runs.js";
7
7
  import { guardSessionManager } from "./session-tool-result-guard.js";
@@ -11,12 +11,12 @@ import { init_sqlite } from "../../storage/sqlite/index.js";
11
11
  import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
12
12
  import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
13
13
  import { resolveEffectiveAgentConfigForAgent, resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
14
+ import { PERSONAL_TOOL_DESCRIPTIONS } from "../../personal-agent/policy.js";
14
15
  import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
16
+ import { PERSONAL_REQUEST_TOOL_IDS, TASK_EXECUTION_TOOL_IDS, filterExecutionTools, resolveExecutionToolPolicy } from "../embedded/execution-tool-policy.js";
15
17
  import { LOCAL_READ_MAX_CHARS } from "./local-read-budget.js";
16
18
  import { createPersonalAttentionTool } from "./personal-attention-tool.js";
17
19
  import { markCodemodeCoreRead } from "./codemode-permissions.js";
18
- import { PERSONAL_TOOL_DESCRIPTIONS } from "../../personal-agent/policy.js";
19
- import { PERSONAL_REQUEST_TOOL_IDS, filterExecutionTools, resolveExecutionToolPolicy } from "../embedded/execution-tool-policy.js";
20
20
  import "../../../packages/browser-control-contract/src/index.js";
21
21
  import { getEmbeddedExecutionRunId, getEmbeddedExecutionSession } from "../embedded/execution-context.js";
22
22
  import { wrapToolsWithProtection } from "./executor.js";
@@ -116,7 +116,8 @@ var AgentToolsFactory = class AgentToolsFactory {
116
116
  disabledTools: denied,
117
117
  toolAllowlist: candidate.toolAllowlist
118
118
  }).some((tool) => tool.name === name);
119
- const activatable = this.getLazyCapabilityToolNames().includes(name);
119
+ const taskActivatable = TASK_EXECUTION_TOOL_IDS.includes(name) && !denied.has(name) && (!candidate.toolAllowlist || candidate.toolAllowlist.includes(name));
120
+ const activatable = this.getLazyCapabilityToolNames().includes(name) || taskActivatable;
120
121
  return {
121
122
  condition: `tool:${name}`,
122
123
  state: registered || activatable ? "verified" : "blocked",
@@ -249,8 +250,8 @@ var AgentToolsFactory = class AgentToolsFactory {
249
250
  let allowed = options?.toolAllowlist ? new Set(options.toolAllowlist) : void 0;
250
251
  const currentConversationId = () => options?.conversationId ?? this.deps.getCurrentContext?.()?.conversationId;
251
252
  const executionConversationId = currentConversationId();
252
- const executionToolPolicy = executionConversationId ? resolveExecutionToolPolicy(executionConversationId) : void 0;
253
- const personalToolsConfigured = executionToolPolicy?.surface === "personal_main" || Boolean(allowed?.has("personal_task") || allowed?.has("personal_preference"));
253
+ const executionToolPolicy = resolveExecutionToolPolicy(executionConversationId ?? "");
254
+ const personalToolsConfigured = executionToolPolicy.surface === "personal_main";
254
255
  const primary = getPrimary?.();
255
256
  const modelHasVision = primary?.input?.includes("image") ?? false;
256
257
  const cfg = this.deps.getConfig?.();
@@ -432,12 +433,11 @@ var AgentToolsFactory = class AgentToolsFactory {
432
433
  })] : [],
433
434
  createSendMediaTool(workspace, bus, deliveryContext),
434
435
  createPublishArtifactsTool(workspace),
435
- createTaskResultTool(currentConversationId),
436
- createTaskCollaborationTool({
436
+ ...executionToolPolicy.taskExecution ? [createTaskResultTool(currentConversationId), createTaskCollaborationTool({
437
437
  ...productToolDeps,
438
438
  getWorkspace: () => workspace,
439
439
  getCurrentConversationId: currentConversationId
440
- }),
440
+ })] : [],
441
441
  createReadMediaTool(personalToolsConfigured ? {
442
442
  textOnly: true,
443
443
  maxChars: LOCAL_READ_MAX_CHARS,
@@ -540,7 +540,10 @@ var AgentToolsFactory = class AgentToolsFactory {
540
540
  ...browserEnabled && this.deps.getBrowserAutomationService ? [createBrowserAutomationTool({ getBrowserAutomationService: this.deps.getBrowserAutomationService })] : [],
541
541
  ...this.deps.getAutomationService || this.deps.getSceneAccess || this.deps.getProjectService || this.deps.getNotesService || this.deps.getLocalAppService || this.deps.getChatPreviewService || this.deps.dispatchTaskEvents || this.deps.dispatchTaskRuns ? [createXopcUseTool(productToolDeps), ...personalToolsConfigured ? [
542
542
  createPersonalTaskTool(productToolDeps),
543
- createPersonalReadTool(productToolDeps),
543
+ createPersonalReadTool({
544
+ ...productToolDeps,
545
+ getCurrentConversationId: currentConversationId
546
+ }),
544
547
  createPersonalResultTool(currentConversationId),
545
548
  ...createPersonalRequestTools(productToolDeps),
546
549
  createPersonalAttentionTool({
@@ -649,11 +652,10 @@ var AgentToolsFactory = class AgentToolsFactory {
649
652
  allowHostGit: () => getCommandIsolation()?.mode !== "docker"
650
653
  }));
651
654
  }
652
- const selected = filterToolsByDisabledSet(core.map(markCodemodeCoreRead), disabled).filter((tool) => (!allowed || allowed.has(tool.name)) && !(personalToolsConfigured && tool.name === "clarify")).map((tool) => personalToolsConfigured && !tool.name.startsWith("personal_") && PERSONAL_TOOL_DESCRIPTIONS[tool.name] ? {
655
+ return filterExecutionTools(executionToolPolicy, filterToolsByDisabledSet(core.map(markCodemodeCoreRead), disabled).filter((tool) => (!allowed || allowed.has(tool.name)) && !(personalToolsConfigured && tool.name === "clarify")).map((tool) => personalToolsConfigured && !tool.name.startsWith("personal_") && PERSONAL_TOOL_DESCRIPTIONS[tool.name] ? {
653
656
  ...tool,
654
657
  description: PERSONAL_TOOL_DESCRIPTIONS[tool.name]
655
- } : tool);
656
- return executionToolPolicy ? filterExecutionTools(executionToolPolicy, selected) : selected;
658
+ } : tool));
657
659
  }
658
660
  createCapabilityTools(capabilityNames, options) {
659
661
  const disabled = options?.disabledTools;
@@ -1,5 +1,7 @@
1
1
  import { CapabilityDispatcher } from "../../capabilities/runtime/dispatcher.js";
2
+ import { isPersonalConversation } from "../../personal-agent/repository.js";
2
3
  import { LOCAL_READ_MAX_CHARS } from "./local-read-budget.js";
4
+ import { getEmbeddedExecutionSession } from "../embedded/execution-context.js";
3
5
  import { registerNoteReadCapabilities } from "../../notes/capabilities/read.js";
4
6
  import { registerProjectReadCapabilities } from "../../projects/capabilities/read.js";
5
7
  import { registerAutomationReadCapabilities } from "../../automations/capabilities/read.js";
@@ -90,6 +92,8 @@ function createPersonalReadTool(deps) {
90
92
  supportsParallel: true,
91
93
  idempotent: true,
92
94
  async execute(_id, raw, signal) {
95
+ const conversationId = getEmbeddedExecutionSession() ?? deps.getCurrentConversationId?.();
96
+ if (!conversationId || !isPersonalConversation(conversationId)) throw new Error("Personal conversation is unavailable");
93
97
  const input = raw;
94
98
  if (![
95
99
  "note",
@@ -90,7 +90,7 @@ function createTaskCollaborationTool(deps) {
90
90
  name: "task_collaboration",
91
91
  label: "Task collaboration",
92
92
  parameters: Schema,
93
- description: "Coordinate the current Task with its Personal owner. get section brief reads the full task body in 4000-character pages (offset/nextOffset); section handoff lists the host-captured original request and selected versioned sources, Read the CURRENT handoff first; source indices can change across work revisions. Only entries marked materializable support materialize=true, with an explicit sourceIndex. section source with materialize=true copies a selected pinned workspace file OR published result artifact into your Task input directory; use the returned executionInputRoot as cwd and readOnlyPath as input, never the owner workspace path. Result body text uses read; materialize requires an exact artifact source. The returned copies are read-only: write revised outputs elsewhere and publish those new files. It grants no wider root access. Otherwise section source reads one sourceIndex (query for result search, revision for pinned extracted text). section evidence lists real successful tool reads, or reads a toolCallId in 4000-character pages. Evidence excerpts must cite that original toolCallId. get with section task reads constraints and waits; default get reads complete ordered messages (afterSequence/limit) or one entryId. post progress for meaningful changes; post question then stop this turn until answered. Initial handoff and source/tool IDs require no ack. Before continuing, post ack only for a user/main_agent collaboration entry of kind answer or instruction, with causationId equal to that entry ID and explain how the result will incorporate it. Confirmation is receipt and intent, not completed verification. Reuse the same Task and executor. Account authorization stays in the main connection UI; answers and instructions cannot change the selected connector/account or permit writes. Preserve idempotencyKey on retries.",
93
+ description: "Coordinate the current Task with its originating conversation. get section brief reads the full task body in 4000-character pages (offset/nextOffset); section handoff lists the host-captured original request and selected versioned sources, Read the CURRENT handoff first; source indices can change across work revisions. Only entries marked materializable support materialize=true, with an explicit sourceIndex. section source with materialize=true copies a selected pinned workspace file OR published result artifact into your Task input directory; use the returned executionInputRoot as cwd and readOnlyPath as input, never the owner workspace path. Result body text uses read; materialize requires an exact artifact source. The returned copies are read-only: write revised outputs elsewhere and publish those new files. It grants no wider root access. Otherwise section source reads one sourceIndex (query for result search, revision for pinned extracted text). section evidence lists real successful tool reads, or reads a toolCallId in 4000-character pages. Evidence excerpts must cite that original toolCallId. get with section task reads constraints and waits; default get reads complete ordered messages (afterSequence/limit) or one entryId. post progress for meaningful changes; post question then stop this turn until answered. Initial handoff and source/tool IDs require no ack. Before continuing, post ack only for a user/main_agent collaboration entry of kind answer or instruction, with causationId equal to that entry ID and explain how the result will incorporate it. Confirmation is receipt and intent, not completed verification. Reuse the same Task and executor. Account authorization stays in the main connection UI; answers and instructions cannot change the selected connector/account or permit writes. Preserve idempotencyKey on retries.",
94
94
  mutatesWorkspace: true,
95
95
  mutationScope: "external",
96
96
  requiresExclusiveWorkspaceLock: false,
@@ -7,8 +7,8 @@ import { compileAllowlist, evaluateAccess, hasBotMention, removeBotMention, reso
7
7
  import { renderMarkdownWithMarkers } from "../markdown/render.js";
8
8
  import { convertMarkdownTables } from "../markdown/tables.js";
9
9
  import { buildCodeSpanIndex, createInlineCodeState } from "../markdown/code-spans.js";
10
- import { ChannelManager, createChannelManager } from "./manager.js";
11
10
  import "./format.js";
12
11
  import { MessagePipeline, createEnvelopeTimestampHandler, createFilterCommandsHandler, createFilterEmptyHandler, createFilterSelfHandler, createPipeline, standardPreflightHandlers, standardProcessHandlers } from "./pipeline.js";
12
+ import { ChannelManager, createChannelManager } from "./manager.js";
13
13
  import { collectSetupWizardChannels } from "./setup-wizard-discovery.js";
14
14
  export { ChannelManager, MessagePipeline, buildCodeSpanIndex, chunkMarkdownIR, chunkText, collectSetupWizardChannels, compileAllowlist, convertMarkdownTables, createChannelManager, createEnvelopeTimestampHandler, createFilterCommandsHandler, createFilterEmptyHandler, createFilterSelfHandler, createInlineCodeState, createPipeline, evaluateAccess, findFenceSpanAt, getChannelPlugin, getChannelRegistryVersion, hasBotMention, isSafeFenceBreak, listChannelPlugins, markdownToIR, markdownToIRWithMeta, parseFenceSpans, parseFrontmatterBlock, removeBotMention, renderMarkdownWithMarkers, resolveAllowlistMatch, resolveAllowlistMatchSimple, resolveDmPolicy, resolveGroupPolicy, standardPreflightHandlers, standardProcessHandlers, syncChannelPluginsFromManager };
@@ -1,8 +1,8 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
3
  import { ChannelHealthMonitor } from "./health-monitor.js";
4
- import { ChannelPluginRegistry } from "./plugin-registry.js";
5
4
  import { ChannelHeartbeatScheduler } from "./heartbeat-scheduler.js";
5
+ import { ChannelPluginRegistry } from "./plugin-registry.js";
6
6
  import { ChannelOutboundSender } from "./outbound-sender.js";
7
7
  import { ChannelLifecycleSupervisor } from "./lifecycle-supervisor.js";
8
8
  //#region src/channels/manager.ts
@@ -1,8 +1,8 @@
1
1
  import { buildChannelCatalogForConfig } from "../../channels/catalog/channel-catalog-service.js";
2
2
  import { loadConfig, saveConfig } from "../../config/loader.js";
3
- import { formatExamples, register } from "../registry.js";
4
3
  import { listChannelPairingState } from "../../channels/pairing/pairing-service.js";
5
4
  import { approveChannelPairingFromCli } from "../../channels/pairing/approve-cli.js";
5
+ import { formatExamples, register } from "../registry.js";
6
6
  import { colors } from "../utils/colors.js";
7
7
  import { Command } from "commander";
8
8
  //#region src/cli/commands/channels.ts
@@ -1,8 +1,8 @@
1
1
  import { getStoreConnectorInstallPlan, installStoreConnector, listStoreConnectors } from "../../capabilities/store-connector.js";
2
2
  import { loadConfig, saveConfig } from "../../config/loader.js";
3
3
  import { register } from "../registry.js";
4
- import { Command } from "commander";
5
4
  import { confirm } from "@inquirer/prompts";
5
+ import { Command } from "commander";
6
6
  //#region src/cli/commands/connectors.ts
7
7
  function parsePairs(values, option) {
8
8
  const output = {};
@@ -53,7 +53,7 @@ async function checkDatabaseSchema(ctx) {
53
53
  id: "database-schema",
54
54
  label: "Database schema",
55
55
  status: "pass",
56
- message: `SQLite schema v${status.dbVersion} (current release v255).`,
56
+ message: `SQLite schema v${status.dbVersion} (current release v256).`,
57
57
  hints: []
58
58
  };
59
59
  }
@@ -16,8 +16,8 @@ import { existsSync, readFileSync, statSync } from "node:fs";
16
16
  import { execSync } from "node:child_process";
17
17
  import { createHash } from "node:crypto";
18
18
  import semver from "semver";
19
- import { Command } from "commander";
20
19
  import { confirm } from "@inquirer/prompts";
20
+ import { Command } from "commander";
21
21
  //#region src/cli/commands/extension-marketplace.ts
22
22
  init_paths();
23
23
  const MANIFEST = "xopc.extension.json";
@@ -16,8 +16,8 @@ import { prepareUpdateGlobalDefaults } from "../../gateway/global-defaults-admin
16
16
  import { disconnectProvider } from "../../providers/provider-disconnect.js";
17
17
  import { colors } from "../utils/colors.js";
18
18
  import { runCliOAuthLogin } from "../utils/oauth-login.js";
19
- import { Command } from "commander";
20
19
  import { input } from "@inquirer/prompts";
20
+ import { Command } from "commander";
21
21
  //#region src/cli/commands/models.ts
22
22
  init_credentials();
23
23
  init_schema();
@@ -11,8 +11,8 @@ import { initWorkspace } from "../utils/init-workspace.js";
11
11
  import { setupModel } from "./onboard/model.js";
12
12
  import { getChannelConfigurators } from "./onboard/channels/registry.js";
13
13
  import { setupChannels } from "./onboard/channels/index.js";
14
- import { Command } from "commander";
15
14
  import { select } from "@inquirer/prompts";
15
+ import { Command } from "commander";
16
16
  //#region src/cli/commands/onboard.ts
17
17
  init_repository();
18
18
  init_schema();
@@ -7,8 +7,8 @@ import { DEFAULT_SECURITY_CONFIG, checkExtensionDirSafety, checkExtensionPathSaf
7
7
  import { SlotRegistry, getSlotRegistry, registerSlotType } from "../slots.js";
8
8
  import { ExtensionDiagnostics, ExtensionLoaderCacheImpl, getExtensionCache, getExtensionDiagnostics } from "../diagnostics.js";
9
9
  import { ExtensionHookRunner, createHookContext, isHookEvent } from "../hooks.js";
10
- import { registerExtensionCliProgram } from "./channel-helpers.js";
11
10
  import { defineChannelPluginEntry } from "./channel-entry.js";
11
+ import { registerExtensionCliProgram } from "./channel-helpers.js";
12
12
  import { lazyFunction, lazyModule } from "./lazy.js";
13
13
  import { createMockExtensionApi, createTestGateway } from "./testing.js";
14
14
  //#region src/extensions/sdk/index.ts
@@ -12,7 +12,8 @@ function voiceSettingsRevisions(config) {
12
12
  transcription: {
13
13
  stt: config.tools?.media?.audio,
14
14
  language: config.voice?.language,
15
- languageMode: config.voice?.languageMode
15
+ languageMode: config.voice?.languageMode,
16
+ input: config.voice?.input
16
17
  },
17
18
  speech: config.messages?.tts,
18
19
  conversation: config.voice?.realtime
@@ -1,3 +1,5 @@
1
+ import { getSessionMetadata } from "../../../storage/sqlite/session-read-repository.js";
2
+ import { init_session_repository } from "../../../storage/sqlite/session-repository.js";
1
3
  import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
2
4
  import { resolveEffectiveAgentProfile } from "../../../config/agent-profile.js";
3
5
  import { effectiveWorkspacePathForSession, projectWorkspacePath } from "../../../session/session-workspace.js";
@@ -12,6 +14,7 @@ import { buildReviewContext, resolveGitRoot } from "../../../review/review-git.j
12
14
  import "../../../chat-commands/index.js";
13
15
  //#region src/gateway/hono/routes/commands-skills.ts
14
16
  init_agent_scope();
17
+ init_session_repository();
15
18
  function parseMarketplaceProviderQuery(raw) {
16
19
  const v = raw?.trim().toLowerCase();
17
20
  if (v && isRegisteredProvider(v)) return v;
@@ -86,6 +89,10 @@ function registerCommandsSkillsRoutes(authenticated, deps) {
86
89
  });
87
90
  authenticated.get("/api/chat/skills", async (c) => {
88
91
  const conversationId = c.req.query("conversationId")?.trim();
92
+ if (conversationId && !getSessionMetadata(conversationId)) return c.json({
93
+ ok: false,
94
+ error: "Conversation not found"
95
+ }, 404);
89
96
  const agentId = c.req.query("agentId")?.trim() || resolveDefaultAgentId();
90
97
  const payload = conversationId ? await service.marketplace.getSessionSkillsApi(conversationId) : service.marketplace.getAgentSkillsApi(agentId);
91
98
  return c.json({
@@ -99,6 +106,10 @@ function registerCommandsSkillsRoutes(authenticated, deps) {
99
106
  ok: false,
100
107
  error: "Missing conversationId"
101
108
  }, 400);
109
+ if (!getSessionMetadata(conversationId)) return c.json({
110
+ ok: false,
111
+ error: "Conversation not found"
112
+ }, 404);
102
113
  const payload = await service.marketplace.getSessionWorkspaceTrustApi(conversationId);
103
114
  return c.json({
104
115
  ok: true,
@@ -120,6 +131,10 @@ function registerCommandsSkillsRoutes(authenticated, deps) {
120
131
  ok: false,
121
132
  error: "Expected { conversationId: string, trusted: boolean }"
122
133
  }, 400);
134
+ if (!getSessionMetadata(conversationId)) return c.json({
135
+ ok: false,
136
+ error: "Conversation not found"
137
+ }, 404);
123
138
  const payload = await service.marketplace.setSessionWorkspaceTrustApi(conversationId, body.trusted);
124
139
  return c.json({
125
140
  ok: true,
@@ -81,6 +81,9 @@ import "../infra/bus/index.js";
81
81
  import { collectMediaUrisFromMessages, deleteMediaUris } from "../media/session-references.js";
82
82
  import { AgentService } from "../agent/service.js";
83
83
  import { bootstrapApplicationStateSync } from "../bootstrap/application-state.js";
84
+ import { setPairingBroadcastSink } from "../channels/pairing/pairing-events.js";
85
+ import { registerClarificationChannelRuntime } from "./clarify-runtime.js";
86
+ import { ChannelManager } from "../channels/manager.js";
84
87
  import { ChatPreviewService } from "../chat-previews/service.js";
85
88
  import "../chat-previews/index.js";
86
89
  import "../config/index.js";
@@ -99,13 +102,8 @@ import { DiscussionSealer } from "../discussions/sealer.js";
99
102
  import "../discussions/index.js";
100
103
  import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
101
104
  import "../endpoint-tools/index.js";
102
- import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
103
- import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
104
- import { HomeIntelligenceHost } from "../home-intelligence/host.js";
105
- import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
106
105
  import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
107
106
  import { prepareAutomationAgentSession } from "./automation-agent-session.js";
108
- import { registerClarificationChannelRuntime } from "./clarify-runtime.js";
109
107
  import { stopTailscaleExposure } from "./tailscale-lifecycle.js";
110
108
  import { getGatewayFileSpaceService } from "./file-space-service.js";
111
109
  import { reconcileHomeIntelligenceAutomation } from "./home-intelligence-automation-reconciler.js";
@@ -119,8 +117,6 @@ import { WorkDiscoveryService } from "../work-discovery/service.js";
119
117
  import { buildVoiceMemoryContext } from "../voice/realtime/memory-context.js";
120
118
  import { buildVoicePersonaContext } from "../voice/realtime/persona-context.js";
121
119
  import { voiceMemoryBudget, voicePersonaBudget } from "../voice/realtime/conversation-context.js";
122
- import { setPairingBroadcastSink } from "../channels/pairing/pairing-events.js";
123
- import { ChannelManager } from "../channels/manager.js";
124
120
  import "../notes/index.js";
125
121
  import { buildWorkflowChildTools } from "../agent/workflow/workflow-child-tools.js";
126
122
  import { WorkflowRunService } from "../workflows/service/workflow-run-service.js";
@@ -160,12 +156,17 @@ import { GatewayReadiness } from "./startup-readiness.js";
160
156
  import { createGatewayStartupTrace } from "./startup-trace.js";
161
157
  import { GatewaySceneHost } from "./scenes/host.js";
162
158
  import { TaskCollaborationDelivery } from "../tasks/task-collaboration-delivery.js";
159
+ import { TaskMainUpdateExhaustedError } from "../tasks/task-main-update-retry.js";
163
160
  import { TaskMainUpdateDelivery } from "../tasks/task-main-update-delivery.js";
164
161
  import { allowsPersonalTaskNotification, personalReplyNotification, personalRunDelegated } from "../personal-agent/notifications.js";
165
162
  import { TaskMainUpdateDecisionService } from "../tasks/task-main-update-decision-service.js";
166
163
  import { selectTaskMainUpdateAttempt, submitAndConfirmTaskMainUpdate } from "../tasks/task-main-update-input.js";
167
164
  import { checkAppContextAccess, prepareAppContext } from "./service/app-context-access.js";
168
165
  import { applyAutomaticVoiceLanguage, inferProductLanguageFromEnvironment, initializeVoiceDefaults } from "../voice/language-profile.js";
166
+ import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
167
+ import { HomeIntelligenceHost } from "../home-intelligence/host.js";
168
+ import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
169
+ import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
169
170
  import crypto from "node:crypto";
170
171
  //#region src/gateway/service.ts
171
172
  init_session_repository();
@@ -879,6 +880,7 @@ var GatewayService = class {
879
880
  if (this.voiceRealtime.hasConversation(input.conversationId)) {
880
881
  const attempt = selectTaskMainUpdateAttempt(input.conversationId, input.clientMessageId, findSessionInput);
881
882
  if (attempt.kind === "completed") return Promise.resolve(true);
883
+ if (attempt.kind === "exhausted") throw new TaskMainUpdateExhaustedError();
882
884
  if (attempt.kind !== "new" || !attempt.clientMessageId) return Promise.resolve(false);
883
885
  return this.voiceRealtime.offerTaskUpdate({
884
886
  ...input,
@@ -1,10 +1,10 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
+ import { HomeAdviceBudgetExceededError, isHomeProseLocalized } from "./generator.js";
3
4
  import { homePatternKey } from "./strategy.js";
5
+ import { HomeAdvicePolicy } from "./policy.js";
4
6
  import { HomeIntelligenceRepository } from "./repository.js";
5
7
  import { HomeOpportunityApplicationService } from "./application-service.js";
6
- import { HomeAdvicePolicy } from "./policy.js";
7
- import { HomeAdviceBudgetExceededError, isHomeProseLocalized } from "./generator.js";
8
8
  import { buildHomeOpportunityNotification } from "./notification.js";
9
9
  import { createHash } from "node:crypto";
10
10
  //#region src/home-intelligence/host.ts
@@ -1,4 +1,4 @@
1
1
  import type { ProviderSetupProfile } from '@xopcai/gateway-contract';
2
- /** Plan usage is conservative until a vendor explicitly permits unattended execution. */
3
- export declare function isInteractiveOnlyProvider(provider: string, baseUrl?: string): boolean;
2
+ /** Provider identity and endpoint do not restrict background or unknown calls. */
3
+ export declare function isInteractiveOnlyProvider(_provider: string, _baseUrl?: string): boolean;
4
4
  export declare function getProviderSetupProfile(provider: string, name?: string, oauth?: boolean, baseUrl?: string): ProviderSetupProfile;