@xopcai/xopc 0.0.285 → 0.0.286
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/dist/assets/{auth-DB30ywek.js → auth-BXCWrPlg.js} +1 -1
- package/dist/browser-ext/dist/background.js +2 -2
- package/dist/browser-ext/dist/sidepanel.html +1 -1
- package/dist/browser-ext/dist/sidepanel.js +136 -136
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/adapters/gateway-setup.js +14 -14
- package/dist/extensions/feishu/src/state/message-bindings.d.ts +1 -1
- package/dist/extensions/feishu/src/state/thread-bindings.d.ts +4 -4
- package/dist/extensions/feishu/src/state/thread-bindings.js +6 -6
- package/dist/extensions/feishu/src/subagent-hooks.d.ts +1 -1
- package/dist/extensions/feishu/src/subagent-hooks.js +5 -5
- package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +9 -9
- package/dist/extensions/feishu/src/transport/webhook/monitor.js +4 -4
- package/dist/extensions/feishu/src/workflow-progress.d.ts +1 -1
- package/dist/extensions/feishu/src/workflow-progress.js +8 -7
- package/dist/extensions/telegram/src/approval-store.d.ts +2 -2
- package/dist/extensions/telegram/src/approval-store.js +1 -1
- package/dist/extensions/telegram/src/command-handler.d.ts +2 -2
- package/dist/extensions/telegram/src/command-handler.js +8 -8
- package/dist/extensions/telegram/src/delivery-chat-id.d.ts +1 -1
- package/dist/extensions/telegram/src/delivery-chat-id.js +7 -3
- package/dist/extensions/telegram/src/exec-approval-handler.js +1 -1
- package/dist/extensions/telegram/src/focus-handler.d.ts +2 -2
- package/dist/extensions/telegram/src/focus-handler.js +10 -10
- package/dist/extensions/telegram/src/inbound-processor.d.ts +3 -3
- package/dist/extensions/telegram/src/inbound-processor.js +11 -11
- package/dist/extensions/telegram/src/plugin.js +5 -5
- package/dist/extensions/telegram/src/routing-integration.d.ts +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +19 -21
- package/dist/extensions/telegram/src/thread-bindings.d.ts +1 -1
- package/dist/extensions/telegram/src/workflow-progress.js +8 -7
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/auth/login-qr.d.ts +4 -4
- package/dist/extensions/weixin/src/auth/login-qr.js +21 -21
- package/dist/extensions/weixin/src/auth/weixin-account-id.d.ts +1 -1
- package/dist/extensions/weixin/src/auth/weixin-account-id.js +1 -1
- package/dist/extensions/weixin/src/cli/gateway-qr-login.d.ts +2 -2
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js +13 -13
- package/dist/extensions/weixin/src/cli/qr-login.js +1 -1
- package/dist/extensions/weixin/src/delivery-to.js +6 -2
- package/dist/extensions/weixin/src/messaging/inbound.d.ts +1 -1
- package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +3 -3
- package/dist/extensions/weixin/src/plugin.js +5 -5
- package/dist/extensions/weixin/src/routing-integration.d.ts +1 -1
- package/dist/extensions/weixin/src/routing-integration.js +3 -3
- package/dist/extensions/weixin/src/workflow-progress.d.ts +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +7 -6
- package/dist/gateway/static/root/assets/{activity-store-B0BTIk9j.js → activity-store-xOhV8FHx.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Dc-0QZTQ.js → agent-avatar-dicebear-BzQbYWEj.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-CcmqK1Sc.js → agent-defaults-settings-panel-BxR5eog4.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-B_7PVt7S.js → agents-Dx1om1eN.js} +1 -1
- package/dist/gateway/static/root/assets/{api-Coly9ab6.js → api-CVJQLBv9.js} +1 -1
- package/dist/gateway/static/root/assets/api-q1kIMCLW.js +1 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-TWBO-msg.js → app-management-settings-panel-CTyuXkNC.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CpTZ2KuT.js → appearance-settings-Tk-GJtvF.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-BA-7OrhJ.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-z_u6alob.js → archive-plugin-O49jeeXo.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-C2nS04TC.js → attachment-load-r9lBF2tW.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-aIBsw9zR.js → automations-page-CFFLXYgS.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-BRQlU4qk.js → automations-workspace-DUZE1NOH.js} +3 -3
- package/dist/gateway/static/root/assets/{binary-plugins-CGmXoZnl.js → binary-plugins-BpM43vsn.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CtvzCZhC.js → block-editor-DFrfEcGw.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-BOTU1isH.js → browser-automation-inputs-CyHGQwxQ.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-BwU5V8J0.js → browser-automations-page-CPkOWfM9.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-DDjbDeHQ.js → browser-settings-page-BOcseZxg.js} +2 -2
- package/dist/gateway/static/root/assets/button-CGlRPNzi.js +1 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-ohEV64hG.js +8 -0
- package/dist/gateway/static/root/assets/channels-settings-UOf9mgqt.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-Dfi0Desh.js → channels-status-swr-BArPeImO.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-B0MvcO6j.js → chat-terminal-dock-D5Aka4S8.js} +2 -2
- package/dist/gateway/static/root/assets/{connectors-page-L8JehrxF.js → connectors-page-BEQR0NRq.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-expression-CjrWuy2m.js → cron-expression-GDPX4NxC.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-DXOvbHCr.js → date-picker-DNtRu6EB.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-BEnC-eS0.js → dependency-picker-Dng3dIQa.js} +1 -1
- package/dist/gateway/static/root/assets/desktop-pet-BicYycxy.js +1 -0
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CYyjcSn6.js → desktop-pet-settings-BEse55eX.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-BPMGvAKE.js → device-pairing-wizard-be30HuFI.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-H_aPMGXW.js → extension-debug-page-YzhYyuay.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-C1JnpeMt.js → extension-page-CEXVIkDl.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-CrlbgK8g.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-config-swr-G2lQt7Ak.js → gateway-config-swr-BNuoHXiZ.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-CDJY1AOW.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-GP31PUrG.js → gateway-startup-retry-zMPfje0n.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-C7fjiowt.js → heartbeat-settings-BtxitqZ3.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-DZXeXdUL.js → home-page-_oqo0pNR.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-CKFhfHSw.js → image-generation-api-B_Tyx74A.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-GROumhj8.js → imports-page-eZciuLw_.js} +1 -1
- package/dist/gateway/static/root/assets/index--YC42LAz.css +2 -0
- package/dist/gateway/static/root/assets/index-fVtuw2o9.js +75 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-zcI822m_.js → keyboard-shortcuts-settings-B796W039.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-CAEKGTAg.js → local-app-workbench-page-Z8mpau9d.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-BtgDJ92Q.js → local-apps-page-DXmY5jwM.js} +1 -1
- package/dist/gateway/static/root/assets/locale-store-D0001I7p.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-BGOO8ouT.js +2 -0
- package/dist/gateway/static/root/assets/{management-settings-DasZxCyD.js → management-settings-b1MG7s-3.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-6oYdBahT.js → markdown-view-2txE_Blz.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-CxthbBvk.js → media-plugins-CDEf3ksI.js} +1 -1
- package/dist/gateway/static/root/assets/messages-BWANv-N-.js +3 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-BcWq3ddw.js → note-detail-panel-Bm33_3xJ.js} +3 -3
- package/dist/gateway/static/root/assets/notes-page-C32-xssK.js +8 -0
- package/dist/gateway/static/root/assets/page-tabs-Bi_-DA5J.js +1 -0
- package/dist/gateway/static/root/assets/popover-select-DldSX8GX.js +1 -0
- package/dist/gateway/static/root/assets/{preview-open-alternatives-Bevpbq9f.js → preview-open-alternatives-Dhfdf14p.js} +1 -1
- package/dist/gateway/static/root/assets/proactive-page-BNouL7Tv.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-Bi1seZpM.js → product-open-page-BkbZBqBr.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-CZ7glGYw.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-DP3ZINZz.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-D0ddwBFj.js → registry-api-icwoEKYB.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-xqJcPdOO.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Wkru8_My.js → runtime-tools-settings-panel-bmgxwWpW.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CSMRzj9Y.js → schema-form-DoZeepCg.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-Hj9uFcIO.js → sessions-page-BaxIfjpm.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-Cy3Ab3Vg.js +1 -0
- package/dist/gateway/static/root/assets/settings-form-section-sw2bbS2b.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-BcQGAnCs.js → settings-page-BWF8uac0.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-layout-CsUQKRq0.js +1 -0
- package/dist/gateway/static/root/assets/{setup-status-panel-DzxmsaQG.js → setup-status-panel-BuYto2mT.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-DQocUl-1.js → share-preview-page-BIHYD6-O.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-DKtWUneq.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-Dn7ElMUk.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-AmqtBJo7.js → skills-page-D-7UtJIc.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-DtlfCgJp.js → skills-page.utils-dvue6Ish.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-Ct698Nf-.js → system-settings-panel-DCyxPWCl.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-efmH43Pq.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-ng8KJsAT.js → theme-store-CZwYGpbY.js} +1 -1
- package/dist/gateway/static/root/assets/tunnel-api-__auf8Ww.js +1 -0
- package/dist/gateway/static/root/assets/{use-autosave-BSyxRHt2.js → use-autosave-Iq83UDt3.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-DIEHnAER.js → user-model-page-DByIJcQq.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-SE3OQI1s.js → voice-api-key-field-D-QssKik.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-VNuCmdFe.js → voice-config-api-B0wNN_tE.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-Dn1vy2oq.js → work-discovery-overlay-5NRYg1iI.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BJEfGY-k.js → workflow-run-setup-panel-Ds2SZjLG.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-DgRNIyr7.js → workflows-page-BJv3eoKR.js} +2 -2
- package/dist/gateway/static/root/index.html +12 -12
- package/dist/package.js +1 -1
- package/dist/packages/endpoint-tools-protocol/src/index.js +312 -305
- package/dist/packages/gateway-contract/src/agent-stream.js +6 -0
- package/dist/packages/gateway-contract/src/automations.js +215 -0
- package/dist/packages/gateway-contract/src/browser-page-context.js +48 -39
- package/dist/packages/gateway-contract/src/browser-tab-binding.js +30 -25
- package/dist/packages/gateway-contract/src/clarifications.js +6 -0
- package/dist/packages/gateway-contract/src/connection-waits.js +6 -0
- package/dist/packages/gateway-contract/src/conversation-identity.js +17 -0
- package/dist/packages/gateway-contract/src/device-pairing.js +84 -78
- package/dist/packages/gateway-contract/src/discussions.js +19 -15
- package/dist/packages/gateway-contract/src/files.js +55 -0
- package/dist/packages/gateway-contract/src/home.js +188 -0
- package/dist/packages/gateway-contract/src/index.js +65 -0
- package/dist/packages/gateway-contract/src/mobile-privacy.js +26 -0
- package/dist/packages/gateway-contract/src/model-selection.js +4 -1
- package/dist/packages/gateway-contract/src/new-session.js +5 -1
- package/dist/packages/gateway-contract/src/notifications.js +64 -59
- package/dist/packages/gateway-contract/src/proactive.js +133 -128
- package/dist/packages/gateway-contract/src/product-delivery.js +56 -50
- package/dist/packages/gateway-contract/src/project-monitoring.js +33 -28
- package/dist/packages/gateway-contract/src/project-operating.js +100 -0
- package/dist/packages/gateway-contract/src/session-identity.js +38 -34
- package/dist/packages/gateway-contract/src/session-input-reliability.js +6 -0
- package/dist/packages/gateway-contract/src/sessions.js +145 -0
- package/dist/packages/gateway-contract/src/task-lifecycle.js +69 -64
- package/dist/packages/gateway-contract/src/task-runs.js +80 -75
- package/dist/packages/gateway-contract/src/tasks.js +445 -438
- package/dist/packages/gateway-contract/src/tool-activity.js +154 -149
- package/dist/packages/gateway-contract/src/turn-outcome.js +118 -112
- package/dist/packages/gateway-contract/src/user-message-display.js +13 -8
- package/dist/packages/gateway-contract/src/welcome-suggestions.js +6 -0
- package/dist/packages/realtime-client/src/index.js +1 -1
- package/dist/packages/realtime-protocol/src/index.js +4 -2
- package/dist/packages/realtime-protocol/src/voice.js +4 -4
- package/dist/src/activity/types.d.ts +1 -1
- package/dist/src/agent/agent-instance-gateway.d.ts +18 -18
- package/dist/src/agent/agent-manager.d.ts +27 -27
- package/dist/src/agent/agent-manager.js +180 -179
- package/dist/src/agent/background-review/coordinator.d.ts +3 -3
- package/dist/src/agent/background-review/coordinator.js +10 -10
- package/dist/src/agent/background-review/run-background-review.d.ts +1 -1
- package/dist/src/agent/background-review/run-background-review.js +14 -14
- package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +4 -4
- package/dist/src/agent/bootstrap/bootstrap-cache.js +9 -9
- package/dist/src/agent/bootstrap/bootstrap-files.d.ts +4 -4
- package/dist/src/agent/bootstrap/bootstrap-files.js +9 -9
- package/dist/src/agent/bootstrap/filter-bootstrap-files.d.ts +1 -1
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +3 -3
- package/dist/src/agent/child-agent-factory.d.ts +3 -3
- package/dist/src/agent/child-agent-factory.js +5 -5
- package/dist/src/agent/coding/workspace-revision.js +1 -1
- package/dist/src/agent/commands/command-registry.js +2 -1
- package/dist/src/agent/context/audit.d.ts +2 -2
- package/dist/src/agent/context/audit.js +5 -4
- package/dist/src/agent/context/coordinator.d.ts +6 -6
- package/dist/src/agent/context/coordinator.js +13 -13
- package/dist/src/agent/context/execution-context.js +4 -3
- package/dist/src/agent/context/execution-scope.d.ts +3 -3
- package/dist/src/agent/context/execution-scope.js +13 -13
- package/dist/src/agent/context/project-context.d.ts +1 -1
- package/dist/src/agent/context/project-context.js +4 -4
- package/dist/src/agent/embedded/execution-context.d.ts +1 -1
- package/dist/src/agent/embedded/execution-context.js +3 -3
- package/dist/src/agent/embedded/index.d.ts +1 -1
- package/dist/src/agent/embedded/index.js +2 -2
- package/dist/src/agent/embedded/run-for-session.d.ts +1 -1
- package/dist/src/agent/embedded/run-for-session.js +78 -104
- package/dist/src/agent/embedded/run-turn.js +77 -33
- package/dist/src/agent/embedded/runs.d.ts +11 -11
- package/dist/src/agent/embedded/runs.js +22 -22
- package/dist/src/agent/embedded/session-runner.d.ts +2 -2
- package/dist/src/agent/embedded/session-runner.js +5 -5
- package/dist/src/agent/embedded/session-tool-result-guard.d.ts +2 -2
- package/dist/src/agent/embedded/session-tool-result-guard.js +8 -8
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.d.ts +2 -2
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +4 -4
- package/dist/src/agent/embedded/transcript-runtime.d.ts +4 -3
- package/dist/src/agent/embedded/transcript-runtime.js +33 -20
- package/dist/src/agent/embedded/types.d.ts +2 -1
- package/dist/src/agent/external-tools/composio-provider.d.ts +1 -1
- package/dist/src/agent/external-tools/composio-provider.js +12 -11
- package/dist/src/agent/external-tools/endpoint-provider.js +1 -1
- package/dist/src/agent/external-tools/extension-provider.d.ts +1 -1
- package/dist/src/agent/external-tools/extension-provider.js +1 -1
- package/dist/src/agent/external-tools/gateway-tools.js +9 -8
- package/dist/src/agent/external-tools/index.js +3 -3
- package/dist/src/agent/external-tools/mcp-provider.d.ts +2 -2
- package/dist/src/agent/external-tools/mcp-provider.js +8 -8
- package/dist/src/agent/external-tools/memory-provider.d.ts +1 -1
- package/dist/src/agent/external-tools/memory-provider.js +1 -1
- package/dist/src/agent/external-tools/types.d.ts +1 -1
- package/dist/src/agent/inbound/attachment-pipeline.d.ts +7 -7
- package/dist/src/agent/inbound/attachment-pipeline.js +22 -21
- package/dist/src/agent/inbound/inbound-loop.d.ts +6 -6
- package/dist/src/agent/inbound/inbound-loop.js +23 -23
- package/dist/src/agent/inbound/turn-dispatcher.d.ts +14 -14
- package/dist/src/agent/inbound/turn-dispatcher.js +16 -16
- package/dist/src/agent/ipc/bus.d.ts +1 -1
- package/dist/src/agent/ipc/types.d.ts +3 -3
- package/dist/src/agent/ipc/types.js +1 -1
- package/dist/src/agent/lifecycle/hook-handler.d.ts +2 -2
- package/dist/src/agent/lifecycle/hook-handler.js +6 -6
- package/dist/src/agent/lifecycle/manager.d.ts +1 -1
- package/dist/src/agent/lifecycle/manager.js +4 -4
- package/dist/src/agent/lifecycle/types.d.ts +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.d.ts +4 -4
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +21 -20
- package/dist/src/agent/mcp/bundle-mcp-tools.d.ts +1 -1
- package/dist/src/agent/mcp/bundle-mcp-tools.js +2 -2
- package/dist/src/agent/mcp/bundle-mcp-types.d.ts +4 -4
- package/dist/src/agent/mcp/index.js +2 -2
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +9 -8
- package/dist/src/agent/memory/compaction-ledger.js +9 -2
- package/dist/src/agent/memory/compaction-promotion.d.ts +2 -2
- package/dist/src/agent/memory/compaction-promotion.js +6 -6
- package/dist/src/agent/memory/compaction-source-planner.d.ts +2 -0
- package/dist/src/agent/memory/compaction-source-planner.js +9 -1
- package/dist/src/agent/memory/compaction.d.ts +6 -1
- package/dist/src/agent/memory/compaction.js +22 -11
- package/dist/src/agent/memory/context-recovery.d.ts +44 -0
- package/dist/src/agent/memory/context-recovery.js +96 -0
- package/dist/src/agent/memory/manager.js +11 -11
- package/dist/src/agent/memory/turn-provenance.d.ts +5 -5
- package/dist/src/agent/memory/turn-provenance.js +21 -17
- package/dist/src/agent/memory/types.d.ts +2 -2
- package/dist/src/agent/messaging/command-handler.d.ts +11 -11
- package/dist/src/agent/messaging/command-handler.js +7 -7
- package/dist/src/agent/messaging/message-router.d.ts +1 -1
- package/dist/src/agent/messaging/message-router.js +4 -4
- package/dist/src/agent/messaging/outbound-coordinator.d.ts +2 -2
- package/dist/src/agent/messaging/outbound-coordinator.js +4 -4
- package/dist/src/agent/middleware/context.d.ts +1 -2
- package/dist/src/agent/middleware/context.js +2 -5
- package/dist/src/agent/models/manager.d.ts +10 -10
- package/dist/src/agent/models/manager.js +34 -34
- package/dist/src/agent/orchestration/agent-event-handler.js +14 -14
- package/dist/src/agent/orchestration/agent-orchestrator.d.ts +7 -7
- package/dist/src/agent/orchestration/agent-orchestrator.js +29 -29
- package/dist/src/agent/orchestration/context-overflow.js +2 -0
- package/dist/src/agent/orchestration/llm-turn-retry.d.ts +1 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js +2 -2
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +2 -2
- package/dist/src/agent/prompt/response-language.d.ts +1 -1
- package/dist/src/agent/prompt/response-language.js +2 -2
- package/dist/src/agent/prompt/service-prompt-builder.d.ts +2 -2
- package/dist/src/agent/prompt/service-prompt-builder.js +4 -4
- package/dist/src/agent/prompt/subagent-context.d.ts +4 -4
- package/dist/src/agent/prompt/subagent-context.js +1 -1
- package/dist/src/agent/prompt/system-prompt-params.d.ts +4 -4
- package/dist/src/agent/prompt/system-prompt-params.js +13 -12
- package/dist/src/agent/reply/apply-turn-user-enrichment.d.ts +1 -1
- package/dist/src/agent/reply/apply-turn-user-enrichment.js +3 -3
- package/dist/src/agent/reply/post-compaction-context.d.ts +1 -1
- package/dist/src/agent/reply/post-compaction-context.js +2 -2
- package/dist/src/agent/service/btw-query.d.ts +1 -1
- package/dist/src/agent/service/btw-query.js +4 -4
- package/dist/src/agent/service/build-direct-message-content.d.ts +1 -1
- package/dist/src/agent/service/build-direct-message-content.js +2 -2
- package/dist/src/agent/service/direct-turn-helpers.d.ts +6 -6
- package/dist/src/agent/service/direct-turn-helpers.js +17 -16
- package/dist/src/agent/service/parse-outbound-session-key.d.ts +1 -1
- package/dist/src/agent/service/parse-outbound-session-key.js +8 -9
- package/dist/src/agent/service/process-direct-one-shot.d.ts +11 -11
- package/dist/src/agent/service/process-direct-one-shot.js +16 -16
- package/dist/src/agent/service/process-direct-streaming.d.ts +18 -18
- package/dist/src/agent/service/process-direct-streaming.js +45 -40
- package/dist/src/agent/service/session-context-report.d.ts +1 -1
- package/dist/src/agent/service/session-context-report.js +3 -3
- package/dist/src/agent/service/webchat-tts.d.ts +3 -3
- package/dist/src/agent/service/webchat-tts.js +7 -7
- package/dist/src/agent/service.d.ts +23 -23
- package/dist/src/agent/service.js +111 -108
- package/dist/src/agent/service.types.d.ts +3 -3
- package/dist/src/agent/session/session-config-service.d.ts +5 -5
- package/dist/src/agent/session/session-config-service.js +53 -66
- package/dist/src/agent/session/session-context.d.ts +2 -2
- package/dist/src/agent/session/session-context.js +2 -2
- package/dist/src/agent/session/session-hydrator.d.ts +3 -3
- package/dist/src/agent/session/session-hydrator.js +19 -19
- package/dist/src/agent/session/session-inspector.d.ts +7 -7
- package/dist/src/agent/session/session-inspector.js +45 -45
- package/dist/src/agent/session/session-lifecycle.d.ts +2 -2
- package/dist/src/agent/session/session-lifecycle.js +17 -17
- package/dist/src/agent/session/session-state-bag.d.ts +18 -18
- package/dist/src/agent/session/session-state-bag.js +46 -46
- package/dist/src/agent/session/tracker.d.ts +7 -7
- package/dist/src/agent/session/tracker.js +27 -27
- package/dist/src/agent/source-context/types.d.ts +1 -1
- package/dist/src/agent/tasks/task-judge-service.d.ts +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +11 -10
- package/dist/src/agent/tools/automation-tool.js +2 -0
- package/dist/src/agent/tools/chain-tracker.d.ts +10 -10
- package/dist/src/agent/tools/chain-tracker.js +31 -31
- package/dist/src/agent/tools/clarify-tool.d.ts +1 -1
- package/dist/src/agent/tools/create-share-tool.js +2 -0
- package/dist/src/agent/tools/delegate-tool.d.ts +1 -1
- package/dist/src/agent/tools/delegate-tool.js +4 -4
- package/dist/src/agent/tools/exec-command.d.ts +1 -1
- package/dist/src/agent/tools/exec-command.js +1 -1
- package/dist/src/agent/tools/factory.d.ts +3 -3
- package/dist/src/agent/tools/factory.js +36 -36
- package/dist/src/agent/tools/knowledge-memory-tool.js +2 -2
- package/dist/src/agent/tools/managed-job-tool.d.ts +1 -1
- package/dist/src/agent/tools/managed-job-tool.js +2 -2
- package/dist/src/agent/tools/publish-artifacts.js +2 -0
- package/dist/src/agent/tools/send-media.js +2 -0
- package/dist/src/agent/tools/session-recall-tool.d.ts +1 -1
- package/dist/src/agent/tools/session-recall-tool.js +3 -3
- package/dist/src/agent/tools/session-search-tool.d.ts +1 -1
- package/dist/src/agent/tools/session-search-tool.js +6 -6
- package/dist/src/agent/tools/skill-install-tool.d.ts +3 -3
- package/dist/src/agent/tools/skill-install-tool.js +3 -3
- package/dist/src/agent/tools/todo-tool.d.ts +3 -3
- package/dist/src/agent/tools/todo-tool.js +4 -4
- package/dist/src/agent/tools/workflow-tool.d.ts +1 -1
- package/dist/src/agent/tools/workflow-tool.js +15 -13
- package/dist/src/agent/tools/write.js +2 -0
- package/dist/src/agent/tools/xopc-use-tool.d.ts +1 -1
- package/dist/src/agent/tools/xopc-use-tool.js +16 -13
- package/dist/src/agent/types.d.ts +1 -1
- package/dist/src/agent/workflow/catalog.js +4 -2
- package/dist/src/agent/workflow/channel-capability.d.ts +2 -2
- package/dist/src/agent/workflow/progress-broker.d.ts +4 -4
- package/dist/src/agent/workflow/progress-broker.js +17 -17
- package/dist/src/agent/workflow/subagent-runner.js +10 -10
- package/dist/src/agent/workflow/types.d.ts +2 -2
- package/dist/src/agent/workflow/workflow-child-tools.js +1 -1
- package/dist/src/agent/workspace-runtime/registry.js +1 -1
- package/dist/src/automations/domain/types.d.ts +7 -7
- package/dist/src/automations/domain/validation.js +2 -0
- package/dist/src/automations/service/action-executor.js +15 -15
- package/dist/src/automations/service/automation-service.js +4 -3
- package/dist/src/automations/storage/automation-repository.js +2 -1
- package/dist/src/automations/storage/automation-run-repository.js +9 -8
- package/dist/src/browser/native-messaging-host.js +4 -1
- package/dist/src/browser/policy/approval-store.d.ts +4 -4
- package/dist/src/browser/policy/approval-store.js +8 -8
- package/dist/src/browser/providers/extension.js +6 -6
- package/dist/src/browser/providers/realtime-extension.js +2 -2
- package/dist/src/browser/runtime/browser-runtime.js +3 -3
- package/dist/src/channels/exec-approval-runtime.d.ts +1 -1
- package/dist/src/channels/manager.js +1 -1
- package/dist/src/channels/pipeline.js +2 -2
- package/dist/src/channels/plugin-types.d.ts +2 -2
- package/dist/src/channels/plugins/types.adapters.d.ts +1 -1
- package/dist/src/channels/telegram/index.d.ts +1 -1
- package/dist/src/channels/telegram/index.js +2 -2
- package/dist/src/chat-commands/agent-edit.js +2 -2
- package/dist/src/chat-commands/builtins/review.js +4 -4
- package/dist/src/chat-commands/builtins/session.js +1 -1
- package/dist/src/chat-commands/builtins/system.js +2 -2
- package/dist/src/chat-commands/builtins/thinking.js +7 -7
- package/dist/src/chat-commands/builtins/understanding.js +4 -4
- package/dist/src/chat-commands/builtins/workflow.js +8 -8
- package/dist/src/chat-commands/context.d.ts +9 -9
- package/dist/src/chat-commands/context.js +35 -35
- package/dist/src/chat-commands/index.d.ts +1 -1
- package/dist/src/chat-commands/index.js +2 -2
- package/dist/src/chat-commands/processor.js +2 -2
- package/dist/src/chat-commands/registry.js +1 -1
- package/dist/src/chat-commands/session-key.d.ts +3 -3
- package/dist/src/chat-commands/session-key.js +20 -24
- package/dist/src/chat-commands/types.d.ts +3 -3
- package/dist/src/cli/command-manifest.js +1 -1
- package/dist/src/cli/commands/agent/interactive.d.ts +1 -1
- package/dist/src/cli/commands/agent/interactive.js +8 -8
- package/dist/src/cli/commands/agent/stream-renderer.d.ts +1 -1
- package/dist/src/cli/commands/agent/stream-renderer.js +2 -2
- package/dist/src/cli/commands/agent.js +10 -6
- package/dist/src/cli/commands/doctor/checks/database-schema.js +3 -2
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +9 -9
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/gateway/run-foreground.js +2 -1
- package/dist/src/cli/commands/import.js +2 -1
- package/dist/src/cli/commands/logs.js +3 -3
- package/dist/src/cli/commands/project.js +5 -5
- package/dist/src/cli/commands/resume.js +4 -4
- package/dist/src/cli/commands/tunnel.js +2 -1
- package/dist/src/config/agent-profile.d.ts +3 -3
- package/dist/src/config/agent-profile.js +12 -12
- package/dist/src/config/models-json.d.ts +6 -6
- package/dist/src/config/schema.d.ts +1 -1
- package/dist/src/connectors/catalog.js +2 -1
- package/dist/src/connectors/composio-sessions.d.ts +1 -1
- package/dist/src/connectors/composio-sessions.js +3 -3
- package/dist/src/connectors/connection-recovery-service.d.ts +4 -4
- package/dist/src/connectors/connection-recovery-service.js +41 -37
- package/dist/src/connectors/principal.d.ts +1 -1
- package/dist/src/connectors/principal.js +4 -3
- package/dist/src/connectors/types.d.ts +2 -2
- package/dist/src/discussions/action-tasks.js +5 -2
- package/dist/src/discussions/analyzer.js +2 -1
- package/dist/src/discussions/edits.js +4 -2
- package/dist/src/discussions/index.js +1 -1
- package/dist/src/discussions/organizer.js +3 -2
- package/dist/src/discussions/recording.js +5 -2
- package/dist/src/discussions/recordingJobs.js +2 -1
- package/dist/src/discussions/repository.js +2 -1
- package/dist/src/discussions/revisions.js +2 -1
- package/dist/src/discussions/sealer.js +1 -1
- package/dist/src/discussions/service.js +6 -3
- package/dist/src/discussions/types.js +4 -0
- package/dist/src/endpoint-tools/auth.js +2 -1
- package/dist/src/endpoint-tools/binding-service.d.ts +8 -8
- package/dist/src/endpoint-tools/binding-service.js +14 -14
- package/dist/src/endpoint-tools/invocation-service.js +2 -1
- package/dist/src/endpoint-tools/policy.js +2 -1
- package/dist/src/endpoint-tools/registry.js +2 -1
- package/dist/src/endpoint-tools/upload-service.js +2 -1
- package/dist/src/execution-environments/local-worktree-manager.d.ts +1 -1
- package/dist/src/execution-environments/local-worktree-manager.js +2 -2
- package/dist/src/execution-environments/session-environment-service.d.ts +3 -3
- package/dist/src/execution-environments/session-environment-service.js +10 -10
- package/dist/src/execution-environments/store.d.ts +2 -2
- package/dist/src/execution-environments/store.js +15 -14
- package/dist/src/execution-environments/subject.d.ts +1 -1
- package/dist/src/execution-environments/subject.js +2 -2
- package/dist/src/execution-environments/types.d.ts +2 -2
- package/dist/src/extensions/api.js +1 -1
- package/dist/src/extensions/install.js +1 -1
- package/dist/src/extensions/loader.d.ts +1 -1
- package/dist/src/extensions/types/core.d.ts +2 -2
- package/dist/src/extensions/types/hooks.d.ts +12 -12
- package/dist/src/extensions/types/tools.d.ts +3 -3
- package/dist/src/extensions/types/tui.d.ts +3 -3
- package/dist/src/files/file-service.d.ts +3 -3
- package/dist/src/files/file-service.js +3 -3
- package/dist/src/gateway/automation-agent-session.js +5 -5
- package/dist/src/gateway/chat-stream/mapper.d.ts +1 -1
- package/dist/src/gateway/chat-stream/mapper.js +4 -2
- package/dist/src/gateway/chat-stream/protocol.d.ts +1 -1
- package/dist/src/gateway/chat-stream/thinking-delta-coalescer.js +1 -1
- package/dist/src/gateway/clarify-runtime.d.ts +2 -2
- package/dist/src/gateway/clarify-runtime.js +2 -2
- package/dist/src/gateway/file-path-classifier.d.ts +2 -2
- package/dist/src/gateway/file-path-classifier.js +4 -4
- package/dist/src/gateway/file-reference-registry.d.ts +2 -2
- package/dist/src/gateway/file-reference-registry.js +1 -1
- package/dist/src/gateway/file-space-service.js +3 -3
- package/dist/src/gateway/gateway-workflow-host.types.d.ts +1 -1
- package/dist/src/gateway/heartbeat/check-store.js +2 -1
- package/dist/src/gateway/heartbeat/service.js +23 -9
- package/dist/src/gateway/hono/middleware/log-context.d.ts +1 -1
- package/dist/src/gateway/hono/middleware/log-context.js +3 -3
- package/dist/src/gateway/hono/routes/agent-stream.js +20 -20
- package/dist/src/gateway/hono/routes/browser-session.js +2 -2
- package/dist/src/gateway/hono/routes/browser.js +22 -20
- package/dist/src/gateway/hono/routes/chat-model-config.d.ts +1 -1
- package/dist/src/gateway/hono/routes/chat-model-config.js +6 -6
- package/dist/src/gateway/hono/routes/commands-skills.js +13 -13
- package/dist/src/gateway/hono/routes/connection-waits.js +5 -5
- package/dist/src/gateway/hono/routes/connectors.js +5 -5
- package/dist/src/gateway/hono/routes/context-sources.js +2 -1
- package/dist/src/gateway/hono/routes/device-pairing-approval.js +2 -0
- package/dist/src/gateway/hono/routes/devices.js +2 -0
- package/dist/src/gateway/hono/routes/discussions.js +2 -2
- package/dist/src/gateway/hono/routes/endpoint-tools.js +8 -7
- package/dist/src/gateway/hono/routes/execution-environments.js +11 -11
- package/dist/src/gateway/hono/routes/file-references.js +5 -5
- package/dist/src/gateway/hono/routes/home.js +1 -1
- package/dist/src/gateway/hono/routes/interaction-state.js +6 -6
- package/dist/src/gateway/hono/routes/logs.js +2 -2
- package/dist/src/gateway/hono/routes/media.js +3 -3
- package/dist/src/gateway/hono/routes/notes.js +11 -11
- package/dist/src/gateway/hono/routes/projects.js +26 -26
- package/dist/src/gateway/hono/routes/public-gateway.js +3 -3
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +10 -10
- package/dist/src/gateway/hono/routes/session-input-handler.js +20 -17
- package/dist/src/gateway/hono/routes/sessions.js +79 -50
- package/dist/src/gateway/hono/routes/shares.js +38 -38
- package/dist/src/gateway/hono/routes/side-chats.js +4 -2
- package/dist/src/gateway/hono/routes/site-shares.js +6 -6
- package/dist/src/gateway/hono/routes/tasks.js +18 -13
- package/dist/src/gateway/hono/routes/tui.js +2 -2
- package/dist/src/gateway/hono/routes/user-model.js +1 -1
- package/dist/src/gateway/hono/routes/voice.js +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +9 -9
- package/dist/src/gateway/media-access.d.ts +1 -1
- package/dist/src/gateway/media-access.js +3 -3
- package/dist/src/gateway/resolve-webchat-session-key.d.ts +5 -5
- package/dist/src/gateway/resolve-webchat-session-key.js +5 -5
- package/dist/src/gateway/service/agent-runner.d.ts +15 -15
- package/dist/src/gateway/service/agent-runner.js +63 -62
- package/dist/src/gateway/service/marketplace-service.d.ts +3 -3
- package/dist/src/gateway/service/marketplace-service.js +6 -6
- package/dist/src/gateway/service/run-gateway-agent.js +51 -49
- package/dist/src/gateway/service/session-input-coordinator.d.ts +11 -11
- package/dist/src/gateway/service/session-input-coordinator.js +76 -74
- package/dist/src/gateway/service/sessions-api.d.ts +19 -20
- package/dist/src/gateway/service/sessions-api.js +30 -38
- package/dist/src/gateway/service/task-conversation-query-service.d.ts +3 -2
- package/dist/src/gateway/service/task-conversation-query-service.js +3 -3
- package/dist/src/gateway/service.d.ts +4 -4
- package/dist/src/gateway/service.js +75 -69
- package/dist/src/gateway/session-context-summary.d.ts +1 -1
- package/dist/src/gateway/session-context-summary.js +13 -11
- package/dist/src/gateway/session-reset-service.d.ts +4 -4
- package/dist/src/gateway/session-reset-service.js +12 -12
- package/dist/src/gateway/side-chat/context-snapshot.d.ts +2 -2
- package/dist/src/gateway/side-chat/context-snapshot.js +2 -2
- package/dist/src/gateway/side-chat/manager.d.ts +4 -4
- package/dist/src/gateway/side-chat/manager.js +13 -13
- package/dist/src/gateway/side-chat/run-service.js +8 -8
- package/dist/src/gateway/side-chat/types.d.ts +4 -4
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/heartbeat/wake.d.ts +1 -1
- package/dist/src/history/ctx/exporter.js +11 -11
- package/dist/src/history/ctx/format.d.ts +1 -1
- package/dist/src/history/ctx/format.js +7 -7
- package/dist/src/imports/contextImport.js +2 -1
- package/dist/src/imports/productImport.js +2 -1
- package/dist/src/infra/node-sqlite.js +9 -3
- package/dist/src/infra/process-diagnostics.js +9 -5
- package/dist/src/infra/sqlite-errors.js +25 -20
- package/dist/src/infra/unhandled-rejections.js +15 -7
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/infra/warning-filter.js +9 -3
- package/dist/src/knowledge-memory/domain.d.ts +2 -2
- package/dist/src/knowledge-memory/repository.d.ts +1 -1
- package/dist/src/knowledge-memory/repository.js +10 -8
- package/dist/src/mcp/channel-bridge.d.ts +3 -3
- package/dist/src/mcp/channel-bridge.js +7 -7
- package/dist/src/mcp/channel-shared.d.ts +4 -4
- package/dist/src/mcp/channel-shared.js +3 -3
- package/dist/src/mcp/channel-tools.js +19 -19
- package/dist/src/media/session-references.js +2 -2
- package/dist/src/memory-maintenance/service.js +2 -1
- package/dist/src/migrations/conversation-routing-config.d.ts +2 -0
- package/dist/src/migrations/conversation-routing-config.js +42 -0
- package/dist/src/migrations/runner.js +6 -5
- package/dist/src/notes/service.d.ts +2 -2
- package/dist/src/notes/service.js +6 -6
- package/dist/src/notes/store.js +2 -1
- package/dist/src/notes/types.d.ts +3 -3
- package/dist/src/notifications/device-store.js +2 -1
- package/dist/src/notifications/planner.js +5 -3
- package/dist/src/notifications/proactive-channel.js +4 -1
- package/dist/src/notifications/proactive-policy.js +2 -1
- package/dist/src/notifications/service.d.ts +4 -4
- package/dist/src/notifications/service.js +4 -1
- package/dist/src/notifications/store.js +4 -1
- package/dist/src/notifications/web-push.js +4 -1
- package/dist/src/platform/contracts.d.ts +3 -3
- package/dist/src/proactive/actions/service.js +2 -1
- package/dist/src/proactive/events/product-event-bridge.js +1 -1
- package/dist/src/proactive/events/repository.js +2 -1
- package/dist/src/proactive/execution/authorization.js +2 -1
- package/dist/src/proactive/execution/context.js +2 -1
- package/dist/src/proactive/execution/insight.js +2 -0
- package/dist/src/proactive/execution/repository.js +2 -1
- package/dist/src/proactive/execution/worker.js +3 -2
- package/dist/src/proactive/experience.d.ts +1 -1
- package/dist/src/proactive/experience.js +4 -3
- package/dist/src/proactive/follow-ups.d.ts +7 -7
- package/dist/src/proactive/follow-ups.js +5 -4
- package/dist/src/proactive/inbox/cards.js +5 -2
- package/dist/src/proactive/inbox/delivery.js +2 -1
- package/dist/src/proactive/inbox/digest.js +2 -1
- package/dist/src/proactive/inbox/lifecycle.js +2 -1
- package/dist/src/proactive/inbox/repository.js +2 -1
- package/dist/src/proactive/inbox/service.js +2 -1
- package/dist/src/proactive/mail-thread.js +2 -1
- package/dist/src/proactive/maintenance.js +2 -1
- package/dist/src/proactive/metrics.js +2 -1
- package/dist/src/proactive/policy/presence.js +2 -1
- package/dist/src/proactive/policy/service.js +4 -1
- package/dist/src/proactive/routing/batch-repository.js +2 -1
- package/dist/src/proactive/scenarios/control.js +4 -1
- package/dist/src/proactive/scenarios/repository.js +2 -1
- package/dist/src/proactive/service.js +2 -1
- package/dist/src/proactive/source-freshness.js +2 -1
- package/dist/src/proactive/status.js +2 -1
- package/dist/src/proactive/temporal/schedule.js +2 -1
- package/dist/src/projects/automation-bind.js +2 -1
- package/dist/src/projects/index.js +2 -2
- package/dist/src/projects/knowledge-bind.js +2 -1
- package/dist/src/projects/project-agent.js +4 -1
- package/dist/src/projects/project-service.d.ts +4 -4
- package/dist/src/projects/project-service.js +11 -10
- package/dist/src/projects/project-store.js +11 -9
- package/dist/src/projects/session-bind.d.ts +5 -5
- package/dist/src/projects/session-bind.js +18 -17
- package/dist/src/projects/types.d.ts +1 -1
- package/dist/src/projects/workflow-bind.js +2 -1
- package/dist/src/projects/workspace.d.ts +3 -3
- package/dist/src/projects/workspace.js +6 -6
- package/dist/src/providers/model-reference-auditor.js +1 -1
- package/dist/src/providers/prompt-cache-lifecycle.d.ts +2 -2
- package/dist/src/providers/prompt-cache-lifecycle.js +6 -6
- package/dist/src/realtime/broker.js +3 -3
- package/dist/src/realtime/runtime.js +1 -1
- package/dist/src/retrieval/queryProfile.d.ts +1 -1
- package/dist/src/routing/agent-session-key.d.ts +12 -41
- package/dist/src/routing/agent-session-key.js +39 -120
- package/dist/src/routing/conversation-route.d.ts +28 -0
- package/dist/src/routing/conversation-route.js +50 -0
- package/dist/src/routing/index.d.ts +2 -2
- package/dist/src/routing/index.js +5 -5
- package/dist/src/routing/resolve-route.d.ts +4 -9
- package/dist/src/routing/resolve-route.js +20 -60
- package/dist/src/routing/resolve-tui-session-key.d.ts +5 -13
- package/dist/src/routing/resolve-tui-session-key.js +11 -36
- package/dist/src/routing/session-key.d.ts +6 -39
- package/dist/src/routing/session-key.js +13 -161
- package/dist/src/session/client-history.js +2 -0
- package/dist/src/session/compaction-types.js +18 -13
- package/dist/src/session/config-store.d.ts +8 -8
- package/dist/src/session/config-store.js +19 -19
- package/dist/src/session/index.d.ts +2 -2
- package/dist/src/session/index.js +9 -5
- package/dist/src/session/init-session-turn.d.ts +7 -7
- package/dist/src/session/init-session-turn.js +18 -18
- package/dist/src/session/manager.d.ts +7 -7
- package/dist/src/session/manager.js +6 -6
- package/dist/src/session/model-config-lock.d.ts +1 -1
- package/dist/src/session/model-config-lock.js +4 -4
- package/dist/src/session/resolve-session.d.ts +10 -10
- package/dist/src/session/resolve-session.js +20 -20
- package/dist/src/session/session-context-for-llm.js +17 -10
- package/dist/src/session/session-title.d.ts +5 -5
- package/dist/src/session/session-title.js +28 -28
- package/dist/src/session/session-workspace.d.ts +1 -1
- package/dist/src/session/session-workspace.js +3 -3
- package/dist/src/session/store.d.ts +14 -14
- package/dist/src/session/store.js +70 -50
- package/dist/src/session/stored-rows-to-file-entries.d.ts +1 -1
- package/dist/src/session/stored-rows-to-file-entries.js +5 -3
- package/dist/src/session/thinking-resolve.d.ts +2 -2
- package/dist/src/session/thinking-resolve.js +4 -4
- package/dist/src/session/transcript-events.d.ts +1 -1
- package/dist/src/session/transcript-events.js +3 -3
- package/dist/src/session/transcript-outline.js +2 -1
- package/dist/src/session/turn-outcome-projector.js +2 -0
- package/dist/src/session/types.d.ts +5 -4
- package/dist/src/session/types.js +13 -9
- package/dist/src/session/user-message-display.js +2 -0
- package/dist/src/session/user-round-delete.js +2 -1
- package/dist/src/session/voice-transcript.js +8 -3
- package/dist/src/share/hosted-session-share.d.ts +6 -6
- package/dist/src/share/hosted-session-share.js +13 -11
- package/dist/src/share/hosted-static-site-publish.d.ts +1 -1
- package/dist/src/share/hosted-static-site-publish.js +1 -1
- package/dist/src/share/session-share-service.d.ts +9 -9
- package/dist/src/share/session-share-service.js +19 -19
- package/dist/src/share/share-store.d.ts +2 -2
- package/dist/src/share/share-store.js +9 -7
- package/dist/src/share/share-types.d.ts +2 -2
- package/dist/src/share/site-share-router.d.ts +2 -2
- package/dist/src/share/site-share-store.js +4 -2
- package/dist/src/share/site-share-types.d.ts +1 -1
- package/dist/src/storage/sqlite/activity-repository.js +2 -1
- package/dist/src/storage/sqlite/browser-session-repository.js +2 -1
- package/dist/src/storage/sqlite/browser-tab-binding-repository.d.ts +2 -2
- package/dist/src/storage/sqlite/browser-tab-binding-repository.js +10 -9
- package/dist/src/storage/sqlite/clarification-wait-repository.d.ts +7 -7
- package/dist/src/storage/sqlite/clarification-wait-repository.js +58 -53
- package/dist/src/storage/sqlite/collaboration-rule-repository.js +2 -1
- package/dist/src/storage/sqlite/composer-input-history-repository.js +2 -1
- package/dist/src/storage/sqlite/config-repository.d.ts +6 -6
- package/dist/src/storage/sqlite/config-repository.js +29 -25
- package/dist/src/storage/sqlite/connection-wait-repository.d.ts +11 -11
- package/dist/src/storage/sqlite/connection-wait-repository.js +61 -51
- package/dist/src/storage/sqlite/connection.js +28 -18
- package/dist/src/storage/sqlite/connector-account-repository.js +2 -1
- package/dist/src/storage/sqlite/connector-learning-repository.js +2 -1
- package/dist/src/storage/sqlite/connector-repository.d.ts +1 -1
- package/dist/src/storage/sqlite/connector-repository.js +11 -10
- package/dist/src/storage/sqlite/connector-sync-policy-repository.js +2 -1
- package/dist/src/storage/sqlite/context-evidence-repository.d.ts +1 -1
- package/dist/src/storage/sqlite/context-evidence-repository.js +7 -6
- package/dist/src/storage/sqlite/context-extraction-repository.js +2 -1
- package/dist/src/storage/sqlite/context-relation-repository.js +2 -1
- package/dist/src/storage/sqlite/conversation-repository.d.ts +12 -0
- package/dist/src/storage/sqlite/conversation-repository.js +76 -0
- package/dist/src/storage/sqlite/device-access-repository.js +4 -1
- package/dist/src/storage/sqlite/device-pairing-approval.js +4 -1
- package/dist/src/storage/sqlite/device-pairing-repository.js +2 -1
- package/dist/src/storage/sqlite/durable-queue.js +4 -2
- package/dist/src/storage/sqlite/durable-state.js +4 -2
- package/dist/src/storage/sqlite/endpoint-principal-repository.js +2 -1
- package/dist/src/storage/sqlite/endpoint-session-binding-repository.d.ts +3 -3
- package/dist/src/storage/sqlite/endpoint-session-binding-repository.js +12 -11
- package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.js +2 -1
- package/dist/src/storage/sqlite/fts.js +39 -34
- package/dist/src/storage/sqlite/gateway-identity-repository.js +2 -1
- package/dist/src/storage/sqlite/home-attention-repository.js +2 -1
- package/dist/src/storage/sqlite/import-repository.js +2 -1
- package/dist/src/storage/sqlite/import-selection-repository.js +2 -1
- package/dist/src/storage/sqlite/index.d.ts +1 -1
- package/dist/src/storage/sqlite/index.js +25 -11
- package/dist/src/storage/sqlite/interaction-state-repository.d.ts +4 -4
- package/dist/src/storage/sqlite/interaction-state-repository.js +12 -11
- package/dist/src/storage/sqlite/knowledge-repository.js +2 -1
- package/dist/src/storage/sqlite/migrations/178_conversation_uuid.sql +2 -0
- package/dist/src/storage/sqlite/migrations/conversation-backup.d.ts +3 -0
- package/dist/src/storage/sqlite/migrations/conversation-backup.js +88 -0
- package/dist/src/storage/sqlite/migrations/conversation-backup.ts +66 -0
- package/dist/src/storage/sqlite/migrations/conversation-key-decoder.d.ts +8 -0
- package/dist/src/storage/sqlite/migrations/conversation-key-decoder.js +87 -0
- package/dist/src/storage/sqlite/migrations/conversation-key-decoder.ts +50 -0
- package/dist/src/storage/sqlite/migrations/conversation-uuid.d.ts +8 -0
- package/dist/src/storage/sqlite/migrations/conversation-uuid.js +366 -0
- package/dist/src/storage/sqlite/migrations/conversation-uuid.ts +324 -0
- package/dist/src/storage/sqlite/migrations/conversation-windows-owners.d.ts +1 -0
- package/dist/src/storage/sqlite/migrations/conversation-windows-owners.js +92 -0
- package/dist/src/storage/sqlite/migrations/conversation-windows-owners.ts +71 -0
- package/dist/src/storage/sqlite/migrations/discover.js +7 -3
- package/dist/src/storage/sqlite/migrations/errors.js +28 -23
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +43 -14
- package/dist/src/storage/sqlite/migrations/runner.ts +13 -3
- package/dist/src/storage/sqlite/migrations/types.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/types.ts +1 -1
- package/dist/src/storage/sqlite/note-agent-context-repository.js +2 -1
- package/dist/src/storage/sqlite/notes-repository.js +4 -2
- package/dist/src/storage/sqlite/paths.js +6 -2
- package/dist/src/storage/sqlite/relationship-settings-repository.js +2 -1
- package/dist/src/storage/sqlite/row-mappers.d.ts +10 -10
- package/dist/src/storage/sqlite/row-mappers.js +22 -15
- package/dist/src/storage/sqlite/schema-version.js +7 -2
- package/dist/src/storage/sqlite/schema.js +14 -6
- package/dist/src/storage/sqlite/session-identity-sql.js +12 -5
- package/dist/src/storage/sqlite/session-input-repository.d.ts +14 -14
- package/dist/src/storage/sqlite/session-input-repository.js +69 -61
- package/dist/src/storage/sqlite/session-instance-repository.d.ts +1 -1
- package/dist/src/storage/sqlite/session-instance-repository.js +6 -3
- package/dist/src/storage/sqlite/session-metadata.d.ts +2 -2
- package/dist/src/storage/sqlite/session-metadata.js +7 -3
- package/dist/src/storage/sqlite/session-repository.d.ts +15 -15
- package/dist/src/storage/sqlite/session-repository.js +126 -102
- package/dist/src/storage/sqlite/session-task-plan-repository.d.ts +3 -3
- package/dist/src/storage/sqlite/session-task-plan-repository.js +21 -19
- package/dist/src/storage/sqlite/session-turn-replace-repository.d.ts +2 -2
- package/dist/src/storage/sqlite/session-turn-replace-repository.js +26 -22
- package/dist/src/storage/sqlite/transaction.js +12 -6
- package/dist/src/storage/sqlite/transcript-repository.d.ts +14 -14
- package/dist/src/storage/sqlite/transcript-repository.js +107 -102
- package/dist/src/storage/sqlite/user-people-repository.js +2 -1
- package/dist/src/storage/sqlite/user-trust-repository.js +2 -1
- package/dist/src/support/collect-support-report.js +7 -7
- package/dist/src/support/types.d.ts +2 -2
- package/dist/src/support/types.js +1 -1
- package/dist/src/tasks/execution-context.d.ts +2 -2
- package/dist/src/tasks/execution-context.js +3 -3
- package/dist/src/tasks/home-query-service.d.ts +2 -2
- package/dist/src/tasks/home-query-service.js +6 -6
- package/dist/src/tasks/index.js +6 -2
- package/dist/src/tasks/project-monitoring-service.js +2 -1
- package/dist/src/tasks/project-operating-view-service.js +2 -1
- package/dist/src/tasks/task-application-service.js +9 -4
- package/dist/src/tasks/task-change-events.js +7 -2
- package/dist/src/tasks/task-context-assembler.d.ts +2 -2
- package/dist/src/tasks/task-context-assembler.js +12 -9
- package/dist/src/tasks/task-context-repository.d.ts +1 -1
- package/dist/src/tasks/task-context-repository.js +4 -3
- package/dist/src/tasks/task-conversation-repository.d.ts +7 -7
- package/dist/src/tasks/task-conversation-repository.js +27 -26
- package/dist/src/tasks/task-deletion-service.js +2 -1
- package/dist/src/tasks/task-dependency-service.js +2 -1
- package/dist/src/tasks/task-handoff-service.d.ts +2 -2
- package/dist/src/tasks/task-handoff-service.js +16 -15
- package/dist/src/tasks/task-outbox-dispatcher.js +2 -1
- package/dist/src/tasks/task-read-model-projector.js +4 -2
- package/dist/src/tasks/task-repository.js +2 -1
- package/dist/src/tasks/task-run-coordinator.js +6 -5
- package/dist/src/tasks/task-run-dispatcher.d.ts +1 -1
- package/dist/src/tasks/task-run-dispatcher.js +4 -3
- package/dist/src/tasks/task-run-repository.d.ts +2 -2
- package/dist/src/tasks/task-run-repository.js +219 -212
- package/dist/src/tasks/task-signal-service.js +6 -2
- package/dist/src/tasks/task-workflow-coordinator.js +2 -1
- package/dist/src/tui/backends/embedded-backend.d.ts +33 -32
- package/dist/src/tui/backends/embedded-backend.js +95 -83
- package/dist/src/tui/backends/gateway-realtime-backend.d.ts +34 -33
- package/dist/src/tui/backends/gateway-realtime-backend.js +95 -78
- package/dist/src/tui/components/branch-summary.js +3 -3
- package/dist/src/tui/components/session-selector.d.ts +5 -5
- package/dist/src/tui/components/session-selector.js +7 -7
- package/dist/src/tui/components/tui-bottom-bar.js +1 -1
- package/dist/src/tui/components/tui-header.d.ts +1 -1
- package/dist/src/tui/components/tui-header.js +2 -2
- package/dist/src/tui/extension-host/autocomplete.d.ts +2 -2
- package/dist/src/tui/extension-host/autocomplete.js +4 -4
- package/dist/src/tui/extension-host/host.d.ts +1 -1
- package/dist/src/tui/extension-host/runtime-context.d.ts +1 -1
- package/dist/src/tui/extension-host/runtime-context.js +2 -2
- package/dist/src/tui/extension-host/runtime.d.ts +1 -1
- package/dist/src/tui/extension-host/runtime.js +6 -6
- package/dist/src/tui/tui-backend.d.ts +43 -39
- package/dist/src/tui/tui-command-formatters.d.ts +2 -2
- package/dist/src/tui/tui-command-formatters.js +10 -18
- package/dist/src/tui/tui-commands.d.ts +3 -3
- package/dist/src/tui/tui-commands.js +31 -33
- package/dist/src/tui/tui-empty-session-cleanup.d.ts +2 -3
- package/dist/src/tui/tui-empty-session-cleanup.js +7 -15
- package/dist/src/tui/tui-file-autocomplete.d.ts +1 -1
- package/dist/src/tui/tui-file-autocomplete.js +2 -2
- package/dist/src/tui/tui-new-session-preferences.js +2 -0
- package/dist/src/tui/tui-picker-overlay.d.ts +1 -1
- package/dist/src/tui/tui-picker-overlay.js +41 -53
- package/dist/src/tui/tui-picker-services.d.ts +3 -3
- package/dist/src/tui/tui-session-actions.d.ts +1 -1
- package/dist/src/tui/tui-session-actions.js +8 -17
- package/dist/src/tui/tui-session-format.js +4 -1
- package/dist/src/tui/tui-session-snapshot.d.ts +2 -2
- package/dist/src/tui/tui-session-snapshot.js +4 -4
- package/dist/src/tui/tui-settings.js +2 -0
- package/dist/src/tui/tui-startup-resources.d.ts +1 -1
- package/dist/src/tui/tui-startup-resources.js +3 -3
- package/dist/src/tui/tui-startup-text.js +1 -1
- package/dist/src/tui/tui-transcript-tree-picker.d.ts +1 -1
- package/dist/src/tui/tui-transcript-tree-picker.js +2 -2
- package/dist/src/tui/tui-types.d.ts +4 -2
- package/dist/src/tui/tui-types.js +2 -2
- package/dist/src/tui/tui.js +114 -112
- package/dist/src/user-context/access-policy.d.ts +1 -1
- package/dist/src/user-context/access-policy.js +6 -5
- package/dist/src/user-context/changes.js +9 -4
- package/dist/src/user-context/domain.d.ts +1 -1
- package/dist/src/user-context/relationship-continuity.d.ts +1 -1
- package/dist/src/user-context/relationship-continuity.js +1 -1
- package/dist/src/user-context/sources/repository.js +4 -2
- package/dist/src/user-model/capture/executor.d.ts +1 -1
- package/dist/src/user-model/capture/executor.js +3 -3
- package/dist/src/user-model/goals.js +2 -1
- package/dist/src/user-model/repository.js +2 -1
- package/dist/src/utils/global-singleton.js +4 -1
- package/dist/src/utils/logger/context.d.ts +1 -1
- package/dist/src/utils/logger/context.js +2 -2
- package/dist/src/utils/logger/log-store.js +2 -2
- package/dist/src/utils/logger/pino-record.js +6 -6
- package/dist/src/utils/logger/types.d.ts +6 -6
- package/dist/src/voice/realtime/agentBroker.d.ts +6 -6
- package/dist/src/voice/realtime/agentBroker.js +6 -6
- package/dist/src/voice/realtime/agentEngine.js +6 -6
- package/dist/src/voice/realtime/memory-context.d.ts +2 -2
- package/dist/src/voice/realtime/memory-context.js +15 -15
- package/dist/src/voice/realtime/persona-context.d.ts +1 -1
- package/dist/src/voice/realtime/persona-context.js +6 -6
- package/dist/src/voice/realtime/runtime.d.ts +1 -1
- package/dist/src/voice/realtime/runtime.js +14 -13
- package/dist/src/voice/realtime/runtime.types.d.ts +6 -6
- package/dist/src/work-discovery/investigation-repository.js +4 -2
- package/dist/src/work-discovery/probe.js +1 -1
- package/dist/src/work-discovery/repository.js +7 -5
- package/dist/src/work-discovery/service.js +33 -29
- package/dist/src/work-discovery/types.d.ts +1 -1
- package/dist/src/workflows/context/workflow-context-snapshot-repository.js +2 -1
- package/dist/src/workflows/domain/event.d.ts +1 -1
- package/dist/src/workflows/domain/run.d.ts +5 -5
- package/dist/src/workflows/engine/projector.js +1 -1
- package/dist/src/workflows/engine/workflow-engine.d.ts +2 -2
- package/dist/src/workflows/engine/workflow-engine.js +15 -18
- package/dist/src/workflows/index.js +3 -3
- package/dist/src/workflows/project-presets/project-workflow-preset-repository.js +2 -1
- package/dist/src/workflows/service/run-view-to-snapshot.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.d.ts +2 -2
- package/dist/src/workflows/service/workflow-run-service.js +53 -42
- package/dist/src/workflows/service/workflow-run-service.types.d.ts +2 -2
- package/dist/src/workflows/service/workflow-session-bridge.d.ts +2 -2
- package/dist/src/workflows/service/workflow-session-bridge.js +31 -31
- package/dist/src/workflows/service/workflow-session-key.d.ts +1 -1
- package/dist/src/workflows/service/workflow-session-key.js +4 -4
- package/dist/src/workflows/service/workflow-writeback-service.js +2 -1
- package/dist/src/workflows/store/event-store.js +4 -2
- package/dist/src/workflows/store/run-index-store.js +9 -8
- package/package.json +4 -4
- package/dist/gateway/static/root/assets/api-COG_Tzpv.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-6qxxKFsK.js +0 -1
- package/dist/gateway/static/root/assets/button-BA45yciM.js +0 -1
- package/dist/gateway/static/root/assets/capabilities-settings-panel-DM1Bcf1x.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-Bq36CUxL.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-DtPNvznL.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-C75kCOqe.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BCF732TU.js +0 -1
- package/dist/gateway/static/root/assets/index-ChIrvv3t.js +0 -74
- package/dist/gateway/static/root/assets/index-R1VNlHjj.css +0 -2
- package/dist/gateway/static/root/assets/locale-store-DlOv7896.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-DHZ4BEkG.js +0 -2
- package/dist/gateway/static/root/assets/messages-Ls1Aaiqd.js +0 -3
- package/dist/gateway/static/root/assets/notes-page-DfZ8QWyv.js +0 -8
- package/dist/gateway/static/root/assets/page-tabs-BG39KidE.js +0 -1
- package/dist/gateway/static/root/assets/popover-select-DGmMQt4t.js +0 -1
- package/dist/gateway/static/root/assets/proactive-page-D2U_xQaS.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-CzlGTW4F.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-mQsM-TsP.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-Cb56JcO1.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CV4-_EVA.js +0 -1
- package/dist/gateway/static/root/assets/settings-form-section-wcAdCkK8.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-layout-DYelDcMV.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-xlJh1ccG.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-wSXJRSxX.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-sQpwq5-c.js +0 -1
- package/dist/gateway/static/root/assets/tunnel-api-Boajol0M.js +0 -1
- package/dist/src/routing/session-key-utils.d.ts +0 -23
- package/dist/src/routing/session-key-utils.js +0 -85
- package/dist/src/session/session-id.d.ts +0 -3
- package/dist/src/session/session-id.js +0 -10
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{d as i,h as a,p as o,u as s}from"./chunk-KS7C4IRE-Cq1tE_3b.js";import{t as c}from"./popover-select-DGmMQt4t.js";import{d as l}from"./markdown-view-6oYdBahT.js";import{t as u}from"./loader-circle-CifKLtgG.js";import{t as d}from"./plus-Q2yW6OE7.js";import{t as f}from"./x-B_N4OPjy.js";import{t as p}from"./cn-JdwAhgNB.js";import{c as m,f as h,n as g}from"./locale-store-DlOv7896.js";import{t as _}from"./messages-Ls1Aaiqd.js";import{i as v}from"./vendor-swr-BIWyz7Rc.js";import{t as y}from"./skeleton-BwbyijEw.js";import{$t as b,An as ee,Bu as x,Ca as S,Cc as C,Dn as te,En as w,Fn as T,Fu as E,Ga as D,Gn as O,Hc as k,Il as ne,Jt as A,Lu as j,Nn as M,On as re,Ou as ie,Pu as ae,Qt as N,Ru as oe,Sc as se,Tn as ce,Ul as le,Vn as ue,Wn as de,Xi as fe,Xt as pe,Yl as me,Yt as P,Zc as F,Zs as he,Zt as ge,dc as _e,en as ve,er as ye,ir as be,jo as xe,mo as Se,oc as Ce,qc as we,qs as I,tr as L,wl as Te,xu as Ee}from"./index-ChIrvv3t.js";import{i as De,t as Oe}from"./note-detail-panel-BcWq3ddw.js";var R=n(),z=e(t(),1),B=r();function V({projectId:e}){let t=g(e=>e.language)===`zh`,n=i(),r=(0,z.useRef)(null),a=(0,z.useRef)(null),[o,s]=(0,z.useState)(null),[c,l]=(0,z.useState)(null),[u,d]=(0,z.useState)(null);async function f(){let t=a.current;if(!(!t||o!==null)){s(0),l(null);try{let r=await ve();if(r.consentAcknowledgedAt==null){d(r.consentPolicyVersion);return}let i=await A(t.file,t.requestId),o=await b({clientRequestId:t.requestId,contextProjectId:e,source:`web`,consentPolicyVersion:r.consentPolicyVersion});t.discussionId=o.discussion.id,await ge({...i,serverDiscussionId:o.discussion.id,projectId:e}),o.discussion.audioAttachmentId||await P(i,o.discussion.id,s),await pe(t.requestId),a.current=null,n(`/notes/${encodeURIComponent(o.note.id)}`)}catch(e){l(e instanceof Error?e.message:String(e))}finally{s(null)}}}return(0,B.jsxs)(`div`,{className:`inline-flex flex-wrap items-center gap-2 text-xs`,children:[(0,B.jsx)(`input`,{ref:r,hidden:!0,type:`file`,accept:`audio/*,.m4a,.wav,.mp3,.webm,.ogg`,onChange:e=>{let n=e.target.files?.[0];if(e.target.value=``,n){if(!n.size||n.size>1073741824){l(t?`音频须为 1 字节至 1 GiB`:`Audio must be between 1 byte and 1 GiB`);return}a.current={file:n,requestId:crypto.randomUUID()},f()}}}),(0,B.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 rounded-md p-2 hover:bg-surface-hover`,disabled:o!==null,onClick:()=>c&&a.current?void f():r.current?.click(),children:[(0,B.jsx)(I,{className:`size-3.5`}),o===null?c&&a.current?t?`重试导入`:`Retry import`:t?`导入录音`:`Import recording`:`${o}%`]}),u===null?null:(0,B.jsxs)(`span`,{children:[t?`请确认你有权上传此录音,并允许配置的语音服务处理。`:`Confirm permission to upload this recording and process it with your configured speech service.`,(0,B.jsx)(`button`,{type:`button`,className:`p-2 text-accent`,onClick:()=>void N(u).then(()=>(d(null),f())).catch(e=>l(String(e))),children:t?`确认导入`:`Confirm import`})]}),c?(0,B.jsx)(`span`,{role:`alert`,className:`text-danger`,children:c}):null]})}async function H(e){e.note??=await M({title:e.title,markdown:e.markdown,projectId:e.projectId,channel:`web`},e.requestId);let t=e.note.id;for(let n=e.attachments.length;n<e.files.length;n++)e.attachments.push(await L(t,e.files[n],`${e.requestId}:file:${n}`));if(e.attachments.length){let n=e.attachments.map(e=>`[${e.fileName.replace(/[\\[\]]/g,`\\$&`).replace(/[\r\n]/g,` `)}](${be(t,e.id)})`);e.note=await ye(t,{markdown:`${e.markdown}\n\n## ${e.materialHeading}\n\n${n.join(`
|
|
2
|
-
|
|
3
|
-
`)}`})}return{noteId:t,sessionKey:(await O(t,{projectId:e.projectId})).sessionKey}}function U(e,t,n){let r=new URLSearchParams({draft:n.replace(`{{id}}`,t),autoSend:`1`});return`/chat/${encodeURIComponent(e)}?${r}`}var W={meeting:ae,requirements:le,research:C,weekly:Ee};function ke({projects:e,projectId:t,onProjectChange:n,onCreated:r,labels:a,projectsLoading:o,projectsError:s}){let l=a.home,d=i(),[m,h]=(0,z.useState)(``),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)([]),[b,ee]=(0,z.useState)(!1),[x,S]=(0,z.useState)(null),[C,te]=(0,z.useState)(``),w=(0,z.useRef)(null),T=(0,z.useRef)(!1),O=(0,z.useRef)(null),A=(0,z.useRef)(null),j=b||!!w.current,M=g?l.templateOptions[g]:null,re=!!(m.trim()||v.length);async function ie(){if(!(T.current||!re&&!w.current)){T.current=!0,ee(!0),S(null),w.current??={requestId:crypto.randomUUID(),title:m.trim().split(`
|
|
4
|
-
`)[0]?.slice(0,80)||M?.label||a.titlePlaceholder,markdown:`## ${l.requestHeading}\n\n${M?`${M.prompt}\n`:``}${m.trim()}`,projectId:t||void 0,files:[...v],attachments:[],materialHeading:l.materialsHeading};try{let e=await H(w.current);r(),d(U(e.sessionKey,e.noteId,l.agentPrompt))}catch(e){w.current.note&&r(),S(e instanceof Error?e.message:a.quickCaptureFailedHint)}finally{T.current=!1,ee(!1)}}}function ae(){w.current=null,S(null),h(``),y([]),_(null),A.current?.focus()}return(0,B.jsxs)(`section`,{"aria-label":l.askLabel,children:[(0,B.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),ie()},className:`relative rounded-xl border border-edge bg-surface-panel p-4 focus-within:border-accent/60 sm:p-5`,children:[(0,B.jsxs)(`fieldset`,{disabled:j,className:`min-w-0`,children:[(0,B.jsxs)(`label`,{htmlFor:`notes-home-prompt`,className:`flex items-center gap-2 text-xs font-medium text-accent-fg`,children:[(0,B.jsx)(_e,{className:`size-4`,"aria-hidden":!0}),l.askLabel]}),M?(0,B.jsxs)(`div`,{className:`mt-3 flex items-start gap-2 rounded-lg bg-accent-soft px-3 py-2 text-xs leading-5 text-accent-fg`,children:[(0,B.jsxs)(`p`,{className:`min-w-0 flex-1`,children:[(0,B.jsxs)(`span`,{className:`font-medium`,children:[M.label,` · `]}),M.prompt.split(`
|
|
5
|
-
|
|
6
|
-
`)[0]]}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>_(null),"aria-label":a.searchClear,className:`shrink-0 rounded p-1 hover:bg-surface-hover`,children:(0,B.jsx)(f,{className:`size-3.5`})})]}):null,(0,B.jsx)(`textarea`,{ref:A,id:`notes-home-prompt`,value:m,onChange:e=>h(e.target.value),placeholder:M?M.prompt.split(`
|
|
7
|
-
|
|
8
|
-
`).at(-1):l.askPlaceholder,rows:2,onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&!e.nativeEvent.isComposing&&(e.preventDefault(),ie())},className:`mt-2 min-h-16 w-full resize-y bg-transparent py-2 text-base leading-6 text-fg outline-none placeholder:text-fg-muted sm:text-sm`}),v.length?(0,B.jsx)(`ul`,{className:`mb-3 flex flex-wrap gap-2`,children:v.map((e,t)=>(0,B.jsxs)(`li`,{className:`flex max-w-full items-center gap-2 rounded-md border border-edge px-2 py-1 text-xs text-fg-muted`,children:[(0,B.jsx)(k,{className:`size-3 shrink-0`,"aria-hidden":!0}),(0,B.jsx)(`span`,{className:`truncate`,children:e.name}),(0,B.jsx)(`button`,{type:`button`,"aria-label":`${l.removeMaterial}: ${e.name}`,onClick:()=>y(e=>e.filter((e,n)=>n!==t)),className:`rounded p-1 hover:bg-surface-hover`,children:(0,B.jsx)(f,{className:`size-3`})})]},`${e.name}-${t}`))}):null,(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 sm:pr-40`,children:[(0,B.jsx)(`div`,{className:`w-44 max-w-full`,children:(0,B.jsx)(c,{value:t,options:e.filter(e=>e.name.toLowerCase().includes(C.toLowerCase())).map(e=>({value:e.id,label:e.name})),selectedLabel:t?e.find(e=>e.id===t)?.name:l.unassigned,placeholder:l.unassigned,emptyLabel:l.unassigned,ariaLabel:l.assignProject,triggerIcon:(0,B.jsx)(ne,{className:`size-4 shrink-0`,"aria-hidden":!0}),triggerClassName:`h-8 border-transparent bg-transparent px-2 text-xs text-fg-muted hover:bg-surface-hover`,onChange:n,disabled:j,loading:o,statusMessage:s?l.projectsLoadFailed:void 0,searchPlaceholder:l.projectSearch,searchValue:C,onSearchChange:te})}),(0,B.jsxs)(`button`,{type:`button`,onClick:()=>O.current?.click(),className:`inline-flex h-8 items-center gap-1.5 rounded-md px-2 text-xs text-fg-muted hover:bg-surface-hover`,children:[(0,B.jsx)(k,{className:`size-4`,"aria-hidden":!0}),l.addMaterials]}),(0,B.jsx)(`input`,{ref:O,type:`file`,multiple:!0,className:`hidden`,"aria-label":l.addMaterials,onChange:e=>{let t=Array.from(e.target.files??[]);y(e=>[...e,...t]),e.target.value=``}})]})]}),(0,B.jsx)(`div`,{className:`mt-2 flex justify-end sm:absolute sm:bottom-5 sm:right-5 sm:mt-0`,children:(0,B.jsxs)(`button`,{type:`submit`,disabled:b||!w.current&&!re,className:`inline-flex h-9 items-center gap-2 rounded-lg bg-accent px-4 text-sm font-medium text-white hover:bg-accent-hover focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50`,children:[b?(0,B.jsx)(u,{className:`size-4 animate-spin`,"aria-hidden":!0}):(0,B.jsx)(E,{className:`size-4`,"aria-hidden":!0}),b?l.creating:x?l.retry:l.agentCreate]})})]}),x?(0,B.jsxs)(`div`,{className:`mt-3 rounded-lg border border-danger/25 bg-danger-soft px-3 py-3 text-xs text-danger`,role:`alert`,children:[(0,B.jsx)(`p`,{children:x}),w.current?.note?(0,B.jsx)(`p`,{className:`mt-1`,children:l.partialFailure}):null,(0,B.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-3`,children:[w.current?.note?(0,B.jsx)(`button`,{type:`button`,onClick:()=>d(`/notes/${encodeURIComponent(w.current.note.id)}?edit=1`),className:`underline`,children:l.openSavedDraft}):null,(0,B.jsx)(`button`,{type:`button`,onClick:ae,className:`underline`,children:l.newRequest})]})]}):null,(0,B.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-x-1 gap-y-1 text-xs text-fg-muted`,children:[(0,B.jsx)(`span`,{className:`mr-1 py-2`,children:l.templates}),Object.keys(W).map(e=>{let t=W[e];return(0,B.jsxs)(`button`,{type:`button`,disabled:j,"aria-pressed":g===e,onClick:()=>{_(g===e?null:e),A.current?.focus()},className:p(`inline-flex items-center gap-1.5 rounded-md px-2 py-2 hover:bg-surface-hover disabled:opacity-50`,g===e&&`bg-accent-soft text-accent-fg`),children:[(0,B.jsx)(t,{className:`size-3.5`,"aria-hidden":!0}),l.templateOptions[e].label]},e)}),(0,B.jsx)(V,{}),(0,B.jsxs)(`button`,{type:`button`,disabled:b,onClick:()=>D(),className:`ml-auto inline-flex items-center gap-1.5 rounded-md px-2 py-2 hover:bg-surface-hover`,children:[(0,B.jsx)(F,{className:`size-3.5`,"aria-hidden":!0}),l.recordDiscussion]})]})]})}function Ae(e,t){let n=Number(e.get(`page`)??0),r=Number.isSafeInteger(n)&&n>=0?n:0,i=e.get(`view`);return{projectId:e.get(`projectId`)||void 0,unassigned:e.get(`unassigned`)===`true`||i===`unassigned`||void 0,pinned:i===`favorites`?!0:void 0,agentEdited:i===`agent`||void 0,status:i===`archived`?`archived`:void 0,search:t.trim()||void 0,sortBy:`updatedAt`,sortOrder:`desc`,limit:12,offset:r*12}}function je(e){let t=e.snippet?.trim()??``,n=e.title?.trim();return n&&t.startsWith(n)?t.slice(n.length).replace(/^[\s::·—-]+/,``):t}var G=`inline-flex min-h-9 items-center justify-center gap-2 rounded-lg px-3 text-sm text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:cursor-not-allowed disabled:opacity-50`;function K(){let e=g(e=>e.language),t=_(e).notes,n=t.home,r=m(e=>e.sessionKey),o=Se(e=>e.setPageHeader),l=Se(e=>e.clearPageHeader),f=i(),{pathname:b,search:C}=s(),[E,D]=a(),O=E.get(`projectId`)||``,k=E.get(`view`)||`all`,A=E.get(`unassigned`)===`true`||k===`unassigned`,N=E.get(`search`)||``,[pe]=S(N,250),[P,F]=(0,z.useState)(O),[ge,ve]=(0,z.useState)(``),[be,I]=(0,z.useState)(null),[L,Ee]=(0,z.useState)(!1),[Oe,R]=(0,z.useState)(new Set),[V,H]=(0,z.useState)(null),[U,W]=(0,z.useState)(null),K=(0,z.useRef)(new Set),q=(0,z.useRef)(null),J=(0,z.useRef)(!1),Me=(0,z.useRef)(null),Ne=Ae(E,pe),Y=(Ne.offset??0)/12,{data:Pe,error:Fe,isLoading:Ie,mutate:Le}=v(r?[`notes-home`,r,Ne]:null,()=>de(Ne)),{data:Re,error:ze,isLoading:X,mutate:Be}=v(r?[`notes-home-projects`,r]:null,ue),Z=Re?.items??[],Ve=Z.find(e=>e.id===O)?.name??n.projectNotes,He=Pe?.items??[],Q=Pe?.total??0,Ue=Ie||N!==pe,We=(0,z.useMemo)(()=>({justNow:t.justNow,minutesAgo:t.minutesAgo,today:t.today,yesterday:t.yesterday,daysAgo:t.daysAgo,locale:h(e)}),[e,t.justNow,t.minutesAgo,t.today,t.yesterday,t.daysAgo]),[Ge,Ke]=(0,z.useState)(()=>Date.now());(0,z.useEffect)(()=>{F(O)},[O]),(0,z.useEffect)(()=>{let e=window.setInterval(()=>Ke(Date.now()),6e4);return()=>window.clearInterval(e)},[]);let $=(0,z.useCallback)(()=>{Le().catch(()=>void 0),Be().catch(()=>void 0)},[Le,Be]);(0,z.useEffect)(()=>{let e=[`note-updated`,`note-created`,`note-deleted`,`project-updated`,`project-created`,`project-deleted`];return e.forEach(e=>window.addEventListener(e,$)),()=>e.forEach(e=>window.removeEventListener(e,$))},[$]);let qe=(0,z.useCallback)((e,t=!1)=>{let n=`${b}${C}`,r=new URLSearchParams({returnTo:n});t&&r.set(`edit`,`1`),f(`/notes/${encodeURIComponent(e)}?${r}`)},[b,C,f]),Je=(0,z.useCallback)(async()=>{if(!(J.current||!r)){J.current=!0,Ee(!0),I(null),q.current??={key:crypto.randomUUID(),projectId:P||void 0};try{let e=await M({markdown:``,kind:`thought`,projectId:q.current.projectId},q.current.key);q.current=null,$(),qe(e.id,!0)}catch(e){I(`${t.createBlankFailed}: ${e instanceof Error?e.message:t.createBlankFailedHint}`)}finally{J.current=!1,Ee(!1)}}},[P,t.createBlankFailed,t.createBlankFailedHint,qe,$,r]),Ye=(0,z.useCallback)(e=>{D(t=>{let n=new URLSearchParams(t);return e?n.set(`search`,e):n.delete(`search`),n.delete(`page`),n},{replace:!0})},[D]);function Xe(e,t=`all`){let n=new URLSearchParams;e&&n.set(`projectId`,e),t===`unassigned`?n.set(`unassigned`,`true`):t!==`all`&&n.set(`view`,t),F(e),D(n)}function Ze(e){D(t=>{let n=new URLSearchParams(t);return A&&n.set(`unassigned`,`true`),e===`all`?n.delete(`view`):n.set(`view`,e),n.delete(`page`),n})}async function Qe(e,n){if(!K.current.has(e)){K.current.add(e),R(new Set(K.current)),I(null);try{await ye(e,{pinned:n}),$()}catch(e){I(`${t.actionFailed}: ${e instanceof Error?e.message:t.quickCaptureFailedHint}`)}finally{K.current.delete(e),R(new Set(K.current))}}}async function $e(){let e=V;if(!(!e||U)){H(null),W(e.id),I(null);try{await T(e.id),window.dispatchEvent(new CustomEvent(`note-deleted`,{detail:{noteId:e.id}})),$()}catch(e){I(`${t.deleteFailed}: ${e instanceof Error?e.message:t.quickCaptureFailedHint}`)}finally{W(null)}}}if((0,z.useLayoutEffect)(()=>{if(!r){l();return}return o({startExtra:null,main:(0,B.jsx)(`h1`,{className:`truncate text-base font-semibold text-fg`,children:t.title}),end:(0,B.jsxs)(`div`,{className:p(`flex min-w-0 items-center gap-2`,xe),children:[(0,B.jsxs)(`label`,{className:`flex h-9 w-32 min-w-0 items-center gap-2 rounded-lg border border-edge bg-surface-panel px-2 sm:w-48`,children:[(0,B.jsx)(se,{className:`size-4 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,B.jsx)(`input`,{ref:Me,type:`search`,value:N,onChange:e=>Ye(e.target.value),"aria-label":t.searchDialogTitle,placeholder:t.searchPlaceholder,className:`min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-fg-muted`})]}),(0,B.jsxs)(`button`,{type:`button`,onClick:()=>void Je(),disabled:L,"aria-label":n.blankNote,className:p(G,`border border-edge bg-surface-panel text-fg`),children:[L?(0,B.jsx)(u,{className:`size-4 animate-spin`,"aria-hidden":!0}):(0,B.jsx)(d,{className:`size-4`,"aria-hidden":!0}),(0,B.jsx)(`span`,{className:`hidden sm:inline`,children:n.blankNote})]})]})}),()=>l()},[l,Je,L,n.blankNote,t.searchDialogTitle,t.searchPlaceholder,t.title,N,o,Ye,r]),(0,z.useEffect)(()=>{let e=e=>{!(e.metaKey||e.ctrlKey)||e.altKey||e.isComposing||e.target?.closest(`input, textarea, [contenteditable="true"], [role="dialog"]`)||(e.key.toLowerCase()===`n`&&(e.preventDefault(),Je()),e.key.toLowerCase()===`f`&&(e.preventDefault(),Me.current?.focus()))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[Je]),!r)return(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8 text-sm text-fg-muted`,children:t.needToken});let et=[{id:`all`,label:n.homeNav,Icon:we},{id:`favorites`,label:n.favorites,Icon:Ce},{id:`unassigned`,label:n.unassigned,Icon:Te},{id:`archived`,label:t.filterArchived,Icon:x}],tt=O?`project:${O}`:A?`unassigned`:`all`;return(0,B.jsxs)(`div`,{className:`flex h-full min-h-0 w-full flex-1 overflow-hidden bg-surface-panel`,children:[(0,B.jsxs)(`aside`,{className:`hidden w-44 shrink-0 flex-col gap-1 overflow-y-auto px-3 py-6 xl:flex`,"aria-label":n.homeNav,children:[et.map(({id:e,label:t,Icon:n})=>(0,B.jsxs)(`button`,{type:`button`,onClick:()=>Xe(``,e),"aria-current":!O&&(e===`unassigned`?A:!A&&k===e)?`page`:void 0,className:p(G,`justify-start px-2 text-left text-xs`,!O&&(e===`unassigned`?A:!A&&k===e)&&`bg-surface-hover font-medium text-fg`),children:[(0,B.jsx)(n,{className:`size-4 shrink-0`,"aria-hidden":!0}),t]},e)),(0,B.jsx)(`span`,{className:`mb-1 mt-7 px-2 text-xs text-fg-muted`,children:n.projects}),X?[0,1,2].map(e=>(0,B.jsx)(y,{className:`mb-2 h-8 w-full`},e)):Z.slice(0,8).map(e=>(0,B.jsxs)(`button`,{type:`button`,onClick:()=>Xe(e.id),"aria-current":O===e.id?`page`:void 0,className:p(G,`justify-start px-2 text-left text-xs`,O===e.id&&`bg-surface-hover font-medium text-fg`),children:[(0,B.jsx)(ne,{className:`size-4 shrink-0`,"aria-hidden":!0}),(0,B.jsx)(`span`,{className:`truncate`,children:e.name})]},e.id)),(0,B.jsxs)(`button`,{type:`button`,onClick:()=>f(`/projects`),className:p(G,`mt-2 justify-start px-2 text-xs`),children:[n.allProjects,(0,B.jsx)(j,{className:`ml-auto size-3`,"aria-hidden":!0})]})]}),(0,B.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto overscroll-contain`,children:(0,B.jsxs)(`div`,{className:`mx-auto flex w-full max-w-6xl flex-col px-4 py-4 sm:py-7 sm:px-8 lg:px-10 lg:py-9`,children:[(0,B.jsxs)(`div`,{className:`mb-6 flex flex-wrap items-start justify-between gap-4`,children:[(0,B.jsx)(`h2`,{className:`min-w-0 break-words text-2xl font-semibold tracking-tight text-fg`,children:O?Ve:A?n.unassigned:n.homeTitle}),O?(0,B.jsxs)(`button`,{type:`button`,onClick:()=>f(`/projects/${encodeURIComponent(O)}`),className:p(G,`text-xs`),children:[n.openProject,(0,B.jsx)(j,{className:`size-3.5`,"aria-hidden":!0})]}):null]}),be?(0,B.jsx)(`p`,{className:`mb-4 rounded-lg border border-danger/25 bg-danger-soft px-3 py-2 text-sm text-danger`,role:`alert`,children:be}):null,(0,B.jsx)(`div`,{className:`order-3 mt-6 sm:order-none sm:mt-0`,children:(0,B.jsx)(ke,{projects:Z,projectId:P,onProjectChange:F,onCreated:$,labels:t,projectsLoading:X,projectsError:!!ze})}),ze?(0,B.jsxs)(`div`,{role:`alert`,className:`mt-4 flex items-center gap-3 text-xs text-danger`,children:[(0,B.jsx)(`span`,{children:n.projectsLoadFailed}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>void Be().catch(()=>void 0),className:`underline`,children:n.retry})]}):null,!O&&!A&&(X||Z.length>0)?(0,B.jsxs)(`section`,{className:`order-4 mt-8 sm:order-none`,"aria-label":n.continueProjects,children:[(0,B.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,B.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:n.continueProjects}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>f(`/projects`),className:`text-xs text-fg-muted hover:text-fg`,children:n.allProjects})]}),(0,B.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-3`,children:X?[0,1,2].map(e=>(0,B.jsx)(y,{className:`h-28 w-full`},e)):Z.slice(0,3).map(e=>(0,B.jsxs)(`button`,{type:`button`,onClick:()=>Xe(e.id),className:`min-w-0 rounded-lg border border-edge bg-surface-panel p-3 text-left transition-colors sm:p-4 hover:bg-surface-base focus-visible:ring-2 focus-visible:ring-accent`,children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-2 text-sm font-medium text-fg`,children:[(0,B.jsx)(ne,{className:`size-4 shrink-0`,"aria-hidden":!0}),(0,B.jsx)(`span`,{className:`truncate`,children:e.name})]}),e.description?(0,B.jsx)(`p`,{className:`mt-2 hidden line-clamp-1 text-xs text-fg-muted sm:block`,children:e.description}):null,(0,B.jsxs)(`span`,{className:`mt-2 flex flex-wrap items-center justify-between gap-1 text-xs text-fg-muted sm:mt-3`,children:[(0,B.jsx)(`span`,{children:t.noteCount.replace(`{{count}}`,String(e.noteCount))}),(0,B.jsx)(`span`,{children:e.updatedAt?De(e.updatedAt,Ge,We):n.emptyProject})]})]},e.id))})]}):null,(0,B.jsxs)(`section`,{className:`order-2 mt-2 pb-6 sm:order-none sm:mt-8`,"aria-label":n.recentNotes,children:[(0,B.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,B.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:O?n.projectNotes:n.recentNotes}),(0,B.jsx)(`div`,{className:`w-48 max-w-full`,children:(0,B.jsx)(c,{value:tt,allowEmpty:!1,ariaLabel:n.projects,placeholder:n.allNotes,options:[{value:`all`,label:n.allNotes},{value:`unassigned`,label:n.unassigned},...Z.filter(e=>e.name.toLowerCase().includes(ge.toLowerCase())).map(e=>({value:`project:${e.id}`,label:e.name}))],selectedLabel:O?Ve:A?n.unassigned:n.allNotes,triggerClassName:`h-8 bg-surface-panel text-xs`,loading:X,searchPlaceholder:n.projectSearch,searchValue:ge,onSearchChange:ve,onChange:e=>Xe(e.startsWith(`project:`)?e.slice(8):``,e===`unassigned`?e:`all`)})})]}),(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-5 border-b border-edge`,"aria-label":t.libraryTitle,children:[[{id:`all`,label:t.filterAll},{id:`agent`,label:n.agentEdited},{id:`favorites`,label:n.favorites},{id:`archived`,label:t.filterArchived}].map(({id:e,label:t})=>(0,B.jsx)(`button`,{type:`button`,"aria-pressed":k===e||e===`all`&&k===`unassigned`,onClick:()=>Ze(e),className:p(`border-b-2 border-transparent py-3 text-xs text-fg-muted hover:text-fg`,(k===e||e===`all`&&k===`unassigned`)&&`border-fg font-medium text-fg`),children:t},e)),(0,B.jsx)(`span`,{className:`ml-auto py-3 text-xs text-fg-muted`,children:n.sortUpdated})]}),Fe?(0,B.jsxs)(`div`,{className:`py-10 text-center`,role:`alert`,children:[(0,B.jsx)(`p`,{className:`text-sm text-danger`,children:n.loadFailed}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>void Le().catch(()=>void 0),className:p(G,`mt-2`),children:n.retry})]}):Ue?(0,B.jsx)(`div`,{"aria-busy":`true`,className:`divide-y divide-edge`,children:[0,1,2,3].map(e=>(0,B.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,B.jsx)(y,{className:`h-10 w-8 shrink-0`}),(0,B.jsxs)(`div`,{className:`flex-1 space-y-2`,children:[(0,B.jsx)(y,{className:`h-4 w-2/3`}),(0,B.jsx)(y,{className:`h-3 w-1/2`})]})]},e))}):He.length===0?(0,B.jsxs)(`div`,{className:`flex flex-col items-center px-4 py-12 text-center`,children:[(0,B.jsx)(we,{className:`mb-4 size-8 text-fg-muted`,strokeWidth:1.3,"aria-hidden":!0}),(0,B.jsx)(`h4`,{className:`text-sm font-medium text-fg`,children:N||k!==`all`&&k!==`unassigned`?n.noMatches:O?n.projectEmpty:n.emptyTitle}),(0,B.jsx)(`p`,{className:`mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:N||k!==`all`&&k!==`unassigned`?n.noMatchesHint:O?n.projectEmptyHint:n.emptyDescription})]}):(0,B.jsx)(`ul`,{className:`divide-y divide-edge`,children:He.map(e=>{let r=e.voiceAttachmentId||e.kind===`voice`?ae:e.kind===`bookmark`?ie:le,i=je(e)||(e.coverAttachmentId?t.imageNote:t.noText);return(0,B.jsxs)(`li`,{className:`group flex min-w-0 items-center gap-3 py-4`,children:[(0,B.jsxs)(`button`,{type:`button`,onClick:()=>qe(e.id),className:`flex min-w-0 flex-1 items-center gap-3 rounded-md text-left focus-visible:ring-2 focus-visible:ring-accent`,children:[(0,B.jsx)(`span`,{className:`flex h-10 w-8 shrink-0 items-center justify-center rounded-md border border-edge text-fg-muted`,children:(0,B.jsx)(r,{className:`size-4`,"aria-hidden":!0})}),(0,B.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,B.jsx)(`span`,{className:`block truncate text-sm font-medium text-fg group-hover:text-accent-fg`,children:e.title||i.slice(0,48)||t.titlePlaceholder}),(0,B.jsxs)(`span`,{className:`mt-1 flex min-w-0 items-center gap-1.5 text-xs text-fg-muted`,children:[e.lastEditTrigger===`ai_edit`?(0,B.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 text-accent-fg`,children:[(0,B.jsx)(_e,{className:`size-3`,"aria-hidden":!0}),n.agentEditLabel,(0,B.jsx)(`span`,{"aria-hidden":!0,children:`·`})]}):null,(0,B.jsx)(`span`,{className:`truncate`,children:i})]})]})]}),(0,B.jsx)(`span`,{className:`hidden max-w-32 truncate text-xs text-fg-muted md:block`,title:e.projects?.map(e=>e.name).join(` · `),children:e.projects?.map(e=>e.name).join(` · `)||n.unassigned}),(0,B.jsx)(`time`,{dateTime:new Date(e.updatedAt).toISOString(),className:`hidden w-24 shrink-0 text-right text-xs text-fg-muted sm:block`,children:De(e.updatedAt,Ge,We)}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>void Qe(e.id,!e.pinned),disabled:Oe.has(e.id),"aria-label":`${e.pinned?n.unfavorite:n.favorite}: ${e.title||t.titlePlaceholder}`,"aria-pressed":!!e.pinned,className:`inline-flex size-9 shrink-0 items-center justify-center rounded-md text-fg-muted hover:bg-surface-hover hover:text-fg disabled:opacity-50 focus-visible:ring-2 focus-visible:ring-accent`,children:(0,B.jsx)(Ce,{className:p(`size-4`,e.pinned&&`fill-current text-fg`),"aria-hidden":!0})}),(0,B.jsxs)(re,{children:[(0,B.jsx)(ee,{asChild:!0,children:(0,B.jsx)(`button`,{type:`button`,disabled:U===e.id,"aria-label":`${t.noteActions}: ${e.title||t.titlePlaceholder}`,className:`inline-flex size-9 shrink-0 items-center justify-center rounded-md text-fg-muted hover:bg-surface-hover hover:text-fg disabled:opacity-50 focus-visible:ring-2 focus-visible:ring-accent`,children:U===e.id?(0,B.jsx)(u,{className:`size-4 animate-spin`,"aria-hidden":!0}):(0,B.jsx)(me,{className:`size-4`,"aria-hidden":!0})})}),(0,B.jsx)(te,{children:(0,B.jsx)(ce,{align:`end`,sideOffset:4,className:`z-50 min-w-36 rounded-lg border border-edge bg-surface-panel p-1 shadow-popover`,children:(0,B.jsxs)(w,{className:`flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm text-danger outline-none hover:bg-danger-soft focus:bg-danger-soft`,onSelect:()=>H(e),children:[(0,B.jsx)(he,{className:`size-4`,"aria-hidden":!0}),t.delete]})})})]})]},e.id)})}),!Ue&&!Fe&&Q>0?(0,B.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-between gap-3 text-xs text-fg-muted`,"aria-live":`polite`,children:[(0,B.jsx)(`span`,{children:t.noteCount.replace(`{{count}}`,String(Q))}),Q>12||Y>0?(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`button`,{type:`button`,"aria-label":n.previousPage,disabled:Y===0,className:G,onClick:()=>D(e=>{let t=new URLSearchParams(e);return t.set(`page`,String(Y-1)),t}),children:(0,B.jsx)(oe,{className:`size-4`,"aria-hidden":!0})}),(0,B.jsxs)(`span`,{children:[Y+1,` / `,Math.max(1,Math.ceil(Q/12))]}),(0,B.jsx)(`button`,{type:`button`,"aria-label":n.nextPage,disabled:(Y+1)*12>=Q,className:G,onClick:()=>D(e=>{let t=new URLSearchParams(e);return t.set(`page`,String(Y+1)),t}),children:(0,B.jsx)(j,{className:`size-4`,"aria-hidden":!0})})]}):null]}):null]})]})}),(0,B.jsx)(fe,{open:V!==null,title:t.deleteConfirmTitle,description:t.deleteConfirmDescription.replace(`{{title}}`,V?.title||t.titlePlaceholder),confirmLabel:t.deleteConfirmLabel,cancelLabel:t.deleteCancelLabel,destructive:!0,onConfirm:()=>void $e(),onCancel:()=>H(null)})]})}function q(){let e=(0,R.c)(12),{noteId:t}=o(),n=i(),[r]=a(),s;e[0]===r?s=e[1]:(s=l(r.get(`returnTo`),`/notes`,[`/chat`,`/projects`,`/notes`,`/tasks`]),e[0]=r,e[1]=s);let c=s,u;e[2]!==n||e[3]!==c?(u=()=>{n(c)},e[2]=n,e[3]=c,e[4]=u):u=e[4];let d=u;if(!t)return null;let f=r.get(`edit`)===`1`?`wysiwyg`:`preview`,p;e[5]===r?p=e[6]:(p=r.get(`edit`),e[5]=r,e[6]=p);let m=p===`1`,h;return e[7]!==d||e[8]!==t||e[9]!==f||e[10]!==m?(h=(0,B.jsx)(`div`,{className:`mx-auto flex h-full min-h-0 w-full max-w-6xl flex-1 flex-col`,children:(0,B.jsx)(Oe,{noteId:t,onBack:d,initialMode:f,autoFocus:m},t)}),e[7]=d,e[8]=t,e[9]=f,e[10]=m,e[11]=h):h=e[11],h}function J(){let e=(0,R.c)(2),{noteId:t}=o(),n;return e[0]===t?n=e[1]:(n=t?(0,B.jsx)(q,{}):(0,B.jsx)(K,{}),e[0]=t,e[1]=n),n}export{J as NotesPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./cn-JdwAhgNB.js";import{gs as a}from"./index-ChIrvv3t.js";var o=n(),s=e(t(),1),c=r();function l(e){let t=(0,o.c)(40),{items:n,activeTab:r,onChange:l,ariaLabel:u,tabIdPrefix:d,panelIdPrefix:f,className:p,buttonClassName:m,selectedClassName:h,unselectedClassName:g,countClassName:_,onReorder:v}=e,y=h===void 0?`bg-accent-soft text-accent-fg`:h,b=g===void 0?`text-fg-muted hover:bg-surface-hover hover:text-fg`:g,[x,S]=(0,s.useState)(null),[C,w]=(0,s.useState)(null),T;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>{S(null),w(null)},t[0]=T):T=t[0];let E=T,D;t[1]===p?D=t[2]:(D=i(`-mx-1 flex gap-1 overflow-x-auto px-1 pb-1`,p),t[1]=p,t[2]=D);let O;t[3]===v?O=t[4]:(O=e=>{if(!v)return;let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||w(null)},t[3]=v,t[4]=O);let k;t[5]!==r||t[6]!==n||t[7]!==l?(k=e=>{if(e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;e.preventDefault();let t=n.findIndex(e=>e.id===r);t<0||l(n[(t+(e.key===`ArrowRight`?1:-1)+n.length)%n.length].id)},t[5]=r,t[6]=n,t[7]=l,t[8]=k):k=t[8];let A;if(t[9]!==r||t[10]!==m||t[11]!==_||t[12]!==x||t[13]!==C||t[14]!==n||t[15]!==l||t[16]!==v||t[17]!==f||t[18]!==y||t[19]!==d||t[20]!==b){let e;t[22]!==r||t[23]!==m||t[24]!==_||t[25]!==x||t[26]!==C||t[27]!==l||t[28]!==v||t[29]!==f||t[30]!==y||t[31]!==d||t[32]!==b?(e=e=>{let{id:t,icon:n,label:o,count:s,suffix:u,title:p}=e,h=t===r,g=x===t,T=C?.id===t&&C.position===`before`,D=C?.id===t&&C.position===`after`;return(0,c.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":h,id:d?`${d}-${t}`:void 0,"aria-controls":f?`${f}-${t}`:void 0,"aria-grabbed":v?g:void 0,draggable:!!v,title:p,className:i(`relative inline-flex shrink-0 items-center gap-1.5 rounded-lg px-3 py-2 text-sm font-medium transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,a.press,h?y:b,v&&`cursor-grab active:cursor-grabbing`,g&&`scale-[0.98] border border-edge bg-surface-active/60 opacity-55 shadow-surface`,(T||D)&&!g&&`bg-surface-hover text-fg`,m),onClick:()=>l(t),onDragStart:e=>{v&&(S(t),w(null),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t))},onDragOver:e=>{if(!v||!x)return;if(x===t){w(null);return}e.preventDefault(),e.dataTransfer.dropEffect=`move`;let n=e.currentTarget.getBoundingClientRect(),r=e.clientX<n.left+n.width/2?`before`:`after`;w(e=>e?.id===t&&e.position===r?e:{id:t,position:r})},onDrop:e=>{!v||!x||x===t||(e.preventDefault(),v(x,t,C?.id===t?C.position:`before`),E())},onDragEnd:E,children:[T?(0,c.jsx)(`span`,{className:`pointer-events-none absolute -left-0.5 top-1/2 h-5 w-0.5 -translate-y-1/2 rounded-full bg-accent shadow-[0_0_0_2px_var(--color-surface-panel)]`,"aria-hidden":!0}):null,n?(0,c.jsx)(n,{className:`size-3.5 shrink-0`,strokeWidth:1.75,"aria-hidden":!0}):null,(0,c.jsx)(`span`,{children:o}),s==null?null:(0,c.jsx)(`span`,{className:i(`rounded-full bg-surface-hover px-1.5 py-0.5 text-[10px] tabular-nums text-fg-subtle`,_),children:s}),u,D?(0,c.jsx)(`span`,{className:`pointer-events-none absolute -right-0.5 top-1/2 h-5 w-0.5 -translate-y-1/2 rounded-full bg-accent shadow-[0_0_0_2px_var(--color-surface-panel)]`,"aria-hidden":!0}):null]},t)},t[22]=r,t[23]=m,t[24]=_,t[25]=x,t[26]=C,t[27]=l,t[28]=v,t[29]=f,t[30]=y,t[31]=d,t[32]=b,t[33]=e):e=t[33],A=n.map(e),t[9]=r,t[10]=m,t[11]=_,t[12]=x,t[13]=C,t[14]=n,t[15]=l,t[16]=v,t[17]=f,t[18]=y,t[19]=d,t[20]=b,t[21]=A}else A=t[21];let j;return t[34]!==u||t[35]!==D||t[36]!==O||t[37]!==k||t[38]!==A?(j=(0,c.jsx)(`nav`,{"aria-label":u,className:D,role:`tablist`,onDragLeave:O,onKeyDown:k,children:A}),t[34]=u,t[35]=D,t[36]=O,t[37]=k,t[38]=A,t[39]=j):j=t[39],j}export{l as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,n as t}from"./rolldown-runtime-aKtaBQYM.js";import{a as n,n as r,t as i}from"./vendor-react-BOUWij0V.js";import{t as a}from"./createLucideIcon-DPHK1VkS.js";import{t as o}from"./check-DUBLcKHA.js";import{t as s}from"./cn-JdwAhgNB.js";import{a as c,f as l,g as u,h as d,i as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y}from"./es2015-DBLcMg5B.js";import{i as b,n as x}from"./dist-CxGUk8J-.js";import{a as S,i as C,n as w,r as T,t as E}from"./dist-CI_fqRk-.js";import{t as D}from"./skeleton-BwbyijEw.js";import{a as O,s as k,t as A}from"./settings-shell-dialog-layer-BU3UuiJr.js";import{n as ee,r as j}from"./settings-shell-layer-context-DCp6ykjQ.js";var M=a(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),N=r(),P=t({Anchor:()=>me,Arrow:()=>_e,Close:()=>ge,Content:()=>he,Popover:()=>V,PopoverAnchor:()=>H,PopoverArrow:()=>Y,PopoverClose:()=>J,PopoverContent:()=>q,PopoverPortal:()=>G,PopoverTrigger:()=>U,Portal:()=>Q,Root:()=>X,Trigger:()=>Z,createPopoverScope:()=>te}),F=e(n(),1),I=i(),L=`Popover`,[R,te]=d(L,[S]),z=S(),[ne,B]=R(L),V=e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,s=z(t),c=F.useRef(null),[u,d]=F.useState(!1),[f,p]=l({prop:r,defaultProp:i??!1,onChange:a,caller:L});return(0,I.jsx)(C,{...s,children:(0,I.jsx)(ne,{scope:t,contentId:h(),triggerRef:c,open:f,onOpenChange:p,onOpenToggle:F.useCallback(()=>p(e=>!e),[p]),hasCustomAnchor:u,onCustomAnchorAdd:F.useCallback(()=>d(!0),[]),onCustomAnchorRemove:F.useCallback(()=>d(!1),[]),modal:o,children:n})})};V.displayName=L;var re=`PopoverAnchor`,H=F.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=B(re,n),a=z(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:s}=i;return F.useEffect(()=>(o(),()=>s()),[o,s]),(0,I.jsx)(E,{...a,...r,ref:t})});H.displayName=re;var ie=`PopoverTrigger`,U=F.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=B(ie,n),a=z(n),o=b(t,i.triggerRef),s=(0,I.jsx)(y.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":pe(i.open),...r,ref:o,onClick:u(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,I.jsx)(E,{asChild:!0,...a,children:s})});U.displayName=ie;var W=`PopoverPortal`,[ae,oe]=R(W,{forceMount:void 0}),G=e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=B(W,t);return(0,I.jsx)(ae,{scope:t,forceMount:n,children:(0,I.jsx)(f,{present:n||a.open,children:(0,I.jsx)(c,{asChild:!0,container:i,children:r})})})};G.displayName=W;var K=`PopoverContent`,q=F.forwardRef((e,t)=>{let n=oe(K,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=B(K,e.__scopePopover);return(0,I.jsx)(f,{present:r||a.open,children:a.modal?(0,I.jsx)(ce,{...i,ref:t}):(0,I.jsx)(le,{...i,ref:t})})});q.displayName=K;var se=x(`PopoverContent.RemoveScroll`),ce=F.forwardRef((e,t)=>{let n=B(K,e.__scopePopover),r=F.useRef(null),i=b(t,r),a=F.useRef(!1);return F.useEffect(()=>{let e=r.current;if(e)return v(e)},[]),(0,I.jsx)(p,{as:se,allowPinchZoom:!0,children:(0,I.jsx)(ue,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:u(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||n.triggerRef.current?.focus()}),onPointerDownOutside:u(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;a.current=t.button===2||n},{checkForDefaultPrevented:!1}),onFocusOutside:u(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),le=F.forwardRef((e,t)=>{let n=B(K,e.__scopePopover),r=F.useRef(!1),i=F.useRef(!1);return(0,I.jsx)(ue,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),ue=F.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=B(K,n),p=z(n);return g(),(0,I.jsx)(m,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,I.jsx)(_,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),deferPointerDownOutside:!0,children:(0,I.jsx)(T,{"data-state":pe(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})}),de=`PopoverClose`,J=F.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=B(de,n);return(0,I.jsx)(y.button,{type:`button`,...r,ref:t,onClick:u(e.onClick,()=>i.onOpenChange(!1))})});J.displayName=de;var fe=`PopoverArrow`,Y=F.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=z(n);return(0,I.jsx)(w,{...i,...r,ref:t})});Y.displayName=fe;function pe(e){return e?`open`:`closed`}var X=V,me=H,Z=U,Q=G,he=q,ge=J,_e=Y;function ve(e,t=!1){if(!t)return A;switch(e){case`modal`:return O;case`page`:return k;default:return`z-50`}}function ye(e){let t=(0,N.c)(14),{options:n,values:r,multiple:i,onChange:a,ariaLabel:o}=e,c=i===void 0?!1:i,l=(0,F.useId)(),u;if(t[0]!==c||t[1]!==l||t[2]!==a||t[3]!==n||t[4]!==r){let e;t[6]!==c||t[7]!==l||t[8]!==a||t[9]!==r?(e=e=>(0,I.jsxs)(`label`,{className:s(`flex min-h-10 min-w-0 items-center gap-3 rounded-md px-2 py-2 text-sm text-fg has-focus-visible:ring-2 has-focus-visible:ring-accent`,e.disabled?`cursor-not-allowed opacity-50`:`cursor-pointer hover:bg-surface-hover`),children:[(0,I.jsx)(`input`,{type:c?`checkbox`:`radio`,name:l,value:e.value,checked:r.includes(e.value),disabled:e.disabled,className:`shrink-0 accent-accent`,onChange:t=>a(c?t.target.checked?[...r,e.value]:r.filter(t=>t!==e.value):[e.value])}),e.icon,(0,I.jsx)(`span`,{className:`min-w-0 flex-1 break-words`,children:e.label})]},e.value),t[6]=c,t[7]=l,t[8]=a,t[9]=r,t[10]=e):e=t[10],u=n.map(e),t[0]=c,t[1]=l,t[2]=a,t[3]=n,t[4]=r,t[5]=u}else u=t[5];let d;return t[11]!==o||t[12]!==u?(d=(0,I.jsx)(`fieldset`,{"aria-label":o,className:`min-w-0 space-y-0.5`,children:u}),t[11]=o,t[12]=u,t[13]=d):d=t[13],d}var be=`flex max-h-[min(20rem,var(--radix-popover-content-available-height))] flex-col overflow-hidden`,xe=`min-h-0 flex-1 overflow-y-auto overscroll-y-contain touch-pan-y [scrollbar-gutter:stable]`;function Se({value:e,options:t,placeholder:n,allowEmpty:r=!0,emptyLabel:i=n,emptyDisabled:a=!1,disabledValues:c,disabled:l,id:u,ariaLabel:d,ariaLabelledBy:f,title:p,triggerClassName:m,triggerIcon:h,contentClassName:g,side:_=`bottom`,align:v=`start`,onChange:y,searchPlaceholder:b,searchValue:x,onSearchChange:S,loading:C=!1,statusMessage:w,selectedLabel:T}){let[E,O]=(0,F.useState)(!1),k=ee(),A=j(),N=ve(k,A!==null),P=t.find(t=>t.value===e),L=T??P?.label??(e?`${e} · unavailable`:n),R;return(0,I.jsxs)(X,{open:E,onOpenChange:O,children:[(0,I.jsx)(Z,{asChild:!0,children:(0,I.jsxs)(`button`,{id:u,type:`button`,"aria-label":d,"aria-labelledby":f,title:p,disabled:l,className:s(`box-border flex h-10 w-full min-w-0 items-center justify-between gap-2 rounded-lg border border-edge bg-surface-subtle px-3 text-left text-sm font-normal text-fg`,`hover:border-edge-strong focus-visible:outline-none focus-visible:border-edge-strong`,l&&`cursor-not-allowed opacity-50 hover:border-edge`,m),children:[h,(0,I.jsx)(`span`,{className:s(`min-w-0 truncate`,!e&&`text-fg-subtle`),children:L}),(0,I.jsx)(M,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":`true`})]})}),(0,I.jsx)(Q,{container:A??void 0,children:(0,I.jsxs)(he,{side:_,align:v,sideOffset:4,collisionPadding:8,className:s(N,be,`w-[var(--radix-popover-trigger-width)] min-w-[16rem] rounded-lg border border-edge bg-surface-panel p-1 shadow-popover outline-none`,g),children:[b?(0,I.jsx)(`input`,{type:`search`,"aria-label":b,placeholder:b,value:x,onChange:e=>S?.(e.target.value),className:`mb-1 w-full shrink-0 rounded-md bg-surface-base px-3 py-2 text-sm text-fg placeholder:text-fg-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`}):null,(0,I.jsxs)(`div`,{"data-select-scroll-region":!0,className:s(xe,`max-h-64`),children:[r?(0,I.jsxs)(`button`,{type:`button`,disabled:a,className:s(`flex h-9 w-full items-center gap-2 rounded-md px-2 text-left text-sm text-fg hover:bg-surface-hover`,e===``&&`bg-surface-active font-medium`,a&&`cursor-not-allowed opacity-45 hover:bg-transparent`),onClick:()=>{a||(y(``),O(!1))},children:[(0,I.jsx)(o,{className:s(`size-4 shrink-0`,e!==``&&`invisible`),"aria-hidden":`true`}),(0,I.jsx)(`span`,{className:`min-w-0 truncate text-fg-subtle`,children:i})]}):null,C?(0,I.jsx)(`div`,{className:`space-y-2 p-2`,"aria-busy":`true`,children:[0,1,2].map(e=>(0,I.jsx)(D,{className:`h-8 w-full`},e))}):null,w&&!C?(0,I.jsx)(`p`,{role:`status`,className:`px-3 py-2 text-xs text-fg-muted`,children:w}):null,(C?[]:t).map(t=>{let n=t.disabled===!0||c?.has(t.value)===!0&&t.value!==e,r=t.group&&t.group!==R;return R=t.group,(0,I.jsxs)(F.Fragment,{children:[r?(0,I.jsx)(`div`,{className:`px-2 pb-1 pt-2 text-[11px] font-semibold uppercase tracking-wide text-fg-subtle`,children:t.group}):null,(0,I.jsxs)(`button`,{type:`button`,disabled:n,className:s(`flex h-9 w-full items-center gap-2 rounded-md px-2 text-left text-sm text-fg hover:bg-surface-hover`,t.value===e&&`bg-surface-active font-medium`,n&&`cursor-not-allowed opacity-45 hover:bg-transparent`),onClick:()=>{n||(y(t.value),O(!1))},children:[t.icon??(0,I.jsx)(o,{className:s(`size-4 shrink-0`,t.value!==e&&`invisible`),"aria-hidden":`true`}),(0,I.jsx)(`span`,{className:`min-w-0 truncate`,children:t.label}),t.icon?(0,I.jsx)(o,{className:s(`ml-auto size-4 shrink-0`,t.value!==e&&`invisible`),"aria-hidden":!0}):null]})]},`${t.group??``}:${t.value}`)})]})]})})]})}function $(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map($).join(``):(0,F.isValidElement)(e)?$(e.props.children):``}function Ce(e,t){let n=[];return F.Children.forEach(e,e=>{if(!(0,F.isValidElement)(e))return;if(e.type===F.Fragment){n.push(...Ce(e.props.children,t));return}if(e.type===Te){let t=e.props;n.push(...Ce(t.children,$(t.label)));return}if(e.type!==we)return;let r=e.props,i=$(r.children).trim(),a=r.value==null?i:String(r.value);n.push({value:a,label:i,disabled:r.disabled,group:t})}),n}function we(e){return null}function Te(e){return null}function Ee(e){if(!e)return;let t=e.split(/\s+/).filter(Boolean).filter(e=>{let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;return t===`block`||t===`inline-block`||t===`inline-flex`||t===`flex`||t===`flex-1`||t===`flex-auto`||t===`flex-initial`||t===`flex-none`||t===`grow`||t===`shrink`||t===`min-w-0`||t===`min-h-0`||t.startsWith(`w-`)||t.startsWith(`min-w-`)||t.startsWith(`max-w-`)||t.startsWith(`basis-`)||t.startsWith(`grow-`)||t.startsWith(`shrink-`)||t.startsWith(`self-`)||t.startsWith(`order-`)||t.startsWith(`col-`)||t.startsWith(`row-`)});return t.length===0?void 0:t.join(` `)}function De(e){let t=(0,N.c)(66),n,r,i,a,o,c,l,u,d,f,p,m;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],c=t[6],l=t[7],u=t[8],d=t[9],f=t[10],p=t[11],m=t[12]):({align:n,children:r,className:i,contentClassName:a,disabled:o,id:c,onChange:l,placeholder:u,side:f,triggerClassName:p,value:m,...d}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f,t[11]=p,t[12]=m);let h=(0,F.useId)(),g=m==null?``:String(m),_,v,y,b,x,S,C,w,T,E;if(t[13]!==r||t[14]!==i||t[15]!==o||t[16]!==h||t[17]!==c||t[18]!==u||t[19]!==d.name||t[20]!==g){let e=Ce(r);b=e.find(ke),v=b!==void 0,y=b?.label||u||``,w=o||void 0,t[31]===i?T=t[32]:(T=Ee(i),t[31]=i,t[32]=T),E=d.name,_=Se,x=c??h,S=g,C=e.filter(Oe),t[13]=r,t[14]=i,t[15]=o,t[16]=h,t[17]=c,t[18]=u,t[19]=d.name,t[20]=g,t[21]=_,t[22]=v,t[23]=y,t[24]=b,t[25]=x,t[26]=S,t[27]=C,t[28]=w,t[29]=T,t[30]=E}else _=t[21],v=t[22],y=t[23],b=t[24],x=t[25],S=t[26],C=t[27],w=t[28],T=t[29],E=t[30];let D=u??y,O=b?.disabled===!0,k=d[`aria-label`],A=d[`aria-labelledby`],ee=d.title,j;t[33]!==i||t[34]!==p?(j=s(i,p),t[33]=i,t[34]=p,t[35]=j):j=t[35];let M;t[36]===l?M=t[37]:(M=e=>l?.({target:{value:e},currentTarget:{value:e}}),t[36]=l,t[37]=M);let P;t[38]!==_||t[39]!==n||t[40]!==v||t[41]!==a||t[42]!==o||t[43]!==y||t[44]!==d.title||t[45]!==f||t[46]!==x||t[47]!==A||t[48]!==j||t[49]!==M||t[50]!==S||t[51]!==C||t[52]!==D||t[53]!==O||t[54]!==k?(P=(0,I.jsx)(_,{id:x,value:S,options:C,placeholder:D,allowEmpty:v,emptyLabel:y,emptyDisabled:O,disabled:o,ariaLabel:k,ariaLabelledBy:A,title:ee,side:f,align:n,triggerClassName:j,contentClassName:a,onChange:M}),t[38]=_,t[39]=n,t[40]=v,t[41]=a,t[42]=o,t[43]=y,t[44]=d.title,t[45]=f,t[46]=x,t[47]=A,t[48]=j,t[49]=M,t[50]=S,t[51]=C,t[52]=D,t[53]=O,t[54]=k,t[55]=P):P=t[55];let L;t[56]!==o||t[57]!==d.name||t[58]!==g?(L=(0,I.jsx)(`input`,{name:d.name,value:g,readOnly:!0,hidden:!0,disabled:o}),t[56]=o,t[57]=d.name,t[58]=g,t[59]=L):L=t[59];let R;return t[60]!==P||t[61]!==L||t[62]!==w||t[63]!==T||t[64]!==E?(R=(0,I.jsxs)(`div`,{"aria-disabled":w,className:T,"data-select-name":E,children:[P,L]}),t[60]=P,t[61]=L,t[62]=w,t[63]=T,t[64]=E,t[65]=R):R=t[65],R}function Oe(e){return e.value!==``}function ke(e){return e.value===``}export{be as a,_e as c,Q as d,X as f,M as h,ye as i,ge as l,P as m,De as n,xe as o,Z as p,we as r,ve as s,Se as t,he as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{h as i,t as a}from"./chunk-KS7C4IRE-Cq1tE_3b.js";import{n as o,r as s}from"./popover-select-DGmMQt4t.js";import{t as c}from"./markdown-view-6oYdBahT.js";import{n as l}from"./locale-store-DlOv7896.js";import{i as u}from"./vendor-swr-BIWyz7Rc.js";import{t as d}from"./button-BA45yciM.js";import{t as f}from"./skeleton-BwbyijEw.js";import{t as p}from"./electron-env-DH5wF8X8.js";import{Ha as m,Kt as h,Ru as g,mo as _,oa as v,qt as y}from"./index-ChIrvv3t.js";import{n as b,t as x}from"./api-COG_Tzpv.js";var S=e(t(),1),C=n();function w(e){return e?{locale:`zh`,levels:{quiet:`尽量安静`,balanced:`重要时找我`,active:`及时跟进`},save:`保存`,saved:`已保存`,level:`什么时候找你`,quietStart:`免打扰开始(小时)`,quietEnd:`免打扰结束(小时)`,timezone:`时区`,limit:`每日通知上限`,pause:`暂停一小时`,resume:`结束暂停`,privacy:`提醒频率不会改变助理可以查看或执行的范围;这些范围仍按每件事的授权执行。`,whyNow:`为什么现在`,evidence:`依据`,snooze:`一小时后`,retry:`重试`,kinds:{briefing:`简报`,reminder:`提醒`,risk:`风险`,recommendation:`建议`,decision:`待决定`,receipt:`执行回执`}}:{locale:`en`,levels:{quiet:`Keep it quiet`,balanced:`When it matters`,active:`Keep me updated`},save:`Save`,saved:`Saved`,level:`When should the assistant notify you?`,quietStart:`Quiet hours start`,quietEnd:`Quiet hours end`,timezone:`Timezone`,limit:`Daily notification limit`,pause:`Pause for one hour`,resume:`Resume`,privacy:`Notification frequency does not change what the assistant can read or do. Each delegated item keeps its own permissions.`,whyNow:`Why now`,evidence:`Evidence`,snooze:`In one hour`,retry:`Retry`,kinds:{briefing:`Briefing`,reminder:`Reminder`,risk:`Risk`,recommendation:`Recommendation`,decision:`Decision`,receipt:`Receipt`}}}function T(e,t,n){if(n!==`zh`)return t;let r={communication_follow_up:[`邮件跟进`,`关注已委托的邮件往来,准备跟进草稿并持续等待回复。`],meeting_preparation:[`会议准备`,`在会议前检查议程与资料,提示需要提前准备的事项。`],project_delivery_risk:[`项目交付风险`,`关注项目任务、依赖与承诺,发现可能影响交付的变化。`],automation_failure_impact:[`自动化失败影响`,`分析自动化故障的实际影响,提醒需要你处理的问题。`],blocked_work:[`工作阻塞`,`检查受阻任务及依赖,指出下一步可以推进的工作。`],discussion_follow_up:[`讨论后续`,`关注讨论中的结论与未完成事项,提示需要跟进的行动。`]}[e];return r?{title:r[0],description:r[1]}:t}function E(e,t){return(t===`zh`?{unread:`待查看`,read:`已查看`,snoozed:`稍后提醒`,resolved:`已收起`,expired:`已过期`,withdrawn:`来源已撤回`}:{unread:`Ready to review`,read:`Reviewed`,snoozed:`Remind later`,resolved:`Dismissed`,expired:`Expired`,withdrawn:`Source withdrawn`})[e]??e}function D(e,t){return e.project?.name??T(e.scenarioKey,{title:e.scenarioKey.replaceAll(`_`,` `),description:``},t?`zh`:`en`).title}function O(e){return e.completedAt?`completed`:e.effectiveEnabled?`active`:`paused`}function k(e){return e.status===`completed`?`completed`:e.status===`watching`&&e.enabled?`active`:`paused`}function A(e,t,n){return e.completedAt?t?`这件事已结束`:`This work has ended`:e.effectiveEnabled?e.checkStatus?.health===`blocked`?t?`最近检查未完成,需要处理`:`The latest check needs attention`:e.checkStatus?.health===`retrying`?t?`检查暂时失败,准备重试`:`Preparing to retry the check`:e.checking?t?`助理正在查看最新情况`:`Your assistant is reviewing the latest context`:n?.decision?t?`有一项决定等你处理`:`A decision needs your attention`:n?.artifact?t?`助理准备好了新内容`:`Your assistant prepared something new`:n?t?`有一项变化值得你看`:`A change is worth your attention`:t?`已记住,等待相关变化`:`Remembered and waiting for a relevant change`:t?`已暂停,恢复后继续跟进`:`Paused until you resume it`}function j(e,t){return e.completedAt?t?`不会再跟进`:`No more follow-up`:e.effectiveEnabled?e.checkStatus?.nextCheckAt?`${t?`下次检查`:`Next check`}:${F(e.checkStatus.nextCheckAt,t)}`:e.scopeKind===`project`?t?`项目出现重要变化时回来`:`Returns when the project meaningfully changes`:e.scenarioKey===`meeting_preparation`?t?`相关会议临近或资料变化时回来`:`Returns when a meeting approaches or its context changes`:t?`相关沟通需要下一步时回来`:`Returns when the conversation needs a next step`:t?`恢复后继续`:`Continues when resumed`}function M(e,t){return e.filter(e=>e.subscriptionId===t).sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))[0]}function N(e,t){return e?e.decision?`${t?`等你决定`:`Waiting for your decision`}:${e.title}`:e.artifact?`${t?`最新成果`:`Latest result`}:${e.artifact.title}`:`${t?`最新变化`:`Latest update`}:${e.title}`:t?`还没有需要交付的新成果`:`No new result needs delivery yet`}function P(e,t){return e.status===`completed`?t?`这件事已结束`:`This work has ended`:e.status===`paused`||!e.enabled?t?`已暂停,恢复后继续跟进`:`Paused until you resume it`:e.sourceAvailable?e.syncFailed?t?`最近一次邮箱同步未完成`:`The latest email sync did not finish`:e.sourceFresh?e.latestDirection===`sent`?t?`已同步发件,继续等待回复`:`Sent message found; waiting for a reply`:t?`正在等待回复或约定时间`:`Waiting for a reply or the agreed time`:t?`等待最新邮箱资料,暂时无法确认是否有回复`:`Waiting for fresh mail data to check for replies`:t?`需要重新连接邮箱`:`Reconnect the email account`}function F(e,t){return e?new Date(e).toLocaleString(t?`zh-CN`:`en-US`):t?`暂无记录`:`No record yet`}function I(e,t,n){return{insight:[`已准备新成果`,`New result prepared`],unchanged:[`没有新变化`,`No changes`],routine:[`无需跟进的新活动`,`Routine activity`],duplicate:[`已有相同成果`,`Result already available`],below_threshold:[`没有需要提醒的新发现`,`No actionable finding`],insufficient_evidence:[`资料不足`,`Insufficient evidence`],source_unavailable:[`来源不可用`,`Source unavailable`],source_stale:[`等待最新资料`,`Waiting for fresh sources`],source_changed:[`资料已变化,等待重新检查`,`Source changed`],disabled:[`检查已暂停`,`Checks paused`],policy_changed:[`要求已变化`,`Instructions changed`],completed:[`检查完成`,`Check completed`],retryable:[`等待重试`,`Waiting to retry`],failed:[`检查失败`,`Check failed`],running:[`检查中`,`Checking`]}[e??t]?.[+!n]??(n?`本次检查未产生新成果`:`No new result from this check`)}var L=r();function ee(e){let t=(0,C.c)(20),{value:n,zh:r}=e,i;if(t[0]!==n.checksAllowed||t[1]!==n.enabled||t[2]!==n.nextCheckAt||t[3]!==n.recent||t[4]!==r){let e={running:[`检查中`,`Checking`],prepared:[`有新的巡查结果`,`Result prepared`],no_change:[`没有需要提醒的新变化`,`No actionable changes`],empty_checklist:[`尚未安排巡查内容`,`Checklist is empty`],blocked:[`清单不可用,请检查设置`,`Check the checklist settings`],failed:[`检查失败,请查看日志`,`Check failed; see logs`],cancelled:[`本次检查已停止`,`Check stopped`],interrupted:[`检查被中断`,`Check interrupted`],pending:[`等待提醒时段或额度`,`Waiting for delivery window or budget`],queued:[`已加入渠道发送队列`,`Queued to the channel`],unknown:[`投递状态待核对,不会自动重发`,`Delivery unknown; will not resend automatically`],duplicate:[`已存在相同提醒`,`Duplicate suppressed`],no_target:[`结果已保存,未配置外部提醒`,`Saved here; no external destination`],expired:[`提醒已过期`,`Notification expired`]},o=t=>e[t]?.[+!r]??t,s=r?`日常巡查`:`Heartbeat checks`,c;t[6]===s?c=t[7]:(c=(0,L.jsx)(`h2`,{className:`font-semibold`,children:s}),t[6]=s,t[7]=c);let l=r?`清单与设置`:`Checklist and settings`,u;t[8]===l?u=t[9]:(u=(0,L.jsx)(a,{to:`/settings/heartbeat`,className:`text-sm text-accent`,children:l}),t[8]=l,t[9]=u);let d;t[10]!==c||t[11]!==u?(d=(0,L.jsxs)(`div`,{className:`flex justify-between`,children:[c,u]}),t[10]=c,t[11]=u,t[12]=d):d=t[12];let f;t[13]!==n.checksAllowed||t[14]!==n.enabled||t[15]!==n.nextCheckAt||t[16]!==r?(f=n.enabled?n.checksAllowed?n.nextCheckAt?`${r?`下次计划(活动时段内执行)`:`Next scheduled check (during active hours)`}:${F(n.nextCheckAt,r)}`:r?`等待检查`:`Waiting`:r?`自动检查已暂停`:`Checks paused`:r?`未启用`:`Disabled`,t[13]=n.checksAllowed,t[14]=n.enabled,t[15]=n.nextCheckAt,t[16]=r,t[17]=f):f=t[17];let p;t[18]===f?p=t[19]:(p=(0,L.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:f}),t[18]=f,t[19]=p),i=(0,L.jsxs)(`section`,{className:`rounded-2xl border border-edge bg-surface-panel p-5`,children:[d,p,n.recent.length>0&&(0,L.jsxs)(`details`,{className:`mt-3 text-sm`,children:[(0,L.jsxs)(`summary`,{className:`cursor-pointer`,children:[o(n.recent[0].status),` · `,F(n.recent[0].startedAt,r)]}),(0,L.jsx)(`div`,{className:`mt-3 max-h-96 space-y-4 overflow-y-auto`,children:n.recent.map(e=>(0,L.jsxs)(`div`,{className:`border-t border-edge pt-3`,children:[(0,L.jsxs)(`p`,{children:[F(e.startedAt,r),` · `,o(e.status)]}),e.deliveryStatus!==`none`&&(0,L.jsx)(`p`,{className:`mt-1 text-fg-muted`,children:o(e.deliveryStatus)}),e.target&&(0,L.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[e.target,` · `,e.chatId]}),e.content&&(0,L.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap`,children:e.content})]},e.id))})]})]}),t[0]=n.checksAllowed,t[1]=n.enabled,t[2]=n.nextCheckAt,t[3]=n.recent,t[4]=r,t[5]=i}else i=t[5];return i}function R({zh:e}){let[t,n]=(0,S.useState)(h),[r,i]=(0,S.useState)(!1),[a,o]=(0,S.useState)(``),s=u(t?`/api/proactive/web-push/probes`:null,x,{refreshInterval:1e4});async function c(){i(!0),o(``);try{let e=localStorage.getItem(y());if(!e)throw Error(`Enable this browser first`);await b(`/api/proactive/web-push/subscriptions/${encodeURIComponent(e)}/test`,`POST`,{}),await s.mutate()}catch(e){o(e instanceof Error?e.message:String(e))}finally{i(!1)}}let l=!p()&&window.isSecureContext&&`serviceWorker`in navigator&&`PushManager`in window&&`Notification`in window;async function f(){i(!0),o(``);try{if(t){let e=localStorage.getItem(y());e&&await b(`/api/proactive/web-push/subscriptions/${encodeURIComponent(e)}`,`DELETE`,{}),await(await(await navigator.serviceWorker.getRegistration(`/`))?.pushManager.getSubscription())?.unsubscribe(),localStorage.removeItem(y()),n(!1);return}if(await Notification.requestPermission()!==`granted`)throw Error(e?`浏览器未允许通知。`:`Browser notification permission was not granted.`);let{publicKey:r}=await b(`/api/proactive/web-push/prepare`,`POST`,{});await navigator.serviceWorker.register(`/notification-sw.js`);let i=await navigator.serviceWorker.ready,{id:a}=await b(`/api/proactive/web-push/subscriptions`,`POST`,{subscription:(await i.pushManager.getSubscription()??await i.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:r})).toJSON(),language:e?`zh`:`en`});localStorage.setItem(y(),a),n(!0)}catch(e){o(e instanceof Error?e.message:String(e))}finally{i(!1)}}return(0,L.jsxs)(`section`,{className:`max-w-2xl rounded-2xl border border-edge bg-surface-panel p-5`,children:[(0,L.jsx)(`h2`,{className:`font-medium`,children:e?`网页关闭后也接收提醒`:`Receive alerts when this page is closed`}),(0,L.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:e?`应用在线时可将重要变化送到这台设备。锁屏只显示通用提示,详情在应用内查看。`:`When the app is online, important changes can reach this device. Lock-screen alerts stay generic; open the app for details.`}),(0,L.jsx)(d,{className:`mt-4`,disabled:r||!l,onClick:()=>void f(),children:l?t?e?`关闭这台设备的提醒`:`Disable alerts on this device`:e?`在这台设备上提醒我`:`Notify me on this device`:e?`当前设备不支持系统提醒`:`System notifications are unavailable here`}),t&&(0,L.jsx)(d,{className:`ml-2 mt-4`,disabled:r,onClick:()=>void c(),children:e?`向此浏览器发送测试通知`:`Send a test to this browser`}),s.data?.probes.slice(0,3).map(t=>(0,L.jsxs)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:[new Date(t.createdAt).toLocaleString(),` · `,t.status===`opened`?e?`已点击打开`:`Opened`:t.status===`accepted`?e?`提供方已接受,等待点击确认`:`Provider accepted; awaiting open confirmation`:t.status,t.error&&` · ${t.error}`]},t.id)),a&&(0,L.jsx)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:a})]})}function z({card:e,copy:t,refresh:n,detail:r=!1}){let i=(0,S.useRef)(null);(0,S.useEffect)(()=>{if(!r||!i.current||typeof IntersectionObserver>`u`)return;let t=crypto.randomUUID(),n=!1,a=()=>{b(`/api/proactive/presence`,`POST`,{clientId:t,surface:`web`,active:n&&document.visibilityState===`visible`&&document.hasFocus(),inboxItemId:e.id,notificationRevision:e.notificationRevision}).catch(()=>{})},o=new IntersectionObserver(e=>{n=e.some(e=>e.isIntersecting),a()});o.observe(i.current);let s=window.setInterval(a,25e3);return document.addEventListener(`visibilitychange`,a),window.addEventListener(`focus`,a),window.addEventListener(`blur`,a),()=>{o.disconnect(),window.clearInterval(s),document.removeEventListener(`visibilitychange`,a),window.removeEventListener(`focus`,a),window.removeEventListener(`blur`,a),n=!1,a()}},[r,e.id,e.notificationRevision]);let o=t.locale===`zh`,s=(0,S.useRef)(null),[l,u]=(0,S.useState)(null),[f,p]=(0,S.useState)(!1),[m,h]=(0,S.useState)(``),[g,_]=(0,S.useState)(!1),[y,x]=(0,S.useState)(``),[C,w]=(0,S.useState)(``),[T,D]=(0,S.useState)(e.artifact?.content??``),[O,k]=(0,S.useState)(e.taskDraft),[A,j]=(0,S.useState)(e.id),[M,N]=(0,S.useState)(e.revision),P=A!==e.id||M!==e.revision,F=l!==`${e.id}:${e.revision}`&&![`withdrawn`,`expired`,`resolved`].includes(e.status),I=`${e.communication?o?`继续办理这件事。请读取最新卡片、成果和邮件往来,展示完整草稿与收件人让我确认后再发送:`:`Read the latest card, artifact and email thread. Show the full draft and recipients for my approval before sending: `:o?`继续讨论这件事,请先读取最新卡片和成果:`:`Continue this work. First read the latest card and artifact: `}xopc_use mode=proactive command=${e.communication?`continue_card`:`get_card`} args={"id":"${e.id}"}`,ee=e.communication?.sessionKey?`/chat/${encodeURIComponent(e.communication.sessionKey)}?${new URLSearchParams({draft:I,autoSend:`1`})}`:v(I,void 0,{projectScope:`none`}),R=`mt-2 w-full rounded-lg border border-edge bg-surface-base p-3 text-sm text-fg`;async function z(t,r={}){if(f||P)return;let i=JSON.stringify([e.id,e.revision,t,r]);s.current?.signature!==i&&(s.current={signature:i,key:crypto.randomUUID()}),p(!0),h(``);try{let i=await b(`/api/inbox/judgments/${encodeURIComponent(e.id)}/actions`,`POST`,{...r,actionId:t,expectedRevision:e.revision,idempotencyKey:s.current.key});i.card&&(j(i.card.id),N(i.card.revision),k(i.card.taskDraft),D(i.card.artifact?.content??``)),s.current=null,t===`decide`&&u(`${e.id}:${e.revision}`),(t===`useful`||t===`not_useful`)&&x(t),t===`refine`&&(x(`refined`),w(``)),_(!1),n()}catch(e){h(e instanceof Error?e.message:String(e))}finally{p(!1)}}return(0,L.jsxs)(`article`,{ref:i,className:`rounded-2xl border border-edge bg-surface-panel p-5`,children:[(0,L.jsxs)(`div`,{className:`mb-2 flex flex-wrap justify-between gap-2 text-xs text-fg-muted`,children:[(0,L.jsx)(`span`,{children:e.artifact?o?`已为你准备`:`Prepared for you`:t.kinds[e.kind]}),(0,L.jsx)(`time`,{dateTime:e.updatedAt,children:new Date(e.updatedAt).toLocaleString()})]}),(0,L.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:e.title}),(0,L.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-sm text-fg-muted`,children:e.summary}),!r&&(0,L.jsx)(a,{className:`mt-4 inline-block text-sm font-medium text-accent`,to:`/assistant-work?item=${encodeURIComponent(e.id)}`,children:e.decision?o?`查看并决定`:`Review decision`:e.artifact?o?`打开准备好的成果`:`Open prepared work`:o?`查看变化`:`View update`}),r&&e.status===`unread`&&(0,L.jsx)(d,{variant:`ghost`,disabled:f,onClick:()=>void z(`read`),children:o?`标为已读`:`Mark as read`}),r&&e.artifact&&(0,L.jsxs)(`section`,{className:`mt-5 border-t border-edge pt-5`,children:[(0,L.jsx)(`h3`,{className:`mb-3 font-medium text-fg`,children:e.artifact.title}),g?(0,L.jsxs)(`label`,{className:`text-sm`,children:[o?`编辑成果`:`Edit prepared work`,(0,L.jsx)(`textarea`,{rows:12,maxLength:12e3,className:R,value:T,onChange:e=>D(e.target.value)})]}):(0,L.jsx)(c,{content:e.artifact.content}),F&&!g&&(0,L.jsx)(d,{className:`mt-3`,variant:`ghost`,onClick:()=>{navigator.clipboard.writeText(e.artifact.content).catch(e=>h(String(e)))},children:o?`复制成果`:`Copy`}),F&&(0,L.jsx)(`div`,{className:`mt-3 flex gap-2`,children:g?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(d,{disabled:f||P||!T.trim(),onClick:()=>void z(`edit_artifact`,{artifact:{...e.artifact,content:T}}),children:t.save}),(0,L.jsx)(d,{variant:`ghost`,onClick:()=>{_(!1),D(e.artifact.content)},children:o?`取消`:`Cancel`})]}):(0,L.jsx)(d,{variant:`ghost`,onClick:()=>_(!0),children:o?`修改成果`:`Edit`})})]}),e.decision&&F&&(0,L.jsxs)(`section`,{className:`mt-5 rounded-xl border border-edge p-4`,children:[(0,L.jsx)(`h3`,{className:`text-sm font-medium`,children:e.decision.question}),O&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:o?`确认后创建项目待办,不会自动启动执行。`:`Creates a project task without starting execution.`}),(0,L.jsxs)(`label`,{className:`mt-3 block text-sm`,children:[o?`待办标题`:`Task title`,(0,L.jsx)(`input`,{className:R,maxLength:160,value:O.title,onChange:e=>k({...O,title:e.target.value})})]}),(0,L.jsxs)(`label`,{className:`mt-3 block text-sm`,children:[o?`具体内容`:`Task objective`,(0,L.jsx)(`textarea`,{className:R,maxLength:1200,rows:4,value:O.objective,onChange:e=>k({...O,objective:e.target.value})})]})]}),(0,L.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:e.decision.options.map((e,t)=>(0,L.jsx)(d,{variant:t===0?`primary`:`ghost`,disabled:f||P||e.id===`approve`&&O!==void 0&&(!O.title.trim()||!O.objective.trim()),onClick:()=>void z(`decide`,{choice:e.id,...e.id===`approve`&&O?{taskDraft:O}:{}}),children:e.label},e.id))})]}),e.followUp&&(0,L.jsxs)(`div`,{className:`mt-4 rounded-lg border border-edge p-3 text-sm`,children:[(0,L.jsx)(a,{className:`text-accent`,to:`/tasks/${encodeURIComponent(e.followUp.taskId)}`,children:e.followUp.title}),(0,L.jsx)(`p`,{className:`mt-1 text-fg-muted`,children:e.followUp.phase===`closed`?o?`任务已结束:${e.followUp.resolution??`—`}`:`Task closed: ${e.followUp.resolution??`—`}`:o?`待办已创建,仍在跟进实际进展。`:`Task created; following its progress.`})]}),e.actionStatus===`failed`&&![`expired`,`withdrawn`].includes(e.status)&&(0,L.jsxs)(`div`,{className:`mt-3 text-sm text-danger`,children:[e.actionError,(0,L.jsx)(d,{disabled:f||P,onClick:()=>void z(`retry`),children:t.retry})]}),r&&(0,L.jsxs)(`details`,{className:`mt-4 text-sm text-fg-muted`,children:[(0,L.jsxs)(`summary`,{className:`cursor-pointer`,children:[t.whyNow,` · `,t.evidence]}),(0,L.jsx)(`p`,{className:`mt-2`,children:e.whyNow}),(0,L.jsx)(`ul`,{className:`mt-2 space-y-2`,children:e.evidence.map(e=>(0,L.jsxs)(`li`,{children:[e.route?(0,L.jsx)(a,{className:`text-accent`,to:e.route,children:e.label}):e.label,e.excerpt&&(0,L.jsx)(`p`,{className:`whitespace-pre-wrap`,children:e.excerpt})]},e.id))})]}),r&&F&&(0,L.jsx)(a,{className:`mt-4 inline-block text-sm text-accent`,to:ee,children:e.communication?o?`审阅草稿并继续办理`:`Review draft and continue`:o?`接着聊这件事`:`Continue in chat`}),r&&![`withdrawn`,`expired`].includes(e.status)&&(0,L.jsxs)(`section`,{className:`mt-5 border-t border-edge pt-4`,children:[(0,L.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:o?`这次帮助合适吗?`:`Was this help right for you?`}),(0,L.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,L.jsx)(d,{variant:`ghost`,disabled:f||!!y,onClick:()=>void z(`useful`),children:o?`有帮助`:`Helpful`}),(0,L.jsx)(d,{variant:`ghost`,disabled:f||!!y,onClick:()=>void z(`not_useful`),children:o?`不适合这个场景`:`Not right for this scene`})]}),y&&(0,L.jsx)(`p`,{role:`status`,className:`mt-2 text-xs text-fg-muted`,children:y===`refined`?o?`助理会把这条要求用于当前跟进。`:`The assistant will use this instruction for this follow-up.`:o?`已记录反馈。`:`Feedback recorded.`}),!y&&(0,L.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:[[`irrelevant`,`不相关`,`Irrelevant`],[`bad_timing`,`时机不对`,`Bad timing`],[`outdated`,`信息已过时`,`Outdated`],[`too_frequent`,`提醒太多`,`Too frequent`]].map(([e,t,n])=>(0,L.jsx)(d,{variant:`ghost`,disabled:f,onClick:()=>void z(`not_useful`,{feedbackReason:e}),children:o?t:n},e))}),(0,L.jsxs)(`details`,{className:`mt-3`,children:[(0,L.jsx)(`summary`,{className:`cursor-pointer text-sm text-fg-muted`,children:o?`告诉助理下次怎么做`:`Tell the assistant what to do next time`}),(0,L.jsx)(`label`,{className:`mt-3 block text-sm`,children:(0,L.jsx)(`textarea`,{rows:3,maxLength:2e3,className:R,value:C,onChange:e=>w(e.target.value),placeholder:o?`例如:下次先给结论,技术细节放到最后。`:`For example: lead with the conclusion and put technical detail last.`})}),(0,L.jsx)(d,{className:`mt-2`,disabled:f||!C.trim(),onClick:()=>void z(`refine`,{instruction:C}),children:o?`用于这个场景`:`Use for this scene`})]})]}),r&&F&&(0,L.jsxs)(`details`,{className:`mt-4 text-sm`,children:[(0,L.jsx)(`summary`,{className:`cursor-pointer text-fg-muted`,children:o?`调整或收起`:`Adjust or dismiss`}),(0,L.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,L.jsx)(d,{disabled:f||P,onClick:()=>void z(`handled`),children:o?`我已处理`:`Already handled`}),(0,L.jsx)(d,{disabled:f||P,onClick:()=>void z(`resolve`),children:o?`这条不用`:`Dismiss`}),(0,L.jsx)(d,{disabled:f||P,onClick:()=>void z(`snooze`),children:t.snooze}),(0,L.jsx)(a,{className:`p-2 text-accent`,to:e.communication?`/assistant-work?follow-up=${encodeURIComponent(e.communication.id)}`:`/assistant-work?delegation=${encodeURIComponent(e.subscriptionId)}`,children:o?`修改关注要求`:`Adjust instructions`})]})]}),!F&&(0,L.jsx)(`p`,{className:`mt-3 text-xs text-fg-muted`,children:e.status===`resolved`?o?`已收起;事项进度以实际结果为准。`:`Dismissed; work progress is tracked separately.`:e.status===`expired`?o?`资料已变化或有效期已过,旧成果仅供参考。`:`Sources changed or this work expired. Review current context before acting.`:E(e.status,t.locale)}),l===`${e.id}:${e.revision}`&&(0,L.jsx)(`p`,{role:`status`,className:`mt-3 text-sm text-fg-muted`,children:o?`决定已提交,正在同步处理结果。`:`Decision submitted. Updating the result.`}),P&&l!==`${e.id}:${e.revision}`&&(0,L.jsxs)(`p`,{role:`alert`,className:`mt-3 text-sm text-warning`,children:[o?`卡片已更新。请载入最新版本再决定;重新载入会替换未提交的编辑。`:`This card changed. Load the latest version before deciding; this replaces unsaved edits.`,(0,L.jsx)(d,{variant:`ghost`,disabled:f,onClick:()=>{j(e.id),N(e.revision),k(e.taskDraft),D(e.artifact?.content??``),u(null),h(``)},children:o?`载入最新版本`:`Load latest version`})]}),m&&(0,L.jsxs)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:[m,(0,L.jsx)(d,{variant:`ghost`,onClick:n,children:o?`刷新最新内容`:`Refresh latest version`})]})]})}var B=`mt-2 w-full rounded-lg border border-edge bg-surface-base p-3 text-sm text-fg`;function te(e){let t=(0,C.c)(43),{sub:n,card:r,zh:i}=e,o;t[0]!==n||t[1]!==i?(o=D(n,i),t[0]=n,t[1]=i,t[2]=o):o=t[2];let s;t[3]===o?s=t[4]:(s=(0,L.jsx)(`h2`,{className:`font-semibold text-fg`,children:o}),t[3]=o,t[4]=s);let c;t[5]===n.userInstructions?c=t[6]:(c=(0,L.jsx)(`p`,{className:`mt-1 line-clamp-2 whitespace-pre-wrap text-sm text-fg-muted`,children:n.userInstructions}),t[5]=n.userInstructions,t[6]=c);let l;t[7]!==s||t[8]!==c?(l=(0,L.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[s,c]}),t[7]=s,t[8]=c,t[9]=l):l=t[9];let u=`/assistant-work?delegation=${encodeURIComponent(n.id)}`,d=i?`调整`:`Adjust`,f;t[10]!==u||t[11]!==d?(f=(0,L.jsx)(a,{className:`shrink-0 text-sm font-medium text-accent`,to:u,children:d}),t[10]=u,t[11]=d,t[12]=f):f=t[12];let p;t[13]!==l||t[14]!==f?(p=(0,L.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[l,f]}),t[13]=l,t[14]=f,t[15]=p):p=t[15];let m;t[16]!==r||t[17]!==n||t[18]!==i?(m=A(n,i,r),t[16]=r,t[17]=n,t[18]=i,t[19]=m):m=t[19];let h;t[20]===m?h=t[21]:(h=(0,L.jsx)(`p`,{className:`font-medium text-fg`,children:m}),t[20]=m,t[21]=h);let g;t[22]!==r||t[23]!==i?(g=N(r,i),t[22]=r,t[23]=i,t[24]=g):g=t[24];let _;t[25]===g?_=t[26]:(_=(0,L.jsx)(`p`,{className:`mt-1 text-fg-muted`,children:g}),t[25]=g,t[26]=_);let v;t[27]!==n.checkStatus.lastCheckedAt||t[28]!==i?(v=n.checkStatus.lastCheckedAt&&`${i?`最近检查`:`Last checked`}:${F(n.checkStatus.lastCheckedAt,i)} · `,t[27]=n.checkStatus.lastCheckedAt,t[28]=i,t[29]=v):v=t[29];let y;t[30]!==n||t[31]!==i?(y=j(n,i),t[30]=n,t[31]=i,t[32]=y):y=t[32];let b;t[33]!==v||t[34]!==y?(b=(0,L.jsxs)(`p`,{className:`mt-1 text-fg-muted`,children:[v,y]}),t[33]=v,t[34]=y,t[35]=b):b=t[35];let x;t[36]!==h||t[37]!==_||t[38]!==b?(x=(0,L.jsxs)(`div`,{className:`mt-4 rounded-xl bg-surface-hover px-4 py-3 text-sm`,children:[h,_,b]}),t[36]=h,t[37]=_,t[38]=b,t[39]=x):x=t[39];let S;return t[40]!==x||t[41]!==p?(S=(0,L.jsxs)(`article`,{className:`rounded-2xl border border-edge bg-surface-panel p-5`,children:[p,x]}),t[40]=x,t[41]=p,t[42]=S):S=t[42],S}function ne({sub:e,card:t,zh:n,refresh:r}){let[i,c]=(0,S.useState)(e.userInstructions),[l,u]=(0,S.useState)(e.delivery),[f,p]=(0,S.useState)(e.scanIntervalMinutes),[h,g]=(0,S.useState)(e.revision),[_,v]=(0,S.useState)(!1),[y,x]=(0,S.useState)(!1),[C,T]=(0,S.useState)(``),[E,O]=(0,S.useState)(``),[k,M]=(0,S.useState)(!1);async function N(t,i=!1){if(!y){x(!0),T(``),O(``);try{await b(`/api/proactive/subscriptions/${encodeURIComponent(e.id)}${i?`/check`:``}`,i?`POST`:`PATCH`,i?{}:{...t,expectedRevision:_?h:e.revision}),v(!1),O(i?n?`助理正在重新看看这个项目。`:`Your assistant is checking the project again.`:n?`助理跟进已更新。`:`Assistant follow-up updated.`),r()}catch(e){T(String(e)),r()}finally{x(!1)}}}async function P(t){if(!(k||!e.project)){M(!0),T(``),O(``);try{await m(e.scopeId,{mode:t,allowedActions:t===`auto_low_risk`?[`create_project_task`]:[]}),O(n?`行动边界已更新。`:`Action boundary updated.`),r()}catch(e){T(String(e)),r()}finally{M(!1)}}}let ee=e.scopeKind===`project`?n?`项目目标、承诺或交付风险出现有意义的变化时`:`When the project goal, commitments, or delivery risk meaningfully changes`:e.scenarioKey===`meeting_preparation`?n?`相关会议临近,或会议资料发生变化时`:`When a relevant meeting approaches or its context changes`:n?`相关沟通出现值得你接手的变化时`:`When a conversation changes in a way that needs you`;return(0,L.jsxs)(`div`,{className:`space-y-5`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`h1`,{className:`text-2xl font-semibold text-fg`,children:D(e,n)}),(0,L.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:A(e,n,t)})]}),!e.completedAt&&(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(d,{disabled:y,onClick:()=>void N({enabled:!e.enabled}),children:e.enabled?n?`暂停`:`Pause`:n?`恢复`:`Resume`}),e.scopeKind===`project`&&(0,L.jsx)(d,{variant:`ghost`,disabled:y||e.checking||!e.effectiveEnabled,onClick:()=>void N({},!0),children:n?`现在再看看`:`Check again now`})]}),E&&(0,L.jsx)(`p`,{role:`status`,className:`text-sm text-fg-muted`,children:E}),(0,L.jsxs)(`section`,{className:`rounded-2xl border border-edge p-5`,children:[(0,L.jsx)(`h2`,{className:`font-semibold`,children:n?`最近检查`:`Recent checks`}),e.checkStatus.recent.length===0?(0,L.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:n?`尚无分析记录`:`No analysis yet`}):e.checkStatus.recent.map(e=>(0,L.jsxs)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:[F(e.startedAt,n),` · `,I(e.outcome,e.status,n),e.retryAt&&` · ${n?`重试`:`Retry`} ${F(e.retryAt,n)}`]},e.id))]}),t&&(0,L.jsx)(z,{card:t,copy:w(n),refresh:r,detail:!0}),(0,L.jsxs)(`section`,{className:`rounded-2xl border border-edge bg-surface-panel p-5`,children:[(0,L.jsx)(`h2`,{className:`font-semibold text-fg`,children:n?`跟进要求`:`What your assistant remembers`}),(0,L.jsxs)(`dl`,{className:`mt-4 space-y-4 text-sm`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{className:`text-xs text-fg-subtle`,children:n?`要帮你守住什么`:`What to protect`}),(0,L.jsx)(`dd`,{className:`mt-1 whitespace-pre-wrap text-fg`,children:e.userInstructions})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{className:`text-xs text-fg-subtle`,children:n?`什么时候回来找你`:`When to come back`}),(0,L.jsx)(`dd`,{className:`mt-1 text-fg`,children:ee})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{className:`text-xs text-fg-subtle`,children:n?`接下来`:`Next`}),(0,L.jsx)(`dd`,{className:`mt-1 text-fg`,children:j(e,n)})]})]}),e.projectMonitoring&&!e.completedAt&&(0,L.jsxs)(`label`,{className:`mt-5 block border-t border-edge pt-5 text-sm`,children:[(0,L.jsx)(`span`,{className:`font-medium text-fg`,children:n?`助理可以做到哪里`:`How far the assistant can go`}),(0,L.jsxs)(o,{disabled:k,value:e.projectMonitoring.mode,onChange:e=>void P(e.target.value),children:[(0,L.jsx)(s,{value:`observe`,children:n?`只观察和整理`:`Observe and organize only`}),(0,L.jsx)(s,{value:`ask_before_action`,children:n?`先准备,行动前问我`:`Prepare first, ask before acting`}),(0,L.jsx)(s,{value:`auto_low_risk`,children:n?`自动完成明确的低风险动作`:`Complete explicit low-risk actions`})]}),(0,L.jsx)(`span`,{className:`mt-2 block text-xs text-fg-muted`,children:e.projectMonitoring.mode===`auto_low_risk`?n?`目前只包括在当前项目中创建可撤销的待办。`:`Currently limited to creating reversible tasks in this project.`:n?`涉及外部发送或不可逆操作时仍会询问你。`:`External sends and irreversible actions still require you.`})]}),_&&(0,L.jsxs)(`div`,{className:`mt-5 border-t border-edge pt-5`,children:[e.scopeKind===`project`&&(0,L.jsxs)(`label`,{className:`block text-sm`,children:[n?`检查间隔(分钟)`:`Check interval (minutes)`,(0,L.jsx)(`input`,{className:B,type:`number`,min:15,max:10080,value:f,onChange:e=>p(Number(e.target.value))})]}),(0,L.jsxs)(`label`,{className:`block text-sm`,children:[n?`希望助理关注什么,忽略什么?`:`What should the assistant follow or ignore?`,(0,L.jsx)(`textarea`,{rows:5,maxLength:12e3,className:B,value:i,onChange:e=>c(e.target.value)})]}),(0,L.jsxs)(`label`,{className:`mt-4 block text-sm`,children:[n?`什么时候提醒我`:`When to notify me`,(0,L.jsxs)(o,{value:l,onChange:e=>u(e.target.value),children:[(0,L.jsx)(s,{value:`inbox`,children:n?`回到工作台时告诉我`:`Tell me in the Workbench`}),(0,L.jsx)(s,{value:`important`,children:n?`重要变化立即告诉我`:`Tell me right away for important changes`}),(0,L.jsx)(s,{value:`digest`,children:n?`放进每日汇总`:`Include it in my daily digest`})]})]})]}),!e.completedAt&&(0,L.jsxs)(`div`,{className:`mt-5 flex flex-wrap gap-2`,children:[_?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(d,{disabled:y||!i.trim()||h!==e.revision||e.scopeKind===`project`&&(!Number.isInteger(f)||f<15||f>10080),onClick:()=>void N({userInstructions:i,delivery:l,...e.scopeKind===`project`?{scanIntervalMinutes:f}:{}}),children:n?`保存安排`:`Save arrangement`}),(0,L.jsx)(d,{variant:`ghost`,onClick:()=>v(!1),children:n?`取消`:`Cancel`})]}):(0,L.jsx)(d,{variant:`ghost`,onClick:()=>{c(e.userInstructions),u(e.delivery),p(e.scanIntervalMinutes),g(e.revision),v(!0)},children:n?`调整安排`:`Adjust arrangement`}),(0,L.jsx)(d,{variant:`ghost`,disabled:y,onClick:()=>void N({enabled:!1,completedAt:new Date().toISOString()}),children:n?`结束安排`:`End arrangement`})]}),e.project&&(0,L.jsx)(a,{className:`mt-4 inline-block text-sm text-accent`,to:`/projects/${encodeURIComponent(e.scopeId)}`,children:n?`回到项目`:`Back to project`})]}),_&&h!==e.revision&&(0,L.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:n?`安排已更新,请取消编辑后重新载入。`:`This arrangement changed. Cancel editing and reload.`}),C&&(0,L.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:C})]})}var re=`mt-2 w-full rounded-lg border border-edge bg-surface-base p-3 text-sm text-fg`,V=e=>{let t=new Date(e);return new Date(t.getTime()-t.getTimezoneOffset()*6e4).toISOString().slice(0,16)};function ie(e){let t=(0,C.c)(30),{follow:n,zh:r}=e,i=n.subject??(r?`邮件跟进`:`Email follow-up`),o;t[0]===i?o=t[1]:(o=(0,L.jsx)(`h2`,{className:`font-semibold text-fg`,children:i}),t[0]=i,t[1]=o);let s;t[2]===n.instructions?s=t[3]:(s=(0,L.jsx)(`p`,{className:`mt-1 line-clamp-2 whitespace-pre-wrap text-sm text-fg-muted`,children:n.instructions}),t[2]=n.instructions,t[3]=s);let c;t[4]!==o||t[5]!==s?(c=(0,L.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[o,s]}),t[4]=o,t[5]=s,t[6]=c):c=t[6];let l=`/assistant-work?follow-up=${encodeURIComponent(n.id)}`,u=r?`调整`:`Adjust`,d;t[7]!==l||t[8]!==u?(d=(0,L.jsx)(a,{className:`shrink-0 text-sm font-medium text-accent`,to:l,children:u}),t[7]=l,t[8]=u,t[9]=d):d=t[9];let f;t[10]!==c||t[11]!==d?(f=(0,L.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[c,d]}),t[10]=c,t[11]=d,t[12]=f):f=t[12];let p;t[13]!==n||t[14]!==r?(p=P(n,r),t[13]=n,t[14]=r,t[15]=p):p=t[15];let m;t[16]===p?m=t[17]:(m=(0,L.jsx)(`p`,{className:`font-medium text-fg`,children:p}),t[16]=p,t[17]=m);let h;t[18]!==n.dueAt||t[19]!==n.status||t[20]!==r?(h=n.status===`completed`?r?`这项安排已经结束`:`This arrangement has ended`:`${r?`约定时间`:`Follow up by`} ${F(n.dueAt,r)}`,t[18]=n.dueAt,t[19]=n.status,t[20]=r,t[21]=h):h=t[21];let g;t[22]===h?g=t[23]:(g=(0,L.jsx)(`p`,{className:`mt-1 text-fg-muted`,children:h}),t[22]=h,t[23]=g);let _;t[24]!==m||t[25]!==g?(_=(0,L.jsxs)(`div`,{className:`mt-4 rounded-xl bg-surface-hover px-4 py-3 text-sm`,children:[m,g]}),t[24]=m,t[25]=g,t[26]=_):_=t[26];let v;return t[27]!==_||t[28]!==f?(v=(0,L.jsxs)(`article`,{className:`rounded-2xl border border-edge bg-surface-panel p-5`,children:[f,_]}),t[27]=_,t[28]=f,t[29]=v):v=t[29],v}function ae({follow:e,zh:t,refresh:n}){let[r,i]=(0,S.useState)(!1),[o,s]=(0,S.useState)(e.instructions),[c,l]=(0,S.useState)(V(e.dueAt)),[u,f]=(0,S.useState)(e.revision),[p,m]=(0,S.useState)(!1),[h,g]=(0,S.useState)(``);async function _(t){m(!0),g(``);try{await b(`/api/proactive/follow-ups/${encodeURIComponent(e.id)}`,`PATCH`,{expectedRevision:r?u:e.revision,...t}),i(!1),n()}catch(e){g(String(e))}finally{m(!1)}}return(0,L.jsxs)(`article`,{className:`rounded-2xl border border-edge bg-surface-panel p-5`,children:[(0,L.jsx)(`h2`,{className:`font-medium`,children:e.subject??(t?`邮件跟进`:`Email follow-up`)}),(0,L.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:P(e,t)}),(0,L.jsxs)(`dl`,{className:`mt-4 space-y-4 text-sm`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{className:`text-xs text-fg-subtle`,children:t?`助理在等什么`:`What the assistant is waiting for`}),(0,L.jsx)(`dd`,{className:`mt-1 whitespace-pre-wrap text-fg`,children:e.instructions})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`dt`,{className:`text-xs text-fg-subtle`,children:t?`什么时候回来找你`:`When to come back`}),(0,L.jsx)(`dd`,{className:`mt-1 text-fg`,children:F(e.dueAt,t)})]})]}),(0,L.jsxs)(`p`,{className:`mt-3 text-xs text-fg-muted`,children:[t?`最近成功同步`:`Last successful sync`,`:`,F(e.lastSyncedAt,t),` · `,t?`最近检查`:`Last checked`,`:`,F(e.lastCheckedAt,t)]}),e.syncFailed&&(0,L.jsx)(`p`,{className:`mt-3 text-sm text-danger`,children:t?`助理暂时看不到最新回复,请检查邮箱连接。`:`The assistant cannot see the latest replies right now. Check the email connection.`}),(!e.sourceAvailable||!e.sourceFresh)&&(0,L.jsx)(a,{className:`mt-3 block text-sm text-accent`,to:`/connectors`,children:t?`检查邮箱连接`:`Check email connection`}),e.sessionKey&&(0,L.jsx)(a,{className:`mt-3 block text-sm text-accent`,to:`/chat/${encodeURIComponent(e.sessionKey)}`,children:t?`继续原来的对话`:`Continue the conversation`}),r&&(0,L.jsxs)(`div`,{className:`mt-4 space-y-3`,children:[(0,L.jsx)(`textarea`,{"aria-label":t?`跟进要求`:`Instructions`,className:re,rows:3,maxLength:12e3,value:o,onChange:e=>s(e.target.value)}),(0,L.jsx)(`input`,{"aria-label":t?`跟进时间`:`Follow-up time`,type:`datetime-local`,className:re,value:c,onChange:e=>l(e.target.value)}),(0,L.jsx)(d,{disabled:p||u!==e.revision||!o.trim()||!c,onClick:()=>void _({instructions:o,...V(e.dueAt)===c?{}:{dueAt:new Date(c).toISOString()}}),children:t?`保存安排`:`Save arrangement`})]}),(0,L.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:[(0,L.jsx)(d,{variant:`ghost`,disabled:p,onClick:()=>{f(e.revision),s(e.instructions),l(V(e.dueAt)),i(!r)},children:r?t?`取消修改`:`Cancel edit`:t?`调整安排`:`Adjust arrangement`}),(0,L.jsx)(d,{variant:`ghost`,disabled:p,onClick:()=>void _({status:e.status===`watching`?`paused`:`watching`}),children:e.status===`watching`?t?`暂停`:`Pause`:t?`恢复`:`Resume`}),e.status!==`completed`&&(0,L.jsx)(d,{variant:`ghost`,disabled:p,onClick:()=>void _({status:`completed`}),children:t?`结束安排`:`End arrangement`})]}),r&&u!==e.revision&&(0,L.jsx)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:t?`安排已更新,请取消修改后重新编辑。`:`This follow-up changed. Cancel and reopen the editor.`}),h&&(0,L.jsx)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:h})]})}var H=`mt-1 w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`;function U(e){let t=(0,C.c)(58),{value:n,onChange:r,zh:i}=e,a;t[0]===i?a=t[1]:(a=i?{all:`所有已启用设备`,auto:`自动选择一台设备`,browser:`浏览器 / 桌面`,mobile:`手机`,telegram:`Telegram`}:{all:`All enabled devices`,auto:`Choose one device`,browser:`Browser / desktop`,mobile:`Mobile`,telegram:`Telegram`},t[0]=i,t[1]=a);let s=a,c;t[2]!==r||t[3]!==n?(c=e=>r({...n,digestEnabled:e.target.checked}),t[2]=r,t[3]=n,t[4]=c):c=t[4];let l;t[5]!==c||t[6]!==n.digestEnabled?(l=(0,L.jsx)(`input`,{type:`checkbox`,checked:n.digestEnabled,onChange:c}),t[5]=c,t[6]=n.digestEnabled,t[7]=l):l=t[7];let u=i?`将提醒合并为每日摘要`:`Combine alerts into a daily digest`,d;t[8]!==l||t[9]!==u?(d=(0,L.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[l,u]}),t[8]=l,t[9]=u,t[10]=d):d=t[10];let f=i?`摘要时间(使用上方时区)`:`Digest time (in your selected timezone)`,p=String(n.digestHour),m;t[11]===p?m=t[12]:(m=p.padStart(2,`0`),t[11]=p,t[12]=m);let h=String(n.digestMinute),g;t[13]===h?g=t[14]:(g=h.padStart(2,`0`),t[13]=h,t[14]=g);let _=`${m}:${g}`,v;t[15]!==r||t[16]!==n?(v=e=>{let[t,i]=e.target.value.split(`:`).map(Number);r({...n,digestHour:t,digestMinute:i})},t[15]=r,t[16]=n,t[17]=v):v=t[17];let y;t[18]!==_||t[19]!==v?(y=(0,L.jsx)(`input`,{className:H,type:`time`,required:!0,value:_,onChange:v}),t[18]=_,t[19]=v,t[20]=y):y=t[20];let b;t[21]!==y||t[22]!==f?(b=(0,L.jsxs)(`label`,{className:`block text-sm`,children:[f,y]}),t[21]=y,t[22]=f,t[23]=b):b=t[23];let x=i?`提醒渠道`:`Notification channel`,S=n.preferredChannel,w;t[24]!==r||t[25]!==n?(w=e=>r({...n,preferredChannel:e.target.value}),t[24]=r,t[25]=n,t[26]=w):w=t[26];let T;t[27]===s?T=t[28]:(T=Object.entries(s).map(W),t[27]=s,t[28]=T);let E;t[29]!==w||t[30]!==T||t[31]!==n.preferredChannel?(E=(0,L.jsx)(o,{value:S,onChange:w,children:T}),t[29]=w,t[30]=T,t[31]=n.preferredChannel,t[32]=E):E=t[32];let D;t[33]!==x||t[34]!==E?(D=(0,L.jsxs)(`label`,{className:`block text-sm`,children:[x,E]}),t[33]=x,t[34]=E,t[35]=D):D=t[35];let O=i?`自动选择优先使用最近注册的浏览器,否则选择一台手机。免打扰期间的重要提醒会合并为一份摘要。`:`Automatic selection prefers the most recently registered browser, then one mobile device. Important alerts during quiet hours are combined into one digest.`,k;t[36]===O?k=t[37]:(k=(0,L.jsx)(`p`,{className:`text-xs text-fg-muted`,children:O}),t[36]=O,t[37]=k);let A;t[38]!==r||t[39]!==n?(A=e=>r({...n,suppressWhileViewing:e.target.checked}),t[38]=r,t[39]=n,t[40]=A):A=t[40];let j;t[41]!==A||t[42]!==n.suppressWhileViewing?(j=(0,L.jsx)(`input`,{type:`checkbox`,checked:n.suppressWhileViewing,onChange:A}),t[41]=A,t[42]=n.suppressWhileViewing,t[43]=j):j=t[43];let M=i?`查看对应动态时延后系统提醒`:`Delay system alerts while viewing the corresponding card`,N;t[44]!==j||t[45]!==M?(N=(0,L.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[j,M]}),t[44]=j,t[45]=M,t[46]=N):N=t[46];let P;t[47]!==r||t[48]!==n||t[49]!==i?(P=n.preferredChannel===`telegram`&&(0,L.jsxs)(`fieldset`,{className:`space-y-3 rounded-xl border border-edge p-3`,children:[(0,L.jsx)(`legend`,{className:`px-1 text-sm`,children:`Telegram`}),[`chatId`,`accountId`,`publicUrl`].map(e=>(0,L.jsxs)(`label`,{className:`block text-sm`,children:[e===`chatId`?i?`接收对话 ID`:`Destination chat ID`:e===`accountId`?i?`账号 ID(可选)`:`Account ID (optional)`:i?`可从外部访问的控制台 HTTPS 地址`:`Public HTTPS console URL`,(0,L.jsx)(`input`,{className:H,required:e!==`accountId`,value:n.telegram?.[e]??``,onChange:t=>r({...n,telegram:{chatId:n.telegram?.chatId??``,publicUrl:n.telegram?.publicUrl??``,...n.telegram?.accountId?{accountId:n.telegram.accountId}:{},[e]:e===`accountId`?t.target.value||void 0:t.target.value}})})]},e)),(0,L.jsx)(`p`,{className:`text-xs text-fg-muted`,children:i?`需要已连接 Telegram 渠道。发送通用摘要和卡片链接;链接中不要填写访问令牌。`:`Connect the Telegram channel first. Alerts contain a generic summary and a card link. Do not put access tokens in the URL.`})]}),t[47]=r,t[48]=n,t[49]=i,t[50]=P):P=t[50];let F;return t[51]!==b||t[52]!==D||t[53]!==k||t[54]!==N||t[55]!==P||t[56]!==d?(F=(0,L.jsxs)(`div`,{className:`space-y-4 border-t border-edge pt-4`,children:[d,b,D,k,N,P]}),t[51]=b,t[52]=D,t[53]=k,t[54]=N,t[55]=P,t[56]=d,t[57]=F):F=t[57],F}function W(e){let[t,n]=e;return(0,L.jsx)(s,{value:t,children:n},t)}var G=`mt-1 w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`;function oe({preferences:e,copy:t,refresh:n}){let[r,i]=(0,S.useState)(e),[a,c]=(0,S.useState)(!1),[l,u]=(0,S.useState)(``);async function f(e=r){c(!0),u(``);try{let{revision:a,...o}={...r,...e};i((await b(`/api/proactive/preferences`,`PATCH`,{...o,expectedRevision:r.revision})).preferences),u(t.saved),n()}catch(e){u(e instanceof Error?e.message:String(e))}finally{c(!1)}}return(0,L.jsxs)(`form`,{className:`max-w-2xl space-y-5 rounded-2xl border border-edge bg-surface-panel p-5`,onSubmit:e=>{e.preventDefault(),f()},children:[(0,L.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.locale===`zh`?`控制助理跟进与日常巡查;巡查结果也遵循这里的每日额度和免打扰时段。独立自动化和你主动发起的对话不受影响。静音仅控制系统提醒。`:`Controls follow-ups and heartbeat checks, including shared daily limits and quiet hours. Independent automations and your conversations are unaffected. Muting controls system notifications.`}),(0,L.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:r.checksPaused,onChange:e=>i({...r,checksPaused:e.target.checked})}),t.locale===`zh`?`暂停自动检查`:`Pause automatic checks`]}),(0,L.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:r.notificationsMuted,onChange:e=>i({...r,notificationsMuted:e.target.checked})}),t.locale===`zh`?`暂不推送提醒(成果仍可查看)`:`Mute notifications (results remain available)`]}),(0,L.jsxs)(`label`,{className:`block text-sm`,children:[t.level,(0,L.jsx)(o,{value:r.level,onChange:e=>i({...r,level:e.target.value}),children:Object.entries(t.levels).map(([e,t])=>(0,L.jsx)(s,{value:e,children:t},e))})]}),(0,L.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,L.jsxs)(`label`,{className:`text-sm`,children:[t.timezone,(0,L.jsx)(`input`,{required:!0,className:G,value:r.timezone,onChange:e=>i({...r,timezone:e.target.value})})]}),(0,L.jsxs)(`label`,{className:`text-sm`,children:[t.limit,(0,L.jsx)(`input`,{required:!0,type:`number`,min:0,max:30,className:G,value:r.dailyNotificationLimit,onChange:e=>i({...r,dailyNotificationLimit:Number(e.target.value)})})]}),(0,L.jsxs)(`label`,{className:`text-sm`,children:[t.quietStart,(0,L.jsx)(`input`,{required:!0,type:`number`,min:0,max:23,className:G,value:r.quietStartHour,onChange:e=>i({...r,quietStartHour:Number(e.target.value)})})]}),(0,L.jsxs)(`label`,{className:`text-sm`,children:[t.quietEnd,(0,L.jsx)(`input`,{required:!0,type:`number`,min:0,max:23,className:G,value:r.quietEndHour,onChange:e=>i({...r,quietEndHour:Number(e.target.value)})})]})]}),(0,L.jsx)(U,{value:r,onChange:i,zh:t.locale===`zh`}),(0,L.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.privacy}),(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(d,{type:`submit`,variant:`primary`,disabled:a,children:t.save}),(0,L.jsx)(d,{disabled:a,onClick:()=>void f({checksPausedUntil:new Date(Date.now()+36e5).toISOString()}),children:t.pause}),e.checksPausedUntil&&(0,L.jsx)(d,{disabled:a,onClick:()=>void f({checksPausedUntil:null}),children:t.resume})]}),l&&(0,L.jsx)(`p`,{role:`status`,className:`text-sm`,children:l})]})}function K(){let e=(0,C.c)(44),t=l(fe)===`zh`,n;e[0]===t?n=e[1]:(n=w(t),e[0]=t,e[1]=n);let r=n,o=_(de),s=_(ue),[c,p]=i(),m;e[2]===c?m=e[3]:(m=c.get(`view`),e[2]=c,e[3]=m);let h=m,v=h===`settings`?h:`list`,y;e[4]===c?y=e[5]:(y=c.get(`state`),e[4]=c,e[5]=y);let T=y,E=T===`paused`||T===`completed`?T:`active`,D;e[6]===c?D=e[7]:(D=c.get(`item`),e[6]=c,e[7]=D);let A=D,j;e[8]===c?j=e[9]:(j=c.get(`digest`),e[8]=c,e[9]=j);let N=j,P;e[10]===c?P=e[11]:(P=c.get(`delegation`),e[10]=c,e[11]=P);let F=P,I;e[12]===c?I=e[13]:(I=c.get(`follow-up`),e[12]=c,e[13]=I);let B=I,re=v===`list`||!!(F||B),V=u(v===`settings`?`/api/proactive/preferences`:null,x),H;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(H={refreshInterval:15e3},e[14]=H):H=e[14];let U=u(re?`/api/proactive/overview`:null,x,H),W;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(W={revalidateOnFocus:!1},e[15]=W):W=e[15];let G=u(A?`/api/inbox/judgments/${encodeURIComponent(A)}`:null,x,W),K=u(N?`/api/proactive/digests/${encodeURIComponent(N)}`:null,x),q;e[16]===c?q=e[17]:(q=c.get(`probe`),e[16]=c,e[17]=q);let J=q,Y,X;e[18]===J?(Y=e[19],X=e[20]):(Y=()=>{J&&b(`/api/proactive/web-push/probes/${encodeURIComponent(J)}/opened`,`POST`,{}).catch(le)},X=[J],e[18]=J,e[19]=Y,e[20]=X),(0,S.useEffect)(Y,X);let pe=G.error??U.error??V.error??K.error,me=G.isLoading||U.isLoading||V.isLoading||K.isLoading,he=U.data?.scenes.flatMap(ce)??[],ge=U.data?.delegations.filter(se)??[],_e;e[21]===E?_e=e[22]:(_e=e=>O(e)===E,e[21]=E,e[22]=_e);let ve=ge.filter(_e),ye=U.data?.followUps.filter(e=>k(e)===E)??[],be;e[23]===F?be=e[24]:(be=e=>e.id===F,e[23]=F,e[24]=be);let xe=ge.find(be),Se;e[25]!==B||e[26]!==U.data?.followUps?(Se=U.data?.followUps.find(e=>e.id===B),e[25]=B,e[26]=U.data?.followUps,e[27]=Se):Se=e[27];let Ce=Se,we=e=>p(e),Z=!!(A||N||F||B),Te=A?t?`跟进动态`:`Follow-up update`:N?t?`跟进摘要`:`Follow-up summary`:Z?t?`跟进详情`:`Follow-up details`:v===`settings`?t?`提醒偏好`:`Notification preferences`:t?`助理跟进`:`Assistant follow-ups`,Ee=A||N?`/`:`/assistant-work`,Q=A||N?t?`返回工作台`:`Back to Workbench`:t?`返回助理跟进`:`Back to assistant follow-ups`,De,Oe;if(e[28]!==Q||e[29]!==Ee||e[30]!==s||e[31]!==Z||e[32]!==o||e[33]!==Te||e[34]!==v||e[35]!==t?(De=()=>(o({startExtra:Z||v===`settings`?(0,L.jsx)(d,{asChild:!0,variant:`ghost`,className:`size-8 rounded-lg p-0`,children:(0,L.jsx)(a,{to:Ee,"aria-label":Q,title:Q,children:(0,L.jsx)(g,{className:`size-4`,"aria-hidden":!0})})}):null,main:(0,L.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:Te}),end:!Z&&v===`list`?(0,L.jsx)(d,{asChild:!0,variant:`ghost`,className:`h-9 rounded-lg`,children:(0,L.jsx)(a,{to:`/assistant-work?view=settings`,children:t?`提醒偏好`:`Notification preferences`})}):null}),()=>s()),Oe=[Q,Ee,s,Z,o,Te,v,t],e[28]=Q,e[29]=Ee,e[30]=s,e[31]=Z,e[32]=o,e[33]=Te,e[34]=v,e[35]=t,e[36]=De,e[37]=Oe):(De=e[36],Oe=e[37]),(0,S.useLayoutEffect)(De,Oe),me){let t;return e[38]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,L.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto bg-surface-base`,children:(0,L.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-5 px-4 py-7 sm:px-6`,children:[(0,L.jsx)(f,{className:`h-8 w-48`}),(0,L.jsx)(f,{className:`h-56 rounded-2xl`}),(0,L.jsx)(f,{className:`h-40 rounded-2xl`})]})}),e[38]=t):t=e[38],t}let $;e[39]===pe?$=e[40]:($=pe&&(0,L.jsx)(`p`,{role:`alert`,className:`rounded-xl border border-danger/25 bg-danger-soft px-4 py-3 text-sm text-danger`,children:String(pe)}),e[39]=pe,e[40]=$);let ke=A?(0,L.jsx)(L.Fragment,{children:G.data&&(0,L.jsx)(z,{card:G.data.card,copy:r,refresh:()=>void G.mutate(),detail:!0},`${G.data.card.id}:${G.data.card.revision}`)}):N?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`h2`,{className:`text-xl font-semibold text-fg`,children:t?`助理为你整理的变化`:`Updates prepared by your assistant`}),K.data?.cards.map(e=>(0,L.jsx)(z,{card:e,copy:r,refresh:()=>void K.mutate()},e.id)),K.data?.cards.length===0&&(0,L.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t?`这些事项已处理或不再需要关注。`:`These items have been handled or are no longer relevant.`})]}):xe?(0,L.jsx)(L.Fragment,{children:(0,L.jsx)(ne,{sub:xe,card:M(he,xe.id),zh:t,refresh:()=>void U.mutate()},xe.id)}):Ce?(0,L.jsx)(L.Fragment,{children:(0,L.jsx)(ae,{follow:Ce,zh:t,refresh:()=>void U.mutate()})}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`text-sm leading-6 text-fg-muted`,children:v===`settings`?t?`决定助理什么时候提醒你,以及通过什么方式送达。`:`Choose when and how your assistant should notify you.`:t?`查看和管理交给助理持续跟进的事项。可以从项目、会议或对话中发起新的跟进。`:`Review and manage work your assistant is following. Start a follow-up from a project, meeting, or conversation.`}),v===`settings`&&V.data?(0,L.jsxs)(`div`,{className:`space-y-5`,children:[(0,L.jsx)(oe,{preferences:V.data.preferences,copy:r,refresh:()=>void V.mutate()},V.data.preferences.revision),(0,L.jsx)(R,{zh:t})]}):(0,L.jsxs)(`div`,{className:`space-y-5`,children:[U.data?.heartbeat&&(0,L.jsx)(ee,{value:U.data.heartbeat,zh:t}),(0,L.jsx)(`nav`,{className:`flex gap-2`,"aria-label":t?`跟进状态`:`Follow-up status`,children:[[`active`,t?`跟进中`:`Active`],[`paused`,t?`已暂停`:`Paused`],[`completed`,t?`已结束`:`Ended`]].map(e=>{let[t,n]=e;return(0,L.jsx)(d,{variant:E===t?`secondary`:`ghost`,onClick:()=>we(t===`active`?{}:{state:t}),children:n},t)})}),(0,L.jsxs)(`div`,{className:`space-y-3`,children:[ve.map(e=>(0,L.jsx)(te,{sub:e,card:M(he,e.id),zh:t},`${e.id}:${e.revision}`)),ye.map(e=>(0,L.jsx)(ie,{follow:e,zh:t},`${e.id}:${e.revision}`)),ve.length+ye.length===0&&(0,L.jsxs)(`section`,{className:`rounded-2xl border border-edge bg-surface-panel p-6`,children:[(0,L.jsx)(`h2`,{className:`font-medium text-fg`,children:E===`active`?t?`还没有正在跟进的事项`:`No active follow-ups`:E===`paused`?t?`没有已暂停的跟进`:`No paused follow-ups`:t?`没有已结束的跟进`:`No ended follow-ups`}),E===`active`&&(0,L.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:t?`打开一个项目,或在会议和沟通场景中告诉助理,需要它持续帮你守住什么。`:`Open a project, meeting, or conversation and tell the assistant what it should keep watching for you.`})]})]})]})]}),Ae;return e[41]!==$||e[42]!==ke?(Ae=(0,L.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto bg-surface-base`,children:(0,L.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-6 px-4 py-7 sm:px-6`,children:[$,ke]})}),e[41]=$,e[42]=ke,e[43]=Ae):Ae=e[43],Ae}function se(e){return e.scenarioKey!==`communication_follow_up`}function ce(e){return e.card?[e.card]:[]}function le(){}function ue(e){return e.clearPageHeader}function de(e){return e.setPageHeader}function fe(e){return e.language}export{K as ProactivePage};
|