@xopcai/xopc 0.0.389 → 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 (321) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-dvik6t7Z.js → activity-store-DWQCDi8M.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-bWMd5TDC.js → agent-avatar-dicebear-CzS0TUv9.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DE910MyU.js +1 -0
  6. package/dist/gateway/static/root/assets/{agent-plugin-dialog-UunIxc1q.js → agent-plugin-dialog-0SlvsYl7.js} +1 -1
  7. package/dist/gateway/static/root/assets/agents-BZh28Qn1.js +77 -0
  8. package/dist/gateway/static/root/assets/{agents-admin-api-BlNGyXpm.js → agents-admin-api-Bb3Kvz3X.js} +1 -1
  9. package/dist/gateway/static/root/assets/app-management-settings-panel-9A7JN5V5.js +1 -0
  10. package/dist/gateway/static/root/assets/{appearance-settings-CUAdx44v.js → appearance-settings-BPdLEo6L.js} +1 -1
  11. package/dist/gateway/static/root/assets/{apps-page-D5zDB6gp.js → apps-page-Cz7LypV9.js} +1 -1
  12. package/dist/gateway/static/root/assets/{archive-plugin-Du6dJNcl.js → archive-plugin-DFnHPNie.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-page-BO8Ig5Z4.js → automations-page-CnBLPVNh.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-workspace-BBjS-sk-.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-D7VJjwnr.js → binary-plugins-BQC0Tzoi.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-CaJlWTAn.js → block-editor-DSh5019z.js} +4 -4
  17. package/dist/gateway/static/root/assets/{browser-automation-inputs-iyMBJmQX.js → browser-automation-inputs-C5tIrIRL.js} +1 -1
  18. package/dist/gateway/static/root/assets/browser-automations-page-CFCMNfJN.js +3 -0
  19. package/dist/gateway/static/root/assets/browser-settings-page-C__tyPwu.js +3 -0
  20. package/dist/gateway/static/root/assets/{capabilities-CEH1AnXc.js → capabilities-D6RJG4QY.js} +1 -1
  21. package/dist/gateway/static/root/assets/{capabilities-MCKRMZDK.js → capabilities-DGEmBQnF.js} +1 -1
  22. package/dist/gateway/static/root/assets/capabilities-page-B5AZa7ir.js +2 -0
  23. package/dist/gateway/static/root/assets/capabilities-settings-panel-Dskz2_bh.js +8 -0
  24. package/dist/gateway/static/root/assets/{capability-header-actions-BIA0Lwt5.js → capability-header-actions-xzjWZVbg.js} +1 -1
  25. package/dist/gateway/static/root/assets/channels-DRse_dD3.js +1 -0
  26. package/dist/gateway/static/root/assets/chat-terminal-dock-CQF0M4kE.js +36 -0
  27. package/dist/gateway/static/root/assets/{computer-settings-page-DvY3zgyY.js → computer-settings-page-ZfzCTS0N.js} +1 -1
  28. package/dist/gateway/static/root/assets/{connector-service-page-St2-Fj3y.js → connector-service-page-CwAeWVLK.js} +1 -1
  29. package/dist/gateway/static/root/assets/connectors-page-CanakKaj.js +1 -0
  30. package/dist/gateway/static/root/assets/{date-picker-C0-D80ny.js → date-picker-hmJlEAQZ.js} +1 -1
  31. package/dist/gateway/static/root/assets/{dependency-picker-CNd7mwMU.js → dependency-picker-Us_Juz6I.js} +1 -1
  32. package/dist/gateway/static/root/assets/{desktop-pet-C-2wDANn.js → desktop-pet-CvOTI4uw.js} +1 -1
  33. package/dist/gateway/static/root/assets/{desktop-pet-settings-DyhxLrdJ.js → desktop-pet-settings-DYg-Gb8t.js} +1 -1
  34. package/dist/gateway/static/root/assets/device-pairing-wizard-B1FbZ8C1.js +1 -0
  35. package/dist/gateway/static/root/assets/{directory-picker-path-field-CNivVIPT.js → directory-picker-path-field-DZN9EDvM.js} +1 -1
  36. package/dist/gateway/static/root/assets/{extension-debug-page-CGYO3JPw.js → extension-debug-page-YIibp6Kk.js} +1 -1
  37. package/dist/gateway/static/root/assets/{extension-page-Dc51ALAg.js → extension-page-DkcGyb28.js} +1 -1
  38. package/dist/gateway/static/root/assets/{extension-provider-BXPILdlw.js → extension-provider-B1PQGTtY.js} +1 -1
  39. package/dist/gateway/static/root/assets/extension-settings-page-C_rJiSKo.js +1 -0
  40. package/dist/gateway/static/root/assets/{gateway-config-swr-Bc2MytsF.js → gateway-config-swr-Dv_A5FMu.js} +1 -1
  41. package/dist/gateway/static/root/assets/{gateway-realtime-BFK-vlME.js → gateway-realtime-DghCGfY_.js} +1 -1
  42. package/dist/gateway/static/root/assets/gateway-realtime-store-CMJVSnvi.js +1 -0
  43. package/dist/gateway/static/root/assets/gateway-settings-CjCWPHNJ.js +1 -0
  44. package/dist/gateway/static/root/assets/{gateway-startup-retry-BDPMttPx.js → gateway-startup-retry-CkTVSESs.js} +1 -1
  45. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-DAlRGMge.js → highlighted-body-KQOG7T2V-DV2wNqBn.js} +1 -1
  46. package/dist/gateway/static/root/assets/home-page-fAYsd7kG.js +2 -0
  47. package/dist/gateway/static/root/assets/image-generation-api-B98iXt6A.js +1 -0
  48. package/dist/gateway/static/root/assets/imports-page-DoBCBN8G.js +1 -0
  49. package/dist/gateway/static/root/assets/index-DFgXwLsv.js +260 -0
  50. package/dist/gateway/static/root/assets/index-a6ZvhclR.css +1 -0
  51. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BYYC9Qmw.js → keyboard-shortcuts-settings-DXVu4lqV.js} +1 -1
  52. package/dist/gateway/static/root/assets/local-app-workbench-page-B3fz6uRi.js +1 -0
  53. package/dist/gateway/static/root/assets/{local-apps-page-BU8pUsVM.js → local-apps-page-BC6xhmUh.js} +1 -1
  54. package/dist/gateway/static/root/assets/{local-session-drafts-kFc_MAA9.js → local-session-drafts-DFnZQu9A.js} +1 -1
  55. package/dist/gateway/static/root/assets/{locale-store-Dr43FCty.js → locale-store-BpK9AiDq.js} +1 -1
  56. package/dist/gateway/static/root/assets/logs-page-CSqSFDRU.js +2 -0
  57. package/dist/gateway/static/root/assets/management-settings-gq5L0THs.js +1 -0
  58. package/dist/gateway/static/root/assets/{markdown-view-CdKlPjJM.js → markdown-view-IsYTotu6.js} +18 -18
  59. package/dist/gateway/static/root/assets/{media-plugins-DE9zt88i.js → media-plugins-oSChWbcP.js} +1 -1
  60. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-C_QKwqDN.js +1 -0
  61. package/dist/gateway/static/root/assets/messages-CKTo_sIF.js +3 -0
  62. package/dist/gateway/static/root/assets/models-hub-cache-TjpL7hZ5.js +1 -0
  63. package/dist/gateway/static/root/assets/note-detail-panel-CdpNXre-.js +5 -0
  64. package/dist/gateway/static/root/assets/{notes-api-BHouNL6-.js → notes-api-CBb944yw.js} +1 -1
  65. package/dist/gateway/static/root/assets/notes-page-EGvGw8MN.js +8 -0
  66. package/dist/gateway/static/root/assets/{page-context-capture-button-TQr8NnSc.js → page-context-capture-button-CoWb7BYP.js} +1 -1
  67. package/dist/gateway/static/root/assets/personal-page-DYzbNTyN.js +1 -0
  68. package/dist/gateway/static/root/assets/{product-open-page-BEl6syFp.js → product-open-page-CTyy7H7-.js} +1 -1
  69. package/dist/gateway/static/root/assets/{product-preview-content-BxSHnbqz.js → product-preview-content-D4xqTaEy.js} +1 -1
  70. package/dist/gateway/static/root/assets/project-detail-page-DIVCw0QQ.js +1 -0
  71. package/dist/gateway/static/root/assets/projects-page-B4L9VnBN.js +1 -0
  72. package/dist/gateway/static/root/assets/{registry-api-BD5IgDOA.js → registry-api-Dsa2LvRt.js} +1 -1
  73. package/dist/gateway/static/root/assets/remote-access-hub-B8PvgLVz.js +1 -0
  74. package/dist/gateway/static/root/assets/{runtime-tools-api-CjTRoQWT.js → runtime-tools-api-C2Uw89eY.js} +1 -1
  75. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-Bqnp3tyt.js +1 -0
  76. package/dist/gateway/static/root/assets/scenes-page-D50g4GM2.js +2 -0
  77. package/dist/gateway/static/root/assets/{schema-form-ByG-R6N2.js → schema-form-h_RCNfiO.js} +1 -1
  78. package/dist/gateway/static/root/assets/{send-session-input-UAVStisp.js → send-session-input-DypbVTT7.js} +1 -1
  79. package/dist/gateway/static/root/assets/{session-api-DvgEiNRS.js → session-api-ga-SUOq_.js} +1 -1
  80. package/dist/gateway/static/root/assets/{session-manager-BOb1tC_Z.js → session-manager-C_OiKblh.js} +8 -8
  81. package/dist/gateway/static/root/assets/sessions-page-BsqDIbIr.js +1 -0
  82. package/dist/gateway/static/root/assets/settings-advanced-gate-D3zJAW4p.js +1 -0
  83. package/dist/gateway/static/root/assets/{settings-page-C1e9m23j.js → settings-page-DPCgrICd.js} +1 -1
  84. package/dist/gateway/static/root/assets/setup-status-panel-jjSYJpDd.js +1 -0
  85. package/dist/gateway/static/root/assets/{share-link-dialog-kE_6v5Dp.js → share-link-dialog-BGicglAS.js} +1 -1
  86. package/dist/gateway/static/root/assets/{share-preview-page-BT-_yR1h.js → share-preview-page-BORe9rLB.js} +1 -1
  87. package/dist/gateway/static/root/assets/{shares-api-Dg_SqHQE.js → shares-api-Dbx3z6-1.js} +1 -1
  88. package/dist/gateway/static/root/assets/shares-settings-C13FgfWk.js +1 -0
  89. package/dist/gateway/static/root/assets/{skill-api-BslUYMnX.js → skill-api-Cq6O1DZK.js} +1 -1
  90. package/dist/gateway/static/root/assets/{skill-reload-api-BQ2rTOP1.js → skill-reload-api-Cq7QDjMA.js} +1 -1
  91. package/dist/gateway/static/root/assets/skills-page-BM1ShEjx.js +2 -0
  92. package/dist/gateway/static/root/assets/{system-settings-panel-GpbPfWwo.js → system-settings-panel-BNCGFO1e.js} +1 -1
  93. package/dist/gateway/static/root/assets/task-detail-page-4VG82wcF.js +2 -0
  94. package/dist/gateway/static/root/assets/{task-expandable-content-DJrrEBB4.js → task-expandable-content-DAZGz5YC.js} +1 -1
  95. package/dist/gateway/static/root/assets/{theme-store-BKpYnggg.js → theme-store-Db7hDESt.js} +1 -1
  96. package/dist/gateway/static/root/assets/{tracing-settings-page-D71w7dwV.js → tracing-settings-page-C6p2Mu92.js} +1 -1
  97. package/dist/gateway/static/root/assets/{tunnel-api-BV46CvS8.js → tunnel-api-Dw15EJp0.js} +1 -1
  98. package/dist/gateway/static/root/assets/usage-page-DDrIqgGe.js +1 -0
  99. package/dist/gateway/static/root/assets/{use-autosave-CzyqRffr.js → use-autosave-DDjIdW4U.js} +1 -1
  100. package/dist/gateway/static/root/assets/{use-composer-attachments-Dviq-1f6.js → use-composer-attachments-DNl7O3Vb.js} +1 -1
  101. package/dist/gateway/static/root/assets/{use-file-preview-expanded-D5Kk7Hon.js → use-file-preview-expanded-DMHehhwG.js} +2 -2
  102. package/dist/gateway/static/root/assets/user-model-page-CaS9dOIr.js +2 -0
  103. package/dist/gateway/static/root/assets/{voice-api-key-field-DWtbmacd.js → voice-api-key-field-ByAxHE4P.js} +1 -1
  104. package/dist/gateway/static/root/assets/{voice-config-api-DnIjZm_9.js → voice-config-api-Dl39b27p.js} +1 -1
  105. package/dist/gateway/static/root/assets/voice-transcribe-api-CVaU83Jc.js +1 -0
  106. package/dist/gateway/static/root/assets/{work-discovery-overlay-ChEG71hz.js → work-discovery-overlay-BvVvPA1T.js} +1 -1
  107. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BcFm9QcC.js +3 -0
  108. package/dist/gateway/static/root/assets/workflows-page-DMec_XZB.js +6 -0
  109. package/dist/gateway/static/root/assets/{workspace-api-CZDvu7uA.js → workspace-api-BpfKsrtP.js} +2 -2
  110. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-CbUgg1SK.js → xopc-cloud-account-card-CU5lzzE9.js} +1 -1
  111. package/dist/gateway/static/root/index.html +28 -35
  112. package/dist/package.js +1 -1
  113. package/dist/packages/gateway-contract/src/discussions.js +3 -2
  114. package/dist/packages/gateway-contract/src/index.js +4 -0
  115. package/dist/packages/gateway-contract/src/provider-setup.js +6 -0
  116. package/dist/packages/gateway-contract/src/recording-outcome.js +6 -0
  117. package/dist/packages/image-providers/src/catalog.js +10 -0
  118. package/dist/packages/image-providers/src/execute.js +5 -1
  119. package/dist/packages/image-providers/src/validation.js +19 -1
  120. package/dist/src/agent/agent-manager.d.ts +1 -0
  121. package/dist/src/agent/agent-manager.js +4 -1
  122. package/dist/src/agent/background-review/run-background-review.d.ts +0 -1
  123. package/dist/src/agent/background-review/run-background-review.js +10 -2
  124. package/dist/src/agent/context/execution-scope.js +1 -1
  125. package/dist/src/agent/embedded/execution-tool-policy.d.ts +2 -0
  126. package/dist/src/agent/embedded/execution-tool-policy.js +8 -3
  127. package/dist/src/agent/embedded/run-for-session.js +26 -3
  128. package/dist/src/agent/embedded/run-turn.js +14 -1
  129. package/dist/src/agent/embedded/session-runner.js +1 -1
  130. package/dist/src/agent/embedded/xopc-stream-bridge.js +3 -0
  131. package/dist/src/agent/image/generation/runtime.js +12 -14
  132. package/dist/src/agent/image/understanding/runtime.js +5 -0
  133. package/dist/src/agent/inbound/inbound-loop.d.ts +1 -15
  134. package/dist/src/agent/inbound/inbound-loop.js +5 -0
  135. package/dist/src/agent/mcp/connection-errors.d.ts +3 -0
  136. package/dist/src/agent/mcp/connection-errors.js +32 -0
  137. package/dist/src/agent/mcp/connection-setup.d.ts +2 -0
  138. package/dist/src/agent/mcp/connection-setup.js +38 -18
  139. package/dist/src/agent/memory/compaction.js +5 -1
  140. package/dist/src/agent/memory/idle-compaction-scheduler.js +3 -1
  141. package/dist/src/agent/models/manager.d.ts +1 -0
  142. package/dist/src/agent/models/manager.js +4 -2
  143. package/dist/src/agent/orchestration/agent-orchestrator.d.ts +1 -6
  144. package/dist/src/agent/orchestration/agent-orchestrator.js +5 -0
  145. package/dist/src/agent/service/process-direct-one-shot.js +5 -0
  146. package/dist/src/agent/service/process-direct-streaming.d.ts +1 -0
  147. package/dist/src/agent/service/process-direct-streaming.js +17 -1
  148. package/dist/src/agent/tools/factory.js +14 -12
  149. package/dist/src/agent/tools/image-generate-tool.js +5 -1
  150. package/dist/src/agent/tools/personal-read-tool.js +4 -0
  151. package/dist/src/agent/tools/task-collaboration-tool.js +1 -1
  152. package/dist/src/agent-config/resolver.js +5 -0
  153. package/dist/src/agent-config/schema.d.ts +26 -6
  154. package/dist/src/agent-config/schema.js +2 -0
  155. package/dist/src/ai-assist/text-assist.js +5 -16
  156. package/dist/src/automations/service/action-executor.js +3 -1
  157. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  158. package/dist/src/config/agent-model-intents.js +4 -1
  159. package/dist/src/config/schema.d.ts +11 -5
  160. package/dist/src/config/schema.js +11 -3
  161. package/dist/src/discussions/analyzer.d.ts +2 -0
  162. package/dist/src/discussions/analyzer.js +38 -9
  163. package/dist/src/discussions/audio-clip.d.ts +3 -0
  164. package/dist/src/discussions/audio-clip.js +72 -0
  165. package/dist/src/discussions/live-worker.js +3 -1
  166. package/dist/src/discussions/long-review.d.ts +17 -0
  167. package/dist/src/discussions/long-review.js +278 -0
  168. package/dist/src/discussions/media-timeline.d.ts +21 -0
  169. package/dist/src/discussions/media-timeline.js +134 -0
  170. package/dist/src/discussions/organizer-worker.d.ts +4 -1
  171. package/dist/src/discussions/organizer-worker.js +17 -12
  172. package/dist/src/discussions/organizer.js +2 -0
  173. package/dist/src/discussions/processing.d.ts +43 -0
  174. package/dist/src/discussions/processing.js +125 -0
  175. package/dist/src/discussions/recording.js +202 -42
  176. package/dist/src/discussions/recordingJobs.js +2 -0
  177. package/dist/src/discussions/repository.js +4 -2
  178. package/dist/src/discussions/review.d.ts +8 -0
  179. package/dist/src/discussions/review.js +183 -0
  180. package/dist/src/discussions/sealer.d.ts +7 -1
  181. package/dist/src/discussions/sealer.js +163 -87
  182. package/dist/src/discussions/service.d.ts +7 -1
  183. package/dist/src/discussions/service.js +51 -15
  184. package/dist/src/discussions/types.d.ts +2 -1
  185. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  186. package/dist/src/gateway/global-defaults-admin.d.ts +3 -1
  187. package/dist/src/gateway/global-defaults-admin.js +14 -2
  188. package/dist/src/gateway/hono/lib/config-payload.d.ts +11 -2
  189. package/dist/src/gateway/hono/lib/config-payload.js +2 -0
  190. package/dist/src/gateway/hono/lib/voice-settings-revisions.d.ts +5 -0
  191. package/dist/src/gateway/hono/lib/voice-settings-revisions.js +24 -0
  192. package/dist/src/gateway/hono/routes/commands-skills.js +15 -0
  193. package/dist/src/gateway/hono/routes/config-patch/misc.js +8 -1
  194. package/dist/src/gateway/hono/routes/config.js +12 -0
  195. package/dist/src/gateway/hono/routes/discussions.js +63 -1
  196. package/dist/src/gateway/hono/routes/global-defaults.js +8 -1
  197. package/dist/src/gateway/hono/routes/models.js +12 -4
  198. package/dist/src/gateway/hono/routes/provider-setup.d.ts +3 -0
  199. package/dist/src/gateway/hono/routes/provider-setup.js +106 -0
  200. package/dist/src/gateway/hono/routes/status.js +2 -0
  201. package/dist/src/gateway/hono/routes/voice.js +23 -10
  202. package/dist/src/gateway/provider-model-setup.d.ts +4 -0
  203. package/dist/src/gateway/provider-model-setup.js +56 -0
  204. package/dist/src/gateway/service/config-coordinator.d.ts +2 -2
  205. package/dist/src/gateway/service.js +2 -0
  206. package/dist/src/media-shared/http/provider-http.d.ts +0 -6
  207. package/dist/src/media-shared/http/provider-http.js +5 -4
  208. package/dist/src/media-understanding/runner.d.ts +0 -28
  209. package/dist/src/media-understanding/runner.js +4 -0
  210. package/dist/src/platform/client.d.ts +1 -1
  211. package/dist/src/platform/contracts.d.ts +1 -1
  212. package/dist/src/providers/env-keys.js +3 -0
  213. package/dist/src/providers/extension-stream-bridge.js +3 -0
  214. package/dist/src/providers/index.js +15 -0
  215. package/dist/src/providers/model-call.d.ts +5 -2
  216. package/dist/src/providers/model-call.js +13 -2
  217. package/dist/src/providers/model-reference-auditor.js +1 -0
  218. package/dist/src/providers/model-response.js +1 -1
  219. package/dist/src/providers/model-usage.d.ts +15 -0
  220. package/dist/src/providers/model-usage.js +50 -0
  221. package/dist/src/providers/presentation.js +8 -0
  222. package/dist/src/providers/setup/engine.d.ts +37 -0
  223. package/dist/src/providers/setup/engine.js +177 -0
  224. package/dist/src/providers/setup/profiles.d.ts +4 -0
  225. package/dist/src/providers/setup/profiles.js +78 -0
  226. package/dist/src/providers/setup/voice.d.ts +23 -0
  227. package/dist/src/providers/setup/voice.js +234 -0
  228. package/dist/src/scenes/agentExecutor.d.ts +1 -0
  229. package/dist/src/scenes/agentExecutor.js +5 -0
  230. package/dist/src/storage/sqlite/migrations/253_discussion_processing_recovery.sql +20 -0
  231. package/dist/src/storage/sqlite/migrations/254_discussion_annotations.sql +17 -0
  232. package/dist/src/storage/sqlite/migrations/255_discussion_chapter_progress.sql +10 -0
  233. package/dist/src/storage/sqlite/migrations/256_task_main_update_retries.sql +21 -0
  234. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  235. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  236. package/dist/src/storage/sqlite/schema.js +1 -1
  237. package/dist/src/tasks/task-collaboration-repository.d.ts +2 -0
  238. package/dist/src/tasks/task-collaboration-repository.js +7 -1
  239. package/dist/src/tasks/task-main-update-delivery.js +11 -4
  240. package/dist/src/tasks/task-main-update-input.js +2 -1
  241. package/dist/src/tasks/task-main-update-retry.d.ts +5 -0
  242. package/dist/src/tasks/task-main-update-retry.js +15 -0
  243. package/dist/src/usage/recorder.js +2 -1
  244. package/dist/src/usage/scenario-registry.js +128 -123
  245. package/dist/src/voice/dashscope/streaming-stt-session.js +3 -0
  246. package/dist/src/voice/dashscope/streaming-tts-stream.js +3 -0
  247. package/dist/src/voice/dictation.d.ts +12 -0
  248. package/dist/src/voice/dictation.js +22 -0
  249. package/dist/src/voice/metadata/builtin.js +54 -0
  250. package/dist/src/voice/platform-streams.js +3 -0
  251. package/dist/src/voice/realtime/omniEngine.js +3 -0
  252. package/dist/src/voice/realtime/omniRoute.js +3 -2
  253. package/dist/src/voice/realtime/runtime.js +4 -2
  254. package/dist/src/voice/stt/factory.js +9 -3
  255. package/dist/src/voice/stt/providers/bailian-plan-transcription.d.ts +2 -0
  256. package/dist/src/voice/stt/providers/bailian-plan-transcription.js +32 -0
  257. package/dist/src/voice/stt/providers/index.d.ts +1 -0
  258. package/dist/src/voice/stt/providers/index.js +2 -1
  259. package/dist/src/voice/token-plan.d.ts +8 -0
  260. package/dist/src/voice/token-plan.js +11 -0
  261. package/dist/src/voice/tts/factory.js +4 -1
  262. package/dist/src/voice/tts/providers/bailian-plan-speech.d.ts +2 -0
  263. package/dist/src/voice/tts/providers/bailian-plan-speech.js +84 -0
  264. package/dist/src/voice/tts/providers/index.d.ts +1 -0
  265. package/dist/src/voice/tts/providers/index.js +2 -1
  266. package/dist/src/voice/tts/speak-core.js +10 -1
  267. package/package.json +2 -2
  268. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-Ds0Ue2FB.js +0 -1
  269. package/dist/gateway/static/root/assets/agents-BLRM4o-U.js +0 -77
  270. package/dist/gateway/static/root/assets/app-management-settings-panel-Dmy828Pe.js +0 -1
  271. package/dist/gateway/static/root/assets/automations-workspace-UcCneEs3.js +0 -6
  272. package/dist/gateway/static/root/assets/bot-DjLkhyZL.js +0 -1
  273. package/dist/gateway/static/root/assets/browser-automations-page-BjvQnYfO.js +0 -3
  274. package/dist/gateway/static/root/assets/browser-settings-page-D5ZghI28.js +0 -3
  275. package/dist/gateway/static/root/assets/capabilities-page-MC8qIrXo.js +0 -2
  276. package/dist/gateway/static/root/assets/capabilities-settings-panel-Blz3hEzp.js +0 -8
  277. package/dist/gateway/static/root/assets/channels-DSg_iCVC.js +0 -1
  278. package/dist/gateway/static/root/assets/chat-terminal-dock-C97SJEwd.js +0 -36
  279. package/dist/gateway/static/root/assets/circle-pause-CN9jYH2s.js +0 -1
  280. package/dist/gateway/static/root/assets/clock-3-DnrAnuyZ.js +0 -1
  281. package/dist/gateway/static/root/assets/connectors-page-DXk-GAsd.js +0 -1
  282. package/dist/gateway/static/root/assets/device-pairing-wizard-BeSuq__I.js +0 -1
  283. package/dist/gateway/static/root/assets/extension-settings-page-jYu6qpY2.js +0 -1
  284. package/dist/gateway/static/root/assets/fallback-models-CoyzvDo7.js +0 -1
  285. package/dist/gateway/static/root/assets/gateway-realtime-store-C3vH-Iup.js +0 -1
  286. package/dist/gateway/static/root/assets/gateway-settings-JlT1dlSj.js +0 -1
  287. package/dist/gateway/static/root/assets/git-branch-Dh9uxTot.js +0 -1
  288. package/dist/gateway/static/root/assets/home-page-DOVl8s-1.js +0 -2
  289. package/dist/gateway/static/root/assets/image-generation-api-BZBiYDmV.js +0 -1
  290. package/dist/gateway/static/root/assets/imports-page-DgdBTp_0.js +0 -1
  291. package/dist/gateway/static/root/assets/index-CmC8JkSM.js +0 -260
  292. package/dist/gateway/static/root/assets/index-Dgzc0oBu.css +0 -1
  293. package/dist/gateway/static/root/assets/local-app-workbench-page-BKZfn-MS.js +0 -1
  294. package/dist/gateway/static/root/assets/logs-page-BSepiACn.js +0 -2
  295. package/dist/gateway/static/root/assets/management-settings-dE_ykPNY.js +0 -1
  296. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-65SE6j-_.js +0 -1
  297. package/dist/gateway/static/root/assets/message-square-fVE7Ghj1.js +0 -1
  298. package/dist/gateway/static/root/assets/messages-DlTNQI92.js +0 -3
  299. package/dist/gateway/static/root/assets/models-hub-cache-C7FAsEe_.js +0 -1
  300. package/dist/gateway/static/root/assets/note-detail-panel-D9oqhdyk.js +0 -5
  301. package/dist/gateway/static/root/assets/notes-page-Bd4_7ph8.js +0 -8
  302. package/dist/gateway/static/root/assets/pause-DuPxgSxk.js +0 -1
  303. package/dist/gateway/static/root/assets/personal-page-BvWzq4Wp.js +0 -1
  304. package/dist/gateway/static/root/assets/play-kxZvpBg8.js +0 -1
  305. package/dist/gateway/static/root/assets/project-detail-page-D-qkIXVT.js +0 -1
  306. package/dist/gateway/static/root/assets/projects-page-BQtw1Dfn.js +0 -1
  307. package/dist/gateway/static/root/assets/remote-access-hub-CYFNz0Jc.js +0 -1
  308. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-Qq_NyYx_.js +0 -1
  309. package/dist/gateway/static/root/assets/scenes-page-hGr-ppYk.js +0 -2
  310. package/dist/gateway/static/root/assets/sessions-page-CpX1Rluw.js +0 -1
  311. package/dist/gateway/static/root/assets/settings-advanced-gate-D2s_MlxR.js +0 -1
  312. package/dist/gateway/static/root/assets/settings-loading-skeleton-BTqvr_Fw.js +0 -1
  313. package/dist/gateway/static/root/assets/setup-status-panel-BiHRYDHq.js +0 -1
  314. package/dist/gateway/static/root/assets/shares-settings-DfcAu08T.js +0 -1
  315. package/dist/gateway/static/root/assets/skills-page-CvKc5nBN.js +0 -2
  316. package/dist/gateway/static/root/assets/sparkles-DHlfQFAF.js +0 -1
  317. package/dist/gateway/static/root/assets/task-detail-page-5B5ZVAu0.js +0 -2
  318. package/dist/gateway/static/root/assets/usage-page-rMuwNpJi.js +0 -1
  319. package/dist/gateway/static/root/assets/user-model-page-Dhqw3v_u.js +0 -2
  320. package/dist/gateway/static/root/assets/workflow-run-setup-panel-pdiRKLxP.js +0 -3
  321. package/dist/gateway/static/root/assets/workflows-page-D9LMxINt.js +0 -6
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/session-manager-BOb1tC_Z.js","assets/rolldown-runtime-aKtaBQYM.js","assets/locale-store-Dr43FCty.js","assets/vendor-react-BOUWij0V.js","assets/messages-DlTNQI92.js","assets/schemas-CObaziC7.js","assets/gateway-realtime-BFK-vlME.js","assets/gateway-realtime-store-C3vH-Iup.js","assets/local-session-drafts-kFc_MAA9.js","assets/session-api-DvgEiNRS.js","assets/gateway-startup-retry-BDPMttPx.js","assets/constants-DeXt1mV-.js","assets/tool-activity-BtJkgjFf.js","assets/registry-api-BD5IgDOA.js","assets/preload-helper-zJ_50EbN.js","assets/attachment-utils-core-BIOUBrpT.js","assets/agents-admin-api-BlNGyXpm.js","assets/gateway-config-swr-Bc2MytsF.js","assets/vendor-swr-BIWyz7Rc.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-zJ_50EbN.js";import{i as t,r as n}from"./locale-store-Dr43FCty.js";import{i as r,n as i,r as a,t as o}from"./files-Bw4SBGdM.js";async function s(e){let t=await e.json().catch(()=>null);return Error(t?.error?.message??`HTTP ${e.status}`)}async function c(e,r){let i=await t(n(e),r);if(!i.ok)throw await s(i);return i.json()}async function l(t){if(!t?.projectId&&t?.conversationId){let{SessionManager:n}=await e(async()=>{let{SessionManager:e}=await import(`./session-manager-BOb1tC_Z.js`).then(e=>e.n);return{SessionManager:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]));await new n().materialize(t.conversationId,`session_resources`)}let n=t?.projectId?{kind:`project`,id:t.projectId}:t?.conversationId?{kind:`session`,id:t.conversationId}:t?.agentId?{kind:`agent`,id:t.agentId}:null;if(n){let e=await c(`/api/files/contexts/${n.kind}/${encodeURIComponent(n.id)}`);return r.parse(e.space)}let i=await c(`/api/files/default-space`);return r.parse(i.space)}function u(e){return{id:e.id,name:e.name,path:e.relativePath,isDirectory:e.kind===`directory`,mimeType:e.mimeType,revision:e.revision}}async function d(e,t){let n=await l(t),r=await c(`/api/files/resolve`,{method:`POST`,body:JSON.stringify({spaceId:n.id,path:e,taskRunId:t?.taskRunId})});return i.parse(r.resource)}async function f(e,t){return d(e,t)}async function p(e=``,t){let n=await l(t),r=new URLSearchParams;return e&&r.set(`path`,e),{entries:a.parse(await c(`/api/files/spaces/${encodeURIComponent(n.id)}/children${r.size?`?${r}`:``}`)).items.map(u)}}async function m(e=``,t){return(await p(e,t)).entries}async function h(e){let t=await l(e);return u(o.parse(await c(`/api/files/spaces/${encodeURIComponent(t.id)}/root`)).resource)}async function g(e,t,n=50){let r=await l(t),i=new URLSearchParams({q:e.trim(),limit:String(n),spaceId:r.id});return a.parse(await c(`/api/files/search?${i}`)).items.map(u)}async function _(e,r){let i=await d(e,r),a=await t(n(`/api/files/${encodeURIComponent(i.id)}/content`));if(!a.ok)throw await s(a);return{content:await a.text(),path:i.relativePath,mtimeMs:i.modifiedAt,revision:i.revision}}async function v(e,t){let n;try{n=await l(t)}catch{return null}try{let r=await c(`/api/files/resolve`,{method:`POST`,body:JSON.stringify({spaceId:n.id,path:e,taskRunId:t?.taskRunId})}),a=i.parse(r.resource);return{absolutePath:r.absolutePath,fileId:a.id,inputPath:e,displayName:a.name,scope:r.absolutePath?`external`:`workspace`,locationKind:r.absolutePath?`host`:`workspace`,exists:!0,isDirectory:a.kind===`directory`,workspaceRelativePath:a.relativePath,capabilities:a.capabilities.filter(e=>e===`preview`||e===`edit`),mtimeMs:a.modifiedAt}}catch{try{return(await c(`/api/files/resolve-reference`,{method:`POST`,body:JSON.stringify({spaceId:n.id,path:e,conversationId:t?.conversationId})})).reference}catch{return null}}}async function y(e,t,n){return await c(`/api/files/references/${encodeURIComponent(e)}/action`,{method:`POST`,body:JSON.stringify({action:t,conversationId:n?.conversationId})})}async function b(e,r){let i=await d(e,r),a=await t(n(`/api/files/${encodeURIComponent(i.id)}/content`),{headers:{Accept:`*/*`}});if(!a.ok)throw await s(a);return a.blob()}async function x(e,t,n){let r=await d(e,n),a=await c(`/api/files/${encodeURIComponent(r.id)}/content`,{method:`PUT`,body:JSON.stringify({content:t,revision:r.revision})}),o=i.parse(a.resource);return{path:o.relativePath,mtimeMs:o.modifiedAt,revision:o.revision}}async function S(e,r=``,i){let a=await l(i),c=new FormData;c.set(`directory`,r),c.set(`file`,e);let d=await t(n(`/api/files/spaces/${encodeURIComponent(a.id)}/upload`),{method:`POST`,body:c});if(!d.ok)throw await s(d);return u(o.parse(await d.json()).resource)}async function C(e){let r=await t(n(`/api/files/${encodeURIComponent(e)}`),{method:`DELETE`});if(!r.ok)throw await s(r)}function w(e,t){let n=new Blob([t],{type:`text/plain;charset=utf-8`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}function T(e,t,n){let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}export{b as a,_ as c,f as d,g as f,p as i,y as l,x as m,T as n,h as o,S as p,w as r,m as s,C as t,v as u};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/session-manager-C_OiKblh.js","assets/rolldown-runtime-aKtaBQYM.js","assets/locale-store-BpK9AiDq.js","assets/vendor-react-BOUWij0V.js","assets/messages-CKTo_sIF.js","assets/schemas-CObaziC7.js","assets/gateway-realtime-DghCGfY_.js","assets/gateway-realtime-store-CMJVSnvi.js","assets/local-session-drafts-DFnZQu9A.js","assets/session-api-ga-SUOq_.js","assets/gateway-startup-retry-CkTVSESs.js","assets/constants-DeXt1mV-.js","assets/tool-activity-BtJkgjFf.js","assets/registry-api-Dsa2LvRt.js","assets/preload-helper-zJ_50EbN.js","assets/attachment-utils-core-BIOUBrpT.js","assets/agents-admin-api-Bb3Kvz3X.js","assets/gateway-config-swr-Dv_A5FMu.js","assets/vendor-swr-BIWyz7Rc.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-zJ_50EbN.js";import{i as t,r as n}from"./locale-store-BpK9AiDq.js";import{i as r,n as i,r as a,t as o}from"./files-Bw4SBGdM.js";async function s(e){let t=await e.json().catch(()=>null);return Error(t?.error?.message??`HTTP ${e.status}`)}async function c(e,r){let i=await t(n(e),r);if(!i.ok)throw await s(i);return i.json()}async function l(t){if(!t?.projectId&&t?.conversationId){let{SessionManager:n}=await e(async()=>{let{SessionManager:e}=await import(`./session-manager-C_OiKblh.js`).then(e=>e.n);return{SessionManager:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]));await new n().materialize(t.conversationId,`session_resources`)}let n=t?.projectId?{kind:`project`,id:t.projectId}:t?.conversationId?{kind:`session`,id:t.conversationId}:t?.agentId?{kind:`agent`,id:t.agentId}:null;if(n){let e=await c(`/api/files/contexts/${n.kind}/${encodeURIComponent(n.id)}`);return r.parse(e.space)}let i=await c(`/api/files/default-space`);return r.parse(i.space)}function u(e){return{id:e.id,name:e.name,path:e.relativePath,isDirectory:e.kind===`directory`,mimeType:e.mimeType,revision:e.revision}}async function d(e,t){let n=await l(t),r=await c(`/api/files/resolve`,{method:`POST`,body:JSON.stringify({spaceId:n.id,path:e,taskRunId:t?.taskRunId})});return i.parse(r.resource)}async function f(e,t){return d(e,t)}async function p(e=``,t){let n=await l(t),r=new URLSearchParams;return e&&r.set(`path`,e),{entries:a.parse(await c(`/api/files/spaces/${encodeURIComponent(n.id)}/children${r.size?`?${r}`:``}`)).items.map(u)}}async function m(e=``,t){return(await p(e,t)).entries}async function h(e){let t=await l(e);return u(o.parse(await c(`/api/files/spaces/${encodeURIComponent(t.id)}/root`)).resource)}async function g(e,t,n=50){let r=await l(t),i=new URLSearchParams({q:e.trim(),limit:String(n),spaceId:r.id});return a.parse(await c(`/api/files/search?${i}`)).items.map(u)}async function _(e,r){let i=await d(e,r),a=await t(n(`/api/files/${encodeURIComponent(i.id)}/content`));if(!a.ok)throw await s(a);return{content:await a.text(),path:i.relativePath,mtimeMs:i.modifiedAt,revision:i.revision}}async function v(e,t){let n;try{n=await l(t)}catch{return null}try{let r=await c(`/api/files/resolve`,{method:`POST`,body:JSON.stringify({spaceId:n.id,path:e,taskRunId:t?.taskRunId})}),a=i.parse(r.resource);return{absolutePath:r.absolutePath,fileId:a.id,inputPath:e,displayName:a.name,scope:r.absolutePath?`external`:`workspace`,locationKind:r.absolutePath?`host`:`workspace`,exists:!0,isDirectory:a.kind===`directory`,workspaceRelativePath:a.relativePath,capabilities:a.capabilities.filter(e=>e===`preview`||e===`edit`),mtimeMs:a.modifiedAt}}catch{try{return(await c(`/api/files/resolve-reference`,{method:`POST`,body:JSON.stringify({spaceId:n.id,path:e,conversationId:t?.conversationId})})).reference}catch{return null}}}async function y(e,t,n){return await c(`/api/files/references/${encodeURIComponent(e)}/action`,{method:`POST`,body:JSON.stringify({action:t,conversationId:n?.conversationId})})}async function b(e,r){let i=await d(e,r),a=await t(n(`/api/files/${encodeURIComponent(i.id)}/content`),{headers:{Accept:`*/*`}});if(!a.ok)throw await s(a);return a.blob()}async function x(e,t,n){let r=await d(e,n),a=await c(`/api/files/${encodeURIComponent(r.id)}/content`,{method:`PUT`,body:JSON.stringify({content:t,revision:r.revision})}),o=i.parse(a.resource);return{path:o.relativePath,mtimeMs:o.modifiedAt,revision:o.revision}}async function S(e,r=``,i){let a=await l(i),c=new FormData;c.set(`directory`,r),c.set(`file`,e);let d=await t(n(`/api/files/spaces/${encodeURIComponent(a.id)}/upload`),{method:`POST`,body:c});if(!d.ok)throw await s(d);return u(o.parse(await d.json()).resource)}async function C(e){let r=await t(n(`/api/files/${encodeURIComponent(e)}`),{method:`DELETE`});if(!r.ok)throw await s(r)}function w(e,t){let n=new Blob([t],{type:`text/plain;charset=utf-8`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}function T(e,t,n){let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}export{b as a,_ as c,f as d,g as f,p as i,y as l,x as m,T as n,h as o,S as p,w as r,m as s,C as t,v as u};
@@ -1 +1 @@
1
- import{n as e,t}from"./vendor-react-BOUWij0V.js";import{t as n}from"./cloud-C4-yfnnk.js";import{t as r}from"./external-link-DjqjBmc3.js";import{a as i,n as a,r as o}from"./locale-store-Dr43FCty.js";import{n as s,t as c}from"./cloud-credits-BMYMiiNn.js";import{i as l}from"./vendor-swr-BIWyz7Rc.js";import{t as u}from"./button-aIC072nz.js";import{t as d}from"./skeleton-BI5TyibZ.js";import{So as f,Xo as p}from"./index-CmC8JkSM.js";var m=e(),h=t();function g(e){let t=(BigInt(e)+500n)/1000n*1000n;return s(String(t))}async function _(){let e=await i(o(`/api/models/xopc-cloud/account-summary`));return c.parse(e.payload)}function v(e){let t=(0,m.c)(148),{labels:i}=e,o=a(y)===`zh`?`zh-CN`:`en-US`,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={refreshInterval:6e4,revalidateOnFocus:!0},t[0]=s):s=t[0];let{data:c,error:v,isLoading:b,isValidating:x,mutate:S}=l(`/api/models/xopc-cloud/account-summary`,_,s);if(b){let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,h.jsx)(d,{className:`h-40 w-full rounded-xl`}),t[1]=e):e=t[1],e}if(v||!c){let e;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,h.jsx)(f,{className:`mt-0.5 size-4 shrink-0 text-amber-500`,"aria-hidden":!0}),t[2]=e):e=t[2];let n;t[3]===i.title?n=t[4]:(n=(0,h.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:i.title}),t[3]=i.title,t[4]=n);let r;t[5]===i.unavailable?r=t[6]:(r=(0,h.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:i.unavailable}),t[5]=i.unavailable,t[6]=r);let a;t[7]!==n||t[8]!==r?(a=(0,h.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[e,(0,h.jsxs)(`div`,{children:[n,r]})]}),t[7]=n,t[8]=r,t[9]=a):a=t[9];let o;t[10]===S?o=t[11]:(o=()=>void S(),t[10]=S,t[11]=o);let s=x?`size-4 animate-spin`:`size-4`,c;t[12]===s?c=t[13]:(c=(0,h.jsx)(p,{className:s,"aria-hidden":!0}),t[12]=s,t[13]=c);let l;t[14]!==x||t[15]!==i.retry||t[16]!==o||t[17]!==c?(l=(0,h.jsxs)(u,{type:`button`,variant:`secondary`,disabled:x,onClick:o,children:[c,i.retry]}),t[14]=x,t[15]=i.retry,t[16]=o,t[17]=c,t[18]=l):l=t[18];let d;return t[19]!==a||t[20]!==l?(d=(0,h.jsx)(`section`,{className:`rounded-xl bg-surface-hover/25 p-4`,children:(0,h.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[a,l]})}),t[19]=a,t[20]=l,t[21]=d):d=t[21],d}let C,w,T,E,D,O,k,A,j,M;if(t[22]!==c.balance.availableCreditMicro||t[23]!==c.balance.expiring[0]||t[24]!==c.balance.grantedCreditMicro||t[25]!==c.balance.purchasedCreditMicro||t[26]!==c.balance.refundReservedCreditMicro||t[27]!==c.balance.usageReservedCreditMicro||t[28]!==c.links.details||t[29]!==c.links.purchase||t[30]!==c.usage.chargedCreditMicro||t[31]!==c.usage.requests||t[32]!==c.usage.totalTokens||t[33]!==i.availableCredits||t[34]!==i.connected||t[35]!==i.details||t[36]!==i.expiring||t[37]!==i.granted||t[38]!==i.purchase||t[39]!==i.purchased||t[40]!==i.recentUsage||t[41]!==i.reserved||t[42]!==i.title||t[43]!==i.tokenUsage||t[44]!==i.usageSummary||t[45]!==i.zeroBalance||t[46]!==o){let e=new Intl.NumberFormat(o),a=i.usageSummary.replace(`{{credits}}`,g(c.usage.chargedCreditMicro)).replace(`{{requests}}`,e.format(c.usage.requests));C=`rounded-xl bg-surface-hover/40 p-4 sm:p-5`;let s;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,h.jsx)(n,{className:`size-4 text-accent-fg`,"aria-hidden":!0}),t[57]=s):s=t[57];let l;t[58]===i.title?l=t[59]:(l=(0,h.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:i.title}),t[58]=i.title,t[59]=l);let d;t[60]===i.connected?d=t[61]:(d=(0,h.jsx)(`span`,{className:`rounded-full bg-emerald-500/10 px-2 py-0.5 text-xs font-medium text-emerald-700 dark:text-emerald-300`,children:i.connected}),t[60]=i.connected,t[61]=d);let f;t[62]!==l||t[63]!==d?(f=(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[s,l,d]}),t[62]=l,t[63]=d,t[64]=f):f=t[64];let p;t[65]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,h.jsx)(r,{className:`size-3.5`,"aria-hidden":!0}),t[65]=p):p=t[65];let m;t[66]!==c.links.purchase||t[67]!==i.purchase?(m=(0,h.jsx)(u,{asChild:!0,variant:`primary`,children:(0,h.jsxs)(`a`,{href:c.links.purchase,target:`_blank`,rel:`noreferrer`,children:[i.purchase,p]})}),t[66]=c.links.purchase,t[67]=i.purchase,t[68]=m):m=t[68];let _;t[69]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,h.jsx)(r,{className:`size-3.5`,"aria-hidden":!0}),t[69]=_):_=t[69];let v;t[70]!==c.links.details||t[71]!==i.details?(v=(0,h.jsx)(u,{asChild:!0,variant:`secondary`,children:(0,h.jsxs)(`a`,{href:c.links.details,target:`_blank`,rel:`noreferrer`,children:[i.details,_]})}),t[70]=c.links.details,t[71]=i.details,t[72]=v):v=t[72];let y;t[73]!==m||t[74]!==v?(y=(0,h.jsxs)(`div`,{className:`flex shrink-0 flex-wrap gap-2`,children:[m,v]}),t[73]=m,t[74]=v,t[75]=y):y=t[75],t[76]!==f||t[77]!==y?(w=(0,h.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[f,y]}),t[76]=f,t[77]=y,t[78]=w):w=t[78],j=`mt-4 grid gap-4 rounded-lg bg-surface-base/45 p-3 sm:grid-cols-[minmax(12rem,0.7fr)_minmax(0,1.3fr)] sm:gap-6`;let b;t[79]===i.availableCredits?b=t[80]:(b=(0,h.jsx)(`p`,{className:`text-xs font-medium text-fg-subtle`,children:i.availableCredits}),t[79]=i.availableCredits,t[80]=b);let x;t[81]===c.balance.availableCreditMicro?x=t[82]:(x=g(c.balance.availableCreditMicro),t[81]=c.balance.availableCreditMicro,t[82]=x);let S;t[83]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,h.jsx)(`span`,{className:`ml-2 text-sm font-medium text-fg-muted`,children:`Credits`}),t[83]=S):S=t[83];let N;t[84]===x?N=t[85]:(N=(0,h.jsxs)(`p`,{className:`mt-1 text-2xl font-semibold tracking-tight text-fg`,children:[x,S]}),t[84]=x,t[85]=N);let P;t[86]!==c.balance.availableCreditMicro||t[87]!==i.zeroBalance?(P=c.balance.availableCreditMicro===`0`?(0,h.jsx)(`p`,{className:`mt-1 text-sm font-medium text-danger`,children:i.zeroBalance}):null,t[86]=c.balance.availableCreditMicro,t[87]=i.zeroBalance,t[88]=P):P=t[88];let F=i.purchased,I;t[89]===c.balance.purchasedCreditMicro?I=t[90]:(I=g(c.balance.purchasedCreditMicro),t[89]=c.balance.purchasedCreditMicro,t[90]=I);let L;t[91]!==i.purchased||t[92]!==I?(L=(0,h.jsxs)(`div`,{children:[F,`: `,I,` Credits`]}),t[91]=i.purchased,t[92]=I,t[93]=L):L=t[93];let R=i.granted,z;t[94]===c.balance.grantedCreditMicro?z=t[95]:(z=g(c.balance.grantedCreditMicro),t[94]=c.balance.grantedCreditMicro,t[95]=z);let B;t[96]!==i.granted||t[97]!==z?(B=(0,h.jsxs)(`div`,{children:[R,`: `,z,` Credits`]}),t[96]=i.granted,t[97]=z,t[98]=B):B=t[98];let V=i.reserved,H=String(BigInt(c.balance.usageReservedCreditMicro)+BigInt(c.balance.refundReservedCreditMicro)),U;t[99]===H?U=t[100]:(U=g(H),t[99]=H,t[100]=U);let W;t[101]!==i.reserved||t[102]!==U?(W=(0,h.jsxs)(`div`,{children:[V,`: `,U,` Credits`]}),t[101]=i.reserved,t[102]=U,t[103]=W):W=t[103];let G;t[104]!==L||t[105]!==B||t[106]!==W?(G=(0,h.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-fg-muted`,children:[L,B,W]}),t[104]=L,t[105]=B,t[106]=W,t[107]=G):G=t[107];let K;t[108]!==c.balance.expiring[0]||t[109]!==i.expiring||t[110]!==o?(K=c.balance.expiring[0]?(0,h.jsx)(`p`,{className:`mt-2 text-xs text-amber-600 dark:text-amber-400`,children:i.expiring.replace(`{{credits}}`,g(c.balance.expiring[0].creditMicro)).replace(`{{date}}`,new Date(c.balance.expiring[0].expiresAt).toLocaleDateString(o))}):null,t[108]=c.balance.expiring[0],t[109]=i.expiring,t[110]=o,t[111]=K):K=t[111],t[112]!==b||t[113]!==N||t[114]!==P||t[115]!==G||t[116]!==K?(M=(0,h.jsxs)(`div`,{children:[b,N,P,G,K]}),t[112]=b,t[113]=N,t[114]=P,t[115]=G,t[116]=K,t[117]=M):M=t[117],t[118]===i.recentUsage?k=t[119]:(k=(0,h.jsx)(`p`,{className:`text-xs font-medium text-fg-subtle`,children:i.recentUsage}),t[118]=i.recentUsage,t[119]=k),A=(0,h.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:a}),D=`mt-2 text-xs text-fg-subtle`,t[120]===i.tokenUsage?O=t[121]:(O=(0,h.jsx)(`summary`,{className:`cursor-pointer`,children:i.tokenUsage}),t[120]=i.tokenUsage,t[121]=O),T=`mt-1`,E=e.format(c.usage.totalTokens),t[22]=c.balance.availableCreditMicro,t[23]=c.balance.expiring[0],t[24]=c.balance.grantedCreditMicro,t[25]=c.balance.purchasedCreditMicro,t[26]=c.balance.refundReservedCreditMicro,t[27]=c.balance.usageReservedCreditMicro,t[28]=c.links.details,t[29]=c.links.purchase,t[30]=c.usage.chargedCreditMicro,t[31]=c.usage.requests,t[32]=c.usage.totalTokens,t[33]=i.availableCredits,t[34]=i.connected,t[35]=i.details,t[36]=i.expiring,t[37]=i.granted,t[38]=i.purchase,t[39]=i.purchased,t[40]=i.recentUsage,t[41]=i.reserved,t[42]=i.title,t[43]=i.tokenUsage,t[44]=i.usageSummary,t[45]=i.zeroBalance,t[46]=o,t[47]=C,t[48]=w,t[49]=T,t[50]=E,t[51]=D,t[52]=O,t[53]=k,t[54]=A,t[55]=j,t[56]=M}else C=t[47],w=t[48],T=t[49],E=t[50],D=t[51],O=t[52],k=t[53],A=t[54],j=t[55],M=t[56];let N;t[122]!==T||t[123]!==E?(N=(0,h.jsxs)(`p`,{className:T,children:[E,` tokens`]}),t[122]=T,t[123]=E,t[124]=N):N=t[124];let P;t[125]!==N||t[126]!==D||t[127]!==O?(P=(0,h.jsxs)(`details`,{className:D,children:[O,N]}),t[125]=N,t[126]=D,t[127]=O,t[128]=P):P=t[128];let F;t[129]!==c.balance.updatedAt||t[130]!==i.updatedAt||t[131]!==o?(F=i.updatedAt.replace(`{{time}}`,new Date(c.balance.updatedAt).toLocaleString(o)),t[129]=c.balance.updatedAt,t[130]=i.updatedAt,t[131]=o,t[132]=F):F=t[132];let I;t[133]===F?I=t[134]:(I=(0,h.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:F}),t[133]=F,t[134]=I);let L;t[135]!==P||t[136]!==I||t[137]!==k||t[138]!==A?(L=(0,h.jsxs)(`div`,{children:[k,A,P,I]}),t[135]=P,t[136]=I,t[137]=k,t[138]=A,t[139]=L):L=t[139];let R;t[140]!==L||t[141]!==j||t[142]!==M?(R=(0,h.jsxs)(`div`,{className:j,children:[M,L]}),t[140]=L,t[141]=j,t[142]=M,t[143]=R):R=t[143];let z;return t[144]!==C||t[145]!==w||t[146]!==R?(z=(0,h.jsxs)(`section`,{className:C,children:[w,R]}),t[144]=C,t[145]=w,t[146]=R,t[147]=z):z=t[147],z}function y(e){return e.language}export{v as t};
1
+ import{n as e,t}from"./vendor-react-BOUWij0V.js";import{t as n}from"./cloud-C4-yfnnk.js";import{t as r}from"./external-link-DjqjBmc3.js";import{a as i,n as a,r as o}from"./locale-store-BpK9AiDq.js";import{n as s,t as c}from"./cloud-credits-BMYMiiNn.js";import{i as l}from"./vendor-swr-BIWyz7Rc.js";import{t as u}from"./button-aIC072nz.js";import{t as d}from"./skeleton-BI5TyibZ.js";import{No as f,cs as p}from"./index-DFgXwLsv.js";var m=e(),h=t();function g(e){let t=(BigInt(e)+500n)/1000n*1000n;return s(String(t))}async function _(){let e=await i(o(`/api/models/xopc-cloud/account-summary`));return c.parse(e.payload)}function v(e){let t=(0,m.c)(148),{labels:i}=e,o=a(y)===`zh`?`zh-CN`:`en-US`,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={refreshInterval:6e4,revalidateOnFocus:!0},t[0]=s):s=t[0];let{data:c,error:v,isLoading:b,isValidating:x,mutate:S}=l(`/api/models/xopc-cloud/account-summary`,_,s);if(b){let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,h.jsx)(d,{className:`h-40 w-full rounded-xl`}),t[1]=e):e=t[1],e}if(v||!c){let e;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,h.jsx)(f,{className:`mt-0.5 size-4 shrink-0 text-amber-500`,"aria-hidden":!0}),t[2]=e):e=t[2];let n;t[3]===i.title?n=t[4]:(n=(0,h.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:i.title}),t[3]=i.title,t[4]=n);let r;t[5]===i.unavailable?r=t[6]:(r=(0,h.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:i.unavailable}),t[5]=i.unavailable,t[6]=r);let a;t[7]!==n||t[8]!==r?(a=(0,h.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[e,(0,h.jsxs)(`div`,{children:[n,r]})]}),t[7]=n,t[8]=r,t[9]=a):a=t[9];let o;t[10]===S?o=t[11]:(o=()=>void S(),t[10]=S,t[11]=o);let s=x?`size-4 animate-spin`:`size-4`,c;t[12]===s?c=t[13]:(c=(0,h.jsx)(p,{className:s,"aria-hidden":!0}),t[12]=s,t[13]=c);let l;t[14]!==x||t[15]!==i.retry||t[16]!==o||t[17]!==c?(l=(0,h.jsxs)(u,{type:`button`,variant:`secondary`,disabled:x,onClick:o,children:[c,i.retry]}),t[14]=x,t[15]=i.retry,t[16]=o,t[17]=c,t[18]=l):l=t[18];let d;return t[19]!==a||t[20]!==l?(d=(0,h.jsx)(`section`,{className:`rounded-xl bg-surface-hover/25 p-4`,children:(0,h.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[a,l]})}),t[19]=a,t[20]=l,t[21]=d):d=t[21],d}let C,w,T,E,D,O,k,A,j,M;if(t[22]!==c.balance.availableCreditMicro||t[23]!==c.balance.expiring[0]||t[24]!==c.balance.grantedCreditMicro||t[25]!==c.balance.purchasedCreditMicro||t[26]!==c.balance.refundReservedCreditMicro||t[27]!==c.balance.usageReservedCreditMicro||t[28]!==c.links.details||t[29]!==c.links.purchase||t[30]!==c.usage.chargedCreditMicro||t[31]!==c.usage.requests||t[32]!==c.usage.totalTokens||t[33]!==i.availableCredits||t[34]!==i.connected||t[35]!==i.details||t[36]!==i.expiring||t[37]!==i.granted||t[38]!==i.purchase||t[39]!==i.purchased||t[40]!==i.recentUsage||t[41]!==i.reserved||t[42]!==i.title||t[43]!==i.tokenUsage||t[44]!==i.usageSummary||t[45]!==i.zeroBalance||t[46]!==o){let e=new Intl.NumberFormat(o),a=i.usageSummary.replace(`{{credits}}`,g(c.usage.chargedCreditMicro)).replace(`{{requests}}`,e.format(c.usage.requests));C=`rounded-xl bg-surface-hover/40 p-4 sm:p-5`;let s;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,h.jsx)(n,{className:`size-4 text-accent-fg`,"aria-hidden":!0}),t[57]=s):s=t[57];let l;t[58]===i.title?l=t[59]:(l=(0,h.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:i.title}),t[58]=i.title,t[59]=l);let d;t[60]===i.connected?d=t[61]:(d=(0,h.jsx)(`span`,{className:`rounded-full bg-emerald-500/10 px-2 py-0.5 text-xs font-medium text-emerald-700 dark:text-emerald-300`,children:i.connected}),t[60]=i.connected,t[61]=d);let f;t[62]!==l||t[63]!==d?(f=(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[s,l,d]}),t[62]=l,t[63]=d,t[64]=f):f=t[64];let p;t[65]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,h.jsx)(r,{className:`size-3.5`,"aria-hidden":!0}),t[65]=p):p=t[65];let m;t[66]!==c.links.purchase||t[67]!==i.purchase?(m=(0,h.jsx)(u,{asChild:!0,variant:`primary`,children:(0,h.jsxs)(`a`,{href:c.links.purchase,target:`_blank`,rel:`noreferrer`,children:[i.purchase,p]})}),t[66]=c.links.purchase,t[67]=i.purchase,t[68]=m):m=t[68];let _;t[69]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,h.jsx)(r,{className:`size-3.5`,"aria-hidden":!0}),t[69]=_):_=t[69];let v;t[70]!==c.links.details||t[71]!==i.details?(v=(0,h.jsx)(u,{asChild:!0,variant:`secondary`,children:(0,h.jsxs)(`a`,{href:c.links.details,target:`_blank`,rel:`noreferrer`,children:[i.details,_]})}),t[70]=c.links.details,t[71]=i.details,t[72]=v):v=t[72];let y;t[73]!==m||t[74]!==v?(y=(0,h.jsxs)(`div`,{className:`flex shrink-0 flex-wrap gap-2`,children:[m,v]}),t[73]=m,t[74]=v,t[75]=y):y=t[75],t[76]!==f||t[77]!==y?(w=(0,h.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[f,y]}),t[76]=f,t[77]=y,t[78]=w):w=t[78],j=`mt-4 grid gap-4 rounded-lg bg-surface-base/45 p-3 sm:grid-cols-[minmax(12rem,0.7fr)_minmax(0,1.3fr)] sm:gap-6`;let b;t[79]===i.availableCredits?b=t[80]:(b=(0,h.jsx)(`p`,{className:`text-xs font-medium text-fg-subtle`,children:i.availableCredits}),t[79]=i.availableCredits,t[80]=b);let x;t[81]===c.balance.availableCreditMicro?x=t[82]:(x=g(c.balance.availableCreditMicro),t[81]=c.balance.availableCreditMicro,t[82]=x);let S;t[83]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,h.jsx)(`span`,{className:`ml-2 text-sm font-medium text-fg-muted`,children:`Credits`}),t[83]=S):S=t[83];let N;t[84]===x?N=t[85]:(N=(0,h.jsxs)(`p`,{className:`mt-1 text-2xl font-semibold tracking-tight text-fg`,children:[x,S]}),t[84]=x,t[85]=N);let P;t[86]!==c.balance.availableCreditMicro||t[87]!==i.zeroBalance?(P=c.balance.availableCreditMicro===`0`?(0,h.jsx)(`p`,{className:`mt-1 text-sm font-medium text-danger`,children:i.zeroBalance}):null,t[86]=c.balance.availableCreditMicro,t[87]=i.zeroBalance,t[88]=P):P=t[88];let F=i.purchased,I;t[89]===c.balance.purchasedCreditMicro?I=t[90]:(I=g(c.balance.purchasedCreditMicro),t[89]=c.balance.purchasedCreditMicro,t[90]=I);let L;t[91]!==i.purchased||t[92]!==I?(L=(0,h.jsxs)(`div`,{children:[F,`: `,I,` Credits`]}),t[91]=i.purchased,t[92]=I,t[93]=L):L=t[93];let R=i.granted,z;t[94]===c.balance.grantedCreditMicro?z=t[95]:(z=g(c.balance.grantedCreditMicro),t[94]=c.balance.grantedCreditMicro,t[95]=z);let B;t[96]!==i.granted||t[97]!==z?(B=(0,h.jsxs)(`div`,{children:[R,`: `,z,` Credits`]}),t[96]=i.granted,t[97]=z,t[98]=B):B=t[98];let V=i.reserved,H=String(BigInt(c.balance.usageReservedCreditMicro)+BigInt(c.balance.refundReservedCreditMicro)),U;t[99]===H?U=t[100]:(U=g(H),t[99]=H,t[100]=U);let W;t[101]!==i.reserved||t[102]!==U?(W=(0,h.jsxs)(`div`,{children:[V,`: `,U,` Credits`]}),t[101]=i.reserved,t[102]=U,t[103]=W):W=t[103];let G;t[104]!==L||t[105]!==B||t[106]!==W?(G=(0,h.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-fg-muted`,children:[L,B,W]}),t[104]=L,t[105]=B,t[106]=W,t[107]=G):G=t[107];let K;t[108]!==c.balance.expiring[0]||t[109]!==i.expiring||t[110]!==o?(K=c.balance.expiring[0]?(0,h.jsx)(`p`,{className:`mt-2 text-xs text-amber-600 dark:text-amber-400`,children:i.expiring.replace(`{{credits}}`,g(c.balance.expiring[0].creditMicro)).replace(`{{date}}`,new Date(c.balance.expiring[0].expiresAt).toLocaleDateString(o))}):null,t[108]=c.balance.expiring[0],t[109]=i.expiring,t[110]=o,t[111]=K):K=t[111],t[112]!==b||t[113]!==N||t[114]!==P||t[115]!==G||t[116]!==K?(M=(0,h.jsxs)(`div`,{children:[b,N,P,G,K]}),t[112]=b,t[113]=N,t[114]=P,t[115]=G,t[116]=K,t[117]=M):M=t[117],t[118]===i.recentUsage?k=t[119]:(k=(0,h.jsx)(`p`,{className:`text-xs font-medium text-fg-subtle`,children:i.recentUsage}),t[118]=i.recentUsage,t[119]=k),A=(0,h.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:a}),D=`mt-2 text-xs text-fg-subtle`,t[120]===i.tokenUsage?O=t[121]:(O=(0,h.jsx)(`summary`,{className:`cursor-pointer`,children:i.tokenUsage}),t[120]=i.tokenUsage,t[121]=O),T=`mt-1`,E=e.format(c.usage.totalTokens),t[22]=c.balance.availableCreditMicro,t[23]=c.balance.expiring[0],t[24]=c.balance.grantedCreditMicro,t[25]=c.balance.purchasedCreditMicro,t[26]=c.balance.refundReservedCreditMicro,t[27]=c.balance.usageReservedCreditMicro,t[28]=c.links.details,t[29]=c.links.purchase,t[30]=c.usage.chargedCreditMicro,t[31]=c.usage.requests,t[32]=c.usage.totalTokens,t[33]=i.availableCredits,t[34]=i.connected,t[35]=i.details,t[36]=i.expiring,t[37]=i.granted,t[38]=i.purchase,t[39]=i.purchased,t[40]=i.recentUsage,t[41]=i.reserved,t[42]=i.title,t[43]=i.tokenUsage,t[44]=i.usageSummary,t[45]=i.zeroBalance,t[46]=o,t[47]=C,t[48]=w,t[49]=T,t[50]=E,t[51]=D,t[52]=O,t[53]=k,t[54]=A,t[55]=j,t[56]=M}else C=t[47],w=t[48],T=t[49],E=t[50],D=t[51],O=t[52],k=t[53],A=t[54],j=t[55],M=t[56];let N;t[122]!==T||t[123]!==E?(N=(0,h.jsxs)(`p`,{className:T,children:[E,` tokens`]}),t[122]=T,t[123]=E,t[124]=N):N=t[124];let P;t[125]!==N||t[126]!==D||t[127]!==O?(P=(0,h.jsxs)(`details`,{className:D,children:[O,N]}),t[125]=N,t[126]=D,t[127]=O,t[128]=P):P=t[128];let F;t[129]!==c.balance.updatedAt||t[130]!==i.updatedAt||t[131]!==o?(F=i.updatedAt.replace(`{{time}}`,new Date(c.balance.updatedAt).toLocaleString(o)),t[129]=c.balance.updatedAt,t[130]=i.updatedAt,t[131]=o,t[132]=F):F=t[132];let I;t[133]===F?I=t[134]:(I=(0,h.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:F}),t[133]=F,t[134]=I);let L;t[135]!==P||t[136]!==I||t[137]!==k||t[138]!==A?(L=(0,h.jsxs)(`div`,{children:[k,A,P,I]}),t[135]=P,t[136]=I,t[137]=k,t[138]=A,t[139]=L):L=t[139];let R;t[140]!==L||t[141]!==j||t[142]!==M?(R=(0,h.jsxs)(`div`,{className:j,children:[M,L]}),t[140]=L,t[141]=j,t[142]=M,t[143]=R):R=t[143];let z;return t[144]!==C||t[145]!==w||t[146]!==R?(z=(0,h.jsxs)(`section`,{className:C,children:[w,R]}),t[144]=C,t[145]=w,t[146]=R,t[147]=z):z=t[147],z}function y(e){return e.language}export{v as t};
@@ -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-CmC8JkSM.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-DlTNQI92.js">
22
- <link rel="modulepreload" crossorigin href="/assets/locale-store-Dr43FCty.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-CdKlPjJM.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,54 +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-BDPMttPx.js">
77
- <link rel="modulepreload" crossorigin href="/assets/session-api-DvgEiNRS.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-CZDvu7uA.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-dvik6t7Z.js">
86
- <link rel="modulepreload" crossorigin href="/assets/use-file-preview-expanded-D5Kk7Hon.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-kE_6v5Dp.js">
90
- <link rel="modulepreload" crossorigin href="/assets/local-session-drafts-kFc_MAA9.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-MCKRMZDK.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-Dg_SqHQE.js">
96
- <link rel="modulepreload" crossorigin href="/assets/capabilities-CEH1AnXc.js">
97
- <link rel="modulepreload" crossorigin href="/assets/use-composer-attachments-Dviq-1f6.js">
98
- <link rel="modulepreload" crossorigin href="/assets/git-branch-Dh9uxTot.js">
99
- <link rel="modulepreload" crossorigin href="/assets/notes-api-BHouNL6-.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-C3vH-Iup.js">
107
- <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-BFK-vlME.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-BD5IgDOA.js">
110
- <link rel="modulepreload" crossorigin href="/assets/gateway-config-swr-Bc2MytsF.js">
111
- <link rel="modulepreload" crossorigin href="/assets/agents-admin-api-BlNGyXpm.js">
112
- <link rel="modulepreload" crossorigin href="/assets/session-manager-BOb1tC_Z.js">
113
- <link rel="modulepreload" crossorigin href="/assets/send-session-input-UAVStisp.js">
114
- <link rel="modulepreload" crossorigin href="/assets/theme-store-BKpYnggg.js">
115
- <link rel="modulepreload" crossorigin href="/assets/extension-provider-BXPILdlw.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">
116
109
  <link rel="modulepreload" crossorigin href="/assets/loopi-Djb8XU3l.js">
117
- <link rel="modulepreload" crossorigin href="/assets/models-hub-cache-C7FAsEe_.js">
110
+ <link rel="modulepreload" crossorigin href="/assets/models-hub-cache-TjpL7hZ5.js">
118
111
  <link rel="modulepreload" crossorigin href="/assets/skill-api-utils-C7V4JVXM.js">
119
112
  <link rel="modulepreload" crossorigin href="/assets/date-formatters-CUZAyDEg.js">
120
113
  <link rel="modulepreload" crossorigin href="/assets/settings-form-draft-Dy10ldo8.js">
121
114
  <link rel="stylesheet" crossorigin href="/assets/markdown-view-Ct4sKkUf.css">
122
115
  <link rel="stylesheet" crossorigin href="/assets/loopi-C09I2mNj.css">
123
- <link rel="stylesheet" crossorigin href="/assets/index-Dgzc0oBu.css">
116
+ <link rel="stylesheet" crossorigin href="/assets/index-a6ZvhclR.css">
124
117
  </head>
125
118
  <body>
126
119
  <div id="root"></div>
package/dist/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  //#region package.json
2
- var version = "0.0.389";
2
+ var version = "0.0.391";
3
3
  //#endregion
4
4
  export { version };
@@ -1,8 +1,9 @@
1
1
  import { __esmMin } from "../../../_virtual/_rolldown/runtime.js";
2
2
  //#region packages/gateway-contract/src/discussions.ts
3
- var DISCUSSION_MAX_DURATION_MS, DISCUSSION_AUDIO_MAX_BYTES, DISCUSSION_CHUNK_MAX_BYTES, DISCUSSION_SEGMENT_MAX_BYTES, DISCUSSION_STATUSES;
3
+ var DISCUSSION_MAX_DURATION_MS, DISCUSSION_MAX_SAVED_DURATION_MS, DISCUSSION_AUDIO_MAX_BYTES, DISCUSSION_CHUNK_MAX_BYTES, DISCUSSION_SEGMENT_MAX_BYTES, DISCUSSION_STATUSES;
4
4
  var init_discussions = __esmMin((() => {
5
5
  DISCUSSION_MAX_DURATION_MS = 7200 * 1e3;
6
+ DISCUSSION_MAX_SAVED_DURATION_MS = DISCUSSION_MAX_DURATION_MS + 5e3;
6
7
  DISCUSSION_AUDIO_MAX_BYTES = 1024 * 1024 * 1024;
7
8
  DISCUSSION_CHUNK_MAX_BYTES = 8 * 1024 * 1024;
8
9
  DISCUSSION_SEGMENT_MAX_BYTES = 2 * 1024 * 1024;
@@ -18,4 +19,4 @@ var init_discussions = __esmMin((() => {
18
19
  }));
19
20
  //#endregion
20
21
  init_discussions();
21
- export { DISCUSSION_AUDIO_MAX_BYTES, DISCUSSION_CHUNK_MAX_BYTES, DISCUSSION_MAX_DURATION_MS, DISCUSSION_SEGMENT_MAX_BYTES, DISCUSSION_STATUSES, init_discussions };
22
+ export { DISCUSSION_AUDIO_MAX_BYTES, DISCUSSION_CHUNK_MAX_BYTES, DISCUSSION_MAX_DURATION_MS, DISCUSSION_MAX_SAVED_DURATION_MS, DISCUSSION_SEGMENT_MAX_BYTES, DISCUSSION_STATUSES, init_discussions };
@@ -46,6 +46,8 @@ import { init_task_result_delivery } from "./task-result-delivery.js";
46
46
  import { init_session_command_rejection } from "./session-command-rejection.js";
47
47
  import { init_personal_proactivity } from "./personal-proactivity.js";
48
48
  import { init_result_reference } from "./result-reference.js";
49
+ import { init_provider_setup } from "./provider-setup.js";
50
+ import { init_recording_outcome } from "./recording-outcome.js";
49
51
  //#region packages/gateway-contract/src/index.ts
50
52
  var init_src = __esmMin((() => {
51
53
  init_agent_stream();
@@ -95,6 +97,8 @@ var init_src = __esmMin((() => {
95
97
  init_personal_proactivity();
96
98
  init_specialists();
97
99
  init_result_reference();
100
+ init_provider_setup();
101
+ init_recording_outcome();
98
102
  }));
99
103
  //#endregion
100
104
  init_src();
@@ -0,0 +1,6 @@
1
+ import { __esmMin } from "../../../_virtual/_rolldown/runtime.js";
2
+ //#region packages/gateway-contract/src/provider-setup.ts
3
+ var init_provider_setup = __esmMin((() => {}));
4
+ //#endregion
5
+ init_provider_setup();
6
+ export { init_provider_setup };
@@ -0,0 +1,6 @@
1
+ import { __esmMin } from "../../../_virtual/_rolldown/runtime.js";
2
+ //#region packages/gateway-contract/src/recording-outcome.ts
3
+ var init_recording_outcome = __esmMin((() => {}));
4
+ //#endregion
5
+ init_recording_outcome();
6
+ export { init_recording_outcome };
@@ -142,6 +142,16 @@ const providers = [
142
142
  model("wan2.7-image", wan(false))
143
143
  ]
144
144
  },
145
+ {
146
+ id: "qwen-token-plan-cn",
147
+ name: "Alibaba Bailian Subscription (China)",
148
+ protocol: "dashscope",
149
+ baseUrl: "https://token-plan.cn-beijing.maas.aliyuncs.com",
150
+ timeoutMs: 6e5,
151
+ documentationUrl: "https://help.aliyun.cn/zh/model-studio/token-plan-multimodal-gen",
152
+ apiKeyUrl: "https://bailian.console.aliyun.com/cn-beijing/subscription/overview",
153
+ models: [model("qwen-image-3.0-pro", cap(1, 0, { sizes: ["1024x1024"] })), model("wan2.7-image", cap(1, 0, { sizes: ["1024x1024"] }))]
154
+ },
145
155
  {
146
156
  id: "minimax",
147
157
  name: "MiniMax",
@@ -1,5 +1,5 @@
1
1
  import { getImageProviderSpec } from "./catalog.js";
2
- import { ImageProviderError, validateImageRequest } from "./validation.js";
2
+ import { ImageProviderError, normalizeImageGeometry, validateImageRequest } from "./validation.js";
3
3
  import { MAX_IMAGE_BYTES, assertImageResponseOk, authenticatedJobUrl, decodeBase64, encodeBase64, imageFromBytes, readBytesLimited, readImageJson, waitForImagePoll } from "./http.js";
4
4
  //#region packages/image-providers/src/execute.ts
5
5
  const object = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : {};
@@ -359,6 +359,10 @@ async function executeImageProvider(execution) {
359
359
  const spec = getImageProviderSpec(execution.providerId);
360
360
  const model = spec.models.find((item) => item.id === execution.request.model);
361
361
  if (!model) throw new ImageProviderError(`Unsupported image model: ${execution.request.model}`, 400);
362
+ execution = {
363
+ ...execution,
364
+ request: normalizeImageGeometry(execution.request, model.capabilities, Boolean(execution.request.inputImages?.length))
365
+ };
362
366
  validateImageRequest(execution.request, model.capabilities);
363
367
  const maxPrompt = spec.protocol === "zhipu" ? 1e3 : spec.protocol === "tokenhub" && model.id === "hy-image-v3" ? 8192 : spec.protocol === "dashscope" && model.id.startsWith("wan") ? 5e3 : Infinity;
364
368
  if ([...execution.request.prompt].length > maxPrompt) throw new ImageProviderError("Image prompt exceeds model limit", 400);
@@ -40,6 +40,24 @@ function validateImageRequest(request, caps) {
40
40
  if (request.background && !caps.output?.backgrounds?.includes(request.background)) fail(`Unsupported image background: ${request.background}`);
41
41
  if (request.background === "transparent" && request.outputFormat === "jpeg") fail("Transparent images require PNG or WebP");
42
42
  }
43
+ /** Translate ratios only when the selected model has an exact supported pixel size. */
44
+ function normalizeImageGeometry(request, caps, editing = false) {
45
+ const mode = editing ? caps.edit : caps.generate;
46
+ if (!request.aspectRatio || mode?.supportsAspectRatio || !mode?.supportsSize || request.resolution) return request;
47
+ const ratio = /^(\d+):(\d+)$/.exec(request.aspectRatio);
48
+ if (!ratio || Number(ratio[1]) <= 0 || Number(ratio[2]) <= 0) return request;
49
+ const geometry = editing && caps.edit?.geometry ? caps.edit.geometry : caps.geometry;
50
+ const size = (request.size ? [request.size] : geometry?.sizes ?? []).find((value) => {
51
+ const dimensions = /^(\d+)x(\d+)$/.exec(value);
52
+ return dimensions && Number(dimensions[1]) * Number(ratio[2]) === Number(dimensions[2]) * Number(ratio[1]) && isSupportedImageSize(value, geometry);
53
+ });
54
+ if (!size) return request;
55
+ const { aspectRatio: _aspectRatio, ...rest } = request;
56
+ return {
57
+ ...rest,
58
+ size
59
+ };
60
+ }
43
61
  function isSupportedImageSize(size, geometry) {
44
62
  if (geometry?.sizes?.includes(size)) return true;
45
63
  const match = /^(\d+)x(\d+)$/.exec(size);
@@ -49,4 +67,4 @@ function isSupportedImageSize(size, geometry) {
49
67
  return width >= bounds.minEdge && height >= bounds.minEdge && width <= bounds.maxEdge && height <= bounds.maxEdge && width % bounds.step === 0 && height % bounds.step === 0 && pixels >= bounds.minPixels && pixels <= bounds.maxPixels && Math.max(width / height, height / width) <= bounds.maxRatio;
50
68
  }
51
69
  //#endregion
52
- export { ImageProviderError, isSupportedImageSize, validateImageRequest };
70
+ export { ImageProviderError, isSupportedImageSize, normalizeImageGeometry, validateImageRequest };
@@ -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({
@@ -10,5 +10,4 @@ export interface RunUserModelReviewParams {
10
10
  getConfig: () => Config | undefined;
11
11
  }
12
12
  export declare function createBackgroundUserModelReviewTask(params: RunUserModelReviewParams): () => Promise<void>;
13
- /** Persisted job runner; independent of an interactive Agent instance surviving eviction. */
14
13
  export declare function runPersistentLearningJob(job: LearningJob, getConfig: () => Config | undefined): Promise<void>;
@@ -8,6 +8,7 @@ import { init_sqlite } from "../../storage/sqlite/index.js";
8
8
  import { extractTextContent } from "../context/workspace.js";
9
9
  import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
10
10
  import { failLearningJob, finishLearningJob, learningPolicyHash } from "../../memory-learning/repository.js";
11
+ import { init_model_usage, withModelUsageOrigin } from "../../providers/model-usage.js";
11
12
  import { extractProfileAgentId } from "../../config/agent-profile.js";
12
13
  import { resolveModelIntentRef, resolveModelSelector } from "../../config/agent-model-intents.js";
13
14
  import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/sync-provider-auth.js";
@@ -28,6 +29,7 @@ import { getAssistantTurnErrorMessage, getLastAssistantMessage, isAssistantTurnA
28
29
  import { USER_MODEL_MAINTAINER_SYSTEM_PROMPT, buildUserModelInterpreterPrompt } from "./prompts.js";
29
30
  import { Agent } from "@earendil-works/pi-agent-core";
30
31
  //#region src/agent/background-review/run-background-review.ts
32
+ init_model_usage();
31
33
  init_transaction();
32
34
  init_sync_provider_auth();
33
35
  init_providers();
@@ -214,7 +216,7 @@ async function interpret(params) {
214
216
  }
215
217
  return interpretation;
216
218
  }
217
- async function executeReview(params) {
219
+ async function executeReviewInner(params) {
218
220
  const runtime = resolveInterpreterRuntime(params);
219
221
  if (!runtime) return emptyUserModelCaptureResult();
220
222
  const extraction = claimRegisteredExtraction({
@@ -318,7 +320,7 @@ function listAvailableAssertions() {
318
320
  });
319
321
  }
320
322
  /** Persisted job runner; independent of an interactive Agent instance surviving eviction. */
321
- async function runPersistentLearningJob(job, getConfig) {
323
+ async function runPersistentLearningJobInner(job, getConfig) {
322
324
  const config = getConfig();
323
325
  if (!config || !resolveUserContextSessionAccess(config, job.conversation_id).enabled || learningPolicyHash(config) !== job.policy_hash) {
324
326
  failLearningJob(job, "policy_changed", true);
@@ -474,5 +476,11 @@ async function runPersistentLearningJob(job, getConfig) {
474
476
  errorCode: "lease_lost"
475
477
  });
476
478
  }
479
+ async function executeReview(params) {
480
+ return withModelUsageOrigin("background", () => executeReviewInner(params));
481
+ }
482
+ async function runPersistentLearningJob(job, getConfig) {
483
+ return withModelUsageOrigin("background", () => runPersistentLearningJobInner(job, getConfig));
484
+ }
477
485
  //#endregion
478
486
  export { createBackgroundUserModelReviewTask, runPersistentLearningJob };
@@ -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 };
@@ -2,6 +2,7 @@ import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { parseTurnOutcome } from "../../../packages/gateway-contract/src/turn-outcome.js";
4
4
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
5
+ import { assertProviderUsage, getModelUsageOrigin, init_model_usage, isProviderUsageScopeError } from "../../providers/model-usage.js";
5
6
  import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
6
7
  import { init_providers, resolveModel } from "../../providers/index.js";
7
8
  import { appendDynamicPromptSection } from "../prompt/cache-boundary.js";
@@ -25,6 +26,7 @@ import { materializeNativeExternalTools } from "./external-tool-discovery.js";
25
26
  import { getTaskContinuation, getTaskExecutionDeadline } from "../../tasks/task-continuation.js";
26
27
  import crypto from "node:crypto";
27
28
  //#region src/agent/embedded/run-for-session.ts
29
+ init_model_usage();
28
30
  init_src();
29
31
  init_logger();
30
32
  init_providers();
@@ -114,15 +116,26 @@ async function runEmbeddedTurnForSessionInner(params) {
114
116
  const mm = modelManager;
115
117
  const configuredModelRef = String(mm.getModelForSession(conversationId));
116
118
  const candidates = typeof mm.getFallbackCandidatesForSession === "function" ? mm.getFallbackCandidatesForSession(conversationId) : [];
117
- const candidateModelRefs = candidates.length > 0 ? candidates.map((candidate) => `${candidate.provider}/${candidate.model}`) : [configuredModelRef];
119
+ const effective = config ? resolveEffectiveAgentProfileForSession(conversationId).config : void 0;
120
+ const background = getModelUsageOrigin() === "background" && !mm.hasSessionModelOverride?.(conversationId) && configuredModelRef === effective?.models.chat.primary ? effective.models.background : void 0;
121
+ const candidateModelRefs = background ? [background.primary, ...background.fallbacks] : candidates.length > 0 ? candidates.map((candidate) => `${candidate.provider}/${candidate.model}`) : [configuredModelRef];
122
+ const selectedRef = background?.primary ?? configuredModelRef;
123
+ assertProviderUsage(selectedRef.split("/")[0]);
124
+ try {
125
+ const selected = !background && typeof mm.getResolvedModelForSession === "function" ? mm.getResolvedModelForSession(conversationId) : resolveModel(selectedRef);
126
+ assertProviderUsage(selected.provider, selected.baseUrl);
127
+ } catch (error) {
128
+ if (isProviderUsageScopeError(error)) throw error;
129
+ }
118
130
  const resolvedCandidates = [];
119
131
  for (const [index, ref] of candidateModelRefs.entries()) try {
120
- const resolved = index === 0 && typeof mm.getResolvedModelForSession === "function" ? mm.getResolvedModelForSession(conversationId) : resolveModel(ref);
132
+ const resolved = !background && index === 0 && typeof mm.getResolvedModelForSession === "function" ? mm.getResolvedModelForSession(conversationId) : resolveModel(ref);
121
133
  resolvedCandidates.push({
122
134
  ref,
123
135
  model: resolved
124
136
  });
125
137
  } catch (err) {
138
+ if (index === 0) assertProviderUsage(ref.split("/")[0]);
126
139
  log.warn({
127
140
  err,
128
141
  conversationId,
@@ -134,6 +147,7 @@ async function runEmbeddedTurnForSessionInner(params) {
134
147
  if (!primary) throw new Error(`No available model candidates for '${configuredModelRef}'`);
135
148
  const modelRef = primary.ref;
136
149
  const model = primary.model;
150
+ assertProviderUsage(model.provider, model.baseUrl);
137
151
  if (typeof mm.applyResolvedModel === "function") mm.applyResolvedModel(agent, model, modelRef);
138
152
  else await mm.applyModelForSession(agent, conversationId);
139
153
  agentManager.setModelForSession(conversationId, modelRef);
@@ -155,7 +169,7 @@ async function runEmbeddedTurnForSessionInner(params) {
155
169
  triggerThreshold: idlePolicy.personalIdle.triggerThreshold
156
170
  });
157
171
  if (budget.estimatedTokens <= budget.triggerTokens || messages.length < idlePolicy.minMessagesBeforeCompact) return "skipped";
158
- const summaryModel = idlePolicy.personalIdle.model ?? idlePolicy.model;
172
+ const summaryModel = idlePolicy.personalIdle.model ?? idlePolicy.model ?? effective?.models.background?.primary;
159
173
  const candidate = await sessionStore.prepareCompaction(conversationId, summaryModel ? resolveModel(summaryModel) : model, {
160
174
  ...idlePolicy,
161
175
  keepRecentTokens: idlePolicy.personalIdle.keepRecentTokens,
@@ -322,6 +336,10 @@ async function runEmbeddedTurnForSessionInner(params) {
322
336
  return await finish(turnResult);
323
337
  }
324
338
  lastResult = turnResult;
339
+ if (isProviderUsageScopeError(turnResult.errorMessage)) return await finish({
340
+ ...turnResult,
341
+ retryable: false
342
+ });
325
343
  if (supervisor.signal.aborted || turnResult.retryable === false) break;
326
344
  log.warn({
327
345
  conversationId,
@@ -334,6 +352,11 @@ async function runEmbeddedTurnForSessionInner(params) {
334
352
  }, hasNextCandidate ? "Agent model turn failed, trying fallback" : "Agent model turn failed, no fallback remains");
335
353
  } catch (err) {
336
354
  attempt.finish("error", err instanceof Error ? err.message : String(err));
355
+ if (isProviderUsageScopeError(err)) return await finish({
356
+ ok: false,
357
+ retryable: false,
358
+ errorMessage: err instanceof Error ? err.message : String(err)
359
+ });
337
360
  lastError = err;
338
361
  if (err instanceof DOMException && err.name === "AbortError") {
339
362
  await finish({