@xopcai/xopc 0.0.420 → 0.0.421

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 (324) 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-DnqOM8GN.js → activity-store-CKrylgib.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-1UABT2KS.js → agent-avatar-dicebear-Dv5Rda4y.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-avatar-display-B1ycycx2.js +2 -0
  6. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D285zy0S.js +1 -0
  7. package/dist/gateway/static/root/assets/agent-plugin-dialog-D3yCqVan.js +1 -0
  8. package/dist/gateway/static/root/assets/{agents-O7mago-m.js → agents-DyAuR3rG.js} +5 -5
  9. package/dist/gateway/static/root/assets/{agents-admin-api-CyjykMEh.js → agents-admin-api-CASGzvkW.js} +1 -1
  10. package/dist/gateway/static/root/assets/{api-C1dxxDZx.js → api-C4LxuNzq.js} +1 -1
  11. package/dist/gateway/static/root/assets/{api-Ddrs70xV.js → api-Uk05lF9i.js} +1 -1
  12. package/dist/gateway/static/root/assets/app-management-settings-panel-CDnZNKHt.js +1 -0
  13. package/dist/gateway/static/root/assets/appearance-settings-CmCF7PZ5.js +1 -0
  14. package/dist/gateway/static/root/assets/apps-page-BR9qoA2P.js +1 -0
  15. package/dist/gateway/static/root/assets/{archive-plugin-n5lPr79c.js → archive-plugin-nuHYYVty.js} +1 -1
  16. package/dist/gateway/static/root/assets/automation-api-DtJfd1QM.js +1 -0
  17. package/dist/gateway/static/root/assets/automation-display-BlGt8MAC.js +2 -0
  18. package/dist/gateway/static/root/assets/automation-task-card-Cp3RIw5d.js +2 -0
  19. package/dist/gateway/static/root/assets/{automations-page-oLsNzu_6.js → automations-page-DM4IdUJh.js} +1 -1
  20. package/dist/gateway/static/root/assets/automations-workspace-CXLu04I-.js +9 -0
  21. package/dist/gateway/static/root/assets/{binary-plugins-D9VW7dWP.js → binary-plugins-CHCAr8jt.js} +1 -1
  22. package/dist/gateway/static/root/assets/{block-editor-C477bTtO.js → block-editor-B0v8KxsO.js} +4 -4
  23. package/dist/gateway/static/root/assets/{browser-automation-inputs-CCiYXxmh.js → browser-automation-inputs-DjUW7PEB.js} +1 -1
  24. package/dist/gateway/static/root/assets/browser-automations-page-Cf8AoQz1.js +3 -0
  25. package/dist/gateway/static/root/assets/{browser-control-api-Y3fvmeBk.js → browser-control-api-C6NZgaA1.js} +1 -1
  26. package/dist/gateway/static/root/assets/{browser-settings-page-DjkGahlz.js → browser-settings-page-DV2FNEDf.js} +2 -2
  27. package/dist/gateway/static/root/assets/{capabilities-DAyA681v.js → capabilities-CwdjWz2r.js} +1 -1
  28. package/dist/gateway/static/root/assets/{capabilities-DRVXLssH.js → capabilities-D0-HCZ5J.js} +1 -1
  29. package/dist/gateway/static/root/assets/capabilities-page-DwDkritH.js +2 -0
  30. package/dist/gateway/static/root/assets/capabilities-settings-panel-mme16Fbp.js +8 -0
  31. package/dist/gateway/static/root/assets/channels-lKFLu8p-.js +1 -0
  32. package/dist/gateway/static/root/assets/{chat-agents-api-D5nR_JVe.js → chat-agents-api-l80cvSac.js} +1 -1
  33. package/dist/gateway/static/root/assets/{chat-chart-block-K2t333qv.js → chat-chart-block-BwP5QXEk.js} +1 -1
  34. package/dist/gateway/static/root/assets/chat-page-CT3K7lFT.js +71 -0
  35. package/dist/gateway/static/root/assets/{chat-terminal-dock-CkFG6mA3.js → chat-terminal-dock-D2bV9YUL.js} +2 -2
  36. package/dist/gateway/static/root/assets/{list-filter-COkzTdOz.js → clipboard-copy-DuJk5WD6.js} +1 -1
  37. package/dist/gateway/static/root/assets/{command-palette-api-Do_66X1B.js → command-palette-api-CtapG8ck.js} +1 -1
  38. package/dist/gateway/static/root/assets/composer-payload-handoff-DYuhKZRC.js +1 -0
  39. package/dist/gateway/static/root/assets/{computer-settings-page-DBxOcMko.js → computer-settings-page-DZtMuihL.js} +1 -1
  40. package/dist/gateway/static/root/assets/connected-providers-grid-BQH5k3iC.js +1 -0
  41. package/dist/gateway/static/root/assets/{connector-service-page-rWpnchb3.js → connector-service-page-DrvFdP3G.js} +1 -1
  42. package/dist/gateway/static/root/assets/{connectors-api-DIBG72k4.js → connectors-api-BzkgVBYC.js} +1 -1
  43. package/dist/gateway/static/root/assets/connectors-page-BtRNVCFy.js +1 -0
  44. package/dist/gateway/static/root/assets/{date-picker-CE-cZFCU.js → date-picker-ByTasrfl.js} +1 -1
  45. package/dist/gateway/static/root/assets/{dependency-picker-7SpSfDSg.js → dependency-picker-Dh8hPmsT.js} +1 -1
  46. package/dist/gateway/static/root/assets/desktop-pet-CFz8bqyI.js +1 -0
  47. package/dist/gateway/static/root/assets/desktop-pet-settings-COaboNn1.js +1 -0
  48. package/dist/gateway/static/root/assets/{dev-view-store-57HgVuZ6.js → dev-view-store-D8XYHVqG.js} +1 -1
  49. package/dist/gateway/static/root/assets/device-pairing-wizard-BKMpLdIA.js +1 -0
  50. package/dist/gateway/static/root/assets/{directory-picker-path-field-D4jMhpka.js → directory-picker-path-field-Cjv7rdo3.js} +1 -1
  51. package/dist/gateway/static/root/assets/discussion-annotation-sync-YvlVw17j.js +1 -0
  52. package/dist/gateway/static/root/assets/{dist-DNCdG_qB.js → dist-D3lWNSe7.js} +1 -1
  53. package/dist/gateway/static/root/assets/{extension-debug-page-BsK2LMXQ.js → extension-debug-page-CXx3m5-B.js} +1 -1
  54. package/dist/gateway/static/root/assets/extension-iframe-host-CnOdNwbo.js +1 -0
  55. package/dist/gateway/static/root/assets/{extension-marketplace-api-CVJPqJOB.js → extension-marketplace-api-BABmUY2s.js} +1 -1
  56. package/dist/gateway/static/root/assets/extension-page-C1nGr4DD.js +1 -0
  57. package/dist/gateway/static/root/assets/{extension-provider-Byrd8Sor.js → extension-provider-BA0Y2Rvs.js} +1 -1
  58. package/dist/gateway/static/root/assets/extension-settings-page-QIPI8e7k.js +1 -0
  59. package/dist/gateway/static/root/assets/{file-preview-surface-BlprUrIs.js → file-preview-surface-BsB7bnFH.js} +1 -1
  60. package/dist/gateway/static/root/assets/{gateway-config-swr-BAmUhiP1.js → gateway-config-swr-Bt8w0Iio.js} +1 -1
  61. package/dist/gateway/static/root/assets/{gateway-realtime-CsykKL4l.js → gateway-realtime-CyCCNUxm.js} +1 -1
  62. package/dist/gateway/static/root/assets/gateway-realtime-store-0gmDfPeP.js +1 -0
  63. package/dist/gateway/static/root/assets/gateway-restart-Ty4AzDxa.js +1 -0
  64. package/dist/gateway/static/root/assets/{gateway-settings-BA5-Uuwx.js → gateway-settings-BvKq7vuz.js} +1 -1
  65. package/dist/gateway/static/root/assets/{gateway-startup-retry-CtUB3g6N.js → gateway-startup-retry-N3k-C7c2.js} +1 -1
  66. package/dist/gateway/static/root/assets/{global-defaults-api-CINf-C6a.js → global-defaults-api-D8EB2vfY.js} +1 -1
  67. package/dist/gateway/static/root/assets/home-page-eRuAzi58.js +2 -0
  68. package/dist/gateway/static/root/assets/image-generation-api-C99Fsofm.js +1 -0
  69. package/dist/gateway/static/root/assets/{imports-page-BWShtGRQ.js → imports-page-Cp9RquVb.js} +1 -1
  70. package/dist/gateway/static/root/assets/index-6vVrWfwM.js +11 -0
  71. package/dist/gateway/static/root/assets/index-DDGK6klk.css +1 -0
  72. package/dist/gateway/static/root/assets/install-connector-dialog-CsoAidXp.js +1 -0
  73. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CdM4BQwp.js → keyboard-shortcuts-settings-DFhOP2aD.js} +1 -1
  74. package/dist/gateway/static/root/assets/list-filter-CIPvpfLA.js +1 -0
  75. package/dist/gateway/static/root/assets/local-app-workbench-page-DbtU_A-l.js +1 -0
  76. package/dist/gateway/static/root/assets/{local-apps-page-CxyRVfjD.js → local-apps-page-rjhHfLpe.js} +1 -1
  77. package/dist/gateway/static/root/assets/{local-session-drafts-B9ZPwotC.js → local-session-drafts-DHM4vWDO.js} +1 -1
  78. package/dist/gateway/static/root/assets/{locale-store-lIXD1FMw.js → locale-store-5Hf8J8-_.js} +1 -1
  79. package/dist/gateway/static/root/assets/logs-page-Dx_JIOpF.js +2 -0
  80. package/dist/gateway/static/root/assets/management-settings-CuSzixOw.js +1 -0
  81. package/dist/gateway/static/root/assets/{markdown-view-CJt-i2Dp.js → markdown-view-pzSRu7av.js} +3 -3
  82. package/dist/gateway/static/root/assets/{media-plugins-D_bR23mA.js → media-plugins-3cJuHbO7.js} +1 -1
  83. package/dist/gateway/static/root/assets/messages-uXxg5p54.js +3 -0
  84. package/dist/gateway/static/root/assets/model-selector-ksLo-5B_.js +1 -0
  85. package/dist/gateway/static/root/assets/{models-hub-cache-za2fWJLg.js → models-hub-cache-DhZng2nF.js} +1 -1
  86. package/dist/gateway/static/root/assets/navigation-D62kPsA9.js +1 -0
  87. package/dist/gateway/static/root/assets/note-detail-panel-B6RbjwJq.js +5 -0
  88. package/dist/gateway/static/root/assets/note-image-lightbox-BCjvBqwy.js +1 -0
  89. package/dist/gateway/static/root/assets/{notes-api-C_458rv5.js → notes-api-DocbsBbT.js} +1 -1
  90. package/dist/gateway/static/root/assets/notes-page-B7889s6-.js +8 -0
  91. package/dist/gateway/static/root/assets/{oauth-api-C3X9FLYw.js → oauth-api-CCFIPbA0.js} +1 -1
  92. package/dist/gateway/static/root/assets/{oauth-provider-connect-H81se_3n.js → oauth-provider-connect-GxkF0vWJ.js} +1 -1
  93. package/dist/gateway/static/root/assets/open-capability-settings-Cvb65hQB.js +1 -0
  94. package/dist/gateway/static/root/assets/{page-context-capture-button-BkAlQ7cB.js → page-context-capture-button-CvWLVeRA.js} +1 -1
  95. package/dist/gateway/static/root/assets/{page-context-draft-ClLgaOaD.js → page-context-draft-CMRDNv4d.js} +1 -1
  96. package/dist/gateway/static/root/assets/page-header-store-reh1es-3.js +1 -0
  97. package/dist/gateway/static/root/assets/{personal-avatar-BLtHt8fV.js → personal-avatar-CqNJ48Ge.js} +1 -1
  98. package/dist/gateway/static/root/assets/personal-page-D95FHaw9.js +1 -0
  99. package/dist/gateway/static/root/assets/personal-settings-panel-DAcl8DU4.js +1 -0
  100. package/dist/gateway/static/root/assets/{phone-dependencies-card-DISHarj8.js → phone-dependencies-card-DLWblGj7.js} +1 -1
  101. package/dist/gateway/static/root/assets/phone-model-picker-ugrT9GJu.js +1 -0
  102. package/dist/gateway/static/root/assets/phone-settings-page-DIIt7JOE.js +1 -0
  103. package/dist/gateway/static/root/assets/{phone-workspace-store-fhnZrgy_.js → phone-workspace-store-mawKT5kV.js} +1 -1
  104. package/dist/gateway/static/root/assets/plugin-details-dialog-BdueMT3q.js +1 -0
  105. package/dist/gateway/static/root/assets/popover-select-DD8fmrxH.js +1 -0
  106. package/dist/gateway/static/root/assets/preference-select-fields-CmLZNwbm.js +1 -0
  107. package/dist/gateway/static/root/assets/product-automation-feedback-DYwhL37Y.js +7 -0
  108. package/dist/gateway/static/root/assets/{product-open-page-xn9G4hSI.js → product-open-page-B5G4X71t.js} +1 -1
  109. package/dist/gateway/static/root/assets/{product-preview-content-DcoK-iZe.js → product-preview-content-BUheyLqt.js} +1 -1
  110. package/dist/gateway/static/root/assets/{product-preview-modal-Ruw9WSKK.js → product-preview-modal-Cj_Zxu4G.js} +2 -2
  111. package/dist/gateway/static/root/assets/project-detail-page-CRJb69vP.js +7 -0
  112. package/dist/gateway/static/root/assets/project-understanding-D3w8cZEm.js +1 -0
  113. package/dist/gateway/static/root/assets/projects-page-CkifzKjz.js +1 -0
  114. package/dist/gateway/static/root/assets/{providers-api-CzVkFKFg.js → providers-api-CKFg2PZQ.js} +1 -1
  115. package/dist/gateway/static/root/assets/{recording-upload-0jxahBMo.js → recording-upload-ZkmRf0GR.js} +1 -1
  116. package/dist/gateway/static/root/assets/{registry-api-n8TwtJ_j.js → registry-api-B1Mh3bNo.js} +1 -1
  117. package/dist/gateway/static/root/assets/{remote-access-hub-cZpBi4Rk.js → remote-access-hub-Dw5rG-aA.js} +1 -1
  118. package/dist/gateway/static/root/assets/resource-unavailable-BUWsH3fp.js +1 -0
  119. package/dist/gateway/static/root/assets/route-preload-CRKbVwQ1.js +2 -0
  120. package/dist/gateway/static/root/assets/runtime-impact-DbySfhdp.js +1 -0
  121. package/dist/gateway/static/root/assets/{runtime-tools-api-D-8KjYK6.js → runtime-tools-api-BXvn5ImA.js} +1 -1
  122. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-BALcypHp.js +1 -0
  123. package/dist/gateway/static/root/assets/schema-form-BKeP5G7b.js +1 -0
  124. package/dist/gateway/static/root/assets/service-recommendation-list-CpVUnz89.js +1 -0
  125. package/dist/gateway/static/root/assets/{session-api-CsCoI2im.js → session-api-VquhIBHI.js} +1 -1
  126. package/dist/gateway/static/root/assets/session-manager-DNMosCtW.js +23 -0
  127. package/dist/gateway/static/root/assets/sessions-page-DlvPkE5Y.js +1 -0
  128. package/dist/gateway/static/root/assets/settings-advanced-gate-Ckc1aCLG.js +1 -0
  129. package/dist/gateway/static/root/assets/{settings-advanced-section-BqoVSko2.js → settings-advanced-section-c9_iZ-46.js} +1 -1
  130. package/dist/gateway/static/root/assets/{settings-mode-store-CBsJ-Qg2.js → settings-mode-store-Dem6-TBe.js} +1 -1
  131. package/dist/gateway/static/root/assets/{settings-page-DROUGyJl.js → settings-page-B_wNfFQe.js} +1 -1
  132. package/dist/gateway/static/root/assets/{settings-page-header-Bv-kQFTm.js → settings-page-header-C8a_oOyw.js} +1 -1
  133. package/dist/gateway/static/root/assets/{settings-page-layout-DHP6MrrL.js → settings-page-layout-CTSRWljG.js} +1 -1
  134. package/dist/gateway/static/root/assets/setup-status-panel-BNZoqF40.js +1 -0
  135. package/dist/gateway/static/root/assets/{share-link-dialog-BJHRQVKC.js → share-link-dialog-C5JTTxsy.js} +1 -1
  136. package/dist/gateway/static/root/assets/share-preview-page-D-KxzXgm.js +2 -0
  137. package/dist/gateway/static/root/assets/{shares-api-rtWVHA_d.js → shares-api-CztKbxdd.js} +1 -1
  138. package/dist/gateway/static/root/assets/shares-settings-CzR21j6e.js +1 -0
  139. package/dist/gateway/static/root/assets/skill-api-B7kWl6LK.js +1 -0
  140. package/dist/gateway/static/root/assets/{skill-list-api-BzlKXPsE.js → skill-list-api-Cn07P6qZ.js} +1 -1
  141. package/dist/gateway/static/root/assets/{skill-reload-api-Cff2GgZb.js → skill-reload-api-Bhl0u16_.js} +1 -1
  142. package/dist/gateway/static/root/assets/skills-page-BmkuxHZe.js +2 -0
  143. package/dist/gateway/static/root/assets/{system-settings-panel-BeQeUUMH.js → system-settings-panel-Ce6zIcki.js} +1 -1
  144. package/dist/gateway/static/root/assets/task-detail-page-CysJhG3B.js +2 -0
  145. package/dist/gateway/static/root/assets/task-result-evidence-CGZKMnNo.js +1 -0
  146. package/dist/gateway/static/root/assets/{terminal-panel-store-5Fzctajw.js → terminal-panel-store-YwLUkuyV.js} +1 -1
  147. package/dist/gateway/static/root/assets/{theme-store-DW45fWYQ.js → theme-store-DOJ9tu-j.js} +1 -1
  148. package/dist/gateway/static/root/assets/tracing-settings-page-BplBpTdL.js +1 -0
  149. package/dist/gateway/static/root/assets/tunnel-api-B5-Ypvqa.js +1 -0
  150. package/dist/gateway/static/root/assets/{understanding-activity-store-CTe6TFB0.js → understanding-activity-store-CmwtE8Kd.js} +1 -1
  151. package/dist/gateway/static/root/assets/{understanding-refresh-store-mE9OKG6q.js → understanding-refresh-store-9apSmAVL.js} +1 -1
  152. package/dist/gateway/static/root/assets/usage-page-cPbirpXX.js +1 -0
  153. package/dist/gateway/static/root/assets/{use-autosave-Cs2Ga_Y_.js → use-autosave-B3p2QWaF.js} +1 -1
  154. package/dist/gateway/static/root/assets/use-composer-attachments-D-AEYC85.js +2 -0
  155. package/dist/gateway/static/root/assets/use-file-preview-expanded-CO4SC-LX.js +2 -0
  156. package/dist/gateway/static/root/assets/{use-personal-profile-BHL2AxWU.js → use-personal-profile-DocmhC9I.js} +1 -1
  157. package/dist/gateway/static/root/assets/{use-workspace-tree-CnmPZrpx.js → use-workspace-tree-VraTGKx-.js} +1 -1
  158. package/dist/gateway/static/root/assets/user-model-page-DuRALzhe.js +2 -0
  159. package/dist/gateway/static/root/assets/{voice-api-key-field-3gyc2UV3.js → voice-api-key-field-DbSQHZZW.js} +1 -1
  160. package/dist/gateway/static/root/assets/{voice-config-api-Cda2uBIC.js → voice-config-api-D9iNJSvm.js} +1 -1
  161. package/dist/gateway/static/root/assets/{voice-input-shortcut-events-DtYHsPLF.js → voice-input-shortcut-events-hso9_VvT.js} +1 -1
  162. package/dist/gateway/static/root/assets/voice-transcribe-api-BqIs0jgv.js +1 -0
  163. package/dist/gateway/static/root/assets/{work-discovery-overlay-Dqu5CQCS.js → work-discovery-overlay-fsL9RJqB.js} +1 -1
  164. package/dist/gateway/static/root/assets/work-discovery-page-DAQPKVDs.js +1 -0
  165. package/dist/gateway/static/root/assets/{working-directory-picker-modal-DHl2cZY1.js → working-directory-picker-modal-Ta73QrNw.js} +1 -1
  166. package/dist/gateway/static/root/assets/{workspace-api-CtDbI6T7.js → workspace-api-CgrcNyBc.js} +2 -2
  167. package/dist/gateway/static/root/assets/workspace-editor-agent-store-Dw6wtadX.js +1 -0
  168. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-CTIbUfKb.js → workspace-file-preview-dialog-B7uBuPtA.js} +1 -1
  169. package/dist/gateway/static/root/assets/{workspace-open-location-menu-BwxouqdZ.js → workspace-open-location-menu-Bi2vRvaQ.js} +1 -1
  170. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-CFb-23rS.js → xopc-cloud-account-card-CCOOBG-7.js} +1 -1
  171. package/dist/gateway/static/root/index.html +86 -81
  172. package/dist/package.js +1 -1
  173. package/dist/packages/gateway-contract/src/index.js +2 -0
  174. package/dist/packages/gateway-contract/src/task-display.js +14 -0
  175. package/dist/src/agent/agent-manager.js +1 -1
  176. package/dist/src/agent/background-review/run-background-review.js +1 -1
  177. package/dist/src/agent/context/execution-scope.js +10 -5
  178. package/dist/src/agent/external-tools/cliProvider.js +2 -2
  179. package/dist/src/agent/external-tools/composio-provider.js +2 -2
  180. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  181. package/dist/src/agent/service.js +1 -1
  182. package/dist/src/agent/skills/index.js +1 -1
  183. package/dist/src/agent/skills/managed-store.js +1 -1
  184. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  185. package/dist/src/agent/tools/automation-tool.d.ts +2 -1
  186. package/dist/src/agent/tools/automation-tool.js +10 -3
  187. package/dist/src/agent/tools/factory.js +1 -0
  188. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  189. package/dist/src/agent/tools/personal-task-tool.js +2 -1
  190. package/dist/src/agent/tools/xopc-use-tool.js +7 -5
  191. package/dist/src/agent-catalog/capabilities.js +2 -2
  192. package/dist/src/agent-catalog/repository.js +1 -1
  193. package/dist/src/automations/api/routes.js +38 -0
  194. package/dist/src/automations/capabilities/drafts.js +1 -1
  195. package/dist/src/automations/capabilities/write.js +25 -9
  196. package/dist/src/automations/configuration-conversation.d.ts +16 -0
  197. package/dist/src/automations/configuration-conversation.js +120 -0
  198. package/dist/src/automations/delivery/delivery-router.d.ts +2 -0
  199. package/dist/src/automations/delivery/delivery-router.js +30 -9
  200. package/dist/src/automations/domain/types.d.ts +1 -0
  201. package/dist/src/automations/index.js +5 -5
  202. package/dist/src/automations/service/action-executor.js +41 -12
  203. package/dist/src/automations/service/automation-service.d.ts +6 -0
  204. package/dist/src/automations/service/automation-service.js +47 -12
  205. package/dist/src/automations/service/index.js +2 -2
  206. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  207. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  208. package/dist/src/capabilities/runtime/product.js +1 -1
  209. package/dist/src/cli/commands/agents.js +1 -1
  210. package/dist/src/cli/commands/models.js +1 -1
  211. package/dist/src/cli/commands/onboard/model.js +1 -1
  212. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  213. package/dist/src/computer/broker.js +16 -3
  214. package/dist/src/computer/diagnostics.js +1 -1
  215. package/dist/src/computer/errors.js +4 -0
  216. package/dist/src/config/agent-profile.js +1 -1
  217. package/dist/src/execution-environments/local-worktree-manager.js +1 -1
  218. package/dist/src/extensions/agent-plugins/skill-catalog.js +1 -1
  219. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  220. package/dist/src/gateway/agents-admin.js +2 -2
  221. package/dist/src/gateway/automation-completion-delivery.d.ts +4 -0
  222. package/dist/src/gateway/automation-completion-delivery.js +14 -0
  223. package/dist/src/gateway/global-defaults-admin.js +1 -1
  224. package/dist/src/gateway/hono/routes/agents.js +1 -1
  225. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  226. package/dist/src/gateway/hono/routes/notes.js +2 -2
  227. package/dist/src/gateway/hono/routes/phone-setup.js +1 -1
  228. package/dist/src/gateway/hono/routes/projects.js +2 -2
  229. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  230. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  231. package/dist/src/gateway/image-generation-setup.js +1 -1
  232. package/dist/src/gateway/respawn.js +2 -1
  233. package/dist/src/gateway/service.js +4 -4
  234. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  235. package/dist/src/imports/importService.js +1 -1
  236. package/dist/src/local-apps/service.js +1 -1
  237. package/dist/src/observability/store.d.ts +9 -0
  238. package/dist/src/observability/store.js +77 -32
  239. package/dist/src/personal-agent/communication.d.ts +1 -1
  240. package/dist/src/personal-agent/communication.js +3 -6
  241. package/dist/src/personal-agent/request-service.js +2 -1
  242. package/dist/src/personal-agent/service.js +1 -1
  243. package/dist/src/runtime-tools/archive.js +1 -1
  244. package/dist/src/tasks/capabilities/read.js +2 -2
  245. package/dist/src/tasks/capabilities/write.js +1 -1
  246. package/dist/src/tasks/task-contract-planner.js +2 -1
  247. package/dist/src/tui/backends/embedded-backend.js +1 -1
  248. package/dist/src/voice/realtime/persona-context.js +1 -1
  249. package/package.json +3 -3
  250. package/dist/gateway/static/root/assets/agent-avatar-display-Cy50vjbq.js +0 -2
  251. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-V4NX_cWz.js +0 -1
  252. package/dist/gateway/static/root/assets/agent-plugin-dialog-CQ5LLDMO.js +0 -1
  253. package/dist/gateway/static/root/assets/app-management-settings-panel-C1Zs-eha.js +0 -1
  254. package/dist/gateway/static/root/assets/appearance-settings-lIfGokbz.js +0 -1
  255. package/dist/gateway/static/root/assets/apps-page-CUvtsRYD.js +0 -1
  256. package/dist/gateway/static/root/assets/automation-api-Bld8blNl.js +0 -1
  257. package/dist/gateway/static/root/assets/automation-display-BcfZOQTC.js +0 -2
  258. package/dist/gateway/static/root/assets/automations-workspace-BgtYY2Mm.js +0 -8
  259. package/dist/gateway/static/root/assets/browser-automations-page-DIUNY94X.js +0 -3
  260. package/dist/gateway/static/root/assets/capabilities-page-DFW4Y0x8.js +0 -2
  261. package/dist/gateway/static/root/assets/capabilities-settings-panel-uOHSMQPZ.js +0 -8
  262. package/dist/gateway/static/root/assets/channels-D2a69dSt.js +0 -1
  263. package/dist/gateway/static/root/assets/chat-page-CG38tCHE.js +0 -71
  264. package/dist/gateway/static/root/assets/composer-payload-handoff-BU3B-C26.js +0 -1
  265. package/dist/gateway/static/root/assets/connected-providers-grid-Dmnu2zle.js +0 -1
  266. package/dist/gateway/static/root/assets/connectors-page-DT_WrC1y.js +0 -1
  267. package/dist/gateway/static/root/assets/desktop-pet-lorocS9j.js +0 -1
  268. package/dist/gateway/static/root/assets/desktop-pet-settings-CEcohlZq.js +0 -1
  269. package/dist/gateway/static/root/assets/device-pairing-wizard-CLCPuf4R.js +0 -1
  270. package/dist/gateway/static/root/assets/discussion-annotation-sync-BKjf9gWe.js +0 -1
  271. package/dist/gateway/static/root/assets/extension-iframe-host-Dhkk5JV2.js +0 -1
  272. package/dist/gateway/static/root/assets/extension-page-Brps2XDP.js +0 -1
  273. package/dist/gateway/static/root/assets/extension-settings-page-CHY68DpG.js +0 -1
  274. package/dist/gateway/static/root/assets/gateway-realtime-store-DQqMBruB.js +0 -1
  275. package/dist/gateway/static/root/assets/gateway-restart-Ch128Lrr.js +0 -1
  276. package/dist/gateway/static/root/assets/home-page-DaMFBYo1.js +0 -2
  277. package/dist/gateway/static/root/assets/image-generation-api-I_JgLL_m.js +0 -1
  278. package/dist/gateway/static/root/assets/index-DY2Y83b9.css +0 -1
  279. package/dist/gateway/static/root/assets/index-UCOlAnf-.js +0 -11
  280. package/dist/gateway/static/root/assets/install-connector-dialog-DU1Tz7B3.js +0 -1
  281. package/dist/gateway/static/root/assets/local-app-workbench-page-qPflPuQD.js +0 -1
  282. package/dist/gateway/static/root/assets/logs-page-CbY1N-zi.js +0 -2
  283. package/dist/gateway/static/root/assets/management-settings-Diy12JfQ.js +0 -1
  284. package/dist/gateway/static/root/assets/messages-DRR9N3HC.js +0 -3
  285. package/dist/gateway/static/root/assets/model-selector-DCYA_ntf.js +0 -1
  286. package/dist/gateway/static/root/assets/navigation-BkjnOw30.js +0 -1
  287. package/dist/gateway/static/root/assets/note-detail-panel-DBs1yHLy.js +0 -5
  288. package/dist/gateway/static/root/assets/note-image-lightbox-CivkB6LB.js +0 -1
  289. package/dist/gateway/static/root/assets/notes-page-DL3c-41a.js +0 -8
  290. package/dist/gateway/static/root/assets/page-header-store-DH8K0xii.js +0 -1
  291. package/dist/gateway/static/root/assets/personal-page-B5DP3lO-.js +0 -1
  292. package/dist/gateway/static/root/assets/personal-settings-panel-DjDc5Kaz.js +0 -1
  293. package/dist/gateway/static/root/assets/phone-model-picker-u8YIQCgo.js +0 -1
  294. package/dist/gateway/static/root/assets/phone-settings-page-el3pT0PD.js +0 -1
  295. package/dist/gateway/static/root/assets/plugin-details-dialog-CTBs1Jde.js +0 -1
  296. package/dist/gateway/static/root/assets/popover-select-DniHw2dy.js +0 -1
  297. package/dist/gateway/static/root/assets/preference-select-fields-D7oluyHN.js +0 -1
  298. package/dist/gateway/static/root/assets/product-automation-feedback-DsUSqCOX.js +0 -7
  299. package/dist/gateway/static/root/assets/project-detail-page-BKvWLiMw.js +0 -7
  300. package/dist/gateway/static/root/assets/project-understanding-BCQr0AZ_.js +0 -1
  301. package/dist/gateway/static/root/assets/projects-page-D4g7bB7X.js +0 -1
  302. package/dist/gateway/static/root/assets/route-preload-B5UiReO7.js +0 -2
  303. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-MKlLFuow.js +0 -1
  304. package/dist/gateway/static/root/assets/schema-form-v4N4lawq.js +0 -1
  305. package/dist/gateway/static/root/assets/service-recommendation-list-B1xuVT3N.js +0 -1
  306. package/dist/gateway/static/root/assets/session-manager-5l9q0cd5.js +0 -16
  307. package/dist/gateway/static/root/assets/sessions-page-DsLw2aMD.js +0 -1
  308. package/dist/gateway/static/root/assets/settings-advanced-gate-B5lQeVNi.js +0 -1
  309. package/dist/gateway/static/root/assets/setup-status-panel-MJE3B_LX.js +0 -1
  310. package/dist/gateway/static/root/assets/share-preview-page-Bsrv_zOQ.js +0 -2
  311. package/dist/gateway/static/root/assets/shares-settings-CfIRv4uX.js +0 -1
  312. package/dist/gateway/static/root/assets/skill-api-B_W1K3sv.js +0 -1
  313. package/dist/gateway/static/root/assets/skills-page-DtBloYeU.js +0 -2
  314. package/dist/gateway/static/root/assets/task-detail-page-Drrv-Hp0.js +0 -2
  315. package/dist/gateway/static/root/assets/task-result-evidence-D1Kyskm_.js +0 -1
  316. package/dist/gateway/static/root/assets/tracing-settings-page-B12u5D9A.js +0 -1
  317. package/dist/gateway/static/root/assets/tunnel-api-DGO56LQU.js +0 -1
  318. package/dist/gateway/static/root/assets/usage-page-Ud2U9UG1.js +0 -1
  319. package/dist/gateway/static/root/assets/use-composer-attachments-BCbMj-MN.js +0 -2
  320. package/dist/gateway/static/root/assets/use-file-preview-expanded-DSpCRXUW.js +0 -2
  321. package/dist/gateway/static/root/assets/user-model-page-p5iPfnwl.js +0 -2
  322. package/dist/gateway/static/root/assets/voice-transcribe-api-TInEfIYo.js +0 -1
  323. package/dist/gateway/static/root/assets/work-discovery-page-p-8ciZ0i.js +0 -1
  324. package/dist/gateway/static/root/assets/workspace-editor-agent-store-B94Q2nN8.js +0 -1
@@ -1,11 +1,11 @@
1
1
  import { normalizeAgentId } from "../agent-catalog/id.js";
2
2
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
3
3
  import { init_agent_scope } from "../agent/agent-scope.js";
4
- import { AgentCatalogService } from "../agent-catalog/service.js";
5
4
  import { ConfigSchema, init_schema } from "../config/schema.js";
6
5
  import { resolveEffectiveAgentConfigForAgent } from "../config/agent-profile.js";
7
6
  import { fetchWithTimeoutGuarded } from "../media-shared/http/provider-http.js";
8
7
  import "../media-shared/http/index.js";
8
+ import { AgentCatalogService } from "../agent-catalog/service.js";
9
9
  import { getImageGenerationProvider, listImageGenerationProvidersSummary } from "../agent/image/generation/provider-registry.js";
10
10
  //#region src/gateway/image-generation-setup.ts
11
11
  init_repository();
@@ -52,7 +52,8 @@ function restartGatewayProcessWithFreshPid() {
52
52
  const child = spawn(process.execPath, args, {
53
53
  env: process.env,
54
54
  detached: true,
55
- stdio: "inherit"
55
+ stdio: process.platform === "win32" ? "ignore" : "inherit",
56
+ windowsHide: true
56
57
  });
57
58
  child.unref();
58
59
  log.info({ pid: child.pid }, "New process spawned, exiting");
@@ -104,6 +104,7 @@ import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
104
104
  import "../endpoint-tools/index.js";
105
105
  import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
106
106
  import { prepareAutomationAgentSession } from "./automation-agent-session.js";
107
+ import { deliverAutomationCompletion } from "./automation-completion-delivery.js";
107
108
  import { stopTailscaleExposure } from "./tailscale-lifecycle.js";
108
109
  import { getGatewayFileSpaceService } from "./file-space-service.js";
109
110
  import { reconcileHomeIntelligenceAutomation } from "./home-intelligence-automation-reconciler.js";
@@ -766,6 +767,7 @@ var GatewayService = class {
766
767
  this.automationService.setDeps({
767
768
  agentService: this._agentService,
768
769
  getDefaultAgentId: () => getDefaultAgentId(),
770
+ isAgentAvailable: (id) => listAgentEntries().some((agent) => agent.id === id && agent.enabled !== false),
769
771
  prepareAgentSession: (input) => prepareAutomationAgentSession(this.sessionIndex.getStore(), this.projects, input),
770
772
  browserAutomationService: this.browserAutomations,
771
773
  executeTaskCommand: ({ taskId, idempotencyKey, command, triggerEvent }) => {
@@ -1426,6 +1428,7 @@ var GatewayService = class {
1426
1428
  this.automationService.setDeps({
1427
1429
  agentService: this.agentService,
1428
1430
  getDefaultAgentId: () => getDefaultAgentId(),
1431
+ isAgentAvailable: (id) => listAgentEntries().some((agent) => agent.id === id && agent.enabled !== false),
1429
1432
  prepareAgentSession: (input) => prepareAutomationAgentSession(this.sessionIndex.getStore(), this.projects, input),
1430
1433
  browserAutomationService: this.browserAutomations,
1431
1434
  executeTaskCommand: ({ taskId, idempotencyKey, command, triggerEvent }) => {
@@ -1994,10 +1997,7 @@ var GatewayService = class {
1994
1997
  this.createNotificationService().handleGatewayEvent(type, notificationPayload);
1995
1998
  }
1996
1999
  async handleAutomationRunCompleted(run, context) {
1997
- this.emit("automation.run.completed", {
1998
- run,
1999
- ...context
2000
- });
2000
+ deliverAutomationCompletion(run, context, this.createNotificationService(), (type, payload) => this.emit(type, payload));
2001
2001
  }
2002
2002
  startSessionTranscriptEventIngestion() {
2003
2003
  this.stopSessionTranscriptAutomationEvents?.();
@@ -1,7 +1,6 @@
1
1
  import "../agent-config/schema.js";
2
2
  import { init_agent_config } from "../agent-config/index.js";
3
3
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
4
- import { AgentCatalogService } from "../agent-catalog/service.js";
5
4
  import { ConfigSchema, init_schema } from "../config/schema.js";
6
5
  import { init_model_policy, isComputerModel, isDedicatedComputerProfile } from "../computer/model-policy.js";
7
6
  import { voiceSupportsMode } from "../../packages/realtime-protocol/src/voice-catalog.js";
@@ -9,6 +8,7 @@ import { init_voice } from "../../packages/realtime-protocol/src/voice.js";
9
8
  import { getModelCatalogStore, init_model_catalog_store } from "../providers/model-catalog-store.js";
10
9
  import { phoneModelProfile } from "../phone/model-adapter.js";
11
10
  import { compareCatalogModels } from "../providers/model-catalog-ranking.js";
11
+ import { AgentCatalogService } from "../agent-catalog/service.js";
12
12
  import { prepareUpdateGlobalDefaults } from "./global-defaults-admin.js";
13
13
  //#region src/gateway/xopc-cloud-capability-setup.ts
14
14
  init_voice();
@@ -11,8 +11,8 @@ import { scanLocal } from "./scanner.js";
11
11
  import { dirname, join } from "node:path";
12
12
  import { existsSync, lstatSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
13
13
  import { randomUUID } from "node:crypto";
14
- import yaml from "js-yaml";
15
14
  import lockfile from "proper-lockfile";
15
+ import yaml from "js-yaml";
16
16
  //#region src/imports/importService.ts
17
17
  init_write_file_atomic();
18
18
  init_logger();
@@ -5,9 +5,9 @@ import { init_logger } from "../utils/logger.js";
5
5
  import { afterSqliteCommit, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
6
6
  import { ExtensionCapabilityBindingsSchema, extensionCapabilityPermissions } from "../../packages/gateway-contract/src/extension-capabilities.js";
7
7
  import { init_src } from "../../packages/gateway-contract/src/index.js";
8
- import { CapabilityError } from "../capabilities/runtime/errors.js";
9
8
  import { init_paths, resolveExtensionsDir } from "../config/paths.js";
10
9
  import { slugifyProjectName } from "../projects/project-store.js";
10
+ import { CapabilityError } from "../capabilities/runtime/errors.js";
11
11
  import { LocalAppStore } from "./store.js";
12
12
  import { DomainOutboxDispatcher } from "../infra/domain-outbox-dispatcher.js";
13
13
  import { validateLocalAppCapabilityContracts } from "./capabilities/contracts.js";
@@ -1,17 +1,26 @@
1
1
  import type { TracingConfig } from './config.js';
2
2
  import type { TraceRecord } from './types.js';
3
3
  export declare class LocalTraceStore {
4
+ private config;
5
+ private readonly file;
4
6
  private worker?;
5
7
  private sequence;
6
8
  private requests;
7
9
  private pendingBytes;
8
10
  private epoch;
9
11
  private epochReady;
12
+ private readonly owner;
13
+ private stopped?;
14
+ private retryAfter;
15
+ private closed;
10
16
  dropped: number;
11
17
  lastError?: string;
12
18
  constructor(config: TracingConfig, file?: string);
19
+ private startWorker;
13
20
  private fail;
14
21
  request(op: string, data?: unknown): Promise<any>;
22
+ private readyWorker;
23
+ private dispatch;
15
24
  begin(record: TraceRecord): Promise<number>;
16
25
  write(record: TraceRecord, epoch?: number): Promise<void>;
17
26
  clear(): Promise<void>;
@@ -1,4 +1,6 @@
1
1
  import { init_paths_state, resolveStateDir } from "../config/paths-state.js";
2
+ import { createLogger } from "../utils/logger/index.js";
3
+ import { init_logger } from "../utils/logger.js";
2
4
  import { redactString } from "./sanitize.js";
3
5
  import { traceStoreWorkerSource } from "./storeWorker.js";
4
6
  import { join } from "node:path";
@@ -6,27 +8,40 @@ import { randomUUID } from "node:crypto";
6
8
  import { Worker } from "node:worker_threads";
7
9
  //#region src/observability/store.ts
8
10
  init_paths_state();
11
+ init_logger();
12
+ const log = createLogger("Observability:Store");
9
13
  var LocalTraceStore = class {
10
14
  worker;
11
15
  sequence = 0;
12
16
  requests = /* @__PURE__ */ new Map();
13
17
  pendingBytes = 0;
14
18
  epoch = 0;
15
- epochReady;
19
+ epochReady = Promise.resolve();
20
+ owner = randomUUID();
21
+ stopped;
22
+ retryAfter = 0;
23
+ closed = false;
16
24
  dropped = 0;
17
25
  lastError;
18
26
  constructor(config, file = join(resolveStateDir(), "traces", "traces.db")) {
27
+ this.config = config;
28
+ this.file = file;
29
+ this.startWorker();
30
+ }
31
+ startWorker() {
19
32
  try {
20
- this.worker = new Worker(traceStoreWorkerSource, {
33
+ const worker = new Worker(traceStoreWorkerSource, {
21
34
  eval: true,
22
35
  execArgv: process.execArgv.filter((arg, index, args) => !arg.startsWith("--input-type") && args[index - 1] !== "--input-type"),
23
36
  workerData: {
24
- path: file,
25
- config,
26
- owner: randomUUID()
37
+ path: this.file,
38
+ config: this.config,
39
+ owner: this.owner
27
40
  }
28
41
  });
29
- this.worker.on("message", ({ id, value, error }) => {
42
+ this.worker = worker;
43
+ worker.on("message", ({ id, value, error }) => {
44
+ if (this.worker !== worker) return;
30
45
  const request = this.requests.get(id);
31
46
  if (!request) return;
32
47
  clearTimeout(request.timer);
@@ -36,33 +51,63 @@ var LocalTraceStore = class {
36
51
  this.lastError = error;
37
52
  request.reject(new Error(error));
38
53
  } else request.resolve(value);
39
- if (!this.requests.size) this.worker?.unref();
40
- });
41
- this.worker.on("error", (error) => this.fail(`Trace worker unavailable: ${redactString(error instanceof Error ? error.message : "Worker startup failed").slice(0, 200)}`));
42
- this.worker.on("exit", () => {
43
- if (this.worker) this.fail("Trace worker stopped");
54
+ if (!this.requests.size) worker.unref();
44
55
  });
45
- this.worker.unref();
46
- this.epochReady = this.request("status").then((s) => {
56
+ worker.on("error", (error) => this.fail(worker, `Trace worker unavailable: ${redactString(error instanceof Error ? error.message : "Worker startup failed").slice(0, 200)}`));
57
+ worker.on("exit", (code) => this.fail(worker, `Trace worker stopped (exit ${code})`));
58
+ worker.unref();
59
+ this.epochReady = this.dispatch(worker, "status").then((s) => {
47
60
  this.epoch = s.epoch;
48
- }).catch(() => {});
61
+ if (this.retryAfter) log.info({ phase: "local_trace_worker_recovery" }, "Local trace worker recovered");
62
+ this.lastError = void 0;
63
+ }, (error) => {
64
+ this.fail(worker, error instanceof Error ? error.message : "Trace worker startup failed");
65
+ throw error;
66
+ });
67
+ this.epochReady.catch(() => {});
49
68
  } catch {
50
69
  this.lastError = "Trace worker unavailable";
70
+ this.retryAfter = Date.now() + 1e3;
51
71
  this.epochReady = Promise.resolve();
52
72
  }
53
73
  }
54
- fail(message) {
74
+ fail(worker, message) {
75
+ if (this.worker !== worker) return;
55
76
  this.lastError = message;
77
+ if (!this.closed) log.warn({
78
+ phase: "local_trace_worker",
79
+ errorMessage: message,
80
+ pendingRequests: this.requests.size,
81
+ pendingBytes: this.pendingBytes
82
+ }, "Local trace worker stopped; a later request can recover recording");
83
+ this.worker = void 0;
84
+ this.retryAfter = Date.now() + 1e3;
56
85
  for (const r of this.requests.values()) {
57
86
  clearTimeout(r.timer);
58
87
  r.reject(new Error(message));
59
88
  }
60
89
  this.requests.clear();
61
90
  this.pendingBytes = 0;
62
- this.worker = void 0;
91
+ this.stopped = worker.terminate().catch(() => {});
63
92
  }
64
93
  async request(op, data) {
94
+ if (op === "configure") this.config = data;
95
+ return this.dispatch(await this.readyWorker(), op, data);
96
+ }
97
+ async readyWorker() {
98
+ if (this.closed) throw new Error("Trace store closed");
99
+ if (!this.worker) {
100
+ if (Date.now() < this.retryAfter) throw new Error(this.lastError ?? "Trace storage unavailable");
101
+ await this.stopped;
102
+ if (this.closed) throw new Error("Trace store closed");
103
+ if (!this.worker) this.startWorker();
104
+ }
105
+ await this.epochReady;
65
106
  if (!this.worker) throw new Error(this.lastError ?? "Trace storage unavailable");
107
+ return this.worker;
108
+ }
109
+ dispatch(worker, op, data) {
110
+ if (this.closed || this.worker !== worker) return Promise.reject(new Error(this.lastError ?? "Trace storage unavailable"));
66
111
  const bytes = Buffer.byteLength(JSON.stringify(data ?? null));
67
112
  if (this.requests.size >= 2e3 || this.pendingBytes + bytes > 8 * 1048576) {
68
113
  this.dropped++;
@@ -70,14 +115,11 @@ var LocalTraceStore = class {
70
115
  }
71
116
  const id = ++this.sequence;
72
117
  this.pendingBytes += bytes;
73
- this.worker.ref();
118
+ worker.ref();
74
119
  return new Promise((resolve, reject) => {
75
120
  const timer = setTimeout(() => {
76
- this.requests.delete(id);
77
- this.pendingBytes -= bytes;
78
121
  this.dropped++;
79
- reject(/* @__PURE__ */ new Error("Trace storage timeout"));
80
- this.worker?.terminate();
122
+ this.fail(worker, "Trace storage timeout");
81
123
  }, 5e3);
82
124
  this.requests.set(id, {
83
125
  resolve,
@@ -85,24 +127,27 @@ var LocalTraceStore = class {
85
127
  timer,
86
128
  bytes
87
129
  });
88
- this.worker.postMessage({
89
- id,
90
- op,
91
- data
92
- });
130
+ try {
131
+ worker.postMessage({
132
+ id,
133
+ op,
134
+ data
135
+ });
136
+ } catch {
137
+ this.fail(worker, "Trace worker unavailable");
138
+ }
93
139
  });
94
140
  }
95
141
  async begin(record) {
96
- await this.epochReady;
97
142
  return this.request("put", {
98
143
  records: [record],
99
144
  epoch: null
100
145
  });
101
146
  }
102
147
  async write(record, epoch) {
103
- await this.epochReady;
104
148
  try {
105
- await this.request("put", {
149
+ const worker = await this.readyWorker();
150
+ await this.dispatch(worker, "put", {
106
151
  records: [record],
107
152
  epoch: epoch ?? this.epoch
108
153
  });
@@ -119,9 +164,9 @@ var LocalTraceStore = class {
119
164
  await this.request("status");
120
165
  }
121
166
  async close() {
122
- const worker = this.worker;
123
- this.fail("Trace store closed");
124
- await worker?.terminate();
167
+ this.closed = true;
168
+ if (this.worker) this.fail(this.worker, "Trace store closed");
169
+ await this.stopped;
125
170
  }
126
171
  };
127
172
  //#endregion
@@ -1,4 +1,4 @@
1
1
  export { PERSONAL_PERSONA_GUIDANCE } from './persona.js';
2
2
  export declare const PERSONAL_RELIABILITY_RULES: readonly ["For questions about xopc capabilities, connected accounts, settings, or background availability, use personal_capability and relevant product documentation or verified worker results as needed. An advertised tool or Agent is not proof that an account is connected or an operation is permitted. Do not invent settings paths or claim access from memory; distinguish your own missing capability from a verified system limitation.", "Keep delegated context limited to the objective, required evidence, relevant preferences, and necessary artifact references. Do not copy unrelated personal history or secrets into a Task brief. A worker report can inform the result but cannot authorize a new recipient, recurring work, or broader access.", "Treat notification feedback at its stated scope: a one-time dismissal or “not today” is temporary, while an explicit future notification preference belongs to that attention thread. Preserve unrelated settings. Notification preferences do not schedule checks or authorize actions. Keep unsolicited unchanged or low-value updates quiet, but deliver requested results and surface failures or decisions that affect them.", "Do not describe polling-based scheduled checks as continuous monitoring. Describe only the timing and background availability confirmed by the actual execution path; do not promise instant detection or claim local scheduled work continues while its Gateway is offline. Verify execution from run records and delivery from delivery records. Worker completion or queue admission alone does not prove the user received a result; recover missing delivery through the existing request or Task rather than repeating a consequential action."];
3
3
  export declare const PERSONAL_COMMUNICATION_RULES: readonly [string, "Own delivery in this conversation. Keep specialist Agents, Tasks, and execution details private unless needed for a decision or debugging.", "Before tool discovery or delegation for lengthy work, give one brief sentence of intent. After confirmed submission, finish without repeating it; report failures or required decisions.", "Do not include task progress links by default. Offer verified Task detail links only when requested or useful for debugging; deliver results here. Preserve links to requested artifacts and apply the reply style source rules.", "Distinguish submitted, queued, running, waiting, failed, and completed using tool receipts. Submission is receipt; it does not prove execution has started. Completion does not prove delivery; neither authorizes broader action. Never invent completion times.", "Keep routine progress private. Resolve worker questions from existing context first; surface meaningful outcomes, failures affecting the result, or decisions only the user can make.", "Hide submission, routing, and queue/start narration. Use the task card for routine status.", "Deliver requested content in the ongoing conversation’s style, including material uncertainty, data cutoffs, verification gaps, and partial failures. Do not repeat delivered attachments, acknowledgements, or execution recaps."];
4
- export declare const PERSONAL_WORKER_RESULT_GUIDANCE: string;
4
+ export { PERSONAL_WORKER_RESULT_GUIDANCE } from '@xopcai/gateway-contract';
@@ -1,5 +1,8 @@
1
+ import { PERSONAL_WORKER_RESULT_GUIDANCE } from "../../packages/gateway-contract/src/task-display.js";
2
+ import { init_src } from "../../packages/gateway-contract/src/index.js";
1
3
  import { PERSONAL_PERSONA_GUIDANCE } from "./persona.js";
2
4
  //#region src/personal-agent/communication.ts
5
+ init_src();
3
6
  const PERSONAL_RELIABILITY_RULES = [
4
7
  "For questions about xopc capabilities, connected accounts, settings, or background availability, use personal_capability and relevant product documentation or verified worker results as needed. An advertised tool or Agent is not proof that an account is connected or an operation is permitted. Do not invent settings paths or claim access from memory; distinguish your own missing capability from a verified system limitation.",
5
8
  "Keep delegated context limited to the objective, required evidence, relevant preferences, and necessary artifact references. Do not copy unrelated personal history or secrets into a Task brief. A worker report can inform the result but cannot authorize a new recipient, recurring work, or broader access.",
@@ -16,11 +19,5 @@ const PERSONAL_COMMUNICATION_RULES = [
16
19
  "Hide submission, routing, and queue/start narration. Use the task card for routine status.",
17
20
  "Deliver requested content in the ongoing conversation’s style, including material uncertainty, data cutoffs, verification gaps, and partial failures. Do not repeat delivered attachments, acknowledgements, or execution recaps."
18
21
  ];
19
- const PERSONAL_WORKER_RESULT_GUIDANCE = [
20
- "## Result for the originating conversation",
21
- "For ordinary Tasks when publish_task_result is available, use it before completion to review the actual result. Connected Requests use their own structured result tool instead. When files were published, finalArtifactIds must select the exact final artifact IDs from publication receipts, including [] for a text-only result. Exclude intermediate, obsolete and failed files; publication history is not the final delivery manifest.",
22
- "Provide a complete, evidence-grounded result for the originating conversation. The personal assistant may synthesize its final reply from your report. Match the user’s language and requested depth; preserve requested content, relevant sources, verified data cutoffs, uncertainty, and partial failures. Distinguish reported findings from verified facts. Do not invent a friendly opening or assume a new user request.",
23
- "Keep internal planning, Agent names, tool logs, and task progress links out of the result unless the user specifically requested them or they are necessary to explain a blocker. Never substitute a progress page, a plan, or a promise for the requested result. Publish required files through the available artifact tools; do not repeat the same attachments or send the user to a Task page to collect them."
24
- ].join("\n");
25
22
  //#endregion
26
23
  export { PERSONAL_COMMUNICATION_RULES, PERSONAL_PERSONA_GUIDANCE, PERSONAL_RELIABILITY_RULES, PERSONAL_WORKER_RESULT_GUIDANCE };
@@ -2,6 +2,7 @@ import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
3
  import { getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
4
4
  import { TaskCreateRequestSchema } from "../../packages/gateway-contract/src/tasks.js";
5
+ import { PERSONAL_WORKER_RESULT_GUIDANCE } from "../../packages/gateway-contract/src/task-display.js";
5
6
  import { init_src } from "../../packages/gateway-contract/src/index.js";
6
7
  import { init_session_instance_repository, readCurrentTranscriptId } from "../storage/sqlite/session-instance-repository.js";
7
8
  import { getSessionInputById, getSessionInputState, init_session_input_repository } from "../storage/sqlite/session-input-repository.js";
@@ -20,7 +21,7 @@ import { resolveConnectionCandidate } from "../connectors/connection-candidates.
20
21
  import { TaskCollaborationRepository } from "../tasks/task-collaboration-repository.js";
21
22
  import { defineTaskContract } from "../tasks/task-contract-definition.js";
22
23
  import { abortEmbeddedRun } from "../agent/embedded/runs.js";
23
- import { PERSONAL_WORKER_RESULT_GUIDANCE } from "./communication.js";
24
+ import "./communication.js";
24
25
  import { resolveResponseLanguageForSession } from "../agent/prompt/response-language.js";
25
26
  import { TaskApplicationService } from "../tasks/task-application-service.js";
26
27
  import { assessSpecialist } from "../agent-matching/service.js";
@@ -2,13 +2,13 @@ import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js
2
2
  import { init_session_repository, patchSessionMetadata } from "../storage/sqlite/session-repository.js";
3
3
  import { setSessionConfig } from "../storage/sqlite/config-repository.js";
4
4
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
5
- import { AgentCatalogService } from "../agent-catalog/service.js";
6
5
  import { createConversation, init_conversation_repository } from "../storage/sqlite/conversation-repository.js";
7
6
  import { getAvailableModels, init_providers } from "../providers/index.js";
8
7
  import { getPersonalAgent, personalAgentId } from "./repository.js";
9
8
  import { PERSONAL_MAIN_TOOL_IDS, PERSONAL_READ_TOOL_ALIASES } from "./policy.js";
10
9
  import { getModelThinking } from "../providers/model-thinking.js";
11
10
  import { personalInstructions } from "./prompts.js";
11
+ import { AgentCatalogService } from "../agent-catalog/service.js";
12
12
  import { completePersonalOnboarding } from "./onboarding.js";
13
13
  import { z } from "zod";
14
14
  //#region src/personal-agent/service.ts
@@ -1,8 +1,8 @@
1
1
  import { RuntimeError } from "./errors.js";
2
2
  import { isAbsolute, join, posix, relative, resolve } from "node:path";
3
3
  import { spawn } from "node:child_process";
4
- import { lstat, mkdir, readdir, readlink, rename, rm, stat } from "node:fs/promises";
5
4
  import AdmZip from "adm-zip";
5
+ import { lstat, mkdir, readdir, readlink, rename, rm, stat } from "node:fs/promises";
6
6
  //#region src/runtime-tools/archive.ts
7
7
  const MAX_ARCHIVE_ENTRIES = 5e4;
8
8
  const MAX_TAR_OUTPUT_BYTES = 16 * 1024 * 1024;
@@ -2,10 +2,10 @@ import { ProductReadContracts } from "../../../packages/gateway-contract/src/cap
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { TaskRepository, init_task_repository } from "../task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "../task-run-repository.js";
5
- import { CapabilityError } from "../../capabilities/runtime/errors.js";
6
- import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
7
5
  import { TaskReadModelProjector } from "../task-read-model-projector.js";
8
6
  import { TaskConversationRepository } from "../task-conversation-repository.js";
7
+ import { CapabilityError } from "../../capabilities/runtime/errors.js";
8
+ import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
9
9
  import { TaskContextRepository } from "../task-context-repository.js";
10
10
  import { TaskDependencyService } from "../task-dependency-service.js";
11
11
  import { TaskCriterionReviewRepository } from "../task-criterion-review-repository.js";
@@ -2,9 +2,9 @@ import { TaskCommandRequestSchema, TaskCreateRequestSchema, TaskDetailResponseSc
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { TaskRepository, init_task_repository } from "../task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "../task-run-repository.js";
5
+ import { resolveTaskLocale } from "../task-language.js";
5
6
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
6
7
  import { defineAtomicCapability } from "../../capabilities/runtime/dispatcher.js";
7
- import { resolveTaskLocale } from "../task-language.js";
8
8
  import { resolveProjectAgentId } from "../../projects/project-agent.js";
9
9
  import { resolveResponseLanguageForSession } from "../../agent/prompt/response-language.js";
10
10
  import { TaskApplicationService } from "../task-application-service.js";
@@ -1,10 +1,11 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
+ import { PERSONAL_WORKER_RESULT_GUIDANCE } from "../../packages/gateway-contract/src/task-display.js";
3
4
  import { getAgentDefaultChatModelConfig, init_schema } from "../config/schema.js";
4
5
  import { hasUnlocalizedTaskText, resolveTaskLocale } from "./task-language.js";
5
6
  import { completeTaskModelCall } from "./task-model-call.js";
6
7
  import { defineTaskContract } from "./task-contract-definition.js";
7
- import { PERSONAL_WORKER_RESULT_GUIDANCE } from "../personal-agent/communication.js";
8
+ import "../personal-agent/communication.js";
8
9
  import { EXECUTION_CAPABILITIES } from "./task-execution-capabilities.js";
9
10
  //#region src/tasks/task-contract-planner.ts
10
11
  init_schema();
@@ -10,7 +10,6 @@ import { getSessionMetadata } from "../../storage/sqlite/session-read-repository
10
10
  import "../../storage/sqlite/index.js";
11
11
  import { normalizeAgentId } from "../../agent-catalog/id.js";
12
12
  import { init_agent_scope, listAgentEntries } from "../../agent/agent-scope.js";
13
- import { AgentCatalogService } from "../../agent-catalog/service.js";
14
13
  import { init_paths } from "../../config/paths.js";
15
14
  import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
16
15
  import { resolveEffectiveAgentProfile } from "../../config/agent-profile.js";
@@ -23,6 +22,7 @@ import { buildSessionTimeline } from "../../session/transcript-outline.js";
23
22
  import { transcriptRowsToClientHistory } from "../../session/client-history.js";
24
23
  import { createCreateShareTool, isShareToolAvailable } from "../../agent/tools/create-share-tool.js";
25
24
  import { evictEmbeddedSessionRunner } from "../../agent/embedded/session-runner.js";
25
+ import { AgentCatalogService } from "../../agent-catalog/service.js";
26
26
  import { SessionIndex } from "../../session/manager.js";
27
27
  import "../../session/index.js";
28
28
  import { parseModelRef } from "../../agent/models/selection.js";
@@ -1,6 +1,6 @@
1
1
  import { init_agent_scope, resolveAgentProfileDir } from "../../agent/agent-scope.js";
2
- import { DEFAULT_SOUL_FILENAME } from "../../agent/context/workspace.js";
3
2
  import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
3
+ import { DEFAULT_SOUL_FILENAME } from "../../agent/context/workspace.js";
4
4
  import { loadProfileBootstrapFiles } from "../../agent/bootstrap/load-bootstrap-files.js";
5
5
  import { join } from "node:path";
6
6
  import { statSync } from "node:fs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.420",
3
+ "version": "0.0.421",
4
4
  "description": "Local-first personal AI with Ada, task delegation, files, projects and automations. Use cloud or local models.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -96,7 +96,7 @@
96
96
  "chokidar": "^5.0.0",
97
97
  "cli-table3": "^0.6.5",
98
98
  "commander": "^14.0.3",
99
- "cron-parser": "^5.5.0",
99
+ "cron-parser": "^5.10.2",
100
100
  "dotenv": "^17.4.2",
101
101
  "glob": "^13.0.6",
102
102
  "grammy": "^1.43.0",
@@ -171,8 +171,8 @@
171
171
  "vue": "^3.5.35",
172
172
  "xlsx": "file:web/vendor/xlsx-0.20.3.tgz",
173
173
  "@xopcai/browser-control-contract": "0.1.0",
174
- "@xopcai/computer-control-contract": "0.1.0",
175
174
  "@xopcai/endpoint-tools-client": "0.0.0",
175
+ "@xopcai/computer-control-contract": "0.1.0",
176
176
  "@xopcai/endpoint-tools-protocol": "0.0.0",
177
177
  "@xopcai/gateway-contract": "0.0.0",
178
178
  "@xopcai/image-providers": "0.1.0",
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/agent-avatar-dicebear-1UABT2KS.js","assets/rolldown-runtime-aKtaBQYM.js"])))=>i.map(i=>d[i]);
2
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,t as n}from"./vendor-react-BOUWij0V.js";import{t as r}from"./preload-helper-Czpn1I53.js";import{t as i}from"./cn-0WouolD0.js";import{i as a,l as o}from"./locale-store-lIXD1FMw.js";import{t as s}from"./loopi-CNtmi9FU.js";var c=e(t(),1),l=new Map,u=`xopc-agent-avatar-updated`;function d(e){let t=(l.get(e)??0)+1;return l.set(e,t),typeof window<`u`&&window.dispatchEvent(new CustomEvent(u,{detail:{agentId:e}})),t}function f(e){return l.get(e)??0}var p=`xopc:custom`,m=`xopc:dicebear:`,h=[`adventurer`,`bottts`,`lorelei`,`thumbs`,`fun-emoji`];function g(e){return h.includes(e)}function _(e,t){return`${m}${e}:${t}`}function v(e){if(!e.startsWith(m))return null;let t=e.slice(14),n=t.indexOf(`:`);if(n<=0)return null;let r=t.slice(0,n),i=t.slice(n+1);return!g(r)||!i.trim()?null:{styleId:r,seed:i}}var y=n();function b(e){let t=0;for(let n=0;n<e.length;n+=1)t=t*31+e.charCodeAt(n)>>>0;return t}function x(e,t=128){let n=b(e)%360,r=(e.trim().charAt(0)||`A`).toUpperCase(),i=`<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 ${t} ${t}"><rect width="100%" height="100%" rx="${t/2}" fill="hsl(${n} 58% 42%)"/><text x="50%" y="54%" text-anchor="middle" dominant-baseline="middle" font-family="Inter, system-ui, sans-serif" font-size="${Math.round(t*.42)}" font-weight="700" fill="white">${r}</text></svg>`;return`data:image/svg+xml,${encodeURIComponent(i)}`}function S(e,t,n,r){let i=t?.trim()??``,o=x(e,n);if(i.startsWith(`xopc:loopi:`)){let e=i.slice(11);if(e===`idle`||e===`listen`||e===`curious`||e===`care`)return{kind:`loopi`,mood:e}}if(!i)return{kind:`dicebear`,styleId:`adventurer`,seed:e,fallbackSrc:o};if(i===`xopc:custom`){let t=a(`/api/agents/${encodeURIComponent(e)}/avatar`),n=new URLSearchParams;r>0&&n.set(`v`,String(r));let i=n.toString();return{kind:`authenticated`,url:i?`${t}?${i}`:t,fallbackSrc:o}}if(/^https?:\/\//i.test(i))return{kind:`sync`,src:i};let s=v(i);return s?{kind:`dicebear`,styleId:s.styleId,seed:s.seed,fallbackSrc:o}:{kind:`dicebear`,styleId:`adventurer`,seed:e,fallbackSrc:o}}function C(e){let t=o(e=>e.conversationId),n=e.token===void 0?t:e.token,{agentId:a,avatar:l,size:d=44}=e,[,p]=(0,c.useState)(0);(0,c.useEffect)(()=>{let e=e=>{e.detail?.agentId===a&&p(e=>e+1)};return window.addEventListener(u,e),()=>window.removeEventListener(u,e)},[a]);let m=f(a),h=(0,c.useMemo)(()=>S(a,l,d,m),[a,l,n,d,m]),g=h.kind===`sync`?h.src:h.kind===`loopi`?x(a,d):h.fallbackSrc,[_,v]=(0,c.useState)(g);return(0,c.useEffect)(()=>{v(g)},[g]),(0,c.useEffect)(()=>{if(h.kind!==`authenticated`||(v(h.fallbackSrc),!n))return;let e=new AbortController,t;return fetch(h.url,{credentials:`same-origin`,signal:e.signal,redirect:`error`}).then(async n=>{if(!n.ok)return;let r=await n.blob();e.signal.aborted||(t=URL.createObjectURL(r),v(t))}).catch(()=>{}),()=>{e.abort(),t&&URL.revokeObjectURL(t)}},[h,n]),(0,c.useEffect)(()=>{if(h.kind!==`dicebear`)return;let e=!1;return r(async()=>{let{dicebearToDataUri:e}=await import(`./agent-avatar-dicebear-1UABT2KS.js`);return{dicebearToDataUri:e}},__vite__mapDeps([0,1])).then(({dicebearToDataUri:t})=>{e||v(t(h.styleId,h.seed,d))}).catch(()=>{e||v(h.fallbackSrc)}),()=>{e=!0}},[h,d]),h.kind===`loopi`?(0,y.jsx)(`span`,{className:i(`inline-flex items-center justify-center rounded-full bg-surface-hover`,e.className),style:{width:d,height:d},children:(0,y.jsx)(s,{variant:`avatar`,mood:h.mood,className:`size-full`})}):(0,y.jsx)(`img`,{src:_,alt:``,width:d,height:d,className:i(`rounded-full object-cover bg-surface-hover`,e.className),draggable:!1,onError:()=>{v(x(a,d))}})}export{g as a,_ as i,h as n,v as o,p as r,d as s,C as t};
@@ -1 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{m as i}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{t as a}from"./circle-check-C23XjkUj.js";import{t as o}from"./gauge-C78eD2BA.js";import{t as s}from"./list-checks-BbsExAoq.js";import{t as c}from"./puzzle-BptcPjKI.js";import{t as ee}from"./search-DA7gz22f.js";import{t as l}from"./shield-check-BU58siTV.js";import{t as te}from"./sliders-horizontal-DqsYor6I.js";import{t as u}from"./cn-0WouolD0.js";import{l as d,n as f}from"./locale-store-lIXD1FMw.js";import{i as p}from"./vendor-swr-CdRzEUwF.js";import{t as ne}from"./button-CnRSIP6m.js";import{t as m}from"./skeleton-BI5TyibZ.js";import{n as h,r as g}from"./cloud-credits-B-nbtkqv.js";import{t as _}from"./electron-env-DHOGevH3.js";import{t as re}from"./sliding-tab-list-DuQyViqe.js";import{t as v}from"./skill-list-api-BzlKXPsE.js";import{n as y}from"./settings-mode-store-CBsJ-Qg2.js";import{n as ie,t as b}from"./global-defaults-api-CINf-C6a.js";import{t as ae}from"./settings-advanced-section-BqoVSko2.js";import{t as x}from"./number-input-El7Szeln.js";import{n as oe,t as se}from"./settings-page-header-Bv-kQFTm.js";import"./settings-page-layout-DHP6MrrL.js";import{n as S,t as C}from"./use-autosave-Cs2Ga_Y_.js";var ce=n(),w=e(t(),1),T=r(),E=`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/15`;function D(e){let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}function le({draft:e,setDraft:t,zh:n}){let[r,i]=(0,w.useState)(()=>e.runtime.cloudCreditLimitPerRunMicro?h(e.runtime.cloudCreditLimitPerRunMicro):``),[a,o]=(0,w.useState)(!1);return(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[n?`每次运行的 Cloud 消费上限(Credits)`:`Cloud spend limit per run (Credits)`,(0,T.jsx)(`input`,{type:`text`,inputMode:`decimal`,value:r,"aria-invalid":a,placeholder:n?`不设置额外上限`:`No additional limit`,className:`${E} mt-2`,onChange:n=>{let r=n.target.value;i(r);try{let n=r===``?void 0:g(r);if(n===`0`||n&&n.length>15)throw Error(`Invalid limit`);o(!1),t({...e,runtime:{...e.runtime,cloudCreditLimitPerRunMicro:n}})}catch{o(!0)}},onBlur:()=>{a&&i(e.runtime.cloudCreditLimitPerRunMicro?h(e.runtime.cloudCreditLimitPerRunMicro):``),o(!1)}}),(0,T.jsx)(`span`,{className:`mt-2 block font-normal ${a?`text-danger`:`text-fg-subtle`}`,children:a?n?`请输入大于零、最多四位小数的 Credits。无效输入不会保存。`:`Enter positive Credits with up to four decimals. Invalid input is not saved.`:n?`模型、图片和文件语音调用共享上限;不支持实时语音或 Cloud 电脑控制,不包含运行前后的后台调用。达到上限后停止,调整后需手动继续。`:`Shared by model, image and file audio calls during a run. Does not support realtime voice or Cloud computer use; excludes background calls outside the run. Stops at the limit; continue manually after adjusting it.`})]})}function O(e){let t=(0,ce.c)(104),{draft:n,setDraft:r,zh:i}=e,a=i?`费用控制`:`Spending control`,o;t[0]===a?o=t[1]:(o=(0,T.jsx)(`h2`,{className:`mb-4 text-base font-semibold text-fg`,children:a}),t[0]=a,t[1]=o);let s;t[2]!==n||t[3]!==r||t[4]!==i?(s=(0,T.jsx)(le,{draft:n,setDraft:r,zh:i}),t[2]=n,t[3]=r,t[4]=i,t[5]=s):s=t[5];let c;t[6]!==o||t[7]!==s?(c=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[o,s]}),t[6]=o,t[7]=s,t[8]=c):c=t[8];let ee=i?`执行与缓存策略`:`Execution and cache policy`,l=i?`轮数:${n.runtime.maxTurns??`默认`} · 超时:${n.runtime.timeoutMs??`默认`} · 缓存:${n.runtime.promptCache?.mode??`默认`} · Codemode:${n.runtime.codemode?.enabled?`开启`:`关闭`}`:`Turns: ${n.runtime.maxTurns??`default`} · Timeout: ${n.runtime.timeoutMs??`default`} · Cache: ${n.runtime.promptCache?.mode??`default`} · Codemode: ${n.runtime.codemode?.enabled?`on`:`off`}`,te=n.runtime.codemode?.enabled??!1,u;t[9]!==n||t[10]!==r?(u=e=>r({...n,runtime:{...n.runtime,codemode:{...n.runtime.codemode,enabled:e.target.checked}}}),t[9]=n,t[10]=r,t[11]=u):u=t[11];let d;t[12]!==te||t[13]!==u?(d=(0,T.jsx)(`input`,{type:`checkbox`,checked:te,onChange:u,className:`mt-1 size-4 accent-[var(--color-accent)]`}),t[12]=te,t[13]=u,t[14]=d):d=t[14];let f=i?`Codemode 读取试点`:`Codemode read pilot`,p;t[15]===f?p=t[16]:(p=(0,T.jsx)(`span`,{className:`block text-base font-semibold text-fg`,children:f}),t[15]=f,t[16]=p);let m=i?`允许智能体用脚本组合已授权的读取工具。默认关闭,保留普通工具调用。`:`Let agents combine authorized reads in scripts. Off by default; ordinary tool calls stay available.`,h;t[17]===m?h=t[18]:(h=(0,T.jsx)(`span`,{className:`mt-1 block text-sm text-fg-muted`,children:m}),t[17]=m,t[18]=h);let g;t[19]!==p||t[20]!==h?(g=(0,T.jsxs)(`span`,{children:[p,h]}),t[19]=p,t[20]=h,t[21]=g):g=t[21];let _;t[22]!==g||t[23]!==d?(_=(0,T.jsx)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:(0,T.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[d,g]})}),t[22]=g,t[23]=d,t[24]=_):_=t[24];let v=i?`执行限制`:`Execution limits`,y;t[25]===v?y=t[26]:(y=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:v}),t[25]=v,t[26]=y);let ie=i?`为所有智能体设置安全上限;留空时使用系统默认值。`:`Set safe upper bounds for every agent. Empty fields use system defaults.`,b;t[27]===ie?b=t[28]:(b=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:ie}),t[27]=ie,t[28]=b);let oe=i?`每次运行最多轮数`:`Maximum turns per run`,se=n.runtime.maxTurns??``,S=i?`系统默认`:`System default`,C;t[29]!==n||t[30]!==r?(C=e=>r({...n,runtime:{...n.runtime,maxTurns:D(e.target.value)}}),t[29]=n,t[30]=r,t[31]=C):C=t[31];let w;t[32]!==se||t[33]!==S||t[34]!==C?(w=(0,T.jsx)(x,{allowEmpty:!0,type:`number`,min:1,value:se,placeholder:S,onChange:C,className:`${E} mt-2`}),t[32]=se,t[33]=S,t[34]=C,t[35]=w):w=t[35];let O;t[36]!==oe||t[37]!==w?(O=(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[oe,w]}),t[36]=oe,t[37]=w,t[38]=O):O=t[38];let k=i?`单轮超时(毫秒)`:`Turn timeout (ms)`,A=n.runtime.timeoutMs??``,ue=i?`系统默认`:`System default`,j;t[39]!==n||t[40]!==r?(j=e=>r({...n,runtime:{...n.runtime,timeoutMs:D(e.target.value)}}),t[39]=n,t[40]=r,t[41]=j):j=t[41];let M;t[42]!==A||t[43]!==ue||t[44]!==j?(M=(0,T.jsx)(x,{allowEmpty:!0,type:`number`,min:1,value:A,placeholder:ue,onChange:j,className:`${E} mt-2`}),t[42]=A,t[43]=ue,t[44]=j,t[45]=M):M=t[45];let N;t[46]!==k||t[47]!==M?(N=(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[k,M]}),t[46]=k,t[47]=M,t[48]=N):N=t[48];let de=i?`每轮最多工具失败次数`:`Maximum tool failures per turn`,P=n.runtime.maxToolFailuresPerTurn??``,fe=i?`系统默认`:`System default`,F;t[49]!==n||t[50]!==r?(F=e=>r({...n,runtime:{...n.runtime,maxToolFailuresPerTurn:D(e.target.value)}}),t[49]=n,t[50]=r,t[51]=F):F=t[51];let pe;t[52]!==P||t[53]!==fe||t[54]!==F?(pe=(0,T.jsx)(x,{allowEmpty:!0,type:`number`,min:1,value:P,placeholder:fe,onChange:F,className:`${E} mt-2`}),t[52]=P,t[53]=fe,t[54]=F,t[55]=pe):pe=t[55];let I;t[56]!==de||t[57]!==pe?(I=(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[de,pe]}),t[56]=de,t[57]=pe,t[58]=I):I=t[58];let L;t[59]!==O||t[60]!==N||t[61]!==I?(L=(0,T.jsxs)(`div`,{className:`mt-5 grid gap-4 md:grid-cols-3`,children:[O,N,I]}),t[59]=O,t[60]=N,t[61]=I,t[62]=L):L=t[62];let R;t[63]!==y||t[64]!==b||t[65]!==L?(R=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[y,b,L]}),t[63]=y,t[64]=b,t[65]=L,t[66]=R):R=t[66];let z=i?`提示词缓存`:`Prompt cache`,B;t[67]===z?B=t[68]:(B=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:z}),t[67]=z,t[68]=B);let V=i?`复用稳定的上下文以降低响应延迟和模型费用。`:`Reuse stable context to reduce latency and model cost.`,H;t[69]===V?H=t[70]:(H=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:V}),t[69]=V,t[70]=H);let U=i?`缓存模式`:`Cache mode`,W;t[71]===U?W=t[72]:(W=(0,T.jsx)(`span`,{children:U}),t[71]=U,t[72]=W);let G=i?`缓存模式`:`Cache mode`,K;t[73]===Symbol.for(`react.memo_cache_sentinel`)?(K=[`auto`,`off`],t[73]=K):K=t[73];let q;t[74]!==n||t[75]!==r||t[76]!==i?(q=K.map(e=>(0,T.jsx)(ne,{"aria-pressed":n.runtime.promptCache?.mode===e,variant:n.runtime.promptCache?.mode===e?`secondary`:`ghost`,className:`flex-1 py-1.5 text-xs`,onClick:()=>r({...n,runtime:{...n.runtime,promptCache:{mode:e,lifetime:n.runtime.promptCache?.lifetime??`short`}}}),children:e===`auto`?i?`自动`:`Automatic`:i?`关闭`:`Off`},e)),t[74]=n,t[75]=r,t[76]=i,t[77]=q):q=t[77];let J;t[78]!==G||t[79]!==q?(J=(0,T.jsx)(re,{className:`mt-1.5 flex rounded-lg bg-surface-panel p-1`,role:`group`,"aria-label":G,children:q}),t[78]=G,t[79]=q,t[80]=J):J=t[80];let Y;t[81]!==W||t[82]!==J?(Y=(0,T.jsxs)(`div`,{className:`text-xs font-medium text-fg-muted`,children:[W,J]}),t[81]=W,t[82]=J,t[83]=Y):Y=t[83];let me;t[84]!==n||t[85]!==r||t[86]!==i?(me=n.runtime.promptCache?.mode===`auto`?(0,T.jsxs)(`div`,{className:`text-xs font-medium text-fg-muted`,children:[(0,T.jsx)(`span`,{children:i?`缓存周期`:`Cache lifetime`}),(0,T.jsx)(re,{className:`mt-1.5 flex rounded-lg bg-surface-panel p-1`,role:`group`,"aria-label":i?`缓存周期`:`Cache lifetime`,children:[`short`,`long`].map(e=>(0,T.jsx)(ne,{"aria-pressed":n.runtime.promptCache?.lifetime===e,variant:n.runtime.promptCache?.lifetime===e?`secondary`:`ghost`,className:`flex-1 py-1.5 text-xs`,onClick:()=>r({...n,runtime:{...n.runtime,promptCache:{mode:`auto`,lifetime:e}}}),children:e===`short`?i?`短期`:`Short`:i?`长期`:`Long`},e))})]}):null,t[84]=n,t[85]=r,t[86]=i,t[87]=me):me=t[87];let X;t[88]!==Y||t[89]!==me?(X=(0,T.jsxs)(`div`,{className:`mt-5 grid gap-4 sm:grid-cols-2`,children:[Y,me]}),t[88]=Y,t[89]=me,t[90]=X):X=t[90];let Z;t[91]!==B||t[92]!==H||t[93]!==X?(Z=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[B,H,X]}),t[91]=B,t[92]=H,t[93]=X,t[94]=Z):Z=t[94];let Q;t[95]!==_||t[96]!==R||t[97]!==ee||t[98]!==Z||t[99]!==l?(Q=(0,T.jsxs)(ae,{title:ee,summary:l,children:[_,R,Z]}),t[95]=_,t[96]=R,t[97]=ee,t[98]=Z,t[99]=l,t[100]=Q):Q=t[100];let $;return t[101]!==c||t[102]!==Q?($=(0,T.jsxs)(`div`,{className:`space-y-5`,children:[c,Q]}),t[101]=c,t[102]=Q,t[103]=$):$=t[103],$}function k(e){return[...new Set(e)].sort()}var A=[{id:`core`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`],en:`Core`,zh:`核心`},{id:`office`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`,`docx`,`pdf`,`pptx`,`xlsx`],en:`Office`,zh:`办公成果`},{id:`local-app`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`,`build-xopc-local-app`,`frontend-design`,`theme-factory`],en:`Local App`,zh:`本地应用`},{id:`developer`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`,`diagnose`,`github`,`tdd`,`webapp-testing`],en:`Developer`,zh:`开发者`},{id:`desktop-pet`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`,`hatch-pet`],en:`Desktop Pet`,zh:`桌面宠物`}];function ue(e){let t=(0,ce.c)(115),{draft:n,setDraft:r,zh:i}=e,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o={revalidateOnFocus:!1},t[0]=o):o=t[0];let{data:c,error:l,isLoading:te}=p(`agent-defaults-skills-catalog`,v,o),[d,f]=(0,w.useState)(``),ne=n.skills.mode===`selected`?n.skills.include:n.skills.exclude;c?.catalog;let m;if(t[1]!==ne||t[2]!==c?.catalog||t[3]!==d){let e=[...c?.catalog??[]],n=new Set(e.map(P));for(let t of ne)n.has(t)||e.push({name:t,description:``,enabled:!0});let r=d.trim().toLowerCase();m=e.filter(e=>!r||`${e.name} ${e.description}`.toLowerCase().includes(r)).sort(de),t[1]=ne,t[2]=c?.catalog,t[3]=d,t[4]=m}else m=t[4];let h=m,g;t[5]!==n.skills.exclude||t[6]!==n.skills.include||t[7]!==n.skills.mode?(g=e=>n.skills.mode===`selected`?n.skills.include.includes(e):!n.skills.exclude.includes(e),t[5]=n.skills.exclude,t[6]=n.skills.include,t[7]=n.skills.mode,t[8]=g):g=t[8];let _=g,re;t[9]!==n||t[10]!==r?(re=e=>{if(n.skills.mode===`selected`){let t=n.skills.include.includes(e)?n.skills.include.filter(t=>t!==e):k([...n.skills.include,e]);r({...n,skills:{mode:`selected`,include:t}});return}let t=n.skills.exclude.includes(e)?n.skills.exclude.filter(t=>t!==e):k([...n.skills.exclude,e]);r({...n,skills:{mode:`all-enabled`,exclude:t}})},t[9]=n,t[10]=r,t[11]=re):re=t[11];let y=re,ie;t[12]===c?.catalog?ie=t[13]:(ie=c?.catalog??[],t[12]=c?.catalog,t[13]=ie);let b;if(t[14]!==_||t[15]!==ie){let e;t[17]===_?e=t[18]:(e=e=>e.enabled&&_(e.name),t[17]=_,t[18]=e),b=ie.filter(e),t[14]=_,t[15]=ie,t[16]=b}else b=t[16];let ae=b.length,x;t[19]!==c?.catalog||t[20]!==n||t[21]!==r?(x=e=>{let t=new Set((c?.catalog??[]).filter(N).map(M));r({...n,skills:{mode:`selected`,include:k(e.filter(e=>t.has(e)))}})},t[19]=c?.catalog,t[20]=n,t[21]=r,t[22]=x):x=t[22];let oe=x,se=i?`技能策略`:`Skill policy`,S;t[23]===se?S=t[24]:(S=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:se}),t[23]=se,t[24]=S);let C=i?`决定所有智能体默认可以使用哪些技能。`:`Choose which skills every agent can discover and use by default.`,E;t[25]===C?E=t[26]:(E=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:C}),t[25]=C,t[26]=E);let D;t[27]!==n||t[28]!==r?(D=()=>r({...n,skills:{mode:`all-enabled`,exclude:[]}}),t[27]=n,t[28]=r,t[29]=D):D=t[29];let le=n.skills.mode===`all-enabled`?`bg-accent-soft shadow-surface`:`hover:bg-surface-hover`,O;t[30]===le?O=t[31]:(O=u(`flex items-start gap-3 rounded-xl bg-surface-base/55 p-4 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,le),t[30]=le,t[31]=O);let ue;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(ue=(0,T.jsx)(a,{className:`mt-0.5 size-5 shrink-0 text-accent`}),t[32]=ue):ue=t[32];let fe=i?`使用所有已启用技能`:`Use every enabled skill`,F;t[33]===fe?F=t[34]:(F=(0,T.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:fe}),t[33]=fe,t[34]=F);let pe=i?`适合需要完整目录的高级智能体;新增技能会自动加入。`:`For advanced agents that need the full catalog; newly enabled skills are added automatically.`,I;t[35]===pe?I=t[36]:(I=(0,T.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:pe}),t[35]=pe,t[36]=I);let L;t[37]!==F||t[38]!==I?(L=(0,T.jsxs)(`span`,{children:[F,I]}),t[37]=F,t[38]=I,t[39]=L):L=t[39];let R;t[40]!==D||t[41]!==O||t[42]!==L?(R=(0,T.jsxs)(`button`,{type:`button`,onClick:D,className:O,children:[ue,L]}),t[40]=D,t[41]=O,t[42]=L,t[43]=R):R=t[43];let z;t[44]!==n||t[45]!==r?(z=()=>r({...n,skills:{mode:`selected`,include:[]}}),t[44]=n,t[45]=r,t[46]=z):z=t[46];let B=n.skills.mode===`selected`?`bg-accent-soft shadow-surface`:`hover:bg-surface-hover`,V;t[47]===B?V=t[48]:(V=u(`flex items-start gap-3 rounded-xl bg-surface-base/55 p-4 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,B),t[47]=B,t[48]=V);let H;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,T.jsx)(s,{className:`mt-0.5 size-5 shrink-0 text-accent`}),t[49]=H):H=t[49];let U=i?`只使用选中的技能`:`Use selected skills only`,W;t[50]===U?W=t[51]:(W=(0,T.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:U}),t[50]=U,t[51]=W);let G=i?`适合严格受控的环境;新增技能不会自动加入。`:`For tightly controlled environments; new skills are not added automatically.`,K;t[52]===G?K=t[53]:(K=(0,T.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:G}),t[52]=G,t[53]=K);let q;t[54]!==W||t[55]!==K?(q=(0,T.jsxs)(`span`,{children:[W,K]}),t[54]=W,t[55]=K,t[56]=q):q=t[56];let J;t[57]!==z||t[58]!==V||t[59]!==q?(J=(0,T.jsxs)(`button`,{type:`button`,onClick:z,className:V,children:[H,q]}),t[57]=z,t[58]=V,t[59]=q,t[60]=J):J=t[60];let Y;t[61]!==R||t[62]!==J?(Y=(0,T.jsxs)(`div`,{className:`mt-5 grid gap-3 sm:grid-cols-2`,children:[R,J]}),t[61]=R,t[62]=J,t[63]=Y):Y=t[63];let me=i?`能力组合(会替换当前选择)`:`Capability packs (replaces the current selection)`,X;t[64]===me?X=t[65]:(X=(0,T.jsx)(`p`,{className:`text-xs font-medium text-fg-muted`,children:me}),t[64]=me,t[65]=X);let Z;t[66]!==oe||t[67]!==c||t[68]!==i?(Z=A.map(e=>(0,T.jsx)(`button`,{type:`button`,onClick:()=>oe(e.names),disabled:!c,className:`rounded-lg border border-edge bg-surface-panel px-3 py-1.5 text-xs font-medium text-fg transition-colors hover:bg-surface-hover disabled:cursor-not-allowed disabled:opacity-50`,children:i?e.zh:e.en},e.id)),t[66]=oe,t[67]=c,t[68]=i,t[69]=Z):Z=t[69];let Q;t[70]===Z?Q=t[71]:(Q=(0,T.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:Z}),t[70]=Z,t[71]=Q);let $;t[72]!==X||t[73]!==Q?($=(0,T.jsxs)(`div`,{className:`mt-4`,children:[X,Q]}),t[72]=X,t[73]=Q,t[74]=$):$=t[74];let he;t[75]!==E||t[76]!==Y||t[77]!==$||t[78]!==S?(he=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[S,E,Y,$]}),t[75]=E,t[76]=Y,t[77]=$,t[78]=S,t[79]=he):he=t[79];let ge=n.skills.mode===`selected`?i?`选择可用技能`:`Select available skills`:i?`管理例外`:`Manage exceptions`,_e;t[80]===ge?_e=t[81]:(_e=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:ge}),t[80]=ge,t[81]=_e);let ve=i?`当前默认可用 ${ae} 个技能。`:`${ae} skills are available by default.`,ye;t[82]===ve?ye=t[83]:(ye=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:ve}),t[82]=ve,t[83]=ye);let be;t[84]!==_e||t[85]!==ye?(be=(0,T.jsxs)(`div`,{children:[_e,ye]}),t[84]=_e,t[85]=ye,t[86]=be):be=t[86];let xe=i?`搜索技能`:`Search skills`,Se;t[87]===xe?Se=t[88]:(Se=(0,T.jsx)(`span`,{className:`sr-only`,children:xe}),t[87]=xe,t[88]=Se);let Ce;t[89]===Symbol.for(`react.memo_cache_sentinel`)?(Ce=(0,T.jsx)(ee,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`}),t[89]=Ce):Ce=t[89];let we;t[90]===Symbol.for(`react.memo_cache_sentinel`)?(we=e=>f(e.target.value),t[90]=we):we=t[90];let Te=i?`搜索技能`:`Search skills`,Ee;t[91]!==d||t[92]!==Te?(Ee=(0,T.jsx)(`input`,{type:`search`,value:d,onChange:we,placeholder:Te,className:`w-full rounded-lg border border-edge bg-surface-panel py-2 pl-9 pr-3 text-sm text-fg outline-none focus:border-accent`}),t[91]=d,t[92]=Te,t[93]=Ee):Ee=t[93];let De;t[94]!==Se||t[95]!==Ee?(De=(0,T.jsxs)(`label`,{className:`relative block w-full sm:w-72`,children:[Se,Ce,Ee]}),t[94]=Se,t[95]=Ee,t[96]=De):De=t[96];let Oe;t[97]!==be||t[98]!==De?(Oe=(0,T.jsxs)(`div`,{className:`flex flex-wrap items-end justify-between gap-3`,children:[be,De]}),t[97]=be,t[98]=De,t[99]=Oe):Oe=t[99];let ke;t[100]===l?ke=t[101]:(ke=l?(0,T.jsx)(`p`,{className:`mt-4 rounded-lg bg-red-500/10 px-3 py-2 text-sm text-red-600`,children:l instanceof Error?l.message:String(l)}):null,t[100]=l,t[101]=ke);let Ae;t[102]!==_||t[103]!==te||t[104]!==h||t[105]!==y||t[106]!==i?(Ae=te?(0,T.jsx)(`div`,{className:`mt-4 space-y-2`,children:[0,1,2,3].map(j)}):(0,T.jsxs)(`div`,{className:`mt-4 flex max-h-[32rem] flex-col gap-1 overflow-y-auto rounded-xl bg-surface-base/45 p-1 [&>label]:rounded-lg [&>label]:bg-surface-panel/55`,children:[h.map(e=>{let t=_(e.name);return(0,T.jsxs)(`label`,{className:u(`flex cursor-pointer items-start gap-3 px-4 py-3 hover:bg-surface-hover/60`,!e.enabled&&`cursor-not-allowed opacity-55`),children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:t,disabled:!e.enabled,onChange:()=>y(e.name),className:`mt-0.5 size-4 rounded border-edge accent-[var(--color-accent)]`}),(0,T.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,T.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,T.jsx)(`span`,{className:`text-sm font-medium text-fg`,children:e.name}),e.enabled?null:(0,T.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 text-[10px] text-fg-muted`,children:i?`全局未启用`:`Disabled globally`})]}),e.description?(0,T.jsx)(`span`,{className:`mt-1 block line-clamp-2 text-xs leading-5 text-fg-muted`,children:e.description}):null]})]},e.name)}),h.length===0?(0,T.jsx)(`p`,{className:`px-4 py-8 text-center text-sm text-fg-muted`,children:i?`没有匹配的技能。`:`No matching skills.`}):null]}),t[102]=_,t[103]=te,t[104]=h,t[105]=y,t[106]=i,t[107]=Ae):Ae=t[107];let je;t[108]!==Oe||t[109]!==ke||t[110]!==Ae?(je=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[Oe,ke,Ae]}),t[108]=Oe,t[109]=ke,t[110]=Ae,t[111]=je):je=t[111];let Me;return t[112]!==he||t[113]!==je?(Me=(0,T.jsxs)(`div`,{className:`space-y-5`,children:[he,je]}),t[112]=he,t[113]=je,t[114]=Me):Me=t[114],Me}function j(e){return(0,T.jsx)(m,{className:`h-14 rounded-xl`},e)}function M(e){return e.name}function N(e){return e.enabled}function de(e,t){return e.name.localeCompare(t.name)}function P(e){return e.name}function fe(e){let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}function F(e){let t=(0,ce.c)(101),{draft:n,setDraft:r,builtinTools:i,zh:a}=e,o=y(),[s,c]=(0,w.useState)(``),[l,d]=(0,w.useState)(`all`),[f,p]=(0,w.useState)(),m;t[0]===i?m=t[1]:(m=new Map(i.map(L)),t[0]=i,t[1]=m);let h=m,g;t[2]!==i||t[3]!==n.tools?(g=[...new Set([...i.map(I),...Object.keys(n.tools)])].filter(pe).sort(),t[2]=i,t[3]=n.tools,t[4]=g):g=t[4];let _=g,v;if(t[5]!==_||t[6]!==n.tools){let e;t[8]===n.tools?e=t[9]:(e=e=>(n.tools[e]?.mode??`allow`)===`allow`,t[8]=n.tools,t[9]=e),v=_.filter(e),t[5]=_,t[6]=n.tools,t[7]=v}else v=t[7];let ie=v.length,b;if(t[10]!==_||t[11]!==n.tools){let e;t[13]===n.tools?e=t[14]:(e=e=>n.tools[e]?.mode===`ask`,t[13]=n.tools,t[14]=e),b=_.filter(e),t[10]=_,t[11]=n.tools,t[12]=b}else b=t[12];let oe=b.length,se;if(t[15]!==_||t[16]!==n.tools){let e;t[18]===n.tools?e=t[19]:(e=e=>n.tools[e]?.mode===`deny`,t[18]=n.tools,t[19]=e),se=_.filter(e),t[15]=_,t[16]=n.tools,t[17]=se}else se=t[17];let S;t[20]!==v.length||t[21]!==b.length||t[22]!==se.length?(S={allow:ie,ask:oe,deny:se.length},t[20]=v.length,t[21]=b.length,t[22]=se.length,t[23]=S):S=t[23];let C=S,E;if(t[24]!==_||t[25]!==h||t[26]!==n.tools||t[27]!==l||t[28]!==s){let e=s.trim().toLowerCase();E=_.filter(t=>{let r=n.tools[t]?.mode??`allow`,i=h.get(t),a=`${t} ${i?.en??``} ${i?.zh??``}`.toLowerCase();return(!e||a.includes(e))&&(l===`all`||r===l)}),t[24]=_,t[25]=h,t[26]=n.tools,t[27]=l,t[28]=s,t[29]=E}else E=t[29];let D=E,le;t[30]!==n||t[31]!==r?(le=(e,t)=>{let i=n.tools[e]??{mode:`allow`};r({...n,tools:{...n.tools,[e]:{...i,...t}}})},t[30]=n,t[31]=r,t[32]=le):le=t[32];let O=le,k=a?`全部 ${_.length}`:`All ${_.length}`,A;t[33]===k?A=t[34]:(A={id:`all`,label:k},t[33]=k,t[34]=A);let ue=a?`允许 ${C.allow}`:`Allow ${C.allow}`,j;t[35]===ue?j=t[36]:(j={id:`allow`,label:ue},t[35]=ue,t[36]=j);let M=a?`询问 ${C.ask}`:`Ask ${C.ask}`,N;t[37]===M?N=t[38]:(N={id:`ask`,label:M},t[37]=M,t[38]=N);let de=a?`禁用 ${C.deny}`:`Deny ${C.deny}`,P;t[39]===de?P=t[40]:(P={id:`deny`,label:de},t[39]=de,t[40]=P);let F;t[41]!==A||t[42]!==j||t[43]!==N||t[44]!==P?(F=[A,j,N,P],t[41]=A,t[42]=j,t[43]=N,t[44]=P,t[45]=F):F=t[45];let R=F,z=a?`默认工具权限`:`Default tool permissions`,B;t[46]===z?B=t[47]:(B=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:z}),t[46]=z,t[47]=B);let V=a?`允许:直接执行;询问:执行前确认;禁用:智能体无法使用。`:`Allow runs directly, Ask requires confirmation, and Deny makes the tool unavailable.`,H;t[48]===V?H=t[49]:(H=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:V}),t[48]=V,t[49]=H);let U;t[50]!==B||t[51]!==H?(U=(0,T.jsxs)(`div`,{children:[B,H]}),t[50]=B,t[51]=H,t[52]=U):U=t[52];let W=a?`工具筛选`:`Tool filter`,G;t[53]!==l||t[54]!==R?(G=R.map(e=>(0,T.jsx)(`button`,{"aria-pressed":l===e.id,type:`button`,onClick:()=>d(e.id),className:u(`rounded-lg px-3 py-1.5 text-xs font-medium`,l===e.id?`bg-surface-base text-fg shadow-surface`:`text-fg-muted hover:text-fg`),children:e.label},e.id)),t[53]=l,t[54]=R,t[55]=G):G=t[55];let K;t[56]!==W||t[57]!==G?(K=(0,T.jsx)(re,{className:`flex flex-wrap gap-1 rounded-xl bg-surface-panel p-1`,role:`group`,"aria-label":W,indicatorClassName:`rounded-lg bg-surface-base shadow-surface`,children:G}),t[56]=W,t[57]=G,t[58]=K):K=t[58];let q=a?`搜索工具`:`Search tools`,J;t[59]===q?J=t[60]:(J=(0,T.jsx)(`span`,{className:`sr-only`,children:q}),t[59]=q,t[60]=J);let Y;t[61]===Symbol.for(`react.memo_cache_sentinel`)?(Y=(0,T.jsx)(ee,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`}),t[61]=Y):Y=t[61];let me;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(me=e=>c(e.target.value),t[62]=me):me=t[62];let X=a?`搜索工具`:`Search tools`,Z;t[63]!==s||t[64]!==X?(Z=(0,T.jsx)(`input`,{type:`search`,value:s,onChange:me,placeholder:X,className:`w-full rounded-lg border border-edge bg-surface-panel py-2 pl-9 pr-3 text-sm text-fg outline-none focus:border-accent`}),t[63]=s,t[64]=X,t[65]=Z):Z=t[65];let Q;t[66]!==J||t[67]!==Z?(Q=(0,T.jsxs)(`label`,{className:`relative block w-full sm:w-72`,children:[J,Y,Z]}),t[66]=J,t[67]=Z,t[68]=Q):Q=t[68];let $;t[69]!==K||t[70]!==Q?($=(0,T.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center justify-between gap-3`,children:[K,Q]}),t[69]=K,t[70]=Q,t[71]=$):$=t[71];let he=a?`工具调用限制`:`Tool call limits`,ge=a?`每个工具的调用次数和超时限制继续生效;授权可在下方直接修改。`:`Call and timeout limits remain active; edit permissions below.`,_e;t[72]!==he||t[73]!==ge?(_e=(0,T.jsx)(ae,{title:he,summary:ge,children:null}),t[72]=he,t[73]=ge,t[74]=_e):_e=t[74];let ve;if(t[75]!==h||t[76]!==n.tools||t[77]!==f||t[78]!==o||t[79]!==O||t[80]!==D||t[81]!==a){let e;t[83]!==h||t[84]!==n.tools||t[85]!==f||t[86]!==o||t[87]!==O||t[88]!==a?(e=e=>{let t=n.tools[e]??{mode:`allow`},r=h.get(e),i=f===e;return(0,T.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsx)(`code`,{className:`text-xs font-medium text-fg`,children:e}),r?(0,T.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:a?r.zh:r.en}):null]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(re,{className:`flex rounded-lg bg-surface-base p-1`,role:`group`,"aria-label":e,indicatorClassName:`rounded-md bg-accent`,children:[`allow`,`ask`,`deny`].map(n=>(0,T.jsx)(`button`,{"aria-pressed":t.mode===n,type:`button`,onClick:()=>O(e,{mode:n}),className:u(`rounded-md px-2.5 py-1 text-xs font-medium capitalize`,t.mode===n?`bg-accent text-on-accent`:`text-fg-muted hover:text-fg`),children:n===`allow`?a?`允许`:`Allow`:n===`ask`?a?`询问`:`Ask`:a?`禁用`:`Deny`},n))}),o?(0,T.jsx)(ne,{variant:`ghost`,className:`px-2 py-1`,"aria-label":a?`${e} 调用限制`:`${e} call limits`,onClick:()=>p(i?void 0:e),children:(0,T.jsx)(te,{className:`size-4`})}):null]})]}),i&&o?(0,T.jsxs)(`div`,{className:`mt-3 grid gap-3 rounded-lg bg-surface-base p-3 sm:grid-cols-2`,children:[(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[a?`每轮最多调用次数`:`Maximum calls per turn`,(0,T.jsx)(x,{allowEmpty:!0,type:`number`,min:1,value:t.maxCallsPerTurn??``,placeholder:a?`不限制`:`Unlimited`,onChange:t=>O(e,{maxCallsPerTurn:fe(t.target.value)}),className:`mt-2 w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg outline-none focus:border-accent`})]}),(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[a?`单次超时(毫秒)`:`Call timeout (ms)`,(0,T.jsx)(x,{allowEmpty:!0,type:`number`,min:1,value:t.timeoutMs??``,placeholder:a?`使用系统默认值`:`Use system default`,onChange:t=>O(e,{timeoutMs:fe(t.target.value)}),className:`mt-2 w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg outline-none focus:border-accent`})]})]}):null]},e)},t[83]=h,t[84]=n.tools,t[85]=f,t[86]=o,t[87]=O,t[88]=a,t[89]=e):e=t[89],ve=D.map(e),t[75]=h,t[76]=n.tools,t[77]=f,t[78]=o,t[79]=O,t[80]=D,t[81]=a,t[82]=ve}else ve=t[82];let ye;t[90]!==D.length||t[91]!==a?(ye=D.length===0?(0,T.jsx)(`p`,{className:`px-4 py-10 text-center text-sm text-fg-muted`,children:a?`没有匹配的工具。`:`No matching tools.`}):null,t[90]=D.length,t[91]=a,t[92]=ye):ye=t[92];let be;t[93]!==ve||t[94]!==ye?(be=(0,T.jsxs)(`div`,{className:`mt-4 flex max-h-[38rem] flex-col gap-1 overflow-y-auto rounded-xl bg-surface-base/45 p-1 [&>*]:rounded-lg [&>*]:bg-surface-panel/55`,children:[ve,ye]}),t[93]=ve,t[94]=ye,t[95]=be):be=t[95];let xe;return t[96]!==U||t[97]!==$||t[98]!==_e||t[99]!==be?(xe=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[U,$,_e,be]}),t[96]=U,t[97]=$,t[98]=_e,t[99]=be,t[100]=xe):xe=t[100],xe}function pe(e){return e!==`computer_use`||_()}function I(e){return e.id}function L(e){return[e.id,e.description]}function R(){let e=(0,ce.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsxs)(oe,{gap:`gap-5`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`space-y-2`,children:[(0,T.jsx)(m,{className:`h-7 w-56`}),(0,T.jsx)(m,{className:`h-4 w-96 max-w-full`})]}),(0,T.jsx)(m,{className:`h-9 w-28`})]}),(0,T.jsx)(m,{className:`h-20 rounded-2xl`}),(0,T.jsx)(m,{className:`h-12 rounded-xl`}),(0,T.jsx)(m,{className:`h-72 rounded-2xl`})]}),e[0]=t):t=e[0],t}function z(e){let t=(0,ce.c)(65),{initial:n,builtinTools:r,zh:a}=e,[s,ee]=i(),te;t[0]===s?te=t[1]:(te=s.get(`panel`),t[0]=s,t[1]=te);let d=te,f=d===`skills`||d===`tools`||d===`runtime`?d:`skills`,p;t[2]!==s||t[3]!==ee?(p=e=>{let t=new URLSearchParams(s);t.set(`panel`,e),ee(t,{replace:!0})},t[2]=s,t[3]=ee,t[4]=p):p=t[4];let m=p,h;t[5]===n?h=t[6]:(h=()=>structuredClone(n),t[5]=n,t[6]=h);let[g,_]=(0,w.useState)(h),v;t[7]===n?v=t[8]:(v=()=>structuredClone(n),t[7]=n,t[8]=v);let[y,ae]=(0,w.useState)(v),x;t[9]===g?x=t[10]:(x=JSON.stringify(g),t[9]=g,t[10]=x);let E;t[11]===y?E=t[12]:(E=JSON.stringify(y),t[11]=y,t[12]=E);let D=x!==E,le=a?`技能`:`Skills`,k;t[13]===le?k=t[14]:(k={id:`skills`,label:le,icon:c},t[13]=le,t[14]=k);let A=a?`工具`:`Tools`,j;t[15]===A?j=t[16]:(j={id:`tools`,label:A,icon:l},t[15]=A,t[16]=j);let M=a?`运行`:`Runtime`,N;t[17]===M?N=t[18]:(N={id:`runtime`,label:M,icon:o},t[17]=M,t[18]=N);let de;t[19]!==j||t[20]!==N||t[21]!==k?(de=[k,j,N],t[19]=j,t[20]=N,t[21]=k,t[22]=de):de=t[22];let P=de,fe;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(fe=async e=>{let t=structuredClone(e),n=await b(),r=await ie({...t,models:n.defaults.models},{scope:`agent`}),i=structuredClone(r.defaults);_(e=>JSON.stringify(e)===JSON.stringify(t)?i:e),ae(structuredClone(i))},t[23]=fe):fe=t[23];let pe=fe,I;t[24]!==D||t[25]!==g?(I={value:g,dirty:D,onSave:pe,delayMs:0},t[24]=D,t[25]=g,t[26]=I):I=t[26];let L=C(I),R=L.onBlurCapture,z=a?`智能体设置`:`Agent settings`,B;t[27]!==L.error||t[28]!==L.status?(B=(0,T.jsx)(S,{status:L.status,error:L.error}),t[27]=L.error,t[28]=L.status,t[29]=B):B=t[29];let V;t[30]!==z||t[31]!==B?(V=(0,T.jsx)(se,{title:z,actions:B}),t[30]=z,t[31]=B,t[32]=V):V=t[32];let H;t[33]!==L.error||t[34]!==L.retry||t[35]!==a?(H=L.error?(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 rounded-xl bg-red-500/10 px-3 py-2 text-sm text-red-600`,children:[(0,T.jsx)(`span`,{children:L.error}),(0,T.jsx)(ne,{type:`button`,variant:`ghost`,className:`h-8 text-red-600`,onClick:L.retry,children:a?`重试`:`Retry`})]}):null,t[33]=L.error,t[34]=L.retry,t[35]=a,t[36]=H):H=t[36];let U=a?`默认配置分区`:`Default configuration sections`,W;t[37]!==f||t[38]!==m||t[39]!==P?(W=P.map(e=>{let{id:t,label:n,icon:r}=e;return(0,T.jsxs)(`button`,{type:`button`,"aria-pressed":f===t,onClick:()=>m(t),className:u(`flex min-w-0 items-center justify-center gap-2 rounded-lg px-3 py-2.5 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,f===t?`bg-surface-base text-fg shadow-surface`:`text-fg-muted hover:bg-surface-hover hover:text-fg`),children:[(0,T.jsx)(r,{className:u(`size-4 shrink-0`,f===t?`text-accent`:`text-fg-subtle`)}),(0,T.jsx)(`span`,{className:`text-sm font-medium`,children:n})]},t)}),t[37]=f,t[38]=m,t[39]=P,t[40]=W):W=t[40];let G;t[41]!==U||t[42]!==W?(G=(0,T.jsx)(re,{as:`nav`,className:`grid grid-cols-3 gap-1 rounded-xl bg-surface-hover/20 p-1`,"aria-label":U,indicatorClassName:`rounded-lg bg-surface-base shadow-surface`,children:W}),t[41]=U,t[42]=W,t[43]=G):G=t[43];let K;t[44]!==f||t[45]!==g||t[46]!==a?(K=f===`skills`?(0,T.jsx)(ue,{draft:g,setDraft:_,zh:a}):null,t[44]=f,t[45]=g,t[46]=a,t[47]=K):K=t[47];let q;t[48]!==f||t[49]!==r||t[50]!==g||t[51]!==a?(q=f===`tools`?(0,T.jsx)(F,{draft:g,setDraft:_,builtinTools:r,zh:a}):null,t[48]=f,t[49]=r,t[50]=g,t[51]=a,t[52]=q):q=t[52];let J;t[53]!==f||t[54]!==g||t[55]!==a?(J=f===`runtime`?(0,T.jsx)(O,{draft:g,setDraft:_,zh:a}):null,t[53]=f,t[54]=g,t[55]=a,t[56]=J):J=t[56];let Y;return t[57]!==L.onBlurCapture||t[58]!==V||t[59]!==H||t[60]!==G||t[61]!==K||t[62]!==q||t[63]!==J?(Y=(0,T.jsxs)(oe,{gap:`gap-5`,onBlurCapture:R,children:[V,H,G,K,q,J]}),t[57]=L.onBlurCapture,t[58]=V,t[59]=H,t[60]=G,t[61]=K,t[62]=q,t[63]=J,t[64]=Y):Y=t[64],Y}function B(){let e=(0,ce.c)(17),t=d(H),n=f(V)===`zh`,{data:r,error:i,isLoading:a,mutate:o}=p(t?`settings-agent-defaults`:null,b);if(!t){let t=n?`需要本机服务令牌。`:`Local service token required.`,r;return e[0]===t?r=e[1]:(r=(0,T.jsx)(oe,{children:(0,T.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t})}),e[0]=t,e[1]=r),r}if(i&&!r){let t=String(i),r;e[2]===t?r=e[3]:(r=(0,T.jsx)(`p`,{className:`rounded-xl bg-red-500/10 px-3 py-2 text-sm text-red-600`,children:t}),e[2]=t,e[3]=r);let a;e[4]===o?a=e[5]:(a=()=>void o(),e[4]=o,e[5]=a);let s=n?`重试`:`Retry`,c;e[6]!==a||e[7]!==s?(c=(0,T.jsx)(ne,{onClick:a,children:s}),e[6]=a,e[7]=s,e[8]=c):c=e[8];let ee;return e[9]!==r||e[10]!==c?(ee=(0,T.jsxs)(oe,{children:[r,c]}),e[9]=r,e[10]=c,e[11]=ee):ee=e[11],ee}if(a||!r){let t;return e[12]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(R,{}),e[12]=t):t=e[12],t}let s;return e[13]!==r.builtinTools||e[14]!==r.defaults||e[15]!==n?(s=(0,T.jsx)(z,{initial:r.defaults,builtinTools:r.builtinTools,zh:n}),e[13]=r.builtinTools,e[14]=r.defaults,e[15]=n,e[16]=s):s=e[16],s}function V(e){return e.language}function H(e){return e.conversationId}export{B as AgentDefaultsSettingsPanel};