@xopcai/xopc 0.0.368 → 0.0.370

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 (516) hide show
  1. package/README.md +59 -174
  2. package/README.zh-CN.md +59 -174
  3. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/_md.js +131 -0
  4. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/_u64.js +30 -0
  5. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/sha2.js +252 -0
  6. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/sha256.js +16 -0
  7. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/utils.js +66 -0
  8. package/dist/browser-ext/_locales/en/messages.json +30 -1
  9. package/dist/browser-ext/_locales/zh_CN/messages.json +30 -1
  10. package/dist/browser-ext/dist/assets/{auth-beGtbLPS.js → page-context-BeworyNB.js} +1331 -1355
  11. package/dist/browser-ext/dist/assets/{sidepanel-BT0ojEzG.css → sidepanel-Ccl0eSa1.css} +43 -0
  12. package/dist/browser-ext/dist/background.js +680 -182
  13. package/dist/browser-ext/dist/sidepanel.html +2 -2
  14. package/dist/browser-ext/dist/sidepanel.js +393 -194
  15. package/dist/browser-ext/manifest.json +2 -8
  16. package/dist/extensions/telegram/xopc.extension.json +1 -1
  17. package/dist/gateway/static/root/assets/{activity-store-D9ZMh5ZR.js → activity-store-BQ3PMp2q.js} +1 -1
  18. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Bj3rvcTm.js → agent-avatar-dicebear-C61i1QbX.js} +1 -1
  19. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-0fCR1DHx.js +1 -0
  20. package/dist/gateway/static/root/assets/agent-plugin-dialog-Di99mUTT.js +1 -0
  21. package/dist/gateway/static/root/assets/agents-BRZZmYH_.js +66 -0
  22. package/dist/gateway/static/root/assets/{agents-admin-api-B5QDepbW.js → agents-admin-api-HBZvVyzF.js} +1 -1
  23. package/dist/gateway/static/root/assets/{app-management-settings-panel-2rTEtB_X.js → app-management-settings-panel-noqqxkds.js} +1 -1
  24. package/dist/gateway/static/root/assets/{appearance-settings-BPVBS80k.js → appearance-settings-DG8QN0gR.js} +1 -1
  25. package/dist/gateway/static/root/assets/{apps-page-1FuKlZYP.js → apps-page-CgiyzFYo.js} +1 -1
  26. package/dist/gateway/static/root/assets/{archive-plugin-BbT1O7oK.js → archive-plugin-BO3I9zRP.js} +1 -1
  27. package/dist/gateway/static/root/assets/{automations-page-DjwP_h8h.js → automations-page-CgAcRFDS.js} +1 -1
  28. package/dist/gateway/static/root/assets/automations-workspace-BIkxIpab.js +6 -0
  29. package/dist/gateway/static/root/assets/{binary-plugins-gS7Wg68v.js → binary-plugins-gFD7vH9R.js} +1 -1
  30. package/dist/gateway/static/root/assets/{block-editor-DbwMaivP.js → block-editor-B1VE-jAe.js} +2 -2
  31. package/dist/gateway/static/root/assets/browser-automation-inputs-DxRoKFun.js +1 -0
  32. package/dist/gateway/static/root/assets/browser-automations-page-CIjyMS6f.js +3 -0
  33. package/dist/gateway/static/root/assets/browser-settings-page-BMAivBfp.js +3 -0
  34. package/dist/gateway/static/root/assets/{capabilities-Lswa0hv8.js → capabilities-CY4SiHcP.js} +1 -1
  35. package/dist/gateway/static/root/assets/{capabilities-Dd1PZRQw.js → capabilities-gjQtMhKu.js} +1 -1
  36. package/dist/gateway/static/root/assets/capabilities-page-DRdcfo68.js +2 -0
  37. package/dist/gateway/static/root/assets/{capabilities-settings-panel-DTHR1DrJ.js → capabilities-settings-panel-ZuL6pWjM.js} +4 -4
  38. package/dist/gateway/static/root/assets/{capability-header-actions-494dnJsj.js → capability-header-actions-D0GC1FEv.js} +1 -1
  39. package/dist/gateway/static/root/assets/channels-CgE22Pzd.js +1 -0
  40. package/dist/gateway/static/root/assets/{chat-terminal-dock-Bl7-Zk-x.js → chat-terminal-dock-CEjh1utz.js} +2 -2
  41. package/dist/gateway/static/root/assets/{computer-settings-page-ByExKr_6.js → computer-settings-page-vFHJAmQr.js} +1 -1
  42. package/dist/gateway/static/root/assets/{connector-service-page-BK_5aFxO.js → connector-service-page-DTrwZ4kV.js} +1 -1
  43. package/dist/gateway/static/root/assets/connectors-page-DRcMiTWu.js +1 -0
  44. package/dist/gateway/static/root/assets/copy-text-row-C1gaJwlZ.js +1 -0
  45. package/dist/gateway/static/root/assets/{date-picker-BXJv6472.js → date-picker-NfGIPSYY.js} +1 -1
  46. package/dist/gateway/static/root/assets/dependency-picker-CqguveUi.js +1 -0
  47. package/dist/gateway/static/root/assets/{desktop-pet-DWNEC3mk.js → desktop-pet-CTx1zkJm.js} +1 -1
  48. package/dist/gateway/static/root/assets/{desktop-pet-settings-BYwlxGiN.js → desktop-pet-settings-BRDS3EGc.js} +1 -1
  49. package/dist/gateway/static/root/assets/{device-pairing-wizard-BAc4F35b.js → device-pairing-wizard-Du4Ciuyw.js} +1 -1
  50. package/dist/gateway/static/root/assets/{directory-picker-path-field-D26tSY8Z.js → directory-picker-path-field-CjstlxFl.js} +1 -1
  51. package/dist/gateway/static/root/assets/{extension-debug-page-xYIGNegB.js → extension-debug-page-BfAtjhoK.js} +1 -1
  52. package/dist/gateway/static/root/assets/{extension-page-BoQ1-3AW.js → extension-page-BJmudejr.js} +1 -1
  53. package/dist/gateway/static/root/assets/{extension-provider-Cw_JU6RR.js → extension-provider-Br6LXyIj.js} +1 -1
  54. package/dist/gateway/static/root/assets/{extension-settings-page-BH5TFGPe.js → extension-settings-page-UvmHniyz.js} +1 -1
  55. package/dist/gateway/static/root/assets/{fallback-models-04Wqmw14.js → fallback-models-euw9MGdt.js} +1 -1
  56. package/dist/gateway/static/root/assets/{gateway-config-swr-CNf0ZeRw.js → gateway-config-swr-7RKqgU_U.js} +1 -1
  57. package/dist/gateway/static/root/assets/gateway-realtime-F6D4A7N5.js +1 -0
  58. package/dist/gateway/static/root/assets/gateway-realtime-store-BheKaO6d.js +1 -0
  59. package/dist/gateway/static/root/assets/{gateway-settings-BqvCJVUC.js → gateway-settings-C7roPHh1.js} +1 -1
  60. package/dist/gateway/static/root/assets/{gateway-startup-retry-DIxHacUw.js → gateway-startup-retry-jiV5sbEX.js} +1 -1
  61. package/dist/gateway/static/root/assets/home-page-BGNCTtM3.js +2 -0
  62. package/dist/gateway/static/root/assets/{image-generation-api-CS0q0Kto.js → image-generation-api-DO4mXb6I.js} +1 -1
  63. package/dist/gateway/static/root/assets/{imports-page-n_rSLo6b.js → imports-page-DxCoT0VV.js} +1 -1
  64. package/dist/gateway/static/root/assets/index-BGBkIIzM.css +1 -0
  65. package/dist/gateway/static/root/assets/index-FCEE325-.js +106 -0
  66. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-tVkrHbYF.js → keyboard-shortcuts-settings-CnLln9Ds.js} +1 -1
  67. package/dist/gateway/static/root/assets/{local-app-workbench-page-L8tYuas0.js → local-app-workbench-page-yXRkSrEj.js} +1 -1
  68. package/dist/gateway/static/root/assets/{local-apps-page-SSJ9B1bH.js → local-apps-page-D46buzTk.js} +1 -1
  69. package/dist/gateway/static/root/assets/local-session-drafts-pox8evDV.js +1 -0
  70. package/dist/gateway/static/root/assets/{locale-store-D6_rF-qT.js → locale-store-COVscAqC.js} +1 -1
  71. package/dist/gateway/static/root/assets/logs-page-DmcCHnH0.js +2 -0
  72. package/dist/gateway/static/root/assets/management-settings-khN1ThNL.js +1 -0
  73. package/dist/gateway/static/root/assets/{markdown-view-_xwUuKce.js → markdown-view-B_qnAcW2.js} +1 -1
  74. package/dist/gateway/static/root/assets/{media-plugins-C631CDu4.js → media-plugins-C0Pc-wSY.js} +1 -1
  75. package/dist/gateway/static/root/assets/messages-Bb2GK-Nj.js +3 -0
  76. package/dist/gateway/static/root/assets/models-hub-cache-DyPPksMP.js +1 -0
  77. package/dist/gateway/static/root/assets/note-detail-panel-C_t58yha.js +5 -0
  78. package/dist/gateway/static/root/assets/{notes-api-vIZWQ9Yt.js → notes-api-sBgBcyLW.js} +1 -1
  79. package/dist/gateway/static/root/assets/notes-page-BJ0QS6xx.js +8 -0
  80. package/dist/gateway/static/root/assets/{page-context-capture-button-BlPDM7GM.js → page-context-capture-button-DfRODHv1.js} +1 -1
  81. package/dist/gateway/static/root/assets/personal-page-CiiXwwQE.js +1 -0
  82. package/dist/gateway/static/root/assets/{product-open-page-BJjWvoER.js → product-open-page-_Bp6HRmm.js} +1 -1
  83. package/dist/gateway/static/root/assets/{product-preview-content-CEd4E7Gf.js → product-preview-content-BUdiO0Ct.js} +1 -1
  84. package/dist/gateway/static/root/assets/project-detail-page-Clb-fXYk.js +1 -0
  85. package/dist/gateway/static/root/assets/{projects-page-lszV8HuS.js → projects-page-D9JEEqhh.js} +1 -1
  86. package/dist/gateway/static/root/assets/{registry-api-uJnjqTcn.js → registry-api-Bh9UBb-f.js} +1 -1
  87. package/dist/gateway/static/root/assets/remote-access-hub-CmyTq3_l.js +1 -0
  88. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CjnNQYW8.js → runtime-tools-settings-panel-B1_inj8L.js} +1 -1
  89. package/dist/gateway/static/root/assets/{scenes-page-B3T3dDOR.js → scenes-page-CUNAZN2_.js} +2 -2
  90. package/dist/gateway/static/root/assets/{schema-form-DT3c4Vd_.js → schema-form-CfT-9UVw.js} +1 -1
  91. package/dist/gateway/static/root/assets/{send-session-input-CICkGwn-.js → send-session-input-BW40VHiL.js} +1 -1
  92. package/dist/gateway/static/root/assets/{session-api-BcQodoAu.js → session-api-yjpEz4pP.js} +1 -1
  93. package/dist/gateway/static/root/assets/session-manager-BqlvrjPE.js +16 -0
  94. package/dist/gateway/static/root/assets/sessions-page-CXZKScvu.js +1 -0
  95. package/dist/gateway/static/root/assets/settings-advanced-gate-B2vKXmzg.js +1 -0
  96. package/dist/gateway/static/root/assets/{settings-page-D-PZjcss.js → settings-page-1h3vyueg.js} +1 -1
  97. package/dist/gateway/static/root/assets/setup-status-panel-Cqc7UlZy.js +1 -0
  98. package/dist/gateway/static/root/assets/{share-link-dialog-CWS8EkJS.js → share-link-dialog-HCHM8qnf.js} +1 -1
  99. package/dist/gateway/static/root/assets/{share-preview-page-23NJAKiq.js → share-preview-page-Ce6FNWt1.js} +1 -1
  100. package/dist/gateway/static/root/assets/{shares-api-iKhHbvBD.js → shares-api-c0dfWz6h.js} +1 -1
  101. package/dist/gateway/static/root/assets/shares-settings-Dh5jisCK.js +1 -0
  102. package/dist/gateway/static/root/assets/{skill-api-C-MWdQwl.js → skill-api-deDZeQS8.js} +1 -1
  103. package/dist/gateway/static/root/assets/{skill-reload-api-iy02aB13.js → skill-reload-api-Ge5XymHa.js} +1 -1
  104. package/dist/gateway/static/root/assets/skills-page-DZozl9U_.js +2 -0
  105. package/dist/gateway/static/root/assets/system-settings-panel-CtzyMxqq.js +1 -0
  106. package/dist/gateway/static/root/assets/{task-detail-page-B2SIEyhZ.js → task-detail-page-5f_V0h-p.js} +2 -2
  107. package/dist/gateway/static/root/assets/{task-expandable-content-D2LRR4BC.js → task-expandable-content-hYcgCEE3.js} +1 -1
  108. package/dist/gateway/static/root/assets/{theme-store-BJfhz-Zq.js → theme-store-BOfCKgl6.js} +1 -1
  109. package/dist/gateway/static/root/assets/{tracing-settings-page-aHD56iaS.js → tracing-settings-page-DDWFXcST.js} +1 -1
  110. package/dist/gateway/static/root/assets/{tunnel-api-BCf8CfTC.js → tunnel-api-vMtlbJ-m.js} +1 -1
  111. package/dist/gateway/static/root/assets/{usage-page-B4XUkuJd.js → usage-page-B1-BCW8U.js} +1 -1
  112. package/dist/gateway/static/root/assets/{use-autosave-BnnTw9RE.js → use-autosave-CSckcjFx.js} +1 -1
  113. package/dist/gateway/static/root/assets/{use-composer-attachments-Itczg0y1.js → use-composer-attachments-DJya1hIL.js} +1 -1
  114. package/dist/gateway/static/root/assets/use-file-preview-expanded-C5ONO7sF.js +2 -0
  115. package/dist/gateway/static/root/assets/user-model-page-D4BSq9HJ.js +2 -0
  116. package/dist/gateway/static/root/assets/{voice-api-key-field-BphJku8x.js → voice-api-key-field-GEw5x2fU.js} +1 -1
  117. package/dist/gateway/static/root/assets/{voice-config-api-B4u4coFj.js → voice-config-api-3yyVwXln.js} +1 -1
  118. package/dist/gateway/static/root/assets/{work-discovery-overlay-jgOEP1xw.js → work-discovery-overlay-CjiNYJV5.js} +1 -1
  119. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-N69crzRu.js → workflow-run-setup-panel-DJOetXvm.js} +2 -2
  120. package/dist/gateway/static/root/assets/workflows-page-CcAPFh2R.js +6 -0
  121. package/dist/gateway/static/root/assets/{workspace-api-Lzv6GDO8.js → workspace-api-WhbMvdBE.js} +2 -2
  122. package/dist/gateway/static/root/index.html +32 -34
  123. package/dist/package.js +1 -1
  124. package/dist/packages/browser-control-contract/src/automation.js +213 -0
  125. package/dist/packages/browser-control-contract/src/index.js +43 -12
  126. package/dist/packages/endpoint-tools-client/src/index.js +189 -0
  127. package/dist/packages/endpoint-tools-protocol/src/bridge.js +105 -0
  128. package/dist/packages/endpoint-tools-protocol/src/index.js +93 -2
  129. package/dist/packages/endpoint-tools-protocol/src/location.js +109 -0
  130. package/dist/packages/gateway-contract/src/gateway-scopes.js +3 -1
  131. package/dist/packages/gateway-contract/src/notifications.js +1 -0
  132. package/dist/packages/gateway-contract/src/session-input-command.js +30 -5
  133. package/dist/packages/realtime-protocol/src/voice.js +9 -3
  134. package/dist/src/agent/agent-manager.js +22 -26
  135. package/dist/src/agent/coding/repository-instructions.js +8 -1
  136. package/dist/src/agent/embedded/codemode-extension.d.ts +7 -0
  137. package/dist/src/agent/embedded/codemode-extension.js +232 -0
  138. package/dist/src/agent/embedded/codemode-output.d.ts +2 -0
  139. package/dist/src/agent/embedded/codemode-output.js +34 -0
  140. package/dist/src/agent/embedded/external-tool-discovery.d.ts +6 -0
  141. package/dist/src/agent/embedded/external-tool-discovery.js +60 -0
  142. package/dist/src/agent/embedded/model-runtime.js +5 -2
  143. package/dist/src/agent/embedded/run-for-session.js +10 -1
  144. package/dist/src/agent/embedded/run-turn.js +10 -3
  145. package/dist/src/agent/embedded/session-runner.d.ts +9 -1
  146. package/dist/src/agent/embedded/session-runner.js +111 -23
  147. package/dist/src/agent/embedded/session-tool-result-guard.d.ts +2 -0
  148. package/dist/src/agent/embedded/session-tool-result-guard.js +17 -0
  149. package/dist/src/agent/embedded/subscribe-session.js +14 -4
  150. package/dist/src/agent/embedded/tool-metadata.d.ts +15 -0
  151. package/dist/src/agent/embedded/tool-metadata.js +38 -0
  152. package/dist/src/agent/embedded/tool-search-extension.d.ts +5 -0
  153. package/dist/src/agent/embedded/tool-search-extension.js +31 -0
  154. package/dist/src/agent/embedded/types.d.ts +7 -0
  155. package/dist/src/agent/embedded/xopc-tools-bridge.js +6 -0
  156. package/dist/src/agent/external-tools/endpoint-provider.d.ts +1 -1
  157. package/dist/src/agent/external-tools/endpoint-provider.js +148 -56
  158. package/dist/src/agent/external-tools/extension-provider.js +8 -1
  159. package/dist/src/agent/external-tools/gateway-tools.d.ts +1 -1
  160. package/dist/src/agent/external-tools/gateway-tools.js +45 -22
  161. package/dist/src/agent/external-tools/index.js +46 -14
  162. package/dist/src/agent/external-tools/memory-provider.js +8 -1
  163. package/dist/src/agent/external-tools/read-policy.js +2 -1
  164. package/dist/src/agent/external-tools/service.d.ts +2 -0
  165. package/dist/src/agent/external-tools/service.js +25 -3
  166. package/dist/src/agent/external-tools/tool-registry.d.ts +14 -0
  167. package/dist/src/agent/external-tools/tool-registry.js +14 -0
  168. package/dist/src/agent/external-tools/types.d.ts +8 -1
  169. package/dist/src/agent/external-tools/types.js +0 -1
  170. package/dist/src/agent/mcp/config.d.ts +18 -0
  171. package/dist/src/agent/mcp/{bundle-mcp-config.js → config.js} +8 -25
  172. package/dist/src/agent/mcp/native-mcp.d.ts +6 -0
  173. package/dist/src/agent/mcp/native-mcp.js +73 -0
  174. package/dist/src/agent/service.js +2 -5
  175. package/dist/src/agent/skills/installer.js +1 -1
  176. package/dist/src/agent/skills/skill-manager.js +1 -1
  177. package/dist/src/agent/skills/skill-sources.js +1 -1
  178. package/dist/src/agent/source-context/index.d.ts +0 -1
  179. package/dist/src/agent/source-context/index.js +1 -2
  180. package/dist/src/agent/source-context/injector.js +1 -0
  181. package/dist/src/agent/source-context/types.d.ts +2 -2
  182. package/dist/src/agent/source-context/types.js +1 -1
  183. package/dist/src/agent/tool-manuals/browser.d.ts +1 -1
  184. package/dist/src/agent/tool-manuals/browser.js +3 -3
  185. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +1 -1
  186. package/dist/src/agent/tools/browser/tool/schemas.d.ts +0 -13
  187. package/dist/src/agent/tools/browser/tool/schemas.js +0 -4
  188. package/dist/src/agent/tools/browser-automation-tool.d.ts +74 -1
  189. package/dist/src/agent/tools/browser-automation-tool.js +52 -6
  190. package/dist/src/agent/tools/cli-clarify.js +1 -1
  191. package/dist/src/agent/tools/codemode-permissions.d.ts +4 -0
  192. package/dist/src/agent/tools/codemode-permissions.js +23 -0
  193. package/dist/src/agent/tools/dataBatch.js +3 -1
  194. package/dist/src/agent/tools/delegation-parent-policy.js +1 -4
  195. package/dist/src/agent/tools/factory.js +4 -3
  196. package/dist/src/agent/transcript/provider-capabilities.js +0 -1
  197. package/dist/src/agent/transcript/transcript-policy.js +1 -2
  198. package/dist/src/agent-config/schema.d.ts +28 -0
  199. package/dist/src/agent-config/schema.js +7 -0
  200. package/dist/src/auth/credentials.js +7 -20
  201. package/dist/src/auth/model-credential-store.js +11 -4
  202. package/dist/src/auth/oauth/index.d.ts +1 -1
  203. package/dist/src/auth/oauth/index.js +3 -3
  204. package/dist/src/auth/oauth/openai.d.ts +2 -0
  205. package/dist/src/auth/oauth/openai.js +90 -0
  206. package/dist/src/auth/oauth/registry.js +3 -3
  207. package/dist/src/auth/oauth/types.d.ts +1 -0
  208. package/dist/src/auth/oauth/xopc-cloud.js +1 -1
  209. package/dist/src/auth/sync-provider-auth.js +5 -0
  210. package/dist/src/automations/capabilities/write.d.ts +2 -0
  211. package/dist/src/automations/domain/types.d.ts +11 -0
  212. package/dist/src/automations/domain/validation.d.ts +4 -0
  213. package/dist/src/automations/domain/validation.js +1 -0
  214. package/dist/src/automations/draft/automation-draft-validator.d.ts +1 -0
  215. package/dist/src/automations/service/action-executor.js +11 -3
  216. package/dist/src/automations/service/automation-service.d.ts +1 -0
  217. package/dist/src/automations/service/automation-service.js +13 -1
  218. package/dist/src/bootstrap/application-state.js +1 -1
  219. package/dist/src/browser/automations/repository.d.ts +4 -0
  220. package/dist/src/browser/automations/repository.js +27 -6
  221. package/dist/src/browser/automations/runner.js +101 -9
  222. package/dist/src/browser/automations/runtime-service.js +4 -3
  223. package/dist/src/browser/automations/schema.d.ts +84 -1
  224. package/dist/src/browser/automations/schema.js +68 -2
  225. package/dist/src/browser/automations/service.d.ts +78 -1
  226. package/dist/src/browser/automations/service.js +36 -4
  227. package/dist/src/browser/automations/types.d.ts +19 -4
  228. package/dist/src/browser/drivers/extension-driver.d.ts +5 -5
  229. package/dist/src/browser/drivers/extension-driver.js +10 -10
  230. package/dist/src/browser/drivers/playwright-driver.js +46 -0
  231. package/dist/src/browser/index.d.ts +1 -2
  232. package/dist/src/browser/index.js +2 -3
  233. package/dist/src/browser/policy/browser-policy.d.ts +0 -1
  234. package/dist/src/browser/policy/browser-policy.js +1 -4
  235. package/dist/src/browser/providers/index.d.ts +1 -1
  236. package/dist/src/browser/providers/index.js +2 -2
  237. package/dist/src/browser/providers/realtime-extension.d.ts +1 -1
  238. package/dist/src/browser/providers/realtime-extension.js +5 -1
  239. package/dist/src/browser/recordings/service.d.ts +22 -0
  240. package/dist/src/browser/recordings/service.js +160 -0
  241. package/dist/src/browser/runtime/browser-runtime.d.ts +1 -1
  242. package/dist/src/browser/runtime/browser-runtime.js +19 -56
  243. package/dist/src/chat-commands/builtins/model.js +2 -2
  244. package/dist/src/cli/command-manifest.js +1 -1
  245. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  246. package/dist/src/cli/commands/extension-agent-plugin.js +0 -19
  247. package/dist/src/cli/commands/mcp.js +36 -2
  248. package/dist/src/cli/commands/models.js +1 -1
  249. package/dist/src/cli/utils/oauth-login.js +2 -2
  250. package/dist/src/computer/runtime.js +2 -2
  251. package/dist/src/config/index.js +3 -3
  252. package/dist/src/config/mcp-config-normalize.d.ts +0 -3
  253. package/dist/src/config/mcp-config-normalize.js +2 -22
  254. package/dist/src/config/models-json.d.ts +0 -5
  255. package/dist/src/config/models-json.js +13 -4
  256. package/dist/src/config/paths.d.ts +0 -1
  257. package/dist/src/config/paths.js +1 -4
  258. package/dist/src/config/schema.d.ts +142 -48
  259. package/dist/src/config/schema.js +64 -47
  260. package/dist/src/connectors/auth-provider-registry.d.ts +1 -1
  261. package/dist/src/connectors/auth-provider-registry.js +1 -21
  262. package/dist/src/connectors/china-catalog.js +5 -5
  263. package/dist/src/connectors/connection-recovery-service.d.ts +1 -6
  264. package/dist/src/connectors/connection-recovery-service.js +3 -105
  265. package/dist/src/connectors/health.d.ts +1 -2
  266. package/dist/src/connectors/health.js +2 -101
  267. package/dist/src/connectors/types.d.ts +1 -1
  268. package/dist/src/endpoint-tools/binding-service.d.ts +2 -0
  269. package/dist/src/endpoint-tools/binding-service.js +14 -2
  270. package/dist/src/endpoint-tools/bridge-host.d.ts +15 -0
  271. package/dist/src/endpoint-tools/bridge-host.js +166 -0
  272. package/dist/src/endpoint-tools/bridge.d.ts +27 -0
  273. package/dist/src/endpoint-tools/bridge.js +88 -0
  274. package/dist/src/endpoint-tools/capability-catalog.d.ts +2 -0
  275. package/dist/src/endpoint-tools/capability-catalog.js +8 -0
  276. package/dist/src/endpoint-tools/grant-service.d.ts +69 -0
  277. package/dist/src/endpoint-tools/grant-service.js +113 -0
  278. package/dist/src/endpoint-tools/index.js +1 -1
  279. package/dist/src/endpoint-tools/invocation-service.js +6 -2
  280. package/dist/src/endpoint-tools/location-task.d.ts +22 -0
  281. package/dist/src/endpoint-tools/location-task.js +114 -0
  282. package/dist/src/endpoint-tools/policy.js +20 -4
  283. package/dist/src/endpoint-tools/registry.d.ts +2 -0
  284. package/dist/src/endpoint-tools/registry.js +9 -0
  285. package/dist/src/endpoint-tools/result-projector.d.ts +15 -0
  286. package/dist/src/endpoint-tools/result-projector.js +31 -0
  287. package/dist/src/endpoint-tools/runtime.d.ts +2 -0
  288. package/dist/src/endpoint-tools/runtime.js +15 -2
  289. package/dist/src/endpoint-tools/target-resolver.d.ts +12 -0
  290. package/dist/src/endpoint-tools/target-resolver.js +27 -0
  291. package/dist/src/endpoint-tools/turn-context.d.ts +6 -0
  292. package/dist/src/endpoint-tools/turn-context.js +29 -0
  293. package/dist/src/extensions/agent-plugins/auth.d.ts +0 -2
  294. package/dist/src/extensions/agent-plugins/auth.js +2 -19
  295. package/dist/src/extensions/agent-plugins/credentials.js +3 -19
  296. package/dist/src/extensions/agent-plugins/inventory.d.ts +2 -2
  297. package/dist/src/extensions/agent-plugins/mcp-adapter.js +1 -5
  298. package/dist/src/extensions/agent-plugins/source-http-fetch.d.ts +2 -0
  299. package/dist/src/{agent/mcp/plugin-http-fetch.js → extensions/agent-plugins/source-http-fetch.js} +7 -7
  300. package/dist/src/extensions/agent-plugins/sources.js +2 -2
  301. package/dist/src/extensions/agent-plugins/store.js +1 -3
  302. package/dist/src/extensions/agent-plugins/validation.d.ts +0 -4
  303. package/dist/src/extensions/agent-plugins/validation.js +13 -20
  304. package/dist/src/gateway/agents-admin.d.ts +5 -0
  305. package/dist/src/gateway/agents-admin.js +56 -1
  306. package/dist/src/gateway/chat-stream/mapper.js +9 -0
  307. package/dist/src/gateway/chat-stream/protocol.d.ts +4 -4
  308. package/dist/src/gateway/hono/lib/config-payload.d.ts +9 -4
  309. package/dist/src/gateway/hono/lib/config-payload.js +2 -5
  310. package/dist/src/gateway/hono/oauth-async.js +9 -2
  311. package/dist/src/gateway/hono/routes/agent-plugins.js +4 -9
  312. package/dist/src/gateway/hono/routes/agents.js +4 -3
  313. package/dist/src/gateway/hono/routes/browser-automations.js +23 -7
  314. package/dist/src/gateway/hono/routes/browser-recordings.d.ts +3 -0
  315. package/dist/src/gateway/hono/routes/browser-recordings.js +78 -0
  316. package/dist/src/gateway/hono/routes/browser.js +1 -34
  317. package/dist/src/gateway/hono/routes/connection-waits.js +2 -5
  318. package/dist/src/gateway/hono/routes/connectors.js +5 -60
  319. package/dist/src/gateway/hono/routes/device-authorizations.d.ts +3 -0
  320. package/dist/src/gateway/hono/routes/device-authorizations.js +74 -0
  321. package/dist/src/gateway/hono/routes/device-push.js +1 -0
  322. package/dist/src/gateway/hono/routes/endpoint-compatibility.js +7 -0
  323. package/dist/src/gateway/hono/routes/endpoint-tools.d.ts +1 -0
  324. package/dist/src/gateway/hono/routes/endpoint-tools.js +53 -3
  325. package/dist/src/gateway/hono/routes/home.js +1 -1
  326. package/dist/src/gateway/hono/routes/lazy-bundles.js +25 -1
  327. package/dist/src/gateway/hono/routes/mcp.d.ts +1 -1
  328. package/dist/src/gateway/hono/routes/mcp.js +11 -237
  329. package/dist/src/gateway/hono/routes/personal-agent.js +35 -0
  330. package/dist/src/gateway/hono/routes/session-command-handler.js +11 -1
  331. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +8 -2
  332. package/dist/src/gateway/hono/routes/session-input-handler.js +25 -1
  333. package/dist/src/gateway/hono/routes/voice.js +5 -2
  334. package/dist/src/gateway/security/gateway-scopes.js +3 -1
  335. package/dist/src/gateway/service/agent-runner.js +1 -0
  336. package/dist/src/gateway/service/config-coordinator.js +2 -5
  337. package/dist/src/gateway/service/marketplace-service.js +2 -2
  338. package/dist/src/gateway/service/run-gateway-agent.js +13 -5
  339. package/dist/src/gateway/service/session-input-coordinator.d.ts +1 -1
  340. package/dist/src/gateway/service/session-input-coordinator.js +29 -9
  341. package/dist/src/gateway/service/sessions-api.js +0 -6
  342. package/dist/src/gateway/service.js +3 -12
  343. package/dist/src/gateway/session-reset-service.js +0 -6
  344. package/dist/src/home-intelligence/generator.d.ts +2 -0
  345. package/dist/src/home-intelligence/generator.js +53 -4
  346. package/dist/src/home-intelligence/host.d.ts +2 -1
  347. package/dist/src/home-intelligence/host.js +23 -3
  348. package/dist/src/imports/compatibility.js +12 -10
  349. package/dist/src/mcp/channel-bridge.js +1 -1
  350. package/dist/src/migrations/cloud-public-models.js +1 -0
  351. package/dist/src/notifications/clarification.d.ts +5 -0
  352. package/dist/src/notifications/clarification.js +66 -0
  353. package/dist/src/notifications/device-store.js +1 -0
  354. package/dist/src/notifications/harmony-push.d.ts +1 -0
  355. package/dist/src/notifications/harmony-push.js +3 -1
  356. package/dist/src/notifications/planner.d.ts +1 -0
  357. package/dist/src/notifications/service.d.ts +2 -2
  358. package/dist/src/notifications/service.js +20 -4
  359. package/dist/src/notifications/store.d.ts +2 -0
  360. package/dist/src/notifications/store.js +7 -1
  361. package/dist/src/notifications/types.d.ts +1 -0
  362. package/dist/src/notifications/types.js +1 -0
  363. package/dist/src/providers/env-keys.js +1 -1
  364. package/dist/src/providers/index.js +26 -24
  365. package/dist/src/providers/model-call.d.ts +0 -2
  366. package/dist/src/providers/model-call.js +2 -6
  367. package/dist/src/providers/model-registry.js +4 -2
  368. package/dist/src/providers/model-supplements.d.ts +3 -3
  369. package/dist/src/providers/model-supplements.js +6 -27
  370. package/dist/src/providers/presentation.js +3 -8
  371. package/dist/src/providers/prompt-cache-plan.js +1 -1
  372. package/dist/src/providers/provider-auth-service.d.ts +1 -1
  373. package/dist/src/providers/provider-auth-service.js +7 -2
  374. package/dist/src/providers/provider-policy.d.ts +3 -0
  375. package/dist/src/providers/provider-policy.js +14 -0
  376. package/dist/src/providers/register-runtime-providers.js +6 -1
  377. package/dist/src/realtime/runtime.js +1 -1
  378. package/dist/src/session/store.js +7 -1
  379. package/dist/src/session/transcript-events.d.ts +5 -0
  380. package/dist/src/session/transcript-events.js +1 -0
  381. package/dist/src/session/types.d.ts +2 -0
  382. package/dist/src/storage/sqlite/clarification-wait-repository.js +1 -0
  383. package/dist/src/storage/sqlite/device-grant-audit-repository.d.ts +11 -0
  384. package/dist/src/storage/sqlite/device-grant-audit-repository.js +10 -0
  385. package/dist/src/storage/sqlite/endpoint-device-settings-repository.d.ts +7 -0
  386. package/dist/src/storage/sqlite/endpoint-device-settings-repository.js +17 -0
  387. package/dist/src/storage/sqlite/migrations/238_browser_record_replay.sql +45 -0
  388. package/dist/src/storage/sqlite/migrations/239_clarification_notifications.sql +26 -0
  389. package/dist/src/storage/sqlite/migrations/240_device_settings.sql +5 -0
  390. package/dist/src/storage/sqlite/migrations/241_device_grant_audit.sql +13 -0
  391. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  392. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  393. package/dist/src/storage/sqlite/schema.js +1 -1
  394. package/dist/src/storage/sqlite/session-input-repository.d.ts +1 -0
  395. package/dist/src/storage/sqlite/session-input-repository.js +5 -1
  396. package/dist/src/tasks/home-query-service.d.ts +1 -1
  397. package/dist/src/tasks/home-query-service.js +6 -2
  398. package/dist/src/tui/backends/gateway-realtime-backend.js +1 -1
  399. package/dist/src/tui/xopc-tui-keybindings.d.ts +4 -4
  400. package/dist/src/voice/dashscope/streaming-tts-stream.d.ts +2 -1
  401. package/dist/src/voice/dashscope/streaming-tts-stream.js +135 -79
  402. package/dist/src/voice/realtime/agentEngine.js +78 -1
  403. package/dist/src/voice/realtime/speakable-segmenter.d.ts +2 -0
  404. package/dist/src/voice/realtime/speakable-segmenter.js +30 -0
  405. package/dist/src/voice/tts/providers/alibaba-speech.js +17 -1
  406. package/dist/src/voice/tts/speak-core.d.ts +3 -0
  407. package/dist/src/voice/tts/speak-core.js +21 -1
  408. package/dist/src/voice/tts/speech-provider-types.d.ts +8 -0
  409. package/package.json +18 -7
  410. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D0tD3kCe.js +0 -1
  411. package/dist/gateway/static/root/assets/agent-plugin-dialog-BjdgKCnk.js +0 -1
  412. package/dist/gateway/static/root/assets/agents-CWXKzX5L.js +0 -66
  413. package/dist/gateway/static/root/assets/automations-workspace-C9ZT6TAU.js +0 -6
  414. package/dist/gateway/static/root/assets/browser-automation-inputs-CXG_JveC.js +0 -1
  415. package/dist/gateway/static/root/assets/browser-automations-page-CJc7OKR3.js +0 -3
  416. package/dist/gateway/static/root/assets/browser-settings-page-BjaTEUR8.js +0 -3
  417. package/dist/gateway/static/root/assets/capabilities-page-djBsC_tG.js +0 -2
  418. package/dist/gateway/static/root/assets/channels-BaYRJtz3.js +0 -1
  419. package/dist/gateway/static/root/assets/connectors-page-DyqRwSH2.js +0 -2
  420. package/dist/gateway/static/root/assets/copy-text-row-BHDs3cBa.js +0 -1
  421. package/dist/gateway/static/root/assets/dependency-picker-CWbbhKZa.js +0 -1
  422. package/dist/gateway/static/root/assets/dist-Che_jiQF.js +0 -1
  423. package/dist/gateway/static/root/assets/gateway-realtime-C4KtwMY3.js +0 -1
  424. package/dist/gateway/static/root/assets/gateway-realtime-store-ChZUzVbe.js +0 -1
  425. package/dist/gateway/static/root/assets/home-page-DhPPLbdD.js +0 -2
  426. package/dist/gateway/static/root/assets/index-CK4O2xMa.css +0 -1
  427. package/dist/gateway/static/root/assets/index-DpLD-7Hc.js +0 -106
  428. package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +0 -1
  429. package/dist/gateway/static/root/assets/local-session-drafts-B_McurIj.js +0 -1
  430. package/dist/gateway/static/root/assets/logs-page-BWD63eg1.js +0 -2
  431. package/dist/gateway/static/root/assets/management-settings-aKSibklM.js +0 -1
  432. package/dist/gateway/static/root/assets/messages-Bnx3GMDB.js +0 -3
  433. package/dist/gateway/static/root/assets/models-hub-cache-Di83uIPw.js +0 -1
  434. package/dist/gateway/static/root/assets/note-detail-panel-B_fve3_2.js +0 -5
  435. package/dist/gateway/static/root/assets/notes-page-DnChyp8S.js +0 -8
  436. package/dist/gateway/static/root/assets/personal-page-BM2qAgg_.js +0 -1
  437. package/dist/gateway/static/root/assets/project-detail-page-DM4_VLNX.js +0 -1
  438. package/dist/gateway/static/root/assets/remote-access-hub-O6j9CWX0.js +0 -1
  439. package/dist/gateway/static/root/assets/session-manager-B0tOE4qz.js +0 -16
  440. package/dist/gateway/static/root/assets/sessions-page-BIixHXlQ.js +0 -1
  441. package/dist/gateway/static/root/assets/settings-advanced-gate-49SUEWPh.js +0 -1
  442. package/dist/gateway/static/root/assets/setup-status-panel-Ce3gTbT3.js +0 -1
  443. package/dist/gateway/static/root/assets/shares-settings-CNEZjF66.js +0 -1
  444. package/dist/gateway/static/root/assets/skills-page-BndNdYsJ.js +0 -2
  445. package/dist/gateway/static/root/assets/system-settings-panel-EpZeMlvp.js +0 -1
  446. package/dist/gateway/static/root/assets/use-file-preview-expanded-DJ5vyrvM.js +0 -2
  447. package/dist/gateway/static/root/assets/user-model-page-Bz5lkFG9.js +0 -2
  448. package/dist/gateway/static/root/assets/workflows-page-CPCgOfHh.js +0 -6
  449. package/dist/src/agent/embedded/system-prompt-override.d.ts +0 -2
  450. package/dist/src/agent/embedded/system-prompt-override.js +0 -21
  451. package/dist/src/agent/external-tools/mcp-provider.d.ts +0 -32
  452. package/dist/src/agent/external-tools/mcp-provider.js +0 -208
  453. package/dist/src/agent/mcp/bundle-mcp-config.d.ts +0 -20
  454. package/dist/src/agent/mcp/bundle-mcp-gateway.d.ts +0 -79
  455. package/dist/src/agent/mcp/bundle-mcp-gateway.js +0 -93
  456. package/dist/src/agent/mcp/bundle-mcp-names.d.ts +0 -1
  457. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -25
  458. package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +0 -1
  459. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -6
  460. package/dist/src/agent/mcp/bundle-mcp-runtime.d.ts +0 -46
  461. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -571
  462. package/dist/src/agent/mcp/bundle-mcp-tools.d.ts +0 -2
  463. package/dist/src/agent/mcp/bundle-mcp-tools.js +0 -2
  464. package/dist/src/agent/mcp/bundle-mcp-types.d.ts +0 -76
  465. package/dist/src/agent/mcp/bundle-mcp-types.js +0 -1
  466. package/dist/src/agent/mcp/embedded-mcp.d.ts +0 -10
  467. package/dist/src/agent/mcp/embedded-mcp.js +0 -14
  468. package/dist/src/agent/mcp/index.d.ts +0 -5
  469. package/dist/src/agent/mcp/index.js +0 -12
  470. package/dist/src/agent/mcp/mcp-config-shared.d.ts +0 -8
  471. package/dist/src/agent/mcp/mcp-config-shared.js +0 -39
  472. package/dist/src/agent/mcp/mcp-http.d.ts +0 -23
  473. package/dist/src/agent/mcp/mcp-http.js +0 -67
  474. package/dist/src/agent/mcp/mcp-resource-id.d.ts +0 -6
  475. package/dist/src/agent/mcp/mcp-resource-id.js +0 -19
  476. package/dist/src/agent/mcp/mcp-stdio-transport.d.ts +0 -26
  477. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -120
  478. package/dist/src/agent/mcp/mcp-stdio.d.ts +0 -18
  479. package/dist/src/agent/mcp/mcp-stdio.js +0 -35
  480. package/dist/src/agent/mcp/mcp-transport-config.d.ts +0 -28
  481. package/dist/src/agent/mcp/mcp-transport-config.js +0 -91
  482. package/dist/src/agent/mcp/mcp-transport.d.ts +0 -17
  483. package/dist/src/agent/mcp/mcp-transport.js +0 -141
  484. package/dist/src/agent/mcp/oauth/index.d.ts +0 -6
  485. package/dist/src/agent/mcp/oauth/index.js +0 -6
  486. package/dist/src/agent/mcp/oauth/mcp-oauth-errors.d.ts +0 -5
  487. package/dist/src/agent/mcp/oauth/mcp-oauth-errors.js +0 -14
  488. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.d.ts +0 -30
  489. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +0 -276
  490. package/dist/src/agent/mcp/oauth/mcp-oauth-provider.d.ts +0 -33
  491. package/dist/src/agent/mcp/oauth/mcp-oauth-provider.js +0 -103
  492. package/dist/src/agent/mcp/oauth/mcp-oauth-session.d.ts +0 -31
  493. package/dist/src/agent/mcp/oauth/mcp-oauth-session.js +0 -181
  494. package/dist/src/agent/mcp/oauth/mcp-oauth-store.d.ts +0 -12
  495. package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +0 -91
  496. package/dist/src/agent/mcp/oauth/mcp-oauth-types.d.ts +0 -22
  497. package/dist/src/agent/mcp/oauth/mcp-oauth-types.js +0 -1
  498. package/dist/src/agent/mcp/plugin-http-fetch.d.ts +0 -2
  499. package/dist/src/agent/source-context/mcp-resource-context.d.ts +0 -8
  500. package/dist/src/agent/source-context/mcp-resource-context.js +0 -30
  501. package/dist/src/auth/oauth/openai-codex.d.ts +0 -9
  502. package/dist/src/auth/oauth/openai-codex.js +0 -414
  503. package/dist/src/browser/policy/approval-store.d.ts +0 -17
  504. package/dist/src/browser/policy/approval-store.js +0 -62
  505. package/dist/src/browser/providers/extension-ws-acquire.d.ts +0 -19
  506. package/dist/src/browser/providers/extension-ws-acquire.js +0 -78
  507. package/dist/src/browser/providers/extension.d.ts +0 -61
  508. package/dist/src/browser/providers/extension.js +0 -378
  509. package/dist/src/connectors/plugin-mcp-recovery.d.ts +0 -28
  510. package/dist/src/connectors/plugin-mcp-recovery.js +0 -90
  511. package/dist/src/extensions/agent-plugins/connection.d.ts +0 -8
  512. package/dist/src/extensions/agent-plugins/connection.js +0 -41
  513. package/dist/src/extensions/agent-plugins/health.d.ts +0 -4
  514. package/dist/src/extensions/agent-plugins/health.js +0 -48
  515. package/dist/src/extensions/agent-plugins/plugin-oauth-scope.d.ts +0 -1
  516. package/dist/src/extensions/agent-plugins/plugin-oauth-scope.js +0 -8
@@ -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"./check-DUBLcKHA.js";import{t as a}from"./circle-alert-BEjgurr2.js";import{t as o}from"./loader-circle-CifKLtgG.js";import{t as s}from"./cn-JdwAhgNB.js";import{n as c}from"./locale-store-D6_rF-qT.js";var l=n(),u=r();function d(e){let t=(0,l.c)(21),{status:n,error:r,className:d}=e,p=c(f)===`zh`;if(n===`idle`)return null;let m=n===`saving`?p?`正在保存…`:`Saving…`:n===`saved`?p?`已自动保存`:`Saved automatically`:n===`error`?r||(p?`自动保存失败`:`Autosave failed`):n===`dirty`?p?`编辑中,将自动保存`:`Editing — autosave pending`:``,h=n===`error`?`text-danger`:n===`saved`?`text-success`:`text-fg-subtle`,g;t[0]!==d||t[1]!==h?(g=s(`inline-flex min-w-0 items-center gap-1.5 text-xs`,h,d),t[0]=d,t[1]=h,t[2]=g):g=t[2];let _;t[3]===n?_=t[4]:(_=n===`saving`?(0,u.jsx)(o,{className:`size-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):null,t[3]=n,t[4]=_);let v;t[5]===n?v=t[6]:(v=n===`saved`?(0,u.jsx)(i,{className:`size-3.5 shrink-0`,"aria-hidden":!0}):null,t[5]=n,t[6]=v);let y;t[7]===n?y=t[8]:(y=n===`error`?(0,u.jsx)(a,{className:`size-3.5 shrink-0`,"aria-hidden":!0}):null,t[7]=n,t[8]=y);let b;t[9]===n?b=t[10]:(b=n===`dirty`?(0,u.jsx)(`span`,{className:`size-1.5 shrink-0 rounded-full bg-current`,"aria-hidden":!0}):null,t[9]=n,t[10]=b);let x;t[11]===m?x=t[12]:(x=(0,u.jsx)(`span`,{className:`truncate`,children:m}),t[11]=m,t[12]=x);let S;return t[13]!==m||t[14]!==g||t[15]!==_||t[16]!==v||t[17]!==y||t[18]!==b||t[19]!==x?(S=(0,u.jsxs)(`span`,{className:g,role:`status`,"aria-live":`polite`,title:m,children:[_,v,y,b,x]}),t[13]=m,t[14]=g,t[15]=_,t[16]=v,t[17]=y,t[18]=b,t[19]=x,t[20]=S):S=t[20],S}function f(e){return e.language}var p=e(t(),1);function m({value:e,dirty:t,onSave:n,enabled:r=!0,delayMs:i=700,validate:a,serialize:o=JSON.stringify}){let[s,c]=(0,p.useState)(`idle`),[l,u]=(0,p.useState)(null),d=(0,p.useRef)(e),f=(0,p.useRef)(n),m=(0,p.useRef)(a),h=(0,p.useRef)(o),g=(0,p.useRef)(null),_=(0,p.useRef)(!1),v=(0,p.useRef)(null),y=(0,p.useRef)(null),b=(0,p.useRef)(null),x=(0,p.useRef)(!0);d.current=e,f.current=n,m.current=a,h.current=o;let S=(0,p.useCallback)(()=>{g.current!==null&&(window.clearTimeout(g.current),g.current=null)},[]),C=(0,p.useCallback)(async e=>{S();let t=h.current(e);b.current=t;let n=m.current?.(e)??null;if(n){u(n),c(`error`);return}if(_.current){v.current=e;return}_.current=!0,u(null),c(`saving`);try{await f.current(e),y.current=t,x.current&&c(`saved`)}catch(e){x.current&&(u(e instanceof Error?e.message:String(e)),c(`error`))}finally{_.current=!1;let e=v.current;v.current=null,e&&h.current(e)!==y.current&&C(e)}},[S]),w=(0,p.useCallback)(()=>{let e=d.current;!r||!t||e===null||C(e)},[t,r,C]),T=(0,p.useCallback)(e=>{let t=e??d.current;!r||t===null||C(t)},[r,C]);return(0,p.useEffect)(()=>{if(!r||!t||e===null){S(),!t&&s===`dirty`&&c(`idle`);return}let n=o(e);if(n!==y.current&&!(s===`error`&&n===b.current))return c(e=>e===`saving`?e:`dirty`),S(),g.current=window.setTimeout(()=>void C(e),i),S},[S,i,t,r,C,o,s,e]),(0,p.useEffect)(()=>(x.current=!0,()=>{x.current=!1,S()}),[S]),(0,p.useEffect)(()=>{if(s!==`saved`)return;let e=window.setTimeout(()=>c(`idle`),1600);return()=>window.clearTimeout(e)},[s]),{status:s,error:l,flush:w,saveNow:T,retry:w,onBlurCapture:w}}export{d as n,m as t};
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"./check-DUBLcKHA.js";import{t as a}from"./circle-alert-BEjgurr2.js";import{t as o}from"./loader-circle-CifKLtgG.js";import{t as s}from"./cn-JdwAhgNB.js";import{n as c}from"./locale-store-COVscAqC.js";var l=n(),u=r();function d(e){let t=(0,l.c)(21),{status:n,error:r,className:d}=e,p=c(f)===`zh`;if(n===`idle`)return null;let m=n===`saving`?p?`正在保存…`:`Saving…`:n===`saved`?p?`已自动保存`:`Saved automatically`:n===`error`?r||(p?`自动保存失败`:`Autosave failed`):n===`dirty`?p?`编辑中,将自动保存`:`Editing — autosave pending`:``,h=n===`error`?`text-danger`:n===`saved`?`text-success`:`text-fg-subtle`,g;t[0]!==d||t[1]!==h?(g=s(`inline-flex min-w-0 items-center gap-1.5 text-xs`,h,d),t[0]=d,t[1]=h,t[2]=g):g=t[2];let _;t[3]===n?_=t[4]:(_=n===`saving`?(0,u.jsx)(o,{className:`size-3.5 shrink-0 animate-spin`,"aria-hidden":!0}):null,t[3]=n,t[4]=_);let v;t[5]===n?v=t[6]:(v=n===`saved`?(0,u.jsx)(i,{className:`size-3.5 shrink-0`,"aria-hidden":!0}):null,t[5]=n,t[6]=v);let y;t[7]===n?y=t[8]:(y=n===`error`?(0,u.jsx)(a,{className:`size-3.5 shrink-0`,"aria-hidden":!0}):null,t[7]=n,t[8]=y);let b;t[9]===n?b=t[10]:(b=n===`dirty`?(0,u.jsx)(`span`,{className:`size-1.5 shrink-0 rounded-full bg-current`,"aria-hidden":!0}):null,t[9]=n,t[10]=b);let x;t[11]===m?x=t[12]:(x=(0,u.jsx)(`span`,{className:`truncate`,children:m}),t[11]=m,t[12]=x);let S;return t[13]!==m||t[14]!==g||t[15]!==_||t[16]!==v||t[17]!==y||t[18]!==b||t[19]!==x?(S=(0,u.jsxs)(`span`,{className:g,role:`status`,"aria-live":`polite`,title:m,children:[_,v,y,b,x]}),t[13]=m,t[14]=g,t[15]=_,t[16]=v,t[17]=y,t[18]=b,t[19]=x,t[20]=S):S=t[20],S}function f(e){return e.language}var p=e(t(),1);function m({value:e,dirty:t,onSave:n,enabled:r=!0,delayMs:i=700,validate:a,serialize:o=JSON.stringify}){let[s,c]=(0,p.useState)(`idle`),[l,u]=(0,p.useState)(null),d=(0,p.useRef)(e),f=(0,p.useRef)(n),m=(0,p.useRef)(a),h=(0,p.useRef)(o),g=(0,p.useRef)(null),_=(0,p.useRef)(!1),v=(0,p.useRef)(null),y=(0,p.useRef)(null),b=(0,p.useRef)(null),x=(0,p.useRef)(!0);d.current=e,f.current=n,m.current=a,h.current=o;let S=(0,p.useCallback)(()=>{g.current!==null&&(window.clearTimeout(g.current),g.current=null)},[]),C=(0,p.useCallback)(async e=>{S();let t=h.current(e);b.current=t;let n=m.current?.(e)??null;if(n){u(n),c(`error`);return}if(_.current){v.current=e;return}_.current=!0,u(null),c(`saving`);try{await f.current(e),y.current=t,x.current&&c(`saved`)}catch(e){x.current&&(u(e instanceof Error?e.message:String(e)),c(`error`))}finally{_.current=!1;let e=v.current;v.current=null,e&&h.current(e)!==y.current&&C(e)}},[S]),w=(0,p.useCallback)(()=>{let e=d.current;!r||!t||e===null||C(e)},[t,r,C]),T=(0,p.useCallback)(e=>{let t=e??d.current;!r||t===null||C(t)},[r,C]);return(0,p.useEffect)(()=>{if(!r||!t||e===null){S(),!t&&s===`dirty`&&c(`idle`);return}let n=o(e);if(n!==y.current&&!(s===`error`&&n===b.current))return c(e=>e===`saving`?e:`dirty`),S(),g.current=window.setTimeout(()=>void C(e),i),S},[S,i,t,r,C,o,s,e]),(0,p.useEffect)(()=>(x.current=!0,()=>{x.current=!1,S()}),[S]),(0,p.useEffect)(()=>{if(s!==`saved`)return;let e=window.setTimeout(()=>c(`idle`),1600);return()=>window.clearTimeout(e)},[s]),{status:s,error:l,flush:w,saveNow:T,retry:w,onBlurCapture:w}}export{d as n,m as t};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/attachment-load-qjPpQzYY.js","assets/attachment-utils-core-BIOUBrpT.js"])))=>i.map(i=>d[i]);
2
- 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"./preload-helper-zJ_50EbN.js";import{t as a}from"./createLucideIcon-DPHK1VkS.js";import{t as o}from"./chevron-left-DqFhpbvK.js";import{t as s}from"./chevron-right-BweFrslA.js";import{t as c}from"./mic-CuUb7zc-.js";import{m as l,n as u,o as d,t as f}from"./use-file-preview-expanded-DJ5vyrvM.js";import{n as p}from"./share-link-dialog-CWS8EkJS.js";import{t as m}from"./messages-Bnx3GMDB.js";import{t as h}from"./cn-JdwAhgNB.js";import{a as g,n as _,r as v}from"./locale-store-D6_rF-qT.js";import{o as y,r as b,s as x,t as S}from"./dist-BGTk37IG.js";import{r as C,t as w}from"./constants-Dy8Gw0sF.js";import{r as T}from"./tasks-DwKXgZ-I.js";import{a as E,i as D,o as O}from"./capabilities-Lswa0hv8.js";import{t as k}from"./capabilities-Dd1PZRQw.js";import{n as A}from"./interaction-BdhHBbYa.js";import{r as j}from"./attachment-utils-core-BIOUBrpT.js";import{n as M}from"./electron-env-Dit0bHgy.js";import{i as N}from"./skill-wire-pattern-BPpeIcCi.js";import{a as P}from"./shares-api-iKhHbvBD.js";var F=a(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),I=a(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]);async function L(e){return T.parse(await g(v(`/api/tasks`),{method:`POST`,body:JSON.stringify(e)}))}async function R(e){return k(`xopc.tasks.get`,{id:e})}async function z(e){return g(v(`/api/tasks/${encodeURIComponent(e)}/conversation`),{method:`POST`})}async function B(e,t,n){return await g(v(`/api/tasks/${encodeURIComponent(e)}`),{method:`PATCH`,body:JSON.stringify({...t,expectedVersion:n})}),R(e)}async function V(e){await g(v(`/api/tasks/${encodeURIComponent(e)}`),{method:`DELETE`})}async function H(e,t,n,r=crypto.randomUUID()){return await g(v(`/api/tasks/${encodeURIComponent(e)}/commands`),{method:`POST`,body:JSON.stringify({idempotencyKey:r,expectedVersion:n,command:t})}),R(e)}async function U(e,t,n,r,i){return await g(v(`/api/tasks/${encodeURIComponent(e)}/criteria/${t}/review`),{method:`PUT`,body:JSON.stringify({status:n,expectedVersion:r,contractVersion:i})}),R(e)}async function W(e,t,n){return await g(v(`/api/task-runs/${encodeURIComponent(t)}/cancel`),{method:`POST`,body:JSON.stringify({expectedVersion:n,reason:`Cancelled by user`})}),R(e)}async function G(e,t,n){return await g(v(`/api/tasks/${encodeURIComponent(e)}/handoff`),{method:`POST`,body:JSON.stringify({toAgentId:t,expectedVersion:n,idempotencyKey:crypto.randomUUID()})}),R(e)}async function K(e,t,n){return await g(v(`/api/tasks/${encodeURIComponent(e)}/dependencies`),{method:`PUT`,body:JSON.stringify({dependsOnTaskIds:t,expectedVersion:n})}),R(e)}async function q(e,t,n){return await g(v(`/api/tasks/${encodeURIComponent(e)}/board-position`),{method:`PUT`,body:JSON.stringify({beforeTaskId:t,expectedVersion:n})}),R(e)}async function J(e,t,n){await g(v(`/api/task-runs/${encodeURIComponent(e)}/feedback`),{method:`POST`,headers:{"idempotency-key":crypto.randomUUID()},body:JSON.stringify({rating:t,reason:n?.trim()||void 0})})}function Y(e){return g(v(`/api/home${e?`?locale=${encodeURIComponent(e)}`:``}`)).then(O)}function X(e){return g(v(`/api/home/advisor/refresh`),{method:`POST`,body:JSON.stringify({idempotencyKey:crypto.randomUUID(),locale:e})})}function ee(){return g(v(`/api/home/advisor/history`)).then(e=>E.parse(e))}async function te(e,t){return D.parse(await g(v(`/api/home/opportunities/${encodeURIComponent(e.id)}/action`),{method:`POST`,body:JSON.stringify({idempotencyKey:crypto.randomUUID(),expectedRevision:e.revision,mode:t})}))}function ne(e,t){let n=crypto.randomUUID();return g(v(`/api/home/opportunities/${encodeURIComponent(e.id)}/feedback`),{method:`POST`,body:JSON.stringify({...t,idempotencyKey:n,expectedRevision:e.revision})}).then(()=>({ok:!0,idempotencyKey:n}))}function re(e,t){return g(v(`/api/home/opportunities/${encodeURIComponent(e)}/feedback/undo`),{method:`POST`,body:JSON.stringify({idempotencyKey:t})})}function ie(e,t){return g(v(`/api/home/decisions/respond`),{method:`POST`,body:JSON.stringify({...e,decision:t})})}function ae(e){return g(v(`/api/home/attention/acknowledge`),{method:`POST`,body:JSON.stringify(e)})}function oe(e){return g(v(`/api/home/attention/retry`),{method:`POST`,body:JSON.stringify(e)})}function se(e,t){let n=e.trim(),r=t.trim();return n&&N(n)?`/skill:${n}${r?` ${r}`:` `}`:r||null}function ce(e,t,n){let r=e.trim(),i=t?.trim()??``;if(!r&&!i)return null;let a=new URLSearchParams;return r&&a.set(`draft`,r),a.set(`autoSend`,`1`),i&&a.set(`attachmentsHandoff`,i),n?.projectScope===`none`&&a.set(`projectScope`,`none`),`/chat/new?${a.toString()}`}function le(e){let t=e.startsWith(`?`)?e.slice(1):e;if(!t)return``;let n=new URLSearchParams(t),r=new URLSearchParams,i=n.get(`skill`),a=n.get(`slash`),o=n.get(`draft`),s=n.get(`autoSend`),c=n.get(`attachmentHandoff`),l=n.get(`attachmentsHandoff`),u=n.get(`agentSetup`);i&&r.set(`skill`,i),a&&r.set(`slash`,a),o&&r.set(`draft`,o),s===`1`&&r.set(`autoSend`,`1`),c&&r.set(`attachmentHandoff`,c),l&&r.set(`attachmentsHandoff`,l),u===`1`&&r.set(`agentSetup`,`1`),n.get(`scene`)===`find-skills`&&r.set(`scene`,`find-skills`);let d=r.toString();return d?`?${d}`:``}function ue(e){let t=e.startsWith(`?`)?e.slice(1):e,n=new URLSearchParams(t),r=n.get(`projectId`)?.trim();return r?{kind:`project`,projectId:r}:n.get(`projectScope`)===`none`?{kind:`none`}:{kind:`remember-last`}}function de(e){let t=e?.trim();return t?`/chat/new?projectId=${encodeURIComponent(t)}`:`/chat/new?projectScope=none`}var fe=n(),Z=e(t(),1);function Q(){let[e,t]=(0,Z.useState)(!1),[n,r]=(0,Z.useState)(!1),[i,a]=(0,Z.useState)(null),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(null),u=(0,Z.useCallback)(e=>{t(!0),l(e),a(null),s(null)},[]),d=(0,Z.useCallback)(async e=>{if(!c||n)return null;r(!0),s(null);try{let t=await P({...c,...e});return a(t.payload),t.payload}catch(e){return s(e instanceof Error?e.message:String(e)),null}finally{r(!1)}},[n,c]),f=(0,Z.useCallback)(()=>{a(null),s(null),r(!1),l(null)},[]);return{dialogOpen:e,loading:n,result:i,error:o,pendingParams:c,createShareLink:u,confirmShareLink:d,handleOpenChange:(0,Z.useCallback)(e=>{t(e),e||f()},[f])}}function pe(){return M()&&window.electronAPI?.platform===`darwin`}function me(){return M()&&window.electronAPI?.platform===`win32`}function he(){return me()?`windows-preview-viewport`:``}var $=r();function ge({open:e,attachment:t,images:n=[],onAttachmentChange:r,authToken:i,conversationId:a,layerClassName:c=`z-[81]`,onClose:g}){let v=_(e=>e.language),w=m(v).chat,T=d({open:e,attachment:t,authToken:i,conversationId:a,language:v}),E=Q(),{expanded:D,setExpanded:O}=f(e,E.dialogOpen),[k,j]=(0,Z.useState)(!1),{preview:N,fileType:P,hasExtractedText:F}=T,I=t?n.findIndex(e=>e===t||e.id&&e.id===t.id||e.uri&&e.uri===t.uri||!e.id&&!e.uri&&e.name===t.name&&!!e.data&&e.data===t.data):-1,L=P===`image`&&n.length>1&&I>=0&&!!r,R=e=>{if(!L||E.dialogOpen)return;let t=I+(e===`previous`?-1:1);t>=0&&t<n.length&&r?.(n[t])},z=P!==`image`&&P!==`text`&&P!==`pptx`&&F,B=N?.uri?C(N.uri):null,V=!!(B||N?.uri?.startsWith(`media://`)&&(a||N.taskId)),H=()=>{!N?.uri||!V||E.createShareLink(B?{fileId:B,fileName:N.name}:{uri:N.uri,conversationId:a??void 0,taskId:N.taskId,fileName:N.name})},U=!!(N&&!T.loading&&!T.loadError),W=()=>{O(!1),g()},G=()=>{if(!N||!T.downloadBuffer)return;let e=new Blob([T.downloadBuffer],{type:T.descriptor.mimeType}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=N.name??`download`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},K=!!T.downloadBuffer,q=M()&&P===`spreadsheet`&&/\.xlsx?$/i.test(T.fileName)&&!!T.downloadBuffer&&!!window.electronAPI?.shell?.openTemporaryFile,J=async()=>{let e=T.downloadBuffer,t=window.electronAPI?.shell?.openTemporaryFile;if(!(!e||!t||k)){j(!0);try{(await t({fileName:T.fileName,data:new Uint8Array(e)})).ok||l(`warning`,w.attachmentPreviewOpenLocalFailed)}catch{l(`warning`,w.attachmentPreviewOpenLocalFailed)}finally{j(!1)}}},Y={onDownload:G,canDownload:K},X=h(`min-h-0 min-w-0 flex-1 cursor-pointer border-0 p-0`,`bg-surface-base transition-colors`,`hover:bg-surface-hover/90 dark:bg-black/60 dark:hover:bg-black/70`,A.focusRingBase);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(S,{open:e,onOpenChange:e=>!e&&W(),children:(0,$.jsx)(y,{children:(0,$.jsxs)(b,{"aria-describedby":void 0,onKeyDown:e=>{!L||E.dialogOpen||e.altKey||e.ctrlKey||e.metaKey||e.target.closest(`input, textarea, select, [contenteditable="true"]`)||(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.preventDefault(),R(e.key===`ArrowLeft`?`previous`:`next`))},className:h(`xopc-dialog-content-fullscreen fixed inset-0 flex h-[100dvh] w-full flex-row overflow-hidden`,he(),c,`border-0 bg-transparent p-0 shadow-none outline-none`),children:[(0,$.jsx)(x,{className:`sr-only`,children:N?.name??``}),(0,$.jsx)(`button`,{type:`button`,className:X,onClick:W,"aria-label":w.attachmentPreviewClose}),(0,$.jsxs)(`div`,{className:h(`flex h-full min-h-0 shrink-0 flex-col overflow-hidden`,D?`w-full`:`w-[min(100%,var(--max-width-app-main))]`,`bg-surface-panel sm:border-x sm:border-edge dark:sm:border-edge`,`shadow-float dark:shadow-elevated`),children:[(0,$.jsx)(u,{header:{expanded:D,onToggleExpanded:U?()=>O(e=>!e):void 0,onClose:W,share:V?{onClick:H,loading:E.loading}:void 0,openWithSystemApp:q?{onClick:()=>void J(),loading:k}:void 0,textView:z?{active:T.showExtractedText,onChange:e=>{T.setShowExtractedText(e),T.clearLoadError()}}:void 0},chat:T.downloadBuffer?{conversationId:a,createFile:async()=>new File([T.downloadBuffer],T.fileName,{type:T.descriptor.mimeType})}:void 0,onImageSwipe:L?R:void 0,language:v,descriptor:T.descriptor,loading:T.loading,loadError:T.loadError,textContent:T.textContent,binaryBuffer:T.binaryBuffer,showExtractedText:T.showExtractedText,extractedText:T.extractedText,extractedTextTruncated:T.extractedTextTruncated,actions:Y}),L?(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-center gap-4 border-t border-edge bg-surface-panel px-3 py-2`,children:[(0,$.jsx)(`button`,{type:`button`,"aria-label":w.attachmentPreviewPreviousImage,disabled:I===0,onClick:()=>R(`previous`),className:h(`flex size-11 touch-manipulation items-center justify-center rounded-lg hover:bg-surface-hover disabled:opacity-30`,A.focusRingBase),children:(0,$.jsx)(o,{size:20,"aria-hidden":`true`})}),(0,$.jsxs)(`span`,{role:`status`,className:`min-w-16 text-center text-sm tabular-nums text-fg-muted`,children:[I+1,` / `,n.length]}),(0,$.jsx)(`button`,{type:`button`,"aria-label":w.attachmentPreviewNextImage,disabled:I===n.length-1,onClick:()=>R(`next`),className:h(`flex size-11 touch-manipulation items-center justify-center rounded-lg hover:bg-surface-hover disabled:opacity-30`,A.focusRingBase),children:(0,$.jsx)(s,{size:20,"aria-hidden":`true`})})]}):null]}),(0,$.jsx)(`button`,{type:`button`,className:X,onClick:W,"aria-label":w.attachmentPreviewClose})]})})}),(0,$.jsx)(p,{open:E.dialogOpen,onOpenChange:E.handleOpenChange,loading:E.loading,error:E.error,result:E.result,pendingParams:E.pendingParams,onConfirm:e=>void E.confirmShareLink(e)})]})}function _e(e){let t=(0,fe.c)(23),{attachments:n,conversationId:r,topPadded:i,onRemove:a,className:o}=e,s=_(ve),l;t[0]===s?l=t[1]:(l=m(s),t[0]=s,t[1]=l);let u=l.chat,[d,f]=(0,Z.useState)(null);if(n.length===0)return null;let p=i?`pt-2`:`pt-3`,g;t[2]!==o||t[3]!==p?(g=h(`flex flex-wrap gap-2 border-b border-edge-subtle/90 bg-surface-hover/20 px-4 pb-2 dark:border-edge-subtle`,p,o),t[2]=o,t[3]=p,t[4]=g):g=t[4];let v;if(t[5]!==n||t[6]!==u||t[7]!==a){let e;t[9]!==u||t[10]!==a?(e=(e,t)=>{let n=e.type===`pasted_text`?u.pastedText:e.name;return(0,$.jsxs)(`div`,{className:`flex max-w-[200px] items-center rounded-lg bg-surface-hover text-xs dark:bg-surface-hover/80`,children:[(0,$.jsxs)(`button`,{type:`button`,className:h(`flex min-w-0 flex-1 items-center gap-1.5 rounded-l-lg py-1 pl-2 pr-1 text-left hover:bg-surface-active`,A.transition,A.press,A.focusRingPanel),onClick:()=>f(e),"aria-label":`${u.attachmentPreviewOpen}: ${n}`,title:`${u.attachmentPreviewOpen}: ${n}`,children:[e.mimeType?.startsWith(`image/`)&&e.content?(0,$.jsx)(`img`,{src:`data:${e.mimeType};base64,${e.content}`,alt:``,className:`size-6 shrink-0 rounded object-cover`}):e.type===`voice`||e.mimeType?.startsWith(`audio/`)?(0,$.jsx)(c,{className:`size-3.5 shrink-0 text-accent-fg`,"aria-hidden":!0}):e.type===`pasted_text`?(0,$.jsx)(F,{className:`size-3.5 shrink-0 text-accent-fg`,"aria-hidden":!0}):(0,$.jsx)(I,{className:`size-3.5 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:n}),(0,$.jsx)(`span`,{className:`shrink-0 text-fg-disabled`,children:j(e.size)})]}),(0,$.jsx)(`button`,{type:`button`,className:h(`flex min-h-8 min-w-8 items-center justify-center rounded-r-lg text-fg-muted hover:bg-surface-active hover:text-fg`,A.transition,A.press,A.focusRingPanel),onClick:()=>a(t),"aria-label":`${u.attachmentPreviewRemove}: ${n}`,title:`${u.attachmentPreviewRemove}: ${n}`,children:(0,$.jsx)(`span`,{"aria-hidden":!0,children:`×`})})]},e.id??`${e.name}-${e.size}-${e.mimeType}-${e.content?.slice(0,16)??``}`)},t[9]=u,t[10]=a,t[11]=e):e=t[11],v=n.map(e),t[5]=n,t[6]=u,t[7]=a,t[8]=v}else v=t[8];let y;t[12]!==g||t[13]!==v?(y=(0,$.jsx)(`div`,{className:g,children:v}),t[12]=g,t[13]=v,t[14]=y):y=t[14];let b=d!==null,x;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(x=()=>f(null),t[15]=x):x=t[15];let S;t[16]!==r||t[17]!==d||t[18]!==b?(S=(0,$.jsx)(ge,{open:b,attachment:d,conversationId:r,onClose:x}),t[16]=r,t[17]=d,t[18]=b,t[19]=S):S=t[19];let C;return t[20]!==y||t[21]!==S?(C=(0,$.jsxs)($.Fragment,{children:[y,S]}),t[20]=y,t[21]=S,t[22]=C):C=t[22],C}function ve(e){return e.language}function ye(e){let{chat:t,initialAttachments:n=[],onAttachmentsChange:r}=e,[a,o]=(0,Z.useState)(n),[s,c]=(0,Z.useState)(!1),u=(0,Z.useRef)(null),d=(0,Z.useRef)(a),f=(0,Z.useRef)(r);d.current=a,f.current=r;let p=(0,Z.useCallback)(e=>{let t=typeof e==`function`?e(d.current):e;d.current=t,o(t),f.current?.(t)},[]),m=(0,Z.useCallback)(()=>{p([])},[]),h=(0,Z.useCallback)(e=>{p(t=>t.filter((t,n)=>n!==e))},[]),g=(0,Z.useCallback)(()=>d.current.map(e=>({type:e.type===`voice`?`voice`:e.type||`file`,mimeType:e.mimeType,data:e.content,name:e.name,size:e.size,...e.uri?{uri:e.uri}:{},...typeof e.durationSeconds==`number`&&Number.isFinite(e.durationSeconds)&&e.durationSeconds>0?{durationSeconds:e.durationSeconds}:{}})),[]),_=(0,Z.useCallback)(async(e,n)=>{if(e.length===0)return;let r=10-d.current.length;if(r<=0){l(`warning`,t.maxAttachmentsReached,{max:10});return}let a=e.slice(0,r);e.length>a.length&&l(`warning`,t.maxAttachmentsTruncated,{max:10,dropped:e.length-a.length});let{loadAttachment:o}=await i(async()=>{let{loadAttachment:e}=await import(`./attachment-load-qjPpQzYY.js`);return{loadAttachment:e}},__vite__mapDeps([0,1])),s=(await Promise.all(a.map(async e=>{if(e.size>33554432)return l(`warning`,t.attachmentFileTooLarge,{name:e.name,maxSize:j(w)}),null;try{return await o(e,e.name)}catch{return l(`error`,t.attachmentLoadFailed,{name:e.name}),null}}))).filter(e=>e!==null).map(e=>n?{...e,type:n}:e);p(e=>[...e,...s])},[t.attachmentFileTooLarge,t.attachmentLoadFailed,t.maxAttachmentsReached,t.maxAttachmentsTruncated]);return{attachments:a,setAttachments:p,attachmentsRef:d,isDragging:s,setIsDragging:c,fileInputRef:u,processFiles:(0,Z.useCallback)(e=>_(e),[_]),processPastedText:(0,Z.useCallback)(e=>_([new File([e.text],e.name,{type:e.mimeType})],`pasted_text`),[_]),removeAttachment:h,clearAttachments:m,wireAttachmentsPayload:g}}export{re as A,G as C,U as D,oe as E,F,q as M,K as N,ne as O,I as P,R as S,ie as T,L as _,pe as a,Y as b,se as c,ue as d,le as f,H as g,W as h,he as i,B as j,J as k,ce as l,te as m,_e as n,me as o,ae as p,ge as r,Q as s,ye as t,de as u,V as v,X as w,ee as x,z as y};
2
+ 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"./preload-helper-zJ_50EbN.js";import{t as a}from"./createLucideIcon-DPHK1VkS.js";import{t as o}from"./chevron-left-DqFhpbvK.js";import{t as s}from"./chevron-right-BweFrslA.js";import{m as c,n as l,o as u,t as d}from"./use-file-preview-expanded-C5ONO7sF.js";import{t as f}from"./mic-CuUb7zc-.js";import{n as p}from"./share-link-dialog-HCHM8qnf.js";import{t as m}from"./messages-Bb2GK-Nj.js";import{t as h}from"./cn-JdwAhgNB.js";import{a as g,n as _,r as v}from"./locale-store-COVscAqC.js";import{o as y,r as b,s as x,t as S}from"./dist-BGTk37IG.js";import{r as C,t as w}from"./constants-Dy8Gw0sF.js";import{r as T}from"./tasks-DwKXgZ-I.js";import{a as E,i as D,o as O}from"./capabilities-CY4SiHcP.js";import{t as k}from"./capabilities-gjQtMhKu.js";import{n as A}from"./interaction-BdhHBbYa.js";import{r as j}from"./attachment-utils-core-BIOUBrpT.js";import{n as M}from"./electron-env-Dit0bHgy.js";import{i as N}from"./skill-wire-pattern-BPpeIcCi.js";import{a as P}from"./shares-api-c0dfWz6h.js";var F=a(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),I=a(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]);async function L(e){return T.parse(await g(v(`/api/tasks`),{method:`POST`,body:JSON.stringify(e)}))}async function R(e){return k(`xopc.tasks.get`,{id:e})}async function z(e){return g(v(`/api/tasks/${encodeURIComponent(e)}/conversation`),{method:`POST`})}async function B(e,t,n){return await g(v(`/api/tasks/${encodeURIComponent(e)}`),{method:`PATCH`,body:JSON.stringify({...t,expectedVersion:n})}),R(e)}async function V(e){await g(v(`/api/tasks/${encodeURIComponent(e)}`),{method:`DELETE`})}async function H(e,t,n,r=crypto.randomUUID()){return await g(v(`/api/tasks/${encodeURIComponent(e)}/commands`),{method:`POST`,body:JSON.stringify({idempotencyKey:r,expectedVersion:n,command:t})}),R(e)}async function U(e,t,n,r,i){return await g(v(`/api/tasks/${encodeURIComponent(e)}/criteria/${t}/review`),{method:`PUT`,body:JSON.stringify({status:n,expectedVersion:r,contractVersion:i})}),R(e)}async function W(e,t,n){return await g(v(`/api/task-runs/${encodeURIComponent(t)}/cancel`),{method:`POST`,body:JSON.stringify({expectedVersion:n,reason:`Cancelled by user`})}),R(e)}async function G(e,t,n){return await g(v(`/api/tasks/${encodeURIComponent(e)}/handoff`),{method:`POST`,body:JSON.stringify({toAgentId:t,expectedVersion:n,idempotencyKey:crypto.randomUUID()})}),R(e)}async function K(e,t,n){return await g(v(`/api/tasks/${encodeURIComponent(e)}/dependencies`),{method:`PUT`,body:JSON.stringify({dependsOnTaskIds:t,expectedVersion:n})}),R(e)}async function q(e,t,n){return await g(v(`/api/tasks/${encodeURIComponent(e)}/board-position`),{method:`PUT`,body:JSON.stringify({beforeTaskId:t,expectedVersion:n})}),R(e)}async function J(e,t,n){await g(v(`/api/task-runs/${encodeURIComponent(e)}/feedback`),{method:`POST`,headers:{"idempotency-key":crypto.randomUUID()},body:JSON.stringify({rating:t,reason:n?.trim()||void 0})})}function Y(e){return g(v(`/api/home${e?`?locale=${encodeURIComponent(e)}`:``}`)).then(O)}function X(e){return g(v(`/api/home/advisor/refresh`),{method:`POST`,body:JSON.stringify({idempotencyKey:crypto.randomUUID(),locale:e})})}function ee(){return g(v(`/api/home/advisor/history`)).then(e=>E.parse(e))}async function te(e,t){return D.parse(await g(v(`/api/home/opportunities/${encodeURIComponent(e.id)}/action`),{method:`POST`,body:JSON.stringify({idempotencyKey:crypto.randomUUID(),expectedRevision:e.revision,mode:t})}))}function ne(e,t){let n=crypto.randomUUID();return g(v(`/api/home/opportunities/${encodeURIComponent(e.id)}/feedback`),{method:`POST`,body:JSON.stringify({...t,idempotencyKey:n,expectedRevision:e.revision})}).then(()=>({ok:!0,idempotencyKey:n}))}function re(e,t){return g(v(`/api/home/opportunities/${encodeURIComponent(e)}/feedback/undo`),{method:`POST`,body:JSON.stringify({idempotencyKey:t})})}function ie(e,t){return g(v(`/api/home/decisions/respond`),{method:`POST`,body:JSON.stringify({...e,decision:t})})}function ae(e){return g(v(`/api/home/attention/acknowledge`),{method:`POST`,body:JSON.stringify(e)})}function oe(e){return g(v(`/api/home/attention/retry`),{method:`POST`,body:JSON.stringify(e)})}function se(e,t){let n=e.trim(),r=t.trim();return n&&N(n)?`/skill:${n}${r?` ${r}`:` `}`:r||null}function ce(e,t,n){let r=e.trim(),i=t?.trim()??``;if(!r&&!i)return null;let a=new URLSearchParams;return r&&a.set(`draft`,r),a.set(`autoSend`,`1`),i&&a.set(`attachmentsHandoff`,i),n?.projectScope===`none`&&a.set(`projectScope`,`none`),`/chat/new?${a.toString()}`}function le(e){let t=e.startsWith(`?`)?e.slice(1):e;if(!t)return``;let n=new URLSearchParams(t),r=new URLSearchParams,i=n.get(`skill`),a=n.get(`slash`),o=n.get(`draft`),s=n.get(`autoSend`),c=n.get(`attachmentHandoff`),l=n.get(`attachmentsHandoff`),u=n.get(`agentSetup`);i&&r.set(`skill`,i),a&&r.set(`slash`,a),o&&r.set(`draft`,o),s===`1`&&r.set(`autoSend`,`1`),c&&r.set(`attachmentHandoff`,c),l&&r.set(`attachmentsHandoff`,l),u===`1`&&r.set(`agentSetup`,`1`),n.get(`scene`)===`find-skills`&&r.set(`scene`,`find-skills`);let d=r.toString();return d?`?${d}`:``}function ue(e){let t=e.startsWith(`?`)?e.slice(1):e,n=new URLSearchParams(t),r=n.get(`projectId`)?.trim();return r?{kind:`project`,projectId:r}:n.get(`projectScope`)===`none`?{kind:`none`}:{kind:`remember-last`}}function de(e){let t=e?.trim();return t?`/chat/new?projectId=${encodeURIComponent(t)}`:`/chat/new?projectScope=none`}var fe=n(),Z=e(t(),1);function Q(){let[e,t]=(0,Z.useState)(!1),[n,r]=(0,Z.useState)(!1),[i,a]=(0,Z.useState)(null),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(null),u=(0,Z.useCallback)(e=>{t(!0),l(e),a(null),s(null)},[]),d=(0,Z.useCallback)(async e=>{if(!c||n)return null;r(!0),s(null);try{let t=await P({...c,...e});return a(t.payload),t.payload}catch(e){return s(e instanceof Error?e.message:String(e)),null}finally{r(!1)}},[n,c]),f=(0,Z.useCallback)(()=>{a(null),s(null),r(!1),l(null)},[]);return{dialogOpen:e,loading:n,result:i,error:o,pendingParams:c,createShareLink:u,confirmShareLink:d,handleOpenChange:(0,Z.useCallback)(e=>{t(e),e||f()},[f])}}function pe(){return M()&&window.electronAPI?.platform===`darwin`}function me(){return M()&&window.electronAPI?.platform===`win32`}function he(){return me()?`windows-preview-viewport`:``}var $=r();function ge({open:e,attachment:t,images:n=[],onAttachmentChange:r,authToken:i,conversationId:a,layerClassName:f=`z-[81]`,onClose:g}){let v=_(e=>e.language),w=m(v).chat,T=u({open:e,attachment:t,authToken:i,conversationId:a,language:v}),E=Q(),{expanded:D,setExpanded:O}=d(e,E.dialogOpen),[k,j]=(0,Z.useState)(!1),{preview:N,fileType:P,hasExtractedText:F}=T,I=t?n.findIndex(e=>e===t||e.id&&e.id===t.id||e.uri&&e.uri===t.uri||!e.id&&!e.uri&&e.name===t.name&&!!e.data&&e.data===t.data):-1,L=P===`image`&&n.length>1&&I>=0&&!!r,R=e=>{if(!L||E.dialogOpen)return;let t=I+(e===`previous`?-1:1);t>=0&&t<n.length&&r?.(n[t])},z=P!==`image`&&P!==`text`&&P!==`pptx`&&F,B=N?.uri?C(N.uri):null,V=!!(B||N?.uri?.startsWith(`media://`)&&(a||N.taskId)),H=()=>{!N?.uri||!V||E.createShareLink(B?{fileId:B,fileName:N.name}:{uri:N.uri,conversationId:a??void 0,taskId:N.taskId,fileName:N.name})},U=!!(N&&!T.loading&&!T.loadError),W=()=>{O(!1),g()},G=()=>{if(!N||!T.downloadBuffer)return;let e=new Blob([T.downloadBuffer],{type:T.descriptor.mimeType}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=N.name??`download`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},K=!!T.downloadBuffer,q=M()&&P===`spreadsheet`&&/\.xlsx?$/i.test(T.fileName)&&!!T.downloadBuffer&&!!window.electronAPI?.shell?.openTemporaryFile,J=async()=>{let e=T.downloadBuffer,t=window.electronAPI?.shell?.openTemporaryFile;if(!(!e||!t||k)){j(!0);try{(await t({fileName:T.fileName,data:new Uint8Array(e)})).ok||c(`warning`,w.attachmentPreviewOpenLocalFailed)}catch{c(`warning`,w.attachmentPreviewOpenLocalFailed)}finally{j(!1)}}},Y={onDownload:G,canDownload:K},X=h(`min-h-0 min-w-0 flex-1 cursor-pointer border-0 p-0`,`bg-surface-base transition-colors`,`hover:bg-surface-hover/90 dark:bg-black/60 dark:hover:bg-black/70`,A.focusRingBase);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(S,{open:e,onOpenChange:e=>!e&&W(),children:(0,$.jsx)(y,{children:(0,$.jsxs)(b,{"aria-describedby":void 0,onKeyDown:e=>{!L||E.dialogOpen||e.altKey||e.ctrlKey||e.metaKey||e.target.closest(`input, textarea, select, [contenteditable="true"]`)||(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.preventDefault(),R(e.key===`ArrowLeft`?`previous`:`next`))},className:h(`xopc-dialog-content-fullscreen fixed inset-0 flex h-[100dvh] w-full flex-row overflow-hidden`,he(),f,`border-0 bg-transparent p-0 shadow-none outline-none`),children:[(0,$.jsx)(x,{className:`sr-only`,children:N?.name??``}),(0,$.jsx)(`button`,{type:`button`,className:X,onClick:W,"aria-label":w.attachmentPreviewClose}),(0,$.jsxs)(`div`,{className:h(`flex h-full min-h-0 shrink-0 flex-col overflow-hidden`,D?`w-full`:`w-[min(100%,var(--max-width-app-main))]`,`bg-surface-panel sm:border-x sm:border-edge dark:sm:border-edge`,`shadow-float dark:shadow-elevated`),children:[(0,$.jsx)(l,{header:{expanded:D,onToggleExpanded:U?()=>O(e=>!e):void 0,onClose:W,share:V?{onClick:H,loading:E.loading}:void 0,openWithSystemApp:q?{onClick:()=>void J(),loading:k}:void 0,textView:z?{active:T.showExtractedText,onChange:e=>{T.setShowExtractedText(e),T.clearLoadError()}}:void 0},chat:T.downloadBuffer?{conversationId:a,createFile:async()=>new File([T.downloadBuffer],T.fileName,{type:T.descriptor.mimeType})}:void 0,onImageSwipe:L?R:void 0,language:v,descriptor:T.descriptor,loading:T.loading,loadError:T.loadError,textContent:T.textContent,binaryBuffer:T.binaryBuffer,showExtractedText:T.showExtractedText,extractedText:T.extractedText,extractedTextTruncated:T.extractedTextTruncated,actions:Y}),L?(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-center gap-4 border-t border-edge bg-surface-panel px-3 py-2`,children:[(0,$.jsx)(`button`,{type:`button`,"aria-label":w.attachmentPreviewPreviousImage,disabled:I===0,onClick:()=>R(`previous`),className:h(`flex size-11 touch-manipulation items-center justify-center rounded-lg hover:bg-surface-hover disabled:opacity-30`,A.focusRingBase),children:(0,$.jsx)(o,{size:20,"aria-hidden":`true`})}),(0,$.jsxs)(`span`,{role:`status`,className:`min-w-16 text-center text-sm tabular-nums text-fg-muted`,children:[I+1,` / `,n.length]}),(0,$.jsx)(`button`,{type:`button`,"aria-label":w.attachmentPreviewNextImage,disabled:I===n.length-1,onClick:()=>R(`next`),className:h(`flex size-11 touch-manipulation items-center justify-center rounded-lg hover:bg-surface-hover disabled:opacity-30`,A.focusRingBase),children:(0,$.jsx)(s,{size:20,"aria-hidden":`true`})})]}):null]}),(0,$.jsx)(`button`,{type:`button`,className:X,onClick:W,"aria-label":w.attachmentPreviewClose})]})})}),(0,$.jsx)(p,{open:E.dialogOpen,onOpenChange:E.handleOpenChange,loading:E.loading,error:E.error,result:E.result,pendingParams:E.pendingParams,onConfirm:e=>void E.confirmShareLink(e)})]})}function _e(e){let t=(0,fe.c)(23),{attachments:n,conversationId:r,topPadded:i,onRemove:a,className:o}=e,s=_(ve),c;t[0]===s?c=t[1]:(c=m(s),t[0]=s,t[1]=c);let l=c.chat,[u,d]=(0,Z.useState)(null);if(n.length===0)return null;let p=i?`pt-2`:`pt-3`,g;t[2]!==o||t[3]!==p?(g=h(`flex flex-wrap gap-2 border-b border-edge-subtle/90 bg-surface-hover/20 px-4 pb-2 dark:border-edge-subtle`,p,o),t[2]=o,t[3]=p,t[4]=g):g=t[4];let v;if(t[5]!==n||t[6]!==l||t[7]!==a){let e;t[9]!==l||t[10]!==a?(e=(e,t)=>{let n=e.type===`pasted_text`?l.pastedText:e.name;return(0,$.jsxs)(`div`,{className:`flex max-w-[200px] items-center rounded-lg bg-surface-hover text-xs dark:bg-surface-hover/80`,children:[(0,$.jsxs)(`button`,{type:`button`,className:h(`flex min-w-0 flex-1 items-center gap-1.5 rounded-l-lg py-1 pl-2 pr-1 text-left hover:bg-surface-active`,A.transition,A.press,A.focusRingPanel),onClick:()=>d(e),"aria-label":`${l.attachmentPreviewOpen}: ${n}`,title:`${l.attachmentPreviewOpen}: ${n}`,children:[e.mimeType?.startsWith(`image/`)&&e.content?(0,$.jsx)(`img`,{src:`data:${e.mimeType};base64,${e.content}`,alt:``,className:`size-6 shrink-0 rounded object-cover`}):e.type===`voice`||e.mimeType?.startsWith(`audio/`)?(0,$.jsx)(f,{className:`size-3.5 shrink-0 text-accent-fg`,"aria-hidden":!0}):e.type===`pasted_text`?(0,$.jsx)(F,{className:`size-3.5 shrink-0 text-accent-fg`,"aria-hidden":!0}):(0,$.jsx)(I,{className:`size-3.5 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:n}),(0,$.jsx)(`span`,{className:`shrink-0 text-fg-disabled`,children:j(e.size)})]}),(0,$.jsx)(`button`,{type:`button`,className:h(`flex min-h-8 min-w-8 items-center justify-center rounded-r-lg text-fg-muted hover:bg-surface-active hover:text-fg`,A.transition,A.press,A.focusRingPanel),onClick:()=>a(t),"aria-label":`${l.attachmentPreviewRemove}: ${n}`,title:`${l.attachmentPreviewRemove}: ${n}`,children:(0,$.jsx)(`span`,{"aria-hidden":!0,children:`×`})})]},e.id??`${e.name}-${e.size}-${e.mimeType}-${e.content?.slice(0,16)??``}`)},t[9]=l,t[10]=a,t[11]=e):e=t[11],v=n.map(e),t[5]=n,t[6]=l,t[7]=a,t[8]=v}else v=t[8];let y;t[12]!==g||t[13]!==v?(y=(0,$.jsx)(`div`,{className:g,children:v}),t[12]=g,t[13]=v,t[14]=y):y=t[14];let b=u!==null,x;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(x=()=>d(null),t[15]=x):x=t[15];let S;t[16]!==r||t[17]!==u||t[18]!==b?(S=(0,$.jsx)(ge,{open:b,attachment:u,conversationId:r,onClose:x}),t[16]=r,t[17]=u,t[18]=b,t[19]=S):S=t[19];let C;return t[20]!==y||t[21]!==S?(C=(0,$.jsxs)($.Fragment,{children:[y,S]}),t[20]=y,t[21]=S,t[22]=C):C=t[22],C}function ve(e){return e.language}function ye(e){let{chat:t,initialAttachments:n=[],onAttachmentsChange:r}=e,[a,o]=(0,Z.useState)(n),[s,l]=(0,Z.useState)(!1),u=(0,Z.useRef)(null),d=(0,Z.useRef)(a),f=(0,Z.useRef)(r);d.current=a,f.current=r;let p=(0,Z.useCallback)(e=>{let t=typeof e==`function`?e(d.current):e;d.current=t,o(t),f.current?.(t)},[]),m=(0,Z.useCallback)(()=>{p([])},[]),h=(0,Z.useCallback)(e=>{p(t=>t.filter((t,n)=>n!==e))},[]),g=(0,Z.useCallback)(()=>d.current.map(e=>({type:e.type===`voice`?`voice`:e.type||`file`,mimeType:e.mimeType,data:e.content,name:e.name,size:e.size,...e.uri?{uri:e.uri}:{},...typeof e.durationSeconds==`number`&&Number.isFinite(e.durationSeconds)&&e.durationSeconds>0?{durationSeconds:e.durationSeconds}:{}})),[]),_=(0,Z.useCallback)(async(e,n)=>{if(e.length===0)return;let r=10-d.current.length;if(r<=0){c(`warning`,t.maxAttachmentsReached,{max:10});return}let a=e.slice(0,r);e.length>a.length&&c(`warning`,t.maxAttachmentsTruncated,{max:10,dropped:e.length-a.length});let{loadAttachment:o}=await i(async()=>{let{loadAttachment:e}=await import(`./attachment-load-qjPpQzYY.js`);return{loadAttachment:e}},__vite__mapDeps([0,1])),s=(await Promise.all(a.map(async e=>{if(e.size>33554432)return c(`warning`,t.attachmentFileTooLarge,{name:e.name,maxSize:j(w)}),null;try{return await o(e,e.name)}catch{return c(`error`,t.attachmentLoadFailed,{name:e.name}),null}}))).filter(e=>e!==null).map(e=>n?{...e,type:n}:e);p(e=>[...e,...s])},[t.attachmentFileTooLarge,t.attachmentLoadFailed,t.maxAttachmentsReached,t.maxAttachmentsTruncated]);return{attachments:a,setAttachments:p,attachmentsRef:d,isDragging:s,setIsDragging:l,fileInputRef:u,processFiles:(0,Z.useCallback)(e=>_(e),[_]),processPastedText:(0,Z.useCallback)(e=>_([new File([e.text],e.name,{type:e.mimeType})],`pasted_text`),[_]),removeAttachment:h,clearAttachments:m,wireAttachmentsPayload:g}}export{re as A,G as C,U as D,oe as E,F,q as M,K as N,ne as O,I as P,R as S,ie as T,L as _,pe as a,Y as b,se as c,ue as d,le as f,H as g,W as h,he as i,B as j,J as k,ce as l,te as m,_e as n,me as o,ae as p,ge as r,Q as s,ye as t,de as u,V as v,X as w,ee as x,z as y};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/attachment-process-heavy-Db4nTY5N.js","assets/rolldown-runtime-aKtaBQYM.js","assets/preload-helper-zJ_50EbN.js","assets/pdf-runtime-DU_sMPjG.js","assets/source-workspace-editor-DunRD1gY.js","assets/vendor-codemirror-DFxP3B9T.js","assets/vendor-react-BOUWij0V.js","assets/code-editor-CXIH8jQw.js","assets/languages-BFe8nIOO.js","assets/binary-plugins-gFD7vH9R.js","assets/attachment-utils-core-BIOUBrpT.js","assets/use-blob-object-url-D4BFuzZB.js","assets/preview-open-alternatives-Dvey7GwU.js","assets/download-Dk-ZjtO6.js","assets/createLucideIcon-DPHK1VkS.js","assets/external-link-DjqjBmc3.js","assets/cn-JdwAhgNB.js","assets/electron-env-Dit0bHgy.js","assets/interaction-BdhHBbYa.js","assets/messages-Bb2GK-Nj.js","assets/media-plugins-C0Pc-wSY.js","assets/archive-plugin-BO3I9zRP.js","assets/jszip.min-DT31yWkU.js"])))=>i.map(i=>d[i]);
2
+ 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"./preload-helper-zJ_50EbN.js";import{f as a}from"./chunk-KS7C4IRE-BMYIfy9x.js";import{t as o}from"./createLucideIcon-DPHK1VkS.js";import{t as s}from"./check-DUBLcKHA.js";import{t as c}from"./copy-Dv6d4Dvw.js";import{t as l}from"./download-Dk-ZjtO6.js";import{t as u}from"./ellipsis-0k4rZLoy.js";import{t as d}from"./external-link-DjqjBmc3.js";import{t as f}from"./eye-CABVeTq0.js";import{A as p,k as m,t as h}from"./markdown-view-B_qnAcW2.js";import{t as g}from"./folder-open-CyzJ19I9.js";import{t as _}from"./loader-circle-CifKLtgG.js";import{t as v}from"./message-square-plus-XP0tGdlV.js";import{t as y}from"./minimize-2-DtOGrlpo.js";import{t as b}from"./pencil-DmIY3Oa-.js";import{t as x}from"./plus-Q2yW6OE7.js";import{t as S}from"./rotate-cw-LIg3Am9S.js";import{t as C}from"./search-DA7gz22f.js";import{t as w}from"./x-B_N4OPjy.js";import{t as T}from"./messages-Bb2GK-Nj.js";import{t as E}from"./cn-JdwAhgNB.js";import{i as D,n as ee,r as O}from"./locale-store-COVscAqC.js";import{r as k,t as A}from"./constants-Dy8Gw0sF.js";import{a as j}from"./session-api-yjpEz4pP.js";import{n as te}from"./interaction-BdhHBbYa.js";import{t as M}from"./activity-store-BQ3PMp2q.js";import{a as N,i as ne,n as P,r as re,s as ie,t as ae}from"./attachment-utils-core-BIOUBrpT.js";import{r as oe}from"./app-chrome-BeB4KgOf.js";import{t as F}from"./skeleton-BwbyijEw.js";import{n as se}from"./electron-env-Dit0bHgy.js";import{t as I}from"./use-async-resource-GrnWNwMZ.js";import{t as L}from"./index.module-Cd9ENXfk.js";import{a as R,c as z,d as B,m as V,n as ce,r as le,u as H}from"./workspace-api-WhbMvdBE.js";var ue=o(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),de=o(`step-forward`,[[`path`,{d:`M10.029 4.285A2 2 0 0 0 7 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z`,key:`1ystz2`}],[`path`,{d:`M3 4v16`,key:`1ph11n`}]]),U=o(`step-back`,[[`path`,{d:`M13.971 4.285A2 2 0 0 1 17 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z`,key:`19qhus`}],[`path`,{d:`M21 20V4`,key:`cb8qj8`}]]),fe=o(`text-wrap`,[[`path`,{d:`m16 16-3 3 3 3`,key:`117b85`}],[`path`,{d:`M3 12h14.5a1 1 0 0 1 0 7H13`,key:`18xa6z`}],[`path`,{d:`M3 19h6`,key:`1ygdsz`}],[`path`,{d:`M3 5h18`,key:`1u36vt`}]]),W=e(t(),1),G=n();function K(e,t,n,r){let i=n?t.replace(/\{\{(\w+)\}\}/g,(e,t)=>String(n[t]??``)):t;M({tone:e,title:i,href:r?.href,dedupeKey:`action-feedback:${e}:${i}`})}var q=5*1024*1024,J=32*1024*1024,pe=new Set(`.astro,.bat,.c,.cc,.clj,.cljs,.cljc,.cmd,.cpp,.cs,.cts,.cxx,.dart,.edn,.erl,.ex,.exs,.fish,.fs,.fsx,.go,.gql,.graphql,.groovy,.h,.hh,.hpp,.hrl,.hxx,.java,.ts,.tsx,.mts,.js,.jsx,.mjs,.cjs,.css,.scss,.sass,.less,.json,.jsonc,.json5,.yml,.yaml,.xml,.xsd,.xsl,.py,.pyw,.rb,.php,.rs,.kt,.kts,.scala,.swift,.m,.mm,.sh,.bash,.zsh,.ps1,.sql,.lua,.r,.pl,.pm,.sol,.tf,.tfvars,.nix,.proto,.vue,.svelte,.toml,.ini,.cfg,.conf,.properties`.split(`,`)),me=new Set([`.txt`,`.log`,`.lock`,`.csv`,`.tsv`,`.env`,`.gitignore`,`.gitattributes`,`.editorconfig`,`.npmrc`,`.dockerignore`,`.eslintignore`,`.prettierignore`,`.stylelintignore`]),he=new Set([`dockerfile`,`gemfile`,`jenkinsfile`,`makefile`,`procfile`,`rakefile`]),ge=new Set([`brewfile`,`changelog`,`codeowners`,`license`,`readme`]),_e=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`,`.bmp`,`.ico`,`.svg`,`.svgz`,`.tif`,`.tiff`,`.avif`,`.heic`,`.heif`,`.jxl`]),ve=new Set([`.mp3`,`.wav`,`.ogg`,`.oga`,`.aac`,`.m4a`,`.flac`,`.opus`,`.weba`]),ye=new Set([`.mp4`,`.webm`,`.mov`,`.m4v`,`.ogv`]),be=new Set([`.zip`]),xe=new Map([[`.pdf`,`application/pdf`],[`.docx`,`application/vnd.openxmlformats-officedocument.wordprocessingml.document`],[`.pptx`,`application/vnd.openxmlformats-officedocument.presentationml.presentation`],[`.xlsx`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`],[`.xls`,`application/vnd.ms-excel`],[`.md`,`text/markdown`],[`.markdown`,`text/markdown`],[`.html`,`text/html`],[`.htm`,`text/html`],[`.json`,`application/json`],[`.txt`,`text/plain`],[`.csv`,`text/csv`],[`.tsv`,`text/tab-separated-values`],[`.png`,`image/png`],[`.jpg`,`image/jpeg`],[`.jpeg`,`image/jpeg`],[`.gif`,`image/gif`],[`.webp`,`image/webp`],[`.svg`,`image/svg+xml`],[`.svgz`,`image/svg+xml`],[`.mp3`,`audio/mpeg`],[`.wav`,`audio/wav`],[`.ogg`,`audio/ogg`],[`.mp4`,`video/mp4`],[`.webm`,`video/webm`],[`.mov`,`video/quicktime`],[`.zip`,`application/zip`]]);function Se(e){let t=Y(e),n=t.lastIndexOf(`.`);return n<0||n===t.length-1?``:t.slice(n).toLowerCase()}function Y(e){let t=e.replace(/\\/g,`/`).split(`/`);return t[t.length-1]||e}function X(e,t){let n=t?.split(`;`)[0]?.trim().toLowerCase();return n&&n!==`application/octet-stream`?n:xe.get(Se(e))??n??`application/octet-stream`}function Ce(e,t){let n=Se(e),r=Y(e).toLowerCase(),i=X(e,t);return i===`text/markdown`||n===`.md`||n===`.markdown`?`markdown`:i===`text/html`||n===`.html`||n===`.htm`?`html`:i===`application/pdf`||n===`.pdf`?`pdf`:i===`application/vnd.openxmlformats-officedocument.wordprocessingml.document`||n===`.docx`?`docx`:i===`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`||i===`application/vnd.ms-excel`||n===`.xlsx`||n===`.xls`?`spreadsheet`:i===`application/vnd.openxmlformats-officedocument.presentationml.presentation`||n===`.pptx`?`pptx`:i.startsWith(`image/`)||_e.has(n)?`image`:i.startsWith(`audio/`)||ve.has(n)?`audio`:i.startsWith(`video/`)||ye.has(n)?`video`:i===`application/zip`||be.has(n)?`archive`:pe.has(n)||he.has(r)||r.startsWith(`dockerfile.`)?`code`:i.startsWith(`text/`)||me.has(n)||ge.has(r)||r.startsWith(`.env.`)||i===`application/json`?`text`:`unsupported`}function we(e){switch(e){case`text`:case`markdown`:case`code`:case`html`:return`text`;case`unsupported`:return`metadata`;default:return`binary`}}async function Te(e){let{uri:t,conversationId:n,taskId:r}=e;try{let e=k(t),i=await D(O(e?`/api/files/${encodeURIComponent(e)}/content`:ie(t,n,r)));return i.ok?{ok:!0,blob:await i.blob()}:{ok:!1,reason:`http`,status:i.status}}catch(e){return{ok:!1,reason:`network`,message:e instanceof Error?e.message:String(e)}}}async function Ee(e){let t=await Te(e);return t.ok?{ok:!0,buffer:await t.blob.arrayBuffer()}:t}function De(e){return e.id?String(e.id):`${e.name}:${e.uri??``}`}function Oe(){return{id:`__empty__`,context:`attachment`,fileName:``,mimeType:`application/octet-stream`,type:`unsupported`,source:{kind:`inline`}}}function ke(e){let t=(0,G.c)(65),{open:n,attachment:r,authToken:i,conversationId:a,language:o}=e,[s,c]=(0,W.useState)(n?r:null),[l,u]=(0,W.useState)(!1),[d,f]=(0,W.useState)(!1),p;t[0]!==r||t[1]!==n?(p=n&&r?De(r):null,t[0]=r,t[1]=n,t[2]=p):p=t[2];let m=p,h=(0,W.useRef)(m);m!==h.current&&(h.current=m,c(n&&r?r:null),u(!1),f(!1));let g=s,_;bb0:{if(!g){let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=Oe(),t[3]=e):e=t[3],_=e;break bb0}let e=g.name??`attachment`,n,r;t[4]!==e||t[5]!==g.mimeType?(n=X(e,g.mimeType),r=Ce(e,n),t[4]=e,t[5]=g.mimeType,t[6]=n,t[7]=r):(n=t[6],r=t[7]);let i=r,o=g.id?String(g.id):`${e}:${g.uri??``}`,s;t[8]!==a||t[9]!==g.uri?(s=g.uri?{kind:`media-uri`,uri:g.uri,conversationId:a}:{kind:`inline`},t[8]=a,t[9]=g.uri,t[10]=s):s=t[10];let c;t[11]!==e||t[12]!==n||t[13]!==g.size||t[14]!==o||t[15]!==s||t[16]!==i?(c={id:o,context:`attachment`,fileName:e,mimeType:n,size:g.size,type:i,source:s},t[11]=e,t[12]=n,t[13]=g.size,t[14]=o,t[15]=s,t[16]=i,t[17]=c):c=t[17],_=c}let v=_,y;t[18]===g?y=t[19]:(y=g?ne(g):void 0,t[18]=g,t[19]=y);let b=y,x=g?.uri,S;t[20]===v.type?S=t[21]:(S=we(v.type),t[20]=v.type,t[21]=S);let C=S,w=!!(n&&x&&!b&&i&&(C===`binary`||C===`text`)),E;t[22]!==a||t[23]!==o||t[24]!==x||t[25]!==g?.taskId?(E=async()=>{let e=T(o).chat,t=await Ee({uri:x,conversationId:a,taskId:g?.taskId});if(!t.ok)throw t.reason===`http`?Error(`${e.attachmentPreviewLoadError} (HTTP ${t.status})`):Error(t.message);return t.buffer},t[22]=a,t[23]=o,t[24]=x,t[25]=g?.taskId,t[26]=E):E=t[26];let D=g?.taskId,ee;t[27]!==i||t[28]!==a||t[29]!==b||t[30]!==o||t[31]!==x||t[32]!==n||t[33]!==C||t[34]!==D?(ee=[n,x,i,o,b,D,a,C],t[27]=i,t[28]=a,t[29]=b,t[30]=o,t[31]=x,t[32]=n,t[33]=C,t[34]=D,t[35]=ee):ee=t[35];let O;t[36]===w?O=t[37]:(O={enabled:w,initial:null,errorData:null},t[36]=w,t[37]=O);let k=I(E,ee,O),A;bb1:{if(b)try{let e;t[38]===b?e=t[39]:(e=P(b),t[38]=b,t[39]=e),A=e;break bb1}catch{A=null;break bb1}if(w&&k.loading){A=null;break bb1}A=k.data??null}let j=A,te=C===`binary`?j:null,M=g?.extractedText??``,N;t[40]!==j||t[41]!==M||t[42]!==o||t[43]!==C?(N=C===`text`?M||(j?new TextDecoder(`utf-8`,{fatal:!1}).decode(new Uint8Array(j)):T(o).chat.attachmentPreviewNoText):null,t[40]=j,t[41]=M,t[42]=o,t[43]=C,t[44]=N):N=t[44];let re=N,ie=!!g?.extractedText,ae=v.type===`pptx`&&M.length>3e5,oe;t[45]!==i||t[46]!==b||t[47]!==o||t[48]!==x||t[49]!==n||t[50]!==C?(oe=n&&x&&!b&&!i&&C===`binary`?T(o).chat.attachmentPreviewMissingAuth:null,t[45]=i,t[46]=b,t[47]=o,t[48]=x,t[49]=n,t[50]=C,t[51]=oe):oe=t[51];let F=oe,se=k.error?k.error instanceof Error?k.error.message:String(k.error):null,L=d?null:F??se,R=w?k.loading:!1,z;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(z=()=>f(!0),t[52]=z):z=t[52];let B=M||null,V;return t[53]!==te||t[54]!==v||t[55]!==j||t[56]!==ae||t[57]!==ie||t[58]!==L||t[59]!==g||t[60]!==l||t[61]!==R||t[62]!==B||t[63]!==re?(V={preview:g,descriptor:v,fileType:v.type,fileName:v.fileName,loading:R,loadError:L,clearLoadError:z,textContent:re,binaryBuffer:te,downloadBuffer:j,hasExtractedText:ie,extractedText:B,extractedTextTruncated:ae,showExtractedText:l,setShowExtractedText:u},t[53]=te,t[54]=v,t[55]=j,t[56]=ae,t[57]=ie,t[58]=L,t[59]=g,t[60]=l,t[61]=R,t[62]=B,t[63]=re,t[64]=V):V=t[64],V}function Ae(e){let t=(0,G.c)(12),{projectId:n,conversationId:r,agentId:i}=e,a;bb0:{let e;t[0]===n?e=t[1]:(e=n?.trim(),t[0]=n,t[1]=e);let o=e;if(o){let e;t[2]===o?e=t[3]:(e={projectId:o},t[2]=o,t[3]=e),a=e;break bb0}let s;t[4]===r?s=t[5]:(s=r?.trim(),t[4]=r,t[5]=s);let c=s;if(c){let e;t[6]===c?e=t[7]:(e={conversationId:c},t[6]=c,t[7]=e),a=e;break bb0}let l;t[8]===i?l=t[9]:(l=i?.trim(),t[8]=i,t[9]=l);let u=l,d;t[10]===u?d=t[11]:(d=u?{agentId:u}:void 0,t[10]=u,t[11]=d),a=d}return a}function je(e){return{descriptor:e,textContent:null,binaryBuffer:null,fileResourceId:null,mtimeMs:null,loadError:null,loading:!1,pptxText:null,pptxTruncated:!1,pptxError:null}}function Me(e,t){switch(t.type){case`clear`:return je(t.descriptor);case`loadStart`:return{...je(t.descriptor),loading:!0};case`loadSuccess`:return{...e,descriptor:t.payload.descriptor,textContent:t.payload.textContent??null,binaryBuffer:t.payload.binaryBuffer??null,fileResourceId:t.payload.fileResourceId??null,mtimeMs:t.payload.mtimeMs??null,loadError:null,loading:!1};case`loadError`:return{...je(t.descriptor),loadError:t.error};case`patchMtime`:return{...e,mtimeMs:t.mtimeMs};case`patchText`:return{...e,textContent:t.text};case`pptxClear`:return{...e,pptxText:null,pptxTruncated:!1,pptxError:null};case`pptxSuccess`:return{...e,pptxText:t.text,pptxTruncated:t.truncated,pptxError:null};case`pptxError`:return{...e,pptxText:null,pptxTruncated:!1,pptxError:t.error}}}function Ne(e,t){switch(t.type){case`reset`:return{sourceEditMode:!1,saveStatus:`idle`};case`source`:return{...e,sourceEditMode:typeof t.value==`function`?t.value(e.sourceEditMode):t.value};case`saveStatus`:return{...e,saveStatus:t.value}}}function Pe({filePath:e,projectId:t,conversationId:n,agentId:r}){let a=Ae({projectId:t,conversationId:n,agentId:r}),o=(0,W.useMemo)(()=>{let t=e?Y(e):``,i=X(t,N(t)),a=e?Ce(t,i):`unsupported`;return{id:e||`__empty__`,context:`workspace`,fileName:t,mimeType:i,type:a,source:{kind:`workspace`,path:e||``,conversationId:n,agentId:r}}},[r,e,n]),[s,c]=(0,W.useReducer)(Me,o,je),[l,u]=(0,W.useReducer)(Ne,{sourceEditMode:!1,saveStatus:`idle`}),[d,f]=(0,W.useState)([]),[p,m]=(0,W.useState)([]),h=(0,W.useRef)(void 0),g=(0,W.useRef)(e);g.current!==e&&(g.current=e,u({type:`reset`})),(0,W.useEffect)(()=>{if(!e){c({type:`clear`,descriptor:o});return}let t=!1;c({type:`loadStart`,descriptor:o});let n=we(o.type),r=e=>{t||c({type:`loadError`,descriptor:o,error:e instanceof Error?e.message:String(e)})};return n===`metadata`?(Promise.all([B(e,a).catch(()=>null),H(e,a).catch(()=>null)]).then(async([n,r])=>{if(!n){t||c({type:`loadSuccess`,payload:{descriptor:o,fileResourceId:r?.fileId??null,mtimeMs:typeof r?.mtimeMs==`number`?r.mtimeMs:null}});return}let i={...o,mimeType:n.mimeType,type:Ce(n.name,n.mimeType)};if(we(i.type)===`text`){let{content:r,mtimeMs:o}=await z(e,a);t||c({type:`loadSuccess`,payload:{descriptor:i,textContent:r,fileResourceId:n.id,mtimeMs:typeof o==`number`?o:n.modifiedAt}});return}t||c({type:`loadSuccess`,payload:{descriptor:i,fileResourceId:n.id,mtimeMs:n.modifiedAt}})}).catch(r),()=>{t=!0}):(n===`text`?Promise.all([z(e,a),H(e,a).catch(()=>null)]).then(([{content:e,mtimeMs:n},r])=>{t||c({type:`loadSuccess`,payload:{descriptor:o,textContent:e,fileResourceId:r?.fileId??null,mtimeMs:typeof n==`number`?n:null}})}).catch(r):Promise.all([R(e,a),H(e,a).catch(()=>null)]).then(async([e,n])=>{let r=await e.arrayBuffer();t||c({type:`loadSuccess`,payload:{descriptor:o,binaryBuffer:r,fileResourceId:n?.fileId??null,mtimeMs:typeof n?.mtimeMs==`number`?n.mtimeMs:null}})}).catch(r),()=>{t=!0})},[o,e,a]),(0,W.useEffect)(()=>{if(!s.binaryBuffer||s.descriptor.type!==`pptx`){c({type:`pptxClear`});return}let e=!1;return c({type:`pptxClear`}),i(()=>import(`./attachment-process-heavy-Db4nTY5N.js`).then(e=>e.processPptx(s.binaryBuffer,s.descriptor.fileName)),__vite__mapDeps([0,1,2,3])).then(({extractedText:t})=>{if(e)return;let n=t.length>ae;c({type:`pptxSuccess`,text:n?t.slice(0,ae):t,truncated:n})}).catch(t=>{e||c({type:`pptxError`,error:t instanceof Error?t.message:String(t)})}),()=>{e=!0}},[s.binaryBuffer,s.descriptor.fileName,s.descriptor.type]);let _=(0,W.useCallback)(async t=>{if(e){h.current!==void 0&&clearTimeout(h.current),u({type:`saveStatus`,value:`saving`});try{let{mtimeMs:n}=await V(e,t,a);typeof n==`number`&&c({type:`patchMtime`,mtimeMs:n}),u({type:`saveStatus`,value:`saved`}),h.current=setTimeout(()=>u({type:`saveStatus`,value:`idle`}),2e3)}catch{u({type:`saveStatus`,value:`error`}),h.current=setTimeout(()=>u({type:`saveStatus`,value:`idle`}),4e3)}}},[e,a]),v=L(e=>void _(e),500),y=(0,W.useCallback)(e=>{c({type:`patchText`,text:e}),v(e)},[v]);(0,W.useEffect)(()=>()=>v.cancel(),[v,e]);let b=(0,W.useCallback)(async()=>{if(!e)return;let t=Y(e);if(s.binaryBuffer){ce(t,s.binaryBuffer,s.descriptor.mimeType||`application/octet-stream`);return}if(s.textContent!=null){le(t,s.textContent);return}let n=await R(e,a);ce(t,await n.arrayBuffer(),s.descriptor.mimeType||n.type||`application/octet-stream`)},[e,s.binaryBuffer,s.descriptor.mimeType,s.textContent,a]),x=(0,W.useCallback)(async()=>{if(!e)throw Error(`No workspace file selected`);let t=Y(e),n=s.descriptor.mimeType||`application/octet-stream`,r;return r=s.binaryBuffer?new Blob([s.binaryBuffer],{type:n}):s.textContent==null?await R(e,a):new Blob([s.textContent],{type:n}),new File([r],t,{type:s.descriptor.mimeType||r.type||`application/octet-stream`,lastModified:s.mtimeMs??Date.now()})},[e,s.binaryBuffer,s.descriptor.mimeType,s.mtimeMs,s.textContent,a]),S=!s.loading&&!!e,C=se()&&(!!s.fileResourceId&&!!window.electronAPI?.shell?.openFileResource||s.descriptor.type===`spreadsheet`&&!!s.binaryBuffer&&!!window.electronAPI?.shell?.openTemporaryFile),w=se()&&!!s.fileResourceId&&!!window.electronAPI?.shell?.chooseAppAndOpenFileResource,T=(0,W.useCallback)(async()=>{let e=s.fileResourceId;if(!se()||!e||!window.electronAPI?.shell?.getOpenWithAppsForFileResource){m([]),f([]);return}try{let t=await window.electronAPI.shell.getOpenWithAppsForFileResource(e);m(t.recommended.map(e=>({name:e.name,path:e.path}))),f(t.recent.map(e=>({name:e.name,path:e.path,lastUsedAt:e.lastUsedAt})))}catch{m([]),f([])}},[s.fileResourceId]);(0,W.useEffect)(()=>{T()},[T]);let E=(0,W.useCallback)(async()=>{let e=s.fileResourceId;if(e&&window.electronAPI?.shell?.openFileResource)return window.electronAPI.shell.openFileResource(e);if(s.descriptor.type===`spreadsheet`&&s.binaryBuffer&&window.electronAPI?.shell?.openTemporaryFile)return window.electronAPI.shell.openTemporaryFile({fileName:s.descriptor.fileName,data:new Uint8Array(s.binaryBuffer)})},[s.binaryBuffer,s.descriptor.fileName,s.descriptor.type,s.fileResourceId]),D=(0,W.useCallback)(async()=>{let e=s.fileResourceId;if(!e||!window.electronAPI?.shell?.chooseAppAndOpenFileResource)return;let t=await window.electronAPI.shell.chooseAppAndOpenFileResource(e);return t.ok&&T(),t},[s.fileResourceId,T]),ee=(0,W.useCallback)(async e=>{let t=s.fileResourceId;if(!t||!e||!window.electronAPI?.shell?.openFileResourceWithApp)return;let n=await window.electronAPI.shell.openFileResourceWithApp(t,e);return n.ok&&T(),n},[s.fileResourceId,T]),O=se()&&!!s.fileResourceId&&!!window.electronAPI?.shell?.showFileResourceInFolder,k=(0,W.useCallback)(async()=>{let e=s.fileResourceId;if(e&&window.electronAPI?.shell?.showFileResourceInFolder)return window.electronAPI.shell.showFileResourceInFolder(e)},[s.fileResourceId]);return{...s,extractedText:s.descriptor.type===`pptx`?s.pptxText:null,extractedTextTruncated:s.pptxTruncated,sourceEditMode:l.sourceEditMode,setSourceEditMode:e=>u({type:`source`,value:e}),saveStatus:l.saveStatus,onSourceChange:y,onDownload:b,createAttachmentFile:x,canDownload:S,canOpenWithSystemApp:C,onOpenWithSystemApp:E,canChooseOpenWithApp:w,onChooseOpenWithApp:D,recommendedOpenWithApps:p,recentOpenWithApps:d,onOpenWithRecentApp:ee,canRevealInFolder:O,onRevealInFolder:k}}var Fe=120*1e3,Z=new Map;function Ie(){return typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function Le(e){for(let[t,n]of Z)n.expiresAt<=e&&Z.delete(t)}function Re(e,t=Date.now()){Le(t);let n=Ie();return Z.set(n,{file:e,name:e.name,type:e.type,expiresAt:t+Fe}),n}function ze(e,t=Date.now()){let n=Z.get(e);return n?n.expiresAt<=t?(Z.delete(e),null):{name:n.name,type:n.type}:null}function Be(e,t=Date.now()){let n=Z.get(e);if(!n)return null;if(n.expiresAt<=t)return Z.delete(e),null;if(!n.file)return null;let r=n.file;return n.file=null,r}var Ve=`<base href="about:srcdoc">`;function He(e){if(/<base(?:\s|>)/i.test(e))return e;let t=/<head(?:\s[^>]*)?>/i.exec(e);if(t?.index!==void 0){let n=t.index+t[0].length;return`${e.slice(0,n)}${Ve}${e.slice(n)}`}let n=/<html(?:\s[^>]*)?>/i.exec(e);if(n?.index!==void 0){let t=n.index+n[0].length;return`${e.slice(0,t)}<head>${Ve}</head>${e.slice(t)}`}let r=/^\s*<!doctype[^>]*>/i.exec(e);return r?`${r[0]}<head>${Ve}</head>${e.slice(r[0].length)}`:`<head>${Ve}</head>${e}`}var Q=r();function Ue(e){let t=(0,G.c)(8),{html:n,title:r}=e,i=(0,W.useRef)(null),a;t[0]===n?a=t[1]:(a=()=>{i.current?.contentWindow?.postMessage({type:`xopc-html-preview`,html:He(n)},`*`)},t[0]=n,t[1]=a);let o=a,s;t[2]===o?s=t[3]:(s=[o],t[2]=o,t[3]=s),(0,W.useEffect)(o,s);let c;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(c=O(`/api/preview/html`),t[4]=c):c=t[4];let l;return t[5]!==o||t[6]!==r?(l=(0,Q.jsx)(`iframe`,{ref:i,title:r,className:`min-h-0 w-full flex-1 rounded-lg border border-edge-subtle bg-white dark:border-edge dark:bg-[#1e1e1e]`,src:c,sandbox:`allow-scripts allow-popups allow-popups-to-escape-sandbox allow-downloads allow-forms allow-modals`,referrerPolicy:`no-referrer`,onLoad:o}),t[5]=o,t[6]=r,t[7]=l):l=t[7],l}var We=(0,W.lazy)(()=>i(()=>import(`./source-workspace-editor-DunRD1gY.js`).then(e=>({default:e.SourceWorkspaceEditor})),__vite__mapDeps([4,1,5,6,7,8,2])));function Ge(){let e=(0,G.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col px-4 py-3`,"aria-busy":!0,children:[(0,Q.jsx)(`div`,{className:`h-4 w-11/12 animate-pulse rounded bg-surface-hover`}),(0,Q.jsx)(`div`,{className:`mt-3 h-4 w-9/12 animate-pulse rounded bg-surface-hover`}),(0,Q.jsx)(`div`,{className:`mt-3 h-4 w-10/12 animate-pulse rounded bg-surface-hover`})]}),e[0]=t):t=e[0],t}function Ke(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(t).toLowerCase():``}function qe(e){return{".ts":`typescript`,".tsx":`tsx`,".js":`javascript`,".jsx":`jsx`,".json":`json`,".css":`css`,".yml":`yaml`,".yaml":`yaml`,".py":`python`,".go":`go`,".rs":`rust`,".sh":`bash`}[Ke(e)]??`plaintext`}function Je(e){let t=(0,G.c)(12),{text:n,targetLine:r}=e,i=(0,W.useRef)(null),a;if(t[0]!==n){let e;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=/\r\n|\n|\r/,t[2]=e):e=t[2],a=n.split(e),t[0]=n,t[1]=a}else a=t[1];let o=a,s;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{i.current?.scrollIntoView({block:`center`})},t[3]=s):s=t[3];let c;t[4]!==r||t[5]!==n?(c=[r,n],t[4]=r,t[5]=n,t[6]=c):c=t[6],(0,W.useEffect)(s,c);let l;t[7]!==o||t[8]!==r?(l=o.map((e,t)=>{let n=t+1,a=n===r;return(0,Q.jsxs)(`div`,{ref:a?i:void 0,className:a?`flex bg-accent-soft/60 text-fg`:`flex`,"data-line":n,children:[(0,Q.jsx)(`span`,{className:`w-12 shrink-0 select-none pr-3 text-right text-fg-subtle`,children:n}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 whitespace-pre-wrap break-words`,children:e||` `})]},n)}),t[7]=o,t[8]=r,t[9]=l):l=t[9];let u;return t[10]===l?u=t[11]:(u=(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto px-4 py-3`,children:(0,Q.jsx)(`div`,{className:`min-w-max font-mono text-xs leading-relaxed text-fg`,children:l})}),t[10]=l,t[11]=u),u}function Ye(e,t){let n=e.textContent??``,r=e.descriptor.context===`workspace`,i=e.workspaceEditing;return r&&i?.sourceEditMode?(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,Q.jsx)(W.Suspense,{fallback:(0,Q.jsx)(Ge,{}),children:(0,Q.jsx)(We,{fileName:e.descriptor.fileName,initialContent:n,onChange:e=>i.onSourceChange?.(e),isDark:(i.isDark??e.resolvedTheme===`dark`)===!0,lineWrap:i.sourceWordWrap===!0},e.descriptor.id)})}):t===`markdown`?(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-3`,children:(0,Q.jsx)(h,{content:n})}):t===`html`?(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden px-2 pb-2 pt-1 sm:px-4`,children:(0,Q.jsx)(Ue,{html:n,title:e.descriptor.fileName})}):e.targetLine&&e.targetLine>0?(0,Q.jsx)(Je,{text:n,targetLine:e.targetLine}):t===`code`?(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-3`,children:(0,Q.jsx)(h,{content:`\`\`\`${qe(e.descriptor.fileName)}\n${n}\n\`\`\``})}):(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-3`,children:(0,Q.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-xs text-fg`,children:n})})}function Xe(e){return Ye(e,`text`)}function Ze(e){return Ye(e,`markdown`)}function Qe(e){return Ye(e,`code`)}function $e(e){return Ye(e,`html`)}function et(){return(0,W.createElement)(`div`,{className:`px-4 py-6 text-sm text-fg-muted`},`Loading preview...`)}function $(e,t,n,r=`binary`){let i=(0,W.lazy)(n);return{id:e,readMode:r,capabilities:t,render:e=>(0,W.createElement)(W.Suspense,{fallback:et()},(0,W.createElement)(i,e))}}var tt={text:{id:`text`,readMode:`text`,capabilities:[`download`,`edit`],render:e=>(0,W.createElement)(Xe,e)},markdown:{id:`markdown`,readMode:`text`,capabilities:[`download`,`edit`],render:e=>(0,W.createElement)(Ze,e)},code:{id:`code`,readMode:`text`,capabilities:[`download`,`edit`],render:e=>(0,W.createElement)(Qe,e)},html:{id:`html`,readMode:`text`,capabilities:[`download`,`edit`],render:e=>(0,W.createElement)($e,e)},image:$(`image`,[`download`,`zoom`,`rotate`],()=>i(()=>import(`./binary-plugins-gFD7vH9R.js`).then(e=>({default:e.InteractiveImagePreview})),__vite__mapDeps([9,1,2,6,10,11,12,13,14,15,16,17,18,19]))),pdf:$(`pdf`,[`download`,`zoom`,`rotate`,`pageNavigation`,`print`],()=>i(()=>import(`./binary-plugins-gFD7vH9R.js`).then(e=>({default:e.PdfPreviewPluginView})),__vite__mapDeps([9,1,2,6,10,11,12,13,14,15,16,17,18,19]))),docx:$(`docx`,[`download`],()=>i(()=>import(`./binary-plugins-gFD7vH9R.js`).then(e=>({default:e.DocxPreviewPluginView})),__vite__mapDeps([9,1,2,6,10,11,12,13,14,15,16,17,18,19]))),spreadsheet:$(`spreadsheet`,[`download`],()=>i(()=>import(`./binary-plugins-gFD7vH9R.js`).then(e=>({default:e.SpreadsheetPreviewPluginView})),__vite__mapDeps([9,1,2,6,10,11,12,13,14,15,16,17,18,19]))),pptx:$(`pptx`,[`download`],()=>i(()=>import(`./binary-plugins-gFD7vH9R.js`).then(e=>({default:e.PptxPreviewPluginView})),__vite__mapDeps([9,1,2,6,10,11,12,13,14,15,16,17,18,19]))),audio:$(`audio`,[`download`],()=>i(()=>import(`./media-plugins-C0Pc-wSY.js`).then(e=>({default:e.AudioPreviewPluginView})),__vite__mapDeps([20,1,6,10,11,12,13,14,15,16,17,18,19]))),video:$(`video`,[`download`],()=>i(()=>import(`./media-plugins-C0Pc-wSY.js`).then(e=>({default:e.VideoPreviewPluginView})),__vite__mapDeps([20,1,6,10,11,12,13,14,15,16,17,18,19]))),archive:$(`archive`,[`download`],()=>i(()=>import(`./archive-plugin-BO3I9zRP.js`).then(e=>({default:e.ArchivePreviewPluginView})),__vite__mapDeps([21,1,6,22,12,13,14,15,16,17,18,19]))),unsupported:$(`unsupported`,[`download`],()=>i(()=>import(`./media-plugins-C0Pc-wSY.js`).then(e=>({default:e.UnsupportedPreviewPluginView})),__vite__mapDeps([20,1,6,10,11,12,13,14,15,16,17,18,19])),`metadata`)};function nt(e){return tt[e]??tt.unsupported}function rt(e){let t=(0,G.c)(63),{plugin:n,controls:r,onZoomIn:i,onZoomOut:a,onZoomReset:o,onRotate:s,onSearchChange:c}=e,l;t[0]===n.capabilities?l=t[1]:(l=n.capabilities.includes(`zoom`),t[0]=n.capabilities,t[1]=l);let u=l,d;t[2]===n.capabilities?d=t[3]:(d=n.capabilities.includes(`search`),t[2]=n.capabilities,t[3]=d);let f=d,p;t[4]===n.capabilities?p=t[5]:(p=n.capabilities.includes(`rotate`),t[4]=n.capabilities,t[5]=p);let h=p,g;t[6]!==r||t[7]!==n.capabilities?(g=n.capabilities.includes(`pageNavigation`)&&r.pageCount!=null&&r.pageCount>1,t[6]=r,t[7]=n.capabilities,t[8]=g):g=t[8];let _=g;if(!(u||f||h||_))return null;let v;if(t[9]!==_||t[10]!==h||t[11]!==f||t[12]!==u||t[13]!==r||t[14]!==s||t[15]!==c||t[16]!==i||t[17]!==a||t[18]!==o){let e=[];if(_){let n=r.page<=1,i;t[20]===r?i=t[21]:(i=()=>r.setPage(Math.max(1,r.page-1)),t[20]=r,t[21]=i);let a;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Q.jsx)(U,{className:`size-3.5`}),t[22]=a):a=t[22];let o;t[23]!==n||t[24]!==i?(o=(0,Q.jsx)(it,{label:`Previous page`,disabled:n,onClick:i,children:a}),t[23]=n,t[24]=i,t[25]=o):o=t[25];let s;t[26]!==r.page||t[27]!==r.pageCount?(s=(0,Q.jsxs)(`span`,{className:`min-w-16 px-1 text-center text-xs text-fg-muted`,children:[r.page,` / `,r.pageCount]}),t[26]=r.page,t[27]=r.pageCount,t[28]=s):s=t[28];let c=r.page>=(r.pageCount??1),l;t[29]===r?l=t[30]:(l=()=>r.setPage(Math.min(r.pageCount??r.page,r.page+1)),t[29]=r,t[30]=l);let u;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Q.jsx)(de,{className:`size-3.5`}),t[31]=u):u=t[31];let d;t[32]!==c||t[33]!==l?(d=(0,Q.jsx)(it,{label:`Next page`,disabled:c,onClick:l,children:u}),t[32]=c,t[33]=l,t[34]=d):d=t[34];let f;t[35]!==s||t[36]!==d||t[37]!==o?(f=(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-edge-subtle bg-surface-base p-0.5 dark:border-edge`,children:[o,s,d]},`page`),t[35]=s,t[36]=d,t[37]=o,t[38]=f):f=t[38],e.push(f)}if(u){let n;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Q.jsx)(m,{className:`size-3.5`}),t[39]=n):n=t[39];let s;t[40]===a?s=t[41]:(s=(0,Q.jsx)(it,{label:`Zoom out`,onClick:a,children:n}),t[40]=a,t[41]=s);let c;t[42]===r.zoom?c=t[43]:(c=Math.round(r.zoom*100),t[42]=r.zoom,t[43]=c);let l;t[44]!==o||t[45]!==c?(l=(0,Q.jsxs)(`button`,{type:`button`,className:`min-w-14 rounded px-1.5 py-1 text-xs text-fg-muted hover:bg-surface-hover hover:text-fg`,onClick:o,title:`Reset zoom`,children:[c,`%`]}),t[44]=o,t[45]=c,t[46]=l):l=t[46];let u;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Q.jsx)(x,{className:`size-3.5`}),t[47]=u):u=t[47];let d;t[48]===i?d=t[49]:(d=(0,Q.jsx)(it,{label:`Zoom in`,onClick:i,children:u}),t[48]=i,t[49]=d);let f;t[50]!==d||t[51]!==s||t[52]!==l?(f=(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-edge-subtle bg-surface-base p-0.5 dark:border-edge`,children:[s,l,d]},`zoom`),t[50]=d,t[51]=s,t[52]=l,t[53]=f):f=t[53],e.push(f)}if(h){let n;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Q.jsx)(S,{className:`size-3.5`}),t[54]=n):n=t[54];let r;t[55]===s?r=t[56]:(r=(0,Q.jsx)(it,{label:`Rotate`,onClick:s,children:n},`rotate`),t[55]=s,t[56]=r),e.push(r)}if(f){let n;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Q.jsx)(C,{className:`size-3.5`,"aria-hidden":!0}),t[57]=n):n=t[57];let i;t[58]===c?i=t[59]:(i=e=>c(e.target.value),t[58]=c,t[59]=i);let a;t[60]!==r.searchQuery||t[61]!==i?(a=(0,Q.jsxs)(`label`,{className:`flex min-w-40 items-center gap-1 rounded-md border border-edge-subtle bg-surface-base px-2 py-1 text-xs text-fg-muted dark:border-edge`,children:[n,(0,Q.jsx)(`input`,{className:`min-w-0 flex-1 bg-transparent text-fg outline-none placeholder:text-fg-subtle`,value:r.searchQuery,onChange:i,placeholder:`Search`})]},`search`),t[60]=r.searchQuery,t[61]=i,t[62]=a):a=t[62],e.push(a)}v=(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center gap-1`,children:e}),t[9]=_,t[10]=h,t[11]=f,t[12]=u,t[13]=r,t[14]=s,t[15]=c,t[16]=i,t[17]=a,t[18]=o,t[19]=v}else v=t[19];return v}function it(e){let t=(0,G.c)(6),{label:n,disabled:r,onClick:i,children:a}=e,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=E(`inline-flex size-9 shrink-0 items-center justify-center rounded-md text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg disabled:opacity-40`),t[0]=o):o=t[0];let s;return t[1]!==a||t[2]!==r||t[3]!==n||t[4]!==i?(s=(0,Q.jsx)(`button`,{type:`button`,className:o,title:n,"aria-label":n,disabled:r,onClick:i,children:a}),t[1]=a,t[2]=r,t[3]=n,t[4]=i,t[5]=s):s=t[5],s}function at(e){let t=(0,G.c)(22),n;t[0]===e.type?n=t[1]:(n=nt(e.type),t[0]=e.type,t[1]=n);let r=n,[i,a]=(0,W.useState)(1),[o,s]=(0,W.useState)(0),[c,l]=(0,W.useState)(1),[u,d]=(0,W.useState)(null),[f,p]=(0,W.useState)(``),m;t[2]===u?m=t[3]:(m=e=>{l(Math.max(1,Math.min(u??e,Math.floor(e))))},t[2]=u,t[3]=m);let h=m,g;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(g=()=>{a(1),s(0),l(1),d(null),p(``)},t[4]=g):g=t[4];let _;t[5]!==e.id||t[6]!==e.type?(_=[e.id,e.type],t[5]=e.id,t[6]=e.type,t[7]=_):_=t[7],(0,W.useEffect)(g,_);let v;t[8]!==c||t[9]!==u||t[10]!==o||t[11]!==f||t[12]!==h||t[13]!==i?(v={zoom:i,rotation:o,page:c,pageCount:u,searchQuery:f,setPageCount:d,setPage:h},t[8]=c,t[9]=u,t[10]=o,t[11]=f,t[12]=h,t[13]=i,t[14]=v):v=t[14];let y=v,b,x,S,C;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(b=()=>a(ct),x=()=>a(st),S=()=>{a(1),s(0)},C=()=>s(ot),t[15]=b,t[16]=x,t[17]=S,t[18]=C):(b=t[15],x=t[16],S=t[17],C=t[18]);let w;return t[19]!==y||t[20]!==r?(w={plugin:r,controls:y,onZoomIn:b,onZoomOut:x,onZoomReset:S,onRotate:C,onSearchChange:p},t[19]=y,t[20]=r,t[21]=w):w=t[21],w}function ot(e){return(e+90)%360}function st(e){return Math.max(.25,Number((e-.15).toFixed(2)))}function ct(e){return Math.min(4,Number((e+.15).toFixed(2)))}function lt(e){let t=(0,G.c)(8),{controller:n}=e,r;return t[0]!==n.controls||t[1]!==n.onRotate||t[2]!==n.onSearchChange||t[3]!==n.onZoomIn||t[4]!==n.onZoomOut||t[5]!==n.onZoomReset||t[6]!==n.plugin?(r=(0,Q.jsx)(rt,{plugin:n.plugin,controls:n.controls,onZoomIn:n.onZoomIn,onZoomOut:n.onZoomOut,onZoomReset:n.onZoomReset,onRotate:n.onRotate,onSearchChange:n.onSearchChange}),t[0]=n.controls,t[1]=n.onRotate,t[2]=n.onSearchChange,t[3]=n.onZoomIn,t[4]=n.onZoomOut,t[5]=n.onZoomReset,t[6]=n.plugin,t[7]=r):r=t[7],r}function ut(e){let t=(0,G.c)(14),n;t[0]===e.language?n=t[1]:(n=T(e.language),t[0]=e.language,t[1]=n);let r=n,{controller:i}=e;if(e.loading){let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 px-4 py-6`,"aria-busy":`true`,children:[(0,Q.jsx)(F,{className:`h-5 w-48 max-w-full`}),(0,Q.jsx)(F,{className:`h-4 w-full`}),(0,Q.jsx)(F,{className:`h-4 w-11/12`}),(0,Q.jsx)(F,{className:`h-4 w-3/4`}),(0,Q.jsx)(F,{className:`mt-3 min-h-48 flex-1 rounded-lg`})]}),t[2]=e):e=t[2],e}if(e.loadError){let n=(e.descriptor.context===`workspace`?r.workspace.loadError:r.chat.attachmentPreviewLoadError)+`: `+e.loadError,i;return t[3]===n?i=t[4]:(i=(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 overflow-auto p-4`,children:(0,Q.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:n})}),t[3]=n,t[4]=i),i}if(e.descriptor.context===`attachment`&&e.showExtractedText&&e.descriptor.type!==`image`){let n=e.extractedText||r.chat.attachmentPreviewNoText,i;return t[5]===n?i=t[6]:(i=(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2 overflow-hidden`,children:(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-lg border border-edge-subtle bg-surface-hover/40 p-4 dark:border-edge`,children:(0,Q.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-fg-muted`,children:n})})}),t[5]=n,t[6]=i),i}let a=`${e.descriptor.id}:${i.plugin.id}`,o;t[7]!==i.controls||t[8]!==e?(o={...e,controls:i.controls},t[7]=i.controls,t[8]=e,t[9]=o):o=t[9];let s;return t[10]!==i.plugin.render||t[11]!==a||t[12]!==o?(s=(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:(0,Q.jsx)(dt,{pluginRender:i.plugin.render,props:o},a)}),t[10]=i.plugin.render,t[11]=a,t[12]=o,t[13]=s):s=t[13],s}function dt(e){let t=(0,G.c)(5),{pluginRender:n,props:r}=e,i;t[0]!==n||t[1]!==r?(i=n(r),t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===i?a=t[4]:(a=(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:i}),t[3]=i,t[4]=a),a}function ft(e){let t=(0,G.c)(9),{label:n,active:r,disabled:i,onClick:a,children:o}=e,s=r&&`bg-surface-active text-fg`,c;t[0]===s?c=t[1]:(c=E(`inline-flex size-9 shrink-0 items-center justify-center rounded-md text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg disabled:cursor-not-allowed disabled:opacity-40`,s,te.focusRingPanel),t[0]=s,t[1]=c);let l;return t[2]!==r||t[3]!==o||t[4]!==i||t[5]!==n||t[6]!==a||t[7]!==c?(l=(0,Q.jsx)(`button`,{type:`button`,className:c,title:n,"aria-label":n,"aria-pressed":r,disabled:i,onClick:a,children:o}),t[2]=r,t[3]=o,t[4]=i,t[5]=n,t[6]=a,t[7]=c,t[8]=l):l=t[8],l}function pt(e){let t=(0,G.c)(9),{icon:n,label:r,disabled:i,onClick:a}=e,o;t[0]===n?o=t[1]:(o=(0,Q.jsx)(`span`,{className:`flex size-4 shrink-0 items-center justify-center text-fg-muted`,children:n}),t[0]=n,t[1]=o);let s;t[2]===r?s=t[3]:(s=(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:r}),t[2]=r,t[3]=s);let c;return t[4]!==i||t[5]!==a||t[6]!==o||t[7]!==s?(c=(0,Q.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`flex h-9 w-full min-w-0 items-center gap-2.5 rounded-md px-2.5 text-left text-sm text-fg hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:cursor-not-allowed disabled:opacity-40`,disabled:i,onClick:a,children:[o,s]}),t[4]=i,t[5]=a,t[6]=o,t[7]=s,t[8]=c):c=t[8],c}function mt(e){let t=(0,G.c)(36),{name:n,subtitle:r,controller:i,actions:a,expanded:o,onToggleExpanded:m,onClose:h,edit:x,wordWrap:S,editInNewChat:C,share:D,openWithSystemApp:O,chooseApp:k,recommendedApps:A,recentApps:j,onOpenWithApp:M,onRevealInFolder:N,copyPath:ne,textView:P,openInBrowser:re}=e,ie=A===void 0?[]:A,ae=j===void 0?[]:j,F=T(ee(_t)),I=F.workspace,L=i.plugin.id===`pdf`?F.chat.attachmentPreviewPdf:i.plugin.id===`docx`?F.chat.attachmentPreviewDocument:i.plugin.id===`spreadsheet`?F.chat.attachmentPreviewSpreadsheet:I.preview,R=se(),[z,B]=(0,W.useState)(!1),V;t[0]===i.plugin.capabilities?V=t[1]:(V=i.plugin.capabilities.some(gt),t[0]=i.plugin.capabilities,t[1]=V);let ce=V,le,H;t[2]===z?(le=t[3],H=t[4]):(le=()=>{if(!z)return;let e=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),B(!1))};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},H=[z],t[2]=z,t[3]=le,t[4]=H),(0,W.useEffect)(le,H);let de;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(de=e=>{B(!1),e()},t[5]=de):de=t[5];let U=de,K;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(K=E(`shrink-0 bg-surface-hover/20 px-3 py-2 sm:px-4`,oe),t[6]=K):K=t[6];let q;t[7]===n?q=t[8]:(q=(0,Q.jsx)(`h2`,{className:`truncate text-base font-semibold leading-tight tracking-tight text-fg`,title:n,children:n}),t[7]=n,t[8]=q);let J;t[9]===r?J=t[10]:(J=r?(0,Q.jsx)(`div`,{className:`mt-0.5 flex min-w-0 items-center gap-2 text-xs leading-tight text-fg-muted`,children:r}):null,t[9]=r,t[10]=J);let pe;t[11]!==q||t[12]!==J?(pe=(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 py-0.5`,children:[q,J]}),t[11]=q,t[12]=J,t[13]=pe):pe=t[13];let me;t[14]===o?me=t[15]:(me=o?(0,Q.jsx)(y,{className:`size-4`,strokeWidth:1.75}):(0,Q.jsx)(p,{className:`size-4`,strokeWidth:1.75}),t[14]=o,t[15]=me);let he;t[16]===C?.loading?he=t[17]:(he=C?.loading?(0,Q.jsx)(_,{className:`size-4 animate-spin`}):(0,Q.jsx)(v,{className:`size-4`}),t[16]=C?.loading,t[17]=he);let ge;t[18]===D?.loading?ge=t[19]:(ge=D?.loading?(0,Q.jsx)(_,{className:`size-4 animate-spin`}):(0,Q.jsx)(ue,{className:`size-4`}),t[18]=D?.loading,t[19]=ge);let _e;t[20]===z?_e=t[21]:(_e=z?(0,Q.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-40 cursor-default bg-transparent`,"aria-hidden":!0,tabIndex:-1,onPointerDown:e=>{e.preventDefault(),B(!1)}}):null,t[20]=z,t[21]=_e);let ve;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(ve=E(`inline-flex size-9 shrink-0 items-center justify-center rounded-md text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg`,te.focusRingPanel),t[22]=ve):ve=t[22];let ye,be;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(ye=()=>B(ht),be=(0,Q.jsx)(u,{className:`size-4`}),t[23]=ye,t[24]=be):(ye=t[23],be=t[24]);let xe;t[25]===Symbol.for(`react.memo_cache_sentinel`)?(xe=(0,Q.jsx)(`div`,{className:`mx-0.5 h-5 w-px bg-edge-subtle`,"aria-hidden":!0}),t[25]=xe):xe=t[25];let Se;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(Se=(0,Q.jsx)(w,{className:`size-4`,strokeWidth:1.75}),t[26]=Se):Se=t[26];let Y;t[27]!==I.close||t[28]!==h?(Y=(0,Q.jsx)(ft,{label:I.close,onClick:h,children:Se}),t[27]=I.close,t[28]=h,t[29]=Y):Y=t[29];let X;return t[30]!==i||t[31]!==ce||t[32]!==F||t[33]!==L||t[34]!==P?(X=ce||P?(0,Q.jsxs)(`div`,{className:`mt-2 flex items-center gap-2 overflow-x-auto pb-0.5`,children:[P?(0,Q.jsx)(`div`,{className:`mr-2 flex shrink-0 rounded-lg bg-surface-hover p-0.5`,role:`group`,"aria-label":F.chat.attachmentPreviewText,children:[{active:!1,label:L},{active:!0,label:F.chat.attachmentPreviewText}].map(e=>(0,Q.jsx)(`button`,{type:`button`,"aria-pressed":P.active===e.active,className:E(`rounded-md px-2.5 py-1 text-xs font-medium`,P.active===e.active?`bg-surface-hover text-fg`:`text-fg-muted hover:text-fg`),onClick:()=>P.onChange(e.active),children:e.label},e.label))}):null,ce?(0,Q.jsx)(lt,{controller:i}):null]}):null,t[30]=i,t[31]=ce,t[32]=F,t[33]=L,t[34]=P,t[35]=X):X=t[35],(0,Q.jsxs)(`div`,{className:K,children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-start gap-2`,children:[pe,(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[i.plugin.capabilities.includes(`edit`)?(0,Q.jsx)(ft,{label:x?.active?I.preview:I.edit,active:x?.active??!1,disabled:!x,onClick:x?.onToggle,children:x?.active?(0,Q.jsx)(f,{className:`size-4`}):(0,Q.jsx)(b,{className:`size-4`})}):null,S?(0,Q.jsx)(ft,{label:I.wordWrap,active:S.active,onClick:S.onToggle,children:(0,Q.jsx)(fe,{className:`size-4`})}):null,(0,Q.jsx)(ft,{label:o?I.collapsePreview:I.expandPreview,active:o,disabled:!m,onClick:m,children:me}),(0,Q.jsx)(ft,{label:I.editInNewChat,disabled:!C||C.disabled||C.loading,onClick:C?.onClick,children:he}),(0,Q.jsx)(ft,{label:I.shareLink,disabled:!D||D.disabled||D.loading,onClick:D?.onClick,children:ge}),(0,Q.jsxs)(`div`,{className:`relative shrink-0`,children:[_e,(0,Q.jsx)(`button`,{type:`button`,className:ve,title:I.moreActions,"aria-label":I.moreActions,"aria-haspopup":`menu`,"aria-expanded":z,onClick:ye,children:be}),z?(0,Q.jsxs)(`div`,{role:`menu`,"data-file-preview-menu":!0,className:`absolute right-0 top-full z-50 mt-1 w-60 rounded-lg border border-edge bg-surface-panel p-1 shadow-popover`,children:[re?(0,Q.jsxs)(`a`,{href:re.href,target:`_blank`,rel:`noopener noreferrer`,role:`menuitem`,className:`flex h-9 w-full items-center gap-2.5 rounded-md px-2.5 text-sm text-fg hover:bg-surface-hover`,onClick:()=>B(!1),children:[(0,Q.jsx)(d,{className:`size-4 text-fg-muted`,"aria-hidden":!0}),I.openInBrowser]}):null,O?(0,Q.jsx)(pt,{icon:(0,Q.jsx)(d,{className:`size-4`}),label:I.openSystemApp,disabled:O.disabled||O.loading,onClick:()=>U(O.onClick)}):null,k?(0,Q.jsx)(pt,{icon:(0,Q.jsx)(u,{className:`size-4`}),label:I.chooseApp,disabled:k.disabled,onClick:()=>U(k.onClick)}):null,M?[{label:I.recommendedApps,apps:ie},{label:I.recentApps,apps:ae}].map(e=>{let{label:t,apps:n}=e;return n.length>0?(0,Q.jsxs)(`div`,{className:`mt-1 border-t border-edge-subtle pt-1 dark:border-edge`,children:[(0,Q.jsx)(`p`,{className:`px-3 pb-1 pt-0.5 text-[11px] font-medium uppercase tracking-normal text-fg-subtle`,children:t}),n.map(e=>(0,Q.jsx)(`button`,{type:`button`,role:`menuitem`,className:`flex h-9 w-full min-w-0 items-center rounded-md px-2.5 text-left text-sm text-fg hover:bg-surface-hover`,title:e.path,onClick:()=>U(()=>M(e.path)),children:(0,Q.jsx)(`span`,{className:`block truncate`,children:e.name})},e.path))]},t):null}):null,N?(0,Q.jsx)(pt,{icon:(0,Q.jsx)(g,{className:`size-4`}),label:I.revealInFolder,onClick:()=>U(N)}):null,O||k||N?(0,Q.jsx)(`div`,{className:`my-1 border-t border-edge-subtle dark:border-edge`}):null,(0,Q.jsx)(pt,{icon:(0,Q.jsx)(l,{className:`size-4`}),label:R?I.saveCopy:I.download,disabled:!a.canDownload,onClick:()=>U(()=>void a.onDownload())}),ne?(0,Q.jsx)(pt,{icon:ne.copied?(0,Q.jsx)(s,{className:`size-4 text-emerald-500`}):(0,Q.jsx)(c,{className:`size-4`}),label:ne.copied?I.pathCopied:R?I.copyFilePath:I.copyWorkspacePath,onClick:()=>U(ne.onClick)}):null]}):null]}),xe,Y]})]}),X]})}function ht(e){return!e}function gt(e){return[`zoom`,`search`,`rotate`,`pageNavigation`].includes(e)}function _t(e){return e.language}function vt({header:e,chat:t,...n}){let r=at(n.descriptor),i=a(),o=T(n.language),[s,c]=(0,W.useState)(!1),l=async()=>{if(!(!t||s)){c(!0);try{let[n,r]=await Promise.all([t.createFile(),t.conversationId?j(t.conversationId).catch(()=>null):Promise.resolve(null)]);if(n.size>33554432){K(`warning`,o.chat.attachmentFileTooLarge,{name:n.name,maxSize:re(A)});return}let a=new URLSearchParams({attachmentHandoff:Re(n)}),s=t.projectId?.trim()||r?.projectId?.trim(),c=t.agentId?.trim()||r?.routing?.agentId?.trim();s&&a.set(`projectId`,s),i({pathname:`/chat/new`,search:`?${a}`},{state:{forceNewChat:!0,agentId:c||void 0}}),e.onClose()}catch{K(`error`,o.workspace.editInNewChatFailed)}finally{c(!1)}}};return(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-surface-panel`,children:[(0,Q.jsx)(mt,{...e,name:n.descriptor.fileName,controller:r,actions:n.actions,editInNewChat:t?{onClick:()=>void l(),loading:s,disabled:n.loading||!!n.loadError||t.disabled}:void 0},n.descriptor.id),(0,Q.jsx)(ut,{...n,controller:r})]})}function yt(e,t){let n=(0,G.c)(7),r=e===void 0?!0:e,i=t===void 0?!1:t,[a,o]=(0,W.useState)(!1);!r&&a&&o(!1);let s,c;n[0]!==r||n[1]!==i||n[2]!==a?(s=()=>{if(!r||!a)return;let e=document.body.style.overflow;document.body.style.overflow=`hidden`;let t=e=>{i||e.key!==`Escape`||e.defaultPrevented||document.querySelector(`[data-file-preview-menu]`)||(e.preventDefault(),e.stopImmediatePropagation(),o(!1))};return window.addEventListener(`keydown`,t,!0),()=>{document.body.style.overflow=e,window.removeEventListener(`keydown`,t,!0)}},c=[r,a,i],n[0]=r,n[1]=i,n[2]=a,n[3]=s,n[4]=c):(s=n[3],c=n[4]),(0,W.useEffect)(s,c);let l;return n[5]===a?l=n[6]:(l={expanded:a,setExpanded:o},n[5]=a,n[6]=l),l}export{de as _,Pe as a,J as c,Y as d,X as f,U as g,fe as h,Be as i,q as l,K as m,vt as n,ke as o,we as p,ze as r,Te as s,yt as t,Ce as u,ue as v};
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{g as i,t as a,u as o}from"./chunk-KS7C4IRE-BMYIfy9x.js";import{t as s}from"./bot-DjLkhyZL.js";import{t as c}from"./check-DUBLcKHA.js";import{t as l}from"./chevron-right-BweFrslA.js";import{n as u,r as d,t as f}from"./popover-select-BgSdSbCL.js";import{t as p}from"./circle-alert-BEjgurr2.js";import{t as m}from"./circle-check-C23XjkUj.js";import{t as h}from"./clock-3-DnrAnuyZ.js";import{t as g}from"./download-Dk-ZjtO6.js";import{t as _}from"./ellipsis-0k4rZLoy.js";import{t as v}from"./folder-open-CyzJ19I9.js";import{t as y}from"./git-branch-Dh9uxTot.js";import{t as b}from"./loader-circle-CifKLtgG.js";import{t as x}from"./pencil-DmIY3Oa-.js";import{t as S}from"./plus-Q2yW6OE7.js";import{t as C}from"./search-DA7gz22f.js";import{t as w}from"./sparkles-DHlfQFAF.js";import{t as T}from"./x-B_N4OPjy.js";import{t as ee}from"./cn-JdwAhgNB.js";import{n as E}from"./locale-store-COVscAqC.js";import{a as D,c as O,i as te,n as k,o as A,r as j,s as M,t as N}from"./dist-BGTk37IG.js";import{i as P}from"./vendor-swr-BIWyz7Rc.js";import{t as F}from"./button-CS04eWY9.js";import{r as I}from"./app-chrome-BeB4KgOf.js";import{t as L}from"./skeleton-BwbyijEw.js";import{t as R}from"./loopi-Djb8XU3l.js";import{$ as z,Cc as B,Co as V,Dc as H,Ec as U,Fn as W,Gs as G,Ho as K,In as ne,Ln as re,Mc as ie,Ms as ae,Pn as oe,Po as se,W as q,_s as ce,ac as le,at as J,bs as Y,ct as ue,do as de,dt as fe,ea as pe,et as me,ft as he,ho as ge,hs as _e,it as ve,jo as ye,lc as be,lo as xe,lt as Se,ms as Ce,mt as we,nt as Te,oc as Ee,ot as De,ps as Oe,pt as ke,rt as Ae,st as je,tc as Me,tt as Ne,uo as Pe,ut as Fe,wc as Ie,zn as Le}from"./index-FCEE325-.js";import{t as Re}from"./page-tabs-D2xpUV26.js";import{t as ze}from"./date-picker-NfGIPSYY.js";var X=e(t(),1),Z=n(),Q=r();function Be(e){let t=(0,Z.c)(15),{sourceId:n,disabled:r}=e,i=r===void 0?!1:r,a=E(Ue)===`zh`,{sources:o,starting:s,start:c}=q(),l;t[0]!==n||t[1]!==o?(l=n?o.filter(e=>e.grantId===n):o,t[0]=n,t[1]=o,t[2]=l):l=t[2];let u=l,d;t[3]===u?d=t[4]:(d=u.some(He),t[3]=u,t[4]=d);let f=d,p=n&&u.some(Ve),m=f?a?`更新中`:`Updating`:p?a?`重试`:`Retry`:n?a?`更新理解`:`Update understanding`:a?`更新全部`:`Update all`,h=i||s||f,g;t[5]!==n||t[6]!==c?(g=()=>void c(n),t[5]=n,t[6]=c,t[7]=g):g=t[7];let _;t[8]===f?_=t[9]:(_=f?(0,Q.jsx)(b,{className:`size-3.5 animate-spin motion-reduce:animate-none`}):(0,Q.jsx)(K,{className:`size-3.5`}),t[8]=f,t[9]=_);let v;return t[10]!==m||t[11]!==h||t[12]!==g||t[13]!==_?(v=(0,Q.jsxs)(F,{variant:`ghost`,className:`h-8 shrink-0 gap-1.5 px-2 text-xs`,disabled:h,onClick:g,children:[_,m]}),t[10]=m,t[11]=h,t[12]=g,t[13]=_,t[14]=v):v=t[14],v}function Ve(e){return e.status===`failed`||e.status===`partial`||e.status===`canceled`}function He(e){return e.status===`queued`||e.status===`running`}function Ue(e){return e.language}function We(e){let t=(0,Z.c)(22),{sourceId:n,lastCollectedAt:r}=e,i=E(Ge),a=i===`zh`,o;t[0]===n?o=t[1]:(o=e=>e.sources.find(e=>e.grantId===n),t[0]=n,t[1]=o);let s=q(o);if(!s){let e;t[2]!==i||t[3]!==r||t[4]!==a?(e=r?`${a?`上次更新:`:`Last updated: `}${new Date(r).toLocaleString(i)}`:a?`尚未分析`:`Not analyzed yet`,t[2]=i,t[3]=r,t[4]=a,t[5]=e):e=t[5];let n;return t[6]===e?n=t[7]:(n=(0,Q.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:e}),t[6]=e,t[7]=n),n}let c;t[8]===a?c=t[9]:(c=a?{queued:`等待更新`,waiting_desktop:`等待桌面端读取资料`,reading:`正在读取资料`,analyzing:`正在更新理解`}:{queued:`Queued`,waiting_desktop:`Waiting for desktop collection`,reading:`Reading source`,analyzing:`Updating understanding`},t[8]=a,t[9]=c);let l=c,u=s.status===`running`||s.status===`queued`,d=s.status===`failed`||s.status===`partial`||s.status===`canceled`,f=s.metadata.added,p=u?l[s.metadata.phase??`queued`]??l.queued:d?a?`更新未完成,可重试`:`Update incomplete; retry available`:f===0?a?`更新完成,暂无新增理解`:`Updated; no new understanding`:f===void 0?a?`更新完成`:`Updated`:a?`更新完成,新增 ${f} 条`:`Updated; ${f} added`,m;t[10]===p?m=t[11]:(m=(0,Q.jsx)(`p`,{children:p}),t[10]=p,t[11]=m);let h;t[12]!==i||t[13]!==s.completedAt?(h=s.completedAt?(0,Q.jsx)(`p`,{children:new Date(s.completedAt).toLocaleString(i)}):null,t[12]=i,t[13]=s.completedAt,t[14]=h):h=t[14];let g;t[15]!==d||t[16]!==s.errorMessage?(g=d&&s.errorMessage?(0,Q.jsx)(`p`,{className:`text-danger`,children:s.errorMessage}):null,t[15]=d,t[16]=s.errorMessage,t[17]=g):g=t[17];let _;return t[18]!==m||t[19]!==h||t[20]!==g?(_=(0,Q.jsxs)(`div`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,"aria-live":`polite`,children:[m,h,g]}),t[18]=m,t[19]=h,t[20]=g,t[21]=_):_=t[21],_}function Ge(e){return e.language}function Ke(e){let t=(0,Z.c)(64),{language:n,busy:r,statement:i,scope:a,onEdit:o,onDelete:c,onScopeChange:l}=e,[u,d]=(0,X.useState)(!1),[f,p]=(0,X.useState)(!1),m=n===`zh`,h=m?`修改或删除这条内容`:`Edit or delete this item`,g;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,Q.jsx)(_,{className:`size-4`,"aria-hidden":`true`}),t[0]=g):g=t[0];let v;t[1]!==r||t[2]!==h?(v=(0,Q.jsx)(Le,{asChild:!0,children:(0,Q.jsx)(F,{variant:`ghost`,className:`size-11 shrink-0 p-0`,disabled:r,"aria-label":h,children:g})}),t[1]=r,t[2]=h,t[3]=v):v=t[3];let y;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,Q.jsx)(x,{className:`size-4`,"aria-hidden":`true`}),t[4]=y):y=t[4];let b=m?`修改`:`Edit`,S;t[5]!==r||t[6]!==o||t[7]!==b?(S=(0,Q.jsxs)(W,{className:`flex min-h-11 cursor-pointer items-center gap-2 rounded-lg px-3 text-sm text-fg outline-none focus:bg-surface-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,disabled:r,onSelect:o,children:[y,b]}),t[5]=r,t[6]=o,t[7]=b,t[8]=S):S=t[8];let C;t[9]!==r||t[10]!==l||t[11]!==a||t[12]!==m?(C=a&&l?(0,Q.jsxs)(W,{className:`flex min-h-11 cursor-pointer items-center gap-2 rounded-lg px-3 text-sm text-fg outline-none focus:bg-surface-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,disabled:r,onSelect:()=>p(!0),children:[(0,Q.jsx)(ye,{className:`size-4`,"aria-hidden":`true`}),m?`作用范围`:`Where it applies`]}):null,t[9]=r,t[10]=l,t[11]=a,t[12]=m,t[13]=C):C=t[13];let w,T;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(w=()=>d(!0),T=(0,Q.jsx)(ge,{className:`size-4`,"aria-hidden":`true`}),t[14]=w,t[15]=T):(w=t[14],T=t[15]);let ee=m?`删除`:`Delete`,E;t[16]!==r||t[17]!==ee?(E=(0,Q.jsxs)(W,{className:`flex min-h-11 cursor-pointer items-center gap-2 rounded-lg px-3 text-sm text-fg outline-none focus:bg-surface-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,disabled:r,onSelect:w,children:[T,ee]}),t[16]=r,t[17]=ee,t[18]=E):E=t[18];let O;t[19]!==E||t[20]!==S||t[21]!==C?(O=(0,Q.jsx)(ne,{children:(0,Q.jsxs)(oe,{align:`end`,sideOffset:4,className:`z-[100] min-w-36 rounded-xl border border-edge bg-surface-overlay p-1 shadow-popover`,children:[S,C,E]})}),t[19]=E,t[20]=S,t[21]=C,t[22]=O):O=t[22];let P;t[23]!==O||t[24]!==v?(P=(0,Q.jsxs)(re,{modal:!1,children:[v,O]}),t[23]=O,t[24]=v,t[25]=P):P=t[25];let I;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,Q.jsx)(D,{className:`fixed inset-0 z-[110] bg-scrim`}),t[26]=I):I=t[26];let L=m?`删除这条内容?`:`Delete this item?`,R;t[27]===L?R=t[28]:(R=(0,Q.jsx)(M,{className:`font-semibold text-fg`,children:L}),t[27]=L,t[28]=R);let z=m?`删除后将不再使用这条记忆,原始对话和文件会保留。`:`This memory will no longer be used. Original conversations and files are kept.`,B;t[29]===z?B=t[30]:(B=(0,Q.jsx)(te,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:z}),t[29]=z,t[30]=B);let V;t[31]!==R||t[32]!==B?(V=(0,Q.jsxs)(`header`,{className:`shrink-0 border-b border-edge px-5 py-4`,children:[R,B]}),t[31]=R,t[32]=B,t[33]=V):V=t[33];let H;t[34]===i?H=t[35]:(H=(0,Q.jsx)(`p`,{className:`min-h-0 flex-1 overflow-y-auto whitespace-pre-wrap break-words px-5 py-4 text-sm leading-6 text-fg`,children:i}),t[34]=i,t[35]=H);let U=m?`取消`:`Cancel`,G;t[36]===U?G=t[37]:(G=(0,Q.jsx)(k,{asChild:!0,children:(0,Q.jsx)(F,{variant:`ghost`,children:U})}),t[36]=U,t[37]=G);let K;t[38]===c?K=t[39]:(K=()=>{d(!1),c()},t[38]=c,t[39]=K);let ie=m?`删除`:`Delete`,ae;t[40]!==r||t[41]!==K||t[42]!==ie?(ae=(0,Q.jsx)(F,{disabled:r,onClick:K,children:ie}),t[40]=r,t[41]=K,t[42]=ie,t[43]=ae):ae=t[43];let se;t[44]!==G||t[45]!==ae?(se=(0,Q.jsxs)(`footer`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-5 py-3`,children:[G,ae]}),t[44]=G,t[45]=ae,t[46]=se):se=t[46];let q;t[47]!==V||t[48]!==H||t[49]!==se?(q=(0,Q.jsxs)(A,{children:[I,(0,Q.jsxs)(j,{className:`fixed left-1/2 top-1/2 z-[120] flex h-[min(22rem,calc(100dvh-2rem))] w-[min(28rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-overlay shadow-popover`,children:[V,H,se]})]}),t[47]=V,t[48]=H,t[49]=se,t[50]=q):q=t[50];let ce;t[51]!==u||t[52]!==P||t[53]!==q?(ce=(0,Q.jsxs)(N,{open:u,onOpenChange:d,children:[P,q]}),t[51]=u,t[52]=P,t[53]=q,t[54]=ce):ce=t[54];let J;t[55]!==r||t[56]!==l||t[57]!==a||t[58]!==f||t[59]!==m?(J=a&&l?(0,Q.jsx)(N,{open:f,onOpenChange:p,children:(0,Q.jsxs)(A,{children:[(0,Q.jsx)(D,{className:`fixed inset-0 z-[110] bg-scrim`}),(0,Q.jsxs)(j,{className:`fixed left-1/2 top-1/2 z-[120] flex h-[min(25rem,calc(100dvh-2rem))] w-[min(28rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-overlay shadow-popover`,children:[(0,Q.jsxs)(`header`,{className:`shrink-0 border-b border-edge px-5 py-4`,children:[(0,Q.jsx)(M,{className:`font-semibold text-fg`,children:m?`这条记忆在哪里生效?`:`Where should this memory apply?`}),(0,Q.jsx)(te,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:m?`你可以让它用于所有协作,或只用于当前助手。`:`Use it across all work, or keep it only for this assistant.`})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto p-4`,children:[{value:{type:`global`},icon:le,title:m?`所有协作`:`All work`,detail:m?`任何助手和对话都可按需使用`:`Available when relevant in any assistant or conversation`},{value:{type:`agent`,id:a.type===`agent`?a.id??`main`:`main`},icon:s,title:m?`仅当前助手`:`This assistant only`,detail:m?`不会分享给其他助手`:`Not shared with other assistants`}].map(e=>{let{value:t,icon:n,title:i,detail:o}=e,s=a.type===t.type&&(a.id??``)===(t.id??``);return(0,Q.jsxs)(`button`,{type:`button`,className:`flex min-h-20 w-full items-center gap-3 rounded-xl px-4 py-3 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent ${s?`bg-surface-active`:`hover:bg-surface-hover`}`,disabled:r,onClick:()=>{p(!1),l(t)},children:[(0,Q.jsx)(n,{className:`size-5 shrink-0 text-fg-muted`,"aria-hidden":`true`}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:i}),(0,Q.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:o})]}),s?(0,Q.jsx)(`span`,{className:`text-xs font-medium text-accent-fg`,children:m?`当前`:`Current`}):null]},t.type)})}),(0,Q.jsx)(`footer`,{className:`flex shrink-0 justify-end border-t border-edge px-5 py-3`,children:(0,Q.jsx)(k,{asChild:!0,children:(0,Q.jsx)(F,{variant:`ghost`,children:m?`取消`:`Cancel`})})})]})]})}):null,t[55]=r,t[56]=l,t[57]=a,t[58]=f,t[59]=m,t[60]=J):J=t[60];let Y;return t[61]!==ce||t[62]!==J?(Y=(0,Q.jsxs)(Q.Fragment,{children:[ce,J]}),t[61]=ce,t[62]=J,t[63]=Y):Y=t[63],Y}function qe(e,t){return e?new Intl.DateTimeFormat(t===`zh`?`zh-CN`:`en`,{dateStyle:`medium`}).format(e):null}function Je(e,t,n=new Date){let r=new Date(n.getFullYear(),n.getMonth(),n.getDate()),i=new Date(r);i.setDate(r.getDate()-1);let a=new Map;for(let n of[...e].sort((e,t)=>t.recordedAt-e.recordedAt)){let e=n.recordedAt>=r.getTime()?t===`zh`?`今天`:`Today`:n.recordedAt>=i.getTime()?t===`zh`?`昨天`:`Yesterday`:qe(n.recordedAt,t)??(t===`zh`?`更早`:`Earlier`),o=a.get(e)??[];o.push(n),a.set(e,o)}return[...a].map(([e,t])=>({label:e,items:t}))}function Ye(e,t){return(t===`zh`?{user_explicit:`你告诉我的`,user_observed:`从协作中观察到`,system_inferred:`我形成的判断`,external_untrusted:`来自连接的信息`}:{user_explicit:`You told me`,user_observed:`Observed while working together`,system_inferred:`My current read`,external_untrusted:`From connected information`})[e.authority]}function Xe(e,t){if(e.validTo){let n=qe(e.validTo,t);return t===`zh`?`适用至 ${n}`:`Applies until ${n}`}return(t===`zh`?{stable:`相对稳定`,slow:`会随时间复核`,dynamic:`近期状态`,event:`特定阶段`}:{stable:`Relatively stable`,slow:`Reviewed over time`,dynamic:`Current context`,event:`Specific period`})[e.volatility]}function Ze(e,t){return e.authority===`user_explicit`?null:e.confidence>=.85?t===`zh`?`把握较高`:`High confidence`:e.confidence>=.65?t===`zh`?`把握中等`:`Medium confidence`:t===`zh`?`证据较少`:`Limited evidence`}function Qe(e,t){return(t===`zh`?{global:`所有协作`,agent:`当前智能体`,workspace:`当前工作区`,project:`当前项目`,session:`当前会话`}:{global:`All work`,agent:`This agent`,workspace:`This workspace`,project:`This project`,session:`This conversation`})[e.type]}function $e(e){let t=(0,Z.c)(24),{item:n,language:r,busy:i,editing:a,draft:o,onDraftChange:s,onEdit:c,onCancel:l,onDelete:u,onCorrect:d,onScopeChange:f}=e,p=(0,X.useId)(),m=r===`zh`,h;t[0]!==n||t[1]!==r?(h=Ze(n,r),t[0]=n,t[1]=r,t[2]=h):h=t[2];let g=h,_;t[3]===n.sources?_=t[4]:(_=new Set(n.sources?.map(tt).filter(Boolean)),t[3]=n.sources,t[4]=_);let v;t[5]===_?v=t[6]:(v=[..._],t[5]=_,t[6]=v);let y=v,b=m?`修改`:`Edit`,x;return t[7]!==i||t[8]!==g||t[9]!==o||t[10]!==b||t[11]!==a||t[12]!==p||t[13]!==n||t[14]!==r||t[15]!==l||t[16]!==d||t[17]!==u||t[18]!==s||t[19]!==c||t[20]!==f||t[21]!==y||t[22]!==m?(x=(0,Q.jsx)(`article`,{className:`border-t border-edge-subtle px-4 py-3 first:border-t-0 sm:px-5 [content-visibility:auto] [contain-intrinsic-size:auto_100px]`,children:a?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-medium text-fg`,htmlFor:p,children:m?`修改这条理解`:`Edit this understanding`}),(0,Q.jsx)(`textarea`,{id:p,value:o,disabled:i,onChange:e=>s(e.target.value),className:`mt-2 min-h-28 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2.5 text-base leading-7 text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/20`}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Q.jsx)(F,{variant:`ghost`,disabled:i,onClick:l,children:m?`取消`:`Cancel`}),(0,Q.jsx)(F,{variant:`primary`,disabled:!o.trim()||i,onClick:d,children:i?m?`保存中…`:`Saving…`:m?`保存修改`:`Save changes`})]})]}):(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 sm:gap-4`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 pt-1.5`,children:[(0,Q.jsx)(`p`,{className:`whitespace-pre-wrap break-words text-base leading-7 text-fg`,children:n.statement}),(0,Q.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs leading-5 text-fg-muted`,children:[(0,Q.jsx)(`span`,{children:Ye(n,r)}),n.usable===!1?(0,Q.jsx)(`span`,{children:m?`暂不使用`:`Not in use`}):null,n.validTo?(0,Q.jsx)(`span`,{children:Xe(n,r)}):null,n.authority!==`user_explicit`&&n.confidence<.65?(0,Q.jsx)(`span`,{children:g}):null,(0,Q.jsxs)(`details`,{className:`open:basis-full`,children:[(0,Q.jsx)(`summary`,{className:`w-fit cursor-pointer rounded-md py-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:m?`查看依据`:`View sources`}),(0,Q.jsxs)(`div`,{className:`my-2 space-y-1 border-l-2 border-edge pl-3 text-sm leading-6`,children:[(0,Q.jsx)(`p`,{children:n.usable?m?`按需用于当前协作`:`Used when relevant`:m?`暂不使用,后台继续复核`:`Not in use; reviewed automatically`}),(0,Q.jsxs)(`p`,{children:[Xe(n,r),` · `,Qe(n.scope,r),g?` · ${g}`:``]}),(0,Q.jsxs)(`p`,{children:[m?`最近观察:`:`Last observed: `,qe(n.observedAt,r)]}),(0,Q.jsxs)(`p`,{children:[m?`模型层:`:`Model layer: `,m?{fact:`事实`,pattern:`模式`,interpretation:`解释`}[n.layer]:n.layer,` · `,m?`${n.independentSourceCount} 个独立来源`:`${n.independentSourceCount} independent sources`]}),y.length?y.map(et):(0,Q.jsx)(`p`,{children:m?`暂无更详细的来源记录`:`No further source details available`}),(0,Q.jsx)(F,{variant:`ghost`,className:`-ml-2 px-2`,disabled:i,onClick:c,children:b})]})]})]})]}),(0,Q.jsx)(Ke,{language:r,busy:i,statement:n.statement,scope:n.scope,onEdit:c,onDelete:u,onScopeChange:f})]})}),t[7]=i,t[8]=g,t[9]=o,t[10]=b,t[11]=a,t[12]=p,t[13]=n,t[14]=r,t[15]=l,t[16]=d,t[17]=u,t[18]=s,t[19]=c,t[20]=f,t[21]=y,t[22]=m,t[23]=x):x=t[23],x}function et(e){return(0,Q.jsx)(`p`,{className:`break-words`,children:e},e)}function tt(e){return e.label}var nt={zh:{eyebrow:`全局用户理解`,title:`xopc 如何形成对你的理解`,subtitle:`这里汇总跨项目、跨对话形成的认识,并说明它们来自哪些渠道。项目事实不会混入你的个人画像。`,channels:`理解渠道`,channelHint:`查看来源及其最近更新。`,noChannels:`尚未通过任何渠道形成可展示的全局理解。`,activeCount:`{{count}} 条已在使用`,pendingCount:`{{count}} 条暂不使用`,noUnderstanding:`暂无来自此渠道的全局理解`,pending:`最近更新`,pendingHint:`自动整理并按需使用,你可以随时修改或删除。`,nothingPending:`尚未形成全局理解。`,showAll:`查看全部 {{count}} 条`,showLess:`收起`,done:`完成`,updating:`正在从已授权渠道更新理解;你可以先查看已有内容。`,sourceKinds:{user:`你明确告诉我的`,conversation:`对话与协作`,connector:`连接的服务`,work_folder:`工作目录`,local_source:`本机来源`,inference:`综合整理`}},en:{eyebrow:`Global user understanding`,title:`How xopc forms its understanding of you`,subtitle:`This brings together understanding formed across projects and conversations, with the channel behind each item. Project facts stay out of your personal portrait.`,channels:`Understanding channels`,channelHint:`View sources and their latest updates.`,noChannels:`No channel has formed displayable global understanding yet.`,activeCount:`{{count}} in use`,pendingCount:`{{count}} not in use`,noUnderstanding:`No usable global understanding has formed from this channel yet`,pending:`Recent updates`,pendingHint:`Organized automatically and used when relevant. Edit or delete anytime.`,nothingPending:`No understanding has formed yet.`,showAll:`View all {{count}}`,showLess:`Show less`,done:`Done`,updating:`Updating from authorized channels. You can review existing understanding now.`,sourceKinds:{user:`You told me`,conversation:`Conversations and work`,connector:`Connected services`,work_folder:`Work folders`,local_source:`On-device sources`,inference:`Synthesized understanding`}}},rt={"local-recent-files":{en:`Recent files`,zh:`最近文件`},"chromium-bookmarks":{en:`Recent bookmarks`,zh:`最近书签`},"apple-notes":{en:`Apple Notes`,zh:`Apple 备忘录`},"apple-mail":{en:`Apple Mail`,zh:`Apple 邮件`},"apple-calendar":{en:`Apple Calendar`,zh:`Apple 日历`},"apple-reminders":{en:`Apple Reminders`,zh:`Apple 提醒事项`},"windows-recent-documents":{en:`Recent documents`,zh:`最近文档`},"linux-recent-documents":{en:`Recent documents`,zh:`最近文档`}},it={user:xe,conversation:Oe,connector:Ee,work_folder:v,local_source:Me,inference:Ee},$={files:v,recent_documents:Me,calendar:Ie,tasks:Y,notes:V,mail:_e,messages:Oe,code_activity:y};function at(e){let t=e.authority===`user_explicit`?`user`:e.authority===`user_observed`?`conversation`:e.authority===`external_untrusted`?`connector`:`inference`;return{id:t,kind:t,observedAt:e.observedAt}}function ot(e,t){return e.kind===`local_source`&&e.label?rt[e.label]?.[t]??e.label:e.kind===`work_folder`&&e.label?t===`zh`?`工作目录 · ${e.label}`:`Work folder · ${e.label}`:e.label?e.label:nt[t].sourceKinds[e.kind]}function st(e){return`${e.kind}:${e.adapterId}:${e.displayName}`}function ct(e){let t=(0,Z.c)(91),{assertions:n,configuredSources:r,activityRunning:i,language:a,busy:o,error:s,onReviewAssertion:l,onCompleted:u}=e,d=nt[a],[f,p]=(0,X.useState)(!1),[h,g]=(0,X.useState)(null),[_,v]=(0,X.useState)(``),y;t[0]===n?y=t[1]:(y=n.filter(ht),t[0]=n,t[1]=y);let x=y,S;t[2]===x?S=t[3]:(S=[...x].sort(mt),t[2]=x,t[3]=S);let C=S,w;if(t[4]!==r||t[5]!==x||t[6]!==a){let e=new Map;for(let t of r){let n=t.kind===`local_source`?rt[t.adapterId]?.[a]??t.displayName:t.displayName,r=st(t);e.set(r,{key:r,grantId:t.id,kind:t.kind,category:t.category,label:t.kind===`work_folder`?a===`zh`?`工作目录 · ${n}`:`Work folder · ${n}`:n,assertions:[],lastObservedAt:t.lastCollectedAt})}for(let t of x)for(let n of t.sources?.length?t.sources:[at(t)]){let r=ot(n,a),i=[...e.values()].find(e=>e.kind===n.kind&&e.label===r),o=i?.key??`${n.kind}:${r}`,s=i??e.get(o)??{key:o,kind:n.kind,category:n.category,label:r,assertions:[],lastObservedAt:n.observedAt};s.assertions.some(e=>e.id===t.id)||s.assertions.push(t),s.lastObservedAt=Math.max(s.lastObservedAt??0,n.observedAt),e.set(o,s)}w=[...e.values()].sort(pt),t[4]=r,t[5]=x,t[6]=a,t[7]=w}else w=t[7];let T=w,E;t[8]===l?E=t[9]:(E=async(e,t,n)=>{await l(e,t,n)&&g(null)},t[8]=l,t[9]=E);let D=E,O,te,k,A,j,M,N,P,I;if(t[10]!==i||t[11]!==o||t[12]!==_||t[13]!==h||t[14]!==a||t[15]!==C||t[16]!==D||t[17]!==f||t[18]!==d.eyebrow||t[19]!==d.nothingPending||t[20]!==d.pending||t[21]!==d.pendingHint||t[22]!==d.showAll||t[23]!==d.showLess||t[24]!==d.subtitle||t[25]!==d.title||t[26]!==d.updating){let e=f?C:C.slice(0,5);O=`mx-auto w-full max-w-[42rem] pb-2`,te=`polite`;let n;t[36]===d.eyebrow?n=t[37]:(n=(0,Q.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.18em] text-accent-fg`,children:d.eyebrow}),t[36]=d.eyebrow,t[37]=n);let r;t[38]===d.title?r=t[39]:(r=(0,Q.jsx)(`h2`,{className:`mt-3 text-2xl font-semibold tracking-tight text-fg sm:text-3xl`,children:d.title}),t[38]=d.title,t[39]=r);let s;t[40]===d.subtitle?s=t[41]:(s=(0,Q.jsx)(`p`,{className:`mx-auto mt-3 max-w-[38rem] text-sm leading-6 text-fg-muted`,children:d.subtitle}),t[40]=d.subtitle,t[41]=s),t[42]!==n||t[43]!==r||t[44]!==s?(k=(0,Q.jsxs)(`div`,{className:`text-center`,children:[n,r,s]}),t[42]=n,t[43]=r,t[44]=s,t[45]=k):k=t[45],t[46]!==i||t[47]!==d.updating?(A=i?(0,Q.jsxs)(`div`,{className:`mt-6 flex items-center gap-3 rounded-xl border border-accent/20 bg-accent-soft/55 px-4 py-3 text-sm text-accent-fg`,children:[(0,Q.jsx)(b,{className:`size-4 shrink-0 animate-spin motion-reduce:animate-none`}),(0,Q.jsx)(`p`,{children:d.updating})]}):null,t[46]=i,t[47]=d.updating,t[48]=A):A=t[48],j=`mt-8`,M=`understanding-updates-title`;let c=C.length?` · ${C.length}`:``;t[49]!==d.pending||t[50]!==c?(N=(0,Q.jsxs)(`h3`,{id:`understanding-updates-title`,className:`text-sm font-semibold text-fg`,children:[d.pending,c]}),t[49]=d.pending,t[50]=c,t[51]=N):N=t[51],t[52]===d.pendingHint?P=t[53]:(P=(0,Q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:d.pendingHint}),t[52]=d.pendingHint,t[53]=P),I=C.length?(0,Q.jsxs)(`div`,{className:`mt-3`,children:[Je(e,a).map(e=>{let{label:t,items:n}=e;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h4`,{className:`border-b border-edge-subtle px-4 pb-2 pt-3 text-xs font-medium text-fg-muted`,children:t}),(0,Q.jsx)(`div`,{children:n.map(e=>(0,Q.jsx)($e,{item:e,language:a,busy:o,editing:h===e.id,draft:_,onDraftChange:v,onEdit:()=>{g(e.id),v(e.statement)},onCancel:()=>g(null),onCorrect:()=>void D(e,`edited`,_.trim()),onDelete:()=>void D(e,`deleted`)},e.id))})]},t)}),C.length>5?(0,Q.jsxs)(`button`,{type:`button`,className:`mx-auto flex items-center gap-1.5 px-3 py-2 text-xs font-medium text-accent-fg hover:underline`,onClick:()=>p(ft),children:[f?d.showLess:d.showAll.replace(`{{count}}`,String(C.length)),(0,Q.jsx)(B,{className:ee(`size-3.5 transition-transform`,f&&`rotate-180`)})]}):null]}):(0,Q.jsxs)(`div`,{className:`mt-3 flex items-start gap-3 rounded-xl border border-edge bg-surface-base/55 p-4`,children:[(0,Q.jsx)(m,{className:`mt-0.5 size-5 shrink-0 text-success`}),(0,Q.jsx)(`p`,{className:`text-sm leading-6 text-fg-muted`,children:d.nothingPending})]}),t[10]=i,t[11]=o,t[12]=_,t[13]=h,t[14]=a,t[15]=C,t[16]=D,t[17]=f,t[18]=d.eyebrow,t[19]=d.nothingPending,t[20]=d.pending,t[21]=d.pendingHint,t[22]=d.showAll,t[23]=d.showLess,t[24]=d.subtitle,t[25]=d.title,t[26]=d.updating,t[27]=O,t[28]=te,t[29]=k,t[30]=A,t[31]=j,t[32]=M,t[33]=N,t[34]=P,t[35]=I}else O=t[27],te=t[28],k=t[29],A=t[30],j=t[31],M=t[32],N=t[33],P=t[34],I=t[35];let L;t[54]!==j||t[55]!==M||t[56]!==N||t[57]!==P||t[58]!==I?(L=(0,Q.jsxs)(`section`,{className:j,"aria-labelledby":M,children:[N,P,I]}),t[54]=j,t[55]=M,t[56]=N,t[57]=P,t[58]=I,t[59]=L):L=t[59];let R;t[60]!==T.length||t[61]!==d.channels?(R=(0,Q.jsxs)(`summary`,{className:`w-fit cursor-pointer rounded-md py-2 text-sm font-medium text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[d.channels,` · `,T.length]}),t[60]=T.length,t[61]=d.channels,t[62]=R):R=t[62];let z;t[63]===d.channelHint?z=t[64]:(z=(0,Q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:d.channelHint}),t[63]=d.channelHint,t[64]=z);let V;t[65]!==T||t[66]!==d.activeCount||t[67]!==d.noChannels||t[68]!==d.noUnderstanding||t[69]!==d.pendingCount?(V=T.length?(0,Q.jsx)(`div`,{className:`mt-3 space-y-3`,children:T.map(e=>{let t=e.category?$[e.category]??it[e.kind]:it[e.kind],n=e.assertions.filter(dt).length,r=e.assertions.filter(ut).length;return(0,Q.jsxs)(`article`,{className:`rounded-xl border border-edge bg-surface-base/55 px-4 py-4`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Q.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-xl bg-surface-hover text-fg-muted`,children:(0,Q.jsx)(t,{className:`size-4`})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`h4`,{className:`truncate text-sm font-medium text-fg`,children:e.label}),e.grantId?(0,Q.jsx)(We,{sourceId:e.grantId,lastCollectedAt:e.lastObservedAt}):null,e.assertions.length?(0,Q.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:[n?d.activeCount.replace(`{{count}}`,String(n)):``,r?d.pendingCount.replace(`{{count}}`,String(r)):``].filter(Boolean).join(` · `)}):(0,Q.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:d.noUnderstanding})]}),e.grantId?(0,Q.jsx)(Be,{sourceId:e.grantId}):null]}),e.assertions.length?(0,Q.jsx)(`ul`,{className:`ml-12 mt-3 space-y-2 border-t border-edge-subtle pt-3 text-xs leading-5 text-fg-muted`,children:e.assertions.slice(0,5).map(lt)}):null]},e.key)})}):(0,Q.jsx)(`p`,{className:`mt-3 rounded-xl border border-edge bg-surface-base/55 p-4 text-sm text-fg-muted`,children:d.noChannels}),t[65]=T,t[66]=d.activeCount,t[67]=d.noChannels,t[68]=d.noUnderstanding,t[69]=d.pendingCount,t[70]=V):V=t[70];let H;t[71]!==R||t[72]!==z||t[73]!==V?(H=(0,Q.jsxs)(`details`,{className:`mt-6 border-t border-edge pt-4`,children:[R,z,V]}),t[71]=R,t[72]=z,t[73]=V,t[74]=H):H=t[74];let U;t[75]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,Q.jsx)(c,{className:`size-4`}),t[75]=U):U=t[75];let W;t[76]!==o||t[77]!==u||t[78]!==d.done?(W=(0,Q.jsx)(`div`,{className:`mt-6 flex justify-end`,children:(0,Q.jsxs)(F,{variant:`primary`,disabled:o,onClick:u,children:[U,d.done]})}),t[76]=o,t[77]=u,t[78]=d.done,t[79]=W):W=t[79];let G;t[80]===s?G=t[81]:(G=s?(0,Q.jsx)(`p`,{className:`mt-5 text-sm text-danger`,role:`alert`,children:s}):null,t[80]=s,t[81]=G);let K;return t[82]!==O||t[83]!==te||t[84]!==k||t[85]!==A||t[86]!==L||t[87]!==H||t[88]!==W||t[89]!==G?(K=(0,Q.jsxs)(`section`,{className:O,"aria-live":te,children:[k,A,L,H,W,G]}),t[82]=O,t[83]=te,t[84]=k,t[85]=A,t[86]=L,t[87]=H,t[88]=W,t[89]=G,t[90]=K):K=t[90],K}function lt(e){return(0,Q.jsxs)(`li`,{className:`flex gap-2`,children:[(0,Q.jsx)(`span`,{className:`mt-2 size-1 shrink-0 rounded-full bg-accent/60`}),(0,Q.jsx)(`span`,{children:e.statement})]},e.id)}function ut(e){return!e.usable}function dt(e){return e.usable}function ft(e){return!e}function pt(e,t){return t.assertions.length-e.assertions.length||(t.lastObservedAt??0)-(e.lastObservedAt??0)}function mt(e,t){return t.recordedAt-e.recordedAt}function ht(e){return e.scope.type===`global`&&e.status!==`archived`&&e.status!==`rejected`}function gt(){let{pathname:e,search:t}=o(),n=E(e=>e.language),r=z(),[i,a]=(0,X.useState)(!1),[s,c]=(0,X.useState)(null),l=e===`/user-model`,{data:u,mutate:d}=P(l?`/api/user-model`:null,je),f=q(e=>e.error),p=q(e=>e.sources.some(e=>e.status===`running`||e.status===`queued`)),m=n===`zh`;if((0,X.useEffect)(()=>{l&&new URLSearchParams(t).get(`workDiscovery`)===`review`&&z.getState().setDrawerOpen(!0)},[l,t]),(0,X.useEffect)(()=>{l&&r.status!==`running`&&d()},[d,l,r.directoryRun?.id,r.status]),!l)return null;let h=r.status===`running`||p,g=async(e,t,n)=>{a(!0),c(null);try{return t===`edited`&&n?await me(e.id,n):t===`deleted`&&await Ae(e.id),await d(),!0}catch(e){return c(e instanceof Error?e.message:String(e)),!1}finally{a(!1)}},_=e=>{if(!e&&u&&r.status!==`running`){r.finish();return}r.setDrawerOpen(e)};return(0,Q.jsxs)(N,{open:r.drawerOpen,onOpenChange:_,children:[(0,Q.jsx)(O,{asChild:!0,children:(0,Q.jsx)(F,{type:`button`,variant:`ghost`,className:ee(`relative size-8 rounded-xl p-0`,I),title:m?`查看 xopc 对你的理解`:`Review what xopc understands`,"aria-label":m?`查看 xopc 对你的理解`:`Review what xopc understands`,children:h?(0,Q.jsx)(b,{className:`size-4 animate-spin motion-reduce:animate-none`}):(0,Q.jsx)(w,{className:`size-4 text-accent-fg`})})}),(0,Q.jsxs)(A,{children:[(0,Q.jsx)(D,{className:`fixed inset-0 z-[60] bg-scrim backdrop-blur-sm data-[state=closed]:animate-out data-[state=open]:animate-in motion-reduce:backdrop-blur-none`}),(0,Q.jsx)(`div`,{className:`pointer-events-none fixed inset-0 z-[61] flex items-center justify-center p-3 sm:p-6`,children:(0,Q.jsxs)(j,{className:`xopc-understanding-center pointer-events-auto flex h-[min(42rem,calc(100dvh-1.5rem))] w-[min(44rem,calc(100vw-1.5rem))] flex-col overflow-hidden rounded-xl border border-edge bg-surface-overlay shadow-float outline-none sm:h-[min(42rem,calc(100dvh-3rem))] sm:w-[min(44rem,calc(100vw-3rem))]`,children:[(0,Q.jsxs)(`header`,{className:`flex h-16 shrink-0 items-center justify-between border-b border-edge-subtle px-5 sm:px-6`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(M,{className:`text-sm font-semibold text-fg`,children:h?m?`正在更新用户理解`:`Updating user understanding`:m?`用户理解`:`User understanding`}),(0,Q.jsx)(te,{className:`mt-0.5 text-xs text-fg-muted`,children:h?m?`关闭窗口也会在后台继续`:`You can close this window; work continues in the background`:m?`自动更新,可随时修改或删除`:`Updated automatically. Edit or delete anytime`})]}),(0,Q.jsx)(Be,{disabled:!u?.sources?.length}),(0,Q.jsx)(k,{asChild:!0,children:(0,Q.jsx)(F,{variant:`ghost`,className:`size-8 rounded-xl p-0`,"aria-label":m?`关闭`:`Close`,children:(0,Q.jsx)(T,{className:`size-4`})})})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-5 py-7 sm:px-9 sm:py-9`,children:u?(0,Q.jsx)(ct,{assertions:u.assertions,configuredSources:u.sources??[],activityRunning:h,language:n,busy:i,error:s??f??null,onReviewAssertion:g,onCompleted:()=>{_(!1)}}):(0,Q.jsxs)(`section`,{className:`space-y-4`,"aria-label":m?`正在加载用户理解`:`Loading user understanding`,children:[(0,Q.jsx)(L,{className:`h-8 w-2/3`}),(0,Q.jsx)(L,{className:`h-32 w-full`}),(0,Q.jsx)(L,{className:`h-32 w-full`})]})})]})})]})]})}function _t(e){let t=e.get(`tab`);return t===`understanding`||t===`privacy`?t:`overview`}var vt={en:{pageTitle:`Me`,overview:`Overview`,understanding:`What xopc knows`,privacy:`Data & privacy`,knowledge:`Work memory`,editProfile:`Edit basics`,callName:`What should xopc call you?`,callNamePlaceholder:`For example: Alex, Joyce, or Dr. Chen`,role:`Your role`,rolePlaceholder:`For example: founder, designer, or engineer`,pronouns:`Pronouns (optional)`,pronounsPlaceholder:`For example: she/her, he/him, they/them`,timezone:`Timezone`,timezoneSearch:`Search timezones…`,timezoneNoMatch:`No matching timezone`,locale:`Language / locale`,useDeviceTimezone:`Use this device`,notProvided:`Not provided`,editProfileHint:`These are facts you provide directly. They remain separate from xopc’s observations and inferences.`,saveProfile:`Save`,saving:`Saving…`,explicit:`You told me`,explicitHint:`Facts and preferences you stated directly`,learned:`Learned together`,learnedHint:`Patterns formed from our work`,allUnderstanding:`All understanding`,understandingFilterHint:`Filter this view by how each item was formed.`,importantNow:`What matters now`,prioritySourceGoal:`From a goal you confirmed`,prioritySourceWork:`From your current work`,editPriority:`Edit focus`,addPriority:`Set current focus`,priorityTitle:`Current focus`,priorityTitlePlaceholder:`What matters most right now?`,priorityOutcome:`What a good outcome looks like`,priorityOutcomePlaceholder:`Describe the result you want…`,priorityUntil:`Focus through`,savePriority:`Save focus`,endPriority:`End focus`,endingPriority:`Ending…`,priorityHint:`This is used to keep xopc aligned with what deserves attention now.`,otherGoals:`Other active outcomes`,howWeWork:`How we work together`,noRules:`No collaboration preferences yet.`,seeAll:`See all`,workMemory:`What I remember from the work`,items:`items`,refresh:`Refresh`,refreshing:`Refreshing…`,refreshComplete:`Refreshed`,refreshFailed:`Refresh failed`,aboutYouTitle:`A view you can correct`,aboutYouHint:`xopc quietly maintains this working context from collaboration. You can edit or retire any item.`,identity:`Who you are`,preferences:`Preferences and working rhythm`,relationships:`People and relationships`,currentState:`Current context`,insights:`My current read`,emptyGroup:`No understanding has formed here yet.`,correct:`Correct`,save:`Save correction`,cancel:`Cancel`,correctionPlaceholder:`Write the accurate version…`,searchPlaceholder:`Search work memory…`,allMemory:`All work memory`,memoryFilterHint:`Filter by memory type`,memoryLibraryHint:`Only distilled facts, decisions, lessons, commitments, and open questions appear here. Source records stay with their connector.`,noKnowledge:`No work memory has formed yet.`,noKnowledgeMatch:`No work memory matches this search.`,showMore:`Show more`,expand:`Show details`,collapse:`Hide details`,disable:`Disable`,disabled:`Not in use`,enable:`Enable`,loadFailed:`Could not load your understanding.`,tryAgain:`Try again`,actionFailed:`The change could not be saved. Please try again.`},zh:{pageTitle:`我的`,overview:`总览`,understanding:`对我的了解`,privacy:`数据与隐私`,knowledge:`工作记忆`,editProfile:`编辑基本信息`,callName:`希望 xopc 如何称呼你?`,callNamePlaceholder:`例如:Mic、Joyce、张老师`,role:`你的角色`,rolePlaceholder:`例如:创业者、产品设计师、工程师`,pronouns:`代词(可选)`,pronounsPlaceholder:`例如:she/her、he/him、they/them`,timezone:`时区`,timezoneSearch:`搜索时区…`,timezoneNoMatch:`没有匹配的时区`,locale:`语言 / 地区`,useDeviceTimezone:`使用本机时区`,notProvided:`未填写`,editProfileHint:`这些是由你直接提供的事实,与 xopc 的观察和推断分开维护。`,saveProfile:`保存`,saving:`正在保存…`,explicit:`你告诉我的`,explicitHint:`你明确表达的事实与偏好`,learned:`协作中学到的`,learnedHint:`从实际协作中形成的认识`,allUnderstanding:`全部理解`,understandingFilterHint:`按内容来源筛选这份理解。`,importantNow:`此刻重要`,prioritySourceGoal:`来自你确认的当前目标`,prioritySourceWork:`来自当前工作上下文`,editPriority:`编辑`,addPriority:`设置当前关注`,priorityTitle:`当前关注`,priorityTitlePlaceholder:`现在最重要的是什么?`,priorityOutcome:`期待结果`,priorityOutcomePlaceholder:`描述你希望达成的结果…`,priorityUntil:`关注至`,savePriority:`保存关注`,endPriority:`结束关注`,endingPriority:`正在结束…`,priorityHint:`这项内容会帮助 xopc 在协作中优先关注当前最重要的事情。`,otherGoals:`其他进行中的目标`,howWeWork:`我们怎样协作`,noRules:`还没有形成协作偏好。`,seeAll:`查看全部`,workMemory:`我在工作中记住的`,items:`条`,refresh:`刷新`,refreshing:`正在刷新…`,refreshComplete:`已刷新`,refreshFailed:`刷新失败`,aboutYouTitle:`一份可以共同修正的理解`,aboutYouHint:`xopc 会在协作中安静地维护这份工作认知。你仍可随时修改或停止使用任何一条。`,identity:`关于你是谁`,preferences:`偏好与工作节奏`,relationships:`重要的人与关系`,currentState:`当前状态`,insights:`我形成的判断`,emptyGroup:`这里还没有形成理解。`,correct:`修正`,save:`保存修正`,cancel:`取消`,correctionPlaceholder:`写下更准确的说法…`,searchPlaceholder:`搜索工作记忆…`,allMemory:`全部工作记忆`,memoryFilterHint:`按记忆类型筛选`,memoryLibraryHint:`这里只显示提炼后的事实、决定、经验、承诺和待解问题;邮件、日历与文档原文保留在对应来源中。`,noKnowledge:`还没有形成工作记忆。`,noKnowledgeMatch:`没有符合搜索条件的工作记忆。`,showMore:`显示更多`,expand:`查看详情`,collapse:`收起详情`,disable:`停用`,disabled:`已停用`,enable:`启用`,loadFailed:`无法载入对你的理解。`,tryAgain:`重试`,actionFailed:`修改没有保存,请重试。`}},yt=new Set([`identity.call_name`,`identity.role`,`identity.pronouns`,`preference.timezone`,`preference.locale`]),bt=[`work_thread`,`project_fact`,`workspace_fact`,`decision`,`task_lesson`,`commitment`,`open_question`,`episode`,`note`],xt=`UTC.Africa/Cairo.Africa/Johannesburg.America/Chicago.America/Denver.America/Los_Angeles.America/Mexico_City.America/New_York.America/Sao_Paulo.America/Toronto.America/Vancouver.Asia/Bangkok.Asia/Dubai.Asia/Hong_Kong.Asia/Jakarta.Asia/Kolkata.Asia/Seoul.Asia/Shanghai.Asia/Singapore.Asia/Taipei.Asia/Tokyo.Australia/Melbourne.Australia/Perth.Australia/Sydney.Europe/Amsterdam.Europe/Berlin.Europe/London.Europe/Madrid.Europe/Paris.Europe/Rome.Pacific/Auckland.Pacific/Honolulu`.split(`.`);function St(){try{let e=Intl.supportedValuesOf(`timeZone`);return[...new Set([`UTC`,...e])]}catch{return[...xt]}}var Ct=St();function wt(e){return e.map(e=>({value:e,label:e.replaceAll(`_`,` `),group:e.includes(`/`)?e.split(`/`)[0]:`UTC`}))}function Tt(e,t,n=!1){return e?new Intl.DateTimeFormat(t===`zh`?`zh-CN`:`en`,{dateStyle:`medium`,...n?{timeStyle:`short`}:{}}).format(e):null}function Et(e){return typeof e==`string`&&e.trim()?e.trim():void 0}function Dt(e){return{callName:Et(e.profile.callName)??``,role:Et(e.profile.role)??``,pronouns:Et(e.profile.pronouns)??``,timezone:Et(e.profile.timezone)??``,locale:Et(e.profile.locale)??``}}function Ot(e,t){return{"zh-CN":{en:`Simplified Chinese`,zh:`简体中文`},"zh-TW":{en:`Traditional Chinese`,zh:`繁体中文`},"en-US":{en:`English (US)`,zh:`英语(美国)`},"en-GB":{en:`English (UK)`,zh:`英语(英国)`},"ja-JP":{en:`Japanese`,zh:`日语`}}[e]?.[t]??e}function kt(e,t){let n=Tt(e,t);return t===`zh`?`当前安排至 ${n}`:`Current plan through ${n}`}function At(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function jt(e){let[t,n,r]=e.split(`-`).map(Number);return new Date(t,n-1,r,23,59,59,999).getTime()}function Mt(e,t){return(t===`zh`?{global:`所有协作`,agent:`当前智能体`,workspace:`当前工作区`,project:`当前项目`,session:`当前会话`}:{global:`All work`,agent:`This agent`,workspace:`This workspace`,project:`This project`,session:`This conversation`})[e.type]}function Nt(e,t){return(t===`zh`?{work_thread:`工作主线`,project_fact:`项目事实`,workspace_fact:`工作区事实`,decision:`已经决定`,task_lesson:`工作经验`,commitment:`承诺与约定`,open_question:`待解问题`,episode:`重要经历`,note:`其他记录`}:{work_thread:`Work threads`,project_fact:`Project facts`,workspace_fact:`Workspace facts`,decision:`Decisions`,task_lesson:`Lessons`,commitment:`Commitments`,open_question:`Open questions`,episode:`Episodes`,note:`Notes`})[e]}function Pt(e,t,n){if(e)return e.targetType===`goal`?t.find(t=>t.id===e.targetId)?.title:/^[0-9a-f]{8}-[0-9a-f-]{20,}$/i.test(e.targetId)?(n===`zh`?{project:`当前项目`,task:`当前任务`,assertion:`一项待处理的理解`,topic:`当前主题`}:{project:`Current project`,task:`Current task`,assertion:`An understanding to address`,topic:`Current topic`})[e.targetType]:e.targetId}function Ft(e){let t=(0,Z.c)(16),{title:n,hint:r,action:i,children:a,className:o}=e,s=o===void 0?``:o,c;t[0]===n?c=t[1]:(c=(0,Q.jsx)(`h2`,{className:`text-base font-semibold tracking-tight text-fg`,children:n}),t[0]=n,t[1]=c);let l;t[2]===r?l=t[3]:(l=r?(0,Q.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm leading-6 text-fg-muted`,children:r}):null,t[2]=r,t[3]=l);let u;t[4]!==c||t[5]!==l?(u=(0,Q.jsxs)(`div`,{children:[c,l]}),t[4]=c,t[5]=l,t[6]=u):u=t[6];let d;t[7]!==i||t[8]!==u?(d=(0,Q.jsxs)(`header`,{className:`flex items-end justify-between gap-4 px-1 pb-3`,children:[u,i]}),t[7]=i,t[8]=u,t[9]=d):d=t[9];let f;t[10]===a?f=t[11]:(f=(0,Q.jsx)(`div`,{className:`overflow-hidden rounded-2xl bg-surface-panel`,children:a}),t[10]=a,t[11]=f);let p;return t[12]!==s||t[13]!==d||t[14]!==f?(p=(0,Q.jsxs)(`section`,{className:s,children:[d,f]}),t[12]=s,t[13]=d,t[14]=f,t[15]=p):p=t[15],p}function It(e){let t=(0,Z.c)(7),{icon:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,Q.jsx)(`span`,{className:`text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,Q.jsx)(`p`,{children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 px-5 py-5 text-sm text-fg-muted`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function Lt({open:e,profile:t,language:n,saving:r,onOpenChange:i,onSave:a}){let o=vt[n],[s,c]=(0,X.useState)(t),[l,p]=(0,X.useState)(``);(0,X.useEffect)(()=>{e&&(c(t),p(``))},[e,t]);let m=e=>{e.preventDefault(),a({callName:s.callName.trim(),role:s.role.trim(),pronouns:s.pronouns.trim(),timezone:s.timezone.trim(),locale:s.locale.trim()})},h=(e,t,n)=>(0,Q.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-fg`,children:t}),(0,Q.jsx)(`input`,{value:s[e],onChange:t=>c(n=>({...n,[e]:t.target.value})),placeholder:n,className:`h-10 w-full rounded-xl border border-edge bg-surface-base px-3 text-sm text-fg outline-none transition placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}),g=[`zh-CN`,`zh-TW`,`en-US`,`en-GB`,`ja-JP`];s.locale&&!g.includes(s.locale)&&g.push(s.locale);let _=J(),v=(0,X.useMemo)(()=>[...new Set([...Ct,_,s.timezone].filter(Boolean))].sort(),[_,s.timezone]),y=l.trim().toLocaleLowerCase(),x=(0,X.useMemo)(()=>wt(v.filter(e=>!y||e.toLocaleLowerCase().includes(y)||e.replaceAll(`_`,` `).toLocaleLowerCase().includes(y))),[v,y]);return(0,Q.jsx)(N,{open:e,onOpenChange:i,children:(0,Q.jsxs)(A,{children:[(0,Q.jsx)(D,{className:`xopc-dialog-overlay fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]`}),(0,Q.jsx)(j,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[90] h-[min(40rem,calc(100vh-2rem))] w-[min(42rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 rounded-2xl border border-edge bg-surface-overlay shadow-popover outline-none`,children:(0,Q.jsxs)(`form`,{className:`flex h-full min-h-0 flex-col overflow-hidden [border-radius:inherit]`,onSubmit:m,children:[(0,Q.jsxs)(`header`,{className:`flex shrink-0 items-start justify-between gap-4 border-b border-edge px-5 py-4 sm:px-6`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(M,{className:`font-semibold text-fg`,children:o.editProfile}),(0,Q.jsx)(te,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:o.editProfileHint})]}),(0,Q.jsx)(k,{asChild:!0,children:(0,Q.jsx)(F,{variant:`ghost`,className:`size-8 shrink-0 p-0`,"aria-label":o.cancel,children:(0,Q.jsx)(T,{className:`size-4`})})})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-5 sm:p-6`,children:(0,Q.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[h(`callName`,o.callName,o.callNamePlaceholder),h(`role`,o.role,o.rolePlaceholder),h(`pronouns`,o.pronouns,o.pronounsPlaceholder),(0,Q.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-fg`,children:o.locale}),(0,Q.jsxs)(u,{value:s.locale,onChange:e=>c(t=>({...t,locale:e.target.value})),children:[(0,Q.jsx)(d,{value:``,children:o.notProvided}),g.map(e=>(0,Q.jsx)(d,{value:e,children:Ot(e,n)},e))]})]}),(0,Q.jsxs)(`label`,{className:`grid gap-1.5 text-sm sm:col-span-2`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-fg`,children:o.timezone}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(f,{value:s.timezone,options:x,placeholder:J(),emptyLabel:o.notProvided,ariaLabel:o.timezone,selectedLabel:s.timezone||o.notProvided,searchPlaceholder:o.timezoneSearch,searchValue:l,onSearchChange:p,statusMessage:x.length?void 0:o.timezoneNoMatch,triggerClassName:`min-w-0 flex-1 rounded-xl bg-surface-base`,onChange:e=>{c(t=>({...t,timezone:e})),p(``)}}),(0,Q.jsx)(F,{className:`shrink-0 whitespace-nowrap`,onClick:()=>c(e=>({...e,timezone:_})),children:o.useDeviceTimezone})]})]})]})}),(0,Q.jsxs)(`footer`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-5 py-3 sm:px-6`,children:[(0,Q.jsx)(k,{asChild:!0,children:(0,Q.jsx)(F,{disabled:r,children:o.cancel})}),(0,Q.jsxs)(F,{type:`submit`,variant:`primary`,disabled:r,children:[r?(0,Q.jsx)(b,{className:`size-4 animate-spin`}):null,r?o.saving:o.saveProfile]})]})]})})]})})}function Rt(e){let t=(0,Z.c)(94),{open:n,priority:r,title:i,outcome:a,language:o,saving:s,onOpenChange:c,onSave:l,onEnd:u}=e,d=vt[o],[f,p]=(0,X.useState)(i),[m,h]=(0,X.useState)(a??``),g=r?.validTo??Date.now()+6048e5,_;t[0]===g?_=t[1]:(_=At(g),t[0]=g,t[1]=_);let v=_,[y,x]=(0,X.useState)(v),S,C;t[2]!==v||t[3]!==n||t[4]!==a||t[5]!==i?(S=()=>{n&&(p(i),h(a??``),x(v))},C=[v,n,a,i],t[2]=v,t[3]=n,t[4]=a,t[5]=i,t[6]=S,t[7]=C):(S=t[6],C=t[7]),(0,X.useEffect)(S,C);let w;t[8]!==m||t[9]!==f||t[10]!==y||t[11]!==l||t[12]!==r?.targetType?(w=e=>{e.preventDefault(),l({title:f.trim(),...r?.targetType===`goal`?{desiredOutcome:m.trim()}:{},validTo:jt(y)})},t[8]=m,t[9]=f,t[10]=y,t[11]=l,t[12]=r?.targetType,t[13]=w):w=t[13];let ee=w,E;t[14]!==m||t[15]!==f||t[16]!==y||t[17]!==r?.targetType?(E=f.trim()&&y&&(r?.targetType!==`goal`||m.trim()),t[14]=m,t[15]=f,t[16]=y,t[17]=r?.targetType,t[18]=E):E=t[18];let O=!!E,P;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,Q.jsx)(D,{className:`xopc-dialog-overlay fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]`}),t[19]=P):P=t[19];let I=r?d.editPriority:d.addPriority,L;t[20]===I?L=t[21]:(L=(0,Q.jsx)(M,{className:`font-semibold text-fg`,children:I}),t[20]=I,t[21]=L);let R;t[22]===d.priorityHint?R=t[23]:(R=(0,Q.jsx)(te,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:d.priorityHint}),t[22]=d.priorityHint,t[23]=R);let z;t[24]!==R||t[25]!==L?(z=(0,Q.jsxs)(`div`,{children:[L,R]}),t[24]=R,t[25]=L,t[26]=z):z=t[26];let B;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,Q.jsx)(T,{className:`size-4`}),t[27]=B):B=t[27];let V;t[28]===d.cancel?V=t[29]:(V=(0,Q.jsx)(k,{asChild:!0,children:(0,Q.jsx)(F,{variant:`ghost`,className:`size-8 shrink-0 p-0`,"aria-label":d.cancel,children:B})}),t[28]=d.cancel,t[29]=V);let H;t[30]!==z||t[31]!==V?(H=(0,Q.jsxs)(`header`,{className:`flex shrink-0 items-start justify-between gap-4 border-b border-edge px-5 py-4 sm:px-6`,children:[z,V]}),t[30]=z,t[31]=V,t[32]=H):H=t[32];let U;t[33]===d.priorityTitle?U=t[34]:(U=(0,Q.jsx)(`span`,{className:`font-medium text-fg`,children:d.priorityTitle}),t[33]=d.priorityTitle,t[34]=U);let W;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(W=e=>p(e.target.value),t[35]=W):W=t[35];let G;t[36]!==f||t[37]!==d.priorityTitlePlaceholder?(G=(0,Q.jsx)(`input`,{autoFocus:!0,value:f,onChange:W,placeholder:d.priorityTitlePlaceholder,className:`h-10 w-full rounded-xl border border-edge bg-surface-base px-3 text-sm text-fg outline-none transition placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}),t[36]=f,t[37]=d.priorityTitlePlaceholder,t[38]=G):G=t[38];let K;t[39]!==U||t[40]!==G?(K=(0,Q.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[U,G]}),t[39]=U,t[40]=G,t[41]=K):K=t[41];let ne;t[42]!==m||t[43]!==r?.targetType||t[44]!==d.priorityOutcome||t[45]!==d.priorityOutcomePlaceholder?(ne=r?.targetType===`goal`?(0,Q.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-fg`,children:d.priorityOutcome}),(0,Q.jsx)(`textarea`,{value:m,onChange:e=>h(e.target.value),placeholder:d.priorityOutcomePlaceholder,className:`min-h-28 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2.5 text-sm leading-6 text-fg outline-none transition placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}):null,t[42]=m,t[43]=r?.targetType,t[44]=d.priorityOutcome,t[45]=d.priorityOutcomePlaceholder,t[46]=ne):ne=t[46];let re;t[47]===d.priorityUntil?re=t[48]:(re=(0,Q.jsx)(`span`,{className:`font-medium text-fg`,children:d.priorityUntil}),t[47]=d.priorityUntil,t[48]=re);let ie;t[49]===r?.validFrom?ie=t[50]:(ie=r?.validFrom??Date.now(),t[49]=r?.validFrom,t[50]=ie);let ae;t[51]===ie?ae=t[52]:(ae=At(ie),t[51]=ie,t[52]=ae);let oe;t[53]!==y||t[54]!==d.priorityUntil||t[55]!==ae?(oe=(0,Q.jsx)(ze,{min:ae,value:y,onChange:x,ariaLabel:d.priorityUntil,className:`rounded-xl border border-edge bg-surface-base hover:border-edge-strong hover:bg-surface-base`}),t[53]=y,t[54]=d.priorityUntil,t[55]=ae,t[56]=oe):oe=t[56];let se;t[57]!==re||t[58]!==oe?(se=(0,Q.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[re,oe]}),t[57]=re,t[58]=oe,t[59]=se):se=t[59];let q;t[60]!==K||t[61]!==ne||t[62]!==se?(q=(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto p-5 sm:p-6`,children:[K,ne,se]}),t[60]=K,t[61]=ne,t[62]=se,t[63]=q):q=t[63];let ce;t[64]!==u||t[65]!==r||t[66]!==s||t[67]!==d.endPriority||t[68]!==d.endingPriority?(ce=r&&u?(0,Q.jsxs)(F,{variant:`ghost`,className:`text-danger hover:text-danger`,disabled:s,onClick:u,children:[s?(0,Q.jsx)(b,{className:`size-4 animate-spin`}):null,s?d.endingPriority:d.endPriority]}):(0,Q.jsx)(`span`,{}),t[64]=u,t[65]=r,t[66]=s,t[67]=d.endPriority,t[68]=d.endingPriority,t[69]=ce):ce=t[69];let le;t[70]!==s||t[71]!==d.cancel?(le=(0,Q.jsx)(k,{asChild:!0,children:(0,Q.jsx)(F,{disabled:s,children:d.cancel})}),t[70]=s,t[71]=d.cancel,t[72]=le):le=t[72];let J=!O||s,Y;t[73]===s?Y=t[74]:(Y=s?(0,Q.jsx)(b,{className:`size-4 animate-spin`}):null,t[73]=s,t[74]=Y);let ue;t[75]!==d.savePriority||t[76]!==J||t[77]!==Y?(ue=(0,Q.jsxs)(F,{type:`submit`,variant:`primary`,disabled:J,children:[Y,d.savePriority]}),t[75]=d.savePriority,t[76]=J,t[77]=Y,t[78]=ue):ue=t[78];let de;t[79]!==le||t[80]!==ue?(de=(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[le,ue]}),t[79]=le,t[80]=ue,t[81]=de):de=t[81];let fe;t[82]!==ce||t[83]!==de?(fe=(0,Q.jsxs)(`footer`,{className:`flex shrink-0 flex-wrap items-center justify-between gap-2 border-t border-edge px-5 py-3 sm:px-6`,children:[ce,de]}),t[82]=ce,t[83]=de,t[84]=fe):fe=t[84];let pe;t[85]!==ee||t[86]!==H||t[87]!==q||t[88]!==fe?(pe=(0,Q.jsxs)(A,{children:[P,(0,Q.jsx)(j,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[90] h-[min(34rem,calc(100vh-2rem))] w-[min(38rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 rounded-2xl border border-edge bg-surface-overlay shadow-popover outline-none`,children:(0,Q.jsxs)(`form`,{className:`flex h-full min-h-0 flex-col overflow-hidden [border-radius:inherit]`,onSubmit:ee,children:[H,q,fe]})})]}),t[85]=ee,t[86]=H,t[87]=q,t[88]=fe,t[89]=pe):pe=t[89];let me;return t[90]!==c||t[91]!==n||t[92]!==pe?(me=(0,Q.jsx)(N,{open:n,onOpenChange:c,children:pe}),t[90]=c,t[91]=n,t[92]=pe,t[93]=me):me=t[93],me}function zt(e){let t=(0,Z.c)(16),{rule:n,language:r,busy:i,onToggle:a}=e,o=vt[r],s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Q.jsx)(G,{className:`mt-0.5 size-4 shrink-0 text-fg-subtle`}),t[0]=s):s=t[0];let c;t[1]===n.statement?c=t[2]:(c=(0,Q.jsx)(`p`,{className:`min-w-0 flex-1 text-sm leading-6 text-fg`,children:n.statement}),t[1]=n.statement,t[2]=c);let l;t[3]!==n.status||t[4]!==o.disabled?(l=n.status===`disabled`?(0,Q.jsx)(`span`,{className:`text-xs text-fg-subtle`,children:o.disabled}):null,t[3]=n.status,t[4]=o.disabled,t[5]=l):l=t[5];let u=n.status===`active`?o.disable:o.enable,d;t[6]!==i||t[7]!==a||t[8]!==u?(d=(0,Q.jsx)(F,{variant:`ghost`,className:`h-8`,disabled:i,onClick:a,children:u}),t[6]=i,t[7]=a,t[8]=u,t[9]=d):d=t[9];let f;t[10]!==l||t[11]!==d?(f=(0,Q.jsxs)(`div`,{className:`flex shrink-0 flex-col items-end gap-1`,children:[l,d]}),t[10]=l,t[11]=d,t[12]=f):f=t[12];let p;return t[13]!==c||t[14]!==f?(p=(0,Q.jsxs)(`div`,{className:`flex items-start gap-3 border-t border-edge-subtle px-5 py-3 first:border-t-0`,children:[s,c,f]}),t[13]=c,t[14]=f,t[15]=p):p=t[15],p}function Bt(e){let t=(0,Z.c)(15),{suggestion:n,language:r,busy:i,onConfirm:a}=e,o=r===`zh`,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Q.jsx)(w,{className:`mt-0.5 size-4 shrink-0 text-accent-fg`}),t[0]=s):s=t[0];let c;t[1]===n.statement?c=t[2]:(c=(0,Q.jsx)(`p`,{className:`text-sm leading-6 text-fg`,children:n.statement}),t[1]=n.statement,t[2]=c);let l=o?`根据你已确认的模式生成;确认前不会生效`:`Suggested from a pattern you confirmed; inactive until you approve`,u;t[3]===l?u=t[4]:(u=(0,Q.jsx)(`p`,{className:`mt-0.5 text-xs text-fg-subtle`,children:l}),t[3]=l,t[4]=u);let d;t[5]!==c||t[6]!==u?(d=(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[c,u]}),t[5]=c,t[6]=u,t[7]=d):d=t[7];let f=i?o?`启用中…`:`Enabling…`:o?`确认启用`:`Approve`,p;t[8]!==i||t[9]!==a||t[10]!==f?(p=(0,Q.jsx)(F,{variant:`secondary`,className:`h-8 shrink-0`,disabled:i,onClick:a,children:f}),t[8]=i,t[9]=a,t[10]=f,t[11]=p):p=t[11];let m;return t[12]!==d||t[13]!==p?(m=(0,Q.jsxs)(`div`,{className:`flex items-start gap-3 border-t border-edge-subtle px-5 py-3 first:border-t-0`,children:[s,d,p]}),t[12]=d,t[13]=p,t[14]=m):m=t[14],m}function Vt(e){let t=(0,Z.c)(22),{item:n,language:r,busy:i,expanded:a,onToggle:o,editing:s,draft:c,onDraftChange:l,onEdit:u,onCancel:d,onReview:f,onDelete:p}=e,m=vt[r],h=n.updatedAt??n.createdAt,g;t[0]!==r||t[1]!==h?(g=Tt(h,r),t[0]=r,t[1]=h,t[2]=g):g=t[2];let _=g,v;t[3]===n.content?v=t[4]:(v=n.content.length>96||n.content.includes(`
2
+ `),t[3]=n.content,t[4]=v);let y=v,b;return t[5]!==i||t[6]!==y||t[7]!==_||t[8]!==c||t[9]!==s||t[10]!==a||t[11]!==n.content||t[12]!==n.scope||t[13]!==r||t[14]!==d||t[15]!==p||t[16]!==l||t[17]!==u||t[18]!==f||t[19]!==o||t[20]!==m?(b=(0,Q.jsx)(`article`,{className:`group border-t border-edge-subtle px-5 py-4 first:border-t-0 sm:px-6`,children:s?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`textarea`,{"aria-label":m.correctionPlaceholder,disabled:i,value:c,onChange:e=>l(e.target.value),className:`min-h-24 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2.5 text-sm leading-6 text-fg outline-none transition focus:border-accent focus:ring-2 focus:ring-accent/20`}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Q.jsx)(F,{variant:`ghost`,className:`h-8`,onClick:d,children:m.cancel}),(0,Q.jsx)(F,{variant:`primary`,className:`h-8`,disabled:!c.trim()||i,onClick:()=>f(`edit_and_approve`,c.trim()),children:m.save})]})]}):(0,Q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Q.jsx)(ie,{className:`mt-1 size-4 shrink-0 text-fg-subtle`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`p`,{className:`whitespace-pre-wrap break-words text-base leading-7 text-fg ${a?``:`line-clamp-2`}`,children:n.content}),(0,Q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-fg-subtle`,children:[(0,Q.jsx)(`span`,{children:Mt(n.scope,r)}),_?(0,Q.jsx)(`span`,{children:_}):null]})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[y?(0,Q.jsx)(F,{variant:`ghost`,className:`size-11 p-0`,"aria-expanded":a,"aria-label":a?m.collapse:m.expand,onClick:o,children:(0,Q.jsx)(B,{className:`size-3.5 transition-transform ${a?`rotate-180`:``}`})}):null,(0,Q.jsx)(Ke,{language:r,busy:i,statement:n.content,onEdit:u,onDelete:p})]})]})}),t[5]=i,t[6]=y,t[7]=_,t[8]=c,t[9]=s,t[10]=a,t[11]=n.content,t[12]=n.scope,t[13]=r,t[14]=d,t[15]=p,t[16]=l,t[17]=u,t[18]=f,t[19]=o,t[20]=m,t[21]=b):b=t[21],b}function Ht(){let e=E(e=>e.language),t=vt[e],n=pe(e=>e.setPageHeader),r=pe(e=>e.clearPageHeader),[o,s]=i(),{data:f,error:m,isLoading:_,isValidating:v,mutate:y}=P(`/api/user-model`,je),ee=_t(o),[D,O]=(0,X.useState)(),[te,k]=(0,X.useState)(),[A,j]=(0,X.useState)(``),[M,N]=(0,X.useState)(),[I,z]=(0,X.useState)(``),[B,V]=(0,X.useState)(``),[W,ne]=(0,X.useState)(24),[re,ie]=(0,X.useState)(),[oe,q]=(0,X.useState)(!1),[le,J]=(0,X.useState)(!1),[Y,ge]=(0,X.useState)(`all`),[_e,ye]=(0,X.useState)(`personal`),[Oe,Me]=(0,X.useState)(`all`),[Le,ze]=(0,X.useState)(`idle`),Z=(0,X.useRef)(void 0),Be=e=>{if(e===ee)return;let t=document.getElementById(`app-main-content`);typeof t?.scrollTo==`function`&&t.scrollTo({top:0,behavior:`auto`}),s(t=>{let n=new URLSearchParams(t);return e===`overview`?n.delete(`tab`):n.set(`tab`,e),n})},Ve=(0,X.useCallback)(async()=>{if(!(Le===`refreshing`||v)){Z.current&&window.clearTimeout(Z.current),ze(`refreshing`),k(void 0),j(t.refreshing);try{await y(),ze(`success`),j(t.refreshComplete)}catch{ze(`error`),j(``),k(t.refreshFailed)}finally{Z.current=window.setTimeout(()=>ze(`idle`),1600)}}},[v,y,Le,t]);(0,X.useEffect)(()=>()=>{Z.current&&window.clearTimeout(Z.current)},[]);let He=v||Le===`refreshing`,Ue=He?t.refreshing:Le===`success`?t.refreshComplete:Le===`error`?t.refreshFailed:t.refresh;(0,X.useEffect)(()=>(n({startExtra:null,main:(0,Q.jsx)(`h1`,{className:`text-base font-semibold text-fg`,children:t.pageTitle}),end:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(gt,{}),(0,Q.jsx)(F,{variant:`secondary`,className:`size-9 p-0 ${Le===`success`?`text-success`:Le===`error`?`text-danger`:``}`,disabled:He,"aria-label":Ue,title:Ue,onClick:()=>void Ve(),children:He?(0,Q.jsx)(b,{className:`size-4 animate-spin motion-reduce:animate-none`,"aria-hidden":`true`}):Le===`success`?(0,Q.jsx)(c,{className:`size-4`,"aria-hidden":`true`}):Le===`error`?(0,Q.jsx)(p,{className:`size-4`,"aria-hidden":`true`}):(0,Q.jsx)(K,{className:`size-4`,"aria-hidden":`true`})})]})}),r),[r,He,Le,Ue,Ve,n,t]);let We=async(n,r)=>{O(n),k(void 0),j(``);try{await r(),await y(),j(e===`zh`?`已更新`:`Updated`)}catch{k(t.actionFailed)}finally{O(void 0)}},Ge=e=>{We(e.id,async()=>{await me(e.id,I.trim()),N(void 0),z(``)})},Ke=async e=>{O(`profile`),k(void 0),j(``);try{await we(e),await y(),q(!1)}catch{k(t.actionFailed)}finally{O(void 0)}},qe=async(n,r)=>{O(`priority:${n.id}`),k(void 0),j(``);try{await ke(n.id,r),await y(),J(!1),j(e===`zh`?`当前关注已更新`:`Current focus updated`)}catch{k(t.actionFailed)}finally{O(void 0)}},Je=async n=>{O(`priority:create`),k(void 0),j(``);try{await Ne(n),await y(),J(!1),j(e===`zh`?`当前关注已设置`:`Current focus set`)}catch{k(t.actionFailed)}finally{O(void 0)}},Ye=async n=>{O(`priority:${n.id}`),k(void 0),j(``);try{await ke(n.id,{status:`completed`}),await y(),J(!1),j(e===`zh`?`当前关注已结束`:`Current focus ended`)}catch{k(t.actionFailed)}finally{O(void 0)}};if(_)return(0,Q.jsxs)(`div`,{className:`mx-auto w-full max-w-7xl space-y-5 px-4 pb-7 pt-3 sm:px-6 lg:px-8 lg:pb-9 lg:pt-4`,children:[(0,Q.jsx)(L,{className:`h-10 w-72 rounded-xl`}),(0,Q.jsx)(L,{className:`h-72 rounded-xl`}),(0,Q.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-2`,children:[(0,Q.jsx)(L,{className:`h-80 rounded-xl`}),(0,Q.jsx)(L,{className:`h-80 rounded-xl`})]})]});if(m||!f)return(0,Q.jsxs)(`div`,{className:`mx-auto flex min-h-72 max-w-xl flex-col items-center justify-center gap-3 p-6 text-center`,children:[(0,Q.jsx)(H,{className:`size-6 text-fg-subtle`}),(0,Q.jsx)(`p`,{className:`text-sm text-danger`,children:t.loadFailed}),(0,Q.jsx)(F,{onClick:()=>void y(),children:t.tryAgain})]});let Xe=f.assertions.filter(e=>e.usable&&!yt.has(e.predicate)).sort((e,t)=>{let n=e.declaredImportance??e.inferredImportance;return(t.declaredImportance??t.inferredImportance)-n||t.recordedAt-e.recordedAt}),Ze=f.assertions.filter(e=>[`candidate`,`needs_review`,`conflicted`].includes(e.status)).sort((e,t)=>t.recordedAt-e.recordedAt),Qe=Dt(f),et=Qe.callName||(e===`zh`?`你`:`You`),tt=Xe.filter(e=>e.authority===`user_explicit`).length,nt=Xe.length-tt,rt=Xe.filter(e=>Y===`explicit`?e.authority===`user_explicit`:Y===`learned`?e.authority!==`user_explicit`:!0),it=f.priorities.filter(e=>e.status===`active`&&e.validTo>Date.now()),$=it.find(e=>e.rank===`primary`)??it[0],at=Pt($,f.goals,e),ot=$?.targetType===`goal`?f.goals.find(e=>e.id===$.targetId):void 0,st=f.goals.filter(e=>e.status===`active`||e.status===`paused`),ct=st.filter(e=>$?.targetType!==`goal`||e.id!==$.targetId),lt=f.rules.filter(e=>e.status!==`archived`),ut=f.ruleSuggestions??[],dt=f.knowledge.filter(e=>e.status!==`archived`&&e.status!==`rejected`),ft=B.trim().toLocaleLowerCase(),pt=dt.filter(e=>Oe===`all`||e.kind===Oe),mt=pt.filter(t=>!ft||t.content.toLocaleLowerCase().includes(ft)||Nt(t.kind,e).toLocaleLowerCase().includes(ft)),ht=[{key:`identity`,title:t.identity,icon:xe,items:rt.filter(e=>e.kind===`identity`)},{key:`preferences`,title:t.preferences,icon:be,items:rt.filter(e=>[`preference`,`value`,`routine`,`capability`].includes(e.kind))},{key:`relationships`,title:t.relationships,icon:G,items:rt.filter(e=>e.kind===`relationship`)},{key:`current`,title:t.currentState,icon:h,items:rt.filter(e=>e.kind===`current_state`)},{key:`insights`,title:t.insights,icon:w,items:rt.filter(e=>e.kind===`derived_insight`)}].filter(e=>e.items.length>0),xt=[{key:`about`,icon:xe,label:e===`zh`?`关于我`:`About me`,hint:e===`zh`?`身份、背景与能力`:`Identity, background, and capabilities`,count:Xe.filter(e=>[`identity`,`capability`].includes(e.kind)).length},{key:`preferences`,icon:be,label:e===`zh`?`偏好与习惯`:`Preferences & habits`,hint:e===`zh`?`沟通方式与日常习惯`:`Communication and routines`,count:Xe.filter(e=>[`preference`,`value`,`routine`].includes(e.kind)).length},{key:`people`,icon:G,label:e===`zh`?`重要的人`:`Important people`,hint:e===`zh`?`与你有关的人和关系`:`People and relationships`,count:Xe.filter(e=>e.kind===`relationship`).length},{key:`goals`,icon:w,label:e===`zh`?`目标与计划`:`Goals & plans`,hint:e===`zh`?`正在推进的长期目标`:`Long-term outcomes in progress`,count:st.length}],St=bt.map(e=>({kind:e,count:dt.filter(t=>t.kind===e).length})).filter(e=>e.count>0),Ct=St.slice(0,4),wt=Ct.length===1?`grid-cols-1`:`sm:grid-cols-2`,Tt=mt.slice(0,W),Et=bt.map(e=>({kind:e,items:Tt.filter(t=>t.kind===e),totalCount:mt.filter(t=>t.kind===e).length})).filter(e=>e.items.length>0),At=[{id:`all`,label:t.allUnderstanding,count:Xe.length},{id:`explicit`,label:t.explicit,count:tt},{id:`learned`,label:t.learned,count:nt}],jt=e=>{ge(e),ye(`personal`),Be(`understanding`)},Mt=e=>{Me(e),V(``),ne(24),ye(`work`),Be(`understanding`)},Ht=t=>(0,Q.jsx)($e,{item:t,language:e,busy:!!D,editing:M===t.id,draft:M===t.id?I:``,onDraftChange:z,onEdit:()=>{N(t.id),z(t.statement)},onCancel:()=>{N(void 0),z(``)},onDelete:()=>void We(t.id,()=>Ae(t.id)),onCorrect:()=>Ge(t),onScopeChange:e=>void We(t.id,()=>Se(t.id,e))},t.id);return(0,Q.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl space-y-6 px-4 pb-4 pt-3 sm:space-y-8 sm:px-6 sm:pb-7 lg:px-8 lg:pb-10 lg:pt-4`,children:[(0,Q.jsx)(Re,{items:[{id:`overview`,label:t.overview,icon:w},{id:`understanding`,label:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`sm:hidden`,children:e===`zh`?`记忆`:`Memory`}),(0,Q.jsx)(`span`,{className:`hidden sm:inline`,children:t.understanding})]}),icon:xe,count:Xe.length},{id:`privacy`,label:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`sm:hidden`,children:e===`zh`?`隐私`:`Privacy`}),(0,Q.jsx)(`span`,{className:`hidden sm:inline`,children:t.privacy})]}),icon:se}],activeTab:ee,onChange:Be,ariaLabel:t.pageTitle,tabIdPrefix:`understanding-tab`,panelIdPrefix:`understanding-panel`,className:`w-full max-w-full gap-1 rounded-full bg-surface-panel p-1 shadow-surface sm:w-fit`,buttonClassName:`min-w-0 flex-1 justify-center rounded-full px-2 py-2 sm:flex-none sm:px-3.5`,selectedClassName:`bg-surface-active text-fg`,unselectedClassName:`text-fg-muted hover:bg-surface-hover hover:text-fg`}),(0,Q.jsx)(`p`,{role:`status`,className:`sr-only`,children:A}),te?(0,Q.jsxs)(`div`,{role:`alert`,className:`flex items-center justify-between gap-3 rounded-xl border border-danger bg-danger-soft px-4 py-3 text-sm text-danger`,children:[(0,Q.jsx)(`span`,{children:te}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>k(void 0),"aria-label":t.cancel,children:(0,Q.jsx)(T,{className:`size-4`})})]}):null,ee===`overview`?(0,Q.jsxs)(`div`,{id:`understanding-panel-overview`,role:`tabpanel`,"aria-labelledby":`understanding-tab-overview`,className:`space-y-8 sm:space-y-10`,children:[(0,Q.jsxs)(`section`,{"data-testid":`overview-hero`,className:`grid gap-5 sm:gap-8 lg:grid-cols-[minmax(0,1fr)_minmax(20rem,24rem)] lg:gap-12`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 px-1 sm:py-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 sm:flex-wrap sm:gap-5`,children:[(0,Q.jsx)(R,{className:`size-16 sm:size-20`,mood:te?`care`:He||D?`work`:`listen`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`h2`,{className:`truncate text-xl font-semibold tracking-tight text-fg sm:text-3xl`,children:et}),(0,Q.jsx)(`p`,{className:`mt-1 break-words text-sm text-fg-muted`,children:Qe.role||t.notProvided})]}),(0,Q.jsxs)(F,{variant:`ghost`,className:`size-11 shrink-0 px-0 sm:h-9 sm:w-auto sm:px-3`,onClick:()=>q(!0),children:[(0,Q.jsx)(Pe,{className:`size-4`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`sr-only sm:not-sr-only`,children:t.editProfile})]})]}),(0,Q.jsx)(`dl`,{className:`mt-6 hidden gap-x-8 gap-y-5 sm:grid sm:grid-cols-3`,children:[{icon:ae,label:t.locale,value:Qe.locale?Ot(Qe.locale,e):t.notProvided},{icon:Ce,label:t.timezone,value:Qe.timezone||t.notProvided},{icon:xe,label:t.pronouns,value:Qe.pronouns||t.notProvided}].map(({icon:e,label:t,value:n})=>(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsxs)(`dt`,{className:`flex items-center gap-1.5 text-xs text-fg-subtle`,children:[(0,Q.jsx)(e,{className:`size-3.5`,"aria-hidden":`true`}),t]}),(0,Q.jsx)(`dd`,{className:`mt-1.5 truncate text-sm font-medium text-fg`,children:n})]},t))})]}),(0,Q.jsxs)(`aside`,{"data-testid":`priority-panel`,className:`flex min-h-0 flex-col rounded-[1.4rem] bg-surface-panel p-5 shadow-surface sm:min-h-64 sm:p-6`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`text-xs font-semibold tracking-wide text-fg-subtle`,children:t.importantNow}),$?(0,Q.jsxs)(`p`,{className:`mt-1.5 flex items-center gap-1.5 text-xs text-fg-muted`,children:[(0,Q.jsx)(U,{className:`size-3.5`,"aria-hidden":`true`}),$.targetType===`goal`?t.prioritySourceGoal:t.prioritySourceWork]}):null]}),$&&at?(0,Q.jsxs)(F,{variant:`ghost`,className:`h-8 shrink-0 px-2.5`,onClick:()=>J(!0),children:[(0,Q.jsx)(x,{className:`size-3.5`,"aria-hidden":`true`}),t.editPriority]}):null]}),at?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`mt-3 text-lg font-semibold leading-7 tracking-tight text-fg`,children:at}),ot?.desiredOutcome?(0,Q.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:ot.desiredOutcome}):null,$?(0,Q.jsxs)(`p`,{className:`mt-auto flex items-center gap-1.5 pt-4 text-xs text-fg-subtle`,children:[(0,Q.jsx)(Ie,{className:`size-3.5`,"aria-hidden":`true`}),kt($.validTo,e)]}):null]}):(0,Q.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3 py-6 text-center text-sm text-fg-muted`,children:[(0,Q.jsx)(U,{className:`size-5 text-fg-subtle`}),(0,Q.jsxs)(F,{variant:`primary`,onClick:()=>J(!0),children:[(0,Q.jsx)(S,{className:`size-4`,"aria-hidden":`true`}),t.addPriority]})]}),ct.length?(0,Q.jsxs)(`div`,{className:`mt-5 hidden border-t border-edge-subtle pt-4 sm:block`,children:[(0,Q.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:t.otherGoals}),(0,Q.jsx)(`div`,{className:`mt-2 space-y-2`,children:ct.slice(0,3).map(e=>(0,Q.jsx)(`p`,{className:`text-sm text-fg`,children:e.title},e.id))})]}):null]})]}),Ze.length?(0,Q.jsxs)(`section`,{className:`overflow-hidden rounded-2xl bg-accent-soft/70 shadow-surface`,"aria-label":e===`zh`?`需要你确认`:`Needs your review`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-5 py-4 sm:px-6`,children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Q.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-full bg-surface-panel text-accent-fg`,children:(0,Q.jsx)(w,{className:`size-4`,"aria-hidden":`true`})}),(0,Q.jsx)(`div`,{className:`min-w-0`,children:(0,Q.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:e===`zh`?`需要你确认`:`Needs your review`})})]}),(0,Q.jsx)(`span`,{className:`rounded-full bg-surface-panel px-2.5 py-1 text-xs font-medium tabular-nums text-accent-fg`,children:Ze.length})]}),(0,Q.jsxs)(`div`,{className:`border-t border-accent/10 bg-surface-panel px-5 py-4 sm:flex sm:items-center sm:gap-4 sm:px-6`,children:[(0,Q.jsx)(`p`,{className:`min-w-0 flex-1 text-sm leading-6 text-fg`,children:Ze[0].statement}),(0,Q.jsxs)(`div`,{className:`mt-3 flex shrink-0 gap-2 sm:mt-0`,children:[(0,Q.jsx)(F,{variant:`ghost`,className:`min-h-11 flex-1 sm:flex-none`,disabled:D===Ze[0].id,onClick:()=>void We(Ze[0].id,()=>Fe(Ze[0].id,`rejected`)),children:e===`zh`?`不是`:`No`}),(0,Q.jsx)(F,{variant:`primary`,className:`min-h-11 flex-1 sm:flex-none`,disabled:D===Ze[0].id,onClick:()=>void We(Ze[0].id,()=>Fe(Ze[0].id,`active`)),children:e===`zh`?`是的`:`That’s right`})]})]})]}):null,(0,Q.jsx)(Ft,{title:e===`zh`?`xopc 对我的了解`:`What xopc knows about me`,action:(0,Q.jsx)(F,{variant:`ghost`,className:`h-8 shrink-0`,onClick:()=>Be(`understanding`),children:t.seeAll}),children:(0,Q.jsx)(`div`,{className:`grid sm:grid-cols-2`,children:xt.map(({key:e,icon:t,label:n,hint:r,count:i})=>(0,Q.jsxs)(`button`,{type:`button`,className:`group flex min-h-24 w-full items-center gap-4 border-t border-edge-subtle px-5 py-4 text-left first:border-t-0 hover:bg-surface-hover focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent sm:[&:nth-child(-n+2)]:border-t-0 sm:[&:nth-child(even)]:border-l`,onClick:()=>jt(`all`),"aria-label":`${n}: ${i}`,children:[(0,Q.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Q.jsx)(t,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:n}),(0,Q.jsx)(`span`,{className:`mt-0.5 block truncate text-xs text-fg-subtle`,children:r})]}),(0,Q.jsx)(`span`,{className:`text-sm tabular-nums text-fg-muted`,children:i}),(0,Q.jsx)(l,{className:`size-4 shrink-0 text-fg-subtle transition-transform group-hover:translate-x-0.5`,"aria-hidden":`true`})]},e))})}),(0,Q.jsxs)(`div`,{className:`grid items-start gap-8 lg:grid-cols-2`,children:[(0,Q.jsx)(Ft,{title:t.howWeWork,className:`min-w-0`,children:lt.length||ut.length?(0,Q.jsxs)(Q.Fragment,{children:[lt.slice(0,3).map(t=>(0,Q.jsx)(zt,{rule:t,language:e,busy:D===t.id,onToggle:()=>void We(t.id,()=>fe(t.id,t.status===`active`?`disabled`:`active`))},t.id)),ut.slice(0,2).map(t=>(0,Q.jsx)(Bt,{suggestion:t,language:e,busy:D===t.id,onConfirm:()=>void We(t.id,()=>Te(t))},t.id))]}):(0,Q.jsx)(It,{icon:(0,Q.jsx)(G,{className:`size-5`}),children:t.noRules})}),(0,Q.jsx)(Ft,{title:t.workMemory,className:`min-w-0`,action:(0,Q.jsx)(F,{variant:`ghost`,className:`h-8 shrink-0`,onClick:()=>Mt(`all`),children:t.seeAll}),children:St.length?(0,Q.jsx)(`div`,{"data-testid":`memory-summary-grid`,className:`grid gap-3 bg-surface-base ${wt}`,children:Ct.map(({kind:t,count:n})=>(0,Q.jsxs)(`button`,{type:`button`,className:`group flex min-h-28 cursor-pointer items-start justify-between rounded-2xl bg-surface-panel px-5 py-5 text-left transition-colors hover:bg-surface-hover focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,onClick:()=>Mt(t),"aria-label":`${Nt(t,e)}: ${n}`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`span`,{className:`block text-2xl font-semibold tabular-nums text-fg`,children:n}),(0,Q.jsx)(`span`,{className:`mt-1 block text-sm text-fg-muted`,children:Nt(t,e)})]}),(0,Q.jsx)(l,{className:`mt-1 size-4 shrink-0 text-fg-subtle transition-transform group-hover:translate-x-0.5 group-hover:text-fg-muted motion-reduce:transform-none`,"aria-hidden":`true`})]},t))}):(0,Q.jsx)(It,{icon:(0,Q.jsx)(Ee,{className:`size-5`}),children:t.noKnowledge})})]})]}):null,ee===`understanding`?(0,Q.jsxs)(`div`,{id:`understanding-panel-understanding`,role:`tabpanel`,"aria-labelledby":`understanding-tab-understanding`,className:`space-y-10`,children:[(0,Q.jsx)(`div`,{className:`flex w-full gap-1 rounded-xl bg-surface-panel p-1 sm:w-fit`,role:`group`,"aria-label":e===`zh`?`记忆分类`:`Memory category`,children:[{id:`personal`,label:e===`zh`?`关于我`:`About me`,icon:xe,count:Xe.length},{id:`work`,label:e===`zh`?`工作记忆`:`Work memory`,icon:U,count:dt.length}].map(({id:e,label:t,icon:n,count:r})=>(0,Q.jsxs)(`button`,{type:`button`,"aria-pressed":_e===e,className:`touch-target flex min-h-10 flex-1 items-center justify-center gap-2 rounded-lg px-3 text-sm font-medium transition-colors sm:flex-none ${_e===e?`bg-surface-active text-fg`:`text-fg-muted hover:bg-surface-hover hover:text-fg`}`,onClick:()=>ye(e),children:[(0,Q.jsx)(n,{className:`size-4`,"aria-hidden":`true`}),t,(0,Q.jsx)(`span`,{className:`text-xs tabular-nums text-fg-subtle`,children:r})]},e))}),_e===`personal`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`px-1 pt-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Q.jsx)(H,{className:`mt-0.5 size-5 shrink-0 text-accent-fg`,"aria-hidden":`true`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:`font-semibold text-fg`,children:t.aboutYouTitle}),(0,Q.jsx)(`p`,{className:`mt-1 max-w-3xl text-sm leading-6 text-fg-muted`,children:t.aboutYouHint})]})]}),(0,Q.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-2`,role:`group`,"aria-label":t.understandingFilterHint,children:At.map(e=>(0,Q.jsxs)(`button`,{type:`button`,"aria-pressed":Y===e.id,className:`touch-target inline-flex min-h-9 cursor-pointer items-center gap-1.5 rounded-full px-3 py-1.5 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent ${Y===e.id?`bg-surface-active text-fg`:`text-fg-muted hover:bg-surface-hover hover:text-fg`}`,onClick:()=>ge(e.id),children:[e.label,(0,Q.jsx)(`span`,{className:`tabular-nums text-fg-subtle`,children:e.count})]},e.id))})]}),ht.length?ht.map(({key:e,title:t,icon:n,items:r})=>(0,Q.jsx)(Ft,{title:t,action:(0,Q.jsx)(n,{className:`size-4 text-fg-subtle`,"aria-hidden":`true`}),children:(0,Q.jsx)(`div`,{children:r.map(Ht)})},e)):(0,Q.jsx)(`div`,{className:`rounded-2xl bg-surface-panel`,children:(0,Q.jsx)(It,{icon:(0,Q.jsx)(H,{className:`size-5`}),children:t.emptyGroup})})]}):(0,Q.jsxs)(`div`,{className:`space-y-8`,children:[(0,Q.jsxs)(`div`,{className:`px-1 pt-1`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,Q.jsxs)(`div`,{className:`max-w-2xl`,children:[(0,Q.jsx)(`h2`,{className:`font-semibold text-fg`,children:Oe===`all`?t.allMemory:Nt(Oe,e)}),(0,Q.jsxs)(`p`,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:[pt.length,` `,t.items,` · `,t.memoryLibraryHint]})]}),(0,Q.jsxs)(`label`,{className:`relative block sm:w-80`,children:[(0,Q.jsx)(C,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:t.searchPlaceholder}),(0,Q.jsx)(`input`,{type:`search`,value:B,onChange:e=>{V(e.target.value),ne(24)},placeholder:t.searchPlaceholder,className:`h-10 w-full rounded-xl border border-edge bg-surface-base pl-9 pr-3 text-sm text-fg outline-none transition placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]})]}),(0,Q.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,role:`group`,"aria-label":t.memoryFilterHint,children:[(0,Q.jsxs)(`button`,{type:`button`,"aria-pressed":Oe===`all`,className:`touch-target inline-flex min-h-9 cursor-pointer items-center gap-1.5 rounded-full px-3 py-1.5 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent ${Oe===`all`?`bg-surface-active text-fg`:`text-fg-muted hover:bg-surface-hover hover:text-fg`}`,onClick:()=>Me(`all`),children:[t.allMemory,(0,Q.jsx)(`span`,{className:`tabular-nums text-fg-subtle`,children:dt.length})]}),St.map(({kind:t,count:n})=>(0,Q.jsxs)(`button`,{type:`button`,"aria-pressed":Oe===t,className:`touch-target inline-flex min-h-9 cursor-pointer items-center gap-1.5 rounded-full px-3 py-1.5 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent ${Oe===t?`bg-surface-active text-fg`:`text-fg-muted hover:bg-surface-hover hover:text-fg`}`,onClick:()=>Me(t),children:[Nt(t,e),(0,Q.jsx)(`span`,{className:`tabular-nums text-fg-subtle`,children:n})]},t))]})]}),mt.length?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`space-y-8`,children:Et.map(({kind:t,items:n,totalCount:r})=>(0,Q.jsxs)(`section`,{className:`overflow-hidden rounded-2xl bg-surface-panel`,children:[(0,Q.jsxs)(`header`,{className:`flex items-center justify-between px-5 pb-1 pt-4 sm:px-6`,children:[(0,Q.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:Nt(t,e)}),(0,Q.jsx)(`span`,{className:`text-xs tabular-nums text-fg-subtle`,children:r})]}),(0,Q.jsx)(`div`,{children:n.map(t=>(0,Q.jsx)(Vt,{item:t,language:e,busy:!!D,expanded:re===t.id,onToggle:()=>ie(e=>e===t.id?void 0:t.id),editing:M===`knowledge:${t.id}`,draft:I,onDraftChange:z,onEdit:()=>{N(`knowledge:${t.id}`),z(t.content)},onCancel:()=>{N(void 0),z(``)},onDelete:()=>void We(t.id,()=>ve(t.id)),onReview:(e,n)=>void We(t.id,async()=>{await ue(t,e,n),N(void 0),z(``)})},t.id))})]},t))}),mt.length>W?(0,Q.jsx)(`div`,{className:`flex justify-center pt-2`,children:(0,Q.jsx)(F,{onClick:()=>ne(e=>e+24),children:t.showMore})}):null]}):(0,Q.jsx)(`div`,{className:`rounded-2xl bg-surface-panel`,children:(0,Q.jsx)(It,{icon:(0,Q.jsx)(C,{className:`size-5`}),children:B.trim()?t.noKnowledgeMatch:t.noKnowledge})})]})]}):null,ee===`privacy`?(0,Q.jsxs)(`div`,{id:`understanding-panel-privacy`,role:`tabpanel`,"aria-labelledby":`understanding-tab-privacy`,className:`space-y-8`,children:[(0,Q.jsx)(`div`,{className:`px-1 pt-1`,children:(0,Q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Q.jsx)(se,{className:`mt-0.5 size-5 shrink-0 text-accent-fg`,"aria-hidden":`true`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:`font-semibold text-fg`,children:e===`zh`?`你的信息,由你掌控`:`Your information, under your control`}),(0,Q.jsx)(`p`,{className:`mt-1 max-w-3xl text-sm leading-6 text-fg-muted`,children:e===`zh`?`决定 xopc 可以记住什么、从哪里了解你,以及如何迁移你的数据。`:`Decide what xopc can remember, where it learns from, and how your data moves.`})]})]})}),(0,Q.jsx)(Ft,{title:e===`zh`?`记忆与使用`:`Memory & use`,children:(0,Q.jsxs)(`div`,{className:`divide-y divide-edge-subtle`,children:[[{key:`memory`,icon:H,title:e===`zh`?`长期记忆`:`Long-term memory`,detail:e===`zh`?`记住长期有用的信息,减少重复说明。`:`Remember useful information so you do not have to repeat yourself.`,enabled:f.settings.memoryEnabled},{key:`references`,icon:w,title:e===`zh`?`回答中的记忆引用`:`Memory references in answers`,detail:e===`zh`?`当个人信息影响回答时,显示本次参考内容。`:`Show what personal context was referenced when it shapes an answer.`,enabled:f.settings.showMemoryReferences}].map(({key:e,icon:t,title:n,detail:r,enabled:i})=>(0,Q.jsxs)(`button`,{type:`button`,role:`switch`,"aria-checked":i,disabled:!!D,className:`flex min-h-20 w-full items-center gap-4 px-5 py-4 text-left hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent disabled:opacity-60 sm:px-6`,onClick:()=>void We(`setting:${e}`,()=>he(e===`memory`?{memoryEnabled:!i}:{showMemoryReferences:!i})),children:[(0,Q.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Q.jsx)(t,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:n}),(0,Q.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:r})]}),(0,Q.jsx)(`span`,{className:`relative h-6 w-11 shrink-0 rounded-full transition-colors ${i?`bg-accent`:`bg-surface-active`}`,"aria-hidden":`true`,children:(0,Q.jsx)(`span`,{className:`absolute top-0.5 size-5 rounded-full bg-white shadow-sm transition-transform ${i?`translate-x-5`:`translate-x-0.5`}`})})]},e)),(0,Q.jsxs)(`div`,{className:`flex min-h-20 items-center gap-4 px-5 py-4 sm:px-6`,children:[(0,Q.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Q.jsx)(ce,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:e===`zh`?`敏感信息`:`Sensitive information`}),(0,Q.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:e===`zh`?`控制健康、财务等信息是否可以保存。`:`Control whether health, financial, and similar information can be saved.`})]}),(0,Q.jsxs)(u,{"aria-label":e===`zh`?`敏感信息策略`:`Sensitive information policy`,value:f.settings.sensitiveWritePolicy,disabled:!!D,onChange:e=>void We(`setting:sensitive`,()=>he({sensitiveWritePolicy:e.target.value})),children:[(0,Q.jsx)(d,{value:`confirm`,children:e===`zh`?`先询问`:`Ask first`}),(0,Q.jsx)(d,{value:`deny`,children:e===`zh`?`不保存`:`Never save`}),(0,Q.jsx)(d,{value:`allow`,children:e===`zh`?`允许`:`Allow`})]})]})]})}),(0,Q.jsx)(Ft,{title:e===`zh`?`数据管理`:`Data management`,children:(0,Q.jsxs)(`div`,{className:`divide-y divide-edge-subtle`,children:[(0,Q.jsxs)(a,{to:`/settings/imports`,className:`flex min-h-20 items-center gap-4 px-5 py-4 hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent sm:px-6`,children:[(0,Q.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Q.jsx)(de,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:e===`zh`?`从其他 AI 导入`:`Import from another AI`}),(0,Q.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:e===`zh`?`导入前预览新增、重复和冲突内容。`:`Preview new, duplicate, and conflicting items before import.`})]}),(0,Q.jsx)(l,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":`true`})]}),(0,Q.jsxs)(`button`,{type:`button`,disabled:!!D,className:`flex min-h-20 w-full items-center gap-4 px-5 py-4 text-left hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent disabled:opacity-60 sm:px-6`,onClick:()=>void We(`export`,De),children:[(0,Q.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Q.jsx)(g,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:e===`zh`?`下载我的记忆`:`Download my memory`}),(0,Q.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:e===`zh`?`导出为可阅读、可迁移的数据包。`:`Export a readable, portable archive.`})]}),(0,Q.jsx)(l,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":`true`})]})]})}),(0,Q.jsxs)(`section`,{className:`rounded-2xl bg-surface-panel px-5 py-5 sm:px-6`,children:[(0,Q.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:e===`zh`?`纠正与忘记`:`Correct and forget`}),(0,Q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:e===`zh`?`在“记忆”中打开任意一条内容的菜单,即可修改、调整作用范围或彻底删除。`:`Open any item in Memory to edit it, change where it applies, or delete it permanently.`}),(0,Q.jsx)(F,{variant:`ghost`,className:`mt-3`,onClick:()=>{ye(`personal`),Be(`understanding`)},children:e===`zh`?`管理记忆`:`Manage memory`})]})]}):null,(0,Q.jsx)(Lt,{open:oe,profile:Qe,language:e,saving:D===`profile`,onOpenChange:q,onSave:e=>void Ke(e)}),(0,Q.jsx)(Rt,{open:le,priority:$,title:at??``,outcome:ot?.desiredOutcome,language:e,saving:D===($?`priority:${$.id}`:`priority:create`),onOpenChange:J,onSave:e=>$?void qe($,e):void Je(e),onEnd:$?()=>void Ye($):void 0})]})}export{Ht as UserModelPage};
@@ -1 +1 @@
1
- import"./rolldown-runtime-aKtaBQYM.js";import{a as e,n as t,t as n}from"./vendor-react-BOUWij0V.js";import{t as r}from"./secret-input-D93UrW4C.js";import{t as i}from"./cn-JdwAhgNB.js";import{u as a}from"./voice-config-api-B4u4coFj.js";var o=t();e();var s=n();function c(e){let t=(0,o.c)(15),{kind:n,providerId:c,fieldId:u,value:d,onChange:f,labels:p,placeholder:m,className:h}=e,g=m===void 0?`sk-...`:m,_;t[0]!==n||t[1]!==c?(_=()=>a({kind:n,provider:c}).then(l),t[0]=n,t[1]=c,t[2]=_):_=t[2];let v=_,y;t[3]===h?y=t[4]:(y=i(`flex min-w-0 flex-col gap-1.5`,h),t[3]=h,t[4]=y);let b;t[5]!==u||t[6]!==p||t[7]!==f||t[8]!==g||t[9]!==v||t[10]!==d?(b=(0,s.jsx)(r,{id:u,value:d,onChange:f,placeholder:g,labels:p,reveal:v,loadFailedLabel:p.loadFailed,maskedHelp:p.maskedHelp,notInConfigFile:p.notInConfigFile,inputClassName:`text-xs`}),t[5]=u,t[6]=p,t[7]=f,t[8]=g,t[9]=v,t[10]=d,t[11]=b):b=t[11];let x;return t[12]!==y||t[13]!==b?(x=(0,s.jsx)(`div`,{className:y,children:b}),t[12]=y,t[13]=b,t[14]=x):x=t[14],x}function l(e){return e.apiKey??null}export{c as t};
1
+ import"./rolldown-runtime-aKtaBQYM.js";import{a as e,n as t,t as n}from"./vendor-react-BOUWij0V.js";import{t as r}from"./secret-input-D93UrW4C.js";import{t as i}from"./cn-JdwAhgNB.js";import{u as a}from"./voice-config-api-3yyVwXln.js";var o=t();e();var s=n();function c(e){let t=(0,o.c)(15),{kind:n,providerId:c,fieldId:u,value:d,onChange:f,labels:p,placeholder:m,className:h}=e,g=m===void 0?`sk-...`:m,_;t[0]!==n||t[1]!==c?(_=()=>a({kind:n,provider:c}).then(l),t[0]=n,t[1]=c,t[2]=_):_=t[2];let v=_,y;t[3]===h?y=t[4]:(y=i(`flex min-w-0 flex-col gap-1.5`,h),t[3]=h,t[4]=y);let b;t[5]!==u||t[6]!==p||t[7]!==f||t[8]!==g||t[9]!==v||t[10]!==d?(b=(0,s.jsx)(r,{id:u,value:d,onChange:f,placeholder:g,labels:p,reveal:v,loadFailedLabel:p.loadFailed,maskedHelp:p.maskedHelp,notInConfigFile:p.notInConfigFile,inputClassName:`text-xs`}),t[5]=u,t[6]=p,t[7]=f,t[8]=g,t[9]=v,t[10]=d,t[11]=b):b=t[11];let x;return t[12]!==y||t[13]!==b?(x=(0,s.jsx)(`div`,{className:y,children:b}),t[12]=y,t[13]=b,t[14]=x):x=t[14],x}function l(e){return e.apiKey??null}export{c as t};
@@ -1 +1 @@
1
- import{a as e,r as t}from"./locale-store-D6_rF-qT.js";import{n}from"./gateway-config-swr-CNf0ZeRw.js";async function r(){return(await e(t(`/api/voice/realtime/status`))).payload}async function i(n,r){let i=await e(t(`/api/voice/realtime/preview`),{method:`POST`,signal:n,body:JSON.stringify(r?{voice:r}:{})});if(i.payload.sampleRate!==24e3)throw Error(`Unsupported preview sample rate`);return Uint8Array.from(atob(i.payload.audio),e=>e.charCodeAt(0)).buffer}async function a(n,r,i){let a=new URLSearchParams({provider:n,model:r});return i&&a.set(`purpose`,i),(await e(t(`/api/voice/tts-voices?${a.toString()}`))).payload?.voices??[]}function o(){return{enabled:!1,provider:`openai`,providers:{alibaba:{model:`qwen-audio-3.1-asr-flash`},openai:{model:`gpt-4o-mini-transcribe`}},fallback:{enabled:!1,order:[]}}}function s(){return{enabled:!0,provider:`xopc-cloud`,trigger:`off`,maxTextLength:512,timeoutMs:6e4,providers:{alibaba:{model:`qwen3-tts-flash`,voice:`Cherry`},openai:{model:`tts-1`,voice:`alloy`},edge:{voice:`zh-CN-XiaoxiaoNeural`,lang:`zh-CN`},minimax:{model:`speech-2.8-hd`,voice:`male-qn-qingse`}}}}function c(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function l(e){return typeof e==`string`&&e.trim().length>0?e.trim():`openai`}function u(e){let t=o();if(!c(e))return t;let n=l(e.provider),r=t.fallback??{enabled:!1,order:[]};if(c(e.fallback)){let t=Array.isArray(e.fallback.order)?e.fallback.order.filter(e=>typeof e==`string`&&e.trim().length>0):r.order;r={enabled:typeof e.fallback.enabled==`boolean`?e.fallback.enabled:r.enabled,order:t.length?t:r.order}}let i={...t.providers??{},...c(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,c(t)?{...t}:{}])):{}};return{enabled:!!e.enabled,provider:n,providers:i,fallback:r}}function d(e){return typeof e==`string`&&e.trim().length>0?e.trim():`xopc-cloud`}function f(e){let t=s();if(!c(e))return t;let n=d(e.provider),r=e.trigger===`off`||e.trigger===`always`||e.trigger===`inbound`||e.trigger===`tagged`?e.trigger:`off`,i={...t.providers??{},...c(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,c(t)?{...t}:{}])):{}};return{enabled:!!e.enabled,provider:n,trigger:r,maxTextLength:typeof e.maxTextLength==`number`&&Number.isFinite(e.maxTextLength)?e.maxTextLength:t.maxTextLength,timeoutMs:typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)?e.timeoutMs:t.timeoutMs,providers:i}}function p(e){return{...e}}function m(e){return{...e}}function h(e){let t=c(e)?e:{},n=c(t.voice)?t.voice:{},r=c(n.input)?n.input:{},i=c(r.refinement)?r.refinement:{},a=c(n.realtime)?n.realtime:{},o=i.mode===`punctuation`||i.mode===`light`||i.mode===`custom`?i.mode:`off`;return{stt:u(t.stt),tts:f(t.tts),voice:{languageMode:n.languageMode===`manual`?`manual`:`auto`,language:n.language===`zh`?`zh`:`en`,input:{refinement:{mode:o,...typeof i.model==`string`&&i.model.trim()?{model:i.model.trim()}:{},...typeof i.customInstruction==`string`?{customInstruction:i.customInstruction}:{}}},realtime:{enabled:a.enabled===!0,defaultEngine:a.defaultEngine===`omni`?`omni`:`agent`,silenceDurationMs:typeof a.silenceDurationMs==`number`?a.silenceDurationMs:1200,idleTimeoutMs:typeof a.idleTimeoutMs==`number`?a.idleTimeoutMs:6e4,maxDictationMs:typeof a.maxDictationMs==`number`?a.maxDictationMs:6e5,maxConversationMs:typeof a.maxConversationMs==`number`?a.maxConversationMs:36e5,bargeIn:a.bargeIn!==!1,...c(a.stt)&&a.stt.provider===`xopc-cloud`&&typeof a.stt.model==`string`?{stt:{provider:`xopc-cloud`,model:a.stt.model}}:{},...c(a.tts)&&(a.tts.provider===`alibaba`||a.tts.provider===`xopc-cloud`)?{tts:{provider:a.tts.provider,...typeof a.tts.model==`string`?{model:a.tts.model}:{},...typeof a.tts.voice==`string`?{voice:a.tts.voice}:{}}}:{},...c(a.omni)?{omni:{...a.omni}}:{}}}}}async function g(){return h((await e(t(`/api/config`))).payload?.config??{})}async function _(r){await e(t(`/api/config`),{method:`PATCH`,body:JSON.stringify({stt:p(r.stt),tts:m(r.tts),voice:r.voice})}),r.voice.languageMode===`auto`&&await e(t(`/api/voice/language`),{method:`POST`,body:JSON.stringify({language:r.voice.language})}),typeof window<`u`&&window.dispatchEvent(new Event(`voice-config-changed`)),n()}async function v(){let n=await e(t(`/api/voice/models`));if(!n.payload?.models)throw Error(`Missing voice models payload`);return n.payload.models}async function y(){let n=await e(t(`/api/voice/providers`));if(!n.payload?.providers)throw Error(`Missing voice providers payload`);return n.payload}async function b(){let n=await e(t(`/api/voice/stt-providers`));if(!n.payload?.providers)throw Error(`Missing STT providers payload`);return n.payload}async function x(n,r){let i=await e(t(`/api/voice/tts-test`),{method:`POST`,signal:r,body:JSON.stringify(n)});if(i.ok===!1){let e=typeof i.error==`string`?i.error:i.error?.message;throw Error(e||`TTS test failed`)}if(!i.payload||typeof i.payload.audio!=`string`||!i.payload.audio.trim())throw Error(`TTS test returned no audio. Check the selected voice engine and try again.`);return i.payload}async function S(n){let r=await e(t(`/api/voice/reveal-api-key`),{method:`POST`,body:JSON.stringify(n)});if(!r.payload)throw Error(`Missing reveal payload`);return r.payload}export{g as a,_ as c,x as d,y as i,i as l,a as n,b as o,v as r,h as s,r as t,S as u};
1
+ import{a as e,r as t}from"./locale-store-COVscAqC.js";import{n}from"./gateway-config-swr-7RKqgU_U.js";async function r(){return(await e(t(`/api/voice/realtime/status`))).payload}async function i(n,r){let i=await e(t(`/api/voice/realtime/preview`),{method:`POST`,signal:n,body:JSON.stringify(r?{voice:r}:{})});if(i.payload.sampleRate!==24e3)throw Error(`Unsupported preview sample rate`);return Uint8Array.from(atob(i.payload.audio),e=>e.charCodeAt(0)).buffer}async function a(n,r,i){let a=new URLSearchParams({provider:n,model:r});return i&&a.set(`purpose`,i),(await e(t(`/api/voice/tts-voices?${a.toString()}`))).payload?.voices??[]}function o(){return{enabled:!1,provider:`openai`,providers:{alibaba:{model:`qwen-audio-3.1-asr-flash`},openai:{model:`gpt-4o-mini-transcribe`}},fallback:{enabled:!1,order:[]}}}function s(){return{enabled:!0,provider:`xopc-cloud`,trigger:`off`,maxTextLength:512,timeoutMs:6e4,providers:{alibaba:{model:`qwen3-tts-flash`,voice:`Cherry`},openai:{model:`tts-1`,voice:`alloy`},edge:{voice:`zh-CN-XiaoxiaoNeural`,lang:`zh-CN`},minimax:{model:`speech-2.8-hd`,voice:`male-qn-qingse`}}}}function c(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function l(e){return typeof e==`string`&&e.trim().length>0?e.trim():`openai`}function u(e){let t=o();if(!c(e))return t;let n=l(e.provider),r=t.fallback??{enabled:!1,order:[]};if(c(e.fallback)){let t=Array.isArray(e.fallback.order)?e.fallback.order.filter(e=>typeof e==`string`&&e.trim().length>0):r.order;r={enabled:typeof e.fallback.enabled==`boolean`?e.fallback.enabled:r.enabled,order:t.length?t:r.order}}let i={...t.providers??{},...c(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,c(t)?{...t}:{}])):{}};return{enabled:!!e.enabled,provider:n,providers:i,fallback:r}}function d(e){return typeof e==`string`&&e.trim().length>0?e.trim():`xopc-cloud`}function f(e){let t=s();if(!c(e))return t;let n=d(e.provider),r=e.trigger===`off`||e.trigger===`always`||e.trigger===`inbound`||e.trigger===`tagged`?e.trigger:`off`,i={...t.providers??{},...c(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,c(t)?{...t}:{}])):{}};return{enabled:!!e.enabled,provider:n,trigger:r,maxTextLength:typeof e.maxTextLength==`number`&&Number.isFinite(e.maxTextLength)?e.maxTextLength:t.maxTextLength,timeoutMs:typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)?e.timeoutMs:t.timeoutMs,providers:i}}function p(e){return{...e}}function m(e){return{...e}}function h(e){let t=c(e)?e:{},n=c(t.voice)?t.voice:{},r=c(n.input)?n.input:{},i=c(r.refinement)?r.refinement:{},a=c(n.realtime)?n.realtime:{},o=i.mode===`punctuation`||i.mode===`light`||i.mode===`custom`?i.mode:`off`;return{stt:u(t.stt),tts:f(t.tts),voice:{languageMode:n.languageMode===`manual`?`manual`:`auto`,language:n.language===`zh`?`zh`:`en`,input:{refinement:{mode:o,...typeof i.model==`string`&&i.model.trim()?{model:i.model.trim()}:{},...typeof i.customInstruction==`string`?{customInstruction:i.customInstruction}:{}}},realtime:{enabled:a.enabled===!0,defaultEngine:a.defaultEngine===`omni`?`omni`:`agent`,silenceDurationMs:typeof a.silenceDurationMs==`number`?a.silenceDurationMs:1200,idleTimeoutMs:typeof a.idleTimeoutMs==`number`?a.idleTimeoutMs:6e4,maxDictationMs:typeof a.maxDictationMs==`number`?a.maxDictationMs:6e5,maxConversationMs:typeof a.maxConversationMs==`number`?a.maxConversationMs:36e5,bargeIn:a.bargeIn!==!1,...c(a.stt)&&a.stt.provider===`xopc-cloud`&&typeof a.stt.model==`string`?{stt:{provider:`xopc-cloud`,model:a.stt.model}}:{},...c(a.tts)&&(a.tts.provider===`alibaba`||a.tts.provider===`xopc-cloud`)?{tts:{provider:a.tts.provider,...typeof a.tts.model==`string`?{model:a.tts.model}:{},...typeof a.tts.voice==`string`?{voice:a.tts.voice}:{}}}:{},...c(a.omni)?{omni:{...a.omni}}:{}}}}}async function g(){return h((await e(t(`/api/config`))).payload?.config??{})}async function _(r){await e(t(`/api/config`),{method:`PATCH`,body:JSON.stringify({stt:p(r.stt),tts:m(r.tts),voice:r.voice})}),r.voice.languageMode===`auto`&&await e(t(`/api/voice/language`),{method:`POST`,body:JSON.stringify({language:r.voice.language})}),typeof window<`u`&&window.dispatchEvent(new Event(`voice-config-changed`)),n()}async function v(){let n=await e(t(`/api/voice/models`));if(!n.payload?.models)throw Error(`Missing voice models payload`);return n.payload.models}async function y(){let n=await e(t(`/api/voice/providers`));if(!n.payload?.providers)throw Error(`Missing voice providers payload`);return n.payload}async function b(){let n=await e(t(`/api/voice/stt-providers`));if(!n.payload?.providers)throw Error(`Missing STT providers payload`);return n.payload}async function x(n,r){let i=await e(t(`/api/voice/tts-test`),{method:`POST`,signal:r,body:JSON.stringify(n)});if(i.ok===!1){let e=typeof i.error==`string`?i.error:i.error?.message;throw Error(e||`TTS test failed`)}if(!i.payload||typeof i.payload.audio!=`string`||!i.payload.audio.trim())throw Error(`TTS test returned no audio. Check the selected voice engine and try again.`);return i.payload}async function S(n){let r=await e(t(`/api/voice/reveal-api-key`),{method:`POST`,body:JSON.stringify(n)});if(!r.payload)throw Error(`Missing reveal payload`);return r.payload}export{g as a,_ as c,x as d,y as i,i as l,a as n,b as o,v as r,h as s,r as t,S 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"./x-B_N4OPjy.js";import{t as a}from"./messages-Bnx3GMDB.js";import{n as o}from"./locale-store-D6_rF-qT.js";import{a as s,i as c,o as l,r as u,s as d,t as f}from"./dist-BGTk37IG.js";import{t as p}from"./button-CS04eWY9.js";import{$ as m,G as h,la as g}from"./index-DpLD-7Hc.js";var _=n(),v=e(t(),1),y=r(),b=180;function x(e){let t=(0,_.c)(40),{requestedOpen:n,onExited:r}=e,x=o(C),w=m(S),[T,E]=(0,v.useState)(!0),D=(0,v.useRef)(!1),O=(0,v.useRef)(null),k;t[0]===x?k=t[1]:(k=a(x),t[0]=x,t[1]=k);let A=k.onboarding.workDiscovery,j=w?x===`zh`?`在后台继续`:`Continue in background`:x===`zh`?`稍后再说`:`Maybe later`,M;t[2]===r?M=t[3]:(M=()=>{if(D.current)return;D.current=!0,E(!1);let e=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?0:b;O.current=window.setTimeout(r,e)},t[2]=r,t[3]=M);let N=M,P,F;t[4]!==N||t[5]!==n?(P=()=>{n||N()},F=[N,n],t[4]=N,t[5]=n,t[6]=P,t[7]=F):(P=t[6],F=t[7]),(0,v.useEffect)(P,F);let I,L;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(I=()=>()=>{O.current!==null&&window.clearTimeout(O.current)},L=[],t[8]=I,t[9]=L):(I=t[8],L=t[9]),(0,v.useEffect)(I,L);let R;t[10]===N?R=t[11]:(R=e=>{e||N()},t[10]=N,t[11]=R);let z;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,y.jsx)(s,{className:`xopc-dialog-overlay fixed inset-0 z-[75] bg-scrim backdrop-blur-[1px]`}),t[12]=z):z=t[12];let B;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,y.jsx)(g,{className:`size-7 shrink-0`,"aria-hidden":!0}),t[13]=B):B=t[13];let V;t[14]===A.title?V=t[15]:(V=(0,y.jsx)(d,{className:`truncate text-sm font-semibold text-fg`,children:A.title}),t[14]=A.title,t[15]=V);let H;t[16]===A.subtitle?H=t[17]:(H=(0,y.jsx)(c,{className:`sr-only`,children:A.subtitle}),t[16]=A.subtitle,t[17]=H);let U;t[18]!==V||t[19]!==H?(U=(0,y.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2.5`,children:[B,V,H]}),t[18]=V,t[19]=H,t[20]=U):U=t[20];let W;t[21]===j?W=t[22]:(W=(0,y.jsx)(`span`,{className:`hidden text-xs sm:inline`,children:j}),t[21]=j,t[22]=W);let G;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(G=(0,y.jsx)(i,{className:`size-4`,"aria-hidden":!0}),t[23]=G):G=t[23];let K;t[24]!==j||t[25]!==N||t[26]!==W?(K=(0,y.jsxs)(p,{type:`button`,variant:`ghost`,className:`h-9 shrink-0 gap-1.5 px-2.5 text-fg-muted`,title:j,"aria-label":j,onClick:N,children:[W,G]}),t[24]=j,t[25]=N,t[26]=W,t[27]=K):K=t[27];let q;t[28]!==U||t[29]!==K?(q=(0,y.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center justify-between gap-4 border-b border-edge bg-surface-panel px-4 sm:px-5`,children:[U,K]}),t[28]=U,t[29]=K,t[30]=q):q=t[30];let J;t[31]===N?J=t[32]:(J=(0,y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,y.jsx)(h,{embedded:!0,onRequestClose:N})}),t[31]=N,t[32]=J);let Y;t[33]!==q||t[34]!==J?(Y=(0,y.jsxs)(l,{children:[z,(0,y.jsx)(u,{className:`xopc-work-discovery-dialog pointer-events-none fixed inset-0 z-[76] flex items-center justify-center p-3 outline-none sm:p-6`,children:(0,y.jsxs)(`section`,{className:`xopc-work-discovery-panel pointer-events-auto flex h-[min(47.5rem,calc(100dvh-1.5rem))] w-[min(45rem,calc(100vw-1.5rem))] flex-col overflow-hidden rounded-xl border border-edge bg-surface-base shadow-float sm:h-[min(47.5rem,calc(100dvh-3rem))] sm:w-[min(45rem,calc(100vw-3rem))]`,children:[q,J]})})]}),t[33]=q,t[34]=J,t[35]=Y):Y=t[35];let X;return t[36]!==T||t[37]!==Y||t[38]!==R?(X=(0,y.jsx)(f,{open:T,onOpenChange:R,children:Y}),t[36]=T,t[37]=Y,t[38]=R,t[39]=X):X=t[39],X}function S(e){return e.status===`running`}function C(e){return e.language}export{x as WorkDiscoveryOverlay};
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"./x-B_N4OPjy.js";import{t as a}from"./messages-Bb2GK-Nj.js";import{n as o}from"./locale-store-COVscAqC.js";import{a as s,i as c,o as l,r as u,s as d,t as f}from"./dist-BGTk37IG.js";import{t as p}from"./button-CS04eWY9.js";import{$ as m,G as h,la as g}from"./index-FCEE325-.js";var _=n(),v=e(t(),1),y=r(),b=180;function x(e){let t=(0,_.c)(40),{requestedOpen:n,onExited:r}=e,x=o(C),w=m(S),[T,E]=(0,v.useState)(!0),D=(0,v.useRef)(!1),O=(0,v.useRef)(null),k;t[0]===x?k=t[1]:(k=a(x),t[0]=x,t[1]=k);let A=k.onboarding.workDiscovery,j=w?x===`zh`?`在后台继续`:`Continue in background`:x===`zh`?`稍后再说`:`Maybe later`,M;t[2]===r?M=t[3]:(M=()=>{if(D.current)return;D.current=!0,E(!1);let e=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?0:b;O.current=window.setTimeout(r,e)},t[2]=r,t[3]=M);let N=M,P,F;t[4]!==N||t[5]!==n?(P=()=>{n||N()},F=[N,n],t[4]=N,t[5]=n,t[6]=P,t[7]=F):(P=t[6],F=t[7]),(0,v.useEffect)(P,F);let I,L;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(I=()=>()=>{O.current!==null&&window.clearTimeout(O.current)},L=[],t[8]=I,t[9]=L):(I=t[8],L=t[9]),(0,v.useEffect)(I,L);let R;t[10]===N?R=t[11]:(R=e=>{e||N()},t[10]=N,t[11]=R);let z;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,y.jsx)(s,{className:`xopc-dialog-overlay fixed inset-0 z-[75] bg-scrim backdrop-blur-[1px]`}),t[12]=z):z=t[12];let B;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,y.jsx)(g,{className:`size-7 shrink-0`,"aria-hidden":!0}),t[13]=B):B=t[13];let V;t[14]===A.title?V=t[15]:(V=(0,y.jsx)(d,{className:`truncate text-sm font-semibold text-fg`,children:A.title}),t[14]=A.title,t[15]=V);let H;t[16]===A.subtitle?H=t[17]:(H=(0,y.jsx)(c,{className:`sr-only`,children:A.subtitle}),t[16]=A.subtitle,t[17]=H);let U;t[18]!==V||t[19]!==H?(U=(0,y.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2.5`,children:[B,V,H]}),t[18]=V,t[19]=H,t[20]=U):U=t[20];let W;t[21]===j?W=t[22]:(W=(0,y.jsx)(`span`,{className:`hidden text-xs sm:inline`,children:j}),t[21]=j,t[22]=W);let G;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(G=(0,y.jsx)(i,{className:`size-4`,"aria-hidden":!0}),t[23]=G):G=t[23];let K;t[24]!==j||t[25]!==N||t[26]!==W?(K=(0,y.jsxs)(p,{type:`button`,variant:`ghost`,className:`h-9 shrink-0 gap-1.5 px-2.5 text-fg-muted`,title:j,"aria-label":j,onClick:N,children:[W,G]}),t[24]=j,t[25]=N,t[26]=W,t[27]=K):K=t[27];let q;t[28]!==U||t[29]!==K?(q=(0,y.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center justify-between gap-4 border-b border-edge bg-surface-panel px-4 sm:px-5`,children:[U,K]}),t[28]=U,t[29]=K,t[30]=q):q=t[30];let J;t[31]===N?J=t[32]:(J=(0,y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,y.jsx)(h,{embedded:!0,onRequestClose:N})}),t[31]=N,t[32]=J);let Y;t[33]!==q||t[34]!==J?(Y=(0,y.jsxs)(l,{children:[z,(0,y.jsx)(u,{className:`xopc-work-discovery-dialog pointer-events-none fixed inset-0 z-[76] flex items-center justify-center p-3 outline-none sm:p-6`,children:(0,y.jsxs)(`section`,{className:`xopc-work-discovery-panel pointer-events-auto flex h-[min(47.5rem,calc(100dvh-1.5rem))] w-[min(45rem,calc(100vw-1.5rem))] flex-col overflow-hidden rounded-xl border border-edge bg-surface-base shadow-float sm:h-[min(47.5rem,calc(100dvh-3rem))] sm:w-[min(45rem,calc(100vw-3rem))]`,children:[q,J]})})]}),t[33]=q,t[34]=J,t[35]=Y):Y=t[35];let X;return t[36]!==T||t[37]!==Y||t[38]!==R?(X=(0,y.jsx)(f,{open:T,onOpenChange:R,children:Y}),t[36]=T,t[37]=Y,t[38]=R,t[39]=X):X=t[39],X}function S(e){return e.status===`running`}function C(e){return e.language}export{x as WorkDiscoveryOverlay};