@xopcai/xopc 0.0.432 → 0.0.433

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 (522) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/adapters/cli-login.js +3 -3
  3. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  4. package/dist/extensions/telegram/src/inbound-processor.js +2 -2
  5. package/dist/extensions/telegram/src/outbound-sender.js +1 -1
  6. package/dist/extensions/telegram/src/plugin.js +2 -2
  7. package/dist/extensions/telegram/xopc.extension.json +1 -1
  8. package/dist/extensions/weixin/src/api/api.js +2 -2
  9. package/dist/extensions/weixin/src/auth/accounts.js +12 -12
  10. package/dist/extensions/weixin/src/messaging/debug-mode.js +5 -5
  11. package/dist/extensions/weixin/src/messaging/inbound.js +11 -11
  12. package/dist/gateway/static/root/assets/{activity-store-iTw0JzOx.js → activity-store-BpYGrRXw.js} +1 -1
  13. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CXuMwQ4y.js → agent-avatar-dicebear-DTgOSv6G.js} +1 -1
  14. package/dist/gateway/static/root/assets/{agent-avatar-display-hRyDKdPJ.js → agent-avatar-display-BUH7ljEo.js} +2 -2
  15. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-BBRKBHLB.js → agent-defaults-settings-panel-B_FAikHA.js} +1 -1
  16. package/dist/gateway/static/root/assets/{agent-plugin-dialog-PoKk6j20.js → agent-plugin-dialog-DPabZaSE.js} +1 -1
  17. package/dist/gateway/static/root/assets/{agents--P5-QEHR.js → agents-BAPYP1Ka.js} +3 -3
  18. package/dist/gateway/static/root/assets/{agents-admin-api-DuYzWKP8.js → agents-admin-api-CXCAHNPj.js} +1 -1
  19. package/dist/gateway/static/root/assets/{api-BeNB3MkI.js → api-DMbimMEi.js} +1 -1
  20. package/dist/gateway/static/root/assets/{api-DT_Aly4B.js → api-oIK4hYkJ.js} +1 -1
  21. package/dist/gateway/static/root/assets/{app-management-settings-panel-C4JhA-Kz.js → app-management-settings-panel-BZ3Fy8ZR.js} +1 -1
  22. package/dist/gateway/static/root/assets/{appearance-settings-YM311zxY.js → appearance-settings-DsRTj1by.js} +1 -1
  23. package/dist/gateway/static/root/assets/{apps-page-BrnAMjXr.js → apps-page-D-n71lO1.js} +1 -1
  24. package/dist/gateway/static/root/assets/{archive-plugin-DoYjGZv1.js → archive-plugin-Bg1VTieK.js} +1 -1
  25. package/dist/gateway/static/root/assets/{automation-api-ZD1VY9jO.js → automation-api-CLPsgcQN.js} +1 -1
  26. package/dist/gateway/static/root/assets/{automation-result-state-BO5N3gMt.js → automation-result-state-CKVnR4KG.js} +1 -1
  27. package/dist/gateway/static/root/assets/{automation-task-card--K7uiKHL.js → automation-task-card-D27Mw66U.js} +1 -1
  28. package/dist/gateway/static/root/assets/{automations-page-Clcl5MI7.js → automations-page-DGNTJ8lN.js} +1 -1
  29. package/dist/gateway/static/root/assets/{automations-workspace-DM67xMcR.js → automations-workspace-DWDWy-SG.js} +2 -2
  30. package/dist/gateway/static/root/assets/{binary-plugins-B-dkI6-B.js → binary-plugins-CuwSdCG5.js} +1 -1
  31. package/dist/gateway/static/root/assets/{block-editor-CB6KruU-.js → block-editor-Dtl2BG3t.js} +1 -1
  32. package/dist/gateway/static/root/assets/{browser-automation-inputs-Bk_QFbzb.js → browser-automation-inputs-uGK086ag.js} +1 -1
  33. package/dist/gateway/static/root/assets/{browser-automations-page-54eckhYq.js → browser-automations-page-Da_edNNS.js} +1 -1
  34. package/dist/gateway/static/root/assets/{browser-control-api-B4T1KPPz.js → browser-control-api-k3OOX3bS.js} +1 -1
  35. package/dist/gateway/static/root/assets/{browser-settings-page-rOmS1-T8.js → browser-settings-page-C1bSw-Jq.js} +1 -1
  36. package/dist/gateway/static/root/assets/{capabilities-DBDeifNA.js → capabilities-CoeuLRt6.js} +1 -1
  37. package/dist/gateway/static/root/assets/{capabilities-D_Uqx5il.js → capabilities-DlHPLld_.js} +1 -1
  38. package/dist/gateway/static/root/assets/{capabilities-page-DOMoAom0.js → capabilities-page-IcwojmJK.js} +2 -2
  39. package/dist/gateway/static/root/assets/{capabilities-settings-panel-iQPbNO4A.js → capabilities-settings-panel-CtY-bGIi.js} +1 -1
  40. package/dist/gateway/static/root/assets/{channels-DsEP_hFB.js → channels-Cn1MWBL_.js} +1 -1
  41. package/dist/gateway/static/root/assets/{chat-agents-api-D5-xZdAt.js → chat-agents-api-BB0biwc7.js} +1 -1
  42. package/dist/gateway/static/root/assets/{chat-chart-block-B-ri4wfk.js → chat-chart-block-QSvjx4w6.js} +1 -1
  43. package/dist/gateway/static/root/assets/{chat-page-DQNLsOad.js → chat-page-CwP4OMdW.js} +11 -11
  44. package/dist/gateway/static/root/assets/{chat-terminal-dock-RcrdmYe8.js → chat-terminal-dock-Cd51G9eG.js} +1 -1
  45. package/dist/gateway/static/root/assets/{command-palette-api-DFd-zOz_.js → command-palette-api-CEG10uE-.js} +1 -1
  46. package/dist/gateway/static/root/assets/{composer-payload-handoff-hccuv1Lk.js → composer-payload-handoff-Bogdq9Hy.js} +1 -1
  47. package/dist/gateway/static/root/assets/{computer-settings-page-C-7YLU9l.js → computer-settings-page-DyAlOzqY.js} +1 -1
  48. package/dist/gateway/static/root/assets/{connected-providers-grid-DziNfbFz.js → connected-providers-grid-D0lXg22c.js} +1 -1
  49. package/dist/gateway/static/root/assets/{connector-service-page-C3ZhlR8V.js → connector-service-page-k2rjyjrp.js} +1 -1
  50. package/dist/gateway/static/root/assets/{connectors-api-D6CPY0Nu.js → connectors-api-DtvB9Cjm.js} +1 -1
  51. package/dist/gateway/static/root/assets/{connectors-page-CcG3V3OB.js → connectors-page-DI_Q0CKz.js} +1 -1
  52. package/dist/gateway/static/root/assets/{date-picker-D3bxeryy.js → date-picker-CAankdQw.js} +1 -1
  53. package/dist/gateway/static/root/assets/{desktop-pet-B7kSoCSo.js → desktop-pet-DjM73fir.js} +1 -1
  54. package/dist/gateway/static/root/assets/{desktop-pet-settings-3dEeKSHA.js → desktop-pet-settings-Rmh-GxHl.js} +1 -1
  55. package/dist/gateway/static/root/assets/{dev-view-store-Dk7ylv5S.js → dev-view-store-BgW2Riyk.js} +1 -1
  56. package/dist/gateway/static/root/assets/{device-pairing-wizard-CstPAnnj.js → device-pairing-wizard-UdzSpNa5.js} +1 -1
  57. package/dist/gateway/static/root/assets/{directory-picker-path-field-BUGqS-lm.js → directory-picker-path-field-Rkw3f7lG.js} +1 -1
  58. package/dist/gateway/static/root/assets/{discussion-annotation-sync-D9-wFJDS.js → discussion-annotation-sync-Dudoj_Fz.js} +1 -1
  59. package/dist/gateway/static/root/assets/{extension-debug-page-BDTA9XDE.js → extension-debug-page-DxIGAO23.js} +1 -1
  60. package/dist/gateway/static/root/assets/{extension-iframe-host-CPEaw2ZG.js → extension-iframe-host-63KpX6IP.js} +1 -1
  61. package/dist/gateway/static/root/assets/{extension-marketplace-api-edmEFM6F.js → extension-marketplace-api-yXNUkQDA.js} +1 -1
  62. package/dist/gateway/static/root/assets/{extension-page-Biz-65E8.js → extension-page-C811A_Ww.js} +1 -1
  63. package/dist/gateway/static/root/assets/{extension-provider-DCur0Xcb.js → extension-provider-C4jLFIgh.js} +1 -1
  64. package/dist/gateway/static/root/assets/{extension-settings-page-CvPK63oz.js → extension-settings-page-WJSw5MT0.js} +1 -1
  65. package/dist/gateway/static/root/assets/{file-preview-surface-BFs1sAID.js → file-preview-surface-zE9AcaHM.js} +1 -1
  66. package/dist/gateway/static/root/assets/{gateway-config-swr-C-fPl1hP.js → gateway-config-swr-D6cc6W6E.js} +1 -1
  67. package/dist/gateway/static/root/assets/{gateway-realtime-xZpX_HCq.js → gateway-realtime-BSRNLciy.js} +1 -1
  68. package/dist/gateway/static/root/assets/gateway-realtime-store-BFeFfApQ.js +1 -0
  69. package/dist/gateway/static/root/assets/{gateway-restart-BfozBI8f.js → gateway-restart-Unun5hRL.js} +1 -1
  70. package/dist/gateway/static/root/assets/{gateway-settings-A8BUKcfx.js → gateway-settings-DP-DV-e5.js} +1 -1
  71. package/dist/gateway/static/root/assets/{gateway-startup-retry-BRrkiv67.js → gateway-startup-retry-C8g666Ja.js} +1 -1
  72. package/dist/gateway/static/root/assets/{global-defaults-api-C9O_X0pj.js → global-defaults-api-BObi-1ww.js} +1 -1
  73. package/dist/gateway/static/root/assets/{home-page-CzS-ROXe.js → home-page-CIcs7Mzy.js} +2 -2
  74. package/dist/gateway/static/root/assets/{image-generation-api-ohquPPls.js → image-generation-api-C2SqYNyD.js} +1 -1
  75. package/dist/gateway/static/root/assets/{imports-page-DAebChWv.js → imports-page-C8ezUkOJ.js} +1 -1
  76. package/dist/gateway/static/root/assets/{index-BinHjymm.js → index-D1_PUrJf.js} +5 -5
  77. package/dist/gateway/static/root/assets/{install-connector-dialog-xHNBuSj0.js → install-connector-dialog-Cn4nRSyt.js} +1 -1
  78. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Bv4YJpTl.js → keyboard-shortcuts-settings-BRaY4-wA.js} +1 -1
  79. package/dist/gateway/static/root/assets/{local-app-workbench-page-OhV8UnzK.js → local-app-workbench-page-BZtVcjF3.js} +1 -1
  80. package/dist/gateway/static/root/assets/{local-apps-page-ADzWmh3T.js → local-apps-page-MqP4EnJm.js} +1 -1
  81. package/dist/gateway/static/root/assets/{local-session-drafts-DgtYzPiy.js → local-session-drafts-DTq9776a.js} +1 -1
  82. package/dist/gateway/static/root/assets/{locale-store-fGFrr4_4.js → locale-store-B6OrWgY1.js} +1 -1
  83. package/dist/gateway/static/root/assets/{logs-page-i0eD_bSC.js → logs-page-hkHBjblX.js} +1 -1
  84. package/dist/gateway/static/root/assets/{management-settings-C-JTxRjw.js → management-settings-DoX4eTM3.js} +1 -1
  85. package/dist/gateway/static/root/assets/{markdown-view-Cnt8oxNg.js → markdown-view-DrhYZSmg.js} +1 -1
  86. package/dist/gateway/static/root/assets/{mcp-conversation-setup-page-BQ_US_jP.js → mcp-conversation-setup-page-BEp5E6TD.js} +1 -1
  87. package/dist/gateway/static/root/assets/{media-plugins-cphVSfva.js → media-plugins-D987i9Gc.js} +1 -1
  88. package/dist/gateway/static/root/assets/messages-jwdBhfL9.js +3 -0
  89. package/dist/gateway/static/root/assets/{model-selector-Bv-anQ6O.js → model-selector-DXm4NS1_.js} +1 -1
  90. package/dist/gateway/static/root/assets/{models-hub-cache-BLYpN4bJ.js → models-hub-cache-BLcha5rx.js} +1 -1
  91. package/dist/gateway/static/root/assets/{note-detail-panel-B-pk3LYN.js → note-detail-panel-Cl851ivY.js} +3 -3
  92. package/dist/gateway/static/root/assets/note-image-lightbox-DGYRJS03.js +1 -0
  93. package/dist/gateway/static/root/assets/{notes-api-IIQgxlMj.js → notes-api-Ddsf7FVg.js} +1 -1
  94. package/dist/gateway/static/root/assets/{notes-page-C6l9zI17.js → notes-page-DSwA1MU1.js} +1 -1
  95. package/dist/gateway/static/root/assets/{oauth-api-BojfhqmL.js → oauth-api-CMmu4DzH.js} +1 -1
  96. package/dist/gateway/static/root/assets/{oauth-provider-connect-D_p1ez-o.js → oauth-provider-connect-BkhnftBq.js} +1 -1
  97. package/dist/gateway/static/root/assets/{page-context-capture-button-CiEaCz7v.js → page-context-capture-button-urhQBRaN.js} +1 -1
  98. package/dist/gateway/static/root/assets/{page-context-draft-BbGvUKjF.js → page-context-draft-BuNUerth.js} +1 -1
  99. package/dist/gateway/static/root/assets/page-header-store-CEn_kPsn.js +1 -0
  100. package/dist/gateway/static/root/assets/{personal-avatar-Cq0y6LEK.js → personal-avatar-B49ueeZO.js} +1 -1
  101. package/dist/gateway/static/root/assets/{personal-page-CDad-FDO.js → personal-page-f05ceuFn.js} +1 -1
  102. package/dist/gateway/static/root/assets/{personal-settings-panel-yVUzcKoo.js → personal-settings-panel-DLQxzPYr.js} +1 -1
  103. package/dist/gateway/static/root/assets/{phone-dependencies-card-CM2Mj4rH.js → phone-dependencies-card-DjmC1Z5j.js} +1 -1
  104. package/dist/gateway/static/root/assets/{phone-model-connection-kJYAiCgI.js → phone-model-connection-BRjHSgYn.js} +1 -1
  105. package/dist/gateway/static/root/assets/{phone-model-picker-sXs8PpFk.js → phone-model-picker-DgIiWLhR.js} +1 -1
  106. package/dist/gateway/static/root/assets/{phone-settings-page-ayCImqUb.js → phone-settings-page-DCZGCL_z.js} +1 -1
  107. package/dist/gateway/static/root/assets/{phone-workspace-store-DoTZvoDh.js → phone-workspace-store-DbqktZbO.js} +1 -1
  108. package/dist/gateway/static/root/assets/{plugin-details-dialog-B4qZ0obG.js → plugin-details-dialog-D4tGKip4.js} +1 -1
  109. package/dist/gateway/static/root/assets/{preference-select-fields-oZm_6PvN.js → preference-select-fields-BZWqG7pu.js} +1 -1
  110. package/dist/gateway/static/root/assets/{product-automation-feedback-Ddj5cmmF.js → product-automation-feedback-DDQUsag7.js} +1 -1
  111. package/dist/gateway/static/root/assets/{product-open-page-CTuqeUDh.js → product-open-page-BkRP_HmA.js} +1 -1
  112. package/dist/gateway/static/root/assets/{product-preview-content-Ci8eDZ2h.js → product-preview-content-o2Y3VNE7.js} +1 -1
  113. package/dist/gateway/static/root/assets/{product-preview-modal-J-9O-eQ2.js → product-preview-modal-7Ohx-7OR.js} +2 -2
  114. package/dist/gateway/static/root/assets/{project-detail-page-D8QlmMQp.js → project-detail-page-B2RsSHya.js} +1 -1
  115. package/dist/gateway/static/root/assets/{project-understanding-8DBS77KV.js → project-understanding-BIMouiYX.js} +1 -1
  116. package/dist/gateway/static/root/assets/{projects-page-CEyyFqca.js → projects-page-C9R5u3tF.js} +1 -1
  117. package/dist/gateway/static/root/assets/{providers-api-DyX07mht.js → providers-api-BOCkRZ7X.js} +1 -1
  118. package/dist/gateway/static/root/assets/{recording-upload-DOhMs_aU.js → recording-upload-C6muEHEO.js} +1 -1
  119. package/dist/gateway/static/root/assets/{registry-api-Bm7kut54.js → registry-api-Bl2guMRg.js} +1 -1
  120. package/dist/gateway/static/root/assets/{remote-access-hub-DfCkv8XR.js → remote-access-hub-BceSMbCs.js} +1 -1
  121. package/dist/gateway/static/root/assets/{resource-unavailable-jg8QV_tO.js → resource-unavailable-CUNbPkdj.js} +1 -1
  122. package/dist/gateway/static/root/assets/{route-preload-Uhpfz1Jz.js → route-preload-C1BKDjnu.js} +2 -2
  123. package/dist/gateway/static/root/assets/{runtime-tools-api-BpaZgv-a.js → runtime-tools-api-LopLjgvu.js} +1 -1
  124. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CGnX0DY1.js → runtime-tools-settings-panel-9HIPerDP.js} +1 -1
  125. package/dist/gateway/static/root/assets/{service-recommendation-list-NdwoBa_O.js → service-recommendation-list-CoMI6MB1.js} +1 -1
  126. package/dist/gateway/static/root/assets/{session-api-BwcBcvzv.js → session-api-Bfmlmn9F.js} +1 -1
  127. package/dist/gateway/static/root/assets/session-manager-X4UHOjjO.js +25 -0
  128. package/dist/gateway/static/root/assets/{sessions-page-CAutHonI.js → sessions-page-BT0GdXdS.js} +1 -1
  129. package/dist/gateway/static/root/assets/settings-advanced-gate-Dk9c-Z5e.js +1 -0
  130. package/dist/gateway/static/root/assets/{settings-advanced-section-CICMnCwv.js → settings-advanced-section-CEorDLUp.js} +1 -1
  131. package/dist/gateway/static/root/assets/{settings-mode-store-DCnYgG87.js → settings-mode-store-C2LZqBES.js} +1 -1
  132. package/dist/gateway/static/root/assets/{settings-page-CZXi8Jro.js → settings-page-C_Np_6qZ.js} +1 -1
  133. package/dist/gateway/static/root/assets/{settings-page-header-DH1qb4vP.js → settings-page-header-BAN34UQi.js} +1 -1
  134. package/dist/gateway/static/root/assets/{settings-page-layout-B2G042F2.js → settings-page-layout-B5TVFBV2.js} +1 -1
  135. package/dist/gateway/static/root/assets/{setup-interaction-page-B-tpfd3l.js → setup-interaction-page-BYvTJW3_.js} +1 -1
  136. package/dist/gateway/static/root/assets/{setup-status-panel-DtA2Lb-A.js → setup-status-panel-UY2dH-sK.js} +1 -1
  137. package/dist/gateway/static/root/assets/{share-link-dialog-BjjkGRWn.js → share-link-dialog-BMcXyzr2.js} +1 -1
  138. package/dist/gateway/static/root/assets/{share-preview-page-BBaJCO3w.js → share-preview-page-UQ6eUM2_.js} +1 -1
  139. package/dist/gateway/static/root/assets/{shares-api-C1rliVTe.js → shares-api-DOeDN6Tm.js} +1 -1
  140. package/dist/gateway/static/root/assets/{shares-settings-BMctLz4y.js → shares-settings-W8XhuAoL.js} +1 -1
  141. package/dist/gateway/static/root/assets/{skill-api-fWp7oUet.js → skill-api-Do_c0d9n.js} +1 -1
  142. package/dist/gateway/static/root/assets/{skill-list-api-B-2Dod7G.js → skill-list-api-DpHaXI2l.js} +1 -1
  143. package/dist/gateway/static/root/assets/{skill-reload-api-Cejk-tbD.js → skill-reload-api-DDRd9IJ2.js} +1 -1
  144. package/dist/gateway/static/root/assets/{skills-page-D-dxO0Vc.js → skills-page-CaeJVKhO.js} +1 -1
  145. package/dist/gateway/static/root/assets/{system-settings-panel-D-gdBXlK.js → system-settings-panel-DYWlWPJL.js} +1 -1
  146. package/dist/gateway/static/root/assets/{task-detail-page-CIX4EckU.js → task-detail-page-De0qD7xw.js} +1 -1
  147. package/dist/gateway/static/root/assets/{task-result-evidence-Dp6gk3xn.js → task-result-evidence-CICR5K1t.js} +1 -1
  148. package/dist/gateway/static/root/assets/{terminal-panel-store-BDrza-7c.js → terminal-panel-store-BbWUcQe7.js} +1 -1
  149. package/dist/gateway/static/root/assets/{theme-store-De43hGnm.js → theme-store-TkG5mo0p.js} +1 -1
  150. package/dist/gateway/static/root/assets/{tracing-settings-page-DlQJAutq.js → tracing-settings-page-CYXEy4EG.js} +1 -1
  151. package/dist/gateway/static/root/assets/{tunnel-api-BSeDyRBI.js → tunnel-api-DquDm6U2.js} +1 -1
  152. package/dist/gateway/static/root/assets/{understanding-activity-store-CABSRtdN.js → understanding-activity-store-Ot3wZ3oQ.js} +1 -1
  153. package/dist/gateway/static/root/assets/{understanding-refresh-store-C5pXQtC9.js → understanding-refresh-store-C5KYFMaC.js} +1 -1
  154. package/dist/gateway/static/root/assets/{usage-page-Dd6gyHlm.js → usage-page-1xFO4smo.js} +1 -1
  155. package/dist/gateway/static/root/assets/{use-autosave-BhdMHxgz.js → use-autosave-HL8XRNR8.js} +1 -1
  156. package/dist/gateway/static/root/assets/{use-composer-attachments-Baw8AHhn.js → use-composer-attachments-XRlQBdNF.js} +1 -1
  157. package/dist/gateway/static/root/assets/{use-file-preview-expanded-B_cRX1Ih.js → use-file-preview-expanded-CW956CXS.js} +2 -2
  158. package/dist/gateway/static/root/assets/{use-personal-profile-DL5rDvwX.js → use-personal-profile-202s6tJt.js} +1 -1
  159. package/dist/gateway/static/root/assets/{use-workspace-tree-DONQqfmT.js → use-workspace-tree-CjydkmH1.js} +1 -1
  160. package/dist/gateway/static/root/assets/{user-model-page-u2vtyxcX.js → user-model-page-OGPXx3pe.js} +1 -1
  161. package/dist/gateway/static/root/assets/{voice-api-key-field-OChN73N1.js → voice-api-key-field-CxFu4MEA.js} +1 -1
  162. package/dist/gateway/static/root/assets/{voice-config-api-CziHHWRu.js → voice-config-api-MHe5Pn-A.js} +1 -1
  163. package/dist/gateway/static/root/assets/{voice-input-shortcut-events-CWSb-oJe.js → voice-input-shortcut-events-B9xc1oK8.js} +1 -1
  164. package/dist/gateway/static/root/assets/{voice-transcribe-api-CqEwxj11.js → voice-transcribe-api-CVEcB6Pe.js} +1 -1
  165. package/dist/gateway/static/root/assets/{work-discovery-overlay-BJT2mARb.js → work-discovery-overlay-C-JoAg2D.js} +1 -1
  166. package/dist/gateway/static/root/assets/{work-discovery-page-CkHMAnBc.js → work-discovery-page-B5Kx29Ru.js} +1 -1
  167. package/dist/gateway/static/root/assets/{working-directory-picker-modal-CpZEiO2a.js → working-directory-picker-modal-DGp9cNzH.js} +1 -1
  168. package/dist/gateway/static/root/assets/{workspace-api-Yi28Sl0C.js → workspace-api-HBXn8pL9.js} +2 -2
  169. package/dist/gateway/static/root/assets/workspace-editor-agent-store-msZa42fU.js +1 -0
  170. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-MLLldcHQ.js → workspace-file-preview-dialog-3cpwSG2w.js} +1 -1
  171. package/dist/gateway/static/root/assets/{workspace-open-location-menu-CjfDtW9T.js → workspace-open-location-menu-D0VOFvuP.js} +1 -1
  172. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-FioKsLPf.js → xopc-cloud-account-card-BkdW2p3v.js} +1 -1
  173. package/dist/gateway/static/root/index.html +78 -78
  174. package/dist/package.js +1 -1
  175. package/dist/src/agent/agent-manager.js +18 -18
  176. package/dist/src/agent/agent-scope.js +2 -2
  177. package/dist/src/agent/background-review/prompts.js +1 -1
  178. package/dist/src/agent/background-review/run-background-review.js +12 -12
  179. package/dist/src/agent/child-agent-factory.js +2 -2
  180. package/dist/src/agent/context/coordinator.js +2 -2
  181. package/dist/src/agent/context/execution-context.js +4 -4
  182. package/dist/src/agent/context/project-context.js +3 -3
  183. package/dist/src/agent/data-acquisition/service.js +1 -1
  184. package/dist/src/agent/embedded/codemode-extension.js +1 -1
  185. package/dist/src/agent/embedded/execution-tool-policy.js +1 -1
  186. package/dist/src/agent/embedded/external-tool-discovery.js +1 -1
  187. package/dist/src/agent/embedded/run-for-session.js +6 -6
  188. package/dist/src/agent/embedded/run-turn.js +19 -19
  189. package/dist/src/agent/embedded/session-runner.js +4 -4
  190. package/dist/src/agent/embedded/session-tool-result-guard.js +1 -1
  191. package/dist/src/agent/embedded/xopc-tools-bridge.js +1 -1
  192. package/dist/src/agent/external-tools/cliProvider.js +4 -4
  193. package/dist/src/agent/external-tools/composio-provider.js +4 -4
  194. package/dist/src/agent/external-tools/endpoint-provider.js +6 -6
  195. package/dist/src/agent/external-tools/extension-provider.js +1 -1
  196. package/dist/src/agent/external-tools/gateway-tools.js +3 -3
  197. package/dist/src/agent/external-tools/memory-provider.js +1 -1
  198. package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
  199. package/dist/src/agent/image/generation/runtime.js +1 -1
  200. package/dist/src/agent/image/index.js +1 -1
  201. package/dist/src/agent/inbound/attachment-pipeline.js +2 -2
  202. package/dist/src/agent/inbound/inbound-loop.js +2 -2
  203. package/dist/src/agent/independent-execution.js +2 -2
  204. package/dist/src/agent/index.js +3 -3
  205. package/dist/src/agent/mcp/connection-drafts.js +1 -1
  206. package/dist/src/agent/mcp/connection-setup.js +1 -1
  207. package/dist/src/agent/mcp/conversation-setup.js +1 -1
  208. package/dist/src/agent/mcp/discovery.js +2 -2
  209. package/dist/src/agent/mcp/transport.js +1 -1
  210. package/dist/src/agent/memory/index.js +1 -1
  211. package/dist/src/agent/orchestration/llm-turn-retry.js +1 -1
  212. package/dist/src/agent/prompt/response-language.js +1 -1
  213. package/dist/src/agent/prompt/service-prompt-builder.js +3 -3
  214. package/dist/src/agent/prompt/system-prompt-params.js +1 -1
  215. package/dist/src/agent/sandbox/exec-policy.js +1 -1
  216. package/dist/src/agent/service/direct-turn-helpers.js +6 -6
  217. package/dist/src/agent/service/process-direct-streaming.js +6 -6
  218. package/dist/src/agent/service/webchat-tts.js +2 -2
  219. package/dist/src/agent/service.js +22 -22
  220. package/dist/src/agent/session/session-config-service.js +2 -2
  221. package/dist/src/agent/session/session-hydrator.js +1 -1
  222. package/dist/src/agent/session/session-inspector.js +1 -1
  223. package/dist/src/agent/skills/filesystem-watcher.js +1 -1
  224. package/dist/src/agent/skills/hub-lock.js +1 -1
  225. package/dist/src/agent/skills/hub-pull.js +2 -2
  226. package/dist/src/agent/skills/index.js +1 -1
  227. package/dist/src/agent/skills/managed-store.js +1 -1
  228. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +1 -1
  229. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +1 -1
  230. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  231. package/dist/src/agent/skills/skill-manager.js +1 -1
  232. package/dist/src/agent/skills/skill-sources.js +1 -1
  233. package/dist/src/agent/source-context/index.js +1 -1
  234. package/dist/src/agent/tasks/task-judge-service.js +8 -8
  235. package/dist/src/agent/tools/create-share-tool.js +2 -2
  236. package/dist/src/agent/tools/delegate-tool.js +3 -3
  237. package/dist/src/agent/tools/exec-command.js +1 -1
  238. package/dist/src/agent/tools/executor.js +1 -1
  239. package/dist/src/agent/tools/factory.js +19 -19
  240. package/dist/src/agent/tools/fetch-text.js +1 -1
  241. package/dist/src/agent/tools/image-generate-tool.js +2 -2
  242. package/dist/src/agent/tools/index.js +4 -4
  243. package/dist/src/agent/tools/list-dir.js +1 -1
  244. package/dist/src/agent/tools/personal-attention-tool.js +2 -2
  245. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  246. package/dist/src/agent/tools/personal-request-result-tool.js +1 -1
  247. package/dist/src/agent/tools/personal-request-tool.js +4 -4
  248. package/dist/src/agent/tools/personal-result-tool.js +1 -1
  249. package/dist/src/agent/tools/personal-task-tool.js +5 -5
  250. package/dist/src/agent/tools/phone-use-tool.js +1 -1
  251. package/dist/src/agent/tools/publish-artifacts.js +1 -1
  252. package/dist/src/agent/tools/read.js +1 -1
  253. package/dist/src/agent/tools/review-workspace.js +1 -1
  254. package/dist/src/agent/tools/send-media.js +1 -1
  255. package/dist/src/agent/tools/skill-manage-tool.js +1 -1
  256. package/dist/src/agent/tools/task-collaboration-tool.js +2 -2
  257. package/dist/src/agent/tools/tts-tool.js +1 -1
  258. package/dist/src/agent/tools/user-context-tool.js +2 -2
  259. package/dist/src/agent/tools/web.js +1 -1
  260. package/dist/src/agent/tools/write.js +1 -1
  261. package/dist/src/agent/tools/xopc-use-tool.js +12 -12
  262. package/dist/src/agent/transcript/index.js +2 -2
  263. package/dist/src/agent/transcript/transcript-hygiene.js +2 -2
  264. package/dist/src/agent-catalog/capabilities.js +2 -2
  265. package/dist/src/agent-catalog/repository.js +1 -1
  266. package/dist/src/agent-matching/delegation-service.js +1 -1
  267. package/dist/src/ai-assist/text-assist.js +1 -1
  268. package/dist/src/auth/credentials.js +1 -1
  269. package/dist/src/auth/oauth/openai.js +1 -1
  270. package/dist/src/auth/oauth/xopc-cloud.js +1 -1
  271. package/dist/src/auth/profiles/store.js +1 -1
  272. package/dist/src/automations/api/routes.js +2 -2
  273. package/dist/src/automations/capabilities/drafts.js +1 -1
  274. package/dist/src/automations/capabilities/write.js +1 -1
  275. package/dist/src/automations/configuration-conversation.js +1 -1
  276. package/dist/src/automations/delivery/delivery-router.js +1 -1
  277. package/dist/src/automations/domain/index.js +1 -1
  278. package/dist/src/automations/draft/automation-draft-service.js +1 -1
  279. package/dist/src/automations/index.js +2 -2
  280. package/dist/src/automations/service/action-executor.js +2 -2
  281. package/dist/src/automations/service/automation-service.js +2 -2
  282. package/dist/src/browser/native-messaging-host.js +1 -1
  283. package/dist/src/browser/providers/browser-ext-install.js +2 -2
  284. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  285. package/dist/src/capabilities/runtime/product.js +1 -1
  286. package/dist/src/capabilities/store-connector.js +2 -2
  287. package/dist/src/channels/attachments/voice-stt-webchat.js +1 -1
  288. package/dist/src/channels/index.js +1 -1
  289. package/dist/src/channels/outbound-sender.js +1 -1
  290. package/dist/src/channels/pairing/allow-from-file.js +9 -9
  291. package/dist/src/channels/pairing/pairing-store.js +6 -6
  292. package/dist/src/chat-commands/agent-edit.js +1 -1
  293. package/dist/src/chat-commands/builtins/config.js +2 -2
  294. package/dist/src/chat-commands/builtins/session.js +1 -1
  295. package/dist/src/chat-commands/builtins/thinking.js +1 -1
  296. package/dist/src/chat-commands/builtins/tts.js +1 -1
  297. package/dist/src/chat-commands/context.js +1 -1
  298. package/dist/src/chat-commands/index.js +3 -3
  299. package/dist/src/cli/commands/agent.js +7 -7
  300. package/dist/src/cli/commands/agents.js +1 -1
  301. package/dist/src/cli/commands/config.js +1 -1
  302. package/dist/src/cli/commands/connectors.js +1 -1
  303. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +1 -1
  304. package/dist/src/cli/commands/doctor/checks/gateway-health.js +1 -1
  305. package/dist/src/cli/commands/extension-agent-plugin.js +1 -1
  306. package/dist/src/cli/commands/extension-dev.js +1 -1
  307. package/dist/src/cli/commands/extension.js +2 -2
  308. package/dist/src/cli/commands/image.js +1 -1
  309. package/dist/src/cli/commands/init.js +1 -1
  310. package/dist/src/cli/commands/models.js +3 -3
  311. package/dist/src/cli/commands/onboard/channels/registry.js +1 -1
  312. package/dist/src/cli/commands/onboard/model.js +1 -1
  313. package/dist/src/cli/commands/onboard.js +1 -1
  314. package/dist/src/cli/commands/project.js +1 -1
  315. package/dist/src/cli/commands/skills.js +2 -2
  316. package/dist/src/cli/commands/tunnel.js +4 -4
  317. package/dist/src/cli/extension-cli-register.js +5 -5
  318. package/dist/src/cli/utils/gateway-client.js +1 -1
  319. package/dist/src/cli/utils/init-workspace-core.js +3 -3
  320. package/dist/src/cli/utils/session.js +1 -1
  321. package/dist/src/computer/flows.js +1 -1
  322. package/dist/src/computer/model-adapter.js +1 -1
  323. package/dist/src/computer/runtime.js +4 -4
  324. package/dist/src/config/agent-profile.js +1 -1
  325. package/dist/src/config/index.js +3 -3
  326. package/dist/src/config/loader.js +1 -1
  327. package/dist/src/config/models-json.js +1 -1
  328. package/dist/src/connectors/cli/authorization.js +1 -1
  329. package/dist/src/connectors/composio-sessions.js +1 -1
  330. package/dist/src/connectors/composio.js +1 -1
  331. package/dist/src/connectors/connected-source-ingestion.js +2 -2
  332. package/dist/src/connectors/connected-source-understanding.js +5 -5
  333. package/dist/src/connectors/connection-recovery-service.js +4 -4
  334. package/dist/src/connectors/content-enrichment.js +1 -1
  335. package/dist/src/connectors/health.js +1 -1
  336. package/dist/src/connectors/instances.js +1 -1
  337. package/dist/src/connectors/runtime-adapter-registry.js +2 -2
  338. package/dist/src/discussions/live-worker.js +1 -1
  339. package/dist/src/discussions/sealer.js +1 -1
  340. package/dist/src/endpoint-tools/index.js +1 -1
  341. package/dist/src/endpoint-tools/runtime.js +2 -2
  342. package/dist/src/execution-environments/local-worktree-manager.js +1 -1
  343. package/dist/src/extensions/activation-context.js +3 -3
  344. package/dist/src/extensions/agent-plugins/auth.js +1 -1
  345. package/dist/src/extensions/agent-plugins/skill-catalog.js +3 -3
  346. package/dist/src/extensions/agent-plugins/source-http-fetch.js +1 -1
  347. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  348. package/dist/src/extensions/api.js +3 -3
  349. package/dist/src/extensions/bundled-extension-activation.js +1 -1
  350. package/dist/src/extensions/index.js +3 -3
  351. package/dist/src/extensions/loader.js +2 -2
  352. package/dist/src/extensions/lockfile.js +1 -1
  353. package/dist/src/extensions/sdk/index.js +1 -1
  354. package/dist/src/extensions/sdk/media.js +1 -1
  355. package/dist/src/gateway/agents-admin.js +2 -2
  356. package/dist/src/gateway/device-routes.js +1 -1
  357. package/dist/src/gateway/file-path-classifier.js +1 -1
  358. package/dist/src/gateway/global-defaults-admin.js +1 -1
  359. package/dist/src/gateway/hono/app.js +2 -2
  360. package/dist/src/gateway/hono/lib/config-payload.js +2 -2
  361. package/dist/src/gateway/hono/oauth-async.js +1 -1
  362. package/dist/src/gateway/hono/routes/agent-plugins.js +1 -1
  363. package/dist/src/gateway/hono/routes/agents.js +1 -1
  364. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  365. package/dist/src/gateway/hono/routes/commands-skills.js +4 -4
  366. package/dist/src/gateway/hono/routes/config-patch/gateway.js +1 -1
  367. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  368. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  369. package/dist/src/gateway/hono/routes/context-sources.js +1 -1
  370. package/dist/src/gateway/hono/routes/endpoint-tools.js +1 -1
  371. package/dist/src/gateway/hono/routes/home.js +1 -1
  372. package/dist/src/gateway/hono/routes/location-sharing.js +1 -1
  373. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  374. package/dist/src/gateway/hono/routes/memory-learning.js +3 -3
  375. package/dist/src/gateway/hono/routes/models.js +4 -4
  376. package/dist/src/gateway/hono/routes/notes.js +3 -3
  377. package/dist/src/gateway/hono/routes/phone-dependencies.js +1 -1
  378. package/dist/src/gateway/hono/routes/phone-setup.js +2 -2
  379. package/dist/src/gateway/hono/routes/phone.js +2 -2
  380. package/dist/src/gateway/hono/routes/projects.js +5 -5
  381. package/dist/src/gateway/hono/routes/runtime-tools.js +1 -1
  382. package/dist/src/gateway/hono/routes/session-command-handler.js +2 -2
  383. package/dist/src/gateway/hono/routes/session-input-handler.js +5 -5
  384. package/dist/src/gateway/hono/routes/sessions.js +3 -3
  385. package/dist/src/gateway/hono/routes/shares.js +1 -1
  386. package/dist/src/gateway/hono/routes/side-chats.js +1 -1
  387. package/dist/src/gateway/hono/routes/tasks.js +2 -2
  388. package/dist/src/gateway/hono/routes/user-model.js +7 -7
  389. package/dist/src/gateway/hono/routes/voice.js +7 -7
  390. package/dist/src/gateway/image-generation-setup.js +1 -1
  391. package/dist/src/gateway/lock.js +11 -11
  392. package/dist/src/gateway/media-access.js +1 -1
  393. package/dist/src/gateway/mobile-privacy.js +2 -2
  394. package/dist/src/gateway/ports.js +6 -6
  395. package/dist/src/gateway/provider-model-setup.js +1 -1
  396. package/dist/src/gateway/server.js +1 -1
  397. package/dist/src/gateway/service/agent-runner.js +2 -2
  398. package/dist/src/gateway/service/config-coordinator.js +2 -2
  399. package/dist/src/gateway/service/marketplace-service.js +2 -2
  400. package/dist/src/gateway/service/run-gateway-agent.js +5 -5
  401. package/dist/src/gateway/service/session-command-service.js +2 -2
  402. package/dist/src/gateway/service/session-input-coordinator.js +1 -1
  403. package/dist/src/gateway/service.js +41 -41
  404. package/dist/src/gateway/session-context-summary.js +4 -4
  405. package/dist/src/gateway/session-reset-service.js +1 -1
  406. package/dist/src/gateway/workspace-editor-path.js +2 -2
  407. package/dist/src/gateway/xopc-cloud-capability-setup.js +2 -2
  408. package/dist/src/home-intelligence/generator.js +2 -2
  409. package/dist/src/imports/importService.js +1 -1
  410. package/dist/src/imports/inventory.js +2 -2
  411. package/dist/src/imports/productImport.js +1 -1
  412. package/dist/src/imports/runtime.js +1 -1
  413. package/dist/src/infra/gateway-processes.js +2 -2
  414. package/dist/src/infra/path-env.js +3 -3
  415. package/dist/src/infra/update-global.js +9 -9
  416. package/dist/src/knowledge/connected-knowledge-pipeline.js +1 -1
  417. package/dist/src/knowledge/index.js +1 -1
  418. package/dist/src/knowledge-memory/repository.js +1 -1
  419. package/dist/src/knowledge-memory/usage-policy.js +1 -1
  420. package/dist/src/local-apps/service.js +3 -3
  421. package/dist/src/mcp/gateway-http-client.js +1 -1
  422. package/dist/src/media-understanding/openai-compatible-audio.js +1 -1
  423. package/dist/src/memory-learning/source-learning.js +5 -5
  424. package/dist/src/memory-learning/task-receipts.js +1 -1
  425. package/dist/src/notes/agent-context.js +4 -4
  426. package/dist/src/notes/index.js +1 -1
  427. package/dist/src/notes/service.js +3 -3
  428. package/dist/src/personal-agent/capability-service.js +2 -2
  429. package/dist/src/personal-agent/proactivity/routes.js +1 -1
  430. package/dist/src/personal-agent/proactivity/service.js +7 -7
  431. package/dist/src/personal-agent/prompt-context.js +7 -7
  432. package/dist/src/personal-agent/prompts.js +2 -2
  433. package/dist/src/personal-agent/reply-composer.js +9 -9
  434. package/dist/src/personal-agent/request-delivery.js +2 -2
  435. package/dist/src/personal-agent/request-service.js +7 -7
  436. package/dist/src/personal-agent/result-reader.js +1 -1
  437. package/dist/src/personal-agent/service.js +2 -2
  438. package/dist/src/phone/model-adapter.js +1 -1
  439. package/dist/src/phone/repository.js +1 -1
  440. package/dist/src/phone/runtime.js +4 -4
  441. package/dist/src/projects/index.js +2 -2
  442. package/dist/src/projects/project-agent-suggestion.js +1 -1
  443. package/dist/src/projects/project-service.js +2 -2
  444. package/dist/src/projects/project-skill-service.js +2 -2
  445. package/dist/src/projects/workspace.js +1 -1
  446. package/dist/src/providers/model-reference-auditor.js +1 -1
  447. package/dist/src/realtime/runtime.js +1 -1
  448. package/dist/src/remote-access/exposure-manager.js +1 -1
  449. package/dist/src/runtime-tools/archive.js +1 -1
  450. package/dist/src/runtime-tools/phone-dependencies.js +2 -2
  451. package/dist/src/session/client-history.d.ts +2 -0
  452. package/dist/src/session/client-history.js +3 -0
  453. package/dist/src/session/compact-history.js +1 -0
  454. package/dist/src/session/index.js +2 -2
  455. package/dist/src/session/init-session-turn.js +1 -1
  456. package/dist/src/session/resolve-session.js +1 -1
  457. package/dist/src/session/store.js +5 -5
  458. package/dist/src/session/thinking-resolve.js +1 -1
  459. package/dist/src/share/hosted-session-share.js +2 -2
  460. package/dist/src/share/session-share-service.js +1 -1
  461. package/dist/src/share/share-store.js +1 -1
  462. package/dist/src/share/share-thumbnail.js +1 -1
  463. package/dist/src/share/site-proxy.js +1 -1
  464. package/dist/src/share/site-share-store.js +1 -1
  465. package/dist/src/storage/sqlite/connection.js +9 -9
  466. package/dist/src/tasks/capabilities/read.js +2 -2
  467. package/dist/src/tasks/capabilities/write.js +2 -2
  468. package/dist/src/tasks/home-query-service.js +1 -1
  469. package/dist/src/tasks/index.js +5 -5
  470. package/dist/src/tasks/task-allocation-service.js +5 -5
  471. package/dist/src/tasks/task-application-service.js +5 -5
  472. package/dist/src/tasks/task-collaboration-delivery.js +1 -1
  473. package/dist/src/tasks/task-context-assembler.js +2 -2
  474. package/dist/src/tasks/task-contract-planner.js +2 -2
  475. package/dist/src/tasks/task-handoff-service.js +1 -1
  476. package/dist/src/tasks/task-handoff.js +4 -4
  477. package/dist/src/tasks/task-main-update-decision-service.js +3 -3
  478. package/dist/src/tasks/task-model-call.js +1 -1
  479. package/dist/src/tasks/task-research-result.js +4 -4
  480. package/dist/src/tasks/task-result-delivery-repository.js +1 -1
  481. package/dist/src/tasks/task-result-delivery-service.js +2 -2
  482. package/dist/src/tasks/task-run-coordinator.js +3 -3
  483. package/dist/src/tasks/task-run-dispatcher.js +1 -1
  484. package/dist/src/tui/backends/embedded-backend.js +12 -12
  485. package/dist/src/tui/backends/gateway-realtime-backend.js +2 -2
  486. package/dist/src/tui/extension-host/load-extensions.js +1 -1
  487. package/dist/src/tui/tui-commands.js +5 -5
  488. package/dist/src/tui/tui-picker-overlay.js +1 -1
  489. package/dist/src/tui/tui-skills-autocomplete.js +1 -1
  490. package/dist/src/tui/tui-startup-resources.js +3 -3
  491. package/dist/src/tui/tui.js +4 -4
  492. package/dist/src/tunnel/gateway-lifecycle.js +1 -1
  493. package/dist/src/user-context/access-policy.js +2 -2
  494. package/dist/src/user-model/bootstrap.js +1 -1
  495. package/dist/src/user-model/capture/executor.js +1 -1
  496. package/dist/src/user-model/index.js +2 -2
  497. package/dist/src/user-model/usage-policy.js +1 -1
  498. package/dist/src/voice/realtime/memory-context.js +5 -5
  499. package/dist/src/voice/realtime/omniRoute.js +1 -1
  500. package/dist/src/voice/realtime/persona-context.js +1 -1
  501. package/dist/src/voice/realtime/runtime.js +4 -4
  502. package/dist/src/voice/stt/index.js +2 -2
  503. package/dist/src/voice/stt/preflight.js +1 -1
  504. package/dist/src/voice/stt/providers/alibaba-transcription.js +1 -1
  505. package/dist/src/voice/stt/providers/bailian-plan-transcription.js +1 -1
  506. package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +1 -1
  507. package/dist/src/voice/stt/transcribe-core.js +1 -1
  508. package/dist/src/voice/tts/index.js +3 -3
  509. package/dist/src/voice/tts/merge-config.js +1 -1
  510. package/dist/src/voice/tts/payload.js +1 -1
  511. package/dist/src/voice/tts/providers/bailian-plan-speech.js +1 -1
  512. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +1 -1
  513. package/dist/src/voice/tts/speak-core.js +1 -1
  514. package/dist/src/work-discovery/service.js +7 -7
  515. package/package.json +1 -1
  516. package/dist/gateway/static/root/assets/gateway-realtime-store-eEZgUEdH.js +0 -1
  517. package/dist/gateway/static/root/assets/messages-9OwWjlww.js +0 -3
  518. package/dist/gateway/static/root/assets/note-image-lightbox-DOG9mCzE.js +0 -1
  519. package/dist/gateway/static/root/assets/page-header-store-DBeD_mAA.js +0 -1
  520. package/dist/gateway/static/root/assets/session-manager-SASXxhrN.js +0 -23
  521. package/dist/gateway/static/root/assets/settings-advanced-gate-iUlbBMZI.js +0 -1
  522. package/dist/gateway/static/root/assets/workspace-editor-agent-store-Bz_M_rk3.js +0 -1
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,t as n}from"./vendor-react-BOUWij0V.js";import{n as r}from"./locale-store-fGFrr4_4.js";import{t as i}from"./messages-9OwWjlww.js";import{t as a}from"./plus-Q2yW6OE7.js";import{t as o}from"./square-terminal-K87bylpZ.js";import{t as s}from"./x-B_N4OPjy.js";import{t as c}from"./skeleton-BI5TyibZ.js";import{u as l}from"./session-api-BwcBcvzv.js";import{t as u}from"./session-manager-SASXxhrN.js";import{t as d}from"./button-Cc4hUNTt.js";import{t as f}from"./sliding-tab-list-DuQyViqe.js";import{n as p,r as m,t as h}from"./terminal-panel-store-BDrza-7c.js";var g=2,_=1,ee=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:this._terminal.options.overviewRuler?.width||14,n=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(n.getPropertyValue(`height`)),i=Math.max(0,parseInt(n.getPropertyValue(`width`))),a=window.getComputedStyle(this._terminal.element),o={top:parseInt(a.getPropertyValue(`padding-top`)),bottom:parseInt(a.getPropertyValue(`padding-bottom`)),right:parseInt(a.getPropertyValue(`padding-right`)),left:parseInt(a.getPropertyValue(`padding-left`))},s=o.top+o.bottom,c=o.right+o.left,l=r-s,u=i-c-t;return{cols:Math.max(g,Math.floor(u/e.css.cell.width)),rows:Math.max(_,Math.floor(l/e.css.cell.height))}}},te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,re=(e,t)=>{for(var n in t)te(e,n,{get:t[n],enumerable:!0})},v=(e,t,n,r)=>{for(var i=r>1?void 0:r?ne(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&te(t,n,i),i},y=(e,t)=>(n,r)=>t(n,r,e),ie=`Terminal input`,ae={get:()=>ie,set:e=>ie=e},oe=`Too much output to announce, navigate to rows manually to read`,b={get:()=>oe,set:e=>oe=e};function se(e){return e.replace(/\r?\n/g,`\r`)}function x(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function ce(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function le(e,t,n,r){e.stopPropagation(),e.clipboardData&&ue(e.clipboardData.getData(`text/plain`),t,n,r)}function ue(e,t,n,r){e=se(e),e=x(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function S(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function de(e,t,n,r,i){S(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function C(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function fe(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var pe=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},me=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},w=``,he=` `,ge=class e{constructor(){this.fg=0,this.bg=0,this.extended=new _e}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},_e=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},T=class e extends ge{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new _e,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?C(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},ve=`di$target`,ye=`di$dependencies`,be=new Map;function xe(e){return e[ye]||[]}function E(e){if(be.has(e))return be.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);Se(t,e,r)};return t._id=e,be.set(e,t),t}function Se(e,t,n){t[ve]===t?t[ye].push({id:e,index:n}):(t[ye]=[{id:e,index:n}],t[ve]=t)}var D=E(`BufferService`),Ce=E(`CoreMouseService`),we=E(`CoreService`),Te=E(`CharsetService`),Ee=E(`InstantiationService`),De=E(`LogService`),O=E(`OptionsService`),Oe=E(`OscLinkService`),ke=E(`UnicodeService`),Ae=E(`DecorationService`),je=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new T,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Me(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};je=v([y(0,D),y(1,O),y(2,Oe)],je);function Me(e,t){if(confirm(`Do you want to navigate to ${t}?
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,t as n}from"./vendor-react-BOUWij0V.js";import{n as r}from"./locale-store-B6OrWgY1.js";import{t as i}from"./messages-jwdBhfL9.js";import{t as a}from"./plus-Q2yW6OE7.js";import{t as o}from"./square-terminal-K87bylpZ.js";import{t as s}from"./x-B_N4OPjy.js";import{t as c}from"./skeleton-BI5TyibZ.js";import{u as l}from"./session-api-Bfmlmn9F.js";import{t as u}from"./session-manager-X4UHOjjO.js";import{t as d}from"./button-Cc4hUNTt.js";import{t as f}from"./sliding-tab-list-DuQyViqe.js";import{n as p,r as m,t as h}from"./terminal-panel-store-BbWUcQe7.js";var g=2,_=1,ee=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:this._terminal.options.overviewRuler?.width||14,n=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(n.getPropertyValue(`height`)),i=Math.max(0,parseInt(n.getPropertyValue(`width`))),a=window.getComputedStyle(this._terminal.element),o={top:parseInt(a.getPropertyValue(`padding-top`)),bottom:parseInt(a.getPropertyValue(`padding-bottom`)),right:parseInt(a.getPropertyValue(`padding-right`)),left:parseInt(a.getPropertyValue(`padding-left`))},s=o.top+o.bottom,c=o.right+o.left,l=r-s,u=i-c-t;return{cols:Math.max(g,Math.floor(u/e.css.cell.width)),rows:Math.max(_,Math.floor(l/e.css.cell.height))}}},te=Object.defineProperty,ne=Object.getOwnPropertyDescriptor,re=(e,t)=>{for(var n in t)te(e,n,{get:t[n],enumerable:!0})},v=(e,t,n,r)=>{for(var i=r>1?void 0:r?ne(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&te(t,n,i),i},y=(e,t)=>(n,r)=>t(n,r,e),ie=`Terminal input`,ae={get:()=>ie,set:e=>ie=e},oe=`Too much output to announce, navigate to rows manually to read`,b={get:()=>oe,set:e=>oe=e};function se(e){return e.replace(/\r?\n/g,`\r`)}function x(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function ce(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function le(e,t,n,r){e.stopPropagation(),e.clipboardData&&ue(e.clipboardData.getData(`text/plain`),t,n,r)}function ue(e,t,n,r){e=se(e),e=x(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function S(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function de(e,t,n,r,i){S(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function C(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function fe(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var pe=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},me=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},w=``,he=` `,ge=class e{constructor(){this.fg=0,this.bg=0,this.extended=new _e}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},_e=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},T=class e extends ge{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new _e,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?C(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},ve=`di$target`,ye=`di$dependencies`,be=new Map;function xe(e){return e[ye]||[]}function E(e){if(be.has(e))return be.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);Se(t,e,r)};return t._id=e,be.set(e,t),t}function Se(e,t,n){t[ve]===t?t[ye].push({id:e,index:n}):(t[ye]=[{id:e,index:n}],t[ve]=t)}var D=E(`BufferService`),Ce=E(`CoreMouseService`),we=E(`CoreService`),Te=E(`CharsetService`),Ee=E(`InstantiationService`),De=E(`LogService`),O=E(`OptionsService`),Oe=E(`OscLinkService`),ke=E(`UnicodeService`),Ae=E(`DecorationService`),je=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new T,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Me(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};je=v([y(0,D),y(1,O),y(2,Oe)],je);function Me(e,t){if(confirm(`Do you want to navigate to ${t}?
2
2
 
3
3
  WARNING: This link could potentially be dangerous`)){let e=window.open();if(e){try{e.opener=null}catch{}e.location.href=t}else console.warn(`Opening link blocked as opener could not be cleared`)}}var Ne=E(`CharSizeService`),Pe=E(`CoreBrowserService`),Fe=E(`MouseService`),Ie=E(`RenderService`),Le=E(`SelectionService`),Re=E(`CharacterJoinerService`),ze=E(`ThemeService`),Be=E(`LinkProviderService`),Ve=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?qe.isErrorNoTelemetry(e)?new qe(e.message+`
4
4
 
@@ -1 +1 @@
1
- import{a as e,i as t,l as n}from"./locale-store-fGFrr4_4.js";import{a as r}from"./local-session-drafts-DgtYzPiy.js";import{t as i}from"./skill-wire-pattern-BPpeIcCi.js";import{t as a}from"./skill-list-api-B-2Dod7G.js";var o=RegExp(`^\\/skill:(${i})`),s=[],c=new Map;function l(e){let t=new Set;for(let n of e??[]){n?.name&&t.add(n.name);for(let e of n.aliases??[])typeof e==`string`&&e.length>0&&t.add(e)}s=Array.from(t).toSorted((e,t)=>t.length-e.length).map(e=>({key:e})),c.clear()}function u(e,t){if(t>=e.length)return!0;let n=e[t];return!/[a-zA-Z0-9_-]/.test(n)}function d(e,t){return!(e[t]!==`/`||t>0&&!/\s/.test(e[t-1]))}function f(e,t){if(!d(e,t)||s.length===0)return null;let n=e.slice(t);if(n.startsWith(`/skill:`))return null;for(let{key:e}of s){let t=`/${e}`;if(n.startsWith(t)&&u(n,t.length))return{len:t.length,matchedKey:e}}return null}function p(e){let t=[],n=0;for(;n<e.length;){if(e[n]!==`/`){n+=1;continue}let r=e.slice(n).match(o);if(r?.[0]){n+=r[0].length;continue}let i=f(e,n);i?(t.push({start:n,end:n+i.len}),n+=i.len):n+=1}return t}function m(e){for(let t=e.length-1;t>=0;--t){if(e[t]!==`/`||e.startsWith(`/skill:`,t))continue;let n=f(e,t);if(n&&t+n.len===e.length)return!0}return!1}function h(e){if(!e.startsWith(`/`)||s.length===0||e.startsWith(`/skill:`))return!1;let t=f(e,0);return t?e.length===t.len||!/[a-zA-Z0-9_-]/.test(e[t.len]):!1}function g(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function _(e){let t=c.get(e);return t||(t=RegExp(`(${g(e)})([ \\t\\f\\v]*)$`),c.set(e,t)),t}function v(e){for(let{key:t}of s){let n=`/${t}`;if(!e.endsWith(n))continue;let r=e.length-n.length;if(f(e,r))return{tokenStart:r}}return null}function y(e){for(let{key:t}of s){let n=`/${t}`,r=e.match(_(n));if(!r)continue;let i=e.length-r[0].length;if(f(e,i))return{tokenStart:i}}return null}function b(e,t){let n=t.toLowerCase().startsWith(`zh`)?`zh-CN`:`en`,r=e.localizations?.[n]??e.localizations?.en,i=r?.displayName.trim()||e.name,a=r?.description.trim()||e.description,o=new Set([e.name]),s=new Set([e.description]);for(let t of Object.values(e.localizations??{}))t?.displayName.trim()&&o.add(t.displayName.trim()),t?.description.trim()&&s.add(t.description.trim());return o.delete(i),s.delete(a),{displayName:i,description:a,aliases:[...o],searchTerms:[...s]}}async function x(e){let t=await e.json().catch(()=>({}));if(typeof t.error==`string`)return t.error;if(t.error&&typeof t.error==`object`&&`message`in t.error){let e=t.error.message;if(typeof e==`string`)return e}return`HTTP ${e.status}`}async function S(){let n=await e(t(`/api/commands`));if(!n.ok)throw Error(await x(n));return(await n.json()).payload?.commands??[]}var C=6e4,w=null,T=0,E=null,D=null,O=0,k=null,A=0,j=new Map,M=new Map,N=0;function P(e,t){let r=n.getState();return`${e?.trim()||`main`}\u0000${JSON.stringify([r.baseUrl,r.conversationId,t?.trim()||``])}`}async function F(e=!1){return!e&&w&&Date.now()<T?(l(w),w):E||(E=S().then(e=>(w=e,T=Date.now()+C,l(e),e)).catch(e=>{throw l([]),e}).finally(()=>{E=null}),E)}async function I(i,a,o=!1){let s=n.getState().conversationId,c=a?await r(a):void 0;if(s!==n.getState().conversationId)throw Error(`Active Gateway changed`);c&&(i=c.creation.agentId,a=void 0);let l=P(i,a),u=Date.now(),d=j.get(l);if(!o&&d&&u<d.expiry)return d.payload;let f=M.get(l);if(f)return f;let p=N,m=new URLSearchParams({agentId:i?.trim()||`main`});a?.trim()&&m.set(`conversationId`,a.trim());let h=e(t(`/api/chat/skills?${m.toString()}`)).then(async e=>{if(e.status===404&&a)return I(i,void 0,o);if(!e.ok)throw Error(await x(e));let t=await e.json();if(!t.payload||!Array.isArray(t.payload.skills))throw Error(`Invalid /api/chat/skills response`);return p===N&&j.set(l,{payload:t.payload,expiry:Date.now()+C}),t.payload}).finally(()=>{M.delete(l)});return M.set(l,h),h}async function L(n,r,i){let a=n?.trim()||`main`,o=await I(a,i,!0),s=new Set(o.effectiveAllowlist??o.agentAllowlist??[]);s.add(r);let c=await e(t(`/api/agents/${encodeURIComponent(a)}`),{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({skills:[...s].sort((e,t)=>e.localeCompare(t))})});if(!c.ok)throw Error(await x(c));R(a)}function R(e){if(N+=1,e){let t=`${e.trim()}\u0000`;for(let e of j.keys())e.startsWith(t)&&j.delete(e);for(let e of M.keys())e.startsWith(t)&&M.delete(e);return}j.clear(),M.clear()}async function z(n){let r=await e(t(`/api/chat/workspace-trust?${new URLSearchParams({conversationId:n}).toString()}`));if(!r.ok)throw Error(await x(r));let i=await r.json();if(!i.payload)throw Error(`Invalid /api/chat/workspace-trust response`);return i.payload}async function B(n,r){let i=await e(t(`/api/chat/workspace-trust`),{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({conversationId:n,trusted:r})});if(!i.ok)throw Error(await x(i));let a=await i.json();if(!a.payload)throw Error(`Invalid /api/chat/workspace-trust response`);return V(),a.payload}function V(e){R(e),e||(A+=1,D=null,O=0,k=null)}async function H(e=!1){if(!e&&D&&Date.now()<O)return D;if(k)return k;let t=A;return k=a().then(e=>(t===A&&(D=e,O=Date.now()+C),e)).finally(()=>{k=null}),k}export{I as a,B as c,h as d,y as f,m as h,F as i,b as l,f as m,R as n,H as o,v as p,V as r,z as s,L as t,p as u};
1
+ import{a as e,i as t,l as n}from"./locale-store-B6OrWgY1.js";import{a as r}from"./local-session-drafts-DTq9776a.js";import{t as i}from"./skill-wire-pattern-BPpeIcCi.js";import{t as a}from"./skill-list-api-DpHaXI2l.js";var o=RegExp(`^\\/skill:(${i})`),s=[],c=new Map;function l(e){let t=new Set;for(let n of e??[]){n?.name&&t.add(n.name);for(let e of n.aliases??[])typeof e==`string`&&e.length>0&&t.add(e)}s=Array.from(t).toSorted((e,t)=>t.length-e.length).map(e=>({key:e})),c.clear()}function u(e,t){if(t>=e.length)return!0;let n=e[t];return!/[a-zA-Z0-9_-]/.test(n)}function d(e,t){return!(e[t]!==`/`||t>0&&!/\s/.test(e[t-1]))}function f(e,t){if(!d(e,t)||s.length===0)return null;let n=e.slice(t);if(n.startsWith(`/skill:`))return null;for(let{key:e}of s){let t=`/${e}`;if(n.startsWith(t)&&u(n,t.length))return{len:t.length,matchedKey:e}}return null}function p(e){let t=[],n=0;for(;n<e.length;){if(e[n]!==`/`){n+=1;continue}let r=e.slice(n).match(o);if(r?.[0]){n+=r[0].length;continue}let i=f(e,n);i?(t.push({start:n,end:n+i.len}),n+=i.len):n+=1}return t}function m(e){for(let t=e.length-1;t>=0;--t){if(e[t]!==`/`||e.startsWith(`/skill:`,t))continue;let n=f(e,t);if(n&&t+n.len===e.length)return!0}return!1}function h(e){if(!e.startsWith(`/`)||s.length===0||e.startsWith(`/skill:`))return!1;let t=f(e,0);return t?e.length===t.len||!/[a-zA-Z0-9_-]/.test(e[t.len]):!1}function g(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function _(e){let t=c.get(e);return t||(t=RegExp(`(${g(e)})([ \\t\\f\\v]*)$`),c.set(e,t)),t}function v(e){for(let{key:t}of s){let n=`/${t}`;if(!e.endsWith(n))continue;let r=e.length-n.length;if(f(e,r))return{tokenStart:r}}return null}function y(e){for(let{key:t}of s){let n=`/${t}`,r=e.match(_(n));if(!r)continue;let i=e.length-r[0].length;if(f(e,i))return{tokenStart:i}}return null}function b(e,t){let n=t.toLowerCase().startsWith(`zh`)?`zh-CN`:`en`,r=e.localizations?.[n]??e.localizations?.en,i=r?.displayName.trim()||e.name,a=r?.description.trim()||e.description,o=new Set([e.name]),s=new Set([e.description]);for(let t of Object.values(e.localizations??{}))t?.displayName.trim()&&o.add(t.displayName.trim()),t?.description.trim()&&s.add(t.description.trim());return o.delete(i),s.delete(a),{displayName:i,description:a,aliases:[...o],searchTerms:[...s]}}async function x(e){let t=await e.json().catch(()=>({}));if(typeof t.error==`string`)return t.error;if(t.error&&typeof t.error==`object`&&`message`in t.error){let e=t.error.message;if(typeof e==`string`)return e}return`HTTP ${e.status}`}async function S(){let n=await e(t(`/api/commands`));if(!n.ok)throw Error(await x(n));return(await n.json()).payload?.commands??[]}var C=6e4,w=null,T=0,E=null,D=null,O=0,k=null,A=0,j=new Map,M=new Map,N=0;function P(e,t){let r=n.getState();return`${e?.trim()||`main`}\u0000${JSON.stringify([r.baseUrl,r.conversationId,t?.trim()||``])}`}async function F(e=!1){return!e&&w&&Date.now()<T?(l(w),w):E||(E=S().then(e=>(w=e,T=Date.now()+C,l(e),e)).catch(e=>{throw l([]),e}).finally(()=>{E=null}),E)}async function I(i,a,o=!1){let s=n.getState().conversationId,c=a?await r(a):void 0;if(s!==n.getState().conversationId)throw Error(`Active Gateway changed`);c&&(i=c.creation.agentId,a=void 0);let l=P(i,a),u=Date.now(),d=j.get(l);if(!o&&d&&u<d.expiry)return d.payload;let f=M.get(l);if(f)return f;let p=N,m=new URLSearchParams({agentId:i?.trim()||`main`});a?.trim()&&m.set(`conversationId`,a.trim());let h=e(t(`/api/chat/skills?${m.toString()}`)).then(async e=>{if(e.status===404&&a)return I(i,void 0,o);if(!e.ok)throw Error(await x(e));let t=await e.json();if(!t.payload||!Array.isArray(t.payload.skills))throw Error(`Invalid /api/chat/skills response`);return p===N&&j.set(l,{payload:t.payload,expiry:Date.now()+C}),t.payload}).finally(()=>{M.delete(l)});return M.set(l,h),h}async function L(n,r,i){let a=n?.trim()||`main`,o=await I(a,i,!0),s=new Set(o.effectiveAllowlist??o.agentAllowlist??[]);s.add(r);let c=await e(t(`/api/agents/${encodeURIComponent(a)}`),{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({skills:[...s].sort((e,t)=>e.localeCompare(t))})});if(!c.ok)throw Error(await x(c));R(a)}function R(e){if(N+=1,e){let t=`${e.trim()}\u0000`;for(let e of j.keys())e.startsWith(t)&&j.delete(e);for(let e of M.keys())e.startsWith(t)&&M.delete(e);return}j.clear(),M.clear()}async function z(n){let r=await e(t(`/api/chat/workspace-trust?${new URLSearchParams({conversationId:n}).toString()}`));if(!r.ok)throw Error(await x(r));let i=await r.json();if(!i.payload)throw Error(`Invalid /api/chat/workspace-trust response`);return i.payload}async function B(n,r){let i=await e(t(`/api/chat/workspace-trust`),{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({conversationId:n,trusted:r})});if(!i.ok)throw Error(await x(i));let a=await i.json();if(!a.payload)throw Error(`Invalid /api/chat/workspace-trust response`);return V(),a.payload}function V(e){R(e),e||(A+=1,D=null,O=0,k=null)}async function H(e=!1){if(!e&&D&&Date.now()<O)return D;if(k)return k;let t=A;return k=a().then(e=>(t===A&&(D=e,O=Date.now()+C),e)).finally(()=>{k=null}),k}export{I as a,B as c,h as d,y as f,m as h,F as i,b as l,f as m,R as n,H as o,v as p,V as r,z as s,L as t,p as u};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{i,o as a,p as o,r as s}from"./locale-store-fGFrr4_4.js";import{t as c}from"./check-DUBLcKHA.js";import{t as l}from"./circle-alert-BEjgurr2.js";import{x as u}from"./use-file-preview-expanded-B_cRX1Ih.js";import{t as ee}from"./mic-CuUb7zc-.js";import{t as d}from"./rotate-ccw-JM1TBLpp.js";import{t as f}from"./settings-2-D-csvaET.js";import{t as te}from"./x-B_N4OPjy.js";import{t as p}from"./cn-0WouolD0.js";import{t as ne}from"./skeleton-BI5TyibZ.js";import{a as m,f as h,i as re,l as ie,n as g,r as ae,t as oe,u as se}from"./voice-transcribe-api-CqEwxj11.js";import{d as _}from"./tasks-DRmd6sWt.js";import{s as v}from"./file-preview-surface-BFs1sAID.js";import{t as y}from"./open-capability-settings-Cvb65hQB.js";import{n as b}from"./interaction-BdhHBbYa.js";import{t as x}from"./workspace-editor-agent-store-Bz_M_rk3.js";import{l as S,p as C}from"./voice-input-shortcut-events-CWSb-oJe.js";function w(e){let t=e.task.contract?.acceptanceCriteria??[],n=new Map(e.runs.map(e=>[e.id,e])),r=e.receipts.filter(t=>n.get(t.runId)?.contractVersion===e.task.latestContractVersion).sort((e,t)=>t.finalizedAt-e.finalizedAt);return t.map((t,n)=>{let i=e.criterionReviews.find(r=>r.criterionIndex===n&&r.contractVersion===e.task.latestContractVersion&&r.criterionText===t),a={text:t,status:`unverified`,evidence:[]};for(let e of r){let n=e.verification.checks.find(e=>e.criterion===t);if(!n)continue;let r=e.evidence.filter(e=>n.evidenceTitles.includes(e.title)),i=n.status===`passed`&&_(e).has(t)?`passed`:n.status===`failed`?`failed`:`unverified`;a={text:t,status:i,evidence:r,runId:e.runId,verificationStatus:i,method:n.method,note:n.note};break}return i?{...a,status:i.status,review:i}:e.task.contract?.acceptancePolicy===`manual`?{...a,status:`unverified`}:a})}function T(e){let t=new Set(e.runs.filter(t=>t.contractVersion===e.task.latestContractVersion).map(e=>e.id));return e.receipts.filter(e=>t.has(e.runId)).sort((e,t)=>t.finalizedAt-e.finalizedAt)[0]}function E(e){let t=T(e),n=w(e);return{receipt:t,verified:n.filter(e=>e.status===`passed`).length,criteria:n.length,deliverables:e.context.filter(e=>e.role===`deliverable`).length}}function D(e){return e.task.phase===`closed`?e.task.resolution===`done`?`completed`:`ended`:e.waits.some(e=>e.kind===`paused`)?`paused`:e.attention.some(e=>e.kind===`input_required`||e.kind===`approval_required`)?`needsUser`:e.operationalState===`idle`?e.task.phase===`backlog`?`captured`:e.task.phase===`ready`?`ready`:e.task.phase===`review`?`review`:`ready`:e.operationalState}function O(e){return e===`failed`?`bg-danger/10 text-danger`:e===`needsUser`||e===`blocked`?`bg-warning/10 text-warning`:e===`completed`?`bg-success-soft text-success`:e===`running`||e===`verifying`||e===`review`?`bg-accent-soft text-accent-fg`:`bg-surface-hover text-fg-muted`}function k(e){return e===`zh`?{newWork:`交给 xopc`,dialogTitle:`现在想完成什么?`,dialogDescription:`发送后会进入新对话。xopc 会直接回答或开始处理;需要持续推进时,再转为任务。`,intentLabel:`告诉 xopc 你要做什么`,intentPlaceholder:`例如:整理这周的会议记录,提炼待办并给出下周优先级`,intentSuggestion:`整理这周的会议记录,提炼待办并给出下周优先级`,submit:`进入对话并开始`,projectLabel:`归属项目`,monitoringLabel:`跟进策略`,monitoringModes:{observe:`仅观察`,ask_before_action:`行动前询问`,auto_low_risk:`自动执行低风险操作`},existingProject:`已有项目`,newProject:`新项目`,needsAttention:`需要你处理`,waitingStatus:`当前等待`,runAttention:`运行异常`,running:`xopc 正在处理`,continue:`继续推进`,recent:`最近对话`,evidenceCount:`项证据`,remainingCount:`项待继续`,projects:`长期项目`,emptyRunning:`当前没有正在处理的对话`,emptyContinue:`还没有需要继续推进的事项`,openChat:`打开对话`,whyNow:`为什么现在`,impact:`影响`,workDone:`AI 已完成`,recommendation:`建议`,policyReason:`处理依据`,proposedAction:`拟执行动作`,actionStates:{not_authorized:`仅建议,未获自动执行授权`,approval_required:`等待你批准`,pending:`等待执行`,executing:`正在执行`,completed:`已自动执行`,rejected:`已拒绝`,failed:`执行失败`},judgmentReasons:`判断依据`,rejectedAlternatives:`未选方案`,uncertainty:`不确定性`,snooze:`明天再看`,dismiss:`忽略`,feedbackPlaceholder:`告诉 AI:以后遇到这类情况应该怎样判断…`,applyFeedback:`调整后续判断`,evidence:`证据引用`,useful:`有帮助`,notUseful:`没帮助`,taskStatuses:{pending:`待推进`,planning:`正在明确完成标准`,waiting_dependency:`等待前置任务`,running:`正在推进`,verifying:`正在验证`,needs_user:`需要你`,blocked:`已阻塞`,paused:`已暂停`,completed:`已完成`,cancelled:`已结束`},taskProgress:{title:`xopc 已接手`,open:`查看结果`,decide:`查看并决定`,evidence:`项已验证依据`,statuses:{pending:`待推进`,planning:`正在明确完成标准`,waiting_dependency:`等待前置任务`,running:`正在推进`,verifying:`正在验证`,needs_user:`需要你`,blocked:`已阻塞`,paused:`已暂停`,completed:`已完成`,cancelled:`已结束`}},detailStatuses:{allocating:`正在分配执行者`,captured:`尚未安排`,ready:`等待开始`,queued:`已进入队列`,running:`正在执行`,verifying:`正在验证`,waiting:`等待条件`,blocked:`被阻塞`,failed:`执行失败`,cancelled:`执行已取消`,needsUser:`需要你处理`,review:`等待验收`,completed:`已完成`,ended:`已结束`,paused:`已暂停`},detailStatusDescriptions:{allocating:`任务已提交,正在后台选择合适的执行者。`,captured:`任务已记录,但尚未进入执行队列。安排后,xopc 会开始推进。`,ready:`任务已经准备好,可以交给 xopc 开始执行。`,queued:`任务已进入执行队列,xopc 将在资源可用时开始。`,running:`xopc 正在推进这个任务。`,verifying:`xopc 正在根据完成标准核验结果。`,waiting:`任务正在等待外部条件满足。`,blocked:`当前存在阻塞条件,解除后才能继续。`,failed:`最近一次执行失败;查看运行记录后可以重试。`,cancelled:`最近一次执行已取消;任务仍可重新开始。`,needsUser:`xopc 需要你的输入或批准后才能继续。`,review:`执行结果已经准备好,等待你验收。`,completed:`任务已经完成并关闭。`,ended:`任务已经结束,不会继续执行。`,paused:`已暂停自动推进和催办。恢复后仍需满足其他等待条件。`},statusSummary:`当前状态`,taskLabel:`任务`,taskDescription:`任务描述与目标`,editTaskField:`编辑`,saveTaskField:`保存`,cancelTaskField:`取消`,noTaskDescription:`添加任务背景、范围和交付要求。`,taskProperties:`任务属性`,taskPhase:`阶段`,priority:`优先级`,dueDate:`截止日期`,executorLabel:`执行 Agent`,priorityLabels:{low:`低优先级`,normal:`普通优先级`,high:`高优先级`,critical:`紧急`},unassigned:`未指定执行者`,noDueDate:`无截止时间`,updatedAt:`更新于 {{date}}`,successDefinition:`怎样才算完成`,taskDefinition:`任务定义`,criteriaProgress:`{{verified}}/{{total}} 已验证`,taskRelations:`任务关系`,dependencies:`前置任务`,dependents:`后续任务`,noDependencies:`没有前置任务`,noDependents:`没有后续任务`,editDependencies:`编辑前置任务`,saveDependencies:`保存关系`,cancelDependencyEdit:`取消`,dependenciesDescription:`所选任务全部完成后,xopc 才会开始推进当前任务。`,linkDependencies:`关联前置任务`,linkedDependencies:`已关联 {{count}} 个前置任务`,dependencySearchPlaceholder:`搜索任务名称`,noDependencyMatches:`没有匹配的任务`,noDependencyCandidates:`没有可选的其他任务`,removeDependency:`移除前置任务:{{task}}`,dependencyUpdateFailed:`前置任务更新失败,请刷新后重试。`,expectedOutputs:`预期输出`,constraints:`约束与边界`,approvalRequired:`需要你批准`,latestResult:`最新结果`,remainingWork:`还差什么`,nextAction:`下一步`,yourDecision:`只需你决定`,noRemainingWork:`已覆盖全部完成标准。`,noDecisionNeeded:`暂时不需要你做任何事,xopc 会继续推进。`,contextUsed:`本次使用的上下文`,contextSources:`信息来源`,contextAssumptions:`当前假设`,contextRisks:`风险`,contextRoleLabels:{input:`输入`,reference:`参考`,constraint:`约束`,deliverable:`交付物`,evidence:`证据`},contextKindLabels:{document:`文档`,file:`文件`,url:`链接`,session:`对话`,memory:`记忆`,task:`任务`,artifact:`产物`,source:`来源`},currentTask:`当前任务`,executionHistory:`历史执行记录({{count}})`,receiptStatuses:{succeeded:`执行成功`,failed:`执行失败`,cancelled:`已取消`},unresolvedCriteria:`待验证标准`,resultFeedback:`这件事做好了吗?`,doneWell:`结果有帮助`,needsFix:`结果没帮助`,correctionPlaceholder:`告诉 xopc 哪里不对、你真正想要的结果是什么`,submitCorrection:`修正并继续`,feedbackThanks:`收到,我会据此继续改进。`,correctionStarted:`收到,已重新打开并开始修正。`,noDefinition:`系统正在进一步明确完成标准。未明确前不会把事情误判为已完成。`,backToWork:`返回任务列表`,openTaskConversation:`进入对话`,taskNotFound:`没有找到这个任务`,runTask:`开始推进`,scheduleTask:`安排执行`,scheduleRecurringTask:`定时执行`,approveTask:`确认完成`,reopenTask:`重新打开`,moreActions:`更多操作`,pauseTask:`暂停推进`,resumeTask:`继续推进`,cancelTask:`结束事项`,cancelActiveRun:`取消当前执行`,deleteTask:`永久删除任务`,deleteTaskTitle:`永久删除这个任务?`,deleteTaskDescription:`将永久删除“{{title}}”及其执行记录、上下文和回执。关联对话、工作区文件和外部产物不会被删除。`,confirmDeleteTask:`永久删除`,keepTask:`保留任务`,deleteActiveTaskBlocked:`请先结束当前执行,再永久删除任务。`,actionFailed:`操作失败,请重试。`,verificationStatuses:{passed:`已验证`,failed:`验证未通过`,unverified:`待验证`}}:{newWork:`Ask xopc`,dialogTitle:`What do you want to get done?`,dialogDescription:`This opens a new conversation. xopc will answer or start working, and create a task only when the work needs ongoing progress.`,intentLabel:`Tell xopc what you need`,intentPlaceholder:`For example: summarize this week’s meeting notes and suggest next week’s priorities`,intentSuggestion:`Summarize this week’s meeting notes and suggest next week’s priorities`,submit:`Open conversation and start`,projectLabel:`Project`,monitoringLabel:`Follow-up policy`,monitoringModes:{observe:`Observe only`,ask_before_action:`Ask before acting`,auto_low_risk:`Auto-run low-risk actions`},existingProject:`Existing project`,newProject:`New project`,needsAttention:`Needs your attention`,waitingStatus:`Current status`,runAttention:`Run issues`,running:`xopc is working`,continue:`Continue`,recent:`Recent conversations`,evidenceCount:`evidence items`,remainingCount:`remaining`,projects:`Long-term projects`,emptyRunning:`No conversations are running`,emptyContinue:`No ongoing items yet`,openChat:`Open conversation`,whyNow:`Why now`,impact:`Impact`,workDone:`AI checked`,recommendation:`Recommendation`,policyReason:`Policy decision`,proposedAction:`Proposed action`,actionStates:{not_authorized:`Suggested only; not authorized for auto-run`,approval_required:`Waiting for your approval`,pending:`Queued to run`,executing:`Running`,completed:`Auto-run completed`,rejected:`Rejected`,failed:`Execution failed`},judgmentReasons:`Why this is recommended`,rejectedAlternatives:`Alternatives not chosen`,uncertainty:`Uncertainty`,snooze:`Tomorrow`,dismiss:`Dismiss`,feedbackPlaceholder:`Tell AI how to judge this kind of event next time…`,applyFeedback:`Update future judgments`,evidence:`Evidence references`,useful:`Useful`,notUseful:`Not useful`,taskStatuses:{pending:`Pending`,planning:`Defining done`,waiting_dependency:`Waiting on dependencies`,running:`In progress`,verifying:`Verifying`,needs_user:`Needs you`,blocked:`Blocked`,paused:`Paused`,completed:`Completed`,cancelled:`Ended`},taskProgress:{title:`xopc owns this task`,open:`View task`,decide:`Review and decide`,evidence:`verified evidence`,statuses:{pending:`Pending`,planning:`Defining done`,waiting_dependency:`Waiting on dependencies`,running:`In progress`,verifying:`Verifying`,needs_user:`Needs you`,blocked:`Needs you`,paused:`Paused`,completed:`Completed`,cancelled:`Ended`}},detailStatuses:{allocating:`Assigning an executor`,captured:`Not scheduled`,ready:`Ready to start`,queued:`Queued`,running:`In progress`,verifying:`Verifying`,waiting:`Waiting`,blocked:`Blocked`,failed:`Execution failed`,cancelled:`Execution cancelled`,needsUser:`Needs your attention`,review:`Ready for review`,completed:`Completed`,ended:`Ended`,paused:`Paused`},detailStatusDescriptions:{allocating:`The task is submitted and a suitable executor is being selected in the background.`,captured:`This task is captured but has not entered the work queue. Schedule it when you are ready.`,ready:`This task is ready for xopc to start.`,queued:`This task is queued and will start when resources are available.`,running:`xopc is currently working on this task.`,verifying:`xopc is checking the result against the completion criteria.`,waiting:`This task is waiting for an external condition.`,blocked:`A blocking condition must be resolved before work can continue.`,failed:`The latest run failed. Review its result before retrying.`,cancelled:`The latest run was cancelled. This task can be started again.`,needsUser:`xopc needs your input or approval before continuing.`,review:`The result is ready for your review.`,completed:`This task is complete and closed.`,ended:`This task has ended and will not continue.`,paused:`Automatic progress and reminders are paused. Other waiting conditions still apply after resuming.`},statusSummary:`Current status`,taskLabel:`Task`,taskDescription:`Description and objective`,editTaskField:`Edit`,saveTaskField:`Save`,cancelTaskField:`Cancel`,noTaskDescription:`Add background, scope, and delivery requirements.`,taskProperties:`Task properties`,taskPhase:`Phase`,priority:`Priority`,dueDate:`Due date`,executorLabel:`Agent`,priorityLabels:{low:`Low priority`,normal:`Normal priority`,high:`High priority`,critical:`Critical`},unassigned:`No assignee`,noDueDate:`No due date`,updatedAt:`Updated {{date}}`,successDefinition:`Definition of done`,taskDefinition:`Task definition`,criteriaProgress:`{{verified}}/{{total}} verified`,taskRelations:`Task relationships`,dependencies:`Dependencies`,dependents:`Dependent tasks`,noDependencies:`No dependencies`,noDependents:`No dependent tasks`,editDependencies:`Edit dependencies`,saveDependencies:`Save relationships`,cancelDependencyEdit:`Cancel`,dependenciesDescription:`xopc starts this task after every selected task is complete.`,linkDependencies:`Link dependencies`,linkedDependencies:`Linked dependencies: {{count}}`,dependencySearchPlaceholder:`Search tasks`,noDependencyMatches:`No matching tasks`,noDependencyCandidates:`There are no other tasks to select`,removeDependency:`Remove dependency: {{task}}`,dependencyUpdateFailed:`Dependencies could not be updated. Refresh and try again.`,expectedOutputs:`Expected outputs`,constraints:`Constraints and boundaries`,approvalRequired:`Your approval is required`,latestResult:`Latest result`,remainingWork:`What remains`,nextAction:`Next action`,yourDecision:`Your one decision`,noRemainingWork:`All completion criteria are covered.`,noDecisionNeeded:`Nothing is needed from you. xopc will keep moving this forward.`,contextUsed:`Context used for this task`,contextSources:`Sources`,contextAssumptions:`Current assumptions`,contextRisks:`Risks`,contextRoleLabels:{input:`Input`,reference:`Reference`,constraint:`Constraint`,deliverable:`Deliverable`,evidence:`Evidence`},contextKindLabels:{document:`Document`,file:`File`,url:`Link`,session:`Conversation`,memory:`Memory`,task:`Task`,artifact:`Artifact`,source:`Source`},currentTask:`Current task`,executionHistory:`Execution history ({{count}})`,receiptStatuses:{succeeded:`Succeeded`,failed:`Failed`,cancelled:`Cancelled`},unresolvedCriteria:`Criteria still to verify`,resultFeedback:`Was this done well?`,doneWell:`Helpful result`,needsFix:`Unhelpful result`,correctionPlaceholder:`Tell xopc what is wrong and what the right task should be`,submitCorrection:`Fix and continue`,feedbackThanks:`Got it. I will use this to improve future work.`,correctionStarted:`Got it. This was reopened and correction has started.`,noDefinition:`xopc is still clarifying the completion criteria. It will not mark this done before they are explicit.`,backToWork:`Back to tasks`,openTaskConversation:`Open conversation`,taskNotFound:`This task was not found`,runTask:`Start working`,scheduleTask:`Schedule work`,scheduleRecurringTask:`Schedule`,approveTask:`Mark complete`,reopenTask:`Reopen`,moreActions:`More actions`,pauseTask:`Pause`,resumeTask:`Continue`,cancelTask:`End task`,cancelActiveRun:`Cancel active run`,deleteTask:`Delete task permanently`,deleteTaskTitle:`Delete this task permanently?`,deleteTaskDescription:`This permanently deletes “{{title}}” and its execution records, context, and receipts. Linked conversations, workspace files, and external artifacts are kept.`,confirmDeleteTask:`Delete permanently`,keepTask:`Keep task`,deleteActiveTaskBlocked:`End the active run before deleting this task permanently.`,actionFailed:`The action failed. Please try again.`,verificationStatuses:{passed:`Verified`,failed:`Verification failed`,unverified:`Not verified`}}}function A(e,t,n,r){return new Promise((i,a)=>{let o=!1,s=(e,n)=>{o||(o=!0,clearTimeout(l),t.removeEventListener(`abort`,c),e===void 0?i(n):a(e))},c=()=>s(t.reason??new DOMException(`Cancelled`,`AbortError`)),l=setTimeout(()=>s(new DOMException(`Voice startup timed out`,`TimeoutError`)),n);e.then(e=>{o?r?.(e):s(void 0,e)},e=>s(e)),t.addEventListener(`abort`,c,{once:!0}),t.aborted&&c()})}function j(e,t,n,r){let i=e.get(t);if(i&&(n<i.revision||i.final&&!r||n===i.revision&&(i.final||!r)))return!1;if(!e.has(t)&&e.size>=256){let t=e.keys().next().value;t!==void 0&&e.delete(t)}return e.set(t,{revision:n,final:r}),!0}var M=e(t(),1),N=null;function ce(e){return N&&N!==e?!1:(N=e,!0)}function le(e){N===e&&(N=null)}function ue(e){if(!(e instanceof Error))return!1;let t=e.body,n=typeof t?.error==`object`?t.error.code:void 0;return n===`VOICE_DISABLED`||n===`PROVIDER_UNAVAILABLE`}function de(e){if(!Number.isFinite(e)||e<0)return`0:00`;let t=Math.floor(e%60);return`${Math.floor(e/60)}:${t.toString().padStart(2,`0`)}`}function fe(e){return e===`requesting`||e===`connecting`||e===`starting`}async function pe(){if(!navigator.permissions?.query)return null;try{return(await navigator.permissions.query({name:`microphone`})).state}catch{return null}}function me(e){return e instanceof DOMException||e instanceof Error?e.name:``}function he(e,t){if(e===`permission`)return`permission`;if(e===`recorder`)return`recorder`;if(e===`session`)return`session`;let n=me(t);return n===`NotAllowedError`||n===`SecurityError`?`permission`:`device`}function ge(e){let{disabled:t,chat:n,onTranscript:r}=e,[o,c]=(0,M.useState)(`idle`),[l,ee]=(0,M.useState)(!1),d=(0,M.useRef)(null),f=(0,M.useRef)(null),te=(0,M.useRef)(void 0),[p,ne]=(0,M.useState)(0),[_,v]=(0,M.useState)(0),[y,b]=(0,M.useState)(``),[x,S]=(0,M.useState)(``),[C,w]=(0,M.useState)(``),[T,E]=(0,M.useState)([]),[D,O]=(0,M.useState)(null),[k,N]=(0,M.useState)(`idle`),[ge,_e]=(0,M.useState)(null),[ve,ye]=(0,M.useState)(!1),P=(0,M.useRef)(!1),[F,I]=(0,M.useState)(null),[be,xe]=(0,M.useState)(null),[Se,Ce]=(0,M.useState)(!1),[we,Te]=(0,M.useState)(null),L=(0,M.useRef)(void 0),R=(0,M.useRef)(null),[Ee,De]=(0,M.useState)(`dictation`),Oe=(0,M.useRef)(Symbol(`voice-capture`)),z=(0,M.useRef)(`idle`),B=(0,M.useRef)(0),V=(0,M.useRef)(null),ke=(0,M.useRef)(null),H=(0,M.useRef)(null),Ae=(0,M.useRef)(void 0),je=(0,M.useRef)(void 0),U=(0,M.useRef)(null),Me=(0,M.useRef)(null),Ne=(0,M.useRef)(null),W=(0,M.useRef)(new Map),G=(0,M.useRef)(!1),Pe=(0,M.useRef)(()=>{}),Fe=(0,M.useRef)(new Map),K=(0,M.useRef)(null),Ie=(0,M.useRef)(null),Le=(0,M.useRef)(!1),Re=(0,M.useRef)(null),ze=(0,M.useRef)(!1),Be=(0,M.useRef)(0),Ve=(0,M.useRef)(6e5),He=(0,M.useRef)(null),q=(0,M.useRef)(null),Ue=(0,M.useRef)(r);Ue.current=r;let J=(0,M.useCallback)(e=>{z.current=e,c(e)},[]),Y=(0,M.useCallback)(()=>{He.current!=null&&(clearInterval(He.current),He.current=null)},[]),X=(0,M.useCallback)(()=>{Me.current?.getTracks().forEach(e=>e.stop()),Me.current=null},[]),Z=(0,M.useCallback)(()=>{le(Oe.current),B.current+=1,R.current?.abort(),R.current=null,Y(),q.current!==null&&clearTimeout(q.current),q.current=null,U.current?.stopRingback(),X(),d.current?.cancel(),d.current=null,f.current=null,te.current=void 0,ee(!1),V.current?.cancel(),V.current=null,ke.current=null,H.current=null;let e=U.current;U.current=null,e?.close(),Ne.current=null,ne(0),v(0),b(``),S(``),w(``),N(`idle`),_e(null),E([]),O(null),Re.current=null,P.current=!1,ye(!1),Ce(!1),Fe.current.clear(),W.current.clear(),G.current=!1,K.current=null,Ie.current=null},[X,Y]),Q=(0,M.useCallback)(()=>{Z(),J(`idle`)},[Z,J]),We=(0,M.useCallback)(()=>{H.current?.stop(`user_finished`),Q(),I(null),xe(null),Te(null)},[Q]),$=(0,M.useCallback)(async e=>{if(G.current)return;G.current=!0;let t=B.current,r=e??[...W.current.values()].join(` `).trim();if(X(),Y(),V.current?.cancel(),V.current=null,J(`transcribing`),!r){u(`warning`,n.voiceTranscribeEmpty),Q();return}let o=r;try{let e=await a(i(`/api/voice/transcriptions/refine`),{method:`POST`,body:JSON.stringify({text:r}),signal:AbortSignal.any([R.current.signal,AbortSignal.timeout(15e3)])});e.payload.text.trim()&&(o=e.payload.text)}catch{if(t!==B.current)return;u(`warning`,n.voiceRefinementFailed)}t===B.current&&(Ue.current(o),Q())},[Q,n.voiceRefinementFailed,n.voiceTranscribeEmpty,X,Y,J]),Ge=(0,M.useCallback)(async()=>{if(G.current)return;G.current=!0;let e=B.current;Y(),J(`transcribing`);try{let t=d.current;if(!f.current&&t){let n=await t.stop();if(e!==B.current)return;f.current=n}if(d.current=null,X(),e!==B.current)return;let r=f.current;if(!r)throw Error(n.voiceTranscribeEmpty);let i=await g(r,r.type,AbortSignal.any([R.current.signal,AbortSignal.timeout(9e4)]),te.current);if(e!==B.current)return;G.current=!1,await $(i.text.trim())}catch(t){if(e!==B.current)return;X(),G.current=!1,I(t instanceof Error?t.message:n.voiceTranscribeFailed),xe(`session`),J(`error`)}},[$,n.voiceTranscribeEmpty,n.voiceTranscribeFailed,X,Y,J]),Ke=(0,M.useCallback)(e=>{Te(e);let t=z.current;if(!(t===`idle`||t===`error`||G.current)){if(!L.current){if(t===`transcribing`&&e===`input_committed`){$();return}Y(),X(),V.current?.cancel(),V.current=null,H.current=null,I(n.voiceTranscribeFailed),J(`error`);return}Q()}},[$,Q,n.voiceTranscribeFailed,X,Y,J]),qe=(0,M.useCallback)(()=>{Y(),He.current=setInterval(()=>{let e=Ne.current;if(e===null)return;let t=performance.now()-e;if(ne(Math.max(0,t/1e3)),t>=Ve.current&&z.current===`recording`){if(!L.current){Pe.current();return}Te(`session_limit`),H.current?.stop(`user_finished`),Q()}},200)},[Q,Y]),Je=(0,M.useCallback)(async(e,r,i,a=!1)=>{if(t||z.current!==`idle`||e===`conversation`&&!i)return;if(!ce(Oe.current)){I(n.callCaptureBusy),e===`dictation`&&u(`error`,n.callCaptureBusy);return}L.current=i;let o=new AbortController;R.current=o,I(null),xe(null),Te(null);let c=++B.current,l=()=>c===B.current;De(e),_e(e===`conversation`?`preparing`:null),(!a||!Ae.current)&&(Ae.current=crypto.randomUUID()),je.current=r,w(``),J(`connecting`);let f=performance.now(),p=(e,t,n)=>A(e,o.signal,t,n),g=`permission`;try{if(e===`conversation`){g=`recorder`;let e=new ie;if(U.current=e,await p(e.start(),1e4),!l()){e.close();return}}g=`session`;let t=e===`dictation`?await p(oe(o.signal),2e4):null;if(!l())return;if(t?.mode===`unavailable`){let e=Error(n.voiceSttNotConfigured);throw Object.assign(e,{body:{error:{code:`PROVIDER_UNAVAILABLE`}}}),e}let c=t?.mode===`recorded`,f=c?[]:await p(se.preflight({purpose:e,...e===`conversation`?{mode:r,conversationId:i}:{},signal:o.signal}),2e4);if(!l())return;g=`permission`;let _=window.electronAPI?.system,y=await p(pe(),5e3);if(!l()||!fe(z.current))return;if(_&&y!==`granted`){J(`requesting`);let e=await p(_.requestMicrophone(),6e4);if(!l())return;let t=window.electronAPI?.platform===`darwin`&&e.status!==`granted`;if(e.status===`denied`||t)throw Error(`Microphone permission denied`)}else!_&&y!==`granted`&&J(`requesting`);if(!l()||!fe(z.current))return;J(`starting`),window.dispatchEvent(new Event(`xopc-voice-recording-start`)),g=`media`;let x=await p(navigator.mediaDevices.getUserMedia({audio:h()}),15e3,e=>e.getTracks().forEach(e=>e.stop()));if(!l()||!fe(z.current)){x.getTracks().forEach(e=>e.stop());return}if(Me.current=x,c){g=`recorder`;let e=await p(m.start(x,{onAudioLevel:({level:e})=>{l()&&v(Math.min(1,e*8))}}),15e3,e=>e.cancel());if(!l()){e.cancel();return}d.current=e,te.current=t.provider,ee(!0),Ve.current=6e5,Ne.current=performance.now(),ne(0),J(`recording`),qe();return}e===`conversation`&&(_e(`dialing`),U.current?.startRingback(),q.current=setTimeout(()=>{l()&&(U.current?.stopRingback(),_e(`slow`),q.current=null)},12e3)),g=`session`,J(`connecting`),W.current.clear();let C=await p(se.connect({timingMetrics:f,logicalCallId:Ae.current,recovery:a,language:s(),purpose:e,signal:o.signal,...e===`conversation`?{mode:r,conversationId:i}:{},onEvent:t=>{if(l()&&!((t.type===`input.transcript.delta`||t.type===`input.transcript.final`)&&!j(Fe.current,t.payload.utteranceId,t.payload.revision,t.type===`input.transcript.final`))){if(t.type===`input.transcript.delta`&&b(t.payload.text),t.type===`input.transcript.final`){let n=t.payload.text.trim();b(``),S(n),n&&e===`dictation`&&(W.current.set(t.payload.utteranceId,n),[...W.current.values()].join(` `).length>=2e4&&z.current===`recording`&&Pe.current(),S([...W.current.values()].join(` `)))}if(t.type===`input.speech_stopped`&&(Re.current=performance.now()),t.type===`response.created`){if(K.current){K.current!==t.payload.responseId&&H.current?.cancelResponse(t.payload.responseId);return}K.current=t.payload.responseId,Le.current=!1,ze.current=!1,Be.current=0,w(``),E([]),O(null),N(`thinking`)}if(t.type===`task.created`&&K.current===t.payload.responseId&&(Ie.current=t.payload.taskId),t.type===`task.activity`&&Ie.current===t.payload.taskId){let e={toolCallId:t.payload.toolCallId,toolName:t.payload.toolName,status:t.payload.status};E(t=>[...t.filter(t=>t.toolCallId!==e.toolCallId),e].slice(-8))}if(t.type===`task.done`&&Ie.current===t.payload.taskId&&(Ie.current=null,E([])),t.type===`response.clarification`&&K.current===t.payload.responseId&&O(t.payload),t.type===`response.text.delta`&&K.current===t.payload.responseId&&(N(`speaking`),w(e=>e+t.payload.delta)),t.type===`response.audio.started`&&K.current===t.payload.responseId&&N(`speaking`),t.type===`response.done`&&K.current===t.payload.responseId&&(Le.current=!0,U.current?.hasPendingAudio||(K.current=null,N(`idle`))),t.type===`response.cancelled`&&K.current===t.payload.responseId&&(K.current=null,N(`idle`),U.current?.clear()),t.type===`session.error`&&t.payload.recoverable&&t.payload.code===`RESPONSE_FAILED`&&u(`warning`,n.voiceResponseFailed),t.type===`session.error`&&t.payload.recoverable&&t.payload.code===`INPUT_DROPPED`&&u(`warning`,n.voiceInputDropped),t.type===`session.error`&&!t.payload.recoverable){let r=t.payload.code===`PROVIDER_UNAVAILABLE`,i=t.payload.code===`CONTEXT_CHANGED`?n.voiceContextChanged:r?n.voiceSttNotConfigured:t.payload.message;I(i),xe(`session`),Ce(r),e===`dictation`&&u(`error`,i,void 0,r?{href:`/settings/capabilities/models?configure=transcription`}:void 0),H.current?.stop(`surface_closed`),e===`conversation`?Z():(Y(),X(),V.current?.cancel(),V.current=null,H.current=null),J(`error`)}}},onAudio:(e,t)=>{if(!l())return;let n=K.current;if(!n||t!==n)return;let r=!ze.current,i=Re.current;r&&(ze.current=!0,Re.current!==null&&H.current?.reportMetric(n,`speech_end_to_audio_received`,performance.now()-Re.current),Re.current=null);let a=U.current?.enqueue(e,()=>{K.current===n&&(Be.current+=e.byteLength,H.current?.acknowledgeAudio(n,Be.current),Le.current&&!U.current?.hasPendingAudio&&(K.current=null,N(`idle`)))});r&&i!==null&&a!==void 0&&H.current?.reportMetric(n,`speech_end_to_audio_scheduled`,performance.now()-i+a)},onClose:e=>{l()&&Ke(e)}}),2e4,e=>e.stop(`surface_closed`));if(!l()){C.stop(`surface_closed`);return}U.current?.stopRingback(),q.current!==null&&clearTimeout(q.current),q.current=null,H.current=C,Ve.current=C.session.limits.maxSessionMs,g=`recorder`,J(`starting`);let T,D=[],k=await p(ae.start(x,{onSamples:e=>{if(!l()||P.current)return;if(!T){D.push(e);return}let t=(ke.current??T).push(e);t&&C.sendAudio(t)},onAudioLevel:({level:e})=>{l()&&(P.current||v(Math.min(1,e*8)))}}),15e3,e=>e.cancel());if(!l()||!fe(z.current)){k.cancel(),C.stop(`surface_closed`),x.getTracks().forEach(e=>e.stop());return}if(V.current=k,e===`conversation`&&(await p(U.current.start(),1e4),!l()))return;C.outputReady(),T=new re(k.sampleRate,C.session.inputFormat.sampleRate),ke.current=T;for(let e of D)C.sendAudio(T.push(e));Ne.current=performance.now(),ne(0),J(`recording`),_e(null),qe()}catch(t){if(!l())return;let r=he(g,t);console.error(`[chat:voice] realtime capture start failed`,{stage:g,durationMs:Math.round(performance.now()-f),kind:r,errorName:me(t),errorMessage:t instanceof Error?t.message:String(t)}),H.current?.stop(`surface_closed`),Z(),J(r===`session`?`error`:`idle`);let i=r===`session`&&ue(t),a=me(t)===`TimeoutError`?g===`session`?n.voiceConnectionTimeout:n.voiceMicrophoneTimeout:r===`permission`?n.voiceMicDenied:r===`device`?n.voiceMicUnavailable:r===`recorder`?n.voiceRecorderFailed:i?n.voiceSttNotConfigured:t instanceof Error?t.message:n.voiceSttNotConfigured;I(a),xe(r),Ce(i),e===`dictation`&&u(`error`,a,void 0,i?{href:`/settings/capabilities/models?configure=transcription`}:void 0)}},[t,Ke,n,Z,qe,X,Y,J]),Ye=(0,M.useCallback)(()=>{if(L.current)return;if(d.current||f.current){Ge();return}if(z.current===`error`&&W.current.size){$();return}if(z.current!==`recording`)return;J(`transcribing`),Y(),X();let e=V.current,t=B.current;V.current=null,e?.stop().then(()=>{if(t!==B.current)return;let e=ke.current?.flush();e&&H.current?.sendAudio(e),H.current?.commit()}).catch(()=>{t===B.current&&(u(`error`,n.voiceTranscribeFailed),H.current?.stop(`surface_closed`),Z(),J(`error`))})},[$,Ge,n.voiceTranscribeFailed,Z,X,Y,J]);Pe.current=Ye,(0,M.useEffect)(()=>()=>{le(Oe.current),B.current+=1,R.current?.abort(),d.current?.cancel(),f.current=null,V.current?.cancel(),H.current?.stop(`surface_closed`),U.current?.close(),q.current!==null&&clearTimeout(q.current),X(),Y()},[X,Y]);let Xe=(0,M.useCallback)(()=>{if(z.current===`error`){if(f.current){Ge();return}Z(),J(`idle`),Je(Ee,je.current,L.current,!0)}},[Je,Ge,Ee,Z,J]),Ze=(0,M.useCallback)(()=>Je(`dictation`),[Je]),Qe=(0,M.useCallback)((e,t)=>Je(`conversation`,t,e),[Je]),$e=(0,M.useCallback)(()=>{let e=performance.now(),t=K.current;U.current?.clear(),K.current=null,N(`idle`),t&&(H.current?.reportMetric(t,`local_stop`,performance.now()-e),H.current?.cancelResponse(t))},[]),et=(0,M.useCallback)(()=>{let e=!P.current;P.current=e,Me.current?.getAudioTracks().forEach(t=>{t.enabled=!e});let t=V.current,n=H.current;t&&n&&(ke.current=new re(t.sampleRate,n.session.inputFormat.sampleRate)),n?.setInputMuted(e),b(``),v(0),U.current?.duck(!1),ye(e)},[]);return{phase:o,voiceActive:o!==`idle`,recordedDictation:l,elapsedLabel:de(p),audioLevel:_,partialTranscript:y,finalTranscript:x,responseText:C,activities:T,clarification:D,dismissClarification:e=>O(t=>t?.requestId===e?null:t),responsePhase:k,callConnectionStage:ge,muted:ve,error:F,failureKind:be,settingsRequired:Se,endedReason:we,mode:Ee,startVoiceInput:Ze,startVoiceConversation:Qe,interruptResponse:$e,toggleMute:et,cancelVoiceInput:We,confirmVoiceInput:Ye,retryVoiceInput:Xe}}var _e=o(e=>({path:null,line:null,projectId:null,conversationId:null,setPath:(t,n,r,i,a)=>{if(t){let e=v.getState().scope;v.getState().openFile({path:t,line:n,projectId:r||void 0,conversationId:i||(e===`new`?void 0:e),agentId:x.getState().agentId||void 0,resultRevision:a})}e({path:t,resultRevision:t?a:void 0,line:t&&typeof n==`number`&&Number.isFinite(n)&&n>0?Math.floor(n):null,projectId:t&&r?.trim()||null,conversationId:t&&i?.trim()||null})}}));function ve(e){return`${e.name}\0${e.size}`}function ye(e){if(!e)return[];let t=new Set,n=[],r=e=>{if(!e||e.size===0)return;let r=ve(e);t.has(r)||(t.add(r),n.push(e))},{files:i}=e;if(i?.length)for(let e=0;e<i.length;e++)r(i.item(e));for(let t of Array.from(e.items??[]))t.kind===`file`&&r(t.getAsFile());return n}var P=n(),F=r();function I(e){let t=(0,P.c)(10),{disabled:n,chat:r,onStart:i}=e,a=S(be),o=r.voiceInput,s;t[0]===a?s=t[1]:(s=C(a).join(`+`),t[0]=a,t[1]=s);let c=`${o} (${s})`,l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=p(`relative inline-flex size-11 sm:size-8 shrink-0 items-center justify-center rounded-lg border border-transparent text-fg-subtle hover:bg-surface-hover hover:text-fg`,b.transition,b.press,b.focusRingPanel,`disabled:cursor-not-allowed disabled:opacity-50`),t[2]=l):l=t[2];let u;t[3]===i?u=t[4]:(u=()=>void i(),t[3]=i,t[4]=u);let d;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,F.jsx)(ee,{className:`size-4 stroke-[1.75]`}),t[5]=d):d=t[5];let f;return t[6]!==n||t[7]!==u||t[8]!==c?(f=(0,F.jsx)(`button`,{type:`button`,className:l,disabled:n,title:c,"aria-label":c,onClick:u,children:d}),t[6]=n,t[7]=u,t[8]=c,t[9]=f):f=t[9],f}function be(e){return e.shortcut}function xe(e,t){let n=t.trim();if(!n)return e;let r=e.trim();return r?`${r} ${n}`:n}var Se=p(`inline-flex min-h-11 min-w-11 shrink-0 gap-2 px-3 items-center justify-center rounded-lg text-fg-muted`,`hover:bg-surface-hover hover:text-fg`,b.transition,b.press,b.focusRingPanel,`disabled:cursor-not-allowed disabled:opacity-50`),Ce=(0,M.memo)(function(e){let t=(0,P.c)(47),{phase:n,elapsedLabel:r,recordedDictation:i,audioLevel:a,partialTranscript:o,finalTranscript:s,error:u,settingsRequired:ee,disabled:m,chat:h,onCancel:re,onConfirm:ie,onRetry:g}=e,ae=n===`transcribing`,oe=n===`requesting`,se=n===`connecting`,_=n===`starting`,v=n===`error`,y=v?u||h.voiceTranscribeFailed:oe?h.voiceRequestingMicrophone:se?h.voiceConnectingService:_?h.voiceStartingMicrophone:ae?h.voiceTranscribing:i?h.voiceRecordedDictationStatus:h.voiceRecordingStatus,b;t[0]!==s||t[1]!==o?(b=[s,o].filter(Boolean),t[0]=s,t[1]=o,t[2]=b):b=t[2];let x=b.join(` `),S=oe||se||_||ae,C;t[3]!==a||t[4]!==v||t[5]!==n?(C=n===`recording`?(0,F.jsx)(`div`,{className:`flex h-5 shrink-0 items-center gap-0.5`,"aria-hidden":!0,children:Array.from({length:9},(e,t)=>{let n=.35+(t%4+1)*.16;return(0,F.jsx)(`span`,{className:`w-0.5 rounded-full bg-fg-muted motion-safe:transition-[height] motion-safe:duration-75`,style:{height:Math.max(3,Math.round(18*Math.min(1,a*n+.08)))}},t)})}):v?(0,F.jsx)(l,{className:`size-4 shrink-0 text-danger`,"aria-hidden":!0}):(0,F.jsx)(ne,{className:`h-4 w-8`}),t[3]=a,t[4]=v,t[5]=n,t[6]=C):C=t[6];let w=v?`alert`:`status`,T;t[7]!==y||t[8]!==w?(T=(0,F.jsx)(`p`,{className:`min-w-0 flex-1 break-words text-sm text-fg-muted`,role:w,children:y}),t[7]=y,t[8]=w,t[9]=T):T=t[9];let E;t[10]!==r||t[11]!==n?(E=n===`recording`?(0,F.jsx)(`span`,{className:`shrink-0 text-sm tabular-nums text-fg-muted`,children:r}):null,t[10]=r,t[11]=n,t[12]=E):E=t[12];let D;t[13]!==C||t[14]!==T||t[15]!==E?(D=(0,F.jsxs)(`div`,{className:`flex items-center gap-3 px-1`,children:[C,T,E]}),t[13]=C,t[14]=T,t[15]=E,t[16]=D):D=t[16];let O;t[17]===x?O=t[18]:(O=x?(0,F.jsx)(`p`,{className:`max-h-28 overflow-y-auto overscroll-contain whitespace-pre-wrap break-words px-1 text-base text-fg`,children:x}):null,t[17]=x,t[18]=O);let k;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,F.jsx)(te,{className:`size-4`,"aria-hidden":!0}),t[19]=k):k=t[19];let A;t[20]!==h.voiceInputCancel||t[21]!==re?(A=(0,F.jsxs)(`button`,{type:`button`,className:Se,title:h.voiceInputCancel,"aria-label":h.voiceInputCancel,onClick:re,children:[k,h.voiceInputCancel]}),t[20]=h.voiceInputCancel,t[21]=re,t[22]=A):A=t[22];let j;t[23]!==m||t[24]!==v||t[25]!==h.voiceOpenSettings||t[26]!==h.voiceRetry||t[27]!==g||t[28]!==ee?(j=v&&ee?(0,F.jsxs)(`a`,{onClick:we,href:`#/settings/capabilities/models?configure=transcription`,className:p(Se,`text-accent-fg`),children:[(0,F.jsx)(f,{className:`size-4`,"aria-hidden":!0}),h.voiceOpenSettings]}):v?(0,F.jsxs)(`button`,{type:`button`,className:Se,disabled:m,"aria-label":h.voiceRetry,onClick:g,children:[(0,F.jsx)(d,{className:`size-4`,"aria-hidden":!0}),h.voiceRetry]}):null,t[23]=m,t[24]=v,t[25]=h.voiceOpenSettings,t[26]=h.voiceRetry,t[27]=g,t[28]=ee,t[29]=j):j=t[29];let M;t[30]!==m||t[31]!==v||t[32]!==s||t[33]!==h.voiceInputConfirm||t[34]!==ie||t[35]!==n?(M=n===`recording`||v&&s?(0,F.jsxs)(`button`,{type:`button`,className:p(Se,`rounded-full bg-accent text-on-accent hover:bg-accent-hover hover:text-on-accent`),disabled:m,"aria-label":h.voiceInputConfirm,onClick:ie,children:[(0,F.jsx)(c,{className:`size-4`,"aria-hidden":!0}),h.voiceInputConfirm]}):null,t[30]=m,t[31]=v,t[32]=s,t[33]=h.voiceInputConfirm,t[34]=ie,t[35]=n,t[36]=M):M=t[36];let N;t[37]!==A||t[38]!==j||t[39]!==M?(N=(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[A,j,M]}),t[37]=A,t[38]=j,t[39]=M,t[40]=N):N=t[40];let ce;return t[41]!==h.voiceInput||t[42]!==N||t[43]!==S||t[44]!==D||t[45]!==O?(ce=(0,F.jsxs)(`section`,{className:`w-full space-y-3 py-3`,"aria-label":h.voiceInput,"aria-busy":S,children:[D,O,N]}),t[41]=h.voiceInput,t[42]=N,t[43]=S,t[44]=D,t[45]=O,t[46]=ce):ce=t[46],ce});function we(e){!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&e.button===0&&(e.preventDefault(),y(`transcription`))}var Te=120*1e3,L=new Map;function R(){return typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function Ee(e){for(let[t,n]of L)n.expiresAt<=e&&L.delete(t)}function De(e,t=Date.now()){Ee(t);let n=R();return L.set(n,{attachments:e.map(e=>({...e})),expiresAt:t+Te}),n}function Oe(e,t=Date.now()){let n=L.get(e);if(!n)return null;if(n.expiresAt<=t)return L.delete(e),null;if(!n.attachments)return null;let r=n.attachments;return n.attachments=null,r}export{I as a,ge as c,k as d,T as f,E as g,w as h,xe as i,ce as l,O as m,Oe as n,ye as o,D as p,Ce as r,_e as s,De as t,le as u};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{i,o as a,p as o,r as s}from"./locale-store-B6OrWgY1.js";import{t as c}from"./check-DUBLcKHA.js";import{t as l}from"./circle-alert-BEjgurr2.js";import{x as u}from"./use-file-preview-expanded-CW956CXS.js";import{t as ee}from"./mic-CuUb7zc-.js";import{t as d}from"./rotate-ccw-JM1TBLpp.js";import{t as f}from"./settings-2-D-csvaET.js";import{t as te}from"./x-B_N4OPjy.js";import{t as p}from"./cn-0WouolD0.js";import{t as ne}from"./skeleton-BI5TyibZ.js";import{a as m,f as h,i as re,l as ie,n as g,r as ae,t as oe,u as se}from"./voice-transcribe-api-CVEcB6Pe.js";import{d as _}from"./tasks-DRmd6sWt.js";import{s as v}from"./file-preview-surface-zE9AcaHM.js";import{t as y}from"./open-capability-settings-Cvb65hQB.js";import{n as b}from"./interaction-BdhHBbYa.js";import{t as x}from"./workspace-editor-agent-store-msZa42fU.js";import{l as S,p as C}from"./voice-input-shortcut-events-B9xc1oK8.js";function w(e){let t=e.task.contract?.acceptanceCriteria??[],n=new Map(e.runs.map(e=>[e.id,e])),r=e.receipts.filter(t=>n.get(t.runId)?.contractVersion===e.task.latestContractVersion).sort((e,t)=>t.finalizedAt-e.finalizedAt);return t.map((t,n)=>{let i=e.criterionReviews.find(r=>r.criterionIndex===n&&r.contractVersion===e.task.latestContractVersion&&r.criterionText===t),a={text:t,status:`unverified`,evidence:[]};for(let e of r){let n=e.verification.checks.find(e=>e.criterion===t);if(!n)continue;let r=e.evidence.filter(e=>n.evidenceTitles.includes(e.title)),i=n.status===`passed`&&_(e).has(t)?`passed`:n.status===`failed`?`failed`:`unverified`;a={text:t,status:i,evidence:r,runId:e.runId,verificationStatus:i,method:n.method,note:n.note};break}return i?{...a,status:i.status,review:i}:e.task.contract?.acceptancePolicy===`manual`?{...a,status:`unverified`}:a})}function T(e){let t=new Set(e.runs.filter(t=>t.contractVersion===e.task.latestContractVersion).map(e=>e.id));return e.receipts.filter(e=>t.has(e.runId)).sort((e,t)=>t.finalizedAt-e.finalizedAt)[0]}function E(e){let t=T(e),n=w(e);return{receipt:t,verified:n.filter(e=>e.status===`passed`).length,criteria:n.length,deliverables:e.context.filter(e=>e.role===`deliverable`).length}}function D(e){return e.task.phase===`closed`?e.task.resolution===`done`?`completed`:`ended`:e.waits.some(e=>e.kind===`paused`)?`paused`:e.attention.some(e=>e.kind===`input_required`||e.kind===`approval_required`)?`needsUser`:e.operationalState===`idle`?e.task.phase===`backlog`?`captured`:e.task.phase===`ready`?`ready`:e.task.phase===`review`?`review`:`ready`:e.operationalState}function O(e){return e===`failed`?`bg-danger/10 text-danger`:e===`needsUser`||e===`blocked`?`bg-warning/10 text-warning`:e===`completed`?`bg-success-soft text-success`:e===`running`||e===`verifying`||e===`review`?`bg-accent-soft text-accent-fg`:`bg-surface-hover text-fg-muted`}function k(e){return e===`zh`?{newWork:`交给 xopc`,dialogTitle:`现在想完成什么?`,dialogDescription:`发送后会进入新对话。xopc 会直接回答或开始处理;需要持续推进时,再转为任务。`,intentLabel:`告诉 xopc 你要做什么`,intentPlaceholder:`例如:整理这周的会议记录,提炼待办并给出下周优先级`,intentSuggestion:`整理这周的会议记录,提炼待办并给出下周优先级`,submit:`进入对话并开始`,projectLabel:`归属项目`,monitoringLabel:`跟进策略`,monitoringModes:{observe:`仅观察`,ask_before_action:`行动前询问`,auto_low_risk:`自动执行低风险操作`},existingProject:`已有项目`,newProject:`新项目`,needsAttention:`需要你处理`,waitingStatus:`当前等待`,runAttention:`运行异常`,running:`xopc 正在处理`,continue:`继续推进`,recent:`最近对话`,evidenceCount:`项证据`,remainingCount:`项待继续`,projects:`长期项目`,emptyRunning:`当前没有正在处理的对话`,emptyContinue:`还没有需要继续推进的事项`,openChat:`打开对话`,whyNow:`为什么现在`,impact:`影响`,workDone:`AI 已完成`,recommendation:`建议`,policyReason:`处理依据`,proposedAction:`拟执行动作`,actionStates:{not_authorized:`仅建议,未获自动执行授权`,approval_required:`等待你批准`,pending:`等待执行`,executing:`正在执行`,completed:`已自动执行`,rejected:`已拒绝`,failed:`执行失败`},judgmentReasons:`判断依据`,rejectedAlternatives:`未选方案`,uncertainty:`不确定性`,snooze:`明天再看`,dismiss:`忽略`,feedbackPlaceholder:`告诉 AI:以后遇到这类情况应该怎样判断…`,applyFeedback:`调整后续判断`,evidence:`证据引用`,useful:`有帮助`,notUseful:`没帮助`,taskStatuses:{pending:`待推进`,planning:`正在明确完成标准`,waiting_dependency:`等待前置任务`,running:`正在推进`,verifying:`正在验证`,needs_user:`需要你`,blocked:`已阻塞`,paused:`已暂停`,completed:`已完成`,cancelled:`已结束`},taskProgress:{title:`xopc 已接手`,open:`查看结果`,decide:`查看并决定`,evidence:`项已验证依据`,statuses:{pending:`待推进`,planning:`正在明确完成标准`,waiting_dependency:`等待前置任务`,running:`正在推进`,verifying:`正在验证`,needs_user:`需要你`,blocked:`已阻塞`,paused:`已暂停`,completed:`已完成`,cancelled:`已结束`}},detailStatuses:{allocating:`正在分配执行者`,captured:`尚未安排`,ready:`等待开始`,queued:`已进入队列`,running:`正在执行`,verifying:`正在验证`,waiting:`等待条件`,blocked:`被阻塞`,failed:`执行失败`,cancelled:`执行已取消`,needsUser:`需要你处理`,review:`等待验收`,completed:`已完成`,ended:`已结束`,paused:`已暂停`},detailStatusDescriptions:{allocating:`任务已提交,正在后台选择合适的执行者。`,captured:`任务已记录,但尚未进入执行队列。安排后,xopc 会开始推进。`,ready:`任务已经准备好,可以交给 xopc 开始执行。`,queued:`任务已进入执行队列,xopc 将在资源可用时开始。`,running:`xopc 正在推进这个任务。`,verifying:`xopc 正在根据完成标准核验结果。`,waiting:`任务正在等待外部条件满足。`,blocked:`当前存在阻塞条件,解除后才能继续。`,failed:`最近一次执行失败;查看运行记录后可以重试。`,cancelled:`最近一次执行已取消;任务仍可重新开始。`,needsUser:`xopc 需要你的输入或批准后才能继续。`,review:`执行结果已经准备好,等待你验收。`,completed:`任务已经完成并关闭。`,ended:`任务已经结束,不会继续执行。`,paused:`已暂停自动推进和催办。恢复后仍需满足其他等待条件。`},statusSummary:`当前状态`,taskLabel:`任务`,taskDescription:`任务描述与目标`,editTaskField:`编辑`,saveTaskField:`保存`,cancelTaskField:`取消`,noTaskDescription:`添加任务背景、范围和交付要求。`,taskProperties:`任务属性`,taskPhase:`阶段`,priority:`优先级`,dueDate:`截止日期`,executorLabel:`执行 Agent`,priorityLabels:{low:`低优先级`,normal:`普通优先级`,high:`高优先级`,critical:`紧急`},unassigned:`未指定执行者`,noDueDate:`无截止时间`,updatedAt:`更新于 {{date}}`,successDefinition:`怎样才算完成`,taskDefinition:`任务定义`,criteriaProgress:`{{verified}}/{{total}} 已验证`,taskRelations:`任务关系`,dependencies:`前置任务`,dependents:`后续任务`,noDependencies:`没有前置任务`,noDependents:`没有后续任务`,editDependencies:`编辑前置任务`,saveDependencies:`保存关系`,cancelDependencyEdit:`取消`,dependenciesDescription:`所选任务全部完成后,xopc 才会开始推进当前任务。`,linkDependencies:`关联前置任务`,linkedDependencies:`已关联 {{count}} 个前置任务`,dependencySearchPlaceholder:`搜索任务名称`,noDependencyMatches:`没有匹配的任务`,noDependencyCandidates:`没有可选的其他任务`,removeDependency:`移除前置任务:{{task}}`,dependencyUpdateFailed:`前置任务更新失败,请刷新后重试。`,expectedOutputs:`预期输出`,constraints:`约束与边界`,approvalRequired:`需要你批准`,latestResult:`最新结果`,remainingWork:`还差什么`,nextAction:`下一步`,yourDecision:`只需你决定`,noRemainingWork:`已覆盖全部完成标准。`,noDecisionNeeded:`暂时不需要你做任何事,xopc 会继续推进。`,contextUsed:`本次使用的上下文`,contextSources:`信息来源`,contextAssumptions:`当前假设`,contextRisks:`风险`,contextRoleLabels:{input:`输入`,reference:`参考`,constraint:`约束`,deliverable:`交付物`,evidence:`证据`},contextKindLabels:{document:`文档`,file:`文件`,url:`链接`,session:`对话`,memory:`记忆`,task:`任务`,artifact:`产物`,source:`来源`},currentTask:`当前任务`,executionHistory:`历史执行记录({{count}})`,receiptStatuses:{succeeded:`执行成功`,failed:`执行失败`,cancelled:`已取消`},unresolvedCriteria:`待验证标准`,resultFeedback:`这件事做好了吗?`,doneWell:`结果有帮助`,needsFix:`结果没帮助`,correctionPlaceholder:`告诉 xopc 哪里不对、你真正想要的结果是什么`,submitCorrection:`修正并继续`,feedbackThanks:`收到,我会据此继续改进。`,correctionStarted:`收到,已重新打开并开始修正。`,noDefinition:`系统正在进一步明确完成标准。未明确前不会把事情误判为已完成。`,backToWork:`返回任务列表`,openTaskConversation:`进入对话`,taskNotFound:`没有找到这个任务`,runTask:`开始推进`,scheduleTask:`安排执行`,scheduleRecurringTask:`定时执行`,approveTask:`确认完成`,reopenTask:`重新打开`,moreActions:`更多操作`,pauseTask:`暂停推进`,resumeTask:`继续推进`,cancelTask:`结束事项`,cancelActiveRun:`取消当前执行`,deleteTask:`永久删除任务`,deleteTaskTitle:`永久删除这个任务?`,deleteTaskDescription:`将永久删除“{{title}}”及其执行记录、上下文和回执。关联对话、工作区文件和外部产物不会被删除。`,confirmDeleteTask:`永久删除`,keepTask:`保留任务`,deleteActiveTaskBlocked:`请先结束当前执行,再永久删除任务。`,actionFailed:`操作失败,请重试。`,verificationStatuses:{passed:`已验证`,failed:`验证未通过`,unverified:`待验证`}}:{newWork:`Ask xopc`,dialogTitle:`What do you want to get done?`,dialogDescription:`This opens a new conversation. xopc will answer or start working, and create a task only when the work needs ongoing progress.`,intentLabel:`Tell xopc what you need`,intentPlaceholder:`For example: summarize this week’s meeting notes and suggest next week’s priorities`,intentSuggestion:`Summarize this week’s meeting notes and suggest next week’s priorities`,submit:`Open conversation and start`,projectLabel:`Project`,monitoringLabel:`Follow-up policy`,monitoringModes:{observe:`Observe only`,ask_before_action:`Ask before acting`,auto_low_risk:`Auto-run low-risk actions`},existingProject:`Existing project`,newProject:`New project`,needsAttention:`Needs your attention`,waitingStatus:`Current status`,runAttention:`Run issues`,running:`xopc is working`,continue:`Continue`,recent:`Recent conversations`,evidenceCount:`evidence items`,remainingCount:`remaining`,projects:`Long-term projects`,emptyRunning:`No conversations are running`,emptyContinue:`No ongoing items yet`,openChat:`Open conversation`,whyNow:`Why now`,impact:`Impact`,workDone:`AI checked`,recommendation:`Recommendation`,policyReason:`Policy decision`,proposedAction:`Proposed action`,actionStates:{not_authorized:`Suggested only; not authorized for auto-run`,approval_required:`Waiting for your approval`,pending:`Queued to run`,executing:`Running`,completed:`Auto-run completed`,rejected:`Rejected`,failed:`Execution failed`},judgmentReasons:`Why this is recommended`,rejectedAlternatives:`Alternatives not chosen`,uncertainty:`Uncertainty`,snooze:`Tomorrow`,dismiss:`Dismiss`,feedbackPlaceholder:`Tell AI how to judge this kind of event next time…`,applyFeedback:`Update future judgments`,evidence:`Evidence references`,useful:`Useful`,notUseful:`Not useful`,taskStatuses:{pending:`Pending`,planning:`Defining done`,waiting_dependency:`Waiting on dependencies`,running:`In progress`,verifying:`Verifying`,needs_user:`Needs you`,blocked:`Blocked`,paused:`Paused`,completed:`Completed`,cancelled:`Ended`},taskProgress:{title:`xopc owns this task`,open:`View task`,decide:`Review and decide`,evidence:`verified evidence`,statuses:{pending:`Pending`,planning:`Defining done`,waiting_dependency:`Waiting on dependencies`,running:`In progress`,verifying:`Verifying`,needs_user:`Needs you`,blocked:`Needs you`,paused:`Paused`,completed:`Completed`,cancelled:`Ended`}},detailStatuses:{allocating:`Assigning an executor`,captured:`Not scheduled`,ready:`Ready to start`,queued:`Queued`,running:`In progress`,verifying:`Verifying`,waiting:`Waiting`,blocked:`Blocked`,failed:`Execution failed`,cancelled:`Execution cancelled`,needsUser:`Needs your attention`,review:`Ready for review`,completed:`Completed`,ended:`Ended`,paused:`Paused`},detailStatusDescriptions:{allocating:`The task is submitted and a suitable executor is being selected in the background.`,captured:`This task is captured but has not entered the work queue. Schedule it when you are ready.`,ready:`This task is ready for xopc to start.`,queued:`This task is queued and will start when resources are available.`,running:`xopc is currently working on this task.`,verifying:`xopc is checking the result against the completion criteria.`,waiting:`This task is waiting for an external condition.`,blocked:`A blocking condition must be resolved before work can continue.`,failed:`The latest run failed. Review its result before retrying.`,cancelled:`The latest run was cancelled. This task can be started again.`,needsUser:`xopc needs your input or approval before continuing.`,review:`The result is ready for your review.`,completed:`This task is complete and closed.`,ended:`This task has ended and will not continue.`,paused:`Automatic progress and reminders are paused. Other waiting conditions still apply after resuming.`},statusSummary:`Current status`,taskLabel:`Task`,taskDescription:`Description and objective`,editTaskField:`Edit`,saveTaskField:`Save`,cancelTaskField:`Cancel`,noTaskDescription:`Add background, scope, and delivery requirements.`,taskProperties:`Task properties`,taskPhase:`Phase`,priority:`Priority`,dueDate:`Due date`,executorLabel:`Agent`,priorityLabels:{low:`Low priority`,normal:`Normal priority`,high:`High priority`,critical:`Critical`},unassigned:`No assignee`,noDueDate:`No due date`,updatedAt:`Updated {{date}}`,successDefinition:`Definition of done`,taskDefinition:`Task definition`,criteriaProgress:`{{verified}}/{{total}} verified`,taskRelations:`Task relationships`,dependencies:`Dependencies`,dependents:`Dependent tasks`,noDependencies:`No dependencies`,noDependents:`No dependent tasks`,editDependencies:`Edit dependencies`,saveDependencies:`Save relationships`,cancelDependencyEdit:`Cancel`,dependenciesDescription:`xopc starts this task after every selected task is complete.`,linkDependencies:`Link dependencies`,linkedDependencies:`Linked dependencies: {{count}}`,dependencySearchPlaceholder:`Search tasks`,noDependencyMatches:`No matching tasks`,noDependencyCandidates:`There are no other tasks to select`,removeDependency:`Remove dependency: {{task}}`,dependencyUpdateFailed:`Dependencies could not be updated. Refresh and try again.`,expectedOutputs:`Expected outputs`,constraints:`Constraints and boundaries`,approvalRequired:`Your approval is required`,latestResult:`Latest result`,remainingWork:`What remains`,nextAction:`Next action`,yourDecision:`Your one decision`,noRemainingWork:`All completion criteria are covered.`,noDecisionNeeded:`Nothing is needed from you. xopc will keep moving this forward.`,contextUsed:`Context used for this task`,contextSources:`Sources`,contextAssumptions:`Current assumptions`,contextRisks:`Risks`,contextRoleLabels:{input:`Input`,reference:`Reference`,constraint:`Constraint`,deliverable:`Deliverable`,evidence:`Evidence`},contextKindLabels:{document:`Document`,file:`File`,url:`Link`,session:`Conversation`,memory:`Memory`,task:`Task`,artifact:`Artifact`,source:`Source`},currentTask:`Current task`,executionHistory:`Execution history ({{count}})`,receiptStatuses:{succeeded:`Succeeded`,failed:`Failed`,cancelled:`Cancelled`},unresolvedCriteria:`Criteria still to verify`,resultFeedback:`Was this done well?`,doneWell:`Helpful result`,needsFix:`Unhelpful result`,correctionPlaceholder:`Tell xopc what is wrong and what the right task should be`,submitCorrection:`Fix and continue`,feedbackThanks:`Got it. I will use this to improve future work.`,correctionStarted:`Got it. This was reopened and correction has started.`,noDefinition:`xopc is still clarifying the completion criteria. It will not mark this done before they are explicit.`,backToWork:`Back to tasks`,openTaskConversation:`Open conversation`,taskNotFound:`This task was not found`,runTask:`Start working`,scheduleTask:`Schedule work`,scheduleRecurringTask:`Schedule`,approveTask:`Mark complete`,reopenTask:`Reopen`,moreActions:`More actions`,pauseTask:`Pause`,resumeTask:`Continue`,cancelTask:`End task`,cancelActiveRun:`Cancel active run`,deleteTask:`Delete task permanently`,deleteTaskTitle:`Delete this task permanently?`,deleteTaskDescription:`This permanently deletes “{{title}}” and its execution records, context, and receipts. Linked conversations, workspace files, and external artifacts are kept.`,confirmDeleteTask:`Delete permanently`,keepTask:`Keep task`,deleteActiveTaskBlocked:`End the active run before deleting this task permanently.`,actionFailed:`The action failed. Please try again.`,verificationStatuses:{passed:`Verified`,failed:`Verification failed`,unverified:`Not verified`}}}function A(e,t,n,r){return new Promise((i,a)=>{let o=!1,s=(e,n)=>{o||(o=!0,clearTimeout(l),t.removeEventListener(`abort`,c),e===void 0?i(n):a(e))},c=()=>s(t.reason??new DOMException(`Cancelled`,`AbortError`)),l=setTimeout(()=>s(new DOMException(`Voice startup timed out`,`TimeoutError`)),n);e.then(e=>{o?r?.(e):s(void 0,e)},e=>s(e)),t.addEventListener(`abort`,c,{once:!0}),t.aborted&&c()})}function j(e,t,n,r){let i=e.get(t);if(i&&(n<i.revision||i.final&&!r||n===i.revision&&(i.final||!r)))return!1;if(!e.has(t)&&e.size>=256){let t=e.keys().next().value;t!==void 0&&e.delete(t)}return e.set(t,{revision:n,final:r}),!0}var M=e(t(),1),N=null;function ce(e){return N&&N!==e?!1:(N=e,!0)}function le(e){N===e&&(N=null)}function ue(e){if(!(e instanceof Error))return!1;let t=e.body,n=typeof t?.error==`object`?t.error.code:void 0;return n===`VOICE_DISABLED`||n===`PROVIDER_UNAVAILABLE`}function de(e){if(!Number.isFinite(e)||e<0)return`0:00`;let t=Math.floor(e%60);return`${Math.floor(e/60)}:${t.toString().padStart(2,`0`)}`}function fe(e){return e===`requesting`||e===`connecting`||e===`starting`}async function pe(){if(!navigator.permissions?.query)return null;try{return(await navigator.permissions.query({name:`microphone`})).state}catch{return null}}function me(e){return e instanceof DOMException||e instanceof Error?e.name:``}function he(e,t){if(e===`permission`)return`permission`;if(e===`recorder`)return`recorder`;if(e===`session`)return`session`;let n=me(t);return n===`NotAllowedError`||n===`SecurityError`?`permission`:`device`}function ge(e){let{disabled:t,chat:n,onTranscript:r}=e,[o,c]=(0,M.useState)(`idle`),[l,ee]=(0,M.useState)(!1),d=(0,M.useRef)(null),f=(0,M.useRef)(null),te=(0,M.useRef)(void 0),[p,ne]=(0,M.useState)(0),[_,v]=(0,M.useState)(0),[y,b]=(0,M.useState)(``),[x,S]=(0,M.useState)(``),[C,w]=(0,M.useState)(``),[T,E]=(0,M.useState)([]),[D,O]=(0,M.useState)(null),[k,N]=(0,M.useState)(`idle`),[ge,_e]=(0,M.useState)(null),[ve,ye]=(0,M.useState)(!1),P=(0,M.useRef)(!1),[F,I]=(0,M.useState)(null),[be,xe]=(0,M.useState)(null),[Se,Ce]=(0,M.useState)(!1),[we,Te]=(0,M.useState)(null),L=(0,M.useRef)(void 0),R=(0,M.useRef)(null),[Ee,De]=(0,M.useState)(`dictation`),Oe=(0,M.useRef)(Symbol(`voice-capture`)),z=(0,M.useRef)(`idle`),B=(0,M.useRef)(0),V=(0,M.useRef)(null),ke=(0,M.useRef)(null),H=(0,M.useRef)(null),Ae=(0,M.useRef)(void 0),je=(0,M.useRef)(void 0),U=(0,M.useRef)(null),Me=(0,M.useRef)(null),Ne=(0,M.useRef)(null),W=(0,M.useRef)(new Map),G=(0,M.useRef)(!1),Pe=(0,M.useRef)(()=>{}),Fe=(0,M.useRef)(new Map),K=(0,M.useRef)(null),Ie=(0,M.useRef)(null),Le=(0,M.useRef)(!1),Re=(0,M.useRef)(null),ze=(0,M.useRef)(!1),Be=(0,M.useRef)(0),Ve=(0,M.useRef)(6e5),He=(0,M.useRef)(null),q=(0,M.useRef)(null),Ue=(0,M.useRef)(r);Ue.current=r;let J=(0,M.useCallback)(e=>{z.current=e,c(e)},[]),Y=(0,M.useCallback)(()=>{He.current!=null&&(clearInterval(He.current),He.current=null)},[]),X=(0,M.useCallback)(()=>{Me.current?.getTracks().forEach(e=>e.stop()),Me.current=null},[]),Z=(0,M.useCallback)(()=>{le(Oe.current),B.current+=1,R.current?.abort(),R.current=null,Y(),q.current!==null&&clearTimeout(q.current),q.current=null,U.current?.stopRingback(),X(),d.current?.cancel(),d.current=null,f.current=null,te.current=void 0,ee(!1),V.current?.cancel(),V.current=null,ke.current=null,H.current=null;let e=U.current;U.current=null,e?.close(),Ne.current=null,ne(0),v(0),b(``),S(``),w(``),N(`idle`),_e(null),E([]),O(null),Re.current=null,P.current=!1,ye(!1),Ce(!1),Fe.current.clear(),W.current.clear(),G.current=!1,K.current=null,Ie.current=null},[X,Y]),Q=(0,M.useCallback)(()=>{Z(),J(`idle`)},[Z,J]),We=(0,M.useCallback)(()=>{H.current?.stop(`user_finished`),Q(),I(null),xe(null),Te(null)},[Q]),$=(0,M.useCallback)(async e=>{if(G.current)return;G.current=!0;let t=B.current,r=e??[...W.current.values()].join(` `).trim();if(X(),Y(),V.current?.cancel(),V.current=null,J(`transcribing`),!r){u(`warning`,n.voiceTranscribeEmpty),Q();return}let o=r;try{let e=await a(i(`/api/voice/transcriptions/refine`),{method:`POST`,body:JSON.stringify({text:r}),signal:AbortSignal.any([R.current.signal,AbortSignal.timeout(15e3)])});e.payload.text.trim()&&(o=e.payload.text)}catch{if(t!==B.current)return;u(`warning`,n.voiceRefinementFailed)}t===B.current&&(Ue.current(o),Q())},[Q,n.voiceRefinementFailed,n.voiceTranscribeEmpty,X,Y,J]),Ge=(0,M.useCallback)(async()=>{if(G.current)return;G.current=!0;let e=B.current;Y(),J(`transcribing`);try{let t=d.current;if(!f.current&&t){let n=await t.stop();if(e!==B.current)return;f.current=n}if(d.current=null,X(),e!==B.current)return;let r=f.current;if(!r)throw Error(n.voiceTranscribeEmpty);let i=await g(r,r.type,AbortSignal.any([R.current.signal,AbortSignal.timeout(9e4)]),te.current);if(e!==B.current)return;G.current=!1,await $(i.text.trim())}catch(t){if(e!==B.current)return;X(),G.current=!1,I(t instanceof Error?t.message:n.voiceTranscribeFailed),xe(`session`),J(`error`)}},[$,n.voiceTranscribeEmpty,n.voiceTranscribeFailed,X,Y,J]),Ke=(0,M.useCallback)(e=>{Te(e);let t=z.current;if(!(t===`idle`||t===`error`||G.current)){if(!L.current){if(t===`transcribing`&&e===`input_committed`){$();return}Y(),X(),V.current?.cancel(),V.current=null,H.current=null,I(n.voiceTranscribeFailed),J(`error`);return}Q()}},[$,Q,n.voiceTranscribeFailed,X,Y,J]),qe=(0,M.useCallback)(()=>{Y(),He.current=setInterval(()=>{let e=Ne.current;if(e===null)return;let t=performance.now()-e;if(ne(Math.max(0,t/1e3)),t>=Ve.current&&z.current===`recording`){if(!L.current){Pe.current();return}Te(`session_limit`),H.current?.stop(`user_finished`),Q()}},200)},[Q,Y]),Je=(0,M.useCallback)(async(e,r,i,a=!1)=>{if(t||z.current!==`idle`||e===`conversation`&&!i)return;if(!ce(Oe.current)){I(n.callCaptureBusy),e===`dictation`&&u(`error`,n.callCaptureBusy);return}L.current=i;let o=new AbortController;R.current=o,I(null),xe(null),Te(null);let c=++B.current,l=()=>c===B.current;De(e),_e(e===`conversation`?`preparing`:null),(!a||!Ae.current)&&(Ae.current=crypto.randomUUID()),je.current=r,w(``),J(`connecting`);let f=performance.now(),p=(e,t,n)=>A(e,o.signal,t,n),g=`permission`;try{if(e===`conversation`){g=`recorder`;let e=new ie;if(U.current=e,await p(e.start(),1e4),!l()){e.close();return}}g=`session`;let t=e===`dictation`?await p(oe(o.signal),2e4):null;if(!l())return;if(t?.mode===`unavailable`){let e=Error(n.voiceSttNotConfigured);throw Object.assign(e,{body:{error:{code:`PROVIDER_UNAVAILABLE`}}}),e}let c=t?.mode===`recorded`,f=c?[]:await p(se.preflight({purpose:e,...e===`conversation`?{mode:r,conversationId:i}:{},signal:o.signal}),2e4);if(!l())return;g=`permission`;let _=window.electronAPI?.system,y=await p(pe(),5e3);if(!l()||!fe(z.current))return;if(_&&y!==`granted`){J(`requesting`);let e=await p(_.requestMicrophone(),6e4);if(!l())return;let t=window.electronAPI?.platform===`darwin`&&e.status!==`granted`;if(e.status===`denied`||t)throw Error(`Microphone permission denied`)}else!_&&y!==`granted`&&J(`requesting`);if(!l()||!fe(z.current))return;J(`starting`),window.dispatchEvent(new Event(`xopc-voice-recording-start`)),g=`media`;let x=await p(navigator.mediaDevices.getUserMedia({audio:h()}),15e3,e=>e.getTracks().forEach(e=>e.stop()));if(!l()||!fe(z.current)){x.getTracks().forEach(e=>e.stop());return}if(Me.current=x,c){g=`recorder`;let e=await p(m.start(x,{onAudioLevel:({level:e})=>{l()&&v(Math.min(1,e*8))}}),15e3,e=>e.cancel());if(!l()){e.cancel();return}d.current=e,te.current=t.provider,ee(!0),Ve.current=6e5,Ne.current=performance.now(),ne(0),J(`recording`),qe();return}e===`conversation`&&(_e(`dialing`),U.current?.startRingback(),q.current=setTimeout(()=>{l()&&(U.current?.stopRingback(),_e(`slow`),q.current=null)},12e3)),g=`session`,J(`connecting`),W.current.clear();let C=await p(se.connect({timingMetrics:f,logicalCallId:Ae.current,recovery:a,language:s(),purpose:e,signal:o.signal,...e===`conversation`?{mode:r,conversationId:i}:{},onEvent:t=>{if(l()&&!((t.type===`input.transcript.delta`||t.type===`input.transcript.final`)&&!j(Fe.current,t.payload.utteranceId,t.payload.revision,t.type===`input.transcript.final`))){if(t.type===`input.transcript.delta`&&b(t.payload.text),t.type===`input.transcript.final`){let n=t.payload.text.trim();b(``),S(n),n&&e===`dictation`&&(W.current.set(t.payload.utteranceId,n),[...W.current.values()].join(` `).length>=2e4&&z.current===`recording`&&Pe.current(),S([...W.current.values()].join(` `)))}if(t.type===`input.speech_stopped`&&(Re.current=performance.now()),t.type===`response.created`){if(K.current){K.current!==t.payload.responseId&&H.current?.cancelResponse(t.payload.responseId);return}K.current=t.payload.responseId,Le.current=!1,ze.current=!1,Be.current=0,w(``),E([]),O(null),N(`thinking`)}if(t.type===`task.created`&&K.current===t.payload.responseId&&(Ie.current=t.payload.taskId),t.type===`task.activity`&&Ie.current===t.payload.taskId){let e={toolCallId:t.payload.toolCallId,toolName:t.payload.toolName,status:t.payload.status};E(t=>[...t.filter(t=>t.toolCallId!==e.toolCallId),e].slice(-8))}if(t.type===`task.done`&&Ie.current===t.payload.taskId&&(Ie.current=null,E([])),t.type===`response.clarification`&&K.current===t.payload.responseId&&O(t.payload),t.type===`response.text.delta`&&K.current===t.payload.responseId&&(N(`speaking`),w(e=>e+t.payload.delta)),t.type===`response.audio.started`&&K.current===t.payload.responseId&&N(`speaking`),t.type===`response.done`&&K.current===t.payload.responseId&&(Le.current=!0,U.current?.hasPendingAudio||(K.current=null,N(`idle`))),t.type===`response.cancelled`&&K.current===t.payload.responseId&&(K.current=null,N(`idle`),U.current?.clear()),t.type===`session.error`&&t.payload.recoverable&&t.payload.code===`RESPONSE_FAILED`&&u(`warning`,n.voiceResponseFailed),t.type===`session.error`&&t.payload.recoverable&&t.payload.code===`INPUT_DROPPED`&&u(`warning`,n.voiceInputDropped),t.type===`session.error`&&!t.payload.recoverable){let r=t.payload.code===`PROVIDER_UNAVAILABLE`,i=t.payload.code===`CONTEXT_CHANGED`?n.voiceContextChanged:r?n.voiceSttNotConfigured:t.payload.message;I(i),xe(`session`),Ce(r),e===`dictation`&&u(`error`,i,void 0,r?{href:`/settings/capabilities/models?configure=transcription`}:void 0),H.current?.stop(`surface_closed`),e===`conversation`?Z():(Y(),X(),V.current?.cancel(),V.current=null,H.current=null),J(`error`)}}},onAudio:(e,t)=>{if(!l())return;let n=K.current;if(!n||t!==n)return;let r=!ze.current,i=Re.current;r&&(ze.current=!0,Re.current!==null&&H.current?.reportMetric(n,`speech_end_to_audio_received`,performance.now()-Re.current),Re.current=null);let a=U.current?.enqueue(e,()=>{K.current===n&&(Be.current+=e.byteLength,H.current?.acknowledgeAudio(n,Be.current),Le.current&&!U.current?.hasPendingAudio&&(K.current=null,N(`idle`)))});r&&i!==null&&a!==void 0&&H.current?.reportMetric(n,`speech_end_to_audio_scheduled`,performance.now()-i+a)},onClose:e=>{l()&&Ke(e)}}),2e4,e=>e.stop(`surface_closed`));if(!l()){C.stop(`surface_closed`);return}U.current?.stopRingback(),q.current!==null&&clearTimeout(q.current),q.current=null,H.current=C,Ve.current=C.session.limits.maxSessionMs,g=`recorder`,J(`starting`);let T,D=[],k=await p(ae.start(x,{onSamples:e=>{if(!l()||P.current)return;if(!T){D.push(e);return}let t=(ke.current??T).push(e);t&&C.sendAudio(t)},onAudioLevel:({level:e})=>{l()&&(P.current||v(Math.min(1,e*8)))}}),15e3,e=>e.cancel());if(!l()||!fe(z.current)){k.cancel(),C.stop(`surface_closed`),x.getTracks().forEach(e=>e.stop());return}if(V.current=k,e===`conversation`&&(await p(U.current.start(),1e4),!l()))return;C.outputReady(),T=new re(k.sampleRate,C.session.inputFormat.sampleRate),ke.current=T;for(let e of D)C.sendAudio(T.push(e));Ne.current=performance.now(),ne(0),J(`recording`),_e(null),qe()}catch(t){if(!l())return;let r=he(g,t);console.error(`[chat:voice] realtime capture start failed`,{stage:g,durationMs:Math.round(performance.now()-f),kind:r,errorName:me(t),errorMessage:t instanceof Error?t.message:String(t)}),H.current?.stop(`surface_closed`),Z(),J(r===`session`?`error`:`idle`);let i=r===`session`&&ue(t),a=me(t)===`TimeoutError`?g===`session`?n.voiceConnectionTimeout:n.voiceMicrophoneTimeout:r===`permission`?n.voiceMicDenied:r===`device`?n.voiceMicUnavailable:r===`recorder`?n.voiceRecorderFailed:i?n.voiceSttNotConfigured:t instanceof Error?t.message:n.voiceSttNotConfigured;I(a),xe(r),Ce(i),e===`dictation`&&u(`error`,a,void 0,i?{href:`/settings/capabilities/models?configure=transcription`}:void 0)}},[t,Ke,n,Z,qe,X,Y,J]),Ye=(0,M.useCallback)(()=>{if(L.current)return;if(d.current||f.current){Ge();return}if(z.current===`error`&&W.current.size){$();return}if(z.current!==`recording`)return;J(`transcribing`),Y(),X();let e=V.current,t=B.current;V.current=null,e?.stop().then(()=>{if(t!==B.current)return;let e=ke.current?.flush();e&&H.current?.sendAudio(e),H.current?.commit()}).catch(()=>{t===B.current&&(u(`error`,n.voiceTranscribeFailed),H.current?.stop(`surface_closed`),Z(),J(`error`))})},[$,Ge,n.voiceTranscribeFailed,Z,X,Y,J]);Pe.current=Ye,(0,M.useEffect)(()=>()=>{le(Oe.current),B.current+=1,R.current?.abort(),d.current?.cancel(),f.current=null,V.current?.cancel(),H.current?.stop(`surface_closed`),U.current?.close(),q.current!==null&&clearTimeout(q.current),X(),Y()},[X,Y]);let Xe=(0,M.useCallback)(()=>{if(z.current===`error`){if(f.current){Ge();return}Z(),J(`idle`),Je(Ee,je.current,L.current,!0)}},[Je,Ge,Ee,Z,J]),Ze=(0,M.useCallback)(()=>Je(`dictation`),[Je]),Qe=(0,M.useCallback)((e,t)=>Je(`conversation`,t,e),[Je]),$e=(0,M.useCallback)(()=>{let e=performance.now(),t=K.current;U.current?.clear(),K.current=null,N(`idle`),t&&(H.current?.reportMetric(t,`local_stop`,performance.now()-e),H.current?.cancelResponse(t))},[]),et=(0,M.useCallback)(()=>{let e=!P.current;P.current=e,Me.current?.getAudioTracks().forEach(t=>{t.enabled=!e});let t=V.current,n=H.current;t&&n&&(ke.current=new re(t.sampleRate,n.session.inputFormat.sampleRate)),n?.setInputMuted(e),b(``),v(0),U.current?.duck(!1),ye(e)},[]);return{phase:o,voiceActive:o!==`idle`,recordedDictation:l,elapsedLabel:de(p),audioLevel:_,partialTranscript:y,finalTranscript:x,responseText:C,activities:T,clarification:D,dismissClarification:e=>O(t=>t?.requestId===e?null:t),responsePhase:k,callConnectionStage:ge,muted:ve,error:F,failureKind:be,settingsRequired:Se,endedReason:we,mode:Ee,startVoiceInput:Ze,startVoiceConversation:Qe,interruptResponse:$e,toggleMute:et,cancelVoiceInput:We,confirmVoiceInput:Ye,retryVoiceInput:Xe}}var _e=o(e=>({path:null,line:null,projectId:null,conversationId:null,setPath:(t,n,r,i,a)=>{if(t){let e=v.getState().scope;v.getState().openFile({path:t,line:n,projectId:r||void 0,conversationId:i||(e===`new`?void 0:e),agentId:x.getState().agentId||void 0,resultRevision:a})}e({path:t,resultRevision:t?a:void 0,line:t&&typeof n==`number`&&Number.isFinite(n)&&n>0?Math.floor(n):null,projectId:t&&r?.trim()||null,conversationId:t&&i?.trim()||null})}}));function ve(e){return`${e.name}\0${e.size}`}function ye(e){if(!e)return[];let t=new Set,n=[],r=e=>{if(!e||e.size===0)return;let r=ve(e);t.has(r)||(t.add(r),n.push(e))},{files:i}=e;if(i?.length)for(let e=0;e<i.length;e++)r(i.item(e));for(let t of Array.from(e.items??[]))t.kind===`file`&&r(t.getAsFile());return n}var P=n(),F=r();function I(e){let t=(0,P.c)(10),{disabled:n,chat:r,onStart:i}=e,a=S(be),o=r.voiceInput,s;t[0]===a?s=t[1]:(s=C(a).join(`+`),t[0]=a,t[1]=s);let c=`${o} (${s})`,l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=p(`relative inline-flex size-11 sm:size-8 shrink-0 items-center justify-center rounded-lg border border-transparent text-fg-subtle hover:bg-surface-hover hover:text-fg`,b.transition,b.press,b.focusRingPanel,`disabled:cursor-not-allowed disabled:opacity-50`),t[2]=l):l=t[2];let u;t[3]===i?u=t[4]:(u=()=>void i(),t[3]=i,t[4]=u);let d;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,F.jsx)(ee,{className:`size-4 stroke-[1.75]`}),t[5]=d):d=t[5];let f;return t[6]!==n||t[7]!==u||t[8]!==c?(f=(0,F.jsx)(`button`,{type:`button`,className:l,disabled:n,title:c,"aria-label":c,onClick:u,children:d}),t[6]=n,t[7]=u,t[8]=c,t[9]=f):f=t[9],f}function be(e){return e.shortcut}function xe(e,t){let n=t.trim();if(!n)return e;let r=e.trim();return r?`${r} ${n}`:n}var Se=p(`inline-flex min-h-11 min-w-11 shrink-0 gap-2 px-3 items-center justify-center rounded-lg text-fg-muted`,`hover:bg-surface-hover hover:text-fg`,b.transition,b.press,b.focusRingPanel,`disabled:cursor-not-allowed disabled:opacity-50`),Ce=(0,M.memo)(function(e){let t=(0,P.c)(47),{phase:n,elapsedLabel:r,recordedDictation:i,audioLevel:a,partialTranscript:o,finalTranscript:s,error:u,settingsRequired:ee,disabled:m,chat:h,onCancel:re,onConfirm:ie,onRetry:g}=e,ae=n===`transcribing`,oe=n===`requesting`,se=n===`connecting`,_=n===`starting`,v=n===`error`,y=v?u||h.voiceTranscribeFailed:oe?h.voiceRequestingMicrophone:se?h.voiceConnectingService:_?h.voiceStartingMicrophone:ae?h.voiceTranscribing:i?h.voiceRecordedDictationStatus:h.voiceRecordingStatus,b;t[0]!==s||t[1]!==o?(b=[s,o].filter(Boolean),t[0]=s,t[1]=o,t[2]=b):b=t[2];let x=b.join(` `),S=oe||se||_||ae,C;t[3]!==a||t[4]!==v||t[5]!==n?(C=n===`recording`?(0,F.jsx)(`div`,{className:`flex h-5 shrink-0 items-center gap-0.5`,"aria-hidden":!0,children:Array.from({length:9},(e,t)=>{let n=.35+(t%4+1)*.16;return(0,F.jsx)(`span`,{className:`w-0.5 rounded-full bg-fg-muted motion-safe:transition-[height] motion-safe:duration-75`,style:{height:Math.max(3,Math.round(18*Math.min(1,a*n+.08)))}},t)})}):v?(0,F.jsx)(l,{className:`size-4 shrink-0 text-danger`,"aria-hidden":!0}):(0,F.jsx)(ne,{className:`h-4 w-8`}),t[3]=a,t[4]=v,t[5]=n,t[6]=C):C=t[6];let w=v?`alert`:`status`,T;t[7]!==y||t[8]!==w?(T=(0,F.jsx)(`p`,{className:`min-w-0 flex-1 break-words text-sm text-fg-muted`,role:w,children:y}),t[7]=y,t[8]=w,t[9]=T):T=t[9];let E;t[10]!==r||t[11]!==n?(E=n===`recording`?(0,F.jsx)(`span`,{className:`shrink-0 text-sm tabular-nums text-fg-muted`,children:r}):null,t[10]=r,t[11]=n,t[12]=E):E=t[12];let D;t[13]!==C||t[14]!==T||t[15]!==E?(D=(0,F.jsxs)(`div`,{className:`flex items-center gap-3 px-1`,children:[C,T,E]}),t[13]=C,t[14]=T,t[15]=E,t[16]=D):D=t[16];let O;t[17]===x?O=t[18]:(O=x?(0,F.jsx)(`p`,{className:`max-h-28 overflow-y-auto overscroll-contain whitespace-pre-wrap break-words px-1 text-base text-fg`,children:x}):null,t[17]=x,t[18]=O);let k;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,F.jsx)(te,{className:`size-4`,"aria-hidden":!0}),t[19]=k):k=t[19];let A;t[20]!==h.voiceInputCancel||t[21]!==re?(A=(0,F.jsxs)(`button`,{type:`button`,className:Se,title:h.voiceInputCancel,"aria-label":h.voiceInputCancel,onClick:re,children:[k,h.voiceInputCancel]}),t[20]=h.voiceInputCancel,t[21]=re,t[22]=A):A=t[22];let j;t[23]!==m||t[24]!==v||t[25]!==h.voiceOpenSettings||t[26]!==h.voiceRetry||t[27]!==g||t[28]!==ee?(j=v&&ee?(0,F.jsxs)(`a`,{onClick:we,href:`#/settings/capabilities/models?configure=transcription`,className:p(Se,`text-accent-fg`),children:[(0,F.jsx)(f,{className:`size-4`,"aria-hidden":!0}),h.voiceOpenSettings]}):v?(0,F.jsxs)(`button`,{type:`button`,className:Se,disabled:m,"aria-label":h.voiceRetry,onClick:g,children:[(0,F.jsx)(d,{className:`size-4`,"aria-hidden":!0}),h.voiceRetry]}):null,t[23]=m,t[24]=v,t[25]=h.voiceOpenSettings,t[26]=h.voiceRetry,t[27]=g,t[28]=ee,t[29]=j):j=t[29];let M;t[30]!==m||t[31]!==v||t[32]!==s||t[33]!==h.voiceInputConfirm||t[34]!==ie||t[35]!==n?(M=n===`recording`||v&&s?(0,F.jsxs)(`button`,{type:`button`,className:p(Se,`rounded-full bg-accent text-on-accent hover:bg-accent-hover hover:text-on-accent`),disabled:m,"aria-label":h.voiceInputConfirm,onClick:ie,children:[(0,F.jsx)(c,{className:`size-4`,"aria-hidden":!0}),h.voiceInputConfirm]}):null,t[30]=m,t[31]=v,t[32]=s,t[33]=h.voiceInputConfirm,t[34]=ie,t[35]=n,t[36]=M):M=t[36];let N;t[37]!==A||t[38]!==j||t[39]!==M?(N=(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[A,j,M]}),t[37]=A,t[38]=j,t[39]=M,t[40]=N):N=t[40];let ce;return t[41]!==h.voiceInput||t[42]!==N||t[43]!==S||t[44]!==D||t[45]!==O?(ce=(0,F.jsxs)(`section`,{className:`w-full space-y-3 py-3`,"aria-label":h.voiceInput,"aria-busy":S,children:[D,O,N]}),t[41]=h.voiceInput,t[42]=N,t[43]=S,t[44]=D,t[45]=O,t[46]=ce):ce=t[46],ce});function we(e){!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&e.button===0&&(e.preventDefault(),y(`transcription`))}var Te=120*1e3,L=new Map;function R(){return typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function Ee(e){for(let[t,n]of L)n.expiresAt<=e&&L.delete(t)}function De(e,t=Date.now()){Ee(t);let n=R();return L.set(n,{attachments:e.map(e=>({...e})),expiresAt:t+Te}),n}function Oe(e,t=Date.now()){let n=L.get(e);if(!n)return null;if(n.expiresAt<=t)return L.delete(e),null;if(!n.attachments)return null;let r=n.attachments;return n.attachments=null,r}export{I as a,ge as c,k as d,T as f,E as g,w as h,xe as i,ce as l,O as m,Oe as n,ye as o,D as p,Ce as r,_e as s,De as t,le as u};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{i as a,n as o,o as s}from"./locale-store-fGFrr4_4.js";import{t as c}from"./messages-9OwWjlww.js";import{t as l}from"./check-DUBLcKHA.js";import{t as u}from"./globe-DSSGFWFn.js";import{t as d}from"./monitor-Af5eAvF7.js";import{t as f}from"./mouse-pointer-2-DZ51Onvj.js";import{t as p}from"./plus-Q2yW6OE7.js";import{t as m}from"./shield-check-BU58siTV.js";import{t as h}from"./square-DMK_fB-3.js";import{t as g}from"./skeleton-BI5TyibZ.js";import{i as _}from"./vendor-swr-CdRzEUwF.js";import{r as v}from"./gateway-config-swr-C-fPl1hP.js";import{n as y,t as b}from"./registry-api-Bm7kut54.js";import{t as x}from"./button-Cc4hUNTt.js";import{t as S}from"./electron-env-DHOGevH3.js";import{n as C}from"./model-selector-Bv-anQ6O.js";import{n as w,t as T}from"./global-defaults-api-C9O_X0pj.js";import{n as ee,t as te}from"./settings-page-header-DH1qb4vP.js";import"./settings-page-layout-B2G042F2.js";var E=n(),D=e(t(),1),O=r();function ne({zh:e}){let t=c(e?`zh`:`en`).computerSettings,n=_(`settings-agent-defaults`,T),r=_(b,y),a=n.data?.defaults.models.computerUse?.primary??``,[o,s]=(0,D.useState)(a),[l,u]=(0,D.useState)(!1),[d,f]=(0,D.useState)(``),[p,m]=(0,D.useState)(!1);(0,D.useEffect)(()=>{s(a)},[a]);let h=!o||r.data?.some(e=>e.id===o&&e.computerUse),v=async()=>{u(!0),f(``),m(!1);try{if(!h)throw Error(t.modelUnavailable);let e=await T(),r={...e.defaults.models};o?r.computerUse={primary:o,fallbacks:[]}:delete r.computerUse;let i=await w({...e.defaults,models:r});await n.mutate(i,!1),m(!0)}catch(e){f(e instanceof Error?e.message:String(e))}finally{u(!1)}};return(0,O.jsxs)(`section`,{"aria-label":t.model,className:`space-y-3`,children:[(0,O.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:t.model}),!n.data&&!n.error?(0,O.jsx)(g,{className:`h-52 w-full rounded-xl`}):n.error?(0,O.jsxs)(`div`,{role:`alert`,className:`text-sm text-danger`,children:[String(n.error),(0,O.jsx)(x,{onClick:()=>{n.mutate().catch(()=>{})},children:t.retry})]}):(0,O.jsxs)(`div`,{className:`rounded-2xl border border-edge bg-surface-panel p-4 sm:p-5`,children:[(0,O.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center`,children:[(0,O.jsx)(`div`,{className:`min-w-0 flex-1`,children:r.isLoading?(0,O.jsx)(g,{className:`h-11 w-full rounded-lg`}):(0,O.jsx)(C,{value:o,onChange:e=>{s(e),m(!1)},disabled:l,capabilitiesFilter:`computer-use`,models:r.data??[],modelsError:r.error,placeholder:t.selectModel,searchPlaceholder:t.searchModel,noMatches:t.noModels,registryEmptyHint:t.noModels,allowEmpty:!0,emptyLabel:t.noModel,ariaLabel:t.modelLabel,className:`w-full`,contentAlign:`start`})}),(0,O.jsx)(x,{variant:`primary`,disabled:l||o===a||!h||!!r.error||r.isLoading,onClick:()=>{v()},children:t.saveModel})]}),(0,O.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-fg-muted`,children:[(0,O.jsx)(`span`,{children:t.modelDataUse}),(0,O.jsx)(x,{asChild:!0,variant:`ghost`,className:`h-auto p-0 text-xs`,children:(0,O.jsx)(i,{to:`/settings/capabilities/models?add=1`,children:t.manageModels})}),p&&(0,O.jsx)(`span`,{role:`status`,children:t.modelSaved})]}),!h&&!r.isLoading&&!r.error&&(0,O.jsx)(`p`,{role:`status`,className:`mt-3 text-sm text-warning`,children:t.modelUnavailable}),r.error&&(0,O.jsxs)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:[String(r.error),(0,O.jsx)(x,{onClick:()=>{r.mutate().catch(()=>{})},children:t.retry})]}),d&&(0,O.jsx)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:d})]})]})}function k(e){let t=(0,E.c)(15),{icon:n,title:r,description:i,children:a}=e,o;t[0]===n?o=t[1]:(o=n&&(0,O.jsx)(`div`,{className:`flex size-6 shrink-0 items-center justify-center text-fg-muted`,"aria-hidden":!0,children:n}),t[0]=n,t[1]=o);let s;t[2]===r?s=t[3]:(s=(0,O.jsx)(`h3`,{className:`text-sm font-medium text-fg`,children:r}),t[2]=r,t[3]=s);let c;t[4]===i?c=t[5]:(c=i&&(0,O.jsx)(`div`,{className:`mt-0.5 text-xs text-fg-muted`,children:i}),t[4]=i,t[5]=c);let l;t[6]!==s||t[7]!==c?(l=(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[s,c]}),t[6]=s,t[7]=c,t[8]=l):l=t[8];let u;t[9]===a?u=t[10]:(u=a&&(0,O.jsx)(`div`,{className:`flex shrink-0 items-center gap-3`,children:a}),t[9]=a,t[10]=u);let d;return t[11]!==o||t[12]!==l||t[13]!==u?(d=(0,O.jsxs)(`div`,{className:`flex min-h-16 flex-wrap items-center gap-3 px-4 py-3 sm:flex-nowrap sm:px-5`,children:[o,l,u]}),t[11]=o,t[12]=l,t[13]=u,t[14]=d):d=t[14],d}function A(){let e=(0,E.c)(2),t=o(j)===`zh`,n;return e[0]===t?n=e[1]:(n=(0,O.jsx)(M,{zh:t}),e[0]=t,e[1]=n),n}function j(e){return e.language}function M({zh:e}){let t=c(e?`zh`:`en`).computerSettings,{data:n,mutate:r,error:o}=v(!0),_=n?.payload?.config,[y,b]=(0,D.useState)(!1),[C,w]=(0,D.useState)(``),[T,E]=(0,D.useState)(!1),[A,j]=(0,D.useState)(null),[M,N]=(0,D.useState)(!1),[P,F]=(0,D.useState)(null),[re,I]=(0,D.useState)(!1),[L,R]=(0,D.useState)(``),[z,B]=(0,D.useState)(!1),[ie,V]=(0,D.useState)(!1),H=window.electronAPI?.platform===`win32`,U=S()?window.electronAPI?.computer:void 0,W=window.electronAPI?.platform===`darwin`?window.electronAPI.system:void 0;(0,D.useEffect)(()=>{if(!U)return;let e=!1,t=!1,n=async()=>{if(!t){t=!0;try{let t=await U.status();e||(j(t),N(!1))}catch{e||(j(null),N(!0))}finally{t=!1}}};n();let r=window.setInterval(()=>{n()},2e3);return()=>{e=!0,window.clearInterval(r)}},[U]),(0,D.useEffect)(()=>{if(!U?.access)return;let e=!1;return U.access().then(t=>{e||(F(t),I(!1))}).catch(()=>{e||I(!0)}),()=>{e=!0}},[U]);let G=async e=>{b(!0),w(``);try{await e()}catch(e){w(e instanceof Error?e.message:String(e))}finally{b(!1)}},ae=e=>G(async()=>{S()&&(await s(a(`/api/config`),{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({computer:{enabled:e}})}),await r())}),oe=async()=>{w(``),E(!1);try{await U?.stop(),E(!0),U&&j(await U.status())}catch(e){w(e instanceof Error?e.message:String(e))}},K=A?.session?.status??`idle`,q=t.states[K]??K,J=S()&&_?.computer?.enabled===!0,se=A?.controlPaused?t.pausedNotice:J?A?.connected?`${t.connected} · ${q}`:A?t.disconnected:t.checking:t.disabled,Y=!U||M||A?.reenrollmentRequired===!0||!!(A?.error||A?.session?.errorCode)||A!=null&&!H&&(!A.permissions.accessibility||A.permissions.screenRecording!==`granted`),X=(H?A?.connected===!0:A?.permissions.accessibility===!0&&A.permissions.screenRecording===`granted`)&&!A?.reenrollmentRequired,Z=P?.apps.filter(e=>P.authorizedAppIds.includes(e.appId))??[],Q=P?.apps.filter(e=>!P.authorizedAppIds.includes(e.appId)&&`${e.name} ${e.appId}`.toLocaleLowerCase().includes(L.toLocaleLowerCase()))??[],$=(0,O.jsxs)(`section`,{"aria-labelledby":`computer-permissions-title`,className:`space-y-3`,children:[(0,O.jsx)(`h2`,{id:`computer-permissions-title`,className:`text-sm font-semibold text-fg`,children:t.permissions}),U?M?(0,O.jsx)(`p`,{role:`alert`,className:`rounded-xl bg-danger-soft p-5 text-sm text-danger`,children:t.nativeError}):A?X&&!ie?(0,O.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:(0,O.jsx)(k,{icon:(0,O.jsx)(m,{className:`size-5`}),title:H?t.windowsAccess:t.systemPermissions,description:H?t.windowsAccessDescription:t.granted,children:(0,O.jsx)(x,{onClick:()=>V(!0),children:t.viewDetails})})}):(0,O.jsxs)(`div`,{className:`divide-y divide-edge-subtle overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:[(0,O.jsx)(k,{icon:(0,O.jsx)(d,{className:`size-5`}),title:t.device,description:(0,O.jsxs)(`span`,{"aria-live":`polite`,children:[A.connected?t.connected:t.disconnected,` · `,q]}),children:A.reenrollmentRequired&&(0,O.jsx)(x,{disabled:y,onClick:()=>{G(async()=>{j(await U.reenroll())})},children:t.reenroll})}),H&&(0,O.jsx)(k,{icon:(0,O.jsx)(m,{className:`size-5`}),title:t.windowsAccess,description:t.windowsAccessDescription}),W&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(k,{icon:(0,O.jsx)(m,{className:`size-5`}),title:t.accessibility,children:[(0,O.jsx)(`span`,{className:`text-xs text-fg-muted`,children:A.permissions.accessibility?t.granted:t.notGranted}),!A.permissions.accessibility&&(0,O.jsx)(x,{disabled:y,"aria-label":`${t.openSettings}: ${t.accessibility}`,onClick:()=>{G(()=>W.requestAccessibility())},children:t.openSettings})]}),(0,O.jsxs)(k,{icon:(0,O.jsx)(d,{className:`size-5`}),title:t.screen,children:[(0,O.jsx)(`span`,{className:`text-xs text-fg-muted`,children:A.permissions.screenRecording===`granted`?t.granted:t.notGranted}),A.permissions.screenRecording!==`granted`&&(0,O.jsx)(x,{disabled:y,"aria-label":`${t.openSettings}: ${t.screen}`,onClick:()=>{G(()=>W.requestScreen())},children:t.openSettings})]})]}),X&&(0,O.jsx)(`div`,{className:`flex justify-end px-4 py-2 sm:px-5`,children:(0,O.jsx)(x,{variant:`ghost`,onClick:()=>V(!1),children:t.hideDetails})})]}):(0,O.jsx)(`div`,{"aria-label":t.checking,children:(0,O.jsx)(g,{className:`h-20 w-full rounded-xl`})}):(0,O.jsx)(`p`,{className:`rounded-xl bg-surface-hover/20 p-5 text-sm leading-relaxed text-fg-muted`,children:window.electronAPI?t.unsupportedPlatform:t.desktopRequired}),(A?.error||A?.session?.errorCode)&&(0,O.jsx)(`p`,{role:`alert`,className:`break-words text-sm text-red-600`,children:A.error||A.session?.errorCode})]});return(0,O.jsxs)(ee,{gap:`gap-7`,children:[(0,O.jsx)(te,{title:t.title,subtitle:t.subtitle,meta:(0,O.jsx)(`span`,{className:`mt-3 inline-flex rounded-md border border-edge px-2 py-1 text-xs text-fg-muted`,children:t.preview}),actions:U&&(0,O.jsxs)(x,{onClick:()=>{oe()},children:[(0,O.jsx)(h,{className:`size-3.5`}),t.stop]})}),H&&(0,O.jsx)(`p`,{className:`text-sm leading-relaxed text-fg-muted`,children:t.windowsAccessDescription}),C&&(0,O.jsx)(`p`,{role:`alert`,className:`text-sm text-red-600`,children:C}),T&&(0,O.jsx)(`p`,{role:`status`,className:`text-sm text-fg-muted`,children:t.stoppedNotice}),(0,O.jsxs)(`section`,{"aria-labelledby":`computer-control-title`,className:`space-y-3`,children:[(0,O.jsx)(`h2`,{id:`computer-control-title`,className:`text-sm font-semibold text-fg`,children:t.control}),!_&&!o?(0,O.jsx)(g,{className:`h-32 w-full rounded-xl`}):o?(0,O.jsxs)(`div`,{role:`alert`,className:`text-sm text-fg-muted`,children:[String(o),` `,(0,O.jsx)(x,{onClick:()=>{G(()=>r())},children:t.retry})]}):(0,O.jsxs)(`div`,{className:`divide-y divide-edge-subtle overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:[(0,O.jsx)(k,{icon:(0,O.jsx)(f,{className:`size-5`}),title:t.desktop,description:(0,O.jsx)(`span`,{"aria-live":`polite`,children:se}),children:(0,O.jsx)(`button`,{type:`button`,role:`switch`,"aria-label":t.desktop,"aria-checked":J,disabled:y||!S()||A?.capabilities?.supported===!1,onClick:()=>{ae(_?.computer?.enabled!==!0)},className:`touch-target flex items-center rounded-lg px-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:opacity-50`,children:(0,O.jsx)(`span`,{className:`flex h-6 w-11 items-center rounded-full p-0.5 transition-colors ${J?`bg-accent`:`bg-fg-muted/30`}`,children:(0,O.jsx)(`span`,{className:`size-5 rounded-full bg-white transition-transform ${J?`translate-x-5`:`translate-x-0`}`})})})}),A?.controlPaused&&(0,O.jsx)(`div`,{className:`flex justify-end border-t border-edge-subtle px-4 py-3 sm:px-5`,children:(0,O.jsx)(x,{disabled:y,onClick:()=>{G(async()=>{U&&j(await U.resume()),E(!1)})},children:t.resume})})]})]}),Y&&$,U?.access&&(0,O.jsxs)(`section`,{"aria-labelledby":`computer-app-access-title`,className:`space-y-3`,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,O.jsx)(`h2`,{id:`computer-app-access-title`,className:`text-sm font-semibold text-fg`,children:t.appAccess}),!P?.allowAllApps&&(0,O.jsxs)(x,{disabled:y,"aria-expanded":z,"aria-controls":z?`computer-app-picker`:void 0,onClick:()=>{B(e=>!e),R(``)},children:[z?(0,O.jsx)(l,{className:`size-4`,"aria-hidden":!0}):(0,O.jsx)(p,{className:`size-4`,"aria-hidden":!0}),z?t.doneAdding:t.addApp]})]}),P?(0,O.jsxs)(`div`,{className:`overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:[(0,O.jsx)(k,{icon:(0,O.jsx)(f,{className:`size-5`}),title:t.anyApp,description:t.anyAppDescription,children:(0,O.jsx)(`button`,{type:`button`,role:`switch`,"aria-label":t.anyApp,"aria-checked":P.allowAllApps===!0,disabled:y,onClick:()=>{G(async()=>{F(await U.setAllAppAccess(!P.allowAllApps)),B(!1)})},className:`touch-target flex items-center rounded-lg px-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:opacity-50`,children:(0,O.jsx)(`span`,{className:`flex h-6 w-11 items-center rounded-full p-0.5 transition-colors ${P.allowAllApps?`bg-accent`:`bg-fg-muted/30`}`,children:(0,O.jsx)(`span`,{className:`size-5 rounded-full bg-white transition-transform ${P.allowAllApps?`translate-x-5`:`translate-x-0`}`})})})}),!P.allowAllApps&&(0,O.jsx)(`div`,{className:`border-t border-edge-subtle`,children:Z.length?Z.map(e=>(0,O.jsxs)(`div`,{className:`flex min-h-16 items-center justify-between gap-3 border-b border-edge-subtle px-4 py-3 last:border-b-0 sm:px-5`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsx)(`p`,{className:`truncate text-sm font-medium text-fg`,children:e.name}),(0,O.jsx)(`p`,{className:`truncate text-xs text-fg-muted`,children:e.appId})]}),(0,O.jsx)(x,{disabled:y,variant:`ghost`,onClick:()=>{G(async()=>{let t=await U.setAppAccess(e.appId,!1);F(e=>e&&{...e,authorizedAppIds:t.authorizedAppIds})})},children:t.revokeApp})]},e.appId)):(0,O.jsx)(`p`,{className:`px-5 py-6 text-center text-sm text-fg-muted`,children:t.noAuthorizedApps})})]}):re?(0,O.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:t.appListError}):(0,O.jsx)(g,{className:`h-20 w-full rounded-xl`}),z&&!P?.allowAllApps&&(0,O.jsxs)(`div`,{id:`computer-app-picker`,className:`space-y-3 rounded-2xl border border-edge bg-surface-panel p-4`,children:[(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[(0,O.jsx)(`input`,{"aria-label":t.searchApps,value:L,onChange:e=>R(e.target.value),placeholder:t.searchApps,className:`min-w-0 flex-1 rounded-lg border border-edge bg-surface-base px-3 py-2 text-sm text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`}),(0,O.jsx)(x,{disabled:y,onClick:()=>{G(async()=>{F(await U.access()),I(!1)})},children:t.refreshApps})]}),P&&(0,O.jsx)(`div`,{className:`max-h-64 overflow-y-auto rounded-xl border border-edge`,children:Q.length?Q.map(e=>(0,O.jsxs)(`div`,{className:`flex min-h-14 items-center justify-between gap-3 border-b border-edge-subtle px-3 py-2 last:border-b-0`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsx)(`p`,{className:`truncate text-sm font-medium text-fg`,children:e.name}),(0,O.jsx)(`p`,{className:`truncate text-xs text-fg-muted`,children:e.appId})]}),(0,O.jsx)(x,{disabled:y,variant:`secondary`,onClick:()=>{G(async()=>{let t=await U.setAppAccess(e.appId,!0);F(e=>e&&{...e,authorizedAppIds:t.authorizedAppIds})})},children:t.authorizeApp})]},e.appId)):(0,O.jsx)(`p`,{className:`px-3 py-5 text-center text-sm text-fg-muted`,children:P.appsBusy?t.appsBusy:P.appsUnavailable?t.appListError:t.noMatchingApps})})]})]}),(0,O.jsx)(ne,{zh:e}),!Y&&$,(0,O.jsxs)(`section`,{"aria-labelledby":`computer-browser-title`,className:`space-y-3`,children:[(0,O.jsx)(`h2`,{id:`computer-browser-title`,className:`text-sm font-semibold text-fg`,children:t.otherControl}),(0,O.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:(0,O.jsx)(k,{icon:(0,O.jsx)(u,{className:`size-5`}),title:t.browser,description:_?_.browser?.enabled?t.browserEnabled:t.browserDisabled:t.checking,children:(0,O.jsx)(x,{asChild:!0,children:(0,O.jsx)(i,{to:`/settings/agent-browser`,children:t.manage})})})})]}),(0,O.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.previewFootnote})]})}export{A as ComputerSettingsPage,M as ComputerSettingsPanel};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{i as a,n as o,o as s}from"./locale-store-B6OrWgY1.js";import{t as c}from"./messages-jwdBhfL9.js";import{t as l}from"./check-DUBLcKHA.js";import{t as u}from"./globe-DSSGFWFn.js";import{t as d}from"./monitor-Af5eAvF7.js";import{t as f}from"./mouse-pointer-2-DZ51Onvj.js";import{t as p}from"./plus-Q2yW6OE7.js";import{t as m}from"./shield-check-BU58siTV.js";import{t as h}from"./square-DMK_fB-3.js";import{t as g}from"./skeleton-BI5TyibZ.js";import{i as _}from"./vendor-swr-CdRzEUwF.js";import{r as v}from"./gateway-config-swr-D6cc6W6E.js";import{n as y,t as b}from"./registry-api-Bl2guMRg.js";import{t as x}from"./button-Cc4hUNTt.js";import{t as S}from"./electron-env-DHOGevH3.js";import{n as C}from"./model-selector-DXm4NS1_.js";import{n as w,t as T}from"./global-defaults-api-BObi-1ww.js";import{n as ee,t as te}from"./settings-page-header-BAN34UQi.js";import"./settings-page-layout-B5TVFBV2.js";var E=n(),D=e(t(),1),O=r();function ne({zh:e}){let t=c(e?`zh`:`en`).computerSettings,n=_(`settings-agent-defaults`,T),r=_(b,y),a=n.data?.defaults.models.computerUse?.primary??``,[o,s]=(0,D.useState)(a),[l,u]=(0,D.useState)(!1),[d,f]=(0,D.useState)(``),[p,m]=(0,D.useState)(!1);(0,D.useEffect)(()=>{s(a)},[a]);let h=!o||r.data?.some(e=>e.id===o&&e.computerUse),v=async()=>{u(!0),f(``),m(!1);try{if(!h)throw Error(t.modelUnavailable);let e=await T(),r={...e.defaults.models};o?r.computerUse={primary:o,fallbacks:[]}:delete r.computerUse;let i=await w({...e.defaults,models:r});await n.mutate(i,!1),m(!0)}catch(e){f(e instanceof Error?e.message:String(e))}finally{u(!1)}};return(0,O.jsxs)(`section`,{"aria-label":t.model,className:`space-y-3`,children:[(0,O.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:t.model}),!n.data&&!n.error?(0,O.jsx)(g,{className:`h-52 w-full rounded-xl`}):n.error?(0,O.jsxs)(`div`,{role:`alert`,className:`text-sm text-danger`,children:[String(n.error),(0,O.jsx)(x,{onClick:()=>{n.mutate().catch(()=>{})},children:t.retry})]}):(0,O.jsxs)(`div`,{className:`rounded-2xl border border-edge bg-surface-panel p-4 sm:p-5`,children:[(0,O.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center`,children:[(0,O.jsx)(`div`,{className:`min-w-0 flex-1`,children:r.isLoading?(0,O.jsx)(g,{className:`h-11 w-full rounded-lg`}):(0,O.jsx)(C,{value:o,onChange:e=>{s(e),m(!1)},disabled:l,capabilitiesFilter:`computer-use`,models:r.data??[],modelsError:r.error,placeholder:t.selectModel,searchPlaceholder:t.searchModel,noMatches:t.noModels,registryEmptyHint:t.noModels,allowEmpty:!0,emptyLabel:t.noModel,ariaLabel:t.modelLabel,className:`w-full`,contentAlign:`start`})}),(0,O.jsx)(x,{variant:`primary`,disabled:l||o===a||!h||!!r.error||r.isLoading,onClick:()=>{v()},children:t.saveModel})]}),(0,O.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-fg-muted`,children:[(0,O.jsx)(`span`,{children:t.modelDataUse}),(0,O.jsx)(x,{asChild:!0,variant:`ghost`,className:`h-auto p-0 text-xs`,children:(0,O.jsx)(i,{to:`/settings/capabilities/models?add=1`,children:t.manageModels})}),p&&(0,O.jsx)(`span`,{role:`status`,children:t.modelSaved})]}),!h&&!r.isLoading&&!r.error&&(0,O.jsx)(`p`,{role:`status`,className:`mt-3 text-sm text-warning`,children:t.modelUnavailable}),r.error&&(0,O.jsxs)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:[String(r.error),(0,O.jsx)(x,{onClick:()=>{r.mutate().catch(()=>{})},children:t.retry})]}),d&&(0,O.jsx)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:d})]})]})}function k(e){let t=(0,E.c)(15),{icon:n,title:r,description:i,children:a}=e,o;t[0]===n?o=t[1]:(o=n&&(0,O.jsx)(`div`,{className:`flex size-6 shrink-0 items-center justify-center text-fg-muted`,"aria-hidden":!0,children:n}),t[0]=n,t[1]=o);let s;t[2]===r?s=t[3]:(s=(0,O.jsx)(`h3`,{className:`text-sm font-medium text-fg`,children:r}),t[2]=r,t[3]=s);let c;t[4]===i?c=t[5]:(c=i&&(0,O.jsx)(`div`,{className:`mt-0.5 text-xs text-fg-muted`,children:i}),t[4]=i,t[5]=c);let l;t[6]!==s||t[7]!==c?(l=(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[s,c]}),t[6]=s,t[7]=c,t[8]=l):l=t[8];let u;t[9]===a?u=t[10]:(u=a&&(0,O.jsx)(`div`,{className:`flex shrink-0 items-center gap-3`,children:a}),t[9]=a,t[10]=u);let d;return t[11]!==o||t[12]!==l||t[13]!==u?(d=(0,O.jsxs)(`div`,{className:`flex min-h-16 flex-wrap items-center gap-3 px-4 py-3 sm:flex-nowrap sm:px-5`,children:[o,l,u]}),t[11]=o,t[12]=l,t[13]=u,t[14]=d):d=t[14],d}function A(){let e=(0,E.c)(2),t=o(j)===`zh`,n;return e[0]===t?n=e[1]:(n=(0,O.jsx)(M,{zh:t}),e[0]=t,e[1]=n),n}function j(e){return e.language}function M({zh:e}){let t=c(e?`zh`:`en`).computerSettings,{data:n,mutate:r,error:o}=v(!0),_=n?.payload?.config,[y,b]=(0,D.useState)(!1),[C,w]=(0,D.useState)(``),[T,E]=(0,D.useState)(!1),[A,j]=(0,D.useState)(null),[M,N]=(0,D.useState)(!1),[P,F]=(0,D.useState)(null),[re,I]=(0,D.useState)(!1),[L,R]=(0,D.useState)(``),[z,B]=(0,D.useState)(!1),[ie,V]=(0,D.useState)(!1),H=window.electronAPI?.platform===`win32`,U=S()?window.electronAPI?.computer:void 0,W=window.electronAPI?.platform===`darwin`?window.electronAPI.system:void 0;(0,D.useEffect)(()=>{if(!U)return;let e=!1,t=!1,n=async()=>{if(!t){t=!0;try{let t=await U.status();e||(j(t),N(!1))}catch{e||(j(null),N(!0))}finally{t=!1}}};n();let r=window.setInterval(()=>{n()},2e3);return()=>{e=!0,window.clearInterval(r)}},[U]),(0,D.useEffect)(()=>{if(!U?.access)return;let e=!1;return U.access().then(t=>{e||(F(t),I(!1))}).catch(()=>{e||I(!0)}),()=>{e=!0}},[U]);let G=async e=>{b(!0),w(``);try{await e()}catch(e){w(e instanceof Error?e.message:String(e))}finally{b(!1)}},ae=e=>G(async()=>{S()&&(await s(a(`/api/config`),{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({computer:{enabled:e}})}),await r())}),oe=async()=>{w(``),E(!1);try{await U?.stop(),E(!0),U&&j(await U.status())}catch(e){w(e instanceof Error?e.message:String(e))}},K=A?.session?.status??`idle`,q=t.states[K]??K,J=S()&&_?.computer?.enabled===!0,se=A?.controlPaused?t.pausedNotice:J?A?.connected?`${t.connected} · ${q}`:A?t.disconnected:t.checking:t.disabled,Y=!U||M||A?.reenrollmentRequired===!0||!!(A?.error||A?.session?.errorCode)||A!=null&&!H&&(!A.permissions.accessibility||A.permissions.screenRecording!==`granted`),X=(H?A?.connected===!0:A?.permissions.accessibility===!0&&A.permissions.screenRecording===`granted`)&&!A?.reenrollmentRequired,Z=P?.apps.filter(e=>P.authorizedAppIds.includes(e.appId))??[],Q=P?.apps.filter(e=>!P.authorizedAppIds.includes(e.appId)&&`${e.name} ${e.appId}`.toLocaleLowerCase().includes(L.toLocaleLowerCase()))??[],$=(0,O.jsxs)(`section`,{"aria-labelledby":`computer-permissions-title`,className:`space-y-3`,children:[(0,O.jsx)(`h2`,{id:`computer-permissions-title`,className:`text-sm font-semibold text-fg`,children:t.permissions}),U?M?(0,O.jsx)(`p`,{role:`alert`,className:`rounded-xl bg-danger-soft p-5 text-sm text-danger`,children:t.nativeError}):A?X&&!ie?(0,O.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:(0,O.jsx)(k,{icon:(0,O.jsx)(m,{className:`size-5`}),title:H?t.windowsAccess:t.systemPermissions,description:H?t.windowsAccessDescription:t.granted,children:(0,O.jsx)(x,{onClick:()=>V(!0),children:t.viewDetails})})}):(0,O.jsxs)(`div`,{className:`divide-y divide-edge-subtle overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:[(0,O.jsx)(k,{icon:(0,O.jsx)(d,{className:`size-5`}),title:t.device,description:(0,O.jsxs)(`span`,{"aria-live":`polite`,children:[A.connected?t.connected:t.disconnected,` · `,q]}),children:A.reenrollmentRequired&&(0,O.jsx)(x,{disabled:y,onClick:()=>{G(async()=>{j(await U.reenroll())})},children:t.reenroll})}),H&&(0,O.jsx)(k,{icon:(0,O.jsx)(m,{className:`size-5`}),title:t.windowsAccess,description:t.windowsAccessDescription}),W&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(k,{icon:(0,O.jsx)(m,{className:`size-5`}),title:t.accessibility,children:[(0,O.jsx)(`span`,{className:`text-xs text-fg-muted`,children:A.permissions.accessibility?t.granted:t.notGranted}),!A.permissions.accessibility&&(0,O.jsx)(x,{disabled:y,"aria-label":`${t.openSettings}: ${t.accessibility}`,onClick:()=>{G(()=>W.requestAccessibility())},children:t.openSettings})]}),(0,O.jsxs)(k,{icon:(0,O.jsx)(d,{className:`size-5`}),title:t.screen,children:[(0,O.jsx)(`span`,{className:`text-xs text-fg-muted`,children:A.permissions.screenRecording===`granted`?t.granted:t.notGranted}),A.permissions.screenRecording!==`granted`&&(0,O.jsx)(x,{disabled:y,"aria-label":`${t.openSettings}: ${t.screen}`,onClick:()=>{G(()=>W.requestScreen())},children:t.openSettings})]})]}),X&&(0,O.jsx)(`div`,{className:`flex justify-end px-4 py-2 sm:px-5`,children:(0,O.jsx)(x,{variant:`ghost`,onClick:()=>V(!1),children:t.hideDetails})})]}):(0,O.jsx)(`div`,{"aria-label":t.checking,children:(0,O.jsx)(g,{className:`h-20 w-full rounded-xl`})}):(0,O.jsx)(`p`,{className:`rounded-xl bg-surface-hover/20 p-5 text-sm leading-relaxed text-fg-muted`,children:window.electronAPI?t.unsupportedPlatform:t.desktopRequired}),(A?.error||A?.session?.errorCode)&&(0,O.jsx)(`p`,{role:`alert`,className:`break-words text-sm text-red-600`,children:A.error||A.session?.errorCode})]});return(0,O.jsxs)(ee,{gap:`gap-7`,children:[(0,O.jsx)(te,{title:t.title,subtitle:t.subtitle,meta:(0,O.jsx)(`span`,{className:`mt-3 inline-flex rounded-md border border-edge px-2 py-1 text-xs text-fg-muted`,children:t.preview}),actions:U&&(0,O.jsxs)(x,{onClick:()=>{oe()},children:[(0,O.jsx)(h,{className:`size-3.5`}),t.stop]})}),H&&(0,O.jsx)(`p`,{className:`text-sm leading-relaxed text-fg-muted`,children:t.windowsAccessDescription}),C&&(0,O.jsx)(`p`,{role:`alert`,className:`text-sm text-red-600`,children:C}),T&&(0,O.jsx)(`p`,{role:`status`,className:`text-sm text-fg-muted`,children:t.stoppedNotice}),(0,O.jsxs)(`section`,{"aria-labelledby":`computer-control-title`,className:`space-y-3`,children:[(0,O.jsx)(`h2`,{id:`computer-control-title`,className:`text-sm font-semibold text-fg`,children:t.control}),!_&&!o?(0,O.jsx)(g,{className:`h-32 w-full rounded-xl`}):o?(0,O.jsxs)(`div`,{role:`alert`,className:`text-sm text-fg-muted`,children:[String(o),` `,(0,O.jsx)(x,{onClick:()=>{G(()=>r())},children:t.retry})]}):(0,O.jsxs)(`div`,{className:`divide-y divide-edge-subtle overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:[(0,O.jsx)(k,{icon:(0,O.jsx)(f,{className:`size-5`}),title:t.desktop,description:(0,O.jsx)(`span`,{"aria-live":`polite`,children:se}),children:(0,O.jsx)(`button`,{type:`button`,role:`switch`,"aria-label":t.desktop,"aria-checked":J,disabled:y||!S()||A?.capabilities?.supported===!1,onClick:()=>{ae(_?.computer?.enabled!==!0)},className:`touch-target flex items-center rounded-lg px-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:opacity-50`,children:(0,O.jsx)(`span`,{className:`flex h-6 w-11 items-center rounded-full p-0.5 transition-colors ${J?`bg-accent`:`bg-fg-muted/30`}`,children:(0,O.jsx)(`span`,{className:`size-5 rounded-full bg-white transition-transform ${J?`translate-x-5`:`translate-x-0`}`})})})}),A?.controlPaused&&(0,O.jsx)(`div`,{className:`flex justify-end border-t border-edge-subtle px-4 py-3 sm:px-5`,children:(0,O.jsx)(x,{disabled:y,onClick:()=>{G(async()=>{U&&j(await U.resume()),E(!1)})},children:t.resume})})]})]}),Y&&$,U?.access&&(0,O.jsxs)(`section`,{"aria-labelledby":`computer-app-access-title`,className:`space-y-3`,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,O.jsx)(`h2`,{id:`computer-app-access-title`,className:`text-sm font-semibold text-fg`,children:t.appAccess}),!P?.allowAllApps&&(0,O.jsxs)(x,{disabled:y,"aria-expanded":z,"aria-controls":z?`computer-app-picker`:void 0,onClick:()=>{B(e=>!e),R(``)},children:[z?(0,O.jsx)(l,{className:`size-4`,"aria-hidden":!0}):(0,O.jsx)(p,{className:`size-4`,"aria-hidden":!0}),z?t.doneAdding:t.addApp]})]}),P?(0,O.jsxs)(`div`,{className:`overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:[(0,O.jsx)(k,{icon:(0,O.jsx)(f,{className:`size-5`}),title:t.anyApp,description:t.anyAppDescription,children:(0,O.jsx)(`button`,{type:`button`,role:`switch`,"aria-label":t.anyApp,"aria-checked":P.allowAllApps===!0,disabled:y,onClick:()=>{G(async()=>{F(await U.setAllAppAccess(!P.allowAllApps)),B(!1)})},className:`touch-target flex items-center rounded-lg px-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:opacity-50`,children:(0,O.jsx)(`span`,{className:`flex h-6 w-11 items-center rounded-full p-0.5 transition-colors ${P.allowAllApps?`bg-accent`:`bg-fg-muted/30`}`,children:(0,O.jsx)(`span`,{className:`size-5 rounded-full bg-white transition-transform ${P.allowAllApps?`translate-x-5`:`translate-x-0`}`})})})}),!P.allowAllApps&&(0,O.jsx)(`div`,{className:`border-t border-edge-subtle`,children:Z.length?Z.map(e=>(0,O.jsxs)(`div`,{className:`flex min-h-16 items-center justify-between gap-3 border-b border-edge-subtle px-4 py-3 last:border-b-0 sm:px-5`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsx)(`p`,{className:`truncate text-sm font-medium text-fg`,children:e.name}),(0,O.jsx)(`p`,{className:`truncate text-xs text-fg-muted`,children:e.appId})]}),(0,O.jsx)(x,{disabled:y,variant:`ghost`,onClick:()=>{G(async()=>{let t=await U.setAppAccess(e.appId,!1);F(e=>e&&{...e,authorizedAppIds:t.authorizedAppIds})})},children:t.revokeApp})]},e.appId)):(0,O.jsx)(`p`,{className:`px-5 py-6 text-center text-sm text-fg-muted`,children:t.noAuthorizedApps})})]}):re?(0,O.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:t.appListError}):(0,O.jsx)(g,{className:`h-20 w-full rounded-xl`}),z&&!P?.allowAllApps&&(0,O.jsxs)(`div`,{id:`computer-app-picker`,className:`space-y-3 rounded-2xl border border-edge bg-surface-panel p-4`,children:[(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[(0,O.jsx)(`input`,{"aria-label":t.searchApps,value:L,onChange:e=>R(e.target.value),placeholder:t.searchApps,className:`min-w-0 flex-1 rounded-lg border border-edge bg-surface-base px-3 py-2 text-sm text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`}),(0,O.jsx)(x,{disabled:y,onClick:()=>{G(async()=>{F(await U.access()),I(!1)})},children:t.refreshApps})]}),P&&(0,O.jsx)(`div`,{className:`max-h-64 overflow-y-auto rounded-xl border border-edge`,children:Q.length?Q.map(e=>(0,O.jsxs)(`div`,{className:`flex min-h-14 items-center justify-between gap-3 border-b border-edge-subtle px-3 py-2 last:border-b-0`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsx)(`p`,{className:`truncate text-sm font-medium text-fg`,children:e.name}),(0,O.jsx)(`p`,{className:`truncate text-xs text-fg-muted`,children:e.appId})]}),(0,O.jsx)(x,{disabled:y,variant:`secondary`,onClick:()=>{G(async()=>{let t=await U.setAppAccess(e.appId,!0);F(e=>e&&{...e,authorizedAppIds:t.authorizedAppIds})})},children:t.authorizeApp})]},e.appId)):(0,O.jsx)(`p`,{className:`px-3 py-5 text-center text-sm text-fg-muted`,children:P.appsBusy?t.appsBusy:P.appsUnavailable?t.appListError:t.noMatchingApps})})]})]}),(0,O.jsx)(ne,{zh:e}),!Y&&$,(0,O.jsxs)(`section`,{"aria-labelledby":`computer-browser-title`,className:`space-y-3`,children:[(0,O.jsx)(`h2`,{id:`computer-browser-title`,className:`text-sm font-semibold text-fg`,children:t.otherControl}),(0,O.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge bg-surface-panel`,children:(0,O.jsx)(k,{icon:(0,O.jsx)(u,{className:`size-5`}),title:t.browser,description:_?_.browser?.enabled?t.browserEnabled:t.browserDisabled:t.checking,children:(0,O.jsx)(x,{asChild:!0,children:(0,O.jsx)(i,{to:`/settings/agent-browser`,children:t.manage})})})})]}),(0,O.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.previewFootnote})]})}export{A as ComputerSettingsPage,M as ComputerSettingsPanel};