@xopcai/xopc 0.0.419 → 0.0.421
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/adapters/cli-login.js +3 -3
- package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/telegram/src/inbound-processor.js +2 -2
- package/dist/extensions/telegram/src/outbound-sender.js +1 -1
- package/dist/extensions/telegram/src/plugin.js +2 -2
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +2 -2
- package/dist/extensions/weixin/src/auth/accounts.js +12 -12
- package/dist/extensions/weixin/src/messaging/debug-mode.js +5 -5
- package/dist/extensions/weixin/src/messaging/inbound.js +11 -11
- package/dist/gateway/static/root/assets/{activity-store-DnqOM8GN.js → activity-store-CKrylgib.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-1UABT2KS.js → agent-avatar-dicebear-Dv5Rda4y.js} +1 -1
- package/dist/gateway/static/root/assets/agent-avatar-display-B1ycycx2.js +2 -0
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D285zy0S.js +1 -0
- package/dist/gateway/static/root/assets/agent-plugin-dialog-D3yCqVan.js +1 -0
- package/dist/gateway/static/root/assets/{agents-O7mago-m.js → agents-DyAuR3rG.js} +5 -5
- package/dist/gateway/static/root/assets/{agents-admin-api-CyjykMEh.js → agents-admin-api-CASGzvkW.js} +1 -1
- package/dist/gateway/static/root/assets/{api-C1dxxDZx.js → api-C4LxuNzq.js} +1 -1
- package/dist/gateway/static/root/assets/{api-Ddrs70xV.js → api-Uk05lF9i.js} +1 -1
- package/dist/gateway/static/root/assets/app-management-settings-panel-CDnZNKHt.js +1 -0
- package/dist/gateway/static/root/assets/appearance-settings-CmCF7PZ5.js +1 -0
- package/dist/gateway/static/root/assets/apps-page-BR9qoA2P.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-n5lPr79c.js → archive-plugin-nuHYYVty.js} +1 -1
- package/dist/gateway/static/root/assets/automation-api-DtJfd1QM.js +1 -0
- package/dist/gateway/static/root/assets/automation-display-BlGt8MAC.js +2 -0
- package/dist/gateway/static/root/assets/automation-task-card-Cp3RIw5d.js +2 -0
- package/dist/gateway/static/root/assets/{automations-page-oLsNzu_6.js → automations-page-DM4IdUJh.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-CXLu04I-.js +9 -0
- package/dist/gateway/static/root/assets/{binary-plugins-D9VW7dWP.js → binary-plugins-CHCAr8jt.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-C477bTtO.js → block-editor-B0v8KxsO.js} +4 -4
- package/dist/gateway/static/root/assets/{browser-automation-inputs-CCiYXxmh.js → browser-automation-inputs-DjUW7PEB.js} +1 -1
- package/dist/gateway/static/root/assets/browser-automations-page-Cf8AoQz1.js +3 -0
- package/dist/gateway/static/root/assets/{browser-control-api-Y3fvmeBk.js → browser-control-api-C6NZgaA1.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-DjkGahlz.js → browser-settings-page-DV2FNEDf.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-DAyA681v.js → capabilities-CwdjWz2r.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-DRVXLssH.js → capabilities-D0-HCZ5J.js} +1 -1
- package/dist/gateway/static/root/assets/capabilities-page-DwDkritH.js +2 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-mme16Fbp.js +8 -0
- package/dist/gateway/static/root/assets/channels-lKFLu8p-.js +1 -0
- package/dist/gateway/static/root/assets/{chat-agents-api-D5nR_JVe.js → chat-agents-api-l80cvSac.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-chart-block-K2t333qv.js → chat-chart-block-BwP5QXEk.js} +1 -1
- package/dist/gateway/static/root/assets/chat-page-CT3K7lFT.js +71 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-CkFG6mA3.js → chat-terminal-dock-D2bV9YUL.js} +2 -2
- package/dist/gateway/static/root/assets/{list-filter-COkzTdOz.js → clipboard-copy-DuJk5WD6.js} +1 -1
- package/dist/gateway/static/root/assets/{command-palette-api-Do_66X1B.js → command-palette-api-CtapG8ck.js} +1 -1
- package/dist/gateway/static/root/assets/composer-payload-handoff-DYuhKZRC.js +1 -0
- package/dist/gateway/static/root/assets/{computer-settings-page-DBxOcMko.js → computer-settings-page-DZtMuihL.js} +1 -1
- package/dist/gateway/static/root/assets/connected-providers-grid-BQH5k3iC.js +1 -0
- package/dist/gateway/static/root/assets/{connector-service-page-rWpnchb3.js → connector-service-page-DrvFdP3G.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-api-DIBG72k4.js → connectors-api-BzkgVBYC.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-BtRNVCFy.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-CE-cZFCU.js → date-picker-ByTasrfl.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-7SpSfDSg.js → dependency-picker-Dh8hPmsT.js} +1 -1
- package/dist/gateway/static/root/assets/desktop-pet-CFz8bqyI.js +1 -0
- package/dist/gateway/static/root/assets/desktop-pet-settings-COaboNn1.js +1 -0
- package/dist/gateway/static/root/assets/{dev-view-store-57HgVuZ6.js → dev-view-store-D8XYHVqG.js} +1 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-BKMpLdIA.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-D4jMhpka.js → directory-picker-path-field-Cjv7rdo3.js} +1 -1
- package/dist/gateway/static/root/assets/discussion-annotation-sync-YvlVw17j.js +1 -0
- package/dist/gateway/static/root/assets/{dist-DNCdG_qB.js → dist-D3lWNSe7.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-BsK2LMXQ.js → extension-debug-page-CXx3m5-B.js} +1 -1
- package/dist/gateway/static/root/assets/extension-iframe-host-CnOdNwbo.js +1 -0
- package/dist/gateway/static/root/assets/{extension-marketplace-api-CVJPqJOB.js → extension-marketplace-api-BABmUY2s.js} +1 -1
- package/dist/gateway/static/root/assets/extension-page-C1nGr4DD.js +1 -0
- package/dist/gateway/static/root/assets/{extension-provider-Byrd8Sor.js → extension-provider-BA0Y2Rvs.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-QIPI8e7k.js +1 -0
- package/dist/gateway/static/root/assets/{file-preview-surface-BlprUrIs.js → file-preview-surface-BsB7bnFH.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-BAmUhiP1.js → gateway-config-swr-Bt8w0Iio.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-CsykKL4l.js → gateway-realtime-CyCCNUxm.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-0gmDfPeP.js +1 -0
- package/dist/gateway/static/root/assets/gateway-restart-Ty4AzDxa.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-settings-BA5-Uuwx.js → gateway-settings-BvKq7vuz.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-CtUB3g6N.js → gateway-startup-retry-N3k-C7c2.js} +1 -1
- package/dist/gateway/static/root/assets/{global-defaults-api-CINf-C6a.js → global-defaults-api-D8EB2vfY.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-eRuAzi58.js +2 -0
- package/dist/gateway/static/root/assets/image-generation-api-C99Fsofm.js +1 -0
- package/dist/gateway/static/root/assets/{imports-page-BWShtGRQ.js → imports-page-Cp9RquVb.js} +1 -1
- package/dist/gateway/static/root/assets/index-6vVrWfwM.js +11 -0
- package/dist/gateway/static/root/assets/index-DDGK6klk.css +1 -0
- package/dist/gateway/static/root/assets/install-connector-dialog-CsoAidXp.js +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CdM4BQwp.js → keyboard-shortcuts-settings-DFhOP2aD.js} +1 -1
- package/dist/gateway/static/root/assets/list-filter-CIPvpfLA.js +1 -0
- package/dist/gateway/static/root/assets/local-app-workbench-page-DbtU_A-l.js +1 -0
- package/dist/gateway/static/root/assets/{local-apps-page-CxyRVfjD.js → local-apps-page-rjhHfLpe.js} +1 -1
- package/dist/gateway/static/root/assets/{local-session-drafts-B9ZPwotC.js → local-session-drafts-DHM4vWDO.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-lIXD1FMw.js → locale-store-5Hf8J8-_.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-Dx_JIOpF.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-CuSzixOw.js +1 -0
- package/dist/gateway/static/root/assets/{markdown-view-CJt-i2Dp.js → markdown-view-pzSRu7av.js} +3 -3
- package/dist/gateway/static/root/assets/{media-plugins-D_bR23mA.js → media-plugins-3cJuHbO7.js} +1 -1
- package/dist/gateway/static/root/assets/messages-uXxg5p54.js +3 -0
- package/dist/gateway/static/root/assets/model-selector-ksLo-5B_.js +1 -0
- package/dist/gateway/static/root/assets/{models-hub-cache-za2fWJLg.js → models-hub-cache-DhZng2nF.js} +1 -1
- package/dist/gateway/static/root/assets/navigation-D62kPsA9.js +1 -0
- package/dist/gateway/static/root/assets/note-detail-panel-B6RbjwJq.js +5 -0
- package/dist/gateway/static/root/assets/note-image-lightbox-BCjvBqwy.js +1 -0
- package/dist/gateway/static/root/assets/{notes-api-C_458rv5.js → notes-api-DocbsBbT.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-B7889s6-.js +8 -0
- package/dist/gateway/static/root/assets/{oauth-api-C3X9FLYw.js → oauth-api-CCFIPbA0.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-provider-connect-H81se_3n.js → oauth-provider-connect-GxkF0vWJ.js} +1 -1
- package/dist/gateway/static/root/assets/open-capability-settings-Cvb65hQB.js +1 -0
- package/dist/gateway/static/root/assets/{page-context-capture-button-BkAlQ7cB.js → page-context-capture-button-CvWLVeRA.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-draft-ClLgaOaD.js → page-context-draft-CMRDNv4d.js} +1 -1
- package/dist/gateway/static/root/assets/page-header-store-reh1es-3.js +1 -0
- package/dist/gateway/static/root/assets/{personal-avatar-BLtHt8fV.js → personal-avatar-CqNJ48Ge.js} +1 -1
- package/dist/gateway/static/root/assets/personal-page-D95FHaw9.js +1 -0
- package/dist/gateway/static/root/assets/personal-settings-panel-DAcl8DU4.js +1 -0
- package/dist/gateway/static/root/assets/{phone-dependencies-card-DISHarj8.js → phone-dependencies-card-DLWblGj7.js} +1 -1
- package/dist/gateway/static/root/assets/phone-model-picker-ugrT9GJu.js +1 -0
- package/dist/gateway/static/root/assets/phone-settings-page-DIIt7JOE.js +1 -0
- package/dist/gateway/static/root/assets/{phone-workspace-store-fhnZrgy_.js → phone-workspace-store-mawKT5kV.js} +1 -1
- package/dist/gateway/static/root/assets/plugin-details-dialog-BdueMT3q.js +1 -0
- package/dist/gateway/static/root/assets/popover-select-DD8fmrxH.js +1 -0
- package/dist/gateway/static/root/assets/preference-select-fields-CmLZNwbm.js +1 -0
- package/dist/gateway/static/root/assets/product-automation-feedback-DYwhL37Y.js +7 -0
- package/dist/gateway/static/root/assets/{product-open-page-xn9G4hSI.js → product-open-page-B5G4X71t.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-DcoK-iZe.js → product-preview-content-BUheyLqt.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-modal-Ruw9WSKK.js → product-preview-modal-Cj_Zxu4G.js} +2 -2
- package/dist/gateway/static/root/assets/project-detail-page-CRJb69vP.js +7 -0
- package/dist/gateway/static/root/assets/project-understanding-D3w8cZEm.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-CkifzKjz.js +1 -0
- package/dist/gateway/static/root/assets/{providers-api-CzVkFKFg.js → providers-api-CKFg2PZQ.js} +1 -1
- package/dist/gateway/static/root/assets/{recording-upload-0jxahBMo.js → recording-upload-ZkmRf0GR.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-n8TwtJ_j.js → registry-api-B1Mh3bNo.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-cZpBi4Rk.js → remote-access-hub-Dw5rG-aA.js} +1 -1
- package/dist/gateway/static/root/assets/resource-unavailable-BUWsH3fp.js +1 -0
- package/dist/gateway/static/root/assets/route-preload-CRKbVwQ1.js +2 -0
- package/dist/gateway/static/root/assets/runtime-impact-DbySfhdp.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-api-D-8KjYK6.js → runtime-tools-api-BXvn5ImA.js} +1 -1
- package/dist/gateway/static/root/assets/runtime-tools-settings-panel-BALcypHp.js +1 -0
- package/dist/gateway/static/root/assets/schema-form-BKeP5G7b.js +1 -0
- package/dist/gateway/static/root/assets/service-recommendation-list-CpVUnz89.js +1 -0
- package/dist/gateway/static/root/assets/{session-api-CsCoI2im.js → session-api-VquhIBHI.js} +1 -1
- package/dist/gateway/static/root/assets/session-manager-DNMosCtW.js +23 -0
- package/dist/gateway/static/root/assets/sessions-page-DlvPkE5Y.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-Ckc1aCLG.js +1 -0
- package/dist/gateway/static/root/assets/{settings-advanced-section-BqoVSko2.js → settings-advanced-section-c9_iZ-46.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-mode-store-CBsJ-Qg2.js → settings-mode-store-Dem6-TBe.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-DROUGyJl.js → settings-page-B_wNfFQe.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-header-Bv-kQFTm.js → settings-page-header-C8a_oOyw.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-DHP6MrrL.js → settings-page-layout-CTSRWljG.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BNZoqF40.js +1 -0
- package/dist/gateway/static/root/assets/{share-link-dialog-BJHRQVKC.js → share-link-dialog-C5JTTxsy.js} +1 -1
- package/dist/gateway/static/root/assets/share-preview-page-D-KxzXgm.js +2 -0
- package/dist/gateway/static/root/assets/{shares-api-rtWVHA_d.js → shares-api-CztKbxdd.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-CzR21j6e.js +1 -0
- package/dist/gateway/static/root/assets/skill-api-B7kWl6LK.js +1 -0
- package/dist/gateway/static/root/assets/{skill-list-api-BzlKXPsE.js → skill-list-api-Cn07P6qZ.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-Cff2GgZb.js → skill-reload-api-Bhl0u16_.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-BmkuxHZe.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-BeQeUUMH.js → system-settings-panel-Ce6zIcki.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-CysJhG3B.js +2 -0
- package/dist/gateway/static/root/assets/task-result-evidence-CGZKMnNo.js +1 -0
- package/dist/gateway/static/root/assets/{terminal-panel-store-5Fzctajw.js → terminal-panel-store-YwLUkuyV.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-DW45fWYQ.js → theme-store-DOJ9tu-j.js} +1 -1
- package/dist/gateway/static/root/assets/tracing-settings-page-BplBpTdL.js +1 -0
- package/dist/gateway/static/root/assets/tunnel-api-B5-Ypvqa.js +1 -0
- package/dist/gateway/static/root/assets/{understanding-activity-store-CTe6TFB0.js → understanding-activity-store-CmwtE8Kd.js} +1 -1
- package/dist/gateway/static/root/assets/{understanding-refresh-store-mE9OKG6q.js → understanding-refresh-store-9apSmAVL.js} +1 -1
- package/dist/gateway/static/root/assets/usage-page-cPbirpXX.js +1 -0
- package/dist/gateway/static/root/assets/{use-autosave-Cs2Ga_Y_.js → use-autosave-B3p2QWaF.js} +1 -1
- package/dist/gateway/static/root/assets/use-composer-attachments-D-AEYC85.js +2 -0
- package/dist/gateway/static/root/assets/use-file-preview-expanded-CO4SC-LX.js +2 -0
- package/dist/gateway/static/root/assets/{use-personal-profile-BHL2AxWU.js → use-personal-profile-DocmhC9I.js} +1 -1
- package/dist/gateway/static/root/assets/{use-workspace-tree-CnmPZrpx.js → use-workspace-tree-VraTGKx-.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-DuRALzhe.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-3gyc2UV3.js → voice-api-key-field-DbSQHZZW.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-Cda2uBIC.js → voice-config-api-D9iNJSvm.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-input-shortcut-events-DtYHsPLF.js → voice-input-shortcut-events-hso9_VvT.js} +1 -1
- package/dist/gateway/static/root/assets/voice-transcribe-api-BqIs0jgv.js +1 -0
- package/dist/gateway/static/root/assets/{work-discovery-overlay-Dqu5CQCS.js → work-discovery-overlay-fsL9RJqB.js} +1 -1
- package/dist/gateway/static/root/assets/work-discovery-page-DAQPKVDs.js +1 -0
- package/dist/gateway/static/root/assets/{working-directory-picker-modal-DHl2cZY1.js → working-directory-picker-modal-Ta73QrNw.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-api-CtDbI6T7.js → workspace-api-CgrcNyBc.js} +2 -2
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-Dw6wtadX.js +1 -0
- package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-CTIbUfKb.js → workspace-file-preview-dialog-B7uBuPtA.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-open-location-menu-BwxouqdZ.js → workspace-open-location-menu-Bi2vRvaQ.js} +1 -1
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-CFb-23rS.js → xopc-cloud-account-card-CCOOBG-7.js} +1 -1
- package/dist/gateway/static/root/index.html +86 -81
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/index.js +2 -0
- package/dist/packages/gateway-contract/src/task-display.js +14 -0
- package/dist/src/agent/agent-manager.js +18 -18
- package/dist/src/agent/agent-scope.js +2 -2
- package/dist/src/agent/background-review/prompts.js +1 -1
- package/dist/src/agent/background-review/run-background-review.js +13 -13
- package/dist/src/agent/child-agent-factory.js +2 -2
- package/dist/src/agent/coding/repository-instructions.js +1 -1
- package/dist/src/agent/context/coordinator.js +2 -2
- package/dist/src/agent/context/execution-context.js +4 -4
- package/dist/src/agent/context/execution-scope.js +10 -5
- package/dist/src/agent/context/project-context.js +3 -3
- package/dist/src/agent/data-acquisition/service.js +1 -1
- package/dist/src/agent/embedded/codemode-extension.js +1 -1
- package/dist/src/agent/embedded/execution-tool-policy.js +1 -1
- package/dist/src/agent/embedded/external-tool-discovery.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +5 -5
- package/dist/src/agent/embedded/run-turn.js +15 -15
- package/dist/src/agent/embedded/session-runner.js +4 -4
- package/dist/src/agent/embedded/session-tool-result-guard.js +2 -2
- package/dist/src/agent/embedded/tool-result-truncation.js +1 -1
- package/dist/src/agent/embedded/xopc-tools-bridge.js +1 -1
- package/dist/src/agent/external-tools/cliProvider.js +4 -4
- package/dist/src/agent/external-tools/composio-provider.js +4 -4
- package/dist/src/agent/external-tools/endpoint-provider.js +6 -6
- package/dist/src/agent/external-tools/extension-provider.js +1 -1
- package/dist/src/agent/external-tools/gateway-tools.js +3 -3
- package/dist/src/agent/external-tools/memory-provider.js +1 -1
- package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
- package/dist/src/agent/image/generation/runtime.js +1 -1
- package/dist/src/agent/image/index.js +1 -1
- package/dist/src/agent/image/load-image-media.js +1 -1
- package/dist/src/agent/inbound/attachment-pipeline.js +3 -3
- package/dist/src/agent/inbound/inbound-loop.js +2 -2
- package/dist/src/agent/independent-execution.js +1 -1
- package/dist/src/agent/index.js +3 -3
- package/dist/src/agent/mcp/connection-drafts.js +1 -1
- package/dist/src/agent/memory/context-budget.js +1 -1
- package/dist/src/agent/memory/context-recovery.js +1 -1
- package/dist/src/agent/memory/index.js +1 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js +1 -1
- package/dist/src/agent/prompt/response-language.js +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +4 -4
- package/dist/src/agent/prompt/system-prompt-params.js +1 -1
- package/dist/src/agent/sandbox/exec-policy.js +1 -1
- package/dist/src/agent/service/direct-turn-helpers.js +4 -4
- package/dist/src/agent/service/process-direct-streaming.js +7 -7
- package/dist/src/agent/service/webchat-tts.js +2 -2
- package/dist/src/agent/service.js +23 -23
- package/dist/src/agent/session/session-config-service.js +2 -2
- package/dist/src/agent/session/session-hydrator.js +1 -1
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/filesystem-watcher.js +1 -1
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +2 -2
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +1 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/skills/skill-manager.js +1 -1
- package/dist/src/agent/skills/skill-sources.js +1 -1
- package/dist/src/agent/source-context/index.js +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +8 -8
- package/dist/src/agent/tools/automation-tool.d.ts +2 -1
- package/dist/src/agent/tools/automation-tool.js +10 -3
- package/dist/src/agent/tools/create-share-tool.js +3 -3
- package/dist/src/agent/tools/dataBatch.js +1 -1
- package/dist/src/agent/tools/delegate-tool.js +3 -3
- package/dist/src/agent/tools/exec-command.js +1 -1
- package/dist/src/agent/tools/executor.js +1 -1
- package/dist/src/agent/tools/factory.js +19 -18
- package/dist/src/agent/tools/fetch-text.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +3 -3
- package/dist/src/agent/tools/index.js +5 -5
- package/dist/src/agent/tools/list-dir.js +1 -1
- package/dist/src/agent/tools/personal-attention-tool.js +2 -2
- package/dist/src/agent/tools/personal-read-tool.js +2 -2
- package/dist/src/agent/tools/personal-request-result-tool.js +1 -1
- package/dist/src/agent/tools/personal-request-tool.js +4 -4
- package/dist/src/agent/tools/personal-result-tool.js +1 -1
- package/dist/src/agent/tools/personal-task-tool.js +7 -6
- package/dist/src/agent/tools/publish-artifacts.js +2 -2
- package/dist/src/agent/tools/read.js +2 -2
- package/dist/src/agent/tools/review-workspace.js +1 -1
- package/dist/src/agent/tools/send-media.js +1 -1
- package/dist/src/agent/tools/session-search-tool.js +1 -1
- package/dist/src/agent/tools/skills-tools.js +1 -1
- package/dist/src/agent/tools/task-collaboration-tool.js +2 -2
- package/dist/src/agent/tools/tts-tool.js +1 -1
- package/dist/src/agent/tools/user-context-tool.js +2 -2
- package/dist/src/agent/tools/web.js +1 -1
- package/dist/src/agent/tools/write.js +2 -2
- package/dist/src/agent/tools/xopc-use-tool.js +12 -10
- package/dist/src/agent/transcript/index.js +2 -2
- package/dist/src/agent/transcript/transcript-hygiene.js +2 -2
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/agent-catalog/repository.js +1 -1
- package/dist/src/agent-matching/delegation-service.js +1 -1
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +1 -1
- package/dist/src/auth/oauth/openai.js +1 -1
- package/dist/src/auth/oauth/xopc-cloud.js +1 -1
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/automations/api/routes.js +38 -0
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/automations/capabilities/write.js +25 -9
- package/dist/src/automations/configuration-conversation.d.ts +16 -0
- package/dist/src/automations/configuration-conversation.js +120 -0
- package/dist/src/automations/delivery/delivery-router.d.ts +2 -0
- package/dist/src/automations/delivery/delivery-router.js +30 -9
- package/dist/src/automations/domain/index.js +1 -1
- package/dist/src/automations/domain/types.d.ts +1 -0
- package/dist/src/automations/draft/automation-draft-service.js +1 -1
- package/dist/src/automations/index.js +6 -6
- package/dist/src/automations/service/action-executor.js +42 -13
- package/dist/src/automations/service/automation-service.d.ts +6 -0
- package/dist/src/automations/service/automation-service.js +47 -12
- package/dist/src/automations/service/index.js +2 -2
- package/dist/src/browser/native-messaging-host.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.js +2 -2
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.js +1 -1
- package/dist/src/capabilities/store-connector.js +1 -1
- package/dist/src/channels/attachments/voice-stt-webchat.js +2 -2
- package/dist/src/channels/index.js +2 -2
- package/dist/src/channels/outbound-sender.js +1 -1
- package/dist/src/channels/pairing/allow-from-file.js +9 -9
- package/dist/src/channels/pairing/pairing-store.js +6 -6
- package/dist/src/chat-commands/agent-edit.js +1 -1
- package/dist/src/chat-commands/builtins/config.js +3 -3
- package/dist/src/chat-commands/builtins/session.js +1 -1
- package/dist/src/chat-commands/builtins/thinking.js +1 -1
- package/dist/src/chat-commands/builtins/tts.js +1 -1
- package/dist/src/chat-commands/context.js +1 -1
- package/dist/src/chat-commands/index.js +3 -3
- package/dist/src/cli/commands/agent.js +8 -8
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/config.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js +1 -1
- package/dist/src/cli/commands/doctor/checks/gateway-health.js +1 -1
- package/dist/src/cli/commands/extension-agent-plugin.js +2 -2
- package/dist/src/cli/commands/extension-dev.js +1 -1
- package/dist/src/cli/commands/extension.js +2 -2
- package/dist/src/cli/commands/image.js +1 -1
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/mcp.js +2 -2
- package/dist/src/cli/commands/models.js +3 -3
- package/dist/src/cli/commands/onboard/channels/registry.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/commands/project.js +1 -1
- package/dist/src/cli/commands/skills.js +2 -2
- package/dist/src/cli/commands/tunnel.js +4 -4
- package/dist/src/cli/extension-cli-register.js +6 -6
- package/dist/src/cli/utils/gateway-client.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +3 -3
- package/dist/src/cli/utils/session.js +1 -1
- package/dist/src/computer/broker.js +16 -3
- package/dist/src/computer/diagnostics.js +1 -1
- package/dist/src/computer/errors.js +4 -0
- package/dist/src/computer/flows.js +1 -1
- package/dist/src/computer/model-adapter.js +1 -1
- package/dist/src/computer/runtime.js +3 -3
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/index.js +4 -4
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/connectors/cli/authorization.js +1 -1
- package/dist/src/connectors/composio-sessions.js +1 -1
- package/dist/src/connectors/composio.js +1 -1
- package/dist/src/connectors/connected-source-ingestion.js +3 -3
- package/dist/src/connectors/connected-source-understanding.js +5 -5
- package/dist/src/connectors/connection-recovery-service.js +4 -4
- package/dist/src/connectors/content-enrichment.js +1 -1
- package/dist/src/connectors/health.js +1 -1
- package/dist/src/discussions/live-worker.js +1 -1
- package/dist/src/discussions/sealer.js +1 -1
- package/dist/src/endpoint-tools/index.js +1 -1
- package/dist/src/endpoint-tools/runtime.js +2 -2
- package/dist/src/execution-environments/local-worktree-manager.js +1 -1
- package/dist/src/extensions/activation-context.js +3 -3
- package/dist/src/extensions/agent-plugins/auth.js +1 -1
- package/dist/src/extensions/agent-plugins/skill-catalog.js +3 -3
- package/dist/src/extensions/agent-plugins/source-http-fetch.js +1 -1
- package/dist/src/extensions/agent-plugins/validation.js +1 -1
- package/dist/src/extensions/api.js +3 -3
- package/dist/src/extensions/bundled-extension-activation.js +1 -1
- package/dist/src/extensions/index.js +3 -3
- package/dist/src/extensions/loader.js +2 -2
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/extensions/sdk/media.js +1 -1
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/automation-completion-delivery.d.ts +4 -0
- package/dist/src/gateway/automation-completion-delivery.js +14 -0
- package/dist/src/gateway/device-routes.js +2 -2
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/global-defaults-admin.js +1 -1
- package/dist/src/gateway/hono/app.js +3 -3
- package/dist/src/gateway/hono/lib/config-payload.js +3 -3
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/commands-skills.js +4 -4
- package/dist/src/gateway/hono/routes/config-patch/gateway.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/context-sources.js +1 -1
- package/dist/src/gateway/hono/routes/endpoint-tools.js +1 -1
- package/dist/src/gateway/hono/routes/home.js +1 -1
- package/dist/src/gateway/hono/routes/mcp.js +1 -1
- package/dist/src/gateway/hono/routes/memory-learning.js +3 -3
- package/dist/src/gateway/hono/routes/models.js +4 -4
- package/dist/src/gateway/hono/routes/notes.js +3 -3
- package/dist/src/gateway/hono/routes/phone-dependencies.js +1 -1
- package/dist/src/gateway/hono/routes/phone-setup.js +2 -2
- package/dist/src/gateway/hono/routes/phone.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +5 -5
- package/dist/src/gateway/hono/routes/runtime-tools.js +1 -1
- package/dist/src/gateway/hono/routes/session-command-handler.js +2 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +5 -5
- package/dist/src/gateway/hono/routes/sessions.js +3 -3
- package/dist/src/gateway/hono/routes/shares.js +2 -2
- package/dist/src/gateway/hono/routes/side-chats.js +1 -1
- package/dist/src/gateway/hono/routes/site-shares.js +1 -1
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/hono/routes/user-model.js +7 -7
- package/dist/src/gateway/hono/routes/voice.js +7 -7
- package/dist/src/gateway/image-generation-setup.js +1 -1
- package/dist/src/gateway/lock.js +11 -11
- package/dist/src/gateway/media-access.js +1 -1
- package/dist/src/gateway/mobile-privacy.js +2 -2
- package/dist/src/gateway/ports.js +6 -6
- package/dist/src/gateway/provider-model-setup.js +1 -1
- package/dist/src/gateway/respawn.js +2 -1
- package/dist/src/gateway/server.js +1 -1
- package/dist/src/gateway/service/agent-runner.js +3 -3
- package/dist/src/gateway/service/config-coordinator.js +2 -2
- package/dist/src/gateway/service/marketplace-service.js +2 -2
- package/dist/src/gateway/service/run-gateway-agent.js +4 -4
- package/dist/src/gateway/service/session-command-service.js +2 -2
- package/dist/src/gateway/service.js +46 -46
- package/dist/src/gateway/session-context-summary.js +4 -4
- package/dist/src/gateway/workspace-editor-path.js +2 -2
- package/dist/src/gateway/xopc-cloud-capability-setup.js +2 -2
- package/dist/src/home-intelligence/generator.js +2 -2
- package/dist/src/imports/importService.js +1 -1
- package/dist/src/imports/inventory.js +2 -2
- package/dist/src/imports/productImport.js +1 -1
- package/dist/src/imports/runtime.js +1 -1
- package/dist/src/infra/gateway-processes.js +2 -2
- package/dist/src/infra/path-env.js +3 -3
- package/dist/src/infra/update-global.js +9 -9
- package/dist/src/knowledge/connected-knowledge-pipeline.js +1 -1
- package/dist/src/knowledge/index.js +1 -1
- package/dist/src/knowledge-memory/repository.js +1 -1
- package/dist/src/knowledge-memory/usage-policy.js +1 -1
- package/dist/src/local-apps/service.js +3 -3
- package/dist/src/mcp/gateway-http-client.js +1 -1
- package/dist/src/media-understanding/openai-compatible-audio.js +1 -1
- package/dist/src/memory-learning/source-learning.js +5 -5
- package/dist/src/memory-learning/task-receipts.js +1 -1
- package/dist/src/notes/agent-context.js +4 -4
- package/dist/src/notes/index.js +1 -1
- package/dist/src/notes/service.js +3 -3
- package/dist/src/observability/store.d.ts +9 -0
- package/dist/src/observability/store.js +77 -32
- package/dist/src/personal-agent/capability-service.js +2 -2
- package/dist/src/personal-agent/communication.d.ts +1 -1
- package/dist/src/personal-agent/communication.js +3 -6
- package/dist/src/personal-agent/proactivity/routes.js +1 -1
- package/dist/src/personal-agent/proactivity/service.js +7 -7
- package/dist/src/personal-agent/prompt-context.js +7 -7
- package/dist/src/personal-agent/prompts.js +1 -1
- package/dist/src/personal-agent/reply-composer.js +10 -10
- package/dist/src/personal-agent/request-delivery.js +2 -2
- package/dist/src/personal-agent/request-service.js +9 -8
- package/dist/src/personal-agent/result-reader.js +1 -1
- package/dist/src/personal-agent/service.js +2 -2
- package/dist/src/personal-agent/task-cancel.js +1 -1
- package/dist/src/phone/repository.js +1 -1
- package/dist/src/phone/runtime.js +4 -4
- package/dist/src/projects/index.js +1 -1
- package/dist/src/projects/project-agent-suggestion.js +1 -1
- package/dist/src/projects/project-service.js +1 -1
- package/dist/src/projects/project-skill-service.js +2 -2
- package/dist/src/projects/workspace.js +1 -1
- package/dist/src/providers/model-reference-auditor.js +1 -1
- package/dist/src/realtime/runtime.js +1 -1
- package/dist/src/remote-access/exposure-manager.js +1 -1
- package/dist/src/routing/agent-session-key.js +1 -1
- package/dist/src/runtime-tools/archive.js +1 -1
- package/dist/src/runtime-tools/phone-dependencies.js +2 -2
- package/dist/src/session/index.js +2 -2
- package/dist/src/session/init-session-turn.js +1 -1
- package/dist/src/session/resolve-session.js +1 -1
- package/dist/src/session/store.js +5 -5
- package/dist/src/session/thinking-resolve.js +1 -1
- package/dist/src/share/hosted-session-share.js +2 -2
- package/dist/src/share/session-share-service.js +1 -1
- package/dist/src/share/share-store.js +1 -1
- package/dist/src/share/share-thumbnail.js +1 -1
- package/dist/src/share/site-share-store.js +1 -1
- package/dist/src/storage/sqlite/connection.js +9 -9
- package/dist/src/tasks/capabilities/read.js +2 -2
- package/dist/src/tasks/capabilities/write.js +2 -2
- package/dist/src/tasks/home-query-service.js +1 -1
- package/dist/src/tasks/index.js +4 -4
- package/dist/src/tasks/task-allocation-service.js +6 -6
- package/dist/src/tasks/task-application-service.js +6 -6
- package/dist/src/tasks/task-collaboration-delivery.js +1 -1
- package/dist/src/tasks/task-context-assembler.js +2 -2
- package/dist/src/tasks/task-contract-planner.js +3 -2
- package/dist/src/tasks/task-handoff-service.js +1 -1
- package/dist/src/tasks/task-handoff.js +5 -5
- package/dist/src/tasks/task-main-update-decision-service.js +3 -3
- package/dist/src/tasks/task-model-call.js +1 -1
- package/dist/src/tasks/task-research-result.js +4 -4
- package/dist/src/tasks/task-result-delivery-repository.js +1 -1
- package/dist/src/tasks/task-result-delivery-service.js +2 -2
- package/dist/src/tasks/task-run-coordinator.js +4 -4
- package/dist/src/tasks/task-run-dispatcher.js +1 -1
- package/dist/src/tui/backends/embedded-backend.js +12 -12
- package/dist/src/tui/backends/gateway-realtime-backend.js +2 -2
- package/dist/src/tui/extension-host/load-extensions.js +2 -2
- package/dist/src/tui/tui-commands.js +5 -5
- package/dist/src/tui/tui-picker-overlay.js +1 -1
- package/dist/src/tui/tui-skills-autocomplete.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +4 -4
- package/dist/src/tui/tui.js +4 -4
- package/dist/src/tunnel/gateway-lifecycle.js +1 -1
- package/dist/src/user-context/access-policy.js +2 -2
- package/dist/src/user-model/bootstrap.js +1 -1
- package/dist/src/user-model/capture/executor.js +1 -1
- package/dist/src/user-model/index.js +2 -2
- package/dist/src/user-model/usage-policy.js +1 -1
- package/dist/src/voice/realtime/memory-context.js +5 -5
- package/dist/src/voice/realtime/omniRoute.js +1 -1
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/dist/src/voice/realtime/runtime.js +4 -4
- package/dist/src/voice/stt/index.js +2 -2
- package/dist/src/voice/stt/preflight.js +1 -1
- package/dist/src/voice/stt/providers/alibaba-transcription.js +1 -1
- package/dist/src/voice/stt/providers/bailian-plan-transcription.js +1 -1
- package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +1 -1
- package/dist/src/voice/stt/transcribe-core.js +1 -1
- package/dist/src/voice/tts/index.js +3 -3
- package/dist/src/voice/tts/merge-config.js +1 -1
- package/dist/src/voice/tts/payload.js +1 -1
- package/dist/src/voice/tts/providers/bailian-plan-speech.js +1 -1
- package/dist/src/voice/tts/providers/xopc-cloud-speech.js +1 -1
- package/dist/src/voice/tts/speak-core.js +1 -1
- package/dist/src/work-discovery/service.js +7 -7
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/agent-avatar-display-Cy50vjbq.js +0 -2
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-V4NX_cWz.js +0 -1
- package/dist/gateway/static/root/assets/agent-plugin-dialog-CQ5LLDMO.js +0 -1
- package/dist/gateway/static/root/assets/app-management-settings-panel-C1Zs-eha.js +0 -1
- package/dist/gateway/static/root/assets/appearance-settings-lIfGokbz.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-CUvtsRYD.js +0 -1
- package/dist/gateway/static/root/assets/automation-api-Bld8blNl.js +0 -1
- package/dist/gateway/static/root/assets/automation-display-BcfZOQTC.js +0 -2
- package/dist/gateway/static/root/assets/automations-workspace-BgtYY2Mm.js +0 -8
- package/dist/gateway/static/root/assets/browser-automations-page-DIUNY94X.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-page-DFW4Y0x8.js +0 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-uOHSMQPZ.js +0 -8
- package/dist/gateway/static/root/assets/channels-D2a69dSt.js +0 -1
- package/dist/gateway/static/root/assets/chat-page-CG38tCHE.js +0 -71
- package/dist/gateway/static/root/assets/composer-payload-handoff-BU3B-C26.js +0 -1
- package/dist/gateway/static/root/assets/connected-providers-grid-Dmnu2zle.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-DT_WrC1y.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-lorocS9j.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-CEcohlZq.js +0 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-CLCPuf4R.js +0 -1
- package/dist/gateway/static/root/assets/discussion-annotation-sync-BKjf9gWe.js +0 -1
- package/dist/gateway/static/root/assets/extension-iframe-host-Dhkk5JV2.js +0 -1
- package/dist/gateway/static/root/assets/extension-page-Brps2XDP.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-CHY68DpG.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-DQqMBruB.js +0 -1
- package/dist/gateway/static/root/assets/gateway-restart-Ch128Lrr.js +0 -1
- package/dist/gateway/static/root/assets/home-page-DaMFBYo1.js +0 -2
- package/dist/gateway/static/root/assets/image-generation-api-I_JgLL_m.js +0 -1
- package/dist/gateway/static/root/assets/index-DS60ZSdQ.js +0 -11
- package/dist/gateway/static/root/assets/index-DY2Y83b9.css +0 -1
- package/dist/gateway/static/root/assets/install-connector-dialog-DU1Tz7B3.js +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-qPflPuQD.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-CbY1N-zi.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-Diy12JfQ.js +0 -1
- package/dist/gateway/static/root/assets/messages-DRR9N3HC.js +0 -3
- package/dist/gateway/static/root/assets/model-selector-DCYA_ntf.js +0 -1
- package/dist/gateway/static/root/assets/navigation-BkjnOw30.js +0 -1
- package/dist/gateway/static/root/assets/note-detail-panel-DBs1yHLy.js +0 -5
- package/dist/gateway/static/root/assets/note-image-lightbox-CivkB6LB.js +0 -1
- package/dist/gateway/static/root/assets/notes-page-DL3c-41a.js +0 -8
- package/dist/gateway/static/root/assets/page-header-store-DH8K0xii.js +0 -1
- package/dist/gateway/static/root/assets/personal-page-B5DP3lO-.js +0 -1
- package/dist/gateway/static/root/assets/personal-settings-panel-DjDc5Kaz.js +0 -1
- package/dist/gateway/static/root/assets/phone-model-picker-u8YIQCgo.js +0 -1
- package/dist/gateway/static/root/assets/phone-settings-page-el3pT0PD.js +0 -1
- package/dist/gateway/static/root/assets/plugin-details-dialog-CTBs1Jde.js +0 -1
- package/dist/gateway/static/root/assets/popover-select-DniHw2dy.js +0 -1
- package/dist/gateway/static/root/assets/preference-select-fields-D7oluyHN.js +0 -1
- package/dist/gateway/static/root/assets/product-automation-feedback-DsUSqCOX.js +0 -7
- package/dist/gateway/static/root/assets/project-detail-page-BKvWLiMw.js +0 -7
- package/dist/gateway/static/root/assets/project-understanding-BCQr0AZ_.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-D4g7bB7X.js +0 -1
- package/dist/gateway/static/root/assets/route-preload-B5UiReO7.js +0 -2
- package/dist/gateway/static/root/assets/runtime-tools-settings-panel-MKlLFuow.js +0 -1
- package/dist/gateway/static/root/assets/schema-form-v4N4lawq.js +0 -1
- package/dist/gateway/static/root/assets/service-recommendation-list-B1xuVT3N.js +0 -1
- package/dist/gateway/static/root/assets/session-manager-5l9q0cd5.js +0 -16
- package/dist/gateway/static/root/assets/sessions-page-DsLw2aMD.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-B5lQeVNi.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-MJE3B_LX.js +0 -1
- package/dist/gateway/static/root/assets/share-preview-page-Bsrv_zOQ.js +0 -2
- package/dist/gateway/static/root/assets/shares-settings-CfIRv4uX.js +0 -1
- package/dist/gateway/static/root/assets/skill-api-B_W1K3sv.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-DtBloYeU.js +0 -2
- package/dist/gateway/static/root/assets/task-detail-page-Drrv-Hp0.js +0 -2
- package/dist/gateway/static/root/assets/task-result-evidence-D1Kyskm_.js +0 -1
- package/dist/gateway/static/root/assets/tracing-settings-page-B12u5D9A.js +0 -1
- package/dist/gateway/static/root/assets/tunnel-api-DGO56LQU.js +0 -1
- package/dist/gateway/static/root/assets/usage-page-Ud2U9UG1.js +0 -1
- package/dist/gateway/static/root/assets/use-composer-attachments-BCbMj-MN.js +0 -2
- package/dist/gateway/static/root/assets/use-file-preview-expanded-DSpCRXUW.js +0 -2
- package/dist/gateway/static/root/assets/user-model-page-p5iPfnwl.js +0 -2
- package/dist/gateway/static/root/assets/voice-transcribe-api-TInEfIYo.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-page-p-8ciZ0i.js +0 -1
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-B94Q2nN8.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/attachment-process-heavy-DGZZ-M85.js","assets/rolldown-runtime-aKtaBQYM.js","assets/preload-helper-Czpn1I53.js","assets/pdf-runtime-JnUAvfIa.js","assets/source-workspace-editor-kxosllTu.js","assets/vendor-react-BOUWij0V.js","assets/vendor-codemirror-aCQ0FcJT.js","assets/languages-zXtNocoy.js","assets/binary-plugins-CHCAr8jt.js","assets/messages-uXxg5p54.js","assets/attachment-utils-core-BIOUBrpT.js","assets/preview-open-alternatives-CY_hjK4b.js","assets/download-Dk-ZjtO6.js","assets/createLucideIcon-DPHK1VkS.js","assets/external-link-DjqjBmc3.js","assets/cn-0WouolD0.js","assets/bundle-mjs-rHxsej31.js","assets/interaction-BdhHBbYa.js","assets/electron-env-DHOGevH3.js","assets/use-blob-object-url-D4BFuzZB.js","assets/media-plugins-3cJuHbO7.js","assets/archive-plugin-nuHYYVty.js","assets/jszip.min-Dj17eJqX.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-Czpn1I53.js";import{u as a}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{a as o,i as s,l as c,n as l}from"./locale-store-5Hf8J8-_.js";import{t as u}from"./messages-uXxg5p54.js";import{t as d}from"./createLucideIcon-DPHK1VkS.js";import{t as f}from"./app-window-DXFNqt_0.js";import{t as p}from"./check-DUBLcKHA.js";import{t as m}from"./chevron-down-ccbiQQz_.js";import{t as h}from"./copy-Dv6d4Dvw.js";import{t as g}from"./download-Dk-ZjtO6.js";import{t as _}from"./ellipsis-0k4rZLoy.js";import{t as v}from"./external-link-DjqjBmc3.js";import{t as y}from"./eye-CABVeTq0.js";import{t as b}from"./folder-open-CyzJ19I9.js";import{t as x}from"./loader-circle-CifKLtgG.js";import{G as S,K as C,t as w}from"./markdown-view-pzSRu7av.js";import{t as T}from"./message-square-plus-XP0tGdlV.js";import{t as ee}from"./minimize-2-DtOGrlpo.js";import{t as te}from"./paperclip-f1HujQY1.js";import{t as E}from"./pencil-DmIY3Oa-.js";import{t as D}from"./plus-Q2yW6OE7.js";import{t as O}from"./refresh-cw-BRlGaq2w.js";import{t as k}from"./rotate-cw-LIg3Am9S.js";import{t as A}from"./save-DRDABU--.js";import{t as j}from"./search-DA7gz22f.js";import{t as ne}from"./x-B_N4OPjy.js";import{t as M}from"./cn-0WouolD0.js";import{t as N}from"./skeleton-BI5TyibZ.js";import{r as P,t as F}from"./constants-DBtMsXdW.js";import{a as I}from"./session-api-VquhIBHI.js";import{n as re}from"./interaction-BdhHBbYa.js";import{t as ie}from"./activity-store-CKrylgib.js";import{a as L,i as R,n as ae,r as oe,s as se,t as z}from"./attachment-utils-core-BIOUBrpT.js";import{r as ce}from"./app-chrome-BeB4KgOf.js";import{n as le}from"./electron-env-DHOGevH3.js";import{t as ue}from"./use-async-resource-BHFGZCY2.js";import{t as de}from"./sliding-tab-list-DuQyViqe.js";import{t as fe}from"./index.module-Cd9ENXfk.js";import{a as pe,c as B,d as me,m as V,n as H,r as he,u as ge}from"./workspace-api-CgrcNyBc.js";import{a as _e,l as ve,m as ye,n as be,o as U,r as xe,t as Se,u as Ce}from"./dist-D3lWNSe7.js";var we=d(`folders`,[[`path`,{d:`M20 5a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h2.5a1.5 1.5 0 0 1 1.2.6l.6.8a1.5 1.5 0 0 0 1.2.6z`,key:`a4852j`}],[`path`,{d:`M3 8.268a2 2 0 0 0-1 1.738V19a2 2 0 0 0 2 2h11a2 2 0 0 0 1.732-1`,key:`yxbcw3`}]]),Te=d(`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`}]]),Ee=d(`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`}]]),De=d(`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`}]]),Oe=d(`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;ie({tone:e,title:i,href:r?.href,dedupeKey:`action-feedback:${e}:${i}`})}var q=(0,W.createContext)(null);function ke(){return(0,W.useContext)(q)}var Ae=(0,W.createContext)([]),je=(0,W.createContext)(null),Me=5*1024*1024,Ne=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(`,`)),Fe=new Set([`.txt`,`.log`,`.lock`,`.csv`,`.tsv`,`.env`,`.gitignore`,`.gitattributes`,`.editorconfig`,`.npmrc`,`.dockerignore`,`.eslintignore`,`.prettierignore`,`.stylelintignore`]),Ie=new Set([`dockerfile`,`gemfile`,`jenkinsfile`,`makefile`,`procfile`,`rakefile`]),Le=new Set([`brewfile`,`changelog`,`codeowners`,`license`,`readme`]),Re=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`,`.bmp`,`.ico`,`.svg`,`.svgz`,`.tif`,`.tiff`,`.avif`,`.heic`,`.heif`,`.jxl`]),ze=new Set([`.mp3`,`.wav`,`.ogg`,`.oga`,`.aac`,`.m4a`,`.flac`,`.opus`,`.weba`]),Be=new Set([`.mp4`,`.webm`,`.mov`,`.m4v`,`.ogv`]),Ve=new Set([`.zip`]),He=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 Ue(e){let t=J(e),n=t.lastIndexOf(`.`);return n<0||n===t.length-1?``:t.slice(n).toLowerCase()}function J(e){let t=e.replace(/\\/g,`/`).split(`/`);return t[t.length-1]||e}function Y(e,t){let n=t?.split(`;`)[0]?.trim().toLowerCase();return n&&n!==`application/octet-stream`?n:He.get(Ue(e))??n??`application/octet-stream`}function X(e,t){let n=Ue(e),r=J(e).toLowerCase(),i=Y(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/`)||Re.has(n)?`image`:i.startsWith(`audio/`)||ze.has(n)?`audio`:i.startsWith(`video/`)||Be.has(n)?`video`:i===`application/zip`||Ve.has(n)?`archive`:Pe.has(n)||Ie.has(r)||r.startsWith(`dockerfile.`)?`code`:i.startsWith(`text/`)||Fe.has(n)||Le.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 Ge(e){let{uri:t,conversationId:n,taskId:r}=e;try{let e=P(t),i=await o(s(e?`/api/files/${encodeURIComponent(e)}/content`:se(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 Ke(e){let t=await Ge(e);return t.ok?{ok:!0,buffer:await t.blob.arrayBuffer()}:t}function qe(e){return e.id?String(e.id):`${e.name}:${e.uri??``}`}function Je(){return{id:`__empty__`,context:`attachment`,fileName:``,mimeType:`application/octet-stream`,type:`unsupported`,source:{kind:`inline`}}}function Ye(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,d]=(0,W.useState)(!1),[f,p]=(0,W.useState)(!1),m;t[0]!==r||t[1]!==n?(m=n&&r?qe(r):null,t[0]=r,t[1]=n,t[2]=m):m=t[2];let h=m,g=(0,W.useRef)(h);h!==g.current&&(g.current=h,c(n&&r?r:null),d(!1),p(!1));let _=s,v;bb0:{if(!_){let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=Je(),t[3]=e):e=t[3],v=e;break bb0}let e=_.name??`attachment`,n,r;t[4]!==e||t[5]!==_.mimeType?(n=Y(e,_.mimeType),r=X(e,n),t[4]=e,t[5]=_.mimeType,t[6]=n,t[7]=r):(n=t[6],r=t[7]);let i=r,o=_.id?String(_.id):`${e}:${_.uri??``}`,s;t[8]!==a||t[9]!==_.uri?(s=_.uri?{kind:`media-uri`,uri:_.uri,conversationId:a}:{kind:`inline`},t[8]=a,t[9]=_.uri,t[10]=s):s=t[10];let c;t[11]!==e||t[12]!==n||t[13]!==_.size||t[14]!==o||t[15]!==s||t[16]!==i?(c={id:o,context:`attachment`,fileName:e,mimeType:n,size:_.size,type:i,source:s},t[11]=e,t[12]=n,t[13]=_.size,t[14]=o,t[15]=s,t[16]=i,t[17]=c):c=t[17],v=c}let y=v,b;t[18]===_?b=t[19]:(b=_?R(_):void 0,t[18]=_,t[19]=b);let x=b,S=_?.uri,C;t[20]===y.type?C=t[21]:(C=We(y.type),t[20]=y.type,t[21]=C);let w=C,T=!!(n&&S&&!x&&i&&(w===`binary`||w===`text`)),ee;t[22]!==a||t[23]!==o||t[24]!==S||t[25]!==_?.taskId?(ee=async()=>{let e=u(o).chat,t=await Ke({uri:S,conversationId:a,taskId:_?.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]=S,t[25]=_?.taskId,t[26]=ee):ee=t[26];let te=_?.taskId,E;t[27]!==i||t[28]!==a||t[29]!==x||t[30]!==o||t[31]!==S||t[32]!==n||t[33]!==w||t[34]!==te?(E=[n,S,i,o,x,te,a,w],t[27]=i,t[28]=a,t[29]=x,t[30]=o,t[31]=S,t[32]=n,t[33]=w,t[34]=te,t[35]=E):E=t[35];let D;t[36]===T?D=t[37]:(D={enabled:T,initial:null,errorData:null},t[36]=T,t[37]=D);let O=ue(ee,E,D),k;bb1:{if(x)try{let e;t[38]===x?e=t[39]:(e=ae(x),t[38]=x,t[39]=e),k=e;break bb1}catch{k=null;break bb1}if(T&&O.loading){k=null;break bb1}k=O.data??null}let A=k,j=w===`binary`?A:null,ne=_?.extractedText??``,M;t[40]!==A||t[41]!==ne||t[42]!==o||t[43]!==w?(M=w===`text`?ne||(A?new TextDecoder(`utf-8`,{fatal:!1}).decode(new Uint8Array(A)):u(o).chat.attachmentPreviewNoText):null,t[40]=A,t[41]=ne,t[42]=o,t[43]=w,t[44]=M):M=t[44];let N=M,P=!!_?.extractedText,F=y.type===`pptx`&&ne.length>3e5,I;t[45]!==i||t[46]!==x||t[47]!==o||t[48]!==S||t[49]!==n||t[50]!==w?(I=n&&S&&!x&&!i&&w===`binary`?u(o).chat.attachmentPreviewMissingAuth:null,t[45]=i,t[46]=x,t[47]=o,t[48]=S,t[49]=n,t[50]=w,t[51]=I):I=t[51];let re=I,ie=O.error?O.error instanceof Error?O.error.message:String(O.error):null,L=f?null:re??ie,oe=T?O.loading:!1,se;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(se=()=>p(!0),t[52]=se):se=t[52];let z=ne||null,ce;return t[53]!==j||t[54]!==y||t[55]!==A||t[56]!==F||t[57]!==P||t[58]!==L||t[59]!==_||t[60]!==l||t[61]!==oe||t[62]!==z||t[63]!==N?(ce={preview:_,descriptor:y,fileType:y.type,fileName:y.fileName,loading:oe,loadError:L,clearLoadError:se,textContent:N,binaryBuffer:j,downloadBuffer:A,hasExtractedText:P,extractedText:z,extractedTextTruncated:F,showExtractedText:l,setShowExtractedText:d},t[53]=j,t[54]=y,t[55]=A,t[56]=F,t[57]=P,t[58]=L,t[59]=_,t[60]=l,t[61]=oe,t[62]=z,t[63]=N,t[64]=ce):ce=t[64],ce}function Xe(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 Ze(e){return{descriptor:e,textContent:null,binaryBuffer:null,fileResourceId:null,mtimeMs:null,loadError:null,loading:!1,pptxText:null,pptxTruncated:!1,pptxError:null}}function Qe(e,t){switch(t.type){case`clear`:return Ze(t.descriptor);case`loadStart`:return{...Ze(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{...Ze(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 $e(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 et({filePath:e,projectId:t,conversationId:n,agentId:r,initialEditMode:a=!1}){let o=Xe({projectId:t,conversationId:n,agentId:r}),s=(0,W.useMemo)(()=>{let t=e?J(e):``,i=Y(t,L(t)),a=e?X(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]),[c,l]=(0,W.useReducer)(Qe,s,Ze),[u,d]=(0,W.useReducer)($e,{sourceEditMode:a,saveStatus:`idle`}),[f,p]=(0,W.useState)([]),[m,h]=(0,W.useState)([]),g=(0,W.useRef)(e),_=(0,W.useRef)(void 0),v=(0,W.useRef)(null),y=(0,W.useRef)(null),b=(0,W.useRef)(null),[x,S]=(0,W.useState)(!1),[C,w]=(0,W.useState)(!1),[T,ee]=(0,W.useState)(0);g.current!==e&&(g.current=e,d({type:`reset`})),(0,W.useEffect)(()=>{if(!e){l({type:`clear`,descriptor:s});return}let t=!1;l({type:`loadStart`,descriptor:s});let n=We(s.type),r=e=>{t||l({type:`loadError`,descriptor:s,error:e instanceof Error?e.message:String(e)})};return n===`metadata`?(Promise.all([me(e,o).catch(()=>null),ge(e,o).catch(()=>null)]).then(async([n,r])=>{if(!n){t||l({type:`loadSuccess`,payload:{descriptor:s,fileResourceId:r?.fileId??null,mtimeMs:typeof r?.mtimeMs==`number`?r.mtimeMs:null}});return}let i={...s,mimeType:n.mimeType,type:X(n.name,n.mimeType)};if(We(i.type)===`text`){let{content:r,mtimeMs:a,revision:s}=await B(e,o);t||(_.current=s,v.current=r,y.current=r,S(!1),w(!1)),t||l({type:`loadSuccess`,payload:{descriptor:i,textContent:r,fileResourceId:n.id,mtimeMs:typeof a==`number`?a:n.modifiedAt}});return}t||l({type:`loadSuccess`,payload:{descriptor:i,fileResourceId:n.id,mtimeMs:n.modifiedAt}})}).catch(r),()=>{t=!0}):(n===`text`?Promise.all([B(e,o),ge(e,o).catch(()=>null)]).then(([{content:e,mtimeMs:n,revision:r},i])=>{t||(_.current=r,v.current=e,y.current=e,S(!1),w(!1)),t||l({type:`loadSuccess`,payload:{descriptor:s,textContent:e,fileResourceId:i?.fileId??null,mtimeMs:typeof n==`number`?n:null}})}).catch(r):Promise.all([pe(e,o),ge(e,o).catch(()=>null)]).then(async([e,n])=>{let r=await e.arrayBuffer();t||l({type:`loadSuccess`,payload:{descriptor:s,binaryBuffer:r,fileResourceId:n?.fileId??null,mtimeMs:typeof n?.mtimeMs==`number`?n.mtimeMs:null}})}).catch(r),()=>{t=!0})},[s,e,o,T]),(0,W.useEffect)(()=>{if(!c.binaryBuffer||c.descriptor.type!==`pptx`){l({type:`pptxClear`});return}let e=!1;return l({type:`pptxClear`}),i(()=>import(`./attachment-process-heavy-DGZZ-M85.js`).then(e=>e.processPptx(c.binaryBuffer,c.descriptor.fileName)),__vite__mapDeps([0,1,2,3])).then(({extractedText:t})=>{if(e)return;let n=t.length>z;l({type:`pptxSuccess`,text:n?t.slice(0,z):t,truncated:n})}).catch(t=>{e||l({type:`pptxError`,error:t instanceof Error?t.message:String(t)})}),()=>{e=!0}},[c.binaryBuffer,c.descriptor.fileName,c.descriptor.type]);let te=(0,W.useCallback)(async()=>{if(b.current&&!await b.current)return!1;if(!e||v.current===null||v.current===y.current)return!0;let t=(async()=>{d({type:`saveStatus`,value:`saving`});try{for(;v.current!==y.current;){let t=v.current,n=await V(e,t,o,_.current);_.current=n.revision,y.current=t,typeof n.mtimeMs==`number`&&l({type:`patchMtime`,mtimeMs:n.mtimeMs})}return S(!1),d({type:`saveStatus`,value:`saved`}),!0}catch{return d({type:`saveStatus`,value:`error`}),!1}})();b.current=t;try{return await t}finally{b.current===t&&(b.current=null)}},[e,o]),E=fe(()=>void te(),500),D=(0,W.useCallback)(e=>{v.current=e,S(e!==y.current),l({type:`patchText`,text:e}),E()},[E]);(0,W.useEffect)(()=>{let e=e=>{v.current!==y.current&&(e.preventDefault(),e.returnValue=``)};return window.addEventListener(`beforeunload`,e),()=>{window.removeEventListener(`beforeunload`,e),E.cancel()}},[E]);let O=(0,W.useCallback)(()=>{!x&&!b.current&&ee(e=>e+1)},[x]),k=(0,W.useRef)(!1),A=(0,W.useCallback)(async()=>{if(!(!e||c.loading||b.current||k.current)){k.current=!0;try{let t=await me(e,o);if(!t||!(_.current?t.revision!==_.current:c.mtimeMs!=null&&t.modifiedAt!==c.mtimeMs))return;x||u.sourceEditMode?w(!0):O()}catch{w(!0)}finally{k.current=!1}}},[x,u.sourceEditMode,e,c.loading,c.mtimeMs,o,O]),j=(0,W.useCallback)(async()=>{if(!e)return;let t=J(e);if(c.binaryBuffer){H(t,c.binaryBuffer,c.descriptor.mimeType||`application/octet-stream`);return}if(c.textContent!=null){he(t,c.textContent);return}let n=await pe(e,o);H(t,await n.arrayBuffer(),c.descriptor.mimeType||n.type||`application/octet-stream`)},[e,c.binaryBuffer,c.descriptor.mimeType,c.textContent,o]),ne=(0,W.useCallback)(async()=>{if(!e)throw Error(`No workspace file selected`);let t=J(e),n=c.descriptor.mimeType||`application/octet-stream`,r;return r=c.binaryBuffer?new Blob([c.binaryBuffer],{type:n}):c.textContent==null?await pe(e,o):new Blob([c.textContent],{type:n}),new File([r],t,{type:c.descriptor.mimeType||r.type||`application/octet-stream`,lastModified:c.mtimeMs??Date.now()})},[e,c.binaryBuffer,c.descriptor.mimeType,c.mtimeMs,c.textContent,o]),M=!c.loading&&!!e,N=le()&&(!!c.fileResourceId&&!!window.electronAPI?.shell?.openFileResource||c.descriptor.type===`spreadsheet`&&!!c.binaryBuffer&&!!window.electronAPI?.shell?.openTemporaryFile),P=le()&&!!c.fileResourceId&&!!window.electronAPI?.shell?.chooseAppAndOpenFileResource,F=(0,W.useCallback)(async()=>{let e=c.fileResourceId;if(!le()||!e||!window.electronAPI?.shell?.getOpenWithAppsForFileResource){h([]),p([]);return}try{let t=await window.electronAPI.shell.getOpenWithAppsForFileResource(e);h(t.recommended.map(e=>({name:e.name,path:e.path,iconDataUrl:e.iconDataUrl}))),p(t.recent.map(e=>({name:e.name,path:e.path,iconDataUrl:e.iconDataUrl,lastUsedAt:e.lastUsedAt})))}catch{h([]),p([])}},[c.fileResourceId]);(0,W.useEffect)(()=>{F()},[F]);let I=(0,W.useCallback)(async()=>{let e=c.fileResourceId;if(e&&window.electronAPI?.shell?.openFileResource)return window.electronAPI.shell.openFileResource(e);if(c.descriptor.type===`spreadsheet`&&c.binaryBuffer&&window.electronAPI?.shell?.openTemporaryFile)return window.electronAPI.shell.openTemporaryFile({fileName:c.descriptor.fileName,data:new Uint8Array(c.binaryBuffer)})},[c.binaryBuffer,c.descriptor.fileName,c.descriptor.type,c.fileResourceId]),re=(0,W.useCallback)(async()=>{let e=c.fileResourceId;if(!e||!window.electronAPI?.shell?.chooseAppAndOpenFileResource)return;let t=await window.electronAPI.shell.chooseAppAndOpenFileResource(e);return t.ok&&F(),t},[c.fileResourceId,F]),ie=(0,W.useCallback)(async e=>{let t=c.fileResourceId;if(!t||!e||!window.electronAPI?.shell?.openFileResourceWithApp)return;let n=await window.electronAPI.shell.openFileResourceWithApp(t,e);return n.ok&&F(),n},[c.fileResourceId,F]),R=le()&&!!c.fileResourceId&&!!window.electronAPI?.shell?.showFileResourceInFolder,ae=(0,W.useCallback)(async()=>{let e=c.fileResourceId;if(e&&window.electronAPI?.shell?.showFileResourceInFolder)return window.electronAPI.shell.showFileResourceInFolder(e)},[c.fileResourceId]);return{...c,dirty:x,externalChange:C,flushSource:te,refresh:O,checkForUpdates:A,extractedText:c.descriptor.type===`pptx`?c.pptxText:null,extractedTextTruncated:c.pptxTruncated,sourceEditMode:u.sourceEditMode,setSourceEditMode:e=>d({type:`source`,value:e}),saveStatus:u.saveStatus,onSourceChange:D,onDownload:j,createAttachmentFile:ne,canDownload:M,canOpenWithSystemApp:N,onOpenWithSystemApp:I,canChooseOpenWithApp:P,onChooseOpenWithApp:re,recommendedOpenWithApps:m,recentOpenWithApps:f,onOpenWithRecentApp:ie,canRevealInFolder:R,onRevealInFolder:ae}}var tt=new Map;function nt(e){return tt.get(e)??{zoom:1,rotation:0,page:1,pageCount:null,searchQuery:``,scroll:[]}}function rt(e,t){let n={...nt(e),...t};for(tt.delete(e),tt.set(e,n);tt.size>100;)tt.delete(tt.keys().next().value)}c.subscribe((e,t)=>{(e.baseUrl!==t.baseUrl||e.conversationId!==t.conversationId)&&tt.clear()});var it=new Map;function at(e,t){return it.set(e,t),()=>{it.get(e)===t&&it.delete(e)}}async function ot(e,t){return await it.get(e)?.(t)??!1}var st=120*1e3,ct=new Map;function lt(){return typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function ut(e){for(let[t,n]of ct)n.expiresAt<=e&&ct.delete(t)}function dt(e,t=Date.now()){ut(t);let n=lt();return ct.set(n,{file:e,name:e.name,type:e.type,expiresAt:t+st}),n}function ft(e,t=Date.now()){let n=ct.get(e);return n?n.expiresAt<=t?(ct.delete(e),null):{name:n.name,type:n.type}:null}function pt(e,t=Date.now()){let n=ct.get(e);if(!n)return null;if(n.expiresAt<=t)return ct.delete(e),null;if(!n.file)return null;let r=n.file;return n.file=null,r}var Z=r();function mt(e){let t=(0,G.c)(3),{app:n}=e,[r,i]=(0,W.useState)(),a;return t[0]!==n||t[1]!==r?(a=n?.iconDataUrl&&n.iconDataUrl!==r?(0,Z.jsx)(`img`,{src:n.iconDataUrl,alt:``,width:20,height:20,className:`size-5 shrink-0 object-contain`,onError:()=>i(n.iconDataUrl)}):(0,Z.jsx)(f,{className:`size-5 shrink-0 text-fg-muted`,strokeWidth:1.75,"aria-hidden":!0}),t[0]=n,t[1]=r,t[2]=a):a=t[2],a}function ht({variant:e=`split`,onAction:t,systemApp:n,chooseApp:r,recommendedApps:i,recentApps:a,onOpenWithApp:o}){let s=l(e=>e.language),c=u(s).workspace,[d,h]=(0,W.useState)(),[g,_]=(0,W.useState)(!1),y=[...i,...a],b=o&&d!==null?y.find(e=>e.path===d?.path)??d??y[0]:void 0,S=!!(g||n?.loading||r?.loading),C=S||!!n?.disabled,w=b?s===`zh`?`用 ${b.name} 打开`:`Open with ${b.name}`:c.openSystemApp,T=`flex min-h-9 cursor-default items-center gap-2.5 rounded-md px-2.5 py-2 text-sm text-fg outline-none data-[highlighted]:bg-surface-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-40`,ee=`my-1 h-px bg-edge-subtle`;if(!n&&!r&&(!o||!y.length))return null;if(e===`menu`){let e=e=>t?t(e):e(),s=`flex min-h-9 w-full items-center gap-2.5 rounded-md px-2.5 py-2 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`;return(0,Z.jsxs)(Z.Fragment,{children:[n?(0,Z.jsxs)(`button`,{type:`button`,role:`menuitem`,className:s,disabled:C,onClick:()=>e(n.onClick),children:[(0,Z.jsx)(v,{className:`size-5 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:c.openSystemApp})]}):null,o?[{label:c.recommendedApps,apps:i},{label:c.recentApps,apps:a.filter(e=>!i.some(t=>t.path===e.path))}].map(t=>t.apps.length?(0,Z.jsxs)(`div`,{role:`group`,"aria-label":t.label,children:[(0,Z.jsx)(`div`,{className:`px-2.5 pb-1 pt-1.5 text-xs font-medium text-fg-muted`,children:t.label}),t.apps.map(t=>(0,Z.jsxs)(`button`,{type:`button`,role:`menuitem`,className:s,disabled:C,onClick:()=>e(()=>o(t.path)),children:[(0,Z.jsx)(mt,{app:t}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t.name})]},t.path))]},t.label):null):null,r?(0,Z.jsxs)(`button`,{type:`button`,role:`menuitem`,className:s,disabled:C||r.disabled,onClick:()=>e(()=>{r.onClick()}),children:[(0,Z.jsx)(f,{className:`size-5 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`min-w-0 truncate`,children:c.chooseApp})]}):null,(0,Z.jsx)(`div`,{className:`my-1 border-t border-edge-subtle dark:border-edge`})]})}return(0,Z.jsxs)(`div`,{className:`inline-flex h-9 shrink-0 items-stretch rounded-full border border-edge-subtle bg-surface-panel`,children:[(0,Z.jsxs)(`button`,{type:`button`,"aria-label":w,title:w,disabled:C||!b&&!n,onClick:()=>b?o?.(b.path):n?.onClick(),className:M(`inline-flex min-w-0 items-center gap-2 rounded-l-full pl-3 pr-2 text-sm font-medium text-fg transition-colors hover:bg-surface-hover disabled:cursor-not-allowed disabled:opacity-40`,re.focusRingPanel),children:[S?(0,Z.jsx)(x,{className:`size-5 animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(mt,{app:b}),(0,Z.jsx)(`span`,{children:s===`zh`?`打开`:`Open`})]}),(0,Z.jsxs)(ve,{modal:!1,children:[(0,Z.jsx)(ye,{asChild:!0,children:(0,Z.jsx)(`button`,{type:`button`,"aria-label":c.chooseApp,title:c.chooseApp,disabled:C,className:M(`inline-flex w-8 shrink-0 items-center justify-center rounded-r-full text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg disabled:cursor-not-allowed disabled:opacity-40`,re.focusRingPanel),children:(0,Z.jsx)(m,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0})})}),(0,Z.jsx)(U,{children:(0,Z.jsxs)(Se,{align:`end`,sideOffset:6,collisionPadding:8,"aria-label":c.chooseApp,onEscapeKeyDown:e=>e.stopPropagation(),className:`z-[150] max-h-[var(--radix-dropdown-menu-content-available-height)] w-64 max-w-[calc(100vw-1rem)] overflow-y-auto overscroll-contain rounded-xl border border-edge bg-surface-overlay p-1 shadow-popover outline-none`,children:[n?(0,Z.jsxs)(xe,{className:T,disabled:n.disabled||S,onSelect:()=>{h(null),n.onClick()},children:[(0,Z.jsx)(v,{className:`size-5 shrink-0 text-fg-muted`,strokeWidth:1.75,"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:c.openSystemApp}),b?null:(0,Z.jsx)(p,{className:`size-4 shrink-0`,"aria-hidden":!0})]}):null,o?[{label:c.recommendedApps,apps:i},{label:c.recentApps,apps:a.filter(e=>!i.some(t=>t.path===e.path))}].map(e=>e.apps.length?(0,Z.jsxs)(be,{children:[(0,Z.jsx)(Ce,{className:ee}),(0,Z.jsx)(_e,{className:`px-2.5 pb-1 pt-1.5 text-xs font-medium text-fg-muted`,children:e.label}),e.apps.map(e=>(0,Z.jsxs)(xe,{className:T,disabled:S,title:e.name,onSelect:()=>{h(e),o(e.path)},children:[(0,Z.jsx)(mt,{app:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),e.path===b?.path?(0,Z.jsx)(p,{className:`size-4 shrink-0`,"aria-hidden":!0}):null]},e.path))]},e.label):null):null,r?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Ce,{className:ee}),(0,Z.jsxs)(xe,{className:T,disabled:r.disabled||S,onSelect:async()=>{_(!0);try{let e=await r.onClick();e&&h(e)}finally{_(!1)}},children:[(0,Z.jsx)(f,{className:`size-5 shrink-0 text-fg-muted`,strokeWidth:1.75,"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`min-w-0 truncate`,children:c.chooseApp})]})]}):null]})})]})]})}var gt=`<base href="about:srcdoc">`;function _t(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)}${gt}${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>${gt}</head>${e.slice(t)}`}let r=/^\s*<!doctype[^>]*>/i.exec(e);return r?`${r[0]}<head>${gt}</head>${e.slice(r[0].length)}`:`<head>${gt}</head>${e}`}function vt(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:_t(n)},`*`)},t[0]=n,t[1]=a);let o=a,c;t[2]===o?c=t[3]:(c=[o],t[2]=o,t[3]=c),(0,W.useEffect)(o,c);let l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=s(`/api/preview/html`),t[4]=l):l=t[4];let u;return t[5]!==o||t[6]!==r?(u=(0,Z.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:l,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]=u):u=t[7],u}var yt=(0,W.lazy)(()=>i(()=>import(`./source-workspace-editor-kxosllTu.js`).then(e=>({default:e.SourceWorkspaceEditor})),__vite__mapDeps([4,1,5,6,7,2])));function bt(){let e=(0,G.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col px-4 py-3`,"aria-busy":!0,children:[(0,Z.jsx)(`div`,{className:`h-4 w-11/12 animate-pulse rounded bg-surface-hover`}),(0,Z.jsx)(`div`,{className:`mt-3 h-4 w-9/12 animate-pulse rounded bg-surface-hover`}),(0,Z.jsx)(`div`,{className:`mt-3 h-4 w-10/12 animate-pulse rounded bg-surface-hover`})]}),e[0]=t):t=e[0],t}function xt(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(t).toLowerCase():``}function St(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`}[xt(e)]??`plaintext`}function Ct(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,Z.jsxs)(`div`,{ref:a?i:void 0,className:a?`flex bg-accent-soft/60 text-fg`:`flex`,"data-line":n,children:[(0,Z.jsx)(`span`,{className:`w-12 shrink-0 select-none pr-3 text-right text-fg-subtle`,children:n}),(0,Z.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,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto px-4 py-3`,children:(0,Z.jsx)(`div`,{className:`min-w-max font-mono text-xs leading-relaxed text-fg`,children:l})}),t[10]=l,t[11]=u),u}function wt(e,t){let n=e.textContent??``,r=e.descriptor.context===`workspace`,i=e.workspaceEditing;return r&&i?.sourceEditMode?(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,Z.jsx)(W.Suspense,{fallback:(0,Z.jsx)(bt,{}),children:(0,Z.jsx)(yt,{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,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-3`,children:(0,Z.jsx)(w,{content:n})}):t===`html`?(0,Z.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden px-2 pb-2 pt-1 sm:px-4`,children:(0,Z.jsx)(vt,{html:n,title:e.descriptor.fileName})}):e.targetLine&&e.targetLine>0?(0,Z.jsx)(Ct,{text:n,targetLine:e.targetLine}):t===`code`?(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-3`,children:(0,Z.jsx)(w,{content:`\`\`\`${St(e.descriptor.fileName)}\n${n}\n\`\`\``})}):(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-3`,children:(0,Z.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-xs text-fg`,children:n})})}function Tt(e){return wt(e,`text`)}function Et(e){return wt(e,`markdown`)}function Dt(e){return wt(e,`code`)}function Ot(e){return wt(e,`html`)}function kt(){return(0,W.createElement)(`div`,{className:`px-4 py-6 text-sm text-fg-muted`},`Loading preview...`)}function Q(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:kt()},(0,W.createElement)(i,e))}}var At={text:{id:`text`,readMode:`text`,capabilities:[`download`,`edit`],render:e=>(0,W.createElement)(Tt,e)},markdown:{id:`markdown`,readMode:`text`,capabilities:[`download`,`edit`],render:e=>(0,W.createElement)(Et,e)},code:{id:`code`,readMode:`text`,capabilities:[`download`,`edit`],render:e=>(0,W.createElement)(Dt,e)},html:{id:`html`,readMode:`text`,capabilities:[`download`,`edit`],render:e=>(0,W.createElement)(Ot,e)},image:Q(`image`,[`download`,`zoom`,`rotate`],()=>i(()=>import(`./binary-plugins-CHCAr8jt.js`).then(e=>({default:e.InteractiveImagePreview})),__vite__mapDeps([8,1,5,2,9,10,11,12,13,14,15,16,17,18,19]))),pdf:Q(`pdf`,[`download`,`zoom`,`rotate`,`pageNavigation`,`print`],()=>i(()=>import(`./binary-plugins-CHCAr8jt.js`).then(e=>({default:e.PdfPreviewPluginView})),__vite__mapDeps([8,1,5,2,9,10,11,12,13,14,15,16,17,18,19]))),docx:Q(`docx`,[`download`],()=>i(()=>import(`./binary-plugins-CHCAr8jt.js`).then(e=>({default:e.DocxPreviewPluginView})),__vite__mapDeps([8,1,5,2,9,10,11,12,13,14,15,16,17,18,19]))),spreadsheet:Q(`spreadsheet`,[`download`],()=>i(()=>import(`./binary-plugins-CHCAr8jt.js`).then(e=>({default:e.SpreadsheetPreviewPluginView})),__vite__mapDeps([8,1,5,2,9,10,11,12,13,14,15,16,17,18,19]))),pptx:Q(`pptx`,[`download`],()=>i(()=>import(`./binary-plugins-CHCAr8jt.js`).then(e=>({default:e.PptxPreviewPluginView})),__vite__mapDeps([8,1,5,2,9,10,11,12,13,14,15,16,17,18,19]))),audio:Q(`audio`,[`download`],()=>i(()=>import(`./media-plugins-3cJuHbO7.js`).then(e=>({default:e.AudioPreviewPluginView})),__vite__mapDeps([20,1,5,9,10,11,12,13,14,15,16,17,18,19]))),video:Q(`video`,[`download`],()=>i(()=>import(`./media-plugins-3cJuHbO7.js`).then(e=>({default:e.VideoPreviewPluginView})),__vite__mapDeps([20,1,5,9,10,11,12,13,14,15,16,17,18,19]))),archive:Q(`archive`,[`download`],()=>i(()=>import(`./archive-plugin-nuHYYVty.js`).then(e=>({default:e.ArchivePreviewPluginView})),__vite__mapDeps([21,1,5,9,22,11,12,13,14,15,16,17,18]))),unsupported:Q(`unsupported`,[`download`],()=>i(()=>import(`./media-plugins-3cJuHbO7.js`).then(e=>({default:e.UnsupportedPreviewPluginView})),__vite__mapDeps([20,1,5,9,10,11,12,13,14,15,16,17,18,19])),`metadata`)};function jt(e){return At[e]??At.unsupported}function Mt(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 m=p,h;t[6]!==r||t[7]!==n.capabilities?(h=n.capabilities.includes(`pageNavigation`)&&r.pageCount!=null&&r.pageCount>1,t[6]=r,t[7]=n.capabilities,t[8]=h):h=t[8];let g=h;if(!(u||f||m||g))return null;let _;if(t[9]!==g||t[10]!==m||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(g){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,Z.jsx)(De,{className:`size-3.5`}),t[22]=a):a=t[22];let o;t[23]!==n||t[24]!==i?(o=(0,Z.jsx)(Nt,{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,Z.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,Z.jsx)(Ee,{className:`size-3.5`}),t[31]=u):u=t[31];let d;t[32]!==c||t[33]!==l?(d=(0,Z.jsx)(Nt,{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,Z.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,Z.jsx)(S,{className:`size-3.5`}),t[39]=n):n=t[39];let s;t[40]===a?s=t[41]:(s=(0,Z.jsx)(Nt,{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,Z.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,Z.jsx)(D,{className:`size-3.5`}),t[47]=u):u=t[47];let d;t[48]===i?d=t[49]:(d=(0,Z.jsx)(Nt,{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,Z.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(m){let n;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Z.jsx)(k,{className:`size-3.5`}),t[54]=n):n=t[54];let r;t[55]===s?r=t[56]:(r=(0,Z.jsx)(Nt,{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,Z.jsx)(j,{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,Z.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,Z.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)}_=(0,Z.jsx)(`div`,{className:`flex shrink-0 items-center gap-1`,children:e}),t[9]=g,t[10]=m,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]=_}else _=t[19];return _}function Nt(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=M(`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,Z.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 Pt(e){let t=jt(e.type),n=nt(e.id),[r,i]=(0,W.useState)(n.zoom),[a,o]=(0,W.useState)(n.rotation),[s,c]=(0,W.useState)(n.page),[l,u]=(0,W.useState)(n.pageCount),[d,f]=(0,W.useState)(n.searchQuery),p=(0,W.useCallback)(e=>{c(Math.max(1,Math.min(l??e,Math.floor(e))))},[l]);(0,W.useEffect)(()=>{let t=nt(e.id);i(t.zoom),o(t.rotation),c(t.page),u(t.pageCount),f(t.searchQuery)},[e.id,e.type]);let m=(0,W.useRef)({zoom:r,rotation:a,page:s,pageCount:l,searchQuery:d});return m.current={zoom:r,rotation:a,page:s,pageCount:l,searchQuery:d},(0,W.useEffect)(()=>()=>rt(e.id,m.current),[e.id]),{plugin:t,controls:(0,W.useMemo)(()=>({zoom:r,rotation:a,page:s,pageCount:l,searchQuery:d,setPageCount:u,setPage:p}),[s,l,a,d,p,r]),onZoomIn:()=>i(e=>Math.min(4,Number((e+.15).toFixed(2)))),onZoomOut:()=>i(e=>Math.max(.25,Number((e-.15).toFixed(2)))),onZoomReset:()=>{i(1),o(0)},onRotate:()=>o(e=>(e+90)%360),onSearchChange:f}}function Ft(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,Z.jsx)(Mt,{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 It(e){let t=(0,G.c)(14),n;t[0]===e.language?n=t[1]:(n=u(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,Z.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 px-4 py-6`,"aria-busy":`true`,children:[(0,Z.jsx)(N,{className:`h-5 w-48 max-w-full`}),(0,Z.jsx)(N,{className:`h-4 w-full`}),(0,Z.jsx)(N,{className:`h-4 w-11/12`}),(0,Z.jsx)(N,{className:`h-4 w-3/4`}),(0,Z.jsx)(N,{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,Z.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 overflow-auto p-4`,children:(0,Z.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,Z.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2 overflow-hidden`,children:(0,Z.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,Z.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,Z.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:(0,Z.jsx)(Lt,{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 Lt(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,Z.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:i}),t[3]=i,t[4]=a),a}function Rt(e){let t=(0,G.c)(9),{label:n,active:r,disabled:i,onClick:a,children:o}=e,s=r&&`border-accent/20 bg-accent-soft text-accent-fg`,c;t[0]===s?c=t[1]:(c=M(`inline-flex size-9 shrink-0 items-center justify-center rounded-full border border-edge-subtle bg-surface-panel text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg disabled:cursor-not-allowed disabled:opacity-40`,s,re.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,Z.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 $(e){let t=(0,G.c)(14),{icon:n,label:r,active:i,disabled:a,onClick:o}=e,s=i===void 0?`menuitem`:`menuitemcheckbox`,c;t[0]===n?c=t[1]:(c=(0,Z.jsx)(`span`,{className:`flex size-4 shrink-0 items-center justify-center text-fg-muted`,"aria-hidden":!0,children:n}),t[0]=n,t[1]=c);let l;t[2]===r?l=t[3]:(l=(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:r}),t[2]=r,t[3]=l);let u;t[4]===i?u=t[5]:(u=i?(0,Z.jsx)(p,{className:`size-4 shrink-0`,"aria-hidden":!0}):null,t[4]=i,t[5]=u);let d;return t[6]!==i||t[7]!==a||t[8]!==o||t[9]!==s||t[10]!==c||t[11]!==l||t[12]!==u?(d=(0,Z.jsxs)(`button`,{type:`button`,role:s,"aria-checked":i,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:a,onClick:o,children:[c,l,u]}),t[6]=i,t[7]=a,t[8]=o,t[9]=s,t[10]=c,t[11]=l,t[12]=u,t[13]=d):d=t[13],d}function zt(e){let t=(0,G.c)(92),{referenceActions:n,onRefresh:r,onRetrySave:i,subtitle:a,controller:o,actions:s,expanded:c,onToggleExpanded:d,onClose:f,hideClose:m,edit:S,wordWrap:w,editInNewChat:D,share:k,openWithSystemApp:j,chooseApp:N,recommendedApps:P,recentApps:F,onOpenWithApp:I,onRevealInFolder:ie,copyPath:L,textView:R,openInBrowser:ae}=e,oe;t[0]===n?oe=t[1]:(oe=n===void 0?[]:n,t[0]=n,t[1]=oe);let se=oe,z;t[2]===P?z=t[3]:(z=P===void 0?[]:P,t[2]=P,t[3]=z);let ue=z,fe;t[4]===F?fe=t[5]:(fe=F===void 0?[]:F,t[4]=F,t[5]=fe);let pe=fe,B=l(Ht),me;t[6]===B?me=t[7]:(me=u(B),t[6]=B,t[7]=me);let V=me,H=V.workspace,he=o.plugin.id===`pdf`?V.chat.attachmentPreviewPdf:o.plugin.id===`docx`?V.chat.attachmentPreviewDocument:o.plugin.id===`spreadsheet`?V.chat.attachmentPreviewSpreadsheet:H.preview,ge;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(ge=le(),t[8]=ge):ge=t[8];let _e=ge,ve=(0,W.useContext)(je),ye=(0,W.useRef)(null),be=(0,W.useRef)(null),[U,xe]=(0,W.useState)(!1),Se;t[9]===o.plugin.capabilities?Se=t[10]:(Se=o.plugin.capabilities.some(Vt),t[9]=o.plugin.capabilities,t[10]=Se);let Ce=Se,Ee,De;t[11]===U?(Ee=t[12],De=t[13]):(Ee=()=>{if(!U)return;ye.current?.querySelector(`button:not(:disabled), a`)?.focus();let e=e=>{if([`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key)&&ye.current?.contains(document.activeElement)){e.preventDefault(),e.stopImmediatePropagation();let t=[...ye.current.querySelectorAll(`button:not(:disabled), a`)],n=t.indexOf(document.activeElement);t[e.key===`Home`?0:e.key===`End`?t.length-1:(n+(e.key===`ArrowDown`?1:-1)+t.length)%t.length]?.focus();return}e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),xe(!1),be.current?.focus())};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},De=[U],t[11]=U,t[12]=Ee,t[13]=De),(0,W.useEffect)(Ee,De);let K;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(K=e=>{xe(!1),be.current?.focus(),e()},t[14]=K):K=t[14];let q=K,ke;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(ke=M(`shrink-0 bg-surface-base px-3 py-2 sm:px-4`,ce),t[15]=ke):ke=t[15];let Ae;t[16]===ve?Ae=t[17]:(Ae=ve?(0,Z.jsx)(Rt,{label:ve.label,active:ve.active,onClick:ve.onToggle,children:(0,Z.jsx)(we,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0})}):null,t[16]=ve,t[17]=Ae);let Me=c?H.collapsePreview:H.expandPreview,Ne=!d,Pe;t[18]===c?Pe=t[19]:(Pe=c?(0,Z.jsx)(ee,{className:`size-4`,"aria-hidden":!0}):(0,Z.jsx)(C,{className:`size-4`,"aria-hidden":!0}),t[18]=c,t[19]=Pe);let Fe;t[20]!==c||t[21]!==d||t[22]!==Me||t[23]!==Ne||t[24]!==Pe?(Fe=(0,Z.jsx)(Rt,{label:Me,active:c,disabled:Ne,onClick:d,children:Pe}),t[20]=c,t[21]=d,t[22]=Me,t[23]=Ne,t[24]=Pe,t[25]=Fe):Fe=t[25];let Ie;t[26]===U?Ie=t[27]:(Ie=U?(0,Z.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-40 cursor-default bg-transparent`,"aria-hidden":!0,tabIndex:-1,onPointerDown:e=>{e.preventDefault(),xe(!1)}}):null,t[26]=U,t[27]=Ie);let Le;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(Le=M(`inline-flex size-9 shrink-0 items-center justify-center rounded-full border border-edge-subtle bg-surface-panel text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg`,re.focusRingPanel),t[28]=Le):Le=t[28];let Re,ze;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(Re=()=>xe(Bt),ze=(0,Z.jsx)(_,{className:`size-4`}),t[29]=Re,t[30]=ze):(Re=t[29],ze=t[30]);let Be;t[31]!==H.moreActions||t[32]!==U?(Be=(0,Z.jsx)(`button`,{ref:be,type:`button`,className:Le,title:H.moreActions,"aria-label":H.moreActions,"aria-haspopup":`menu`,"aria-expanded":U,onClick:Re,children:ze}),t[31]=H.moreActions,t[32]=U,t[33]=Be):Be=t[33];let Ve;t[34]!==s||t[35]!==N||t[36]!==o.plugin.capabilities||t[37]!==L||t[38]!==S||t[39]!==D||t[40]!==B||t[41]!==H.copyFilePath||t[42]!==H.copyWorkspacePath||t[43]!==H.download||t[44]!==H.edit||t[45]!==H.editInNewChat||t[46]!==H.moreActions||t[47]!==H.openInBrowser||t[48]!==H.pathCopied||t[49]!==H.preview||t[50]!==H.revealInFolder||t[51]!==H.saveCopy||t[52]!==H.shareLink||t[53]!==H.wordWrap||t[54]!==U||t[55]!==I||t[56]!==r||t[57]!==i||t[58]!==ie||t[59]!==ae||t[60]!==j||t[61]!==pe||t[62]!==ue||t[63]!==se||t[64]!==k||t[65]!==w?(Ve=U?(0,Z.jsxs)(`div`,{ref:ye,role:`menu`,"aria-label":H.moreActions,"data-file-preview-menu":!0,className:`absolute right-0 top-full z-50 mt-1 max-h-[min(32rem,calc(100dvh-8rem))] w-60 max-w-[calc(100vw-2rem)] overflow-y-auto overscroll-contain rounded-lg border border-edge bg-surface-overlay p-1 shadow-popover`,children:[(0,Z.jsx)(ht,{variant:`menu`,onAction:q,systemApp:j,chooseApp:N,recommendedApps:ue,recentApps:pe,onOpenWithApp:I}),se.map(e=>(0,Z.jsx)($,{icon:(0,Z.jsx)(te,{className:`size-4`}),label:e.label,disabled:e.disabled,onClick:()=>q(e.onClick)},e.label)),i?(0,Z.jsx)($,{icon:(0,Z.jsx)(A,{className:`size-4`}),label:B===`zh`?`重试保存`:`Retry save`,onClick:()=>q(i)}):null,r?(0,Z.jsx)($,{icon:(0,Z.jsx)(O,{className:`size-4`}),label:B===`zh`?`刷新文件`:`Refresh file`,onClick:()=>q(r)}):null,o.plugin.capabilities.includes(`edit`)?(0,Z.jsx)($,{icon:S?.active?(0,Z.jsx)(y,{className:`size-4`}):(0,Z.jsx)(E,{className:`size-4`}),label:S?.active?H.preview:H.edit,disabled:!S,onClick:()=>q(()=>S?.onToggle())}):null,w?(0,Z.jsx)($,{icon:(0,Z.jsx)(Oe,{className:`size-4`}),label:H.wordWrap,active:w.active,onClick:()=>q(w.onToggle)}):null,(0,Z.jsx)(`div`,{className:`my-1 border-t border-edge-subtle dark:border-edge`}),(0,Z.jsx)($,{icon:D?.loading?(0,Z.jsx)(x,{className:`size-4 animate-spin`}):(0,Z.jsx)(T,{className:`size-4`}),label:H.editInNewChat,disabled:!D||D.disabled||D.loading,onClick:()=>q(()=>D?.onClick())}),(0,Z.jsx)($,{icon:k?.loading?(0,Z.jsx)(x,{className:`size-4 animate-spin`}):(0,Z.jsx)(Te,{className:`size-4`}),label:H.shareLink,disabled:!k||k.disabled||k.loading,onClick:()=>q(()=>k?.onClick())}),(0,Z.jsx)(`div`,{className:`my-1 border-t border-edge-subtle dark:border-edge`}),ae?(0,Z.jsxs)(`a`,{href:ae.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:()=>xe(!1),children:[(0,Z.jsx)(v,{className:`size-4 text-fg-muted`,"aria-hidden":!0}),H.openInBrowser]}):null,ie?(0,Z.jsx)($,{icon:(0,Z.jsx)(b,{className:`size-4`}),label:H.revealInFolder,onClick:()=>q(ie)}):null,ie?(0,Z.jsx)(`div`,{className:`my-1 border-t border-edge-subtle dark:border-edge`}):null,(0,Z.jsx)($,{icon:(0,Z.jsx)(g,{className:`size-4`}),label:_e?H.saveCopy:H.download,disabled:!s.canDownload,onClick:()=>q(()=>void s.onDownload())}),L?(0,Z.jsx)($,{icon:L.copied?(0,Z.jsx)(p,{className:`size-4 text-emerald-500`}):(0,Z.jsx)(h,{className:`size-4`}),label:L.copied?H.pathCopied:_e?H.copyFilePath:H.copyWorkspacePath,onClick:()=>q(L.onClick)}):null]}):null,t[34]=s,t[35]=N,t[36]=o.plugin.capabilities,t[37]=L,t[38]=S,t[39]=D,t[40]=B,t[41]=H.copyFilePath,t[42]=H.copyWorkspacePath,t[43]=H.download,t[44]=H.edit,t[45]=H.editInNewChat,t[46]=H.moreActions,t[47]=H.openInBrowser,t[48]=H.pathCopied,t[49]=H.preview,t[50]=H.revealInFolder,t[51]=H.saveCopy,t[52]=H.shareLink,t[53]=H.wordWrap,t[54]=U,t[55]=I,t[56]=r,t[57]=i,t[58]=ie,t[59]=ae,t[60]=j,t[61]=pe,t[62]=ue,t[63]=se,t[64]=k,t[65]=w,t[66]=Ve):Ve=t[66];let He;t[67]!==Ie||t[68]!==Be||t[69]!==Ve?(He=(0,Z.jsxs)(`div`,{className:`relative shrink-0`,children:[Ie,Be,Ve]}),t[67]=Ie,t[68]=Be,t[69]=Ve,t[70]=He):He=t[70];let Ue;t[71]!==m||t[72]!==H.close||t[73]!==f?(Ue=m?null:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mx-0.5 h-5 w-px bg-edge-subtle`,"aria-hidden":!0}),(0,Z.jsx)(Rt,{label:H.close,onClick:f,children:(0,Z.jsx)(ne,{className:`size-4`,strokeWidth:1.75})})]}),t[71]=m,t[72]=H.close,t[73]=f,t[74]=Ue):Ue=t[74];let J;t[75]!==Ae||t[76]!==Fe||t[77]!==He||t[78]!==Ue?(J=(0,Z.jsx)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:(0,Z.jsxs)(`div`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:[Ae,Fe,He,Ue]})}),t[75]=Ae,t[76]=Fe,t[77]=He,t[78]=Ue,t[79]=J):J=t[79];let Y;t[80]===a?Y=t[81]:(Y=a?(0,Z.jsx)(`div`,{className:`mt-1.5 flex min-h-4 min-w-0 items-center gap-2 px-3 text-xs leading-4 text-fg-muted`,children:a}):null,t[80]=a,t[81]=Y);let X;t[82]!==o||t[83]!==Ce||t[84]!==V.chat||t[85]!==he||t[86]!==R?(X=Ce||R?(0,Z.jsxs)(`div`,{className:`mt-2 flex items-center gap-2 overflow-x-auto pb-0.5`,children:[R?(0,Z.jsx)(de,{className:`mr-2 flex shrink-0 rounded-lg bg-surface-hover p-0.5`,role:`group`,"aria-label":V.chat.attachmentPreviewText,children:[{active:!1,label:he},{active:!0,label:V.chat.attachmentPreviewText}].map(e=>(0,Z.jsx)(`button`,{type:`button`,"aria-pressed":R.active===e.active,className:M(`rounded-md px-2.5 py-1 text-xs font-medium`,R.active===e.active?`bg-surface-hover text-fg`:`text-fg-muted hover:text-fg`),onClick:()=>R.onChange(e.active),children:e.label},e.label))}):null,Ce?(0,Z.jsx)(Ft,{controller:o}):null]}):null,t[82]=o,t[83]=Ce,t[84]=V.chat,t[85]=he,t[86]=R,t[87]=X):X=t[87];let We;return t[88]!==J||t[89]!==Y||t[90]!==X?(We=(0,Z.jsxs)(`div`,{"data-workspace-toolbar":!0,className:ke,children:[J,Y,X]}),t[88]=J,t[89]=Y,t[90]=X,t[91]=We):We=t[91],We}function Bt(e){return!e}function Vt(e){return[`zoom`,`search`,`rotate`,`pageNavigation`].includes(e)}function Ht(e){return e.language}function Ut({header:e,chat:t,...n}){let r=(0,W.useRef)(null);(0,W.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>{let t=nt(n.descriptor.id).scroll;e.querySelectorAll(`[class*="overflow-auto"], [class*="overflow-y-auto"], .cm-scroller`).forEach((e,n)=>{t[n]!=null&&(e.scrollTop=t[n])})},i=requestAnimationFrame(t),a=typeof MutationObserver<`u`?new MutationObserver(t):null;a?.observe(e,{childList:!0,subtree:!0});let o=()=>rt(n.descriptor.id,{scroll:[...e.querySelectorAll(`[class*="overflow-auto"], [class*="overflow-y-auto"], .cm-scroller`)].map(e=>e.scrollTop)});return e.addEventListener(`scroll`,o,!0),()=>{cancelAnimationFrame(i),a?.disconnect(),e.removeEventListener(`scroll`,o,!0)}},[n.descriptor.id]);let i=(0,W.useContext)(Ae),[o,s]=(0,W.useState)(!1),c=Pt(n.descriptor),l=a(),d=u(n.language),[f,p]=(0,W.useState)(!1),m=async()=>{if(!(!t||f)){p(!0);try{let[n,r]=await Promise.all([t.createFile(),t.conversationId?I(t.conversationId).catch(()=>null):Promise.resolve(null)]);if(n.size>33554432){K(`warning`,d.chat.attachmentFileTooLarge,{name:n.name,maxSize:oe(F)});return}let i=new URLSearchParams({attachmentHandoff:dt(n)}),a=t.projectId?.trim()||r?.projectId?.trim(),o=t.agentId?.trim()||r?.routing?.agentId?.trim();a&&i.set(`projectId`,a),l({pathname:`/chat/new`,search:`?${i}`},{state:{forceNewChat:!0,agentId:o||void 0}}),e.onClose()}catch{K(`error`,d.workspace.editInNewChatFailed)}finally{p(!1)}}};return(0,Z.jsxs)(`div`,{ref:r,className:`flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-transparent`,children:[(0,Z.jsx)(zt,{...e,name:n.descriptor.fileName,filePath:n.descriptor.source.kind===`workspace`?n.descriptor.source.path:void 0,controller:c,actions:n.actions,referenceActions:t?i.map(e=>({label:e.label,disabled:o||n.loading||!!n.loadError||t.disabled,onClick:async()=>{if(!o){s(!0);try{let r=await t.createFile(),i=await ot(e.id,r);K(i?`success`:`warning`,n.language===`zh`?i?`已添加到目标聊天草稿`:`未能添加附件,请确认目标聊天可用及附件限制`:i?`Added to the target chat draft`:`Could not add attachment. Check the target chat and attachment limits.`)}catch{K(`error`,n.language===`zh`?`文件引用失败,原草稿已保留`:`Could not reference file. Your draft is retained.`)}finally{s(!1)}}}})):void 0,editInNewChat:t?{onClick:()=>void m(),loading:f,disabled:n.loading||!!n.loadError||t.disabled}:void 0},n.descriptor.id),(0,Z.jsx)(It,{...n,controller:c})]})}function Wt(e,t){let n=(0,G.c)(7),r=e===void 0||e,i=t!==void 0&&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 C,we as E,Oe as S,Te as T,Ae as _,at as a,ke as b,et as c,Ne as d,Me as f,We as g,Y as h,pt as i,Ye as l,J as m,Ut as n,nt as o,X as p,ft as r,rt as s,Wt as t,Ge as u,q as v,Ee as w,K as x,je as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n}from"./vendor-react-BOUWij0V.js";import{i as r,l as i,o as a}from"./locale-store-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n}from"./vendor-react-BOUWij0V.js";import{i as r,l as i,o as a}from"./locale-store-5Hf8J8-_.js";import{i as o}from"./vendor-swr-CdRzEUwF.js";var s=n(),c=e(t(),1);function l(){let e=(0,s.c)(11),t=i(d),n;e[0]===t?n=e[1]:(n=t?[`personal-agent-nav`,t]:null,e[0]=t,e[1]=n);let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r={revalidateOnFocus:!1},e[2]=r):r=e[2];let{data:a,mutate:l}=o(n,u,r),f,p;e[3]===l?(f=e[4],p=e[5]):(f=()=>{let e=e=>{let t=e.detail;t===void 0?l():l({ok:!0,payload:t},{revalidate:!1})};return window.addEventListener(`personal-agent-updated`,e),()=>window.removeEventListener(`personal-agent-updated`,e)},p=[l],e[3]=l,e[4]=f,e[5]=p),(0,c.useEffect)(f,p);let m=a?.payload,h;e[6]===a?.payload?.displayName?h=e[7]:(h=a?.payload?.displayName?.trim()||`Ada`,e[6]=a?.payload?.displayName,e[7]=h);let g;return e[8]!==m||e[9]!==h?(g={profile:m,displayName:h},e[8]=m,e[9]=h,e[10]=g):g=e[10],g}function u(){return a(r(`/api/personal-agent`))}function d(e){return e.conversationId}export{l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t}from"./vendor-react-BOUWij0V.js";import{i as n,o as r,s as i}from"./workspace-api-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t}from"./vendor-react-BOUWij0V.js";import{i as n,o as r,s as i}from"./workspace-api-CgrcNyBc.js";var a=e(t(),1);function o(e){return e.map(e=>({fileId:e.id,name:e.name,path:e.path,isDirectory:e.isDirectory,children:e.isDirectory?[]:void 0}))}function s(e,t,n){return e.map(e=>e.path===t?{...e,children:n}:e.isDirectory&&e.children?.length?{...e,children:s(e.children,t,n)}:e)}function c(e,t,c){let[l,u]=(0,a.useState)([]),[d,f]=(0,a.useState)(null),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(null),_=(0,a.useRef)(new Set),v=e.trim(),y=t?.trim()??``,b=c?.trim()??``,x=b?``:y,S=!b&&!y?v:``,C=(0,a.useMemo)(()=>{if(b)return{projectId:b};if(x)return{conversationId:x};if(S)return{agentId:S}},[b,x,S]);return{tree:l,rootResource:d,loading:p,error:h,loadRoot:(0,a.useCallback)(async()=>{m(!0),g(null),_.current.clear();try{let[e,t]=await Promise.all([n(``,C),r(C)]);u(o(e.entries)),f(o([t])[0]??null),_.current.add(``)}catch(e){f(null),g(e instanceof Error?e.message:String(e))}finally{m(!1)}},[C]),loadChildren:(0,a.useCallback)(async e=>{if(!_.current.has(e)){_.current.add(e);try{let t=o(await i(e,C));u(n=>s(n,e,t))}catch{_.current.delete(e)}}},[C]),refreshDirectory:(0,a.useCallback)(async e=>{let t=o(await i(e,C));u(e?n=>s(n,e,t):t),_.current.add(e)},[C]),reset:(0,a.useCallback)(()=>{u([]),f(null),g(null),_.current.clear()},[])}}export{c as t};
|
|
@@ -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{l as i,m as a,t as o}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{i as s,n as c,o as l}from"./locale-store-5Hf8J8-_.js";import{t as u}from"./book-open-CCGtrT3R.js";import{t as d}from"./bot-DjLkhyZL.js";import{C as f,S as p,_ as m,a as h,b as g,c as _,d as v,f as y,g as b,h as x,i as S,l as C,m as w,n as T,o as E,p as D,r as O,s as k,t as A,v as j,x as M,y as N}from"./understanding-refresh-store-9apSmAVL.js";import{t as P}from"./briefcase-business-BsoCaI_t.js";import{t as F}from"./calendar-days-hw_Y-g-s.js";import{t as ee}from"./check-DUBLcKHA.js";import{t as I}from"./chevron-down-ccbiQQz_.js";import{t as L}from"./chevron-right-BweFrslA.js";import{n as R,r as z,t as B}from"./popover-select-DD8fmrxH.js";import{t as V}from"./circle-alert-BEjgurr2.js";import{t as H}from"./circle-check-C23XjkUj.js";import{t as U}from"./clock-3-DnrAnuyZ.js";import{t as W}from"./database-CjjeZfRG.js";import{t as te}from"./download-Dk-ZjtO6.js";import{t as ne}from"./earth-BMhZtzcj.js";import{t as G}from"./ellipsis-0k4rZLoy.js";import{m as re,p as K,t as ie}from"./understanding-activity-store-CmwtE8Kd.js";import{t as q}from"./folder-open-CyzJ19I9.js";import{t as ae}from"./git-branch-Dh9uxTot.js";import{t as oe}from"./list-todo-CTVRto8O.js";import{t as se}from"./loader-circle-CifKLtgG.js";import{t as ce}from"./lock-keyhole-DEK5kH0u.js";import{t as le}from"./message-circle-Badhj-4D.js";import{t as ue}from"./pencil-DmIY3Oa-.js";import{t as de}from"./plus-Q2yW6OE7.js";import{t as fe}from"./refresh-cw-BRlGaq2w.js";import{t as pe}from"./search-DA7gz22f.js";import{t as me}from"./shield-check-BU58siTV.js";import{t as he}from"./sliders-horizontal-DqsYor6I.js";import{t as ge}from"./sparkles-DHlfQFAF.js";import{t as _e}from"./sticky-note-fzP7NAJq.js";import{t as ve}from"./trash-2-DusmjVPV.js";import{t as ye}from"./upload-rrb46c3c.js";import{t as be}from"./user-round-C9jxPhMR.js";import{t as xe}from"./x-B_N4OPjy.js";import{t as Se}from"./cn-0WouolD0.js";import{i as Ce}from"./vendor-swr-CdRzEUwF.js";import{t as J}from"./button-CnRSIP6m.js";import{t as we}from"./skeleton-BI5TyibZ.js";import{a as Te,c as Ee,i as De,n as Oe,o as ke,r as Ae,s as je,t as Me}from"./dist-DfWfZ9iu.js";import{r as Ne}from"./app-chrome-BeB4KgOf.js";import{t as Pe}from"./page-tabs-oeTY7z3_.js";import{t as Fe}from"./page-header-store-reh1es-3.js";import{t as Ie}from"./loopi-CNtmi9FU.js";import{t as Le}from"./sliding-tab-list-DuQyViqe.js";import{l as Re,m as ze,o as Be,r as Ve,t as He}from"./dist-D3lWNSe7.js";import{t as Ue}from"./date-picker-ByTasrfl.js";var Y=e(t(),1),X=n(),Z=r();function We(e){let t=(0,X.c)(15),{sourceId:n,disabled:r}=e,i=r!==void 0&&r,a=c(Ke)===`zh`,{sources:o,starting:s,start:l}=A(),u;t[0]!==n||t[1]!==o?(u=n?o.filter(e=>e.grantId===n):o,t[0]=n,t[1]=o,t[2]=u):u=t[2];let d=u,f;t[3]===d?f=t[4]:(f=d.some(Q),t[3]=d,t[4]=f);let p=f,m=n&&d.some(Ge),h=p?a?`更新中`:`Updating`:m?a?`重试`:`Retry`:n?a?`更新理解`:`Update understanding`:a?`更新全部`:`Update all`,g=i||s||p,_;t[5]!==n||t[6]!==l?(_=()=>void l(n),t[5]=n,t[6]=l,t[7]=_):_=t[7];let v;t[8]===p?v=t[9]:(v=p?(0,Z.jsx)(se,{className:`size-3.5 animate-spin motion-reduce:animate-none`}):(0,Z.jsx)(fe,{className:`size-3.5`}),t[8]=p,t[9]=v);let y;return t[10]!==h||t[11]!==g||t[12]!==_||t[13]!==v?(y=(0,Z.jsxs)(J,{variant:`ghost`,className:`h-8 shrink-0 gap-1.5 px-2 text-xs`,disabled:g,onClick:_,children:[v,h]}),t[10]=h,t[11]=g,t[12]=_,t[13]=v,t[14]=y):y=t[14],y}function Ge(e){return e.status===`failed`||e.status===`partial`||e.status===`canceled`}function Q(e){return e.status===`queued`||e.status===`running`}function Ke(e){return e.language}function qe(e){let t=(0,X.c)(22),{sourceId:n,lastCollectedAt:r}=e,i=c(Je),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=A(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,Z.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:e}),t[6]=e,t[7]=n),n}let l;t[8]===a?l=t[9]:(l=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]=l);let u=l,d=s.status===`running`||s.status===`queued`,f=s.status===`failed`||s.status===`partial`||s.status===`canceled`,p=s.metadata.added,m=d?u[s.metadata.phase??`queued`]??u.queued:f?a?`更新未完成,可重试`:`Update incomplete; retry available`:p===0?a?`更新完成,暂无新增理解`:`Updated; no new understanding`:p===void 0?a?`更新完成`:`Updated`:a?`更新完成,新增 ${p} 条`:`Updated; ${p} added`,h;t[10]===m?h=t[11]:(h=(0,Z.jsx)(`p`,{children:m}),t[10]=m,t[11]=h);let g;t[12]!==i||t[13]!==s.completedAt?(g=s.completedAt?(0,Z.jsx)(`p`,{children:new Date(s.completedAt).toLocaleString(i)}):null,t[12]=i,t[13]=s.completedAt,t[14]=g):g=t[14];let _;t[15]!==f||t[16]!==s.errorMessage?(_=f&&s.errorMessage?(0,Z.jsx)(`p`,{className:`text-danger`,children:s.errorMessage}):null,t[15]=f,t[16]=s.errorMessage,t[17]=_):_=t[17];let v;return t[18]!==h||t[19]!==g||t[20]!==_?(v=(0,Z.jsxs)(`div`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,"aria-live":`polite`,children:[h,g,_]}),t[18]=h,t[19]=g,t[20]=_,t[21]=v):v=t[21],v}function Je(e){return e.language}function Ye(e){let t=(0,X.c)(64),{language:n,busy:r,statement:i,scope:a,onEdit:o,onDelete:s,onScopeChange:c}=e,[l,u]=(0,Y.useState)(!1),[f,p]=(0,Y.useState)(!1),m=n===`zh`,h=m?`修改或删除这条内容`:`Edit or delete this item`,g;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,Z.jsx)(G,{className:`size-4`,"aria-hidden":`true`}),t[0]=g):g=t[0];let _;t[1]!==r||t[2]!==h?(_=(0,Z.jsx)(ze,{asChild:!0,children:(0,Z.jsx)(J,{variant:`ghost`,className:`size-11 shrink-0 p-0`,disabled:r,"aria-label":h,children:g})}),t[1]=r,t[2]=h,t[3]=_):_=t[3];let v;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsx)(ue,{className:`size-4`,"aria-hidden":`true`}),t[4]=v):v=t[4];let y=m?`修改`:`Edit`,b;t[5]!==r||t[6]!==o||t[7]!==y?(b=(0,Z.jsxs)(Ve,{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:[v,y]}),t[5]=r,t[6]=o,t[7]=y,t[8]=b):b=t[8];let x;t[9]!==r||t[10]!==c||t[11]!==a||t[12]!==m?(x=a&&c?(0,Z.jsxs)(Ve,{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,Z.jsx)(he,{className:`size-4`,"aria-hidden":`true`}),m?`作用范围`:`Where it applies`]}):null,t[9]=r,t[10]=c,t[11]=a,t[12]=m,t[13]=x):x=t[13];let S,C;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(S=()=>u(!0),C=(0,Z.jsx)(ve,{className:`size-4`,"aria-hidden":`true`}),t[14]=S,t[15]=C):(S=t[14],C=t[15]);let w=m?`删除`:`Delete`,T;t[16]!==r||t[17]!==w?(T=(0,Z.jsxs)(Ve,{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:S,children:[C,w]}),t[16]=r,t[17]=w,t[18]=T):T=t[18];let E;t[19]!==T||t[20]!==b||t[21]!==x?(E=(0,Z.jsx)(Be,{children:(0,Z.jsxs)(He,{align:`end`,sideOffset:4,className:`z-[100] min-w-36 rounded-xl border border-edge bg-surface-overlay p-1 shadow-popover`,children:[b,x,T]})}),t[19]=T,t[20]=b,t[21]=x,t[22]=E):E=t[22];let D;t[23]!==E||t[24]!==_?(D=(0,Z.jsxs)(Re,{modal:!1,children:[_,E]}),t[23]=E,t[24]=_,t[25]=D):D=t[25];let O;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,Z.jsx)(Te,{className:`fixed inset-0 z-[110] bg-scrim`}),t[26]=O):O=t[26];let k=m?`删除这条内容?`:`Delete this item?`,A;t[27]===k?A=t[28]:(A=(0,Z.jsx)(je,{className:`font-semibold text-fg`,children:k}),t[27]=k,t[28]=A);let j=m?`删除后将不再使用这条记忆,原始对话和文件会保留。`:`This memory will no longer be used. Original conversations and files are kept.`,M;t[29]===j?M=t[30]:(M=(0,Z.jsx)(De,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:j}),t[29]=j,t[30]=M);let N;t[31]!==A||t[32]!==M?(N=(0,Z.jsxs)(`header`,{className:`shrink-0 border-b border-edge px-5 py-4`,children:[A,M]}),t[31]=A,t[32]=M,t[33]=N):N=t[33];let P;t[34]===i?P=t[35]:(P=(0,Z.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]=P);let F=m?`取消`:`Cancel`,ee;t[36]===F?ee=t[37]:(ee=(0,Z.jsx)(Oe,{asChild:!0,children:(0,Z.jsx)(J,{variant:`ghost`,children:F})}),t[36]=F,t[37]=ee);let I;t[38]===s?I=t[39]:(I=()=>{u(!1),s()},t[38]=s,t[39]=I);let L=m?`删除`:`Delete`,R;t[40]!==r||t[41]!==I||t[42]!==L?(R=(0,Z.jsx)(J,{disabled:r,onClick:I,children:L}),t[40]=r,t[41]=I,t[42]=L,t[43]=R):R=t[43];let z;t[44]!==ee||t[45]!==R?(z=(0,Z.jsxs)(`footer`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-5 py-3`,children:[ee,R]}),t[44]=ee,t[45]=R,t[46]=z):z=t[46];let B;t[47]!==N||t[48]!==P||t[49]!==z?(B=(0,Z.jsxs)(ke,{children:[O,(0,Z.jsxs)(Ae,{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:[N,P,z]})]}),t[47]=N,t[48]=P,t[49]=z,t[50]=B):B=t[50];let V;t[51]!==l||t[52]!==D||t[53]!==B?(V=(0,Z.jsxs)(Me,{open:l,onOpenChange:u,children:[D,B]}),t[51]=l,t[52]=D,t[53]=B,t[54]=V):V=t[54];let H;t[55]!==r||t[56]!==c||t[57]!==a||t[58]!==f||t[59]!==m?(H=a&&c?(0,Z.jsx)(Me,{open:f,onOpenChange:p,children:(0,Z.jsxs)(ke,{children:[(0,Z.jsx)(Te,{className:`fixed inset-0 z-[110] bg-scrim`}),(0,Z.jsxs)(Ae,{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,Z.jsxs)(`header`,{className:`shrink-0 border-b border-edge px-5 py-4`,children:[(0,Z.jsx)(je,{className:`font-semibold text-fg`,children:m?`这条记忆在哪里生效?`:`Where should this memory apply?`}),(0,Z.jsx)(De,{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,Z.jsx)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto p-4`,children:[{value:{type:`global`},icon:ne,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:d,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,Z.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),c(t)},children:[(0,Z.jsx)(n,{className:`size-5 shrink-0 text-fg-muted`,"aria-hidden":`true`}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:i}),(0,Z.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:o})]}),s?(0,Z.jsx)(`span`,{className:`text-xs font-medium text-accent-fg`,children:m?`当前`:`Current`}):null]},t.type)})}),(0,Z.jsx)(`footer`,{className:`flex shrink-0 justify-end border-t border-edge px-5 py-3`,children:(0,Z.jsx)(Oe,{asChild:!0,children:(0,Z.jsx)(J,{variant:`ghost`,children:m?`取消`:`Cancel`})})})]})]})}):null,t[55]=r,t[56]=c,t[57]=a,t[58]=f,t[59]=m,t[60]=H):H=t[60];let U;return t[61]!==V||t[62]!==H?(U=(0,Z.jsxs)(Z.Fragment,{children:[V,H]}),t[61]=V,t[62]=H,t[63]=U):U=t[63],U}function Xe(e,t){return e?new Intl.DateTimeFormat(t===`zh`?`zh-CN`:`en`,{dateStyle:`medium`}).format(e):null}function Ze(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`:Xe(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 Qe(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 $e(e,t){if(e.validTo){let n=Xe(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 et(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 tt(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){let t=(0,X.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,Y.useId)(),m=r===`zh`,h;t[0]!==n||t[1]!==r?(h=et(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(it).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,Z.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,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsx)(`label`,{className:`text-sm font-medium text-fg`,htmlFor:p,children:m?`修改这条理解`:`Edit this understanding`}),(0,Z.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,Z.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Z.jsx)(J,{variant:`ghost`,disabled:i,onClick:l,children:m?`取消`:`Cancel`}),(0,Z.jsx)(J,{variant:`primary`,disabled:!o.trim()||i,onClick:d,children:i?m?`保存中…`:`Saving…`:m?`保存修改`:`Save changes`})]})]}):(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 sm:gap-4`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1 pt-1.5`,children:[(0,Z.jsx)(`p`,{className:`whitespace-pre-wrap break-words text-base leading-7 text-fg`,children:n.statement}),(0,Z.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,Z.jsx)(`span`,{children:Qe(n,r)}),n.usable===!1?(0,Z.jsx)(`span`,{children:m?`暂不使用`:`Not in use`}):null,n.validTo?(0,Z.jsx)(`span`,{children:$e(n,r)}):null,n.authority!==`user_explicit`&&n.confidence<.65?(0,Z.jsx)(`span`,{children:g}):null,(0,Z.jsxs)(`details`,{className:`open:basis-full`,children:[(0,Z.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,Z.jsxs)(`div`,{className:`my-2 space-y-1 border-l-2 border-edge pl-3 text-sm leading-6`,children:[(0,Z.jsx)(`p`,{children:n.usable?m?`按需用于当前协作`:`Used when relevant`:m?`暂不使用,后台继续复核`:`Not in use; reviewed automatically`}),(0,Z.jsxs)(`p`,{children:[$e(n,r),` · `,tt(n.scope,r),g?` · ${g}`:``]}),(0,Z.jsxs)(`p`,{children:[m?`最近观察:`:`Last observed: `,Xe(n.observedAt,r)]}),(0,Z.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(rt):(0,Z.jsx)(`p`,{children:m?`暂无更详细的来源记录`:`No further source details available`}),(0,Z.jsx)(J,{variant:`ghost`,className:`-ml-2 px-2`,disabled:i,onClick:c,children:b})]})]})]})]}),(0,Z.jsx)(Ye,{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 rt(e){return(0,Z.jsx)(`p`,{className:`break-words`,children:e},e)}function it(e){return e.label}var at={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`}}},$={"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:`最近文档`}},ot={user:be,conversation:le,connector:W,work_folder:q,local_source:re,inference:W},st={files:q,recent_documents:re,calendar:F,tasks:oe,notes:_e,mail:K,messages:le,code_activity:ae};function ct(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 lt(e,t){return e.kind===`local_source`&&e.label?$[e.label]?.[t]??e.label:e.kind===`work_folder`&&e.label?t===`zh`?`工作目录 · ${e.label}`:`Work folder · ${e.label}`:e.label?e.label:at[t].sourceKinds[e.kind]}function ut(e){return`${e.kind}:${e.adapterId}:${e.displayName}`}function dt(e){let t=(0,X.c)(91),{assertions:n,configuredSources:r,activityRunning:i,language:a,busy:o,error:s,onReviewAssertion:c,onCompleted:l}=e,u=at[a],[d,f]=(0,Y.useState)(!1),[p,m]=(0,Y.useState)(null),[h,g]=(0,Y.useState)(``),_;t[0]===n?_=t[1]:(_=n.filter(vt),t[0]=n,t[1]=_);let v=_,y;t[2]===v?y=t[3]:(y=[...v].sort(_t),t[2]=v,t[3]=y);let b=y,x;if(t[4]!==r||t[5]!==v||t[6]!==a){let e=new Map;for(let t of r){let n=t.kind===`local_source`?$[t.adapterId]?.[a]??t.displayName:t.displayName,r=ut(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 v)for(let n of t.sources?.length?t.sources:[ct(t)]){let r=lt(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)}x=[...e.values()].sort(gt),t[4]=r,t[5]=v,t[6]=a,t[7]=x}else x=t[7];let S=x,C;t[8]===c?C=t[9]:(C=async(e,t,n)=>{await c(e,t,n)&&m(null)},t[8]=c,t[9]=C);let w=C,T,E,D,O,k,A,j,M,N;if(t[10]!==i||t[11]!==o||t[12]!==h||t[13]!==p||t[14]!==a||t[15]!==b||t[16]!==w||t[17]!==d||t[18]!==u.eyebrow||t[19]!==u.nothingPending||t[20]!==u.pending||t[21]!==u.pendingHint||t[22]!==u.showAll||t[23]!==u.showLess||t[24]!==u.subtitle||t[25]!==u.title||t[26]!==u.updating){let e=d?b:b.slice(0,5);T=`mx-auto w-full max-w-[42rem] pb-2`,E=`polite`;let n;t[36]===u.eyebrow?n=t[37]:(n=(0,Z.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.18em] text-accent-fg`,children:u.eyebrow}),t[36]=u.eyebrow,t[37]=n);let r;t[38]===u.title?r=t[39]:(r=(0,Z.jsx)(`h2`,{className:`mt-3 text-2xl font-semibold tracking-tight text-fg sm:text-3xl`,children:u.title}),t[38]=u.title,t[39]=r);let s;t[40]===u.subtitle?s=t[41]:(s=(0,Z.jsx)(`p`,{className:`mx-auto mt-3 max-w-[38rem] text-sm leading-6 text-fg-muted`,children:u.subtitle}),t[40]=u.subtitle,t[41]=s),t[42]!==n||t[43]!==r||t[44]!==s?(D=(0,Z.jsxs)(`div`,{className:`text-center`,children:[n,r,s]}),t[42]=n,t[43]=r,t[44]=s,t[45]=D):D=t[45],t[46]!==i||t[47]!==u.updating?(O=i?(0,Z.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,Z.jsx)(se,{className:`size-4 shrink-0 animate-spin motion-reduce:animate-none`}),(0,Z.jsx)(`p`,{children:u.updating})]}):null,t[46]=i,t[47]=u.updating,t[48]=O):O=t[48],k=`mt-8`,A=`understanding-updates-title`;let c=b.length?` · ${b.length}`:``;t[49]!==u.pending||t[50]!==c?(j=(0,Z.jsxs)(`h3`,{id:`understanding-updates-title`,className:`text-sm font-semibold text-fg`,children:[u.pending,c]}),t[49]=u.pending,t[50]=c,t[51]=j):j=t[51],t[52]===u.pendingHint?M=t[53]:(M=(0,Z.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:u.pendingHint}),t[52]=u.pendingHint,t[53]=M),N=b.length?(0,Z.jsxs)(`div`,{className:`mt-3`,children:[Ze(e,a).map(e=>{let{label:t,items:n}=e;return(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h4`,{className:`border-b border-edge-subtle px-4 pb-2 pt-3 text-xs font-medium text-fg-muted`,children:t}),(0,Z.jsx)(`div`,{children:n.map(e=>(0,Z.jsx)(nt,{item:e,language:a,busy:o,editing:p===e.id,draft:h,onDraftChange:g,onEdit:()=>{m(e.id),g(e.statement)},onCancel:()=>m(null),onCorrect:()=>void w(e,`edited`,h.trim()),onDelete:()=>void w(e,`deleted`)},e.id))})]},t)}),b.length>5?(0,Z.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:()=>f(ht),children:[d?u.showLess:u.showAll.replace(`{{count}}`,String(b.length)),(0,Z.jsx)(I,{className:Se(`size-3.5 transition-transform`,d&&`rotate-180`)})]}):null]}):(0,Z.jsxs)(`div`,{className:`mt-3 flex items-start gap-3 rounded-xl border border-edge bg-surface-base/55 p-4`,children:[(0,Z.jsx)(H,{className:`mt-0.5 size-5 shrink-0 text-success`}),(0,Z.jsx)(`p`,{className:`text-sm leading-6 text-fg-muted`,children:u.nothingPending})]}),t[10]=i,t[11]=o,t[12]=h,t[13]=p,t[14]=a,t[15]=b,t[16]=w,t[17]=d,t[18]=u.eyebrow,t[19]=u.nothingPending,t[20]=u.pending,t[21]=u.pendingHint,t[22]=u.showAll,t[23]=u.showLess,t[24]=u.subtitle,t[25]=u.title,t[26]=u.updating,t[27]=T,t[28]=E,t[29]=D,t[30]=O,t[31]=k,t[32]=A,t[33]=j,t[34]=M,t[35]=N}else T=t[27],E=t[28],D=t[29],O=t[30],k=t[31],A=t[32],j=t[33],M=t[34],N=t[35];let P;t[54]!==k||t[55]!==A||t[56]!==j||t[57]!==M||t[58]!==N?(P=(0,Z.jsxs)(`section`,{className:k,"aria-labelledby":A,children:[j,M,N]}),t[54]=k,t[55]=A,t[56]=j,t[57]=M,t[58]=N,t[59]=P):P=t[59];let F;t[60]!==S.length||t[61]!==u.channels?(F=(0,Z.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:[u.channels,` · `,S.length]}),t[60]=S.length,t[61]=u.channels,t[62]=F):F=t[62];let L;t[63]===u.channelHint?L=t[64]:(L=(0,Z.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:u.channelHint}),t[63]=u.channelHint,t[64]=L);let R;t[65]!==S||t[66]!==u.activeCount||t[67]!==u.noChannels||t[68]!==u.noUnderstanding||t[69]!==u.pendingCount?(R=S.length?(0,Z.jsx)(`div`,{className:`mt-3 space-y-3`,children:S.map(e=>{let t=e.category?st[e.category]??ot[e.kind]:ot[e.kind],n=e.assertions.filter(mt).length,r=e.assertions.filter(pt).length;return(0,Z.jsxs)(`article`,{className:`rounded-xl border border-edge bg-surface-base/55 px-4 py-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Z.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-xl bg-surface-hover text-fg-muted`,children:(0,Z.jsx)(t,{className:`size-4`})}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`h4`,{className:`truncate text-sm font-medium text-fg`,children:e.label}),e.grantId?(0,Z.jsx)(qe,{sourceId:e.grantId,lastCollectedAt:e.lastObservedAt}):null,e.assertions.length?(0,Z.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:[n?u.activeCount.replace(`{{count}}`,String(n)):``,r?u.pendingCount.replace(`{{count}}`,String(r)):``].filter(Boolean).join(` · `)}):(0,Z.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:u.noUnderstanding})]}),e.grantId?(0,Z.jsx)(We,{sourceId:e.grantId}):null]}),e.assertions.length?(0,Z.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(ft)}):null]},e.key)})}):(0,Z.jsx)(`p`,{className:`mt-3 rounded-xl border border-edge bg-surface-base/55 p-4 text-sm text-fg-muted`,children:u.noChannels}),t[65]=S,t[66]=u.activeCount,t[67]=u.noChannels,t[68]=u.noUnderstanding,t[69]=u.pendingCount,t[70]=R):R=t[70];let z;t[71]!==F||t[72]!==L||t[73]!==R?(z=(0,Z.jsxs)(`details`,{className:`mt-6 border-t border-edge pt-4`,children:[F,L,R]}),t[71]=F,t[72]=L,t[73]=R,t[74]=z):z=t[74];let B;t[75]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,Z.jsx)(ee,{className:`size-4`}),t[75]=B):B=t[75];let V;t[76]!==o||t[77]!==l||t[78]!==u.done?(V=(0,Z.jsx)(`div`,{className:`mt-6 flex justify-end`,children:(0,Z.jsxs)(J,{variant:`primary`,disabled:o,onClick:l,children:[B,u.done]})}),t[76]=o,t[77]=l,t[78]=u.done,t[79]=V):V=t[79];let U;t[80]===s?U=t[81]:(U=s?(0,Z.jsx)(`p`,{className:`mt-5 text-sm text-danger`,role:`alert`,children:s}):null,t[80]=s,t[81]=U);let W;return t[82]!==T||t[83]!==E||t[84]!==D||t[85]!==O||t[86]!==P||t[87]!==z||t[88]!==V||t[89]!==U?(W=(0,Z.jsxs)(`section`,{className:T,"aria-live":E,children:[D,O,P,z,V,U]}),t[82]=T,t[83]=E,t[84]=D,t[85]=O,t[86]=P,t[87]=z,t[88]=V,t[89]=U,t[90]=W):W=t[90],W}function ft(e){return(0,Z.jsxs)(`li`,{className:`flex gap-2`,children:[(0,Z.jsx)(`span`,{className:`mt-2 size-1 shrink-0 rounded-full bg-accent/60`}),(0,Z.jsx)(`span`,{children:e.statement})]},e.id)}function pt(e){return!e.usable}function mt(e){return e.usable}function ht(e){return!e}function gt(e,t){return t.assertions.length-e.assertions.length||(t.lastObservedAt??0)-(e.lastObservedAt??0)}function _t(e,t){return t.recordedAt-e.recordedAt}function vt(e){return e.scope.type===`global`&&e.status!==`archived`&&e.status!==`rejected`}function yt(){let{pathname:e,search:t}=i(),n=c(e=>e.language),r=ie(),[a,o]=(0,Y.useState)(!1),[s,l]=(0,Y.useState)(null),u=e===`/user-model`,{data:d,mutate:f}=Ce(u?`/api/user-model`:null,C),p=A(e=>e.error),m=A(e=>e.sources.some(e=>e.status===`running`||e.status===`queued`)),g=n===`zh`;if((0,Y.useEffect)(()=>{u&&new URLSearchParams(t).get(`workDiscovery`)===`review`&&ie.getState().setDrawerOpen(!0)},[u,t]),(0,Y.useEffect)(()=>{u&&r.status!==`running`&&f()},[f,u,r.directoryRun?.id,r.status]),!u)return null;let _=r.status===`running`||m,v=async(e,t,n)=>{o(!0),l(null);try{return t===`edited`&&n?await T(e.id,n):t===`deleted`&&await h(e.id),await f(),!0}catch(e){return l(e instanceof Error?e.message:String(e)),!1}finally{o(!1)}},y=e=>{if(!e&&d&&r.status!==`running`){r.finish();return}r.setDrawerOpen(e)};return(0,Z.jsxs)(Me,{open:r.drawerOpen,onOpenChange:y,children:[(0,Z.jsx)(Ee,{asChild:!0,children:(0,Z.jsx)(J,{type:`button`,variant:`ghost`,className:Se(`relative size-8 rounded-xl p-0`,Ne),title:g?`查看 xopc 对你的理解`:`Review what xopc understands`,"aria-label":g?`查看 xopc 对你的理解`:`Review what xopc understands`,children:_?(0,Z.jsx)(se,{className:`size-4 animate-spin motion-reduce:animate-none`}):(0,Z.jsx)(ge,{className:`size-4 text-accent-fg`})})}),(0,Z.jsxs)(ke,{children:[(0,Z.jsx)(Te,{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,Z.jsx)(`div`,{className:`pointer-events-none fixed inset-0 z-[61] flex items-center justify-center p-3 sm:p-6`,children:(0,Z.jsxs)(Ae,{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,Z.jsxs)(`header`,{className:`flex h-16 shrink-0 items-center justify-between border-b border-edge-subtle px-5 sm:px-6`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(je,{className:`text-sm font-semibold text-fg`,children:_?g?`正在更新用户理解`:`Updating user understanding`:g?`用户理解`:`User understanding`}),(0,Z.jsx)(De,{className:`mt-0.5 text-xs text-fg-muted`,children:_?g?`关闭窗口也会在后台继续`:`You can close this window; work continues in the background`:g?`自动更新,可随时修改或删除`:`Updated automatically. Edit or delete anytime`})]}),(0,Z.jsx)(We,{disabled:!d?.sources?.length}),(0,Z.jsx)(Oe,{asChild:!0,children:(0,Z.jsx)(J,{variant:`ghost`,className:`size-8 rounded-xl p-0`,"aria-label":g?`关闭`:`Close`,children:(0,Z.jsx)(xe,{className:`size-4`})})})]}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-5 py-7 sm:px-9 sm:py-9`,children:d?(0,Z.jsx)(dt,{assertions:d.assertions,configuredSources:d.sources??[],activityRunning:_,language:n,busy:a,error:s??p??null,onReviewAssertion:v,onCompleted:()=>{y(!1)}}):(0,Z.jsxs)(`section`,{className:`space-y-4`,"aria-label":g?`正在加载用户理解`:`Loading user understanding`,children:[(0,Z.jsx)(we,{className:`h-8 w-2/3`}),(0,Z.jsx)(we,{className:`h-32 w-full`}),(0,Z.jsx)(we,{className:`h-32 w-full`})]})})]})})]})]})}function bt(e){let t=(0,X.c)(34),{language:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={refreshInterval:15e3},t[0]=r):r=t[0];let{data:i,error:a,isLoading:o}=Ce(`memory-learning-status`,jt,r);if(o){let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(we,{className:`h-14 w-full rounded-xl`}),t[1]=e):e=t[1],e}if(a||!i?.jobs||!i?.coverage)return null;let s;t[2]===i.jobs?s=t[3]:(s=i.jobs.filter(At).reduce(kt,0),t[2]=i.jobs,t[3]=s);let c=s,l;t[4]===i.coverage?l=t[5]:(l=i.coverage.filter(Ot).reduce(Dt,0),t[4]=i.coverage,t[5]=l);let u=l,d;t[6]===i.coverage?d=t[7]:(d=i.coverage.filter(Et).reduce(Tt,0),t[6]=i.coverage,t[7]=d);let f=d,p;t[8]===i.jobs?p=t[9]:(p=i.jobs.filter(wt).reduce(Ct,0),t[8]=i.jobs,t[9]=p);let m=p,h;t[10]===i.jobs?h=t[11]:(h=i.jobs.filter(St).reduce(xt,0),t[10]=i.jobs,t[11]=h);let g=h,_=n===`zh`?`资料 ${f} 条 · 已生效记忆 ${u} 条`:`${f} sources · ${u} active memories`,v;t[12]!==n||t[13]!==c?(v=c>0?(0,Z.jsx)(`span`,{className:`ml-2`,children:n===`zh`?`${c} 项处理中`:`${c} processing`}):null,t[12]=n,t[13]=c,t[14]=v):v=t[14];let y=n===`zh`?`计数说明`:`About these counts`,b;t[15]===y?b=t[16]:(b=(0,Z.jsx)(`summary`,{className:`w-fit cursor-pointer rounded focus-visible:outline-accent`,children:y}),t[15]=y,t[16]=b);let x=n===`zh`?`仅统计已启用且有依据的工作记忆;管理列表包含其他状态。“关于你”单独计数。`:`Work memories must be active and supported. Management lists include other states. About you is counted separately.`,S;t[17]===x?S=t[18]:(S=(0,Z.jsx)(`p`,{className:`mt-1 leading-5`,children:x}),t[17]=x,t[18]=S);let C;t[19]!==b||t[20]!==S?(C=(0,Z.jsxs)(`details`,{className:`mt-1 text-xs`,children:[b,S]}),t[19]=b,t[20]=S,t[21]=C):C=t[21];let w;t[22]!==m||t[23]!==n?(w=m>0?(0,Z.jsx)(`span`,{className:`ml-2`,children:n===`zh`?`${m} 项处理失败`:`${m} failed jobs`}):null,t[22]=m,t[23]=n,t[24]=w):w=t[24];let T;t[25]!==n||t[26]!==g?(T=g>0?(0,Z.jsx)(`span`,{className:`ml-2`,children:n===`zh`?`${g} 项等待配置本地模型`:`${g} jobs require a local model`}):null,t[25]=n,t[26]=g,t[27]=T):T=t[27];let E;return t[28]!==C||t[29]!==w||t[30]!==T||t[31]!==_||t[32]!==v?(E=(0,Z.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-base px-4 py-3 text-sm text-fg-muted`,role:`status`,children:[_,v,C,w,T]}),t[28]=C,t[29]=w,t[30]=T,t[31]=_,t[32]=v,t[33]=E):E=t[33],E}function xt(e,t){return e+t.count}function St(e){return e.errorCode===`local_model_required`}function Ct(e,t){return e+t.count}function wt(e){return e.state===`failed`}function Tt(e,t){return e+t.count}function Et(e){return e.recordClass===`source_index`}function Dt(e,t){return e+t.count}function Ot(e){return e.recordClass===`memory`&&e.status===`active`&&e.verification===`supported`}function kt(e,t){return e+t.count}function At(e){return[`queued`,`running`,`retry_wait`].includes(e.state)}function jt(){return l(s(`/api/memory-learning/status`))}function Mt(e){let t=(0,X.c)(12),{id:n,language:r}=e,i;t[0]===n?i=t[1]:(i=()=>l(s(`/api/knowledge-memory/${encodeURIComponent(n)}/evidence`)),t[0]=n,t[1]=i);let{data:a,error:o,isLoading:c}=Ce(`knowledge-evidence:${n}`,i);if(c){let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(we,{className:`mt-3 h-10 w-full rounded-lg`}),t[2]=e):e=t[2],e}if(o){let e=r===`zh`?`此条证据目前不可用于回答,请检查来源授权、有效期和读取范围。`:`Evidence is currently unavailable. Check source authorization, validity and read scope.`,n;return t[3]===e?n=t[4]:(n=(0,Z.jsx)(`p`,{className:`mt-3 text-xs text-fg-muted`,children:e}),t[3]=e,t[4]=n),n}if(!Array.isArray(a?.evidence)||!a.evidence.length)return null;let u;if(t[5]!==a.evidence||t[6]!==r){let e;t[8]===r?e=t[9]:(e=(e,t)=>(0,Z.jsxs)(`p`,{children:[r===`zh`?`证据`:`Evidence`,` · `,e.sourceType===`conversation`?r===`zh`?`对话`:`Conversation`:e.sourceType===`runtime`?r===`zh`?`执行记录`:`Execution receipt`:r===`zh`?`授权资料`:`Authorized source`,` · `,new Date(e.observedAt).toLocaleDateString(r),e.excerpt?(0,Z.jsx)(`span`,{className:`mt-1 block whitespace-pre-wrap break-words`,children:e.excerpt}):null]},t),t[8]=r,t[9]=e),u=a.evidence.map(e),t[5]=a.evidence,t[6]=r,t[7]=u}else u=t[7];let d;return t[10]===u?d=t[11]:(d=(0,Z.jsx)(`div`,{className:`mt-3 space-y-2 border-t border-edge-subtle pt-3 text-xs text-fg-muted`,children:u}),t[10]=u,t[11]=d),d}function Nt(e){let t=e.get(`tab`);return t===`understanding`||t===`privacy`?t:`overview`}var Pt={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:`修改没有保存,请重试。`}},Ft=new Set([`identity.call_name`,`identity.role`,`identity.pronouns`,`preference.timezone`,`preference.locale`]),It=[`work_thread`,`project_fact`,`workspace_fact`,`decision`,`task_lesson`,`commitment`,`open_question`,`episode`,`note`],Lt=`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 Rt(){try{let e=Intl.supportedValuesOf(`timeZone`);return[...new Set([`UTC`,...e])]}catch{return[...Lt]}}var zt=Rt();function Bt(e){return e.map(e=>({value:e,label:e.replaceAll(`_`,` `),group:e.includes(`/`)?e.split(`/`)[0]:`UTC`}))}function Vt(e,t,n=!1){return e?new Intl.DateTimeFormat(t===`zh`?`zh-CN`:`en`,{dateStyle:`medium`,...n?{timeStyle:`short`}:{}}).format(e):null}function Ht(e){return typeof e==`string`&&e.trim()?e.trim():void 0}function Ut(e){return{callName:Ht(e.profile.callName)??``,role:Ht(e.profile.role)??``,pronouns:Ht(e.profile.pronouns)??``,timezone:Ht(e.profile.timezone)??``,locale:Ht(e.profile.locale)??``}}function Wt(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 Gt(e,t){let n=Vt(e,t);return t===`zh`?`当前安排至 ${n}`:`Current plan through ${n}`}function Kt(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function qt(e){let[t,n,r]=e.split(`-`).map(Number);return new Date(t,n-1,r,23,59,59,999).getTime()}function Jt(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 Yt(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 Xt(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 Zt(e){let t=(0,X.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,Z.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,Z.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,Z.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,Z.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,Z.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,Z.jsxs)(`section`,{className:s,children:[d,f]}),t[12]=s,t[13]=d,t[14]=f,t[15]=p):p=t[15],p}function Qt(e){let t=(0,X.c)(7),{icon:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,Z.jsx)(`span`,{className:`text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,Z.jsx)(`p`,{children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,Z.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 $t({open:e,profile:t,language:n,saving:r,onOpenChange:i,onSave:a}){let o=Pt[n],[s,c]=(0,Y.useState)(t),[l,u]=(0,Y.useState)(``);(0,Y.useEffect)(()=>{e&&(c(t),u(``))},[e,t]);let d=e=>{e.preventDefault(),a({callName:s.callName.trim(),role:s.role.trim(),pronouns:s.pronouns.trim(),timezone:s.timezone.trim(),locale:s.locale.trim()})},f=(e,t,n)=>(0,Z.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[(0,Z.jsx)(`span`,{className:`font-medium text-fg`,children:t}),(0,Z.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`})]}),p=[`zh-CN`,`zh-TW`,`en-US`,`en-GB`,`ja-JP`];s.locale&&!p.includes(s.locale)&&p.push(s.locale);let m=k(),h=(0,Y.useMemo)(()=>[...new Set([...zt,m,s.timezone].filter(Boolean))].sort(),[m,s.timezone]),g=l.trim().toLocaleLowerCase(),_=(0,Y.useMemo)(()=>Bt(h.filter(e=>!g||e.toLocaleLowerCase().includes(g)||e.replaceAll(`_`,` `).toLocaleLowerCase().includes(g))),[h,g]);return(0,Z.jsx)(Me,{open:e,onOpenChange:i,children:(0,Z.jsxs)(ke,{children:[(0,Z.jsx)(Te,{className:`xopc-dialog-overlay fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]`}),(0,Z.jsx)(Ae,{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,Z.jsxs)(`form`,{className:`flex h-full min-h-0 flex-col overflow-hidden [border-radius:inherit]`,onSubmit:d,children:[(0,Z.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,Z.jsxs)(`div`,{children:[(0,Z.jsx)(je,{className:`font-semibold text-fg`,children:o.editProfile}),(0,Z.jsx)(De,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:o.editProfileHint})]}),(0,Z.jsx)(Oe,{asChild:!0,children:(0,Z.jsx)(J,{variant:`ghost`,className:`size-8 shrink-0 p-0`,"aria-label":o.cancel,children:(0,Z.jsx)(xe,{className:`size-4`})})})]}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-5 sm:p-6`,children:(0,Z.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[f(`callName`,o.callName,o.callNamePlaceholder),f(`role`,o.role,o.rolePlaceholder),f(`pronouns`,o.pronouns,o.pronounsPlaceholder),(0,Z.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[(0,Z.jsx)(`span`,{className:`font-medium text-fg`,children:o.locale}),(0,Z.jsxs)(R,{value:s.locale,onChange:e=>c(t=>({...t,locale:e.target.value})),children:[(0,Z.jsx)(z,{value:``,children:o.notProvided}),p.map(e=>(0,Z.jsx)(z,{value:e,children:Wt(e,n)},e))]})]}),(0,Z.jsxs)(`label`,{className:`grid gap-1.5 text-sm sm:col-span-2`,children:[(0,Z.jsx)(`span`,{className:`font-medium text-fg`,children:o.timezone}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsx)(B,{value:s.timezone,options:_,placeholder:k(),emptyLabel:o.notProvided,ariaLabel:o.timezone,selectedLabel:s.timezone||o.notProvided,searchPlaceholder:o.timezoneSearch,searchValue:l,onSearchChange:u,statusMessage:_.length?void 0:o.timezoneNoMatch,triggerClassName:`min-w-0 flex-1 rounded-xl bg-surface-base`,onChange:e=>{c(t=>({...t,timezone:e})),u(``)}}),(0,Z.jsx)(J,{className:`shrink-0 whitespace-nowrap`,onClick:()=>c(e=>({...e,timezone:m})),children:o.useDeviceTimezone})]})]})]})}),(0,Z.jsxs)(`footer`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-5 py-3 sm:px-6`,children:[(0,Z.jsx)(Oe,{asChild:!0,children:(0,Z.jsx)(J,{disabled:r,children:o.cancel})}),(0,Z.jsxs)(J,{type:`submit`,variant:`primary`,disabled:r,children:[r?(0,Z.jsx)(se,{className:`size-4 animate-spin`}):null,r?o.saving:o.saveProfile]})]})]})})]})})}function en(e){let t=(0,X.c)(94),{open:n,priority:r,title:i,outcome:a,language:o,saving:s,onOpenChange:c,onSave:l,onEnd:u}=e,d=Pt[o],[f,p]=(0,Y.useState)(i),[m,h]=(0,Y.useState)(a??``),g=r?.validTo??Date.now()+6048e5,_;t[0]===g?_=t[1]:(_=Kt(g),t[0]=g,t[1]=_);let v=_,[y,b]=(0,Y.useState)(v),x,S;t[2]!==v||t[3]!==n||t[4]!==a||t[5]!==i?(x=()=>{n&&(p(i),h(a??``),b(v))},S=[v,n,a,i],t[2]=v,t[3]=n,t[4]=a,t[5]=i,t[6]=x,t[7]=S):(x=t[6],S=t[7]),(0,Y.useEffect)(x,S);let C;t[8]!==m||t[9]!==f||t[10]!==y||t[11]!==l||t[12]!==r?.targetType?(C=e=>{e.preventDefault(),l({title:f.trim(),...r?.targetType===`goal`?{desiredOutcome:m.trim()}:{},validTo:qt(y)})},t[8]=m,t[9]=f,t[10]=y,t[11]=l,t[12]=r?.targetType,t[13]=C):C=t[13];let w=C,T;t[14]!==m||t[15]!==f||t[16]!==y||t[17]!==r?.targetType?(T=f.trim()&&y&&(r?.targetType!==`goal`||m.trim()),t[14]=m,t[15]=f,t[16]=y,t[17]=r?.targetType,t[18]=T):T=t[18];let E=!!T,D;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,Z.jsx)(Te,{className:`xopc-dialog-overlay fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]`}),t[19]=D):D=t[19];let O=r?d.editPriority:d.addPriority,k;t[20]===O?k=t[21]:(k=(0,Z.jsx)(je,{className:`font-semibold text-fg`,children:O}),t[20]=O,t[21]=k);let A;t[22]===d.priorityHint?A=t[23]:(A=(0,Z.jsx)(De,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:d.priorityHint}),t[22]=d.priorityHint,t[23]=A);let j;t[24]!==A||t[25]!==k?(j=(0,Z.jsxs)(`div`,{children:[k,A]}),t[24]=A,t[25]=k,t[26]=j):j=t[26];let M;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Z.jsx)(xe,{className:`size-4`}),t[27]=M):M=t[27];let N;t[28]===d.cancel?N=t[29]:(N=(0,Z.jsx)(Oe,{asChild:!0,children:(0,Z.jsx)(J,{variant:`ghost`,className:`size-8 shrink-0 p-0`,"aria-label":d.cancel,children:M})}),t[28]=d.cancel,t[29]=N);let P;t[30]!==j||t[31]!==N?(P=(0,Z.jsxs)(`header`,{className:`flex shrink-0 items-start justify-between gap-4 border-b border-edge px-5 py-4 sm:px-6`,children:[j,N]}),t[30]=j,t[31]=N,t[32]=P):P=t[32];let F;t[33]===d.priorityTitle?F=t[34]:(F=(0,Z.jsx)(`span`,{className:`font-medium text-fg`,children:d.priorityTitle}),t[33]=d.priorityTitle,t[34]=F);let ee;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(ee=e=>p(e.target.value),t[35]=ee):ee=t[35];let I;t[36]!==f||t[37]!==d.priorityTitlePlaceholder?(I=(0,Z.jsx)(`input`,{autoFocus:!0,value:f,onChange:ee,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]=I):I=t[38];let L;t[39]!==F||t[40]!==I?(L=(0,Z.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[F,I]}),t[39]=F,t[40]=I,t[41]=L):L=t[41];let R;t[42]!==m||t[43]!==r?.targetType||t[44]!==d.priorityOutcome||t[45]!==d.priorityOutcomePlaceholder?(R=r?.targetType===`goal`?(0,Z.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[(0,Z.jsx)(`span`,{className:`font-medium text-fg`,children:d.priorityOutcome}),(0,Z.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]=R):R=t[46];let z;t[47]===d.priorityUntil?z=t[48]:(z=(0,Z.jsx)(`span`,{className:`font-medium text-fg`,children:d.priorityUntil}),t[47]=d.priorityUntil,t[48]=z);let B;t[49]===r?.validFrom?B=t[50]:(B=r?.validFrom??Date.now(),t[49]=r?.validFrom,t[50]=B);let V;t[51]===B?V=t[52]:(V=Kt(B),t[51]=B,t[52]=V);let H;t[53]!==y||t[54]!==d.priorityUntil||t[55]!==V?(H=(0,Z.jsx)(Ue,{min:V,value:y,onChange:b,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]=V,t[56]=H):H=t[56];let U;t[57]!==z||t[58]!==H?(U=(0,Z.jsxs)(`label`,{className:`grid gap-1.5 text-sm`,children:[z,H]}),t[57]=z,t[58]=H,t[59]=U):U=t[59];let W;t[60]!==L||t[61]!==R||t[62]!==U?(W=(0,Z.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto p-5 sm:p-6`,children:[L,R,U]}),t[60]=L,t[61]=R,t[62]=U,t[63]=W):W=t[63];let te;t[64]!==u||t[65]!==r||t[66]!==s||t[67]!==d.endPriority||t[68]!==d.endingPriority?(te=r&&u?(0,Z.jsxs)(J,{variant:`ghost`,className:`text-danger hover:text-danger`,disabled:s,onClick:u,children:[s?(0,Z.jsx)(se,{className:`size-4 animate-spin`}):null,s?d.endingPriority:d.endPriority]}):(0,Z.jsx)(`span`,{}),t[64]=u,t[65]=r,t[66]=s,t[67]=d.endPriority,t[68]=d.endingPriority,t[69]=te):te=t[69];let ne;t[70]!==s||t[71]!==d.cancel?(ne=(0,Z.jsx)(Oe,{asChild:!0,children:(0,Z.jsx)(J,{disabled:s,children:d.cancel})}),t[70]=s,t[71]=d.cancel,t[72]=ne):ne=t[72];let G=!E||s,re;t[73]===s?re=t[74]:(re=s?(0,Z.jsx)(se,{className:`size-4 animate-spin`}):null,t[73]=s,t[74]=re);let K;t[75]!==d.savePriority||t[76]!==G||t[77]!==re?(K=(0,Z.jsxs)(J,{type:`submit`,variant:`primary`,disabled:G,children:[re,d.savePriority]}),t[75]=d.savePriority,t[76]=G,t[77]=re,t[78]=K):K=t[78];let ie;t[79]!==ne||t[80]!==K?(ie=(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[ne,K]}),t[79]=ne,t[80]=K,t[81]=ie):ie=t[81];let q;t[82]!==te||t[83]!==ie?(q=(0,Z.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:[te,ie]}),t[82]=te,t[83]=ie,t[84]=q):q=t[84];let ae;t[85]!==w||t[86]!==P||t[87]!==W||t[88]!==q?(ae=(0,Z.jsxs)(ke,{children:[D,(0,Z.jsx)(Ae,{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,Z.jsxs)(`form`,{className:`flex h-full min-h-0 flex-col overflow-hidden [border-radius:inherit]`,onSubmit:w,children:[P,W,q]})})]}),t[85]=w,t[86]=P,t[87]=W,t[88]=q,t[89]=ae):ae=t[89];let oe;return t[90]!==c||t[91]!==n||t[92]!==ae?(oe=(0,Z.jsx)(Me,{open:n,onOpenChange:c,children:ae}),t[90]=c,t[91]=n,t[92]=ae,t[93]=oe):oe=t[93],oe}function tn(e){let t=(0,X.c)(16),{rule:n,language:r,busy:i,onToggle:a}=e,o=Pt[r],s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Z.jsx)(M,{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,Z.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,Z.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,Z.jsx)(J,{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,Z.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,Z.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 nn(e){let t=(0,X.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,Z.jsx)(ge,{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,Z.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,Z.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,Z.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,Z.jsx)(J,{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,Z.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 rn(e){let t=(0,X.c)(26),{item:n,language:r,busy:i,expanded:a,onToggle:o,editing:s,draft:c,onDraftChange:l,onEdit:d,onCancel:f,onReview:p,onDelete:m}=e,h=Pt[r],g=n.updatedAt??n.createdAt,_;t[0]!==r||t[1]!==g?(_=Vt(g,r),t[0]=r,t[1]=g,t[2]=_):_=t[2];let v=_,y;t[3]!==n.claimMode||t[4]!==n.content?(y=n.content.length>96||n.content.includes(`
|
|
2
|
+
`)||!!n.claimMode,t[3]=n.claimMode,t[4]=n.content,t[5]=y):y=t[5];let b=y,x;return t[6]!==i||t[7]!==b||t[8]!==v||t[9]!==c||t[10]!==s||t[11]!==a||t[12]!==n.claimMode||t[13]!==n.content||t[14]!==n.id||t[15]!==n.scope||t[16]!==n.verification||t[17]!==r||t[18]!==f||t[19]!==m||t[20]!==l||t[21]!==d||t[22]!==p||t[23]!==o||t[24]!==h?(x=(0,Z.jsx)(`article`,{className:`group border-t border-edge-subtle px-5 py-4 first:border-t-0 sm:px-6`,children:s?(0,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsx)(`textarea`,{"aria-label":h.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,Z.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Z.jsx)(J,{variant:`ghost`,className:`h-8`,onClick:f,children:h.cancel}),(0,Z.jsx)(J,{variant:`primary`,className:`h-8`,disabled:!c.trim()||i,onClick:()=>p(`edit_and_approve`,c.trim()),children:h.save})]})]}):(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Z.jsx)(u,{className:`mt-1 size-4 shrink-0 text-fg-subtle`}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`p`,{className:`whitespace-pre-wrap break-words text-base leading-7 text-fg ${a?``:`line-clamp-2`}`,children:n.content}),(0,Z.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-fg-subtle`,children:[(0,Z.jsx)(`span`,{children:Jt(n.scope,r)}),n.claimMode===`reported`?(0,Z.jsx)(`span`,{children:r===`zh`?`来源报告`:`Source report`}):null,n.verification===`tentative`?(0,Z.jsx)(`span`,{children:r===`zh`?`证据待补充`:`Evidence pending`}):null,v?(0,Z.jsx)(`span`,{children:v}):null]}),a?(0,Z.jsx)(Mt,{id:n.id,language:r}):null]}),(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[b?(0,Z.jsx)(J,{variant:`ghost`,className:`size-11 p-0`,"aria-expanded":a,"aria-label":a?h.collapse:h.expand,onClick:o,children:(0,Z.jsx)(I,{className:`size-3.5 transition-transform ${a?`rotate-180`:``}`})}):null,(0,Z.jsx)(Ye,{language:r,busy:i,statement:n.content,onEdit:d,onDelete:m})]})]})}),t[6]=i,t[7]=b,t[8]=v,t[9]=c,t[10]=s,t[11]=a,t[12]=n.claimMode,t[13]=n.content,t[14]=n.id,t[15]=n.scope,t[16]=n.verification,t[17]=r,t[18]=f,t[19]=m,t[20]=l,t[21]=d,t[22]=p,t[23]=o,t[24]=h,t[25]=x):x=t[25],x}function an(){let e=c(e=>e.language),t=Pt[e],n=Fe(e=>e.setPageHeader),r=Fe(e=>e.clearPageHeader),[i,s]=a(),{data:l,error:u,isLoading:d,isValidating:k,mutate:A}=Ce(`/api/user-model`,C),I=Nt(i),[B,H]=(0,Y.useState)(),[ne,G]=(0,Y.useState)(),[re,K]=(0,Y.useState)(``),[ie,q]=(0,Y.useState)(),[ae,oe]=(0,Y.useState)(``),[le,he]=(0,Y.useState)(``),[_e,ve]=(0,Y.useState)(24),[Se,Te]=(0,Y.useState)(),[Ee,De]=(0,Y.useState)(!1),[Oe,ke]=(0,Y.useState)(!1),[Ae,je]=(0,Y.useState)(`all`),[Me,Ne]=(0,Y.useState)(`personal`),[Re,ze]=(0,Y.useState)(`all`),[Be,Ve]=(0,Y.useState)(`idle`),He=(0,Y.useRef)(void 0),Ue=e=>{if(e===I)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})},X=(0,Y.useCallback)(async()=>{if(!(Be===`refreshing`||k)){He.current&&window.clearTimeout(He.current),Ve(`refreshing`),G(void 0),K(t.refreshing);try{await A(),Ve(`success`),K(t.refreshComplete)}catch{Ve(`error`),K(``),G(t.refreshFailed)}finally{He.current=window.setTimeout(()=>Ve(`idle`),1600)}}},[k,A,Be,t]);(0,Y.useEffect)(()=>()=>{He.current&&window.clearTimeout(He.current)},[]);let We=k||Be===`refreshing`,Ge=We?t.refreshing:Be===`success`?t.refreshComplete:Be===`error`?t.refreshFailed:t.refresh;(0,Y.useEffect)(()=>(n({startExtra:null,main:(0,Z.jsx)(`h1`,{className:`text-base font-semibold text-fg`,children:t.pageTitle}),end:(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(yt,{}),(0,Z.jsx)(J,{variant:`secondary`,className:`size-9 p-0 ${Be===`success`?`text-success`:Be===`error`?`text-danger`:``}`,disabled:We,"aria-label":Ge,title:Ge,onClick:()=>void X(),children:We?(0,Z.jsx)(se,{className:`size-4 animate-spin motion-reduce:animate-none`,"aria-hidden":`true`}):Be===`success`?(0,Z.jsx)(ee,{className:`size-4`,"aria-hidden":`true`}):Be===`error`?(0,Z.jsx)(V,{className:`size-4`,"aria-hidden":`true`}):(0,Z.jsx)(fe,{className:`size-4`,"aria-hidden":`true`})})]})}),r),[r,We,Be,Ge,X,n,t]);let Q=async(n,r)=>{H(n),G(void 0),K(``);try{await r(),await A(),K(e===`zh`?`已更新`:`Updated`)}catch{G(t.actionFailed)}finally{H(void 0)}},Ke=e=>{Q(e.id,async()=>{await T(e.id,ae.trim()),q(void 0),oe(``)})},qe=async e=>{H(`profile`),G(void 0),K(``);try{await m(e),await A(),De(!1)}catch{G(t.actionFailed)}finally{H(void 0)}},Je=async(n,r)=>{H(`priority:${n.id}`),G(void 0),K(``);try{await b(n.id,r),await A(),ke(!1),K(e===`zh`?`当前关注已更新`:`Current focus updated`)}catch{G(t.actionFailed)}finally{H(void 0)}},Ye=async n=>{H(`priority:create`),G(void 0),K(``);try{await O(n),await A(),ke(!1),K(e===`zh`?`当前关注已设置`:`Current focus set`)}catch{G(t.actionFailed)}finally{H(void 0)}},Xe=async n=>{H(`priority:${n.id}`),G(void 0),K(``);try{await b(n.id,{status:`completed`}),await A(),ke(!1),K(e===`zh`?`当前关注已结束`:`Current focus ended`)}catch{G(t.actionFailed)}finally{H(void 0)}};if(d)return(0,Z.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,Z.jsx)(we,{className:`h-10 w-72 rounded-xl`}),(0,Z.jsx)(we,{className:`h-72 rounded-xl`}),(0,Z.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-2`,children:[(0,Z.jsx)(we,{className:`h-80 rounded-xl`}),(0,Z.jsx)(we,{className:`h-80 rounded-xl`})]})]});if(u||!l)return(0,Z.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,Z.jsx)(f,{className:`size-6 text-fg-subtle`}),(0,Z.jsx)(`p`,{className:`text-sm text-danger`,children:t.loadFailed}),(0,Z.jsx)(J,{onClick:()=>void A(),children:t.tryAgain})]});let Ze=l.assertions.filter(e=>e.usable&&!Ft.has(e.predicate)).sort((e,t)=>{let n=e.declaredImportance??e.inferredImportance;return(t.declaredImportance??t.inferredImportance)-n||t.recordedAt-e.recordedAt}),Qe=l.assertions.filter(e=>[`candidate`,`needs_review`,`conflicted`].includes(e.status)).sort((e,t)=>t.recordedAt-e.recordedAt),$e=Ut(l),et=$e.callName||(e===`zh`?`你`:`You`),tt=Ze.filter(e=>e.authority===`user_explicit`).length,rt=Ze.length-tt,it=Ze.filter(e=>Ae===`explicit`?e.authority===`user_explicit`:Ae!==`learned`||e.authority!==`user_explicit`),at=l.priorities.filter(e=>e.status===`active`&&e.validTo>Date.now()),$=at.find(e=>e.rank===`primary`)??at[0],ot=Xt($,l.goals,e),st=$?.targetType===`goal`?l.goals.find(e=>e.id===$.targetId):void 0,ct=l.goals.filter(e=>e.status===`active`||e.status===`paused`),lt=ct.filter(e=>$?.targetType!==`goal`||e.id!==$.targetId),ut=l.rules.filter(e=>e.status!==`archived`),dt=l.ruleSuggestions??[],ft=l.knowledge.filter(e=>e.status!==`archived`&&e.status!==`rejected`),pt=le.trim().toLocaleLowerCase(),mt=ft.filter(e=>Re===`all`||e.kind===Re),ht=mt.filter(t=>!pt||t.content.toLocaleLowerCase().includes(pt)||Yt(t.kind,e).toLocaleLowerCase().includes(pt)),gt=[{key:`identity`,title:t.identity,icon:be,items:it.filter(e=>e.kind===`identity`)},{key:`preferences`,title:t.preferences,icon:p,items:it.filter(e=>[`preference`,`value`,`routine`,`capability`].includes(e.kind))},{key:`relationships`,title:t.relationships,icon:M,items:it.filter(e=>e.kind===`relationship`)},{key:`current`,title:t.currentState,icon:U,items:it.filter(e=>e.kind===`current_state`)},{key:`insights`,title:t.insights,icon:ge,items:it.filter(e=>e.kind===`derived_insight`)}].filter(e=>e.items.length>0),_t=[{key:`about`,icon:be,label:e===`zh`?`关于我`:`About me`,hint:e===`zh`?`身份、背景与能力`:`Identity, background, and capabilities`,count:Ze.filter(e=>[`identity`,`capability`].includes(e.kind)).length},{key:`preferences`,icon:p,label:e===`zh`?`偏好与习惯`:`Preferences & habits`,hint:e===`zh`?`沟通方式与日常习惯`:`Communication and routines`,count:Ze.filter(e=>[`preference`,`value`,`routine`].includes(e.kind)).length},{key:`people`,icon:M,label:e===`zh`?`重要的人`:`Important people`,hint:e===`zh`?`与你有关的人和关系`:`People and relationships`,count:Ze.filter(e=>e.kind===`relationship`).length},{key:`goals`,icon:ge,label:e===`zh`?`目标与计划`:`Goals & plans`,hint:e===`zh`?`正在推进的长期目标`:`Long-term outcomes in progress`,count:ct.length}],vt=It.map(e=>({kind:e,count:ft.filter(t=>t.kind===e).length})).filter(e=>e.count>0),xt=vt.slice(0,4),St=xt.length===1?`grid-cols-1`:`sm:grid-cols-2`,Ct=ht.slice(0,_e),wt=It.map(e=>({kind:e,items:Ct.filter(t=>t.kind===e),totalCount:ht.filter(t=>t.kind===e).length})).filter(e=>e.items.length>0),Tt=[{id:`all`,label:t.allUnderstanding,count:Ze.length},{id:`explicit`,label:t.explicit,count:tt},{id:`learned`,label:t.learned,count:rt}],Et=e=>{je(e),Ne(`personal`),Ue(`understanding`)},Dt=e=>{ze(e),he(``),ve(24),Ne(`work`),Ue(`understanding`)},Ot=t=>(0,Z.jsx)(nt,{item:t,language:e,busy:!!B,editing:ie===t.id,draft:ie===t.id?ae:``,onDraftChange:oe,onEdit:()=>{q(t.id),oe(t.statement)},onCancel:()=>{q(void 0),oe(``)},onDelete:()=>void Q(t.id,()=>h(t.id)),onCorrect:()=>Ke(t),onScopeChange:e=>void Q(t.id,()=>y(t.id,e))},t.id);return(0,Z.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,Z.jsx)(bt,{language:e}),(0,Z.jsx)(Pe,{items:[{id:`overview`,label:t.overview,icon:ge},{id:`understanding`,label:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:`sm:hidden`,children:e===`zh`?`记忆`:`Memory`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:t.understanding})]}),icon:be,count:Ze.length},{id:`privacy`,label:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:`sm:hidden`,children:e===`zh`?`隐私`:`Privacy`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:t.privacy})]}),icon:me}],activeTab:I,onChange:Ue,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,Z.jsx)(`p`,{role:`status`,className:`sr-only`,children:re}),ne?(0,Z.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,Z.jsx)(`span`,{children:ne}),(0,Z.jsx)(`button`,{type:`button`,onClick:()=>G(void 0),"aria-label":t.cancel,children:(0,Z.jsx)(xe,{className:`size-4`})})]}):null,I===`overview`?(0,Z.jsxs)(`div`,{id:`understanding-panel-overview`,role:`tabpanel`,"aria-labelledby":`understanding-tab-overview`,className:`space-y-8 sm:space-y-10`,children:[(0,Z.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,Z.jsxs)(`div`,{className:`min-w-0 px-1 sm:py-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 sm:flex-wrap sm:gap-5`,children:[(0,Z.jsx)(Ie,{className:`size-16 sm:size-20`,mood:ne?`care`:We||B?`work`:`listen`}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`h2`,{className:`truncate text-xl font-semibold tracking-tight text-fg sm:text-3xl`,children:et}),(0,Z.jsx)(`p`,{className:`mt-1 break-words text-sm text-fg-muted`,children:$e.role||t.notProvided})]}),(0,Z.jsxs)(J,{variant:`ghost`,className:`size-11 shrink-0 px-0 sm:h-9 sm:w-auto sm:px-3`,onClick:()=>De(!0),children:[(0,Z.jsx)(j,{className:`size-4`,"aria-hidden":`true`}),(0,Z.jsx)(`span`,{className:`sr-only sm:not-sr-only`,children:t.editProfile})]})]}),(0,Z.jsx)(`dl`,{className:`mt-6 hidden gap-x-8 gap-y-5 sm:grid sm:grid-cols-3`,children:[{icon:g,label:t.locale,value:$e.locale?Wt($e.locale,e):t.notProvided},{icon:N,label:t.timezone,value:$e.timezone||t.notProvided},{icon:be,label:t.pronouns,value:$e.pronouns||t.notProvided}].map(({icon:e,label:t,value:n})=>(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsxs)(`dt`,{className:`flex items-center gap-1.5 text-xs text-fg-subtle`,children:[(0,Z.jsx)(e,{className:`size-3.5`,"aria-hidden":`true`}),t]}),(0,Z.jsx)(`dd`,{className:`mt-1.5 truncate text-sm font-medium text-fg`,children:n})]},t))})]}),(0,Z.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,Z.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`p`,{className:`text-xs font-semibold tracking-wide text-fg-subtle`,children:t.importantNow}),$?(0,Z.jsxs)(`p`,{className:`mt-1.5 flex items-center gap-1.5 text-xs text-fg-muted`,children:[(0,Z.jsx)(P,{className:`size-3.5`,"aria-hidden":`true`}),$.targetType===`goal`?t.prioritySourceGoal:t.prioritySourceWork]}):null]}),$&&ot?(0,Z.jsxs)(J,{variant:`ghost`,className:`h-8 shrink-0 px-2.5`,onClick:()=>ke(!0),children:[(0,Z.jsx)(ue,{className:`size-3.5`,"aria-hidden":`true`}),t.editPriority]}):null]}),ot?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`p`,{className:`mt-3 text-lg font-semibold leading-7 tracking-tight text-fg`,children:ot}),st?.desiredOutcome?(0,Z.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:st.desiredOutcome}):null,$?(0,Z.jsxs)(`p`,{className:`mt-auto flex items-center gap-1.5 pt-4 text-xs text-fg-subtle`,children:[(0,Z.jsx)(F,{className:`size-3.5`,"aria-hidden":`true`}),Gt($.validTo,e)]}):null]}):(0,Z.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,Z.jsx)(P,{className:`size-5 text-fg-subtle`}),(0,Z.jsxs)(J,{variant:`primary`,onClick:()=>ke(!0),children:[(0,Z.jsx)(de,{className:`size-4`,"aria-hidden":`true`}),t.addPriority]})]}),lt.length?(0,Z.jsxs)(`div`,{className:`mt-5 hidden border-t border-edge-subtle pt-4 sm:block`,children:[(0,Z.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:t.otherGoals}),(0,Z.jsx)(`div`,{className:`mt-2 space-y-2`,children:lt.slice(0,3).map(e=>(0,Z.jsx)(`p`,{className:`text-sm text-fg`,children:e.title},e.id))})]}):null]})]}),Qe.length?(0,Z.jsxs)(`section`,{className:`overflow-hidden rounded-2xl bg-accent-soft/70 shadow-surface`,"aria-label":e===`zh`?`需要你确认`:`Needs your review`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-5 py-4 sm:px-6`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Z.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-full bg-surface-panel text-accent-fg`,children:(0,Z.jsx)(ge,{className:`size-4`,"aria-hidden":`true`})}),(0,Z.jsx)(`div`,{className:`min-w-0`,children:(0,Z.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:e===`zh`?`需要你确认`:`Needs your review`})})]}),(0,Z.jsx)(`span`,{className:`rounded-full bg-surface-panel px-2.5 py-1 text-xs font-medium tabular-nums text-accent-fg`,children:Qe.length})]}),(0,Z.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,Z.jsx)(`p`,{className:`min-w-0 flex-1 text-sm leading-6 text-fg`,children:Qe[0].statement}),(0,Z.jsxs)(`div`,{className:`mt-3 flex shrink-0 gap-2 sm:mt-0`,children:[(0,Z.jsx)(J,{variant:`ghost`,className:`min-h-11 flex-1 sm:flex-none`,disabled:B===Qe[0].id,onClick:()=>void Q(Qe[0].id,()=>D(Qe[0].id,`rejected`)),children:e===`zh`?`不是`:`No`}),(0,Z.jsx)(J,{variant:`primary`,className:`min-h-11 flex-1 sm:flex-none`,disabled:B===Qe[0].id,onClick:()=>void Q(Qe[0].id,()=>D(Qe[0].id,`active`)),children:e===`zh`?`是的`:`That’s right`})]})]})]}):null,(0,Z.jsx)(Zt,{title:e===`zh`?`xopc 对我的了解`:`What xopc knows about me`,action:(0,Z.jsx)(J,{variant:`ghost`,className:`h-8 shrink-0`,onClick:()=>Ue(`understanding`),children:t.seeAll}),children:(0,Z.jsx)(`div`,{className:`grid sm:grid-cols-2`,children:_t.map(({key:e,icon:t,label:n,hint:r,count:i})=>(0,Z.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:()=>Et(`all`),"aria-label":`${n}: ${i}`,children:[(0,Z.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Z.jsx)(t,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:n}),(0,Z.jsx)(`span`,{className:`mt-0.5 block truncate text-xs text-fg-subtle`,children:r})]}),(0,Z.jsx)(`span`,{className:`text-sm tabular-nums text-fg-muted`,children:i}),(0,Z.jsx)(L,{className:`size-4 shrink-0 text-fg-subtle transition-transform group-hover:translate-x-0.5`,"aria-hidden":`true`})]},e))})}),(0,Z.jsxs)(`div`,{className:`grid items-start gap-8 lg:grid-cols-2`,children:[(0,Z.jsx)(Zt,{title:t.howWeWork,className:`min-w-0`,children:ut.length||dt.length?(0,Z.jsxs)(Z.Fragment,{children:[ut.slice(0,3).map(t=>(0,Z.jsx)(tn,{rule:t,language:e,busy:B===t.id,onToggle:()=>void Q(t.id,()=>w(t.id,t.status===`active`?`disabled`:`active`))},t.id)),dt.slice(0,2).map(t=>(0,Z.jsx)(nn,{suggestion:t,language:e,busy:B===t.id,onConfirm:()=>void Q(t.id,()=>S(t))},t.id))]}):(0,Z.jsx)(Qt,{icon:(0,Z.jsx)(M,{className:`size-5`}),children:t.noRules})}),(0,Z.jsx)(Zt,{title:t.workMemory,className:`min-w-0`,action:(0,Z.jsx)(J,{variant:`ghost`,className:`h-8 shrink-0`,onClick:()=>Dt(`all`),children:t.seeAll}),children:vt.length?(0,Z.jsx)(`div`,{"data-testid":`memory-summary-grid`,className:`grid gap-3 bg-surface-base ${St}`,children:xt.map(({kind:t,count:n})=>(0,Z.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:()=>Dt(t),"aria-label":`${Yt(t,e)}: ${n}`,children:[(0,Z.jsxs)(`span`,{children:[(0,Z.jsx)(`span`,{className:`block text-2xl font-semibold tabular-nums text-fg`,children:n}),(0,Z.jsx)(`span`,{className:`mt-1 block text-sm text-fg-muted`,children:Yt(t,e)})]}),(0,Z.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,Z.jsx)(Qt,{icon:(0,Z.jsx)(W,{className:`size-5`}),children:t.noKnowledge})})]})]}):null,I===`understanding`?(0,Z.jsxs)(`div`,{id:`understanding-panel-understanding`,role:`tabpanel`,"aria-labelledby":`understanding-tab-understanding`,className:`space-y-10`,children:[(0,Z.jsx)(Le,{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:be,count:Ze.length},{id:`work`,label:e===`zh`?`工作记忆`:`Work memory`,icon:P,count:ft.length}].map(({id:e,label:t,icon:n,count:r})=>(0,Z.jsxs)(`button`,{type:`button`,"aria-pressed":Me===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 ${Me===e?`bg-surface-active text-fg`:`text-fg-muted hover:bg-surface-hover hover:text-fg`}`,onClick:()=>Ne(e),children:[(0,Z.jsx)(n,{className:`size-4`,"aria-hidden":`true`}),t,(0,Z.jsx)(`span`,{className:`text-xs tabular-nums text-fg-subtle`,children:r})]},e))}),Me===`personal`?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`px-1 pt-1`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Z.jsx)(f,{className:`mt-0.5 size-5 shrink-0 text-accent-fg`,"aria-hidden":`true`}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h2`,{className:`font-semibold text-fg`,children:t.aboutYouTitle}),(0,Z.jsx)(`p`,{className:`mt-1 max-w-3xl text-sm leading-6 text-fg-muted`,children:t.aboutYouHint})]})]}),(0,Z.jsx)(Le,{className:`mt-4 flex flex-wrap gap-2`,role:`group`,"aria-label":t.understandingFilterHint,indicatorClassName:`rounded-full bg-surface-active`,children:Tt.map(e=>(0,Z.jsxs)(`button`,{type:`button`,"aria-pressed":Ae===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 ${Ae===e.id?`bg-surface-active text-fg`:`text-fg-muted hover:bg-surface-hover hover:text-fg`}`,onClick:()=>je(e.id),children:[e.label,(0,Z.jsx)(`span`,{className:`tabular-nums text-fg-subtle`,children:e.count})]},e.id))})]}),gt.length?gt.map(({key:e,title:t,icon:n,items:r})=>(0,Z.jsx)(Zt,{title:t,action:(0,Z.jsx)(n,{className:`size-4 text-fg-subtle`,"aria-hidden":`true`}),children:(0,Z.jsx)(`div`,{children:r.map(Ot)})},e)):(0,Z.jsx)(`div`,{className:`rounded-2xl bg-surface-panel`,children:(0,Z.jsx)(Qt,{icon:(0,Z.jsx)(f,{className:`size-5`}),children:t.emptyGroup})})]}):(0,Z.jsxs)(`div`,{className:`space-y-8`,children:[(0,Z.jsxs)(`div`,{className:`px-1 pt-1`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,Z.jsxs)(`div`,{className:`max-w-2xl`,children:[(0,Z.jsx)(`h2`,{className:`font-semibold text-fg`,children:Re===`all`?t.allMemory:Yt(Re,e)}),(0,Z.jsxs)(`p`,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:[mt.length,` `,t.items,` · `,e===`zh`?`当前筛选的工作资料记录数,包含未启用或待核验项;不同于顶部已启用且有依据的记忆数。`:`Work records matching this filter, including inactive or unverified items; separate from active, supported memories above.`,` · `,t.memoryLibraryHint]})]}),(0,Z.jsxs)(`label`,{className:`relative block sm:w-80`,children:[(0,Z.jsx)(pe,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`}),(0,Z.jsx)(`span`,{className:`sr-only`,children:t.searchPlaceholder}),(0,Z.jsx)(`input`,{type:`search`,value:le,onChange:e=>{he(e.target.value),ve(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,Z.jsxs)(Le,{className:`mt-4 flex flex-wrap gap-2`,role:`group`,"aria-label":t.memoryFilterHint,indicatorClassName:`rounded-full bg-surface-active`,children:[(0,Z.jsxs)(`button`,{type:`button`,"aria-pressed":Re===`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 ${Re===`all`?`bg-surface-active text-fg`:`text-fg-muted hover:bg-surface-hover hover:text-fg`}`,onClick:()=>ze(`all`),children:[t.allMemory,(0,Z.jsx)(`span`,{className:`tabular-nums text-fg-subtle`,children:ft.length})]}),vt.map(({kind:t,count:n})=>(0,Z.jsxs)(`button`,{type:`button`,"aria-pressed":Re===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 ${Re===t?`bg-surface-active text-fg`:`text-fg-muted hover:bg-surface-hover hover:text-fg`}`,onClick:()=>ze(t),children:[Yt(t,e),(0,Z.jsx)(`span`,{className:`tabular-nums text-fg-subtle`,children:n})]},t))]})]}),ht.length?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`space-y-8`,children:wt.map(({kind:t,items:n,totalCount:r})=>(0,Z.jsxs)(`section`,{className:`overflow-hidden rounded-2xl bg-surface-panel`,children:[(0,Z.jsxs)(`header`,{className:`flex items-center justify-between px-5 pb-1 pt-4 sm:px-6`,children:[(0,Z.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:Yt(t,e)}),(0,Z.jsx)(`span`,{className:`text-xs tabular-nums text-fg-subtle`,children:r})]}),(0,Z.jsx)(`div`,{children:n.map(t=>(0,Z.jsx)(rn,{item:t,language:e,busy:!!B,expanded:Se===t.id,onToggle:()=>Te(e=>e===t.id?void 0:t.id),editing:ie===`knowledge:${t.id}`,draft:ae,onDraftChange:oe,onEdit:()=>{q(`knowledge:${t.id}`),oe(t.content)},onCancel:()=>{q(void 0),oe(``)},onDelete:()=>void Q(t.id,()=>E(t.id)),onReview:(e,n)=>void Q(t.id,async()=>{await v(t,e,n),q(void 0),oe(``)})},t.id))})]},t))}),ht.length>_e?(0,Z.jsx)(`div`,{className:`flex justify-center pt-2`,children:(0,Z.jsx)(J,{onClick:()=>ve(e=>e+24),children:t.showMore})}):null]}):(0,Z.jsx)(`div`,{className:`rounded-2xl bg-surface-panel`,children:(0,Z.jsx)(Qt,{icon:(0,Z.jsx)(pe,{className:`size-5`}),children:le.trim()?t.noKnowledgeMatch:t.noKnowledge})})]})]}):null,I===`privacy`?(0,Z.jsxs)(`div`,{id:`understanding-panel-privacy`,role:`tabpanel`,"aria-labelledby":`understanding-tab-privacy`,className:`space-y-8`,children:[(0,Z.jsx)(`div`,{className:`px-1 pt-1`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Z.jsx)(me,{className:`mt-0.5 size-5 shrink-0 text-accent-fg`,"aria-hidden":`true`}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h2`,{className:`font-semibold text-fg`,children:e===`zh`?`你的信息,由你掌控`:`Your information, under your control`}),(0,Z.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,Z.jsx)(Zt,{title:e===`zh`?`记忆与使用`:`Memory & use`,children:(0,Z.jsxs)(`div`,{className:`divide-y divide-edge-subtle`,children:[[{key:`memory`,icon:f,title:e===`zh`?`长期记忆`:`Long-term memory`,detail:e===`zh`?`记住长期有用的信息,减少重复说明。`:`Remember useful information so you do not have to repeat yourself.`,enabled:l.settings.memoryEnabled},{key:`references`,icon:ge,title:e===`zh`?`回答中的记忆引用`:`Memory references in answers`,detail:e===`zh`?`当个人信息影响回答时,显示本次参考内容。`:`Show what personal context was referenced when it shapes an answer.`,enabled:l.settings.showMemoryReferences}].map(({key:e,icon:t,title:n,detail:r,enabled:i})=>(0,Z.jsxs)(`button`,{type:`button`,role:`switch`,"aria-checked":i,disabled:!!B,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 Q(`setting:${e}`,()=>x(e===`memory`?{memoryEnabled:!i}:{showMemoryReferences:!i})),children:[(0,Z.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Z.jsx)(t,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:n}),(0,Z.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:r})]}),(0,Z.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,Z.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,Z.jsxs)(`div`,{className:`flex min-h-20 items-center gap-4 px-5 py-4 sm:px-6`,children:[(0,Z.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Z.jsx)(ce,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:e===`zh`?`敏感信息`:`Sensitive information`}),(0,Z.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,Z.jsxs)(R,{"aria-label":e===`zh`?`敏感信息策略`:`Sensitive information policy`,value:l.settings.sensitiveWritePolicy,disabled:!!B,onChange:e=>void Q(`setting:sensitive`,()=>x({sensitiveWritePolicy:e.target.value})),children:[(0,Z.jsx)(z,{value:`confirm`,children:e===`zh`?`先询问`:`Ask first`}),(0,Z.jsx)(z,{value:`deny`,children:e===`zh`?`不保存`:`Never save`}),(0,Z.jsx)(z,{value:`allow`,children:e===`zh`?`允许`:`Allow`})]})]})]})}),(0,Z.jsx)(Zt,{title:e===`zh`?`数据管理`:`Data management`,children:(0,Z.jsxs)(`div`,{className:`divide-y divide-edge-subtle`,children:[(0,Z.jsxs)(o,{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,Z.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Z.jsx)(ye,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:e===`zh`?`从其他 AI 导入`:`Import from another AI`}),(0,Z.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,Z.jsx)(L,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":`true`})]}),(0,Z.jsxs)(`button`,{type:`button`,disabled:!!B,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 Q(`export`,_),children:[(0,Z.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-base text-fg-muted`,children:(0,Z.jsx)(te,{className:`size-4.5`,"aria-hidden":`true`})}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:e===`zh`?`下载我的记忆`:`Download my memory`}),(0,Z.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:e===`zh`?`导出为可阅读、可迁移的数据包。`:`Export a readable, portable archive.`})]}),(0,Z.jsx)(L,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":`true`})]})]})}),(0,Z.jsxs)(`section`,{className:`rounded-2xl bg-surface-panel px-5 py-5 sm:px-6`,children:[(0,Z.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:e===`zh`?`纠正与忘记`:`Correct and forget`}),(0,Z.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,Z.jsx)(J,{variant:`ghost`,className:`mt-3`,onClick:()=>{Ne(`personal`),Ue(`understanding`)},children:e===`zh`?`管理记忆`:`Manage memory`})]})]}):null,(0,Z.jsx)($t,{open:Ee,profile:$e,language:e,saving:B===`profile`,onOpenChange:De,onSave:e=>void qe(e)}),(0,Z.jsx)(en,{open:Oe,priority:$,title:ot??``,outcome:st?.desiredOutcome,language:e,saving:B===($?`priority:${$.id}`:`priority:create`),onOpenChange:ke,onSave:e=>$?void Je($,e):void Ye(e),onEnd:$?()=>void Xe($):void 0})]})}export{an 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-BQvFXqzz.js";import{t as i}from"./cn-0WouolD0.js";import{d as a}from"./voice-config-api-
|
|
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-BQvFXqzz.js";import{t as i}from"./cn-0WouolD0.js";import{d as a}from"./voice-config-api-D9iNJSvm.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{i as e,o as t}from"./locale-store-
|
|
1
|
+
import{i as e,o as t}from"./locale-store-5Hf8J8-_.js";import{n}from"./gateway-config-swr-Bt8w0Iio.js";async function r(){return(await t(e(`/api/voice/realtime/status`))).payload}async function i(n,r){let i=await t(e(`/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 t(e(`/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 t(e(`/api/config`))).payload?.config??{})}function _(e){return!c(e)||!c(e.voiceSettingsRevisions)?{}:Object.fromEntries(Object.entries(e.voiceSettingsRevisions).filter(([e,t])=>[`transcription`,`speech`,`conversation`].includes(e)&&typeof t==`string`&&/^[a-f0-9]{64}$/.test(t)))}async function v(r,i,a){let o=await t(e(`/api/config`),{method:`PATCH`,body:JSON.stringify({...a?{expectedVoiceRevision:{capability:i,revision:a}}:{},...i===`transcription`?{stt:p(r.stt)}:{},...i===`speech`?{tts:m(r.tts)}:{},...i===`conversation`?{voice:{realtime:r.voice.realtime}}:i===`transcription`?{voice:{language:r.voice.language,languageMode:r.voice.languageMode,input:r.voice.input}}:{}})});return i===`transcription`&&r.voice.languageMode===`auto`&&await t(e(`/api/voice/language`),{method:`POST`,body:JSON.stringify({language:r.voice.language})}),typeof window<`u`&&window.dispatchEvent(new Event(`voice-config-changed`)),n(),_(o?.payload?.config)}async function y(){let n=await t(e(`/api/voice/models`));if(!n.payload?.models)throw Error(`Missing voice models payload`);return n.payload.models}async function b(){let n=await t(e(`/api/voice/providers`));if(!n.payload?.providers)throw Error(`Missing voice providers payload`);return n.payload}async function x(){let n=await t(e(`/api/voice/stt-providers`));if(!n.payload?.providers)throw Error(`Missing STT providers payload`);return n.payload}async function S(n,r){let i=await t(e(`/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 C(n){let r=await t(e(`/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,v as c,C as d,S as f,b as i,i as l,a as n,x as o,y as r,h as s,r as t,_ as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as e}from"./locale-store-
|
|
1
|
+
import{p as e}from"./locale-store-5Hf8J8-_.js";import{t}from"./middleware-Pd0e8Igk.js";function n(){return typeof navigator>`u`?!1:navigator.platform?.includes(`Mac`)??navigator.userAgent.includes(`Mac`)}function r(e,t=n()){return a(e).split(`+`).map(e=>e===`control`?`Ctrl`:e===`meta`?t?`⌘`:`Win`:e===`alt`?t?`Option`:`Alt`:e===`shift`?`Shift`:e===`space`?`Space`:e.length===1?e.toUpperCase():e)}function i(e=n()){return e?`meta+.`:`control+.`}function a(e){return e.split(`+`).map(l).filter(Boolean).join(`+`)}function o(e){if(e.key===`Escape`||[`Meta`,`Control`,`Alt`,`Shift`].includes(e.key))return null;let t=e.key===` `?`space`:l(e.key);return t?[...[e.metaKey?`meta`:``,e.ctrlKey?`control`:``,e.altKey?`alt`:``,e.shiftKey?`shift`:``].filter(Boolean),t].join(`+`):null}var s=e(t(e=>({shortcut:i(),setShortcut:t=>e({shortcut:a(t)||i()})}),{name:`xopc-quick-capture-shortcut`,version:2})),c={cmd:`meta`,command:`meta`,ctrl:`control`,ctl:`control`,opt:`alt`,option:`alt`};function l(e){let t=e.toLowerCase().trim();return c[t]??t}function u(e,t){let n=a(t).split(`+`),r=new Set(n.filter(e=>[`meta`,`control`,`alt`,`shift`].includes(e))),i=n.find(e=>!r.has(e));return!i||r.has(`meta`)!==e.metaKey||r.has(`control`)!==e.ctrlKey||r.has(`alt`)!==e.altKey||r.has(`shift`)!==e.shiftKey?!1:e.key.toLowerCase()===i||e.code.toLowerCase()===i}function d(e=n()){return e?`meta+shift+m`:`control+shift+m`}var f=e(t(e=>({shortcut:d(),setShortcut:t=>e({shortcut:a(t)||d()})}),{name:`xopc-voice-input-shortcut`,version:1})),p=`xopc-voice-input-toggle`,m=`xopc-voice-input-cancel`,h=`app-shortcut-recording`,g=!1;function _(e,t){let n=new CustomEvent(e,{cancelable:!0,detail:{target:t}});return window.dispatchEvent(n),n.defaultPrevented}function v(){g=!0}function y(){g=!1}function b(){return g?(g=!1,!0):!1}export{_ as a,d as c,n as d,u as f,s as h,y as i,f as l,o as m,m as n,v as o,r as p,p as r,b as s,h as t,i as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,o as t,p as n}from"./locale-store-5Hf8J8-_.js";import{_ as r,a as i,b as a,c as o,d as s,f as c,g as l,h as u,i as d,m as f,n as p,o as m,p as h,t as g,u as _,y as ee}from"./schemas-CCWMleym.js";import{t as te}from"./session-manager-DNMosCtW.js";import{t as ne}from"./middleware-Pd0e8Igk.js";function v(e){return a(g,e)}var y=n()(ne(e=>({captions:!0,microphoneId:``,setCaptions:t=>e({captions:t}),setMicrophoneId:t=>e({microphoneId:t})}),{name:`xopc-voice-preferences`}));function re(){let e=y.getState().microphoneId;return{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,...e?{deviceId:{exact:e}}:{}}}var b=32,x=1481592883,S=3,ie=1,ae=2,C=1,w=64*1024,T=new TextEncoder,E=new TextDecoder(`utf-8`,{fatal:!0});function D(e){let t=T.encode(e.id);if(!t.length||t.length>160||!Number.isInteger(e.connectionEpoch)||e.connectionEpoch<1||e.connectionEpoch>4294967295||!Number.isInteger(e.seq)||e.seq<1||e.seq>4294967295||!Number.isFinite(e.timestampMs)||e.timestampMs<0||e.durationMs!==20||e.flags<0||e.flags>3||!e.audio.length||e.audio.length%2||b+t.length+e.audio.length>w)throw Error(`Invalid voice media frame`);let n=new Uint8Array(b+t.length+e.audio.length),r=new DataView(n.buffer);return r.setUint32(0,x),r.setUint8(4,S),r.setUint8(5,e.kind),r.setUint8(6,C),r.setUint8(7,e.flags),r.setUint32(8,e.connectionEpoch),r.setUint32(12,e.seq),r.setFloat64(16,e.timestampMs),r.setUint16(24,e.durationMs),r.setUint16(26,t.length),r.setUint32(28,e.audio.length),n.set(t,b),n.set(e.audio,b+t.length),n}function O(e,t){if(e.length<=b||e.length>w)throw Error(`Invalid voice media frame`);let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint8(5),i=n.getUint32(8),a=n.getUint32(12),o=n.getFloat64(16),s=n.getUint16(24),c=n.getUint16(26),l=n.getUint32(28),u=b+c,d=n.getUint8(7);if(n.getUint32(0)!==x||n.getUint8(4)!==S||r!==t||n.getUint8(6)!==C||d>3||!i||!a||!Number.isFinite(o)||o<0||s!==20||!c||c>160||!l||l%2||u+l!==e.length)throw Error(`Invalid voice media header`);return{kind:r,connectionEpoch:i,id:E.decode(e.subarray(b,u)),seq:a,timestampMs:o,durationMs:s,flags:d,audio:e.slice(u)}}function oe(e){let t=O(e,ae);return{connectionEpoch:t.connectionEpoch,responseId:t.id,seq:t.seq,mediaTimestampMs:t.timestampMs,durationMs:t.durationMs,audio:t.audio}}function se(e){return D({kind:ie,connectionEpoch:e.connectionEpoch,id:e.utteranceId,seq:e.audioSeq,timestampMs:e.capturedAtMonotonicMs,durationMs:e.durationMs,flags:!!e.start|(e.end?2:0),audio:e.audio})}var ce=class{session;eventSeq=0;audioSeq=0;ready=!1;closed=!1;cancelled=new Set;constructor(e){this.session=e}event(e){if(this.closed)throw Error(`Voice session closed`);if(e.sessionId!==this.session.sessionId||e.seq!==this.eventSeq+1)throw Error(`Invalid voice event sequence`);if(this.eventSeq=e.seq,e.type===`session.ready`){if(this.ready||e.payload.connectionEpoch!==this.session.connectionEpoch||e.payload.purpose!==this.session.purpose||e.payload.inputMode!==this.session.inputMode||e.payload.inputFormat.sampleRate!==this.session.inputFormat.sampleRate||e.payload.mode!==this.session.mode||e.payload.route.engine!==this.session.route.engine)throw Error(`Voice session mismatch`);this.ready=!0}e.type===`response.cancelled`&&this.cancel(e.payload.responseId),e.type===`session.closed`&&(this.ready=!1,this.closed=!0)}audio(e){if(!this.ready||e.connectionEpoch!==this.session.connectionEpoch||e.seq!==this.audioSeq+1)throw Error(`Invalid voice audio sequence`);return this.audioSeq=e.seq,!this.cancelled.has(e.responseId)}cancel(e){if(!this.cancelled.has(e)){if(this.cancelled.size>=1e4)throw Error(`Voice response limit exceeded`);this.cancelled.add(e)}}},le=`/api/voice/realtime/v3/ws`,ue=64*1024,de=15e3,k=ee(),A=_().int().nonnegative(),j=p([`dictation`,`conversation`]),M=p([`natural`,`assistant`]),N=o(`server_vad`),P=p([`zh`,`en`]),F=[`speech_end_to_audio_received`,`speech_end_to_audio_scheduled`,`speech_end_to_audio_buffered`,`local_stop`],I=h({encoding:o(`pcm_s16le`),sampleRate:l([o(16e3),o(24e3)]),channels:o(1)}),L=h({provider:f().min(1).max(100),model:f().min(1).max(200),managed:i()}),R=m(`engine`,[h({engine:o(`dictation`),stt:L}),h({engine:o(`agent`),stt:L,tts:L}),h({engine:o(`omni`),omni:L})]),z=h({available:i(),reasonCode:p([`VOICE_DISABLED`,`PROVIDER_UNAVAILABLE`]).optional()});s({enabled:i(),openingGreeting:i().optional(),defaultMode:M,omni:L.nullable(),stt:L.nullable(),tts:L.extend({voice:f().optional()}).nullable(),capabilities:h({dictation:z,assistant:z,natural:z,languages:d(P),bargeIn:i(),mediaTransports:u([o(`websocket-pcm`)])})}),h({purpose:j,mode:M.optional(),conversationId:f().min(1).max(512).optional(),language:P.optional(),openingGreeting:h({logicalCallId:k,initiation:p([`user`,`recovery`]),supportsOutputReady:o(!0)}).optional(),supportedProtocolVersions:u([o(3)]),mediaPreferences:u([o(`websocket-pcm`)])}).superRefine((e,t)=>{e.purpose===`conversation`&&!e.conversationId&&t.addIssue({code:`custom`,path:[`conversationId`],message:`conversationId is required for conversation`}),e.purpose!==`conversation`&&e.mode!==void 0&&t.addIssue({code:`custom`,path:[`mode`],message:`mode is only supported for conversation`})});var B=h({openingGreeting:h({accepted:i(),greetingResponseId:f().max(160).optional()}).optional(),sessionId:k,ticket:f().min(32).max(512),ticketExpiresAt:v(),websocketPath:o(le),protocolVersion:o(3),connectionEpoch:_().int().positive(),purpose:j,mode:M.optional(),inputMode:N,bargeIn:i(),inputFormat:I,media:h({transport:o(`websocket-pcm`),codec:o(`pcm_s16le`),frameDurationMs:o(20)}),limits:h({maxBinaryFrameBytes:o(ue),maxSessionMs:_().int().positive(),idleTimeoutMs:_().int().positive()}),route:R}),V=(e,t)=>h({protocolVersion:o(3),messageId:k,type:o(e),sentAt:A,payload:t});m(`type`,[V(`session.start`,h({sessionId:k,ticket:f().min(32).max(512)})),V(`session.metric`,h({responseId:f().min(1).max(160),metric:p(F),durationMs:_().finite().min(0).max(6e5)})),V(`session.output_ready`,h({connectionEpoch:_().int().positive()})),V(`input.mute`,h({muted:i()})),V(`input.commit`,h({})),V(`response.stop_playback`,h({responseId:f().min(1).max(160)})),V(`task.cancel`,h({taskId:f().min(1).max(160)})),V(`response.audio.played`,h({responseId:f().min(1).max(160),playedDurationMs:_().int().nonnegative().max(36e5)})),V(`session.stop`,h({reason:p([`user_finished`,`surface_closed`,`replaced`])})),V(`session.ping`,h({}))]);var H=h({utteranceId:f().min(1).max(160),revision:_().int().positive(),text:f().max(32*1024),language:P.optional()}),U=(e,t)=>h({protocolVersion:o(3),eventId:k,seq:_().int().positive(),type:o(e),sentAt:A,sessionId:k,payload:t}),fe=m(`type`,[U(`session.ready`,h({purpose:j,mode:M.optional(),connectionEpoch:_().int().positive(),inputMode:N,inputFormat:I,media:h({transport:o(`websocket-pcm`),codec:o(`pcm_s16le`),frameDurationMs:o(20)}),route:R,heartbeatIntervalMs:o(de)})),U(`input.speech_started`,h({utteranceId:f().min(1).max(160)})),U(`input.speech_stopped`,h({utteranceId:f().min(1).max(160)})),U(`input.transcript.delta`,H),U(`input.transcript.final`,H),U(`turn.decision`,h({turnId:f().min(1).max(160),disposition:p([`complete`,`incomplete`,`backchannel`,`wait`]),confidence:_().min(0).max(1),source:p([`provider`,`semantic`,`heuristic`]),committed:i()})),U(`turn.committed`,h({turnId:f().min(1).max(160)})),U(`response.created`,h({responseId:f().min(1).max(160)})),U(`task.created`,h({responseId:f().min(1).max(160),taskId:f().min(1).max(160)})),U(`task.activity`,h({taskId:f().min(1).max(160),toolCallId:f().min(1).max(160),toolName:f().min(1).max(256),status:p([`running`,`completed`,`failed`])})),U(`task.done`,h({taskId:f().min(1).max(160),status:p([`completed`,`failed`,`cancelled`,`suspended`])})),U(`response.clarification`,h({interactionMode:p([`quick`,`compose`]).optional(),choiceDetails:d(h({id:f(),label:f(),description:f().optional()})).optional(),recommendedChoiceId:f().optional(),approval:h({operation:f(),target:f().optional(),impact:f().optional(),argumentsPreview:c(f(),r()).optional()}).optional(),responseId:f().min(1).max(160),requestId:f().min(1).max(160),kind:p([`input`,`approval`]),question:f().min(1).max(8e3),version:_().int().positive(),createdAt:_().nonnegative(),expiresAt:_().nonnegative().optional()})),U(`response.text.delta`,h({responseId:f().min(1).max(160),delta:f().max(32*1024)})),U(`response.text.done`,h({responseId:f().min(1).max(160)})),U(`response.audio.started`,h({responseId:f().min(1).max(160),format:I})),U(`response.audio.done`,h({responseId:f().min(1).max(160)})),U(`response.done`,h({responseId:f().min(1).max(160),finishReason:p([`completed`,`text_only`,`audio_partial`]),audio:i()})),U(`response.cancelled`,h({responseId:f().min(1).max(160),reason:p([`barge_in`,`client_cancelled`,`session_closed`])})),U(`session.pong`,h({})),U(`session.error`,h({code:f().min(1).max(80),message:f().min(1).max(500),recoverable:i()})),U(`session.closed`,h({reason:f().min(1).max(160)}))]);function pe(e){return fe.parse(e)}function W(e,t){return{protocolVersion:3,messageId:crypto.randomUUID(),type:e,sentAt:Date.now(),payload:t}}function me(t){let n=new URL(e(t));return n.protocol=n.protocol===`https:`?`wss:`:`ws:`,n.toString()}var he=class n{socket;session;timingMetrics;receive;heartbeatId;inputRemainder=new Uint8Array;utteranceId=crypto.randomUUID();inputSeq=0;constructor(e,t,n=[]){this.socket=e,this.session=t,this.timingMetrics=n,this.receive=new ce(t)}static async preflight(n){return n.purpose===`conversation`&&n.conversationId&&await new te().materialize(n.conversationId,`voice`),(await t(e(`/api/voice/realtime/preflight`),{method:`POST`,signal:n.signal,body:JSON.stringify({purpose:n.purpose,mode:n.mode,conversationId:n.conversationId,supportedProtocolVersions:[3],mediaPreferences:[`websocket-pcm`]})})).timingMetrics??[]}static async connect(r){r.signal?.throwIfAborted();let i=r.purpose===`conversation`&&r.mode!==`natural`?await t(e(`/api/voice/realtime/status`),{signal:r.signal}):null,a=await t(e(`/api/voice/realtime/sessions`),{method:`POST`,signal:r.signal,body:JSON.stringify({purpose:r.purpose,...r.language?{language:r.language}:{},...i?.payload.openingGreeting&&r.logicalCallId?{openingGreeting:{logicalCallId:r.logicalCallId,initiation:r.recovery?`recovery`:`user`,supportsOutputReady:!0}}:{},...r.mode?{mode:r.mode}:{},...r.conversationId?{conversationId:r.conversationId}:{},supportedProtocolVersions:[3],mediaPreferences:[`websocket-pcm`]})}),o=B.parse(a.payload);r.signal?.throwIfAborted();let s=new WebSocket(me(o.websocketPath));s.binaryType=`arraybuffer`;let c=new n(s,o,r.timingMetrics);return await new Promise((e,t)=>{let n=!1,i,a=e=>{n||(n=!0,i!==void 0&&window.clearTimeout(i),s.close(),t(e))};i=window.setTimeout(()=>a(Error(`Realtime voice connection timed out`)),15e3);let l=()=>{n?s.close():a(Error(`Realtime voice connection cancelled`))};if(r.signal?.addEventListener(`abort`,l,{once:!0}),s.addEventListener(`close`,()=>r.signal?.removeEventListener(`abort`,l),{once:!0}),r.signal?.aborted){l();return}s.onerror=()=>a(Error(`Realtime voice connection failed`)),s.onclose=e=>{n?r.onClose?.(e.reason):a(Error(e.reason||`Realtime voice connection closed`))},s.onopen=()=>{s.send(JSON.stringify(W(`session.start`,{sessionId:o.sessionId,ticket:o.ticket})))},s.onmessage=t=>{if(typeof t.data!=`string`){try{let e=oe(new Uint8Array(t.data));c.receive.audio(e)&&r.onAudio?.(e.audio.slice().buffer,e.responseId)}catch{s.close(4400,`Invalid voice audio frame`)}return}try{let s=pe(JSON.parse(t.data));if(c.receive.event(s),r.onEvent(s),s.type===`session.ready`&&!n){if(s.payload.connectionEpoch!==o.connectionEpoch||s.payload.mode!==o.mode)throw Error(`Voice session mismatch`);n=!0,window.clearTimeout(i),c.startHeartbeat(s.payload.heartbeatIntervalMs),e()}else s.type===`session.error`&&!s.payload.recoverable&&a(Error(s.payload.message))}catch(e){n?s.close(4400,`Invalid voice protocol frame`):a(e instanceof Error?e:Error(String(e)))}}}),c}outputReady(){this.session.openingGreeting?.accepted&&this.sendControl(`session.output_ready`,{connectionEpoch:this.session.connectionEpoch})}sendAudio(e){if(!e.byteLength||this.socket.readyState!==WebSocket.OPEN)return;let t=new Uint8Array(e),n=new Uint8Array(this.inputRemainder.byteLength+t.byteLength);n.set(this.inputRemainder),n.set(t,this.inputRemainder.byteLength);let r=0;for(;r+640<=n.byteLength;){let e=se({connectionEpoch:this.session.connectionEpoch,utteranceId:this.utteranceId,audioSeq:++this.inputSeq,capturedAtMonotonicMs:performance.now(),durationMs:20,...this.inputSeq===1?{start:!0}:{},audio:n.slice(r,r+640)});this.socket.send(e.buffer),r+=640}this.inputRemainder=n.slice(r)}reportMetric(e,t,n){t===`speech_end_to_audio_scheduled`&&!this.timingMetrics.includes(t)||this.sendControl(`session.metric`,{responseId:e,metric:t,durationMs:Math.min(6e5,Math.max(0,n))})}setInputMuted(e){this.sendControl(`input.mute`,{muted:e}),this.inputRemainder=new Uint8Array,e||(this.utteranceId=crypto.randomUUID(),this.inputSeq=0)}commit(){this.sendControl(`input.commit`,{})}cancelResponse(e){this.sendControl(`response.stop_playback`,{responseId:e})}acknowledgeAudio(e,t){this.sendControl(`response.audio.played`,{responseId:e,playedDurationMs:Math.floor(t/48)})}stop(e=`user_finished`){this.stopHeartbeat(),this.socket.readyState===WebSocket.OPEN?this.sendControl(`session.stop`,{reason:e}):this.socket.close()}sendControl(e,t){this.socket.readyState===WebSocket.OPEN&&(e===`response.stop_playback`&&`responseId`in t&&this.receive.cancel(t.responseId),this.socket.send(JSON.stringify(W(e,t))))}startHeartbeat(e){this.stopHeartbeat(),this.heartbeatId=window.setInterval(()=>this.sendControl(`session.ping`,{}),e),this.socket.addEventListener(`close`,()=>this.stopHeartbeat(),{once:!0})}stopHeartbeat(){this.heartbeatId!==void 0&&(window.clearInterval(this.heartbeatId),this.heartbeatId=void 0)}},G=1.7,ge=class{context=new AudioContext({sampleRate:24e3});output=this.context.createGain();ringbackOutput=this.context.createGain();limiter=this.context.createDynamicsCompressor();sources=new Set;ringbackSources=new Map;ringbackDelay=null;ringbackInterval=null;ringbackActive=!1;nextStartTime=0;hasStartedAudio=!1;constructor(){this.output.gain.value=G,this.limiter.threshold.value=-6,this.limiter.knee.value=6,this.limiter.ratio.value=12,this.limiter.attack.value=.003,this.limiter.release.value=.12,this.output.connect(this.limiter),this.limiter.connect(this.context.destination),this.ringbackOutput.gain.value=0,this.ringbackOutput.connect(this.context.destination)}async start(){await this.context.resume()}get hasPendingAudio(){return this.sources.size>0}startRingback(){this.stopRingback(),this.context.state!==`closed`&&(this.ringbackActive=!0,this.ringbackDelay=setTimeout(()=>{this.ringbackDelay=null,!(!this.ringbackActive||this.context.state!==`running`)&&(this.ringbackOutput.gain.cancelScheduledValues(this.context.currentTime),this.ringbackOutput.gain.setValueAtTime(.14,this.context.currentTime),this.playRingbackPulse(),this.ringbackInterval=setInterval(()=>this.playRingbackPulse(),3e3))},500))}playRingbackPulse(){if(!this.ringbackActive||this.context.state!==`running`)return;let e=this.context.currentTime;for(let[t,n]of[392,494].entries()){let r=e+t*.4,i=this.context.createOscillator(),a=this.context.createGain();i.type=`sine`,i.frequency.value=n,a.gain.setValueAtTime(0,r),a.gain.linearRampToValueAtTime(.5,r+.04),a.gain.setValueAtTime(.5,r+.18),a.gain.linearRampToValueAtTime(0,r+.28),i.connect(a),a.connect(this.ringbackOutput),this.ringbackSources.set(i,a),i.onended=()=>{this.ringbackSources.delete(i),i.disconnect(),a.disconnect()},i.start(r),i.stop(r+.29)}}stopRingback(){if(this.ringbackActive=!1,this.ringbackDelay!==null&&clearTimeout(this.ringbackDelay),this.ringbackInterval!==null&&clearInterval(this.ringbackInterval),this.ringbackDelay=null,this.ringbackInterval=null,this.context.state!==`closed`){this.ringbackOutput.gain.cancelScheduledValues(this.context.currentTime),this.ringbackOutput.gain.setTargetAtTime(0,this.context.currentTime,.025);for(let[e,t]of this.ringbackSources){t.gain.cancelScheduledValues(this.context.currentTime),t.gain.setTargetAtTime(0,this.context.currentTime,.02);try{e.stop(this.context.currentTime+.12)}catch{}}}}enqueue(e,t,n=24e3){if(e.byteLength<2||this.context.state===`closed`)return;let r=new DataView(e),i=new Float32Array(Math.floor(e.byteLength/2));for(let e=0;e<i.length;e+=1)i[e]=r.getInt16(e*2,!0)/32768;let a=this.context.createBuffer(1,i.length,n);a.copyToChannel(i,0);let o=this.context.createBufferSource();o.buffer=a,o.connect(this.output);let s=this.hasStartedAudio?.015:.08,c=Math.max(this.context.currentTime+s,this.nextStartTime);return o.start(c),this.hasStartedAudio=!0,this.nextStartTime=c+a.duration,this.sources.add(o),o.onended=()=>{this.sources.delete(o)&&(o.disconnect(),t())},Math.max(0,c-this.context.currentTime)*1e3}duck(e){if(this.context.state===`closed`)return;let t=e?G*.15:G;this.output.gain.cancelScheduledValues(this.context.currentTime),this.output.gain.setTargetAtTime(t,this.context.currentTime,.015)}clear(){for(let e of this.sources){e.onended=null;try{e.stop()}catch{}e.disconnect()}this.sources.clear(),this.nextStartTime=this.context.currentTime,this.hasStartedAudio=!1,this.duck(!1)}async close(){this.stopRingback(),this.clear(),this.output.disconnect(),this.ringbackOutput.disconnect(),this.limiter.disconnect(),this.context.state!==`closed`&&await this.context.close();for(let[e,t]of this.ringbackSources)e.onended=null,e.disconnect(),t.disconnect();this.ringbackSources.clear()}},_e=`/assets/pcm-capture-worklet-uW_SEACy.js`,K=16e3;function q(e){if(e.length===0)return 0;let t=0;for(let n=0;n<e.length;n+=1)t+=e[n]*e[n];return Math.min(1,Math.sqrt(t/e.length))}function ve(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Float32Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function J(e,t,n=K){if(t===n)return e;let r=Math.max(1,Math.round(e.length*n/t)),i=new Float32Array(r),a=t/n;for(let t=0;t<r;t+=1){let n=t*a,r=Math.min(e.length-1,Math.floor(n)),o=Math.min(e.length-1,r+1),s=n-r;i[t]=e[r]*(1-s)+e[o]*s}return i}function Y(e,t=K){let n=new ArrayBuffer(44+e.length*2),r=new DataView(n),i=(e,t)=>{for(let n=0;n<t.length;n+=1)r.setUint8(e+n,t.charCodeAt(n))};i(0,`RIFF`),r.setUint32(4,36+e.length*2,!0),i(8,`WAVE`),i(12,`fmt `),r.setUint32(16,16,!0),r.setUint16(20,1,!0),r.setUint16(22,1,!0),r.setUint32(24,t,!0),r.setUint32(28,t*2,!0),r.setUint16(32,2,!0),r.setUint16(34,16,!0),i(36,`data`),r.setUint32(40,e.length*2,!0);for(let t=0;t<e.length;t+=1){let n=Math.max(-1,Math.min(1,e[t]));r.setInt16(44+t*2,n<0?n*32768:n*32767,!0)}return n}function X(e){let t=new ArrayBuffer(e.length*2),n=new DataView(t);for(let t=0;t<e.length;t+=1){let r=Math.max(-1,Math.min(1,e[t]));n.setInt16(t*2,r<0?r*32768:r*32767,!0)}return t}var ye=class{sourceRate;targetRate;pending=new Float32Array;position=0;constructor(e,t=K){if(this.sourceRate=e,this.targetRate=t,e<=0||t<=0)throw Error(`PCM sample rates must be positive`)}push(e){if(e.length===0)return new ArrayBuffer(0);let t=new Float32Array(this.pending.length+e.length);t.set(this.pending),t.set(e,this.pending.length);let n=this.sourceRate/this.targetRate,r=[];for(;this.position+1<t.length;){let e=Math.floor(this.position),i=this.position-e;r.push(t[e]*(1-i)+t[e+1]*i),this.position+=n}let i=Math.min(t.length-1,Math.floor(this.position));return this.pending=t.slice(i),this.position-=i,X(Float32Array.from(r))}flush(){if(this.pending.length===0)return new ArrayBuffer(0);let e=this.pending[Math.min(this.pending.length-1,Math.floor(this.position))];return this.pending=new Float32Array,this.position=0,X(Float32Array.of(e))}},be=`xopc-pcm-capture`,xe=1e3,Se=1e4,Z=class e{context;source;node;mutedOutput;options;sampleRate;paused=!1;accepting=!0;processorFailed=!1;stopPromise;flushResolve;constructor(e,t,n,r,i){this.context=e,this.source=t,this.node=n,this.mutedOutput=r,this.options=i,this.sampleRate=e.sampleRate,this.node.port.onmessage=e=>{if(e.data.type===`flushed`){this.flushResolve?.();return}if(!this.accepting||this.paused)return;let t=new Float32Array(e.data.buffer);if(this.options.onSamples(t),this.options.onAudioLevel){let e=q(t);this.options.onAudioLevel({level:e,speaking:e>=(this.options.speechThreshold??.015)})}},this.node.onprocessorerror=()=>{this.processorFailed=!0,this.flushResolve?.()}}static async start(t,n){if(typeof AudioWorkletNode>`u`)throw Error(`PCM audio recording is not supported in this browser`);let r=new AudioContext,i,a,o=new Promise((e,t)=>{a=setTimeout(()=>{t(new DOMException(`PCM audio capture startup timed out`,`TimeoutError`))},Se)});try{await Promise.race([r.audioWorklet.addModule(_e),o]);let a=r.createMediaStreamSource(t),s=new AudioWorkletNode(r,be),c=r.createGain();return c.gain.value=0,i=new e(r,a,s,c,n),a.connect(s),s.connect(c),c.connect(r.destination),await Promise.race([r.resume(),o]),i}catch(e){throw i?i.cancel():r.close().catch(()=>void 0),e}finally{clearTimeout(a)}}pause(){this.paused=!0}resume(){this.paused=!1}stop(){return this.stopPromise??=this.finish(),this.stopPromise}cancel(){this.accepting&&(this.accepting=!1,this.flushResolve?.(),this.flushResolve=void 0,this.disconnect(),this.context.close().catch(()=>void 0))}async finish(){this.accepting&&(this.processorFailed||await this.flushWorklet(),this.flushResolve=void 0,this.accepting&&(this.accepting=!1,this.disconnect(),await this.context.close().catch(()=>void 0)))}flushWorklet(){return new Promise(e=>{let t=!1,n=()=>{t||(t=!0,globalThis.clearTimeout(r),e())},r=globalThis.setTimeout(n,xe);this.flushResolve=n;try{this.node.port.postMessage(`flush`)}catch{n()}})}disconnect(){this.node.port.onmessage=null,this.node.onprocessorerror=null,this.source.disconnect(),this.node.disconnect(),this.mutedOutput.disconnect()}},Ce=class e{capture;chunks;stopped=!1;constructor(e,t){this.capture=e,this.chunks=t}static async start(t,n={}){let r=[],i=await Z.start(t,{...n,onSamples:e=>r.push(e)});return new e(i,r)}async stop(){if(this.stopped)return new Blob([],{type:`audio/wav`});this.stopped=!0,await this.capture.stop();let e=J(ve(this.chunks),this.capture.sampleRate);return new Blob([Y(e)],{type:`audio/wav`})}cancel(){this.stopped||(this.stopped=!0,this.capture.cancel(),this.chunks.length=0)}};function we(e){return e.includes(`ogg`)?`ogg`:e.includes(`mp4`)||e.includes(`m4a`)?`m4a`:e.includes(`mpeg`)||e.includes(`mp3`)?`mp3`:e.includes(`wav`)?`wav`:`webm`}async function Q(n,r,i,a){let o=n.type||r||`audio/webm`,s=n.type?n:new Blob([n],{type:o}),c=new FormData;c.append(`audio`,s,`recording.${we(o)}`),a&&c.append(`expectedProvider`,a);let l=await t(e(`/api/voice/transcriptions`),{method:`POST`,body:c,...i?{signal:i}:{}});if(!l.payload)throw Error(`Missing transcription payload`);return l.payload}async function Te(n){let r=await t(e(`/api/status`),{signal:n});if(!r.voice?.dictation)throw Error(`Missing dictation status`);return r.voice.dictation}function $(){}typeof window<`u`&&(window.addEventListener(`voice-config-changed`,$),window.addEventListener(`config-reload`,$));export{Ce as a,J as c,y as d,re as f,ye as i,ge as l,Q as n,q as o,Z as r,Y as s,Te as t,he 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{
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{n as i}from"./locale-store-5Hf8J8-_.js";import{t as a}from"./messages-uXxg5p54.js";import{t as o}from"./work-discovery-page-DAQPKVDs.js";import{t as s}from"./understanding-activity-store-CmwtE8Kd.js";import{t as c}from"./x-B_N4OPjy.js";import{t as l}from"./button-CnRSIP6m.js";import{a as u,i as d,o as f,r as p,s as m,t as h}from"./dist-DfWfZ9iu.js";import{t as g}from"./brand-logo-CgT9zQfr.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=i(C),w=s(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)(u,{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)(m,{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)(d,{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)(c,{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)(l,{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)(o,{embedded:!0,onRequestClose:N})}),t[31]=N,t[32]=J);let Y;t[33]!==q||t[34]!==J?(Y=(0,y.jsxs)(f,{children:[z,(0,y.jsx)(p,{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)(h,{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};
|