@xopcai/xopc 0.0.388 → 0.0.390

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 (644) hide show
  1. package/dist/browser-ext/_locales/en/messages.json +6 -1
  2. package/dist/browser-ext/_locales/zh_CN/messages.json +6 -1
  3. package/dist/browser-ext/dist/assets/{page-context-BeworyNB.js → page-context-A5RCibM_.js} +1 -1
  4. package/dist/browser-ext/dist/background.js +1 -1
  5. package/dist/browser-ext/dist/sidepanel.html +1 -1
  6. package/dist/browser-ext/dist/sidepanel.js +98 -53
  7. package/dist/browser-ext/manifest.json +1 -1
  8. package/dist/extensions/feishu/src/adapters/cli-login.js +3 -3
  9. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  10. package/dist/extensions/telegram/src/inbound-processor.js +2 -2
  11. package/dist/extensions/telegram/src/outbound-sender.js +1 -1
  12. package/dist/extensions/telegram/src/plugin.js +7 -5
  13. package/dist/extensions/telegram/xopc.extension.json +1 -1
  14. package/dist/extensions/weixin/src/api/api.js +2 -2
  15. package/dist/extensions/weixin/src/auth/accounts.js +12 -12
  16. package/dist/extensions/weixin/src/messaging/debug-mode.js +5 -5
  17. package/dist/extensions/weixin/src/messaging/inbound.js +11 -11
  18. package/dist/gateway/static/root/assets/{activity-store-CB2X4Gmu.js → activity-store-DGMAYkw8.js} +1 -1
  19. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-44LqtGte.js → agent-avatar-dicebear-B4AsZzJR.js} +1 -1
  20. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-9NUY1sO3.js +1 -0
  21. package/dist/gateway/static/root/assets/agent-plugin-dialog-CNc6ntzP.js +1 -0
  22. package/dist/gateway/static/root/assets/agents-QNY9Vkrf.js +77 -0
  23. package/dist/gateway/static/root/assets/{agents-admin-api-BkULgC6Q.js → agents-admin-api-DxdaiFWn.js} +1 -1
  24. package/dist/gateway/static/root/assets/app-management-settings-panel-DHRfLkYD.js +1 -0
  25. package/dist/gateway/static/root/assets/{appearance-settings-CYofu-su.js → appearance-settings-DtKSapgb.js} +1 -1
  26. package/dist/gateway/static/root/assets/{apps-page-CHjWvDjk.js → apps-page-B9kuRt_z.js} +1 -1
  27. package/dist/gateway/static/root/assets/{archive-plugin-De0ND0oA.js → archive-plugin-AgySTXp_.js} +1 -1
  28. package/dist/gateway/static/root/assets/{automations-page-BIF0skon.js → automations-page-D1o7ZtUW.js} +1 -1
  29. package/dist/gateway/static/root/assets/automations-workspace-BJenz0P1.js +6 -0
  30. package/dist/gateway/static/root/assets/{binary-plugins-Do535ZGW.js → binary-plugins-A1AXOsO6.js} +1 -1
  31. package/dist/gateway/static/root/assets/{block-editor-C_RD603p.js → block-editor-DUNLkLKF.js} +3 -3
  32. package/dist/gateway/static/root/assets/{browser-automation-inputs-B9M1RYTm.js → browser-automation-inputs-BvUC6OiW.js} +1 -1
  33. package/dist/gateway/static/root/assets/browser-automations-page-Dq2LlVMh.js +3 -0
  34. package/dist/gateway/static/root/assets/browser-settings-page-BOZ-1g51.js +3 -0
  35. package/dist/gateway/static/root/assets/{capabilities-CW389yo6.js → capabilities-BkCutK0V.js} +1 -1
  36. package/dist/gateway/static/root/assets/{capabilities-BX1rCiVm.js → capabilities-D61uSJPy.js} +1 -1
  37. package/dist/gateway/static/root/assets/capabilities-page-BDP6gzlv.js +2 -0
  38. package/dist/gateway/static/root/assets/capabilities-settings-panel-D6PL3Mfl.js +8 -0
  39. package/dist/gateway/static/root/assets/{capability-header-actions-Chuhscdb.js → capability-header-actions-D9uGs4Pw.js} +1 -1
  40. package/dist/gateway/static/root/assets/channels-xb7n8rwF.js +1 -0
  41. package/dist/gateway/static/root/assets/chat-terminal-dock-Dgn09YDs.js +36 -0
  42. package/dist/gateway/static/root/assets/{computer-settings-page-Af00Kjc0.js → computer-settings-page-C66P4ifT.js} +1 -1
  43. package/dist/gateway/static/root/assets/{connector-service-page-3W0_7-4L.js → connector-service-page-Dp35XdYf.js} +1 -1
  44. package/dist/gateway/static/root/assets/connectors-page-BHcRxYib.js +1 -0
  45. package/dist/gateway/static/root/assets/{date-picker-DBgZBmik.js → date-picker-CddHY982.js} +1 -1
  46. package/dist/gateway/static/root/assets/{dependency-picker-BDJ406kH.js → dependency-picker-Ob6BZTqv.js} +1 -1
  47. package/dist/gateway/static/root/assets/{desktop-pet-Do1XPn6U.js → desktop-pet-dmwCV-I4.js} +1 -1
  48. package/dist/gateway/static/root/assets/{desktop-pet-settings-LKeVh6OH.js → desktop-pet-settings-B-TBkZAZ.js} +1 -1
  49. package/dist/gateway/static/root/assets/device-pairing-wizard-SWHwRgG3.js +1 -0
  50. package/dist/gateway/static/root/assets/{directory-picker-path-field-BMLHoL6g.js → directory-picker-path-field-6VZa4fT1.js} +1 -1
  51. package/dist/gateway/static/root/assets/{extension-debug-page-B0wTBCx4.js → extension-debug-page-C0_njMva.js} +1 -1
  52. package/dist/gateway/static/root/assets/{extension-page-vR2r4uUB.js → extension-page-BeBLMFmW.js} +1 -1
  53. package/dist/gateway/static/root/assets/{extension-provider-CJZ5EVpQ.js → extension-provider-DWI0KAKT.js} +1 -1
  54. package/dist/gateway/static/root/assets/extension-settings-page-BiLUwoKx.js +1 -0
  55. package/dist/gateway/static/root/assets/{gateway-config-swr-D0tBjSgj.js → gateway-config-swr-CmYcOqhb.js} +1 -1
  56. package/dist/gateway/static/root/assets/{gateway-realtime-BnHraJ3O.js → gateway-realtime-Ci1Jst5g.js} +1 -1
  57. package/dist/gateway/static/root/assets/gateway-realtime-store-BMUiUQMk.js +1 -0
  58. package/dist/gateway/static/root/assets/gateway-settings-CzWT_v09.js +1 -0
  59. package/dist/gateway/static/root/assets/{gateway-startup-retry-C1DQsIH3.js → gateway-startup-retry-C-BG5M7H.js} +1 -1
  60. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-BM__yiMn.js → highlighted-body-KQOG7T2V-CsA7lCVc.js} +1 -1
  61. package/dist/gateway/static/root/assets/home-page-BeXJfxsg.js +2 -0
  62. package/dist/gateway/static/root/assets/image-generation-api-B_DqCwtV.js +1 -0
  63. package/dist/gateway/static/root/assets/imports-page-oAvAF9QS.js +1 -0
  64. package/dist/gateway/static/root/assets/index-W9ls-0Yd.css +1 -0
  65. package/dist/gateway/static/root/assets/index-xTL-vb51.js +260 -0
  66. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DpyqH2cP.js → keyboard-shortcuts-settings--MjYe-Pb.js} +1 -1
  67. package/dist/gateway/static/root/assets/{local-app-workbench-page-B4hIoxV8.js → local-app-workbench-page-DL33dtd7.js} +1 -1
  68. package/dist/gateway/static/root/assets/{local-apps-page-S7lUpENM.js → local-apps-page-DOa7mxjB.js} +1 -1
  69. package/dist/gateway/static/root/assets/{local-session-drafts-Be4BGM4Z.js → local-session-drafts-DAtLkTPg.js} +1 -1
  70. package/dist/gateway/static/root/assets/{locale-store-uRu_DsWm.js → locale-store-DMy9W6IG.js} +1 -1
  71. package/dist/gateway/static/root/assets/logs-page-C-GbTYsM.js +2 -0
  72. package/dist/gateway/static/root/assets/management-settings-C0TzuD3-.js +1 -0
  73. package/dist/gateway/static/root/assets/{markdown-view-CBjl-XEc.js → markdown-view-wyOHdXEg.js} +1 -1
  74. package/dist/gateway/static/root/assets/{media-plugins-BombFqsX.js → media-plugins-Pb2zr_-L.js} +1 -1
  75. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-BxyGGa4D.js +1 -0
  76. package/dist/gateway/static/root/assets/messages-O0BEUKnx.js +3 -0
  77. package/dist/gateway/static/root/assets/models-hub-cache-DdH1MODX.js +1 -0
  78. package/dist/gateway/static/root/assets/note-detail-panel-BFpEqskQ.js +5 -0
  79. package/dist/gateway/static/root/assets/{notes-api-BlGP533W.js → notes-api-CYt2pGsm.js} +1 -1
  80. package/dist/gateway/static/root/assets/notes-page-h-qqFJ6Z.js +8 -0
  81. package/dist/gateway/static/root/assets/{page-context-capture-button-C2bSXVbz.js → page-context-capture-button-3uj5EcQC.js} +1 -1
  82. package/dist/gateway/static/root/assets/personal-page-BGyW6cdt.js +1 -0
  83. package/dist/gateway/static/root/assets/{product-open-page-Cn16lm5l.js → product-open-page-hI13tPS1.js} +1 -1
  84. package/dist/gateway/static/root/assets/{product-preview-content-CowgeuoG.js → product-preview-content-lT_in0-Q.js} +1 -1
  85. package/dist/gateway/static/root/assets/project-detail-page-Baj7fQ7N.js +1 -0
  86. package/dist/gateway/static/root/assets/projects-page-D7DyQFU3.js +1 -0
  87. package/dist/gateway/static/root/assets/{registry-api-CYqA7bfl.js → registry-api-CgQrCqL6.js} +1 -1
  88. package/dist/gateway/static/root/assets/remote-access-hub-DU_d93Tm.js +1 -0
  89. package/dist/gateway/static/root/assets/{runtime-tools-api-zzoxjSuR.js → runtime-tools-api-D12qVKeC.js} +1 -1
  90. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-DOSPOfCU.js +1 -0
  91. package/dist/gateway/static/root/assets/scenes-page-swyUIF5A.js +2 -0
  92. package/dist/gateway/static/root/assets/{schema-form-I6pzJJzg.js → schema-form-CwOFgsyh.js} +1 -1
  93. package/dist/gateway/static/root/assets/{send-session-input-C293-Hbx.js → send-session-input-nH8Cw0US.js} +1 -1
  94. package/dist/gateway/static/root/assets/{session-api-CzVTrG8n.js → session-api-B9HrwF-c.js} +1 -1
  95. package/dist/gateway/static/root/assets/session-manager-aXqXuqDX.js +16 -0
  96. package/dist/gateway/static/root/assets/sessions-page-CI_PJmlX.js +1 -0
  97. package/dist/gateway/static/root/assets/settings-advanced-gate-DCVaeBLW.js +1 -0
  98. package/dist/gateway/static/root/assets/{settings-page-Dy5oQDbx.js → settings-page-BN70wE6R.js} +1 -1
  99. package/dist/gateway/static/root/assets/setup-status-panel-CHzcVRi-.js +1 -0
  100. package/dist/gateway/static/root/assets/{share-link-dialog-BKGI8Kr0.js → share-link-dialog-B1TDyhPt.js} +1 -1
  101. package/dist/gateway/static/root/assets/{share-preview-page-BF2WaO43.js → share-preview-page-Br-eAZaP.js} +1 -1
  102. package/dist/gateway/static/root/assets/{shares-api-B0HlMAzi.js → shares-api-Bl1ZBh5S.js} +1 -1
  103. package/dist/gateway/static/root/assets/shares-settings-jgCC_E4Y.js +1 -0
  104. package/dist/gateway/static/root/assets/{skill-api-RIjxQs-Y.js → skill-api-ClUw3SRC.js} +1 -1
  105. package/dist/gateway/static/root/assets/{skill-reload-api-CEJx5rPd.js → skill-reload-api--1BfIPzb.js} +1 -1
  106. package/dist/gateway/static/root/assets/skills-page-C9oRZSuL.js +2 -0
  107. package/dist/gateway/static/root/assets/{system-settings-panel-C8aLy8T_.js → system-settings-panel-tWrqu7ai.js} +1 -1
  108. package/dist/gateway/static/root/assets/{task-detail-page-o1O2IDVP.js → task-detail-page-BYRW7Rrr.js} +2 -2
  109. package/dist/gateway/static/root/assets/{task-expandable-content-C9ohICpw.js → task-expandable-content-D2t4ahzR.js} +1 -1
  110. package/dist/gateway/static/root/assets/{theme-store-BUfzeDvL.js → theme-store-BBLjE0fi.js} +1 -1
  111. package/dist/gateway/static/root/assets/{tracing-settings-page-C2q5B3Kp.js → tracing-settings-page-5ATxQH5c.js} +1 -1
  112. package/dist/gateway/static/root/assets/{tunnel-api-JkDu1wiC.js → tunnel-api-CF1Qh4wU.js} +1 -1
  113. package/dist/gateway/static/root/assets/{usage-page-B8K6Y4ro.js → usage-page-CuEHzXil.js} +1 -1
  114. package/dist/gateway/static/root/assets/{use-autosave-DgbCgsao.js → use-autosave-tY3keIbm.js} +1 -1
  115. package/dist/gateway/static/root/assets/{use-composer-attachments-rgW7h4sD.js → use-composer-attachments-CXsocZjt.js} +1 -1
  116. package/dist/gateway/static/root/assets/{use-file-preview-expanded-DSKIxfz9.js → use-file-preview-expanded-CEsxnDnQ.js} +2 -2
  117. package/dist/gateway/static/root/assets/user-model-page-Dvt5TIZ6.js +2 -0
  118. package/dist/gateway/static/root/assets/{voice-api-key-field-4AIkbm9R.js → voice-api-key-field-COTNLUU3.js} +1 -1
  119. package/dist/gateway/static/root/assets/{voice-config-api-Kw1pYlLN.js → voice-config-api-DrxBjSja.js} +1 -1
  120. package/dist/gateway/static/root/assets/voice-transcribe-api-B47j0_xA.js +1 -0
  121. package/dist/gateway/static/root/assets/{work-discovery-overlay-BshsEDRO.js → work-discovery-overlay-PByMJrhV.js} +1 -1
  122. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CRG3paWy.js → workflow-run-setup-panel-CSUkMo63.js} +2 -2
  123. package/dist/gateway/static/root/assets/{workflows-page-c-AoSVzm.js → workflows-page-BUDvFo3R.js} +3 -3
  124. package/dist/gateway/static/root/assets/{workspace-api-JWHOFos6.js → workspace-api-Bmx1O449.js} +2 -2
  125. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-PDSIicr1.js → xopc-cloud-account-card-DVsAbvwP.js} +1 -1
  126. package/dist/gateway/static/root/index.html +28 -27
  127. package/dist/package.js +1 -1
  128. package/dist/packages/gateway-contract/src/clarifications.js +79 -2
  129. package/dist/packages/gateway-contract/src/discussions.js +3 -2
  130. package/dist/packages/gateway-contract/src/index.js +4 -0
  131. package/dist/packages/gateway-contract/src/provider-setup.js +6 -0
  132. package/dist/packages/gateway-contract/src/recording-outcome.js +6 -0
  133. package/dist/packages/image-providers/src/catalog.js +10 -0
  134. package/dist/packages/image-providers/src/execute.js +5 -1
  135. package/dist/packages/image-providers/src/validation.js +19 -1
  136. package/dist/packages/realtime-protocol/src/voice.js +13 -2
  137. package/dist/src/agent/agent-manager.js +25 -21
  138. package/dist/src/agent/agent-scope.js +2 -2
  139. package/dist/src/agent/background-review/prompts.js +5 -1
  140. package/dist/src/agent/background-review/run-background-review.d.ts +0 -1
  141. package/dist/src/agent/background-review/run-background-review.js +60 -14
  142. package/dist/src/agent/child-agent-factory.js +1 -1
  143. package/dist/src/agent/coding/repository-instructions.js +1 -1
  144. package/dist/src/agent/context/coordinator.js +2 -2
  145. package/dist/src/agent/context/execution-context.js +4 -4
  146. package/dist/src/agent/context/execution-scope.js +1 -1
  147. package/dist/src/agent/context/project-context.js +3 -3
  148. package/dist/src/agent/data-acquisition/service.js +1 -1
  149. package/dist/src/agent/embedded/codemode-extension.js +1 -1
  150. package/dist/src/agent/embedded/run-for-session.js +31 -8
  151. package/dist/src/agent/embedded/run-turn.js +26 -14
  152. package/dist/src/agent/embedded/session-runner.d.ts +4 -3
  153. package/dist/src/agent/embedded/session-runner.js +9 -4
  154. package/dist/src/agent/embedded/session-tool-result-guard.js +2 -2
  155. package/dist/src/agent/embedded/tool-result-truncation.js +1 -1
  156. package/dist/src/agent/embedded/xopc-stream-bridge.js +3 -0
  157. package/dist/src/agent/embedded/xopc-tools-bridge.js +1 -1
  158. package/dist/src/agent/external-tools/cliProvider.js +3 -3
  159. package/dist/src/agent/external-tools/composio-provider.js +2 -2
  160. package/dist/src/agent/external-tools/endpoint-provider.js +4 -4
  161. package/dist/src/agent/external-tools/gateway-tools.js +2 -2
  162. package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
  163. package/dist/src/agent/image/generation/runtime.js +13 -15
  164. package/dist/src/agent/image/index.js +1 -1
  165. package/dist/src/agent/image/load-image-media.js +1 -1
  166. package/dist/src/agent/image/understanding/runtime.js +5 -0
  167. package/dist/src/agent/inbound/attachment-pipeline.js +3 -3
  168. package/dist/src/agent/inbound/inbound-loop.d.ts +1 -15
  169. package/dist/src/agent/inbound/inbound-loop.js +7 -2
  170. package/dist/src/agent/index.js +3 -3
  171. package/dist/src/agent/mcp/connection-drafts.d.ts +50 -0
  172. package/dist/src/agent/mcp/connection-drafts.js +278 -0
  173. package/dist/src/agent/mcp/connection-errors.d.ts +3 -0
  174. package/dist/src/agent/mcp/connection-errors.js +32 -0
  175. package/dist/src/agent/mcp/connection-setup.d.ts +7 -2
  176. package/dist/src/agent/mcp/connection-setup.js +45 -23
  177. package/dist/src/agent/mcp/credential-store.d.ts +6 -0
  178. package/dist/src/agent/mcp/credential-store.js +24 -0
  179. package/dist/src/agent/mcp/native-mcp.d.ts +6 -1
  180. package/dist/src/agent/mcp/native-mcp.js +6 -0
  181. package/dist/src/agent/mcp/tool-catalog.d.ts +7 -2
  182. package/dist/src/agent/mcp/tool-catalog.js +25 -15
  183. package/dist/src/agent/memory/compaction.js +5 -1
  184. package/dist/src/agent/memory/context-budget.js +1 -1
  185. package/dist/src/agent/memory/context-recovery.js +1 -1
  186. package/dist/src/agent/memory/idle-compaction-scheduler.js +3 -1
  187. package/dist/src/agent/memory/index.js +1 -1
  188. package/dist/src/agent/models/manager.d.ts +1 -0
  189. package/dist/src/agent/models/manager.js +4 -2
  190. package/dist/src/agent/orchestration/agent-orchestrator.d.ts +1 -6
  191. package/dist/src/agent/orchestration/agent-orchestrator.js +5 -0
  192. package/dist/src/agent/orchestration/llm-turn-retry.js +1 -1
  193. package/dist/src/agent/prompt/response-language.js +1 -1
  194. package/dist/src/agent/prompt/service-prompt-builder.js +3 -3
  195. package/dist/src/agent/sandbox/exec-policy.js +1 -1
  196. package/dist/src/agent/service/direct-turn-helpers.js +4 -4
  197. package/dist/src/agent/service/process-direct-one-shot.js +5 -0
  198. package/dist/src/agent/service/process-direct-streaming.d.ts +1 -0
  199. package/dist/src/agent/service/process-direct-streaming.js +23 -7
  200. package/dist/src/agent/service/webchat-tts.js +2 -2
  201. package/dist/src/agent/service.js +21 -21
  202. package/dist/src/agent/session/session-config-service.js +3 -3
  203. package/dist/src/agent/session/session-hydrator.js +1 -1
  204. package/dist/src/agent/session/session-inspector.js +1 -1
  205. package/dist/src/agent/skills/filesystem-watcher.js +1 -1
  206. package/dist/src/agent/skills/hub-pull.js +2 -2
  207. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +1 -1
  208. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +1 -1
  209. package/dist/src/agent/source-context/index.js +1 -1
  210. package/dist/src/agent/tasks/task-judge-service.js +7 -7
  211. package/dist/src/agent/tools/clarify-tool.d.ts +2 -3
  212. package/dist/src/agent/tools/clarify-tool.js +15 -9
  213. package/dist/src/agent/tools/cli-clarify.d.ts +0 -3
  214. package/dist/src/agent/tools/cli-clarify.js +18 -32
  215. package/dist/src/agent/tools/create-share-tool.js +3 -3
  216. package/dist/src/agent/tools/dataBatch.js +1 -1
  217. package/dist/src/agent/tools/delegate-tool.js +3 -3
  218. package/dist/src/agent/tools/executor.js +1 -1
  219. package/dist/src/agent/tools/factory.js +19 -19
  220. package/dist/src/agent/tools/image-generate-tool.js +8 -4
  221. package/dist/src/agent/tools/index.js +6 -6
  222. package/dist/src/agent/tools/list-dir.js +1 -1
  223. package/dist/src/agent/tools/personal-attention-tool.js +2 -2
  224. package/dist/src/agent/tools/personal-request-result-tool.js +1 -1
  225. package/dist/src/agent/tools/personal-request-tool.js +4 -4
  226. package/dist/src/agent/tools/personal-result-tool.js +1 -1
  227. package/dist/src/agent/tools/personal-task-tool.d.ts +4 -4
  228. package/dist/src/agent/tools/personal-task-tool.js +6 -6
  229. package/dist/src/agent/tools/publish-artifacts.js +2 -2
  230. package/dist/src/agent/tools/read.js +2 -2
  231. package/dist/src/agent/tools/review-workspace.js +1 -1
  232. package/dist/src/agent/tools/send-media.js +1 -1
  233. package/dist/src/agent/tools/skills-tools.js +1 -1
  234. package/dist/src/agent/tools/task-collaboration-tool.js +3 -3
  235. package/dist/src/agent/tools/tts-tool.js +1 -1
  236. package/dist/src/agent/tools/user-context-tool.js +1 -1
  237. package/dist/src/agent/tools/write.js +2 -2
  238. package/dist/src/agent/tools/xopc-use-tool.js +4 -4
  239. package/dist/src/agent/transcript/index.js +2 -2
  240. package/dist/src/agent/transcript/transcript-hygiene.js +2 -2
  241. package/dist/src/agent/workflow/subagent-runner.js +1 -1
  242. package/dist/src/agent-config/resolver.js +5 -0
  243. package/dist/src/agent-config/schema.d.ts +26 -6
  244. package/dist/src/agent-config/schema.js +2 -0
  245. package/dist/src/agent-matching/delegation-service.js +1 -1
  246. package/dist/src/ai-assist/text-assist.js +6 -17
  247. package/dist/src/auth/oauth/xopc-cloud.js +2 -2
  248. package/dist/src/auth/sync-provider-auth.js +1 -1
  249. package/dist/src/automations/capabilities/write.d.ts +2 -2
  250. package/dist/src/automations/domain/index.js +1 -1
  251. package/dist/src/automations/domain/validation.d.ts +6 -6
  252. package/dist/src/automations/draft/automation-draft-service.js +1 -1
  253. package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -2
  254. package/dist/src/automations/index.js +2 -2
  255. package/dist/src/automations/service/action-executor.js +3 -1
  256. package/dist/src/browser/native-messaging-host.js +1 -1
  257. package/dist/src/capabilities/store-connector.js +2 -2
  258. package/dist/src/channels/attachments/voice-stt-webchat.js +2 -2
  259. package/dist/src/channels/index.js +3 -3
  260. package/dist/src/channels/manager.js +1 -1
  261. package/dist/src/channels/outbound-sender.js +1 -1
  262. package/dist/src/channels/pairing/allow-from-file.js +9 -9
  263. package/dist/src/channels/pairing/pairing-store.js +6 -6
  264. package/dist/src/chat-commands/builtins/config.js +4 -4
  265. package/dist/src/chat-commands/builtins/session.js +1 -1
  266. package/dist/src/chat-commands/builtins/thinking.js +1 -1
  267. package/dist/src/chat-commands/builtins/tts.js +1 -1
  268. package/dist/src/chat-commands/context.js +2 -2
  269. package/dist/src/chat-commands/index.js +3 -3
  270. package/dist/src/cli/commands/agent.js +7 -7
  271. package/dist/src/cli/commands/channels.js +1 -1
  272. package/dist/src/cli/commands/config.js +1 -1
  273. package/dist/src/cli/commands/connectors.js +2 -2
  274. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +1 -1
  275. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  276. package/dist/src/cli/commands/doctor/checks/gateway-health.js +1 -1
  277. package/dist/src/cli/commands/extension-dev.js +1 -1
  278. package/dist/src/cli/commands/extension-marketplace.js +2 -2
  279. package/dist/src/cli/commands/extension.js +2 -2
  280. package/dist/src/cli/commands/image.js +1 -1
  281. package/dist/src/cli/commands/init.js +1 -1
  282. package/dist/src/cli/commands/mcp.js +1 -1
  283. package/dist/src/cli/commands/models.js +3 -3
  284. package/dist/src/cli/commands/onboard/channels/registry.js +1 -1
  285. package/dist/src/cli/commands/onboard/model.d.ts +1 -1
  286. package/dist/src/cli/commands/onboard/model.js +21 -2
  287. package/dist/src/cli/commands/onboard.js +2 -2
  288. package/dist/src/cli/commands/project.js +1 -1
  289. package/dist/src/cli/commands/skills.js +2 -2
  290. package/dist/src/cli/commands/tunnel.js +4 -4
  291. package/dist/src/cli/extension-cli-register.js +6 -6
  292. package/dist/src/cli/utils/gateway-client.js +1 -1
  293. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  294. package/dist/src/cli/utils/session.js +1 -1
  295. package/dist/src/computer/runtime.js +1 -1
  296. package/dist/src/config/agent-model-intents.js +4 -1
  297. package/dist/src/config/index.js +5 -5
  298. package/dist/src/config/loader.js +2 -2
  299. package/dist/src/config/models-json.js +1 -1
  300. package/dist/src/config/schema.d.ts +18 -6
  301. package/dist/src/config/schema.js +18 -8
  302. package/dist/src/connectors/cli/authorization.js +1 -1
  303. package/dist/src/connectors/cli/runtime.js +1 -1
  304. package/dist/src/connectors/composio-sessions.js +1 -1
  305. package/dist/src/connectors/composio.js +1 -1
  306. package/dist/src/connectors/connected-source-ingestion.js +4 -4
  307. package/dist/src/connectors/connected-source-understanding.js +4 -4
  308. package/dist/src/connectors/connection-recovery-service.js +4 -4
  309. package/dist/src/connectors/content-enrichment.js +1 -1
  310. package/dist/src/connectors/health.js +1 -1
  311. package/dist/src/connectors/learning-coordinator.js +1 -1
  312. package/dist/src/discussions/analyzer.d.ts +2 -0
  313. package/dist/src/discussions/analyzer.js +38 -9
  314. package/dist/src/discussions/audio-clip.d.ts +3 -0
  315. package/dist/src/discussions/audio-clip.js +72 -0
  316. package/dist/src/discussions/live-worker.js +4 -2
  317. package/dist/src/discussions/long-review.d.ts +17 -0
  318. package/dist/src/discussions/long-review.js +278 -0
  319. package/dist/src/discussions/media-timeline.d.ts +21 -0
  320. package/dist/src/discussions/media-timeline.js +134 -0
  321. package/dist/src/discussions/organizer-worker.d.ts +4 -1
  322. package/dist/src/discussions/organizer-worker.js +17 -12
  323. package/dist/src/discussions/organizer.js +2 -0
  324. package/dist/src/discussions/processing.d.ts +43 -0
  325. package/dist/src/discussions/processing.js +125 -0
  326. package/dist/src/discussions/recording.js +202 -42
  327. package/dist/src/discussions/recordingJobs.js +2 -0
  328. package/dist/src/discussions/repository.js +4 -2
  329. package/dist/src/discussions/review.d.ts +8 -0
  330. package/dist/src/discussions/review.js +183 -0
  331. package/dist/src/discussions/sealer.d.ts +7 -1
  332. package/dist/src/discussions/sealer.js +164 -88
  333. package/dist/src/discussions/service.d.ts +7 -1
  334. package/dist/src/discussions/service.js +51 -15
  335. package/dist/src/discussions/types.d.ts +2 -1
  336. package/dist/src/endpoint-tools/index.js +1 -1
  337. package/dist/src/endpoint-tools/runtime.js +2 -2
  338. package/dist/src/extensions/activation-context.js +3 -3
  339. package/dist/src/extensions/agent-plugins/auth.js +1 -1
  340. package/dist/src/extensions/agent-plugins/credentials.js +1 -1
  341. package/dist/src/extensions/agent-plugins/source-http-fetch.js +1 -1
  342. package/dist/src/extensions/api.js +4 -4
  343. package/dist/src/extensions/bundled-extension-activation.js +1 -1
  344. package/dist/src/extensions/index.js +3 -3
  345. package/dist/src/extensions/install.js +1 -1
  346. package/dist/src/extensions/loader.js +2 -2
  347. package/dist/src/extensions/sdk/index.js +1 -1
  348. package/dist/src/extensions/sdk/media.js +1 -1
  349. package/dist/src/extensions/update.js +1 -1
  350. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  351. package/dist/src/gateway/agents-admin.js +1 -1
  352. package/dist/src/gateway/chat-stream/mapper.js +2 -2
  353. package/dist/src/gateway/chat-stream/protocol.d.ts +2 -3
  354. package/dist/src/gateway/clarify-runtime.d.ts +2 -0
  355. package/dist/src/gateway/clarify-runtime.js +4 -1
  356. package/dist/src/gateway/device-routes.js +2 -2
  357. package/dist/src/gateway/ephemeral-clarification-waiter.d.ts +2 -1
  358. package/dist/src/gateway/ephemeral-clarification-waiter.js +19 -6
  359. package/dist/src/gateway/file-path-classifier.js +2 -2
  360. package/dist/src/gateway/global-defaults-admin.d.ts +3 -1
  361. package/dist/src/gateway/global-defaults-admin.js +15 -3
  362. package/dist/src/gateway/hono/app.js +3 -3
  363. package/dist/src/gateway/hono/lib/config-payload.d.ts +12 -3
  364. package/dist/src/gateway/hono/lib/config-payload.js +6 -4
  365. package/dist/src/gateway/hono/lib/config-write-lock.d.ts +2 -0
  366. package/dist/src/gateway/hono/lib/config-write-lock.js +14 -0
  367. package/dist/src/gateway/hono/lib/voice-settings-revisions.d.ts +5 -0
  368. package/dist/src/gateway/hono/lib/voice-settings-revisions.js +23 -0
  369. package/dist/src/gateway/hono/routes/agent-stream.js +4 -9
  370. package/dist/src/gateway/hono/routes/agents.js +1 -1
  371. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  372. package/dist/src/gateway/hono/routes/commands-skills.js +4 -4
  373. package/dist/src/gateway/hono/routes/config-patch/gateway.js +1 -1
  374. package/dist/src/gateway/hono/routes/config-patch/misc.js +12 -5
  375. package/dist/src/gateway/hono/routes/config.js +19 -5
  376. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  377. package/dist/src/gateway/hono/routes/context-sources.js +2 -2
  378. package/dist/src/gateway/hono/routes/discussions.js +63 -1
  379. package/dist/src/gateway/hono/routes/endpoint-tools.js +1 -1
  380. package/dist/src/gateway/hono/routes/global-defaults.js +8 -1
  381. package/dist/src/gateway/hono/routes/home.js +1 -1
  382. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -1
  383. package/dist/src/gateway/hono/routes/mcp.js +74 -7
  384. package/dist/src/gateway/hono/routes/memory-learning.js +3 -3
  385. package/dist/src/gateway/hono/routes/models.js +17 -9
  386. package/dist/src/gateway/hono/routes/notes.js +1 -1
  387. package/dist/src/gateway/hono/routes/personal-agent.js +1 -1
  388. package/dist/src/gateway/hono/routes/projects.js +3 -3
  389. package/dist/src/gateway/hono/routes/provider-setup.d.ts +3 -0
  390. package/dist/src/gateway/hono/routes/provider-setup.js +106 -0
  391. package/dist/src/gateway/hono/routes/runtime-tools.js +1 -1
  392. package/dist/src/gateway/hono/routes/session-command-handler.js +2 -2
  393. package/dist/src/gateway/hono/routes/session-input-handler.js +5 -5
  394. package/dist/src/gateway/hono/routes/sessions.js +3 -3
  395. package/dist/src/gateway/hono/routes/shares.js +2 -2
  396. package/dist/src/gateway/hono/routes/side-chats.js +5 -4
  397. package/dist/src/gateway/hono/routes/site-shares.js +1 -1
  398. package/dist/src/gateway/hono/routes/status.js +2 -0
  399. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  400. package/dist/src/gateway/hono/routes/user-model-refresh.js +1 -1
  401. package/dist/src/gateway/hono/routes/user-model.js +7 -7
  402. package/dist/src/gateway/hono/routes/voice.js +30 -17
  403. package/dist/src/gateway/hono/routes/workflows.js +1 -1
  404. package/dist/src/gateway/index.js +1 -1
  405. package/dist/src/gateway/lock.js +11 -11
  406. package/dist/src/gateway/media-access.js +1 -1
  407. package/dist/src/gateway/mobile-privacy.js +2 -2
  408. package/dist/src/gateway/ports.js +6 -6
  409. package/dist/src/gateway/provider-model-setup.d.ts +4 -0
  410. package/dist/src/gateway/provider-model-setup.js +56 -0
  411. package/dist/src/gateway/run-loop.js +1 -1
  412. package/dist/src/gateway/scenes/mailContext.js +1 -1
  413. package/dist/src/gateway/scenes/slackThreadSource.js +1 -1
  414. package/dist/src/gateway/server.js +1 -1
  415. package/dist/src/gateway/service/agent-runner.d.ts +5 -4
  416. package/dist/src/gateway/service/agent-runner.js +35 -19
  417. package/dist/src/gateway/service/config-coordinator.d.ts +619 -1
  418. package/dist/src/gateway/service/config-coordinator.js +38 -26
  419. package/dist/src/gateway/service/marketplace-service.js +2 -2
  420. package/dist/src/gateway/service/run-gateway-agent.js +4 -4
  421. package/dist/src/gateway/service/session-command-service.js +2 -2
  422. package/dist/src/gateway/service.d.ts +6 -3
  423. package/dist/src/gateway/service.js +52 -51
  424. package/dist/src/gateway/session-context-summary.js +4 -4
  425. package/dist/src/gateway/side-chat/run-service.d.ts +2 -1
  426. package/dist/src/gateway/side-chat/run-service.js +6 -3
  427. package/dist/src/gateway/side-chat/types.d.ts +3 -3
  428. package/dist/src/gateway/workspace-editor-path.js +2 -2
  429. package/dist/src/gateway/xopc-cloud-capability-setup.d.ts +2 -2
  430. package/dist/src/gateway/xopc-cloud-capability-setup.js +7 -4
  431. package/dist/src/home-intelligence/generator.js +2 -2
  432. package/dist/src/home-intelligence/host.js +2 -2
  433. package/dist/src/imports/compatibility.js +1 -1
  434. package/dist/src/imports/inventory.js +3 -3
  435. package/dist/src/imports/productImport.js +2 -2
  436. package/dist/src/imports/runtime.js +1 -1
  437. package/dist/src/infra/gateway-processes.js +2 -2
  438. package/dist/src/infra/path-env.js +3 -3
  439. package/dist/src/infra/update-global.js +9 -9
  440. package/dist/src/knowledge/connected-knowledge-pipeline.js +2 -2
  441. package/dist/src/knowledge/index.js +1 -1
  442. package/dist/src/knowledge-memory/repository.js +1 -1
  443. package/dist/src/local-apps/service.js +2 -2
  444. package/dist/src/mcp/gateway-http-client.js +1 -1
  445. package/dist/src/media-shared/http/provider-http.d.ts +0 -6
  446. package/dist/src/media-shared/http/provider-http.js +5 -4
  447. package/dist/src/media-understanding/openai-compatible-audio.js +1 -1
  448. package/dist/src/media-understanding/runner.d.ts +0 -28
  449. package/dist/src/media-understanding/runner.js +4 -0
  450. package/dist/src/memory-learning/service.js +3 -2
  451. package/dist/src/memory-learning/source-learning.js +4 -4
  452. package/dist/src/memory-learning/task-receipts.js +1 -1
  453. package/dist/src/notes/agent-context.js +4 -4
  454. package/dist/src/notes/index.js +1 -1
  455. package/dist/src/notes/service.js +3 -3
  456. package/dist/src/personal-agent/capability-service.js +2 -2
  457. package/dist/src/personal-agent/proactivity/routes.js +1 -1
  458. package/dist/src/personal-agent/proactivity/service.js +7 -7
  459. package/dist/src/personal-agent/prompt-context.js +7 -7
  460. package/dist/src/personal-agent/prompts.js +1 -1
  461. package/dist/src/personal-agent/reply-composer.js +9 -9
  462. package/dist/src/personal-agent/request-delivery.js +2 -2
  463. package/dist/src/personal-agent/request-service.js +6 -6
  464. package/dist/src/personal-agent/result-reader.js +1 -1
  465. package/dist/src/personal-agent/service.js +1 -1
  466. package/dist/src/personal-agent/task-cancel.js +1 -1
  467. package/dist/src/platform/client.d.ts +1 -1
  468. package/dist/src/platform/contracts.d.ts +1 -1
  469. package/dist/src/platform/index.js +1 -1
  470. package/dist/src/projects/index.js +1 -1
  471. package/dist/src/projects/project-agent-suggestion.js +1 -1
  472. package/dist/src/projects/project-service.js +1 -1
  473. package/dist/src/projects/project-skill-service.js +2 -2
  474. package/dist/src/projects/workspace.js +1 -1
  475. package/dist/src/providers/env-keys.js +3 -0
  476. package/dist/src/providers/extension-stream-bridge.js +3 -0
  477. package/dist/src/providers/index.js +15 -0
  478. package/dist/src/providers/model-call.d.ts +5 -2
  479. package/dist/src/providers/model-call.js +13 -2
  480. package/dist/src/providers/model-reference-auditor.js +2 -1
  481. package/dist/src/providers/model-registry.js +1 -1
  482. package/dist/src/providers/model-response.js +1 -1
  483. package/dist/src/providers/model-usage.d.ts +15 -0
  484. package/dist/src/providers/model-usage.js +50 -0
  485. package/dist/src/providers/presentation.js +8 -0
  486. package/dist/src/providers/setup/engine.d.ts +37 -0
  487. package/dist/src/providers/setup/engine.js +177 -0
  488. package/dist/src/providers/setup/profiles.d.ts +4 -0
  489. package/dist/src/providers/setup/profiles.js +94 -0
  490. package/dist/src/providers/setup/voice.d.ts +23 -0
  491. package/dist/src/providers/setup/voice.js +234 -0
  492. package/dist/src/realtime/runtime.js +1 -1
  493. package/dist/src/remote-access/exposure-manager.js +1 -1
  494. package/dist/src/routing/agent-session-key.js +1 -1
  495. package/dist/src/scenes/agentExecutor.d.ts +1 -0
  496. package/dist/src/scenes/agentExecutor.js +5 -0
  497. package/dist/src/scenes/execution.d.ts +1 -1
  498. package/dist/src/scenes/taskFollowUp/agentExecutor.js +4 -4
  499. package/dist/src/scenes/taskFollowUp/contracts.d.ts +2 -2
  500. package/dist/src/scenes/taskFollowUp/resources.js +2 -2
  501. package/dist/src/scenes/taskFollowUp/service.d.ts +5 -5
  502. package/dist/src/scenes/taskFollowUp/service.js +6 -6
  503. package/dist/src/scenes/templates.d.ts +2 -2
  504. package/dist/src/session/index.js +2 -2
  505. package/dist/src/session/init-session-turn.js +1 -1
  506. package/dist/src/session/resolve-session.js +1 -1
  507. package/dist/src/session/store.js +5 -5
  508. package/dist/src/session/thinking-resolve.js +1 -1
  509. package/dist/src/share/hosted-session-share.js +2 -2
  510. package/dist/src/share/session-share-service.js +1 -1
  511. package/dist/src/share/share-store.js +1 -1
  512. package/dist/src/share/share-thumbnail.js +1 -1
  513. package/dist/src/share/site-share-store.js +1 -1
  514. package/dist/src/storage/sqlite/clarification-wait-repository.d.ts +3 -5
  515. package/dist/src/storage/sqlite/clarification-wait-repository.js +48 -28
  516. package/dist/src/storage/sqlite/connection.js +9 -9
  517. package/dist/src/storage/sqlite/migrations/253_discussion_processing_recovery.sql +20 -0
  518. package/dist/src/storage/sqlite/migrations/254_discussion_annotations.sql +17 -0
  519. package/dist/src/storage/sqlite/migrations/255_discussion_chapter_progress.sql +10 -0
  520. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  521. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  522. package/dist/src/storage/sqlite/schema.js +1 -1
  523. package/dist/src/tasks/capabilities/management.d.ts +2 -2
  524. package/dist/src/tasks/capabilities/read.js +2 -2
  525. package/dist/src/tasks/capabilities/relations.d.ts +6 -6
  526. package/dist/src/tasks/capabilities/write.d.ts +6 -6
  527. package/dist/src/tasks/capabilities/write.js +1 -1
  528. package/dist/src/tasks/home-query-service.js +2 -2
  529. package/dist/src/tasks/index.js +4 -4
  530. package/dist/src/tasks/task-allocation-service.js +5 -5
  531. package/dist/src/tasks/task-application-service.js +6 -6
  532. package/dist/src/tasks/task-collaboration-delivery.js +1 -1
  533. package/dist/src/tasks/task-context-assembler.js +2 -2
  534. package/dist/src/tasks/task-handoff-service.js +1 -1
  535. package/dist/src/tasks/task-handoff.js +5 -5
  536. package/dist/src/tasks/task-main-update-decision-service.js +3 -3
  537. package/dist/src/tasks/task-model-call.js +1 -1
  538. package/dist/src/tasks/task-research-result.js +4 -4
  539. package/dist/src/tasks/task-result-delivery-repository.js +1 -1
  540. package/dist/src/tasks/task-result-delivery-service.js +2 -2
  541. package/dist/src/tasks/task-run-coordinator.js +4 -4
  542. package/dist/src/tasks/task-run-dispatcher.js +1 -1
  543. package/dist/src/tui/backends/embedded-backend.js +13 -13
  544. package/dist/src/tui/backends/gateway-realtime-backend.js +2 -2
  545. package/dist/src/tui/extension-host/load-extensions.js +2 -2
  546. package/dist/src/tui/tui-agent-events.js +1 -1
  547. package/dist/src/tui/tui-commands.js +5 -5
  548. package/dist/src/tui/tui-picker-overlay.js +1 -1
  549. package/dist/src/tui/tui-skills-autocomplete.js +1 -1
  550. package/dist/src/tui/tui-startup-resources.js +4 -4
  551. package/dist/src/tui/tui.js +6 -6
  552. package/dist/src/tunnel/gateway-lifecycle.js +1 -1
  553. package/dist/src/usage/recorder.js +2 -1
  554. package/dist/src/usage/scenario-registry.js +128 -123
  555. package/dist/src/user-context/access-policy.js +2 -2
  556. package/dist/src/user-context/config.d.ts +2 -2
  557. package/dist/src/user-model/bootstrap.js +1 -1
  558. package/dist/src/user-model/capture/executor.js +1 -1
  559. package/dist/src/user-model/capture/semantic.d.ts +8 -1
  560. package/dist/src/user-model/capture/semantic.js +26 -5
  561. package/dist/src/user-model/index.js +2 -2
  562. package/dist/src/voice/dashscope/streaming-stt-session.js +3 -0
  563. package/dist/src/voice/dashscope/streaming-tts-stream.js +3 -0
  564. package/dist/src/voice/dictation.d.ts +12 -0
  565. package/dist/src/voice/dictation.js +22 -0
  566. package/dist/src/voice/metadata/builtin.js +54 -0
  567. package/dist/src/voice/platform-streams.js +3 -0
  568. package/dist/src/voice/realtime/agentEngine.js +4 -2
  569. package/dist/src/voice/realtime/memory-context.js +7 -7
  570. package/dist/src/voice/realtime/omniEngine.js +5 -2
  571. package/dist/src/voice/realtime/omniRoute.js +3 -2
  572. package/dist/src/voice/realtime/runtime.js +8 -6
  573. package/dist/src/voice/stt/factory.js +9 -3
  574. package/dist/src/voice/stt/index.js +2 -2
  575. package/dist/src/voice/stt/preflight.js +1 -1
  576. package/dist/src/voice/stt/providers/alibaba-transcription.js +1 -1
  577. package/dist/src/voice/stt/providers/bailian-plan-transcription.d.ts +2 -0
  578. package/dist/src/voice/stt/providers/bailian-plan-transcription.js +32 -0
  579. package/dist/src/voice/stt/providers/index.d.ts +1 -0
  580. package/dist/src/voice/stt/providers/index.js +2 -1
  581. package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +1 -1
  582. package/dist/src/voice/stt/transcribe-core.js +1 -1
  583. package/dist/src/voice/token-plan.d.ts +8 -0
  584. package/dist/src/voice/token-plan.js +11 -0
  585. package/dist/src/voice/tts/factory.js +4 -1
  586. package/dist/src/voice/tts/index.js +3 -3
  587. package/dist/src/voice/tts/merge-config.js +1 -1
  588. package/dist/src/voice/tts/payload.js +1 -1
  589. package/dist/src/voice/tts/providers/bailian-plan-speech.d.ts +2 -0
  590. package/dist/src/voice/tts/providers/bailian-plan-speech.js +84 -0
  591. package/dist/src/voice/tts/providers/index.d.ts +1 -0
  592. package/dist/src/voice/tts/providers/index.js +2 -1
  593. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +1 -1
  594. package/dist/src/voice/tts/speak-core.js +11 -2
  595. package/dist/src/work-discovery/incremental-repository.js +1 -1
  596. package/dist/src/work-discovery/service.js +7 -7
  597. package/dist/src/workflows/context/workflow-context.js +1 -1
  598. package/dist/src/workflows/engine/workflow-engine.js +1 -1
  599. package/dist/src/workflows/service/workflow-run-service.js +7 -7
  600. package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
  601. package/package.json +2 -2
  602. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-2VA4eKPf.js +0 -1
  603. package/dist/gateway/static/root/assets/agent-plugin-dialog-DRhTOw_O.js +0 -1
  604. package/dist/gateway/static/root/assets/agents-BemUH_Yf.js +0 -77
  605. package/dist/gateway/static/root/assets/app-management-settings-panel-CR_cc7rj.js +0 -1
  606. package/dist/gateway/static/root/assets/automations-workspace-DOwtT4sS.js +0 -6
  607. package/dist/gateway/static/root/assets/browser-automations-page-B-Ezk_8l.js +0 -3
  608. package/dist/gateway/static/root/assets/browser-settings-page-BSmmTBn4.js +0 -3
  609. package/dist/gateway/static/root/assets/capabilities-page-xZgTYYDn.js +0 -2
  610. package/dist/gateway/static/root/assets/capabilities-settings-panel-oqkuOjcR.js +0 -8
  611. package/dist/gateway/static/root/assets/channels-Dq2C2k9M.js +0 -1
  612. package/dist/gateway/static/root/assets/chat-terminal-dock-srB_M-aQ.js +0 -36
  613. package/dist/gateway/static/root/assets/connectors-page-BZk-Gou5.js +0 -1
  614. package/dist/gateway/static/root/assets/device-pairing-wizard-CvZpnSVw.js +0 -1
  615. package/dist/gateway/static/root/assets/extension-settings-page-1tbWe5xQ.js +0 -1
  616. package/dist/gateway/static/root/assets/fallback-models-CW6a1-GK.js +0 -1
  617. package/dist/gateway/static/root/assets/gateway-realtime-store-BVriF6Zj.js +0 -1
  618. package/dist/gateway/static/root/assets/gateway-settings-vQWTUx2c.js +0 -1
  619. package/dist/gateway/static/root/assets/home-page-hfWuVtcG.js +0 -2
  620. package/dist/gateway/static/root/assets/image-generation-api-DodU6GNC.js +0 -1
  621. package/dist/gateway/static/root/assets/imports-page-CuR6RSUM.js +0 -1
  622. package/dist/gateway/static/root/assets/index-CNH8vwcY.js +0 -260
  623. package/dist/gateway/static/root/assets/index-DBRwvWzm.css +0 -1
  624. package/dist/gateway/static/root/assets/logs-page-CSlZT1-L.js +0 -2
  625. package/dist/gateway/static/root/assets/management-settings-BYCL5CwV.js +0 -1
  626. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-i9N5shss.js +0 -1
  627. package/dist/gateway/static/root/assets/messages-DTqbfje6.js +0 -3
  628. package/dist/gateway/static/root/assets/models-hub-cache-Ct6X5zmB.js +0 -1
  629. package/dist/gateway/static/root/assets/note-detail-panel-CJ5Earr_.js +0 -5
  630. package/dist/gateway/static/root/assets/notes-page-CPGk8-n1.js +0 -8
  631. package/dist/gateway/static/root/assets/personal-page-BjTt5R3s.js +0 -1
  632. package/dist/gateway/static/root/assets/project-detail-page-CyKx4PyN.js +0 -1
  633. package/dist/gateway/static/root/assets/projects-page--_hXxUMC.js +0 -1
  634. package/dist/gateway/static/root/assets/remote-access-hub-Bq_eqQYf.js +0 -1
  635. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-BgCATci5.js +0 -1
  636. package/dist/gateway/static/root/assets/scenes-page-DxE3jRPR.js +0 -2
  637. package/dist/gateway/static/root/assets/session-manager-COd9RECl.js +0 -16
  638. package/dist/gateway/static/root/assets/sessions-page-CQkGFnJM.js +0 -1
  639. package/dist/gateway/static/root/assets/settings-advanced-gate-Dtlsvsci.js +0 -1
  640. package/dist/gateway/static/root/assets/settings-loading-skeleton-BTqvr_Fw.js +0 -1
  641. package/dist/gateway/static/root/assets/setup-status-panel-CrAazq4r.js +0 -1
  642. package/dist/gateway/static/root/assets/shares-settings-BNMhs-Vd.js +0 -1
  643. package/dist/gateway/static/root/assets/skills-page-XVOxILQn.js +0 -2
  644. package/dist/gateway/static/root/assets/user-model-page-C1QX47VR.js +0 -2
@@ -1,34 +1,44 @@
1
+ import { createLogger } from "../../utils/logger/index.js";
2
+ import { init_logger } from "../../utils/logger.js";
1
3
  import { isManagedConnectorServer } from "../../connectors/materialize.js";
2
4
  import { prepareNativeMcpConfig } from "./native-mcp.js";
5
+ import { classifyMcpConnectionError } from "./connection-errors.js";
3
6
  import { McpAuthenticationRequiredError, discoverMcpTools, signInNativeMcp } from "./tool-catalog.js";
4
7
  import { createHash, randomUUID } from "node:crypto";
5
8
  //#region src/agent/mcp/connection-setup.ts
9
+ init_logger();
10
+ const log = createLogger("McpConnectionSetup");
6
11
  function httpUrl(value) {
7
12
  const url = new URL(value);
8
13
  if (!["http:", "https:"].includes(url.protocol) || url.username || url.password) throw new Error("Use an HTTP or HTTPS MCP address without embedded credentials.");
9
14
  return url;
10
15
  }
11
- async function metadata(url) {
16
+ async function metadata(url, signal) {
12
17
  try {
13
18
  const response = await fetch(url, {
14
- signal: AbortSignal.timeout(5e3),
19
+ signal: signal ? AbortSignal.any([signal, AbortSignal.timeout(5e3)]) : AbortSignal.timeout(5e3),
15
20
  redirect: "error",
16
21
  headers: { Accept: "application/json" }
17
22
  });
18
23
  if (!response.ok) return;
19
24
  const result = await response.json();
20
25
  if (result && typeof result === "object" && !Array.isArray(result)) return result;
21
- } catch {}
26
+ } catch {
27
+ signal?.throwIfAborted();
28
+ }
22
29
  }
23
30
  /** A 401 alone is not evidence that a service supports OAuth. */
24
- async function advertisesOAuth(config, workspace, serverId) {
25
- const entry = (await prepareNativeMcpConfig(config, workspace)).servers.find((server) => server.name === serverId);
31
+ async function advertisesOAuth(config, workspace, serverId, signal) {
32
+ signal?.throwIfAborted();
33
+ const loaded = await prepareNativeMcpConfig(config, workspace);
34
+ signal?.throwIfAborted();
35
+ const entry = loaded.servers.find((server) => server.name === serverId);
26
36
  if (!entry || !("url" in entry.config)) return false;
27
37
  const url = httpUrl(entry.config.url);
28
38
  if (Object.keys(entry.config.headers ?? {}).some((name) => name.toLowerCase() === "authorization")) return false;
29
39
  const response = await fetch(url, {
30
40
  method: "POST",
31
- signal: AbortSignal.timeout(1e4),
41
+ signal: signal ? AbortSignal.any([signal, AbortSignal.timeout(1e4)]) : AbortSignal.timeout(1e4),
32
42
  redirect: "error",
33
43
  headers: {
34
44
  Accept: "application/json, text/event-stream",
@@ -58,7 +68,8 @@ async function advertisesOAuth(config, workspace, serverId) {
58
68
  new URL("/.well-known/oauth-protected-resource", url)
59
69
  ];
60
70
  for (const candidate of candidates) {
61
- const data = await metadata(candidate);
71
+ signal?.throwIfAborted();
72
+ const data = await metadata(candidate, signal);
62
73
  if (data && typeof data.resource === "string" && data.resource === url.href && Array.isArray(data.authorization_servers) && data.authorization_servers.some((value) => {
63
74
  try {
64
75
  return typeof value === "string" && Boolean(httpUrl(value));
@@ -68,30 +79,39 @@ async function advertisesOAuth(config, workspace, serverId) {
68
79
  })) return true;
69
80
  }
70
81
  if (!/\bBearer\b/i.test(challenge)) return false;
71
- const legacy = await metadata(new URL("/.well-known/oauth-authorization-server", url));
82
+ const legacy = await metadata(new URL("/.well-known/oauth-authorization-server", url), signal);
72
83
  return Boolean(legacy && legacy.issuer === url.origin && typeof legacy.authorization_endpoint === "string" && typeof legacy.token_endpoint === "string");
73
84
  }
74
- async function probeMcpConnection(config, workspace, serverId) {
85
+ async function probeMcpConnection(config, workspace, serverId, options) {
75
86
  try {
76
87
  return {
77
88
  state: "connected",
78
- toolCount: (await discoverMcpTools(config, workspace, serverId)).length
89
+ toolCount: (await discoverMcpTools(config, workspace, serverId, options)).length
79
90
  };
80
91
  } catch (error) {
81
- if (error instanceof McpAuthenticationRequiredError) try {
82
- return { state: await advertisesOAuth(config, workspace, serverId) ? "oauth_required" : "token_required" };
83
- } catch (error) {
92
+ const failed = (cause) => {
93
+ const errorCode = classifyMcpConnectionError(cause);
94
+ log.warn({
95
+ serverId,
96
+ errorCode
97
+ }, `MCP connection check failed: ${errorCode}`);
84
98
  return {
85
99
  state: "error",
86
- error: error instanceof Error ? error.message : String(error)
100
+ error: cause instanceof Error ? cause.message : String(cause),
101
+ errorCode
87
102
  };
88
- }
89
- const server = config.mcp?.servers?.[serverId];
90
- if (server?.url && Object.keys(server.headers ?? {}).some((name) => name.toLowerCase() === "authorization") && /401|403|unauthorized|forbidden/i.test(String(error))) return { state: "token_required" };
91
- return {
92
- state: "error",
93
- error: error instanceof Error ? error.message : String(error)
94
103
  };
104
+ const server = config.mcp?.servers?.[serverId];
105
+ const rejectedCredential = /\b401\b|unauthorized|invalid_token/i.test(String(error));
106
+ const hasCredentials = server?.auth || Object.keys(server?.headers ?? {}).some((name) => name.toLowerCase() === "authorization");
107
+ if (error instanceof McpAuthenticationRequiredError || server?.url && rejectedCredential && !hasCredentials) try {
108
+ options?.signal?.throwIfAborted();
109
+ return { state: await advertisesOAuth(config, workspace, serverId, options?.signal) ? "oauth_required" : "token_required" };
110
+ } catch (cause) {
111
+ return failed(cause);
112
+ }
113
+ if (server?.url && hasCredentials && /\b(?:401|403)\b|unauthorized|forbidden/i.test(String(error))) return { state: "token_required" };
114
+ return failed(error);
95
115
  }
96
116
  }
97
117
  const attempts = /* @__PURE__ */ new Map();
@@ -117,15 +137,17 @@ function cancel(attempt) {
117
137
  }
118
138
  }
119
139
  /** A UI bridge to native pi's login command; no host-owned OAuth client or token store. */
120
- function startMcpAuthorization(config, workspace, serverId, owner) {
140
+ function startMcpAuthorization(config, workspace, serverId, owner, options) {
121
141
  const server = config.mcp?.servers?.[serverId];
122
142
  if (!server?.url || server.enabled === false || isManagedConnectorServer(server) && server.xopcConnector.enabled === false) throw new Error("An enabled HTTP MCP server is required.");
123
143
  httpUrl(server.url);
124
144
  if (server.auth || Object.keys(server.headers ?? {}).some((name) => name.toLowerCase() === "authorization")) throw new Error("This server uses configured credentials. Remove Authorization before using OAuth.");
125
- for (const attempt of attempts.values()) if (attempt.owner === owner && attempt.result.serverId === serverId) cancel(attempt);
145
+ const scope = options?.authorizationScope ?? serverId;
146
+ for (const attempt of attempts.values()) if (attempt.owner === owner && attempt.scope === scope) cancel(attempt);
126
147
  if (attempts.size >= 100) throw new Error("Too many pending sign-ins. Try again later.");
127
148
  const attempt = {
128
149
  owner,
150
+ scope,
129
151
  fingerprint: fingerprint(config, serverId),
130
152
  controller: new AbortController(),
131
153
  result: {
@@ -159,7 +181,7 @@ function startMcpAuthorization(config, workspace, serverId, owner) {
159
181
  attempt.dispose = () => signal?.removeEventListener("abort", stop);
160
182
  });
161
183
  }
162
- }).then((tools) => {
184
+ }, options).then((tools) => {
163
185
  if (!attempt.controller.signal.aborted) {
164
186
  attempt.result.state = "connected";
165
187
  attempt.result.toolCount = tools.length;
@@ -0,0 +1,6 @@
1
+ import type { McpExtensionOptions } from '@earendil-works/pi-coding-agent';
2
+ export type NativeMcpCredentials = NonNullable<McpExtensionOptions['credentials']>;
3
+ /** Use pi's own stores; never change PI_CODING_AGENT_DIR for an individual connection. */
4
+ export declare function createNativeMcpCredentials(memory?: boolean): Promise<NativeMcpCredentials>;
5
+ /** Credential identity may change on commit without changing the public tool namespace. */
6
+ export declare function routeNativeMcpCredentials(store: NativeMcpCredentials, aliases: ReadonlyMap<string, string>): NativeMcpCredentials;
@@ -0,0 +1,24 @@
1
+ //#region src/agent/mcp/credential-store.ts
2
+ /** Use pi's own stores; never change PI_CODING_AGENT_DIR for an individual connection. */
3
+ async function createNativeMcpCredentials(memory = false) {
4
+ const root = import.meta.resolve("@earendil-works/pi-coding-agent");
5
+ const { McpOAuthCredentialStore } = await import(new URL("./extensions/mcp/oauth.js", root).href);
6
+ if (!memory) return new McpOAuthCredentialStore();
7
+ const { InMemoryAuthStorageBackend } = await import(new URL("./core/auth-storage.js", root).href);
8
+ return new McpOAuthCredentialStore(new InMemoryAuthStorageBackend());
9
+ }
10
+ /** Credential identity may change on commit without changing the public tool namespace. */
11
+ function routeNativeMcpCredentials(store, aliases) {
12
+ const forServer = store.forServer.bind(store), tokens = store.tokens.bind(store), remove = store.remove.bind(store);
13
+ store.forServer = (name, url) => forServer(aliases.get(name) ?? name, url);
14
+ store.tokens = (name, url) => tokens(aliases.get(name) ?? name, url);
15
+ store.remove = (name, url) => {
16
+ const alias = aliases.get(name);
17
+ if (!alias) return remove(name, url);
18
+ forServer(alias, url).save({ serverUrl: url });
19
+ return true;
20
+ };
21
+ return store;
22
+ }
23
+ //#endregion
24
+ export { createNativeMcpCredentials, routeNativeMcpCredentials };
@@ -1,6 +1,11 @@
1
1
  import { type LoadedMcpConfig } from '@earendil-works/pi-coding-agent';
2
2
  import { type Config } from '../../config/schema.js';
3
+ import { type NativeMcpCredentials } from './credential-store.js';
3
4
  /** One process-wide pi directory: sessions share native OAuth credentials, never swap roots per turn. */
4
5
  export declare function getNativePiAgentDir(): string;
6
+ export type NativeMcpConfig = LoadedMcpConfig & {
7
+ credentials?: NativeMcpCredentials;
8
+ credentialAliases?: Record<string, string>;
9
+ };
5
10
  /** Only projects host configuration and secret references; all MCP execution belongs to pi. */
6
- export declare function prepareNativeMcpConfig(config: Config, workspaceDir: string): Promise<LoadedMcpConfig>;
11
+ export declare function prepareNativeMcpConfig(config: Config, workspaceDir: string): Promise<NativeMcpConfig>;
@@ -1,6 +1,7 @@
1
1
  import { init_paths_state, resolveStateDir } from "../../config/paths-state.js";
2
2
  import { McpServerSchema, init_schema } from "../../config/schema.js";
3
3
  import { resolveConnectorSecretReferences } from "../../connectors/secret-store.js";
4
+ import { createNativeMcpCredentials, routeNativeMcpCredentials } from "./credential-store.js";
4
5
  import { loadMergedMcpConfig } from "./config.js";
5
6
  import { join } from "node:path";
6
7
  import { mkdirSync } from "node:fs";
@@ -67,6 +68,11 @@ async function prepareNativeMcpConfig(config, workspaceDir) {
67
68
  scope: "extension"
68
69
  });
69
70
  }
71
+ const aliases = new Map(Object.entries(config.mcp?.servers ?? {}).filter(([, value]) => typeof value.xopcOAuthCredentialId === "string").map(([name, value]) => [name, value.xopcOAuthCredentialId]));
72
+ if (aliases.size) {
73
+ result.credentials = routeNativeMcpCredentials(await createNativeMcpCredentials(), aliases);
74
+ result.credentialAliases = Object.fromEntries(aliases);
75
+ }
70
76
  return result;
71
77
  }
72
78
  //#endregion
@@ -1,4 +1,5 @@
1
1
  import type { Config } from '../../config/schema.js';
2
+ import type { NativeMcpCredentials } from './credential-store.js';
2
3
  export type McpCatalogTool = {
3
4
  name: string;
4
5
  description: string;
@@ -12,7 +13,11 @@ export type McpLoginInteraction = {
12
13
  onAuthorizationUrl: (url: string) => void;
13
14
  requestRedirectUrl: (signal?: AbortSignal) => Promise<string | undefined>;
14
15
  };
16
+ export type McpSessionOptions = {
17
+ credentials?: NativeMcpCredentials;
18
+ signal?: AbortSignal;
19
+ };
15
20
  /** A short-lived native session discovers tools without making a model request. */
16
- export declare function discoverMcpTools(config: Config, workspaceDir: string, serverId: string): Promise<McpCatalogTool[]>;
21
+ export declare function discoverMcpTools(config: Config, workspaceDir: string, serverId: string, options?: McpSessionOptions): Promise<McpCatalogTool[]>;
17
22
  /** Native pi owns PKCE, registration, callbacks, token storage and refresh. */
18
- export declare function signInNativeMcp(config: Config, workspaceDir: string, serverId: string, interaction: McpLoginInteraction): Promise<McpCatalogTool[]>;
23
+ export declare function signInNativeMcp(config: Config, workspaceDir: string, serverId: string, interaction: McpLoginInteraction, options?: McpSessionOptions): Promise<McpCatalogTool[]>;
@@ -6,15 +6,19 @@ import { DefaultResourceLoader, ModelRuntime, SessionManager, SettingsManager, c
6
6
  //#region src/agent/mcp/tool-catalog.ts
7
7
  var McpAuthenticationRequiredError = class extends Error {};
8
8
  /** A short-lived native session discovers tools without making a model request. */
9
- async function discoverMcpTools(config, workspaceDir, serverId) {
10
- return runNativeMcpSession(config, workspaceDir, serverId);
9
+ async function discoverMcpTools(config, workspaceDir, serverId, options) {
10
+ return runNativeMcpSession(config, workspaceDir, serverId, void 0, options);
11
11
  }
12
12
  /** Native pi owns PKCE, registration, callbacks, token storage and refresh. */
13
- async function signInNativeMcp(config, workspaceDir, serverId, interaction) {
14
- return runNativeMcpSession(config, workspaceDir, serverId, interaction);
13
+ async function signInNativeMcp(config, workspaceDir, serverId, interaction, options) {
14
+ return runNativeMcpSession(config, workspaceDir, serverId, interaction, options);
15
15
  }
16
- async function runNativeMcpSession(config, workspaceDir, serverId, interaction) {
17
- const entry = (await prepareNativeMcpConfig(config, workspaceDir)).servers.find((server) => server.name === serverId);
16
+ async function runNativeMcpSession(config, workspaceDir, serverId, interaction, options) {
17
+ const signal = interaction?.signal ?? options?.signal;
18
+ signal?.throwIfAborted();
19
+ const loaded = await prepareNativeMcpConfig(config, workspaceDir);
20
+ signal?.throwIfAborted();
21
+ const entry = loaded.servers.find((server) => server.name === serverId);
18
22
  if (!entry) throw new Error(`MCP server "${serverId}" is not configured or has invalid configuration.`);
19
23
  if (entry.config.enabled === false) throw new Error(`MCP server "${serverId}" is disabled.`);
20
24
  const agentDir = getNativePiAgentDir();
@@ -32,6 +36,7 @@ async function runNativeMcpSession(config, workspaceDir, serverId, interaction)
32
36
  noThemes: true,
33
37
  noContextFiles: true,
34
38
  extensionFactories: [createToolSearchExtension(), createMcpExtension({
39
+ credentials: options?.credentials ?? loaded.credentials,
35
40
  loadConfig: () => ({
36
41
  servers: [entry],
37
42
  errors: [],
@@ -42,18 +47,21 @@ async function runNativeMcpSession(config, workspaceDir, serverId, interaction)
42
47
  })]
43
48
  });
44
49
  await loader.reload();
50
+ signal?.throwIfAborted();
45
51
  const provider = "url" in entry.config ? entry.config.auth?.provider : void 0;
52
+ const modelRuntime = provider ? await createEmbeddedModelRuntime(provider) : await ModelRuntime.create({
53
+ credentials: new InMemoryCredentialStore(),
54
+ modelsStore: new InMemoryModelsStore(),
55
+ modelsPath: null,
56
+ refreshOnCreate: false
57
+ });
58
+ signal?.throwIfAborted();
46
59
  const { session } = await createAgentSession({
47
60
  cwd: workspaceDir,
48
61
  agentDir,
49
62
  resourceLoader: loader,
50
63
  settingsManager,
51
- modelRuntime: provider ? await createEmbeddedModelRuntime(provider) : await ModelRuntime.create({
52
- credentials: new InMemoryCredentialStore(),
53
- modelsStore: new InMemoryModelsStore(),
54
- modelsPath: null,
55
- refreshOnCreate: false
56
- }),
64
+ modelRuntime,
57
65
  sessionManager: SessionManager.inMemory(),
58
66
  noTools: "builtin"
59
67
  });
@@ -70,6 +78,8 @@ async function runNativeMcpSession(config, workspaceDir, serverId, interaction)
70
78
  try {
71
79
  const runner = session.extensionRunner;
72
80
  if (!runner) throw new Error("Native MCP extension is unavailable.");
81
+ signal?.throwIfAborted();
82
+ signal?.addEventListener("abort", abort, { once: true });
73
83
  await session.bindExtensions({ uiContext: {
74
84
  ...runner.getUIContext(),
75
85
  notify(message) {
@@ -81,8 +91,7 @@ async function runNativeMcpSession(config, workspaceDir, serverId, interaction)
81
91
  return interaction?.requestRedirectUrl(options?.signal) ?? Promise.resolve(void 0);
82
92
  }
83
93
  } });
84
- interaction?.signal.addEventListener("abort", abort, { once: true });
85
- if (interaction?.signal.aborted) throw new Error("MCP sign-in cancelled.");
94
+ if (signal?.aborted) throw new Error("MCP sign-in cancelled.");
86
95
  let timer;
87
96
  try {
88
97
  await Promise.race([session.prompt("/mcp"), new Promise((_resolve, reject) => {
@@ -100,6 +109,7 @@ async function runNativeMcpSession(config, workspaceDir, serverId, interaction)
100
109
  if (/needs sign-in|needs-auth/.test(failure)) throw new McpAuthenticationRequiredError(failure);
101
110
  throw new Error(failure);
102
111
  }
112
+ if (signal?.aborted) throw new Error("MCP connection check cancelled.");
103
113
  const namespace = `mcp__${serverId.replace(/-/g, "_")}`;
104
114
  return session.getAllTools().filter((tool) => tool.namespace?.name === namespace).map((tool) => ({
105
115
  name: tool.name,
@@ -109,7 +119,7 @@ async function runNativeMcpSession(config, workspaceDir, serverId, interaction)
109
119
  })).sort((a, b) => a.name.localeCompare(b.name));
110
120
  } finally {
111
121
  try {
112
- interaction?.signal.removeEventListener("abort", abort);
122
+ signal?.removeEventListener("abort", abort);
113
123
  await close();
114
124
  } finally {
115
125
  session.dispose();
@@ -2,6 +2,7 @@ import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { init_compaction_types, isCompactionHandover } from "../../session/compaction-types.js";
4
4
  import { buildSessionContextForLlm, init_session_context_for_llm, isTranscriptCompactionEntry } from "../../session/session-context-for-llm.js";
5
+ import { getModelUsageOrigin, init_model_usage, isProviderUsageScopeError } from "../../providers/model-usage.js";
5
6
  import { completeWithResolvedCredentials } from "../../providers/model-call.js";
6
7
  import { estimateMessagesTokens, estimateTextTokens } from "./context-budget.js";
7
8
  import { applyCompactionHandoverDelta, consolidateCompactionHandover, handoverForPrompt, renderCompactionHandover } from "./compaction-ledger.js";
@@ -11,6 +12,7 @@ import { CompactionChunkCursor } from "./compaction-chunks.js";
11
12
  import { COMPACTION_REPAIR_RESERVE, CompactionRequestError, compactionOutputLimit, compactionPayloadGuard, compactionPromptFits, initialCompactionOutputLimit, isPermanentCompactionError } from "./compaction-request.js";
12
13
  import { createHash } from "node:crypto";
13
14
  //#region src/agent/memory/compaction.ts
15
+ init_model_usage();
14
16
  init_session_context_for_llm();
15
17
  init_compaction_types();
16
18
  init_logger();
@@ -397,6 +399,7 @@ Return a valid JSON delta only.`;
397
399
  auditModelRef: reviewed.modelRef
398
400
  };
399
401
  } catch (error) {
402
+ if (isProviderUsageScopeError(error)) throw error;
400
403
  signal?.throwIfAborted();
401
404
  log.warn({
402
405
  err: error,
@@ -521,7 +524,7 @@ Return a JSON delta containing only missing facts, using {"upserts":[]}. Include
521
524
  }, void 0, {
522
525
  operation: "session.compact",
523
526
  conversationId: callContext.conversationId,
524
- trigger: attempt === 0 && modelIndex === 0 ? "system" : "retry"
527
+ trigger: attempt === 0 && modelIndex === 0 ? getModelUsageOrigin() === "interactive" ? "agent" : "system" : "retry"
525
528
  });
526
529
  parentSignal?.throwIfAborted();
527
530
  if (linked.timedOut()) throw new CompactionRequestError("timeout", "Compaction handover timed out");
@@ -554,6 +557,7 @@ Return a JSON delta containing only missing facts, using {"upserts":[]}. Include
554
557
  modelRef: `${model.provider}/${model.id}`
555
558
  };
556
559
  } catch (error) {
560
+ if (isProviderUsageScopeError(error)) throw error;
557
561
  parentSignal?.throwIfAborted();
558
562
  lastError = linked.timedOut() ? new CompactionRequestError("timeout", `Compaction handover timed out after ${this.config.summaryTimeoutMs}ms`) : error;
559
563
  const kind = lastError instanceof CompactionRequestError ? lastError.kind : "provider";
@@ -1,5 +1,5 @@
1
- import { getToolResultTextLength, truncateToolResultMessage } from "../embedded/tool-result-truncation.js";
2
1
  import { readAgentMessageContent } from "./agent-message-access.js";
2
+ import { getToolResultTextLength, truncateToolResultMessage } from "../embedded/tool-result-truncation.js";
3
3
  //#region src/agent/memory/context-budget.ts
4
4
  const MESSAGE_OVERHEAD_TOKENS = 12;
5
5
  const REQUEST_OVERHEAD_TOKENS = 256;
@@ -1,7 +1,7 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import { evaluateContextBudget, projectContextForModel, stringifyMessagesForBudget } from "./context-budget.js";
4
3
  import { stripTrailingErrorAssistantMessages } from "../orchestration/llm-turn-retry.js";
4
+ import { evaluateContextBudget, projectContextForModel, stringifyMessagesForBudget } from "./context-budget.js";
5
5
  //#region src/agent/memory/context-recovery.ts
6
6
  init_logger();
7
7
  const log = createLogger("ContextRecovery");
@@ -1,6 +1,8 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_model_usage, withModelUsageOrigin } from "../../providers/model-usage.js";
3
4
  //#region src/agent/memory/idle-compaction-scheduler.ts
5
+ init_model_usage();
4
6
  init_logger();
5
7
  const log = createLogger("IdleCompaction");
6
8
  /** Generation checks protect commits even when a provider ignores cancellation. */
@@ -89,7 +91,7 @@ var IdleCompactionScheduler = class {
89
91
  state.deadline = timeout;
90
92
  timeout.unref?.();
91
93
  });
92
- const operation = Promise.resolve().then(() => job(controller.signal, isCurrent));
94
+ const operation = Promise.resolve().then(() => withModelUsageOrigin("background", () => job(controller.signal, isCurrent)));
93
95
  Promise.race([operation, deadline]).then((outcome) => {
94
96
  this.metrics[outcome]++;
95
97
  if (outcome === "committed") state.eligibleAt = Date.now() + options.cooldownMs;
@@ -1,6 +1,6 @@
1
- import { buildUserContextBlock, sanitizeUserContextFenceEscapes } from "./context-fence.js";
2
1
  import { isMemorySubsystemEnabled } from "./memory-config.js";
3
2
  import { extractAgentUserPlainText } from "./user-message-text.js";
3
+ import { buildUserContextBlock, sanitizeUserContextFenceEscapes } from "./context-fence.js";
4
4
  import { MemoryManager } from "./manager.js";
5
5
  import { discoverMemoryPlugins } from "./plugin-discovery.js";
6
6
  import { createMemoryManagerFromConfig } from "./create-memory-manager.js";
@@ -62,6 +62,7 @@ export declare class ModelManager {
62
62
  * Get model for session, checking session override first
63
63
  */
64
64
  getModelForSession(conversationId: string): string;
65
+ hasSessionModelOverride(conversationId: string): boolean;
65
66
  /**
66
67
  * Apply model to agent if different from current
67
68
  */
@@ -42,8 +42,7 @@ var ModelManager = class {
42
42
  setSessionProfileDefault(conversationId, modelRef, fallbacks = []) {
43
43
  this.sessionProfileDefaults.set(conversationId, modelRef);
44
44
  const cleanFallbacks = fallbacks.map((ref) => ref.trim()).filter(Boolean);
45
- if (cleanFallbacks.length > 0) this.sessionProfileFallbacks.set(conversationId, cleanFallbacks);
46
- else this.sessionProfileFallbacks.delete(conversationId);
45
+ this.sessionProfileFallbacks.set(conversationId, cleanFallbacks);
47
46
  }
48
47
  /**
49
48
  * Register the profile model and return the model that should initialize the
@@ -117,6 +116,9 @@ var ModelManager = class {
117
116
  if (profileDefault) return profileDefault;
118
117
  return this.defaultModel;
119
118
  }
119
+ hasSessionModelOverride(conversationId) {
120
+ return this.sessionModels.has(conversationId);
121
+ }
120
122
  /**
121
123
  * Apply model to agent if different from current
122
124
  */
@@ -1,9 +1,3 @@
1
- /**
2
- * Agent Orchestrator - Coordinates Agent execution flow
3
- *
4
- * Manages the complete agent execution pipeline from message processing
5
- * to response generation.
6
- */
7
1
  import type { Config } from '../../config/schema.js';
8
2
  import type { InboundMessage } from '../../infra/bus/index.js';
9
3
  import type { SessionConfigStore, SessionStore } from '../../session/index.js';
@@ -52,6 +46,7 @@ export declare class AgentOrchestrator {
52
46
  * Process a message through the agent orchestration pipeline
53
47
  */
54
48
  process(msg: InboundMessage, context: SessionContext): Promise<void>;
49
+ private processScoped;
55
50
  /**
56
51
  * Get the current agent model ID
57
52
  */
@@ -1,5 +1,6 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_model_usage, modelUsageOriginFromTurn, withModelUsageOrigin } from "../../providers/model-usage.js";
3
4
  import { abortEmbeddedRun } from "../embedded/runs.js";
4
5
  import { persistInboundAttachments } from "../../channels/attachments/inbound-persist.js";
5
6
  import { buildTranscriptUserMessage, clearPendingTranscriptUserMessage, hydrateUserTurnForLlm, setPendingTranscriptUserMessage } from "../inbound/attachment-pipeline.js";
@@ -13,6 +14,7 @@ import { randomUUID } from "node:crypto";
13
14
  * Manages the complete agent execution pipeline from message processing
14
15
  * to response generation.
15
16
  */
17
+ init_model_usage();
16
18
  init_logger();
17
19
  const log = createLogger("AgentOrchestrator");
18
20
  var AgentOrchestrator = class {
@@ -42,6 +44,9 @@ var AgentOrchestrator = class {
42
44
  * Process a message through the agent orchestration pipeline
43
45
  */
44
46
  async process(msg, context) {
47
+ return withModelUsageOrigin(modelUsageOriginFromTurn(context.origin), () => this.processScoped(msg, context));
48
+ }
49
+ async processScoped(msg, context) {
45
50
  const { conversationId } = context;
46
51
  log.debug({ conversationId }, "Processing message through agent orchestrator");
47
52
  await this.sessionHydrator.workspace(conversationId);
@@ -1,6 +1,6 @@
1
1
  import { isTransientProviderErrorMessage } from "../../providers/model-response.js";
2
- import { canResumeAfterModelFailure } from "./turn-recovery.js";
3
2
  import { isContextOverflowError } from "./context-overflow.js";
3
+ import { canResumeAfterModelFailure } from "./turn-recovery.js";
4
4
  //#region src/agent/orchestration/llm-turn-retry.ts
5
5
  function isTransientLlmErrorMessage(message) {
6
6
  return isTransientProviderErrorMessage(message);
@@ -2,9 +2,9 @@ import { isXopcDatabaseOpen } from "../../storage/sqlite/connection.js";
2
2
  import { TaskRepository, init_task_repository } from "../../tasks/task-repository.js";
3
3
  import { getSessionConfig } from "../../storage/sqlite/config-repository.js";
4
4
  import { init_sqlite } from "../../storage/sqlite/index.js";
5
+ import { init_response_language, resolveResponseLanguage } from "../../i18n/response-language.js";
5
6
  import { resolveTaskLocale } from "../../tasks/task-language.js";
6
7
  import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
7
- import { init_response_language, resolveResponseLanguage } from "../../i18n/response-language.js";
8
8
  //#region src/agent/prompt/response-language.ts
9
9
  init_response_language();
10
10
  init_sqlite();
@@ -6,14 +6,14 @@ import { getInteractionState } from "../../storage/sqlite/interaction-state-repo
6
6
  import { DEFAULT_USER_TRUST_LEVEL, init_trust_policy } from "../../user-context/trust-policy.js";
7
7
  import { getUserTrustPolicy } from "../../storage/sqlite/user-trust-repository.js";
8
8
  import { init_sqlite } from "../../storage/sqlite/index.js";
9
+ import { appendStablePromptSection } from "./cache-boundary.js";
9
10
  import { getUserTimezone } from "../../user-model/repository.js";
10
11
  import "../../user-model/index.js";
11
- import { appendStablePromptSection } from "./cache-boundary.js";
12
- import { mergeTtsConfigFromAppConfig } from "../../voice/tts/merge-config.js";
13
- import { buildTtsSystemPromptHint } from "../../voice/tts/directives.js";
14
12
  import { resolveSystemPromptBuildParams } from "./system-prompt-params.js";
15
13
  import { buildSystemPrompt } from "./system-prompt.js";
16
14
  import { resolveResponseLanguageForSession } from "./response-language.js";
15
+ import { buildTtsSystemPromptHint } from "../../voice/tts/directives.js";
16
+ import { mergeTtsConfigFromAppConfig } from "../../voice/tts/merge-config.js";
17
17
  //#region src/agent/prompt/service-prompt-builder.ts
18
18
  init_sqlite();
19
19
  init_interaction_state();
@@ -1,7 +1,7 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import { prepareSafeToolEnv } from "./sanitize-env-vars.js";
4
3
  import { validatePath, validateWritePath } from "./path-policy.js";
4
+ import { prepareSafeToolEnv } from "./sanitize-env-vars.js";
5
5
  import { auditCommand, validateCommand } from "./command-validator.js";
6
6
  import { DEFAULT_SANDBOX_CONFIG } from "./types.js";
7
7
  import { resolve } from "node:path";
@@ -1,17 +1,17 @@
1
1
  import { getClarificationResumeInput, init_clarification_wait_repository } from "../../storage/sqlite/clarification-wait-repository.js";
2
2
  import { getConnectionResumeInput, init_connection_wait_repository } from "../../storage/sqlite/connection-wait-repository.js";
3
3
  import { isPersonalConversation } from "../../personal-agent/repository.js";
4
+ import { resolveImageHandlingStrategy } from "../image/vision-detection.js";
5
+ import { hydrateUserTurnForLlm } from "../inbound/attachment-pipeline.js";
6
+ import { buildDelegatedTaskDirective, buildTaskExecutionDirective } from "../../tasks/task-context-assembler.js";
7
+ import { shouldSkipResetOverlapCommand } from "../../session/reset-triggers.js";
4
8
  import { parseSlashCommand } from "../../chat-commands/command-parse.js";
5
9
  import { personalCommandRejection } from "../../chat-commands/personal-command-policy.js";
6
10
  import { commandRegistry } from "../../chat-commands/registry.js";
7
11
  import "../../chat-commands/index.js";
8
- import { resolveImageHandlingStrategy } from "../image/vision-detection.js";
9
- import { hydrateUserTurnForLlm } from "../inbound/attachment-pipeline.js";
10
- import { shouldSkipResetOverlapCommand } from "../../session/reset-triggers.js";
11
12
  import { getTaskContinuation } from "../../tasks/task-continuation.js";
12
13
  import { runEmbeddedTurnForSession } from "../embedded/run-for-session.js";
13
14
  import { injectSourceContextsIntoUserMessage } from "../source-context/injector.js";
14
- import { buildDelegatedTaskDirective, buildTaskExecutionDirective } from "../../tasks/task-context-assembler.js";
15
15
  import crypto from "node:crypto";
16
16
  //#region src/agent/service/direct-turn-helpers.ts
17
17
  /**
@@ -1,13 +1,18 @@
1
+ import { init_model_usage, modelUsageOriginFromTurn, withModelUsageOrigin } from "../../providers/model-usage.js";
1
2
  import { clearPendingTranscriptUserMessage, setPendingTranscriptUserMessage } from "../inbound/attachment-pipeline.js";
2
3
  import { initSessionTurn } from "../../session/init-session-turn.js";
3
4
  import "../../session/index.js";
4
5
  import { buildDirectUserMessageContent } from "./build-direct-message-content.js";
5
6
  import { hydratePerTurnState, runDirectAgentTurn, tryRunSlashCommand } from "./direct-turn-helpers.js";
6
7
  //#region src/agent/service/process-direct-one-shot.ts
8
+ init_model_usage();
7
9
  function isReviewOutput(value) {
8
10
  return !!value && typeof value === "object" && !Array.isArray(value) && value.type === "review";
9
11
  }
10
12
  async function runProcessDirect(deps, input) {
13
+ return withModelUsageOrigin(modelUsageOriginFromTurn(input.origin), () => runProcessDirectInner(deps, input));
14
+ }
15
+ async function runProcessDirectInner(deps, input) {
11
16
  deps.sessionStore?.idleCompaction?.interrupt(input.conversationId);
12
17
  const { channel, chatId } = await deps.resolveSessionEndpoint(input.conversationId);
13
18
  deps.initSessionContext(input.conversationId, channel, chatId, input.origin);
@@ -77,4 +77,5 @@ export type ProcessDirectStreamEvent = {
77
77
  type: string;
78
78
  [key: string]: unknown;
79
79
  };
80
+ /** Bind each generator advancement so independent streams retain their own origin. */
80
81
  export declare function runProcessDirectStreaming(deps: ProcessDirectStreamingDeps, input: ProcessDirectStreamingInput): AsyncGenerator<ProcessDirectStreamEvent, void, unknown>;