@xopcai/xopc 0.0.386 → 0.0.388
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/sidepanel.js +1 -1
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/adapters/cli-login.js +3 -3
- package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/telegram/src/inbound-processor.js +2 -2
- package/dist/extensions/telegram/src/outbound-sender.js +1 -1
- package/dist/extensions/telegram/src/plugin.js +2 -2
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +2 -2
- package/dist/extensions/weixin/src/auth/accounts.js +12 -12
- package/dist/extensions/weixin/src/messaging/debug-mode.js +5 -5
- package/dist/extensions/weixin/src/messaging/inbound.js +11 -11
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-D-86VOlb.js → agent-avatar-dicebear-44LqtGte.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-SmeUVHY8.js → agent-defaults-settings-panel-2VA4eKPf.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-BVT3wXq5.js → agent-plugin-dialog-DRhTOw_O.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-D7rLQFhX.js → agents-BemUH_Yf.js} +3 -3
- package/dist/gateway/static/root/assets/{app-management-settings-panel-CUR7n5iP.js → app-management-settings-panel-CR_cc7rj.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-BCotSGep.js → appearance-settings-CYofu-su.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-hk0bo9LT.js → apps-page-CHjWvDjk.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-CqxuUwox.js → automations-page-BIF0skon.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-11_Z69pr.js → automations-workspace-DOwtT4sS.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-eldB84Mj.js → block-editor-C_RD603p.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-D4TaUPYT.js → browser-automations-page-B-Ezk_8l.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-BXRlxeGV.js → browser-settings-page-BSmmTBn4.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-DVj9n65C.js → capabilities-BX1rCiVm.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-BkKgImWi.js → capabilities-CW389yo6.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-CyYlueEd.js → capabilities-page-xZgTYYDn.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-uVEgfvo0.js → capabilities-settings-panel-oqkuOjcR.js} +3 -3
- package/dist/gateway/static/root/assets/{capability-header-actions-BXv0xu56.js → capability-header-actions-Chuhscdb.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-fNb3SOzm.js → channels-Dq2C2k9M.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-CnLtparQ.js → chat-terminal-dock-srB_M-aQ.js} +1 -1
- package/dist/gateway/static/root/assets/{chunk-KS7C4IRE-BMYIfy9x.js → chunk-KS7C4IRE--EKdQGRF.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-xM0AnOlP.js → computer-settings-page-Af00Kjc0.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-CdG2WUb6.js → connector-service-page-3W0_7-4L.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-BRd08GH6.js → connectors-page-BZk-Gou5.js} +1 -1
- package/dist/gateway/static/root/assets/constants-DeXt1mV-.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-DIBbE-O8.js → date-picker-DBgZBmik.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-DDD8zokD.js → dependency-picker-BDJ406kH.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-KlF390Xn.js → desktop-pet-Do1XPn6U.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CgqQMKDC.js → desktop-pet-settings-LKeVh6OH.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-BR6isfG2.js → device-pairing-wizard-CvZpnSVw.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-vPQsW05P.js → directory-picker-path-field-BMLHoL6g.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-ZHLPrLbH.js → extension-debug-page-B0wTBCx4.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DJ42KFRN.js → extension-page-vR2r4uUB.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-6IcsyNaV.js → extension-provider-CJZ5EVpQ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-D7-5v0V4.js → extension-settings-page-1tbWe5xQ.js} +1 -1
- package/dist/gateway/static/root/assets/{fallback-models-DnYn7qOV.js → fallback-models-CW6a1-GK.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-Bwe3JWX-.js → gateway-settings-vQWTUx2c.js} +1 -1
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-DefTxF3q.js → highlighted-body-KQOG7T2V-BM__yiMn.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-hfWuVtcG.js +2 -0
- package/dist/gateway/static/root/assets/{imports-page-CTdBYZib.js → imports-page-CuR6RSUM.js} +1 -1
- package/dist/gateway/static/root/assets/index-CNH8vwcY.js +260 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CXKp57O_.js → keyboard-shortcuts-settings-DpyqH2cP.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-DzD_OzGY.js → local-app-workbench-page-B4hIoxV8.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-B0E0vttg.js → local-apps-page-S7lUpENM.js} +1 -1
- package/dist/gateway/static/root/assets/local-session-drafts-Be4BGM4Z.js +1 -0
- package/dist/gateway/static/root/assets/{logs-page-eL4fYcMl.js → logs-page-CSlZT1-L.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-DSpjodMC.js → management-settings-BYCL5CwV.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-DHfQAvZQ.js → markdown-view-CBjl-XEc.js} +2 -2
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-i9N5shss.js +1 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-CsY5tQp5.js → note-detail-panel-CJ5Earr_.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-api-nqN2wKYc.js → notes-api-BlGP533W.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-D09LjNoj.js → notes-page-CPGk8-n1.js} +5 -5
- package/dist/gateway/static/root/assets/{page-context-capture-button-DO-aP3D9.js → page-context-capture-button-C2bSXVbz.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-E8F2aGNB.js → personal-page-BjTt5R3s.js} +1 -1
- package/dist/gateway/static/root/assets/product-open-page-Cn16lm5l.js +1 -0
- package/dist/gateway/static/root/assets/{product-preview-content-B-cz-pIV.js → product-preview-content-CowgeuoG.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-WhefAh8E.js → project-detail-page-CyKx4PyN.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-CyqAs0tO.js → projects-page--_hXxUMC.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BwhRGL6m.js → remote-access-hub-Bq_eqQYf.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-o26dmPNq.js → runtime-tools-settings-panel-BgCATci5.js} +1 -1
- package/dist/gateway/static/root/assets/{scenes-page-D_e19kv_.js → scenes-page-DxE3jRPR.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-DLLdqUC3.js → schema-form-I6pzJJzg.js} +1 -1
- package/dist/gateway/static/root/assets/{send-session-input-2I-nFJcE.js → send-session-input-C293-Hbx.js} +1 -1
- package/dist/gateway/static/root/assets/{session-manager-Co5ozD0l.js → session-manager-COd9RECl.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-DX6INsiS.js → sessions-page-CQkGFnJM.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-Dtlsvsci.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-Bc_zxxRu.js → settings-page-Dy5oQDbx.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-FpF_cPPr.js → setup-status-panel-CrAazq4r.js} +1 -1
- package/dist/gateway/static/root/assets/{share-link-dialog-C47Xgzta.js → share-link-dialog-BKGI8Kr0.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-BOCcPBqQ.js → share-preview-page-BF2WaO43.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-CInxjxgJ.js → shares-settings-BNMhs-Vd.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-Bjd8WAA4.js → skill-api-RIjxQs-Y.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-8CKS3Oo2.js → skills-page-XVOxILQn.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-BgQdsrNw.js → system-settings-panel-C8aLy8T_.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-BnG5ehZ6.js → task-detail-page-o1O2IDVP.js} +2 -2
- package/dist/gateway/static/root/assets/{task-expandable-content-BCuc70Vc.js → task-expandable-content-C9ohICpw.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-CY7MoDGf.js → tunnel-api-JkDu1wiC.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-s8Sv_PIG.js → usage-page-B8K6Y4ro.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-D0S2iZF4.js → use-composer-attachments-rgW7h4sD.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-BElqELib.js → use-file-preview-expanded-DSKIxfz9.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-CyWrEtHY.js → user-model-page-C1QX47VR.js} +2 -2
- package/dist/gateway/static/root/assets/{work-discovery-overlay-DmZXLs1v.js → work-discovery-overlay-BshsEDRO.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BdLOzHm4.js → workflow-run-setup-panel-CRG3paWy.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-Cx3I3AV5.js → workflows-page-c-AoSVzm.js} +3 -3
- package/dist/gateway/static/root/assets/{workspace-api-Du7-xJ0q.js → workspace-api-JWHOFos6.js} +2 -2
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-D8B136vW.js → xopc-cloud-account-card-PDSIicr1.js} +1 -1
- package/dist/gateway/static/root/index.html +15 -15
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/index.js +2 -0
- package/dist/packages/gateway-contract/src/result-reference.js +25 -0
- package/dist/packages/gateway-contract/src/session-input-command.js +2 -1
- package/dist/packages/gateway-contract/src/task-research-result.js +1 -0
- package/dist/packages/gateway-contract/src/task-result-delivery.js +21 -0
- package/dist/packages/gateway-contract/src/turn-outcome.js +1 -0
- package/dist/src/agent/agent-manager.js +16 -16
- package/dist/src/agent/agent-scope.js +2 -2
- package/dist/src/agent/background-review/prompts.js +1 -1
- package/dist/src/agent/background-review/run-background-review.js +9 -9
- package/dist/src/agent/child-agent-factory.js +1 -1
- package/dist/src/agent/coding/repository-instructions.js +1 -1
- package/dist/src/agent/context/coordinator.js +2 -2
- package/dist/src/agent/context/execution-context.js +4 -4
- package/dist/src/agent/context/execution-scope.js +1 -1
- package/dist/src/agent/context/project-context.js +3 -3
- package/dist/src/agent/data-acquisition/service.js +1 -1
- package/dist/src/agent/embedded/codemode-extension.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +5 -5
- package/dist/src/agent/embedded/run-turn.js +13 -13
- package/dist/src/agent/embedded/session-runner.js +3 -3
- package/dist/src/agent/embedded/session-tool-result-guard.js +2 -2
- package/dist/src/agent/embedded/tool-result-truncation.js +1 -1
- package/dist/src/agent/embedded/xopc-tools-bridge.js +13 -2
- package/dist/src/agent/external-tools/cliProvider.js +4 -4
- package/dist/src/agent/external-tools/composio-provider.js +3 -3
- package/dist/src/agent/external-tools/endpoint-provider.js +4 -4
- package/dist/src/agent/external-tools/gateway-tools.js +3 -3
- package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
- package/dist/src/agent/image/generation/runtime.js +1 -1
- package/dist/src/agent/image/index.js +1 -1
- package/dist/src/agent/image/load-image-media.js +1 -1
- package/dist/src/agent/inbound/attachment-pipeline.js +4 -4
- package/dist/src/agent/inbound/inbound-loop.js +2 -2
- package/dist/src/agent/index.js +3 -3
- package/dist/src/agent/memory/context-budget.js +1 -1
- package/dist/src/agent/memory/context-recovery.js +1 -1
- package/dist/src/agent/memory/index.js +1 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js +1 -1
- package/dist/src/agent/prompt/response-language.js +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +3 -3
- package/dist/src/agent/sandbox/exec-policy.js +1 -1
- package/dist/src/agent/service/direct-turn-helpers.d.ts +2 -0
- package/dist/src/agent/service/direct-turn-helpers.js +8 -4
- package/dist/src/agent/service/process-direct-one-shot.js +4 -1
- package/dist/src/agent/service/process-direct-streaming.js +7 -6
- package/dist/src/agent/service/webchat-tts.js +2 -2
- package/dist/src/agent/service.js +21 -21
- package/dist/src/agent/session/session-config-service.js +3 -3
- package/dist/src/agent/session/session-hydrator.js +1 -1
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/filesystem-watcher.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +2 -2
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +1 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +1 -1
- package/dist/src/agent/source-context/index.js +2 -2
- package/dist/src/agent/source-context/result-context.d.ts +2 -0
- package/dist/src/agent/source-context/result-context.js +32 -0
- package/dist/src/agent/source-context/types.d.ts +2 -2
- package/dist/src/agent/source-context/types.js +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +7 -7
- package/dist/src/agent/tools/create-share-tool.js +3 -3
- package/dist/src/agent/tools/dataBatch.js +1 -1
- package/dist/src/agent/tools/delegate-tool.js +3 -3
- package/dist/src/agent/tools/exec-command.js +47 -2
- package/dist/src/agent/tools/executor.js +1 -1
- package/dist/src/agent/tools/factory.js +35 -28
- package/dist/src/agent/tools/image-generate-tool.js +3 -3
- package/dist/src/agent/tools/index.js +6 -6
- package/dist/src/agent/tools/list-dir.js +1 -1
- package/dist/src/agent/tools/personal-attention-tool.js +2 -2
- package/dist/src/agent/tools/personal-performance.d.ts +2 -0
- package/dist/src/agent/tools/personal-performance.js +82 -0
- package/dist/src/agent/tools/personal-request-result-tool.js +1 -1
- package/dist/src/agent/tools/personal-request-tool.js +3 -3
- package/dist/src/agent/tools/personal-result-tool.d.ts +2 -0
- package/dist/src/agent/tools/personal-result-tool.js +106 -0
- package/dist/src/agent/tools/personal-task-tool.d.ts +11 -1
- package/dist/src/agent/tools/personal-task-tool.js +110 -6
- package/dist/src/agent/tools/publish-artifacts.js +2 -2
- package/dist/src/agent/tools/read.js +2 -2
- package/dist/src/agent/tools/review-workspace.js +21 -2
- package/dist/src/agent/tools/send-media.js +2 -2
- package/dist/src/agent/tools/skills-tools.js +1 -1
- package/dist/src/agent/tools/task-collaboration-tool.d.ts +9 -1
- package/dist/src/agent/tools/task-collaboration-tool.js +122 -3
- package/dist/src/agent/tools/task-evidence.d.ts +3 -0
- package/dist/src/agent/tools/task-evidence.js +71 -0
- package/dist/src/agent/tools/task-result-tool.js +24 -4
- package/dist/src/agent/tools/tool-media.js +1 -1
- package/dist/src/agent/tools/tts-tool.js +1 -1
- package/dist/src/agent/tools/user-context-tool.js +1 -1
- package/dist/src/agent/tools/write.js +2 -2
- package/dist/src/agent/tools/xopc-use-tool.js +26 -5
- package/dist/src/agent/transcript/index.js +2 -2
- package/dist/src/agent/transcript/transcript-hygiene.js +2 -2
- package/dist/src/agent/workflow/subagent-runner.js +1 -1
- package/dist/src/agent-matching/delegation-service.js +1 -1
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/oauth/xopc-cloud.js +2 -2
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/automations/domain/index.js +1 -1
- package/dist/src/automations/draft/automation-draft-service.js +1 -1
- package/dist/src/automations/index.js +2 -2
- package/dist/src/browser/native-messaging-host.js +1 -1
- package/dist/src/capabilities/store-connector.js +2 -2
- package/dist/src/channels/attachments/voice-stt-webchat.js +2 -2
- package/dist/src/channels/index.js +2 -2
- package/dist/src/channels/outbound-sender.js +1 -1
- package/dist/src/channels/pairing/allow-from-file.js +9 -9
- package/dist/src/channels/pairing/pairing-store.js +6 -6
- package/dist/src/chat-commands/builtins/config.js +4 -4
- package/dist/src/chat-commands/builtins/session.js +1 -1
- package/dist/src/chat-commands/builtins/thinking.js +1 -1
- package/dist/src/chat-commands/builtins/tts.js +1 -1
- package/dist/src/chat-commands/context.js +2 -2
- package/dist/src/chat-commands/index.js +3 -3
- package/dist/src/cli/commands/agent.js +7 -7
- package/dist/src/cli/commands/config.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/gateway-health.js +1 -1
- package/dist/src/cli/commands/extension-dev.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/extension.js +2 -2
- package/dist/src/cli/commands/image.js +1 -1
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/mcp.js +1 -1
- package/dist/src/cli/commands/models.js +2 -2
- package/dist/src/cli/commands/onboard/channels/registry.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/commands/project.js +1 -1
- package/dist/src/cli/commands/skills.js +2 -2
- package/dist/src/cli/commands/tunnel.js +4 -4
- package/dist/src/cli/extension-cli-register.js +6 -6
- package/dist/src/cli/utils/gateway-client.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/cli/utils/session.js +1 -1
- package/dist/src/computer/runtime.js +1 -1
- package/dist/src/config/index.js +5 -5
- package/dist/src/config/loader.js +2 -2
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/schema.js +5 -5
- package/dist/src/connectors/cli/authorization.js +1 -1
- package/dist/src/connectors/cli/runtime.js +1 -1
- package/dist/src/connectors/composio-sessions.js +1 -1
- package/dist/src/connectors/composio.js +1 -1
- package/dist/src/connectors/connected-source-ingestion.js +4 -4
- package/dist/src/connectors/connected-source-understanding.js +4 -4
- package/dist/src/connectors/connection-recovery-service.js +5 -5
- package/dist/src/connectors/content-enrichment.js +1 -1
- package/dist/src/connectors/health.js +1 -1
- package/dist/src/connectors/learning-coordinator.js +1 -1
- package/dist/src/discussions/live-worker.js +1 -1
- package/dist/src/discussions/sealer.js +1 -1
- package/dist/src/endpoint-tools/index.js +1 -1
- package/dist/src/endpoint-tools/runtime.js +2 -2
- package/dist/src/extensions/activation-context.js +3 -3
- package/dist/src/extensions/agent-plugins/auth.js +1 -1
- package/dist/src/extensions/agent-plugins/credentials.js +1 -1
- package/dist/src/extensions/agent-plugins/source-http-fetch.js +1 -1
- package/dist/src/extensions/api.js +4 -4
- package/dist/src/extensions/bundled-extension-activation.js +1 -1
- package/dist/src/extensions/index.js +3 -3
- package/dist/src/extensions/install.js +1 -1
- package/dist/src/extensions/loader.js +2 -2
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/extensions/sdk/media.js +1 -1
- package/dist/src/extensions/update.js +1 -1
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/device-routes.js +2 -2
- package/dist/src/gateway/file-path-classifier.js +2 -2
- package/dist/src/gateway/global-defaults-admin.js +1 -1
- package/dist/src/gateway/hono/app.js +3 -3
- package/dist/src/gateway/hono/lib/config-payload.js +4 -4
- package/dist/src/gateway/hono/routes/agent-stream.js +1 -1
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/commands-skills.js +4 -4
- package/dist/src/gateway/hono/routes/config-patch/gateway.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +4 -4
- package/dist/src/gateway/hono/routes/connectors.js +1 -1
- package/dist/src/gateway/hono/routes/context-sources.js +2 -2
- package/dist/src/gateway/hono/routes/endpoint-tools.js +1 -1
- package/dist/src/gateway/hono/routes/home.js +1 -1
- package/dist/src/gateway/hono/routes/mcp.js +1 -1
- package/dist/src/gateway/hono/routes/memory-learning.js +3 -3
- package/dist/src/gateway/hono/routes/models.js +5 -5
- package/dist/src/gateway/hono/routes/notes.js +1 -1
- package/dist/src/gateway/hono/routes/personal-agent.js +1 -1
- package/dist/src/gateway/hono/routes/projects.js +3 -3
- package/dist/src/gateway/hono/routes/runtime-tools.js +1 -1
- package/dist/src/gateway/hono/routes/session-command-handler.js +2 -2
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +2 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +5 -5
- package/dist/src/gateway/hono/routes/sessions.js +3 -3
- package/dist/src/gateway/hono/routes/shares.js +2 -2
- package/dist/src/gateway/hono/routes/side-chats.js +1 -1
- package/dist/src/gateway/hono/routes/site-shares.js +1 -1
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/hono/routes/user-model-refresh.js +1 -1
- package/dist/src/gateway/hono/routes/user-model.js +7 -7
- package/dist/src/gateway/hono/routes/voice.js +7 -7
- package/dist/src/gateway/hono/routes/workflows.js +1 -1
- package/dist/src/gateway/index.js +1 -1
- package/dist/src/gateway/lock.js +11 -11
- package/dist/src/gateway/media-access.js +2 -2
- package/dist/src/gateway/mobile-privacy.js +2 -2
- package/dist/src/gateway/ports.js +6 -6
- package/dist/src/gateway/run-loop.js +1 -1
- package/dist/src/gateway/scenes/mailContext.js +1 -1
- package/dist/src/gateway/scenes/slackThreadSource.js +1 -1
- package/dist/src/gateway/server.js +1 -1
- package/dist/src/gateway/service/agent-runner.js +3 -3
- package/dist/src/gateway/service/config-coordinator.js +2 -2
- package/dist/src/gateway/service/marketplace-service.js +2 -2
- package/dist/src/gateway/service/run-gateway-agent.js +24 -5
- package/dist/src/gateway/service/session-command-service.js +2 -2
- package/dist/src/gateway/service/session-input-coordinator.js +2 -2
- package/dist/src/gateway/service.js +72 -41
- package/dist/src/gateway/session-context-summary.js +4 -4
- package/dist/src/gateway/workspace-editor-path.js +2 -2
- package/dist/src/home-intelligence/generator.js +2 -2
- package/dist/src/home-intelligence/host.js +2 -2
- package/dist/src/imports/compatibility.js +1 -1
- package/dist/src/imports/inventory.js +3 -3
- package/dist/src/imports/productImport.js +2 -2
- package/dist/src/imports/runtime.js +1 -1
- package/dist/src/infra/gateway-processes.js +2 -2
- package/dist/src/infra/path-env.js +3 -3
- package/dist/src/infra/update-global.js +9 -9
- package/dist/src/knowledge/connected-knowledge-pipeline.js +2 -2
- package/dist/src/knowledge/index.js +1 -1
- package/dist/src/knowledge-memory/repository.js +1 -1
- package/dist/src/local-apps/service.js +2 -2
- package/dist/src/mcp/gateway-http-client.js +1 -1
- package/dist/src/media/session-references.js +1 -1
- package/dist/src/media-understanding/openai-compatible-audio.js +1 -1
- package/dist/src/memory-learning/source-learning.js +4 -4
- package/dist/src/memory-learning/task-receipts.js +1 -1
- package/dist/src/notes/agent-context.js +4 -4
- package/dist/src/notes/index.js +1 -1
- package/dist/src/notes/service.js +3 -3
- package/dist/src/personal-agent/capability-service.js +2 -2
- package/dist/src/personal-agent/communication.js +1 -0
- package/dist/src/personal-agent/performance.d.ts +83 -0
- package/dist/src/personal-agent/performance.js +65 -0
- package/dist/src/personal-agent/policy.d.ts +1 -1
- package/dist/src/personal-agent/policy.js +1 -0
- package/dist/src/personal-agent/proactivity/routes.js +1 -1
- package/dist/src/personal-agent/proactivity/service.js +7 -7
- package/dist/src/personal-agent/prompt-context.js +9 -7
- package/dist/src/personal-agent/prompts.js +7 -4
- package/dist/src/personal-agent/reply-composer.js +86 -15
- package/dist/src/personal-agent/request-delivery.js +5 -3
- package/dist/src/personal-agent/request-service.js +5 -5
- package/dist/src/personal-agent/result-extraction.d.ts +42 -0
- package/dist/src/personal-agent/result-extraction.js +209 -0
- package/dist/src/personal-agent/result-read-continuations.d.ts +13 -0
- package/dist/src/personal-agent/result-read-continuations.js +78 -0
- package/dist/src/personal-agent/result-reader.d.ts +43 -0
- package/dist/src/personal-agent/result-reader.js +461 -0
- package/dist/src/personal-agent/service.js +1 -1
- package/dist/src/personal-agent/task-cancel.js +1 -1
- package/dist/src/platform/index.js +1 -1
- package/dist/src/projects/index.js +1 -1
- package/dist/src/projects/project-agent-suggestion.js +1 -1
- package/dist/src/projects/project-service.js +1 -1
- package/dist/src/projects/project-skill-service.js +2 -2
- package/dist/src/projects/workspace.js +1 -1
- package/dist/src/providers/model-reference-auditor.js +1 -1
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/realtime/runtime.js +1 -1
- package/dist/src/remote-access/exposure-manager.js +1 -1
- package/dist/src/routing/agent-session-key.js +1 -1
- package/dist/src/scenes/taskFollowUp/agentExecutor.js +4 -4
- package/dist/src/scenes/taskFollowUp/resources.js +2 -2
- package/dist/src/scenes/taskFollowUp/service.js +6 -6
- package/dist/src/session/client-history.d.ts +1 -1
- package/dist/src/session/client-history.js +1 -1
- package/dist/src/session/index.js +2 -2
- package/dist/src/session/init-session-turn.js +1 -1
- package/dist/src/session/resolve-session.js +1 -1
- package/dist/src/session/session-context-for-llm.js +2 -0
- package/dist/src/session/store.js +5 -5
- package/dist/src/session/thinking-resolve.js +1 -1
- package/dist/src/share/hosted-session-share.js +2 -2
- package/dist/src/share/session-share-service.js +1 -1
- package/dist/src/share/share-store.js +1 -1
- package/dist/src/share/share-thumbnail.js +1 -1
- package/dist/src/share/site-share-store.js +1 -1
- package/dist/src/storage/sqlite/connection.js +9 -9
- package/dist/src/storage/sqlite/migrations/251_personal_result_reads.sql +40 -0
- package/dist/src/storage/sqlite/migrations/252_task_work_revisions.sql +15 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/tasks/capabilities/read.js +2 -2
- package/dist/src/tasks/capabilities/write.js +1 -1
- package/dist/src/tasks/home-query-service.js +2 -2
- package/dist/src/tasks/index.js +4 -4
- package/dist/src/tasks/task-allocation-service.js +64 -13
- package/dist/src/tasks/task-application-service.d.ts +18 -0
- package/dist/src/tasks/task-application-service.js +135 -4
- package/dist/src/tasks/task-collaboration-delivery.js +1 -1
- package/dist/src/tasks/task-context-assembler.js +10 -7
- package/dist/src/tasks/task-contract-definition.d.ts +3 -0
- package/dist/src/tasks/task-contract-planner.js +50 -16
- package/dist/src/tasks/task-conversation-repository.js +1 -1
- package/dist/src/tasks/task-evidence-ranges.d.ts +7 -0
- package/dist/src/tasks/task-evidence-ranges.js +20 -0
- package/dist/src/tasks/task-execution-capabilities.d.ts +26 -0
- package/dist/src/tasks/task-execution-capabilities.js +117 -0
- package/dist/src/tasks/task-handoff-service.js +1 -1
- package/dist/src/tasks/task-handoff.d.ts +56 -0
- package/dist/src/tasks/task-handoff.js +510 -0
- package/dist/src/tasks/task-main-update-decision-service.js +3 -3
- package/dist/src/tasks/task-model-call.js +1 -1
- package/dist/src/tasks/task-read-model-projector.d.ts +6 -0
- package/dist/src/tasks/task-read-model-projector.js +12 -1
- package/dist/src/tasks/task-research-repair.js +6 -2
- package/dist/src/tasks/task-research-result.d.ts +16 -2
- package/dist/src/tasks/task-research-result.js +126 -42
- package/dist/src/tasks/task-result-delivery-repository.js +27 -4
- package/dist/src/tasks/task-result-delivery-service.js +38 -10
- package/dist/src/tasks/task-run-coordinator.js +7 -5
- package/dist/src/tasks/task-run-dispatcher.d.ts +1 -0
- package/dist/src/tasks/task-run-dispatcher.js +3 -2
- package/dist/src/tui/backends/embedded-backend.js +13 -13
- package/dist/src/tui/backends/gateway-realtime-backend.js +2 -2
- package/dist/src/tui/extension-host/load-extensions.js +2 -2
- package/dist/src/tui/tui-commands.js +5 -5
- package/dist/src/tui/tui-picker-overlay.js +1 -1
- package/dist/src/tui/tui-skills-autocomplete.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +4 -4
- package/dist/src/tui/tui.js +6 -6
- package/dist/src/tunnel/gateway-lifecycle.js +1 -1
- package/dist/src/user-context/access-policy.js +2 -2
- package/dist/src/user-model/bootstrap.js +1 -1
- package/dist/src/user-model/capture/executor.js +1 -1
- package/dist/src/user-model/index.js +2 -2
- package/dist/src/voice/realtime/memory-context.js +7 -7
- package/dist/src/voice/realtime/runtime.js +4 -4
- package/dist/src/voice/stt/index.js +2 -2
- package/dist/src/voice/stt/preflight.js +1 -1
- package/dist/src/voice/stt/providers/alibaba-transcription.js +1 -1
- package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +1 -1
- package/dist/src/voice/stt/transcribe-core.js +1 -1
- package/dist/src/voice/tts/index.js +3 -3
- package/dist/src/voice/tts/merge-config.js +1 -1
- package/dist/src/voice/tts/payload.js +1 -1
- package/dist/src/voice/tts/providers/xopc-cloud-speech.js +1 -1
- package/dist/src/voice/tts/speak-core.js +1 -1
- package/dist/src/work-discovery/incremental-repository.js +1 -1
- package/dist/src/work-discovery/service.js +7 -7
- package/dist/src/workflows/context/workflow-context.js +1 -1
- package/dist/src/workflows/engine/workflow-engine.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +7 -7
- package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
- package/package.json +5 -3
- package/dist/gateway/static/root/assets/constants-CpWu0oHS.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BtSy2hRV.js +0 -2
- package/dist/gateway/static/root/assets/index-B08iR7fT.js +0 -260
- package/dist/gateway/static/root/assets/local-session-drafts-D_tYFy7d.js +0 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-BTrk2wWv.js +0 -1
- package/dist/gateway/static/root/assets/product-open-page-aUoA-uPw.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-C4_gW1vw.js +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { resolveStateDir } from "../config/paths-state.js";
|
|
2
|
-
import { resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
|
|
3
2
|
import { init_paths, resolveAgentProfileDir, resolveBundledSkillsDir } from "../config/paths.js";
|
|
4
|
-
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
5
|
-
import { resolveBootstrapFilesSync } from "../agent/bootstrap/bootstrap-files.js";
|
|
6
|
-
import { listConnectorInstances } from "../connectors/instances.js";
|
|
7
3
|
import { createSkillConfigManager, isSkillEnabled } from "../agent/skills/config.js";
|
|
8
4
|
import { loadSkills } from "../agent/skills/index.js";
|
|
5
|
+
import { resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
|
|
9
6
|
import { createWorkflowCatalog } from "../agent/workflow/catalog.js";
|
|
7
|
+
import { listConnectorInstances } from "../connectors/instances.js";
|
|
8
|
+
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
10
9
|
import "../config/index.js";
|
|
10
|
+
import { resolveBootstrapFilesSync } from "../agent/bootstrap/bootstrap-files.js";
|
|
11
11
|
import { basename } from "node:path";
|
|
12
12
|
//#region src/tui/tui-startup-resources.ts
|
|
13
13
|
init_paths();
|
package/dist/src/tui/tui.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { version } from "../../package.js";
|
|
2
2
|
import { resolveStateDir, resolveXopcDatabasePath } from "../config/paths-state.js";
|
|
3
3
|
import { init_agent_session_key, normalizeAgentId } from "../routing/agent-session-key.js";
|
|
4
|
-
import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
|
|
5
4
|
import { init_paths } from "../config/paths.js";
|
|
5
|
+
import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
|
|
6
6
|
import { getAllModels, getAllProviders, getApiKey, init_providers, isProviderConfiguredSync } from "../providers/index.js";
|
|
7
|
+
import { ensureStarterAgentsInitialized } from "../agent/starter-agents.js";
|
|
8
|
+
import { loadConfig } from "../config/loader.js";
|
|
9
|
+
import "../config/index.js";
|
|
10
|
+
import { MAX_WEBCHAT_ATTACHMENT_FILE_BYTES } from "../gateway/chat-limits.js";
|
|
11
|
+
import { renderWorkflowFinalSummary, renderWorkflowPanel } from "../agent/workflow/snapshot.js";
|
|
7
12
|
import { isTerminalWorkflowRunStatus } from "../workflows/domain/run.js";
|
|
8
13
|
import "../workflows/domain/index.js";
|
|
9
14
|
import { ProjectTrustStore, hasTrustRequiringProjectResources } from "../project-trust/trust-store.js";
|
|
10
|
-
import { MAX_WEBCHAT_ATTACHMENT_FILE_BYTES } from "../gateway/chat-limits.js";
|
|
11
|
-
import { loadConfig } from "../config/loader.js";
|
|
12
|
-
import { renderWorkflowFinalSummary, renderWorkflowPanel } from "../agent/workflow/snapshot.js";
|
|
13
|
-
import { ensureStarterAgentsInitialized } from "../agent/starter-agents.js";
|
|
14
|
-
import "../config/index.js";
|
|
15
15
|
import { runViewToSnapshot } from "../workflows/service/run-view-to-snapshot.js";
|
|
16
16
|
import { resolveTuiConversationId, resolveTuiStartupConversationId } from "../routing/resolve-tui-session-key.js";
|
|
17
17
|
import { applyThemeById, getBashExcludeBorderColor, getBashModeBorderColor, getCustomThemesDir, getThemeExports, getThinkingBorderColor, initTuiTheme, listAvailableThemeIds, resolveThemePalette } from "./theme-manager.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { resolveGatewayEffectiveHost } from "../config/gateway-bind.js";
|
|
4
|
+
import { resolveGatewayAuth } from "../gateway/auth.js";
|
|
4
5
|
import { resolveOptionalTunnelRegistrationSecret, resolveTunnelBrokerUrl } from "./env.js";
|
|
5
6
|
import { getTunnelService } from "./tunnel-service.js";
|
|
6
|
-
import { resolveGatewayAuth } from "../gateway/auth.js";
|
|
7
7
|
import { requireTunnelGatewayToken } from "./auth-policy.js";
|
|
8
8
|
import { hasValidTunnelConsent } from "./consent.js";
|
|
9
9
|
import { resolveFrpSubdomainHost } from "./frp-subdomain-host.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getSessionConfig, init_config_repository } from "../storage/sqlite/config-repository.js";
|
|
2
|
-
import { isOwnerIdentity } from "./identity-bindings.js";
|
|
3
|
-
import { init_config, resolveKnowledgeReadPolicy } from "./config.js";
|
|
4
2
|
import { getConversationRouting } from "../storage/sqlite/conversation-repository.js";
|
|
5
3
|
import { init_session_key } from "../routing/session-key.js";
|
|
4
|
+
import { isOwnerIdentity } from "./identity-bindings.js";
|
|
5
|
+
import { init_config, resolveKnowledgeReadPolicy } from "./config.js";
|
|
6
6
|
//#region src/user-context/access-policy.ts
|
|
7
7
|
init_config();
|
|
8
8
|
init_session_key();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createCollaborationRule, init_collaboration_rule_repository, listCollaborationRules } from "../storage/sqlite/collaboration-rule-repository.js";
|
|
2
|
-
import { createPriorityWindow, createUserGoal, listPriorityWindows, listUserGoals } from "./goals.js";
|
|
3
2
|
import { reconcileAssertion } from "./repository.js";
|
|
4
3
|
import { applyUserProfilePatch } from "./profile.js";
|
|
4
|
+
import { createPriorityWindow, createUserGoal, listPriorityWindows, listUserGoals } from "./goals.js";
|
|
5
5
|
//#region src/user-model/bootstrap.ts
|
|
6
6
|
init_collaboration_rule_repository();
|
|
7
7
|
function statements(values, limit) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createCollaborationRule, init_collaboration_rule_repository, listCollaborationRules } from "../../storage/sqlite/collaboration-rule-repository.js";
|
|
2
2
|
import { createContextEvidence, init_context_evidence_repository } from "../../storage/sqlite/context-evidence-repository.js";
|
|
3
|
-
import { createUserGoal, listUserGoals } from "../goals.js";
|
|
4
3
|
import { deleteUserAssertion, getAssertionSlot, getUserAssertion, linkAssertionEvidence, mergeAssertionObservation, reconcileAssertion, setAssertionStatus } from "../repository.js";
|
|
4
|
+
import { createUserGoal, listUserGoals } from "../goals.js";
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
6
6
|
//#region src/user-model/capture/executor.ts
|
|
7
7
|
init_context_evidence_repository();
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { PERSONAL_DOMAINS, USER_MODEL_PRINCIPAL_ID, defaultAssertionDomain, defaultAssertionLayer, init_domain, validateCandidate, validateScope } from "./domain.js";
|
|
2
|
-
import { createPriorityWindow, createUserGoal, listPriorityWindows, listUserGoals, setUserGoalStatus, updatePriorityWindow, updateUserGoal } from "./goals.js";
|
|
3
2
|
import { defaultReviewAt, isAssertionValidAt, requiresBoundedValidity, resolveCurrentAssertion } from "./temporal.js";
|
|
4
3
|
import { deleteUserAssertion, getActiveAssertionByPredicate, getActiveAssertionForSlot, getAssertionSlot, getUserAssertion, getUserTimezone, linkAssertionEvidence, listSlotAssertions, listUserAssertionSources, listUserAssertions, mergeAssertionObservation, reconcileAssertion, setAssertionStatus, setUserAssertionScope } from "./repository.js";
|
|
4
|
+
import { applyUserProfilePatch, getUserProfileSnapshot } from "./profile.js";
|
|
5
5
|
import { listActionRuleSuggestions } from "./action-rule-suggestions.js";
|
|
6
6
|
import { calculateExecutionValue } from "./importance.js";
|
|
7
|
+
import { createPriorityWindow, createUserGoal, listPriorityWindows, listUserGoals, setUserGoalStatus, updatePriorityWindow, updateUserGoal } from "./goals.js";
|
|
7
8
|
import { deleteUserModelObservationsForGrant, linkUserAssertions, listUserAssertionEdges, listUserModelObservations, recordUserModelObservation } from "./observation-repository.js";
|
|
8
|
-
import { applyUserProfilePatch, getUserProfileSnapshot } from "./profile.js";
|
|
9
9
|
import { bootstrapUserModel } from "./bootstrap.js";
|
|
10
10
|
import { canUseAssertion, isWorkingAssumption } from "./usage-policy.js";
|
|
11
11
|
//#region src/user-model/index.ts
|
|
@@ -3,18 +3,18 @@ import { init_logger } from "../../utils/logger.js";
|
|
|
3
3
|
import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
|
|
4
4
|
import { init_session_repository } from "../../storage/sqlite/session-repository.js";
|
|
5
5
|
import { getSessionConfig, init_config_repository } from "../../storage/sqlite/config-repository.js";
|
|
6
|
-
import {
|
|
7
|
-
import { getKnowledgeItem } from "../../knowledge-memory/repository.js";
|
|
8
|
-
import { init_config, resolveKnowledgeReadPolicy } from "../../user-context/config.js";
|
|
6
|
+
import { getUserAssertion } from "../../user-model/repository.js";
|
|
9
7
|
import { getConversationRouting } from "../../storage/sqlite/conversation-repository.js";
|
|
10
8
|
import { getConversation } from "../../routing/agent-session-key.js";
|
|
11
9
|
import { init_session_key } from "../../routing/session-key.js";
|
|
12
|
-
import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
|
|
13
|
-
import "../../knowledge-memory/index.js";
|
|
14
|
-
import { stripRuntimeContextFromUserMessage } from "../../session/user-message-display.js";
|
|
15
|
-
import { getUserAssertion } from "../../user-model/repository.js";
|
|
16
10
|
import "../../user-model/index.js";
|
|
11
|
+
import { init_config, resolveKnowledgeReadPolicy } from "../../user-context/config.js";
|
|
12
|
+
import { canUseKnowledge } from "../../knowledge-memory/usage-policy.js";
|
|
13
|
+
import { getKnowledgeItem } from "../../knowledge-memory/repository.js";
|
|
14
|
+
import "../../knowledge-memory/index.js";
|
|
15
|
+
import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
|
|
17
16
|
import { buildExecutionContext } from "../../agent/context/execution-context.js";
|
|
17
|
+
import { stripRuntimeContextFromUserMessage } from "../../session/user-message-display.js";
|
|
18
18
|
//#region src/voice/realtime/memory-context.ts
|
|
19
19
|
init_config();
|
|
20
20
|
init_session_key();
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
3
|
import { init_changes, onUserContextChange } from "../../user-context/changes.js";
|
|
4
|
+
import { getPersonalAgentByConversation } from "../../personal-agent/repository.js";
|
|
4
5
|
import { decodeVoiceUplinkAudioFrame, encodeVoiceAudioFrame } from "../../../packages/realtime-protocol/src/voice-audio.js";
|
|
5
6
|
import { VOICE_REALTIME_HEARTBEAT_INTERVAL_MS, VOICE_REALTIME_MAX_BINARY_FRAME_BYTES, VOICE_REALTIME_START_TIMEOUT_MS, VOICE_REALTIME_WS_PATH, init_voice, parseVoiceClientJsonFrame, parseVoiceClientMessage } from "../../../packages/realtime-protocol/src/voice.js";
|
|
6
7
|
import { getModelCatalogStore, init_model_catalog_store } from "../../providers/model-catalog-store.js";
|
|
7
|
-
import { getPersonalAgentByConversation } from "../../personal-agent/repository.js";
|
|
8
|
-
import { getMediaUnderstandingProvider } from "../../media-understanding/registry.js";
|
|
9
|
-
import { resolveSTTProviderChain } from "../stt/factory.js";
|
|
10
|
-
import { mergeSttConfigFromAppConfig } from "../stt/config.js";
|
|
11
8
|
import { ALIBABA_REALTIME_TTS_MODEL } from "../tts/providers/alibaba-speech.js";
|
|
12
9
|
import { resolveSpeechProviderChain } from "../tts/factory.js";
|
|
13
10
|
import { mergeTtsConfigFromAppConfig } from "../tts/merge-config.js";
|
|
11
|
+
import { getMediaUnderstandingProvider } from "../../media-understanding/registry.js";
|
|
12
|
+
import { resolveSTTProviderChain } from "../stt/factory.js";
|
|
13
|
+
import { mergeSttConfigFromAppConfig } from "../stt/config.js";
|
|
14
14
|
import { voiceConversationInstructions } from "./conversation-context.js";
|
|
15
15
|
import { verifyDeviceConnectionProof } from "../../gateway/security/device-request-proof.js";
|
|
16
16
|
import { createPreauthConnectionBudget } from "../../gateway/security/preauth-connection-budget.js";
|
|
@@ -2,10 +2,10 @@ import { openAiTranscriptionProvider } from "./providers/openai-transcription.js
|
|
|
2
2
|
import { alibabaTranscriptionProvider } from "./providers/alibaba-transcription.js";
|
|
3
3
|
import "./providers/index.js";
|
|
4
4
|
import { resolveSTTProviderChain, resolveSTTProviderConfig, resolveSTTProviderOrder } from "./factory.js";
|
|
5
|
-
import { STTTranscriptionError, transcribe } from "./transcribe-core.js";
|
|
6
5
|
import { isSTTAvailable } from "./availability.js";
|
|
7
|
-
import { mergeSttConfigFromAppConfig } from "./config.js";
|
|
8
6
|
import { checkMentionInTranscription } from "./mention.js";
|
|
7
|
+
import { STTTranscriptionError, transcribe } from "./transcribe-core.js";
|
|
8
|
+
import { mergeSttConfigFromAppConfig } from "./config.js";
|
|
9
9
|
import { audioPreflightTranscribe } from "./preflight.js";
|
|
10
10
|
//#region src/voice/stt/index.ts
|
|
11
11
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { transcribe } from "./transcribe-core.js";
|
|
4
3
|
import { isSTTAvailable } from "./availability.js";
|
|
5
4
|
import { checkMentionInTranscription } from "./mention.js";
|
|
5
|
+
import { transcribe } from "./transcribe-core.js";
|
|
6
6
|
//#region src/voice/stt/preflight.ts
|
|
7
7
|
init_logger();
|
|
8
8
|
const log = createLogger("STT:Preflight");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createLogger } from "../../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../../utils/logger.js";
|
|
3
|
-
import { registerMediaUnderstandingProvider } from "../../../media-understanding/registry.js";
|
|
4
3
|
import { postJsonRequest } from "../../../media-shared/http/provider-http.js";
|
|
5
4
|
import "../../../media-shared/http/index.js";
|
|
5
|
+
import { registerMediaUnderstandingProvider } from "../../../media-understanding/registry.js";
|
|
6
6
|
import { openDashScopeStreamingStt } from "../../dashscope/streaming-stt-session.js";
|
|
7
7
|
//#region src/voice/stt/providers/alibaba-transcription.ts
|
|
8
8
|
init_logger();
|
|
@@ -4,10 +4,10 @@ import { getProviderAuthService, init_provider_auth_service } from "../../../pro
|
|
|
4
4
|
import { captureCloudUsageResponse } from "../../../usage/cloud-receipts.js";
|
|
5
5
|
import { cloudCreditBudgetHeaders, rejectUnbudgetedCloudTransport, reportCloudCreditError } from "../../../providers/xopc-cloud-credit-budget.js";
|
|
6
6
|
import { compareCatalogModels } from "../../../providers/model-catalog-ranking.js";
|
|
7
|
-
import { registerMediaUnderstandingProvider } from "../../../media-understanding/registry.js";
|
|
8
7
|
import { trackCloudCapabilityUsage } from "../../../usage/cloud-capability.js";
|
|
9
8
|
import { openPlatformStt } from "../../platform-streams.js";
|
|
10
9
|
import { platformVoiceModels, requirePlatformVoiceModel } from "../../platform-catalog.js";
|
|
10
|
+
import { registerMediaUnderstandingProvider } from "../../../media-understanding/registry.js";
|
|
11
11
|
//#region src/voice/stt/providers/xopc-cloud-transcription.ts
|
|
12
12
|
init_model_catalog_store();
|
|
13
13
|
init_provider_auth_service();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { runAudioTranscription } from "../../media-understanding/audio-transcription-runner.js";
|
|
4
3
|
import { resolveSTTProviderChain } from "./factory.js";
|
|
4
|
+
import { runAudioTranscription } from "../../media-understanding/audio-transcription-runner.js";
|
|
5
5
|
//#region src/voice/stt/transcribe-core.ts
|
|
6
6
|
init_logger();
|
|
7
7
|
const log = createLogger("STT");
|
|
@@ -4,12 +4,12 @@ import { alibabaSpeechProvider } from "./providers/alibaba-speech.js";
|
|
|
4
4
|
import { edgeSpeechProvider } from "./providers/edge-speech.js";
|
|
5
5
|
import { MINIMAX_TTS_MODELS, MINIMAX_TTS_VOICES, minimaxSpeechProvider } from "./providers/minimax-speech.js";
|
|
6
6
|
import "./providers/index.js";
|
|
7
|
-
import { buildTtsSystemPromptHint, hasTtsDirectives, parseTtsDirectives, stripTtsDirectives } from "./directives.js";
|
|
8
7
|
import { getAvailableProviders, isProviderConfigured, isTTSAvailable, listRegisteredSpeechProviderIds, resolveProviderOrder, resolveSpeechProvider, resolveSpeechProviderChain } from "./factory.js";
|
|
9
|
-
import { preprocessText } from "./preprocess.js";
|
|
10
|
-
import { speak, speakStream, speakWithProvider } from "./speak-core.js";
|
|
11
8
|
import { appendTtsReadinessNote, formatTtsSetupHint, mergeTtsConfigFromAppConfig } from "./merge-config.js";
|
|
12
9
|
import { TTSService, getChannelOutputFormat, getSupportedChannels, isVoiceCompatibleChannel, shouldUseTTS } from "./service.js";
|
|
10
|
+
import { buildTtsSystemPromptHint, hasTtsDirectives, parseTtsDirectives, stripTtsDirectives } from "./directives.js";
|
|
11
|
+
import { preprocessText } from "./preprocess.js";
|
|
12
|
+
import { speak, speakStream, speakWithProvider } from "./speak-core.js";
|
|
13
13
|
import { recordTtsFailure, recordTtsSuccess, ttsStatusTracker } from "./status-tracker.js";
|
|
14
14
|
import { isTtsEnabled, maybeApplyTtsToPayload, resolveTtsAutoMode } from "./payload.js";
|
|
15
15
|
export { MINIMAX_TTS_MODELS, MINIMAX_TTS_VOICES, OPENAI_TTS_MODELS, OPENAI_TTS_VOICES, TTSService, alibabaSpeechProvider, appendTtsReadinessNote, buildTtsSystemPromptHint, edgeSpeechProvider, formatTtsSetupHint, getAvailableProviders, getChannelOutputFormat, getSpeechProvider, getSupportedChannels, hasTtsDirectives, isProviderConfigured, isTTSAvailable, isTtsEnabled, isVoiceCompatibleChannel, listRegisteredSpeechProviderIds, listSpeechProviders, maybeApplyTtsToPayload, mergeTtsConfigFromAppConfig, minimaxSpeechProvider, openAiSpeechProvider, parseTtsDirectives, preprocessText, recordTtsFailure, recordTtsSuccess, registerSpeechProvider, resolveProviderOrder, resolveSpeechProvider, resolveSpeechProviderChain, resolveTtsAutoMode, shouldUseTTS, speak, speakStream, speakWithProvider, stripTtsDirectives, ttsStatusTracker };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { isTTSAvailable } from "./factory.js";
|
|
2
1
|
import { DEFAULT_TTS_CONFIG } from "./types.js";
|
|
2
|
+
import { isTTSAvailable } from "./factory.js";
|
|
3
3
|
//#region src/voice/tts/merge-config.ts
|
|
4
4
|
/**
|
|
5
5
|
* Merge persisted app config `tts` with defaults to a full {@link TTSConfig}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { speak } from "./speak-core.js";
|
|
4
3
|
import { getChannelOutputFormat, shouldUseTTS } from "./service.js";
|
|
4
|
+
import { speak } from "./speak-core.js";
|
|
5
5
|
import { compressAudio } from "./audio.js";
|
|
6
6
|
import { recordTtsFailure, recordTtsSuccess } from "./status-tracker.js";
|
|
7
7
|
//#region src/voice/tts/payload.ts
|
|
@@ -6,10 +6,10 @@ import { getProviderAuthService, init_provider_auth_service } from "../../../pro
|
|
|
6
6
|
import { captureCloudUsageResponse } from "../../../usage/cloud-receipts.js";
|
|
7
7
|
import { cloudCreditBudgetHeaders, rejectUnbudgetedCloudTransport, reportCloudCreditError } from "../../../providers/xopc-cloud-credit-budget.js";
|
|
8
8
|
import { compareCatalogModels } from "../../../providers/model-catalog-ranking.js";
|
|
9
|
+
import { registerSpeechProvider } from "../speech-registry.js";
|
|
9
10
|
import { trackCloudCapabilityUsage } from "../../../usage/cloud-capability.js";
|
|
10
11
|
import { openPlatformTts } from "../../platform-streams.js";
|
|
11
12
|
import { requirePlatformVoiceModel } from "../../platform-catalog.js";
|
|
12
|
-
import { registerSpeechProvider } from "../speech-registry.js";
|
|
13
13
|
//#region src/voice/tts/providers/xopc-cloud-speech.ts
|
|
14
14
|
init_model_catalog_store();
|
|
15
15
|
init_voice();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { parseTtsDirectives } from "./directives.js";
|
|
4
3
|
import { resolveSpeechProvider, resolveSpeechProviderChain } from "./factory.js";
|
|
4
|
+
import { parseTtsDirectives } from "./directives.js";
|
|
5
5
|
import { preprocessText } from "./preprocess.js";
|
|
6
6
|
import { summarizeForTts } from "./summarize.js";
|
|
7
7
|
//#region src/voice/tts/speak-core.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createUnderstandingSourceRun, listUnderstandingSourceGrants, listUnderstandingSourceRuns, updateUnderstandingSourceRun } from "../user-context/sources/repository.js";
|
|
2
1
|
import { getWorkDiscoveryRun } from "./repository.js";
|
|
2
|
+
import { createUnderstandingSourceRun, listUnderstandingSourceGrants, listUnderstandingSourceRuns, updateUnderstandingSourceRun } from "../user-context/sources/repository.js";
|
|
3
3
|
import { workDiscoveryFingerprintsEqual } from "./incremental.js";
|
|
4
4
|
//#region src/work-discovery/incremental-repository.ts
|
|
5
5
|
function refreshFromRun(run) {
|
|
@@ -5,19 +5,19 @@ import { createContextEvidence, init_context_evidence_repository } from "../stor
|
|
|
5
5
|
import { ensureSessionRecord, patchSessionMetadata } from "../storage/sqlite/session-repository.js";
|
|
6
6
|
import { init_sqlite } from "../storage/sqlite/index.js";
|
|
7
7
|
import { ActivityService } from "../activity/service.js";
|
|
8
|
-
import {
|
|
9
|
-
import { writeKnowledgeItem } from "../knowledge-memory/repository.js";
|
|
8
|
+
import { linkAssertionEvidence, reconcileAssertion } from "../user-model/repository.js";
|
|
10
9
|
import { init_session_key, resolveConversationId } from "../routing/session-key.js";
|
|
11
|
-
import "../
|
|
10
|
+
import { createPriorityWindow, createUserGoal } from "../user-model/goals.js";
|
|
11
|
+
import "../user-model/index.js";
|
|
12
|
+
import { createWorkDiscoveryRun, getProjectUnderstandingRun, getWorkDiscoveryOnboardingState, getWorkDiscoveryRun, getWorkDiscoveryRunByIdempotencyKey, listPendingProjectUnderstandingRuns, setWorkDiscoveryFeedback, setWorkDiscoveryOnboardingState, updateWorkDiscoveryRun } from "./repository.js";
|
|
12
13
|
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
13
14
|
import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
|
|
14
15
|
import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
|
|
15
16
|
import { init_providers, resolveModel } from "../providers/index.js";
|
|
16
17
|
import { isLocalModelBaseUrl } from "../providers/model-call.js";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import "../
|
|
20
|
-
import { createWorkDiscoveryRun, getProjectUnderstandingRun, getWorkDiscoveryOnboardingState, getWorkDiscoveryRun, getWorkDiscoveryRunByIdempotencyKey, listPendingProjectUnderstandingRuns, setWorkDiscoveryFeedback, setWorkDiscoveryOnboardingState, updateWorkDiscoveryRun } from "./repository.js";
|
|
18
|
+
import { createUnderstandingSourceRun, getUnderstandingSourceGrant, getUnderstandingSourceRun, updateUnderstandingSourceGrantCheckpoint, updateUnderstandingSourceGrantPolicies, updateUnderstandingSourceRun, upsertUnderstandingSourceGrant } from "../user-context/sources/repository.js";
|
|
19
|
+
import { writeKnowledgeItem } from "../knowledge-memory/repository.js";
|
|
20
|
+
import "../knowledge-memory/index.js";
|
|
21
21
|
import { allowsRemoteSourceProcessing } from "../user-context/sources/processing-policy.js";
|
|
22
22
|
import { analyzeUnderstandingSources, analyzeWorkContext, workDiscoveryResultMarkdown } from "./analyzer.js";
|
|
23
23
|
import { clusterActivityTopics } from "../user-context/sources/activity-clustering.js";
|
|
@@ -2,8 +2,8 @@ import { TaskRepository, init_task_repository } from "../../tasks/task-repositor
|
|
|
2
2
|
import { ObjectLinkService } from "../../activity/service.js";
|
|
3
3
|
import "../../activity/index.js";
|
|
4
4
|
import { ProjectService } from "../../projects/project-service.js";
|
|
5
|
-
import { buildNoteAgentContextArtifact } from "../../notes/agent-context.js";
|
|
6
5
|
import { NotesStore } from "../../notes/store.js";
|
|
6
|
+
import { buildNoteAgentContextArtifact } from "../../notes/agent-context.js";
|
|
7
7
|
import { NotesService } from "../../notes/service.js";
|
|
8
8
|
import "../../notes/index.js";
|
|
9
9
|
import { WorkflowContextSnapshotRepository } from "./workflow-context-snapshot-repository.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { validateWorkflowJsonSchema } from "../domain/schema-validation.js";
|
|
2
1
|
import { workflowStepLabel } from "../../agent/workflow/step-labels.js";
|
|
2
|
+
import { validateWorkflowJsonSchema } from "../domain/schema-validation.js";
|
|
3
3
|
import { createGraphWorkflowRuntime } from "../runtime/graph-workflow-runtime.js";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
//#region src/workflows/engine/workflow-engine.ts
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { TaskRepository, init_task_repository } from "../../tasks/task-repository.js";
|
|
2
2
|
import { TaskRunRepository, init_task_run_repository } from "../../tasks/task-run-repository.js";
|
|
3
|
+
import { TaskContextRepository } from "../../tasks/task-context-repository.js";
|
|
3
4
|
import { init_conversation_repository, resolveRoutedConversation } from "../../storage/sqlite/conversation-repository.js";
|
|
5
|
+
import { automationEventPublisher, getAutomationEventForRun } from "../../automations/events/event-repository.js";
|
|
4
6
|
import { getDefaultAgentId, init_resolve_route } from "../../routing/resolve-route.js";
|
|
5
7
|
import { extractProfileAgentId, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
|
|
6
|
-
import { resolveModelSelector } from "../../config/agent-model-intents.js";
|
|
7
|
-
import { init_providers, resolveModel } from "../../providers/index.js";
|
|
8
8
|
import { getProjectWorkspacePathForSession } from "../../projects/workspace.js";
|
|
9
9
|
import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
|
|
10
|
-
import {
|
|
10
|
+
import { init_providers, resolveModel } from "../../providers/index.js";
|
|
11
|
+
import { TaskApplicationService } from "../../tasks/task-application-service.js";
|
|
12
|
+
import { resolveModelSelector } from "../../config/agent-model-intents.js";
|
|
13
|
+
import { preflightWorkflowConnectors } from "../../connectors/workflow-preflight.js";
|
|
14
|
+
import { DelegateSubagentRunner } from "../../agent/workflow/subagent-runner.js";
|
|
11
15
|
import { isTerminalWorkflowRunStatus } from "../domain/run.js";
|
|
12
16
|
import { validateWorkflowJsonSchema } from "../domain/schema-validation.js";
|
|
13
17
|
import "../domain/index.js";
|
|
14
|
-
import { TaskContextRepository } from "../../tasks/task-context-repository.js";
|
|
15
|
-
import { TaskApplicationService } from "../../tasks/task-application-service.js";
|
|
16
|
-
import { DelegateSubagentRunner } from "../../agent/workflow/subagent-runner.js";
|
|
17
|
-
import { preflightWorkflowConnectors } from "../../connectors/workflow-preflight.js";
|
|
18
18
|
import { CatalogWorkflowDefinitionRegistry } from "../registry/catalog-workflow-definition-registry.js";
|
|
19
19
|
import { resolveWorkflowContext } from "../context/workflow-context.js";
|
|
20
20
|
import { WorkflowEngine } from "../engine/workflow-engine.js";
|
|
@@ -2,12 +2,12 @@ import { createContextEvidence, init_context_evidence_repository } from "../../s
|
|
|
2
2
|
import "../../session/types.js";
|
|
3
3
|
import { inferMemorySensitivity } from "../../agent/memory/sensitivity.js";
|
|
4
4
|
import { writeKnowledgeItem } from "../../knowledge-memory/repository.js";
|
|
5
|
-
import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
|
|
6
5
|
import "../../knowledge-memory/index.js";
|
|
6
|
+
import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
|
|
7
|
+
import { renderWorkflowText } from "../../agent/workflow/snapshot.js";
|
|
7
8
|
import { isTerminalWorkflowRunStatus } from "../domain/run.js";
|
|
8
9
|
import "../domain/index.js";
|
|
9
10
|
import { TaskWorkflowCoordinator } from "../../tasks/task-workflow-coordinator.js";
|
|
10
|
-
import { renderWorkflowText } from "../../agent/workflow/snapshot.js";
|
|
11
11
|
import { runViewToSnapshot } from "./run-view-to-snapshot.js";
|
|
12
12
|
import { buildWorkflowRunConversationId } from "./workflow-session-key.js";
|
|
13
13
|
import { createHash, randomUUID } from "node:crypto";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xopcai/xopc",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.388",
|
|
4
4
|
"description": "Local-first personal AI with Ada, task delegation, files, projects, workflows, and automations. Use cloud or local models.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -106,6 +106,7 @@
|
|
|
106
106
|
"markdown-it": "^14.2.0",
|
|
107
107
|
"node-edge-tts": "^1.2.10",
|
|
108
108
|
"openai": "^6.48.0",
|
|
109
|
+
"pdfjs-dist": "6.2.108",
|
|
109
110
|
"pino": "^10.3.1",
|
|
110
111
|
"pino-pretty": "^13.1.3",
|
|
111
112
|
"proper-lockfile": "^4.1.2",
|
|
@@ -168,10 +169,11 @@
|
|
|
168
169
|
"vitepress": "^1.6.4",
|
|
169
170
|
"vitest": "4.1.5",
|
|
170
171
|
"vue": "^3.5.35",
|
|
172
|
+
"xlsx": "file:web/vendor/xlsx-0.20.3.tgz",
|
|
171
173
|
"@xopcai/browser-control-contract": "0.1.0",
|
|
172
|
-
"@xopcai/computer-control-contract": "0.1.0",
|
|
173
|
-
"@xopcai/endpoint-tools-protocol": "0.0.0",
|
|
174
174
|
"@xopcai/endpoint-tools-client": "0.0.0",
|
|
175
|
+
"@xopcai/endpoint-tools-protocol": "0.0.0",
|
|
176
|
+
"@xopcai/computer-control-contract": "0.1.0",
|
|
175
177
|
"@xopcai/gateway-contract": "0.0.0",
|
|
176
178
|
"@xopcai/image-providers": "0.1.0",
|
|
177
179
|
"@xopcai/realtime-client": "0.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,l as t,p as n,r,s as i,t as a,u as o}from"./schemas-CObaziC7.js";var s=n().min(1).max(120),c=o({id:s,toolCallId:n().min(1),toolName:n().min(1),excerpt:n().min(1).max(2e3),url:n().url().optional(),snapshotHash:n().regex(/^[a-f0-9]{64}$/),observedAt:t().int().nonnegative()}),l=o({id:s,statement:n().min(1).max(2e3),kind:a([`fact`,`inference`,`recommendation`]),sourceIds:r(s).min(1).max(8),support:a([`supported`,`unsupported`,`uncertain`,`unreviewed`]),note:n().max(1e3).optional()}),u=o({criterionIndex:t().int().nonnegative(),criterion:n().min(1),status:a([`passed`,`failed`,`unverified`]),claimIds:r(s).max(40),note:n().min(1).max(1e3)}),d=o({version:i(1),contractVersion:t().int().positive(),instructionSequence:t().int().nonnegative(),sources:r(c).max(40),claims:r(l).min(1).max(40),checks:r(u).max(40),review:a([`model_reviewed`,`unavailable`]),inspectedArtifactIds:r(n().min(1)).max(50).optional(),instructionChecks:r(o({sequence:t().int().positive(),instruction:n().min(1),status:a([`passed`,`failed`,`unverified`]),claimIds:r(s).max(40),note:n().min(1).max(1e3)})).max(40).optional()}).superRefine((e,t)=>{let n=(e,n)=>{new Set(e).size!==e.length&&t.addIssue({code:`custom`,message:`Duplicate ${n}`})};n(e.sources.map(e=>e.id),`source IDs`),n(e.claims.map(e=>e.id),`claim IDs`),n(e.checks.map(e=>e.criterionIndex),`criterion indices`),n((e.instructionChecks??[]).map(e=>e.sequence),`instruction sequences`);let r=new Set(e.sources.map(e=>e.id)),i=new Set(e.claims.map(e=>e.id));for(let n of e.claims)n.sourceIds.some(e=>!r.has(e))&&t.addIssue({code:`custom`,message:`Unknown claim source`});for(let n of[...e.checks,...e.instructionChecks??[]])n.claimIds.some(e=>!i.has(e))&&t.addIssue({code:`custom`,message:`Unknown criterion claim`})}),f=a([`document`,`spreadsheet`,`presentation`,`pdf`,`image`,`video`,`audio`,`site`,`archive`,`file`]),p=a([`workspace`,`external_host`,`worktree`,`remote_runtime`,`artifact_store`]),m=a([`materializing`,`available`,`expired`,`missing`,`failed`]),h=a([`preview`,`download`,`open`,`import`,`share`,`regenerate`]),g=o({artifactId:n().min(1),sourceFileId:n().min(1).optional(),title:n().min(1),kind:f,mimeType:n().optional(),sizeBytes:t().nonnegative().optional(),availability:m,location:p,capabilities:r(h),uri:n().optional(),workspaceRelativePath:n().optional(),shareUrl:n().url().optional(),thumbnailUrl:n().optional(),expiresAt:n().optional()}),_=o({path:n().min(1),status:a([`added`,`modified`,`deleted`,`renamed`]).optional(),added:t().nonnegative().optional(),removed:t().nonnegative().optional()}),v=o({changeSetId:n().min(1),files:r(_),added:t().nonnegative(),removed:t().nonnegative(),diff:n(),diffTruncated:e().optional(),environment:a([`workspace`,`worktree`,`remote_runtime`])}),y=o({evidenceId:n().min(1),kind:a([`check`,`screenshot`,`video`,`log`]),label:n().min(1),status:a([`passed`,`failed`,`warning`]),durationMs:t().nonnegative().optional(),command:n().optional(),artifactId:n().optional(),revision:n().optional(),logPath:n().optional()}),b=o({version:i(1),outcomeId:n().min(1),runId:n().min(1),turnId:n().min(1),status:a([`succeeded`,`partial`,`failed`]),summary:n().optional(),deliverables:r(g),changeSet:v.optional(),evidence:r(y),research:d.optional(),createdAt:n()}),x=`xopc-file:`;function S(e){if(!e.startsWith(x))return null;try{return decodeURIComponent(e.slice(10)).trim()||null}catch{return null}}function C(e){let t=new Map(e.map(e=>[e.artifactId,e])),n=new Map,r=e=>e.availability===`available`?e.location===`artifact_store`?2:1:0;for(let e of t.values()){let t=e.sourceFileId??S(e.uri??``),i=t?`source:${t}`:`artifact:${e.artifactId}`,a=n.get(i);(!a||r(e)>=r(a))&&n.set(i,e)}return[...n.values()]}function w(e){let t=b.safeParse(e);return t.success?{...t.data,deliverables:C(t.data.deliverables)}:null}var T=32*1024*1024;export{w as i,b as n,S as r,T as t};
|
|
@@ -1,2 +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{f as i,g as a,u as o}from"./chunk-KS7C4IRE-BMYIfy9x.js";import{t as s}from"./chevron-right-BweFrslA.js";import{t as c}from"./circle-alert-BEjgurr2.js";import{t as l}from"./circle-check-C23XjkUj.js";import{t as u}from"./clock-3-DnrAnuyZ.js";import{t as d}from"./external-link-DjqjBmc3.js";import{A as f,D as p,E as m,O as h,S as g,T as _,b as v,g as y,l as b,m as x,n as S,p as C,t as w,w as T,x as E}from"./use-composer-attachments-D0S2iZF4.js";import{N as D}from"./markdown-view-DHfQAvZQ.js";import{t as O}from"./plus-Q2yW6OE7.js";import{t as k}from"./settings-2-D-csvaET.js";import{t as A}from"./sparkles-DHlfQFAF.js";import{t as j}from"./x-B_N4OPjy.js";import{t as M}from"./messages-DTqbfje6.js";import{t as N}from"./cn-0WouolD0.js";import{n as P}from"./locale-store-uRu_DsWm.js";import{a as ee,i as F,n as I,o as te,r as ne,s as L,t as R}from"./dist-BGTk37IG.js";import{s as z}from"./tasks-PuIUgF9L.js";import{t as B}from"./button-aIC072nz.js";import{a as V,i as H,o as U,s as W}from"./dist-C3DSFZCi.js";import{t as G}from"./skeleton-BI5TyibZ.js";import{n as re}from"./date-formatters-CUZAyDEg.js";import{Ac as K,Js as ie,Mc as ae,Vr as oe,Xo as q,co as se,fn as ce,hn as le,ls as ue,ma as de,mn as fe,na as pe,pn as me,r as he,ti as ge,xs as J}from"./index-B08iR7fT.js";import{n as _e}from"./tab-completion-input-D64VNmiA.js";import{n as Y,t as X}from"./task-expandable-content-BCuc70Vc.js";var Z=n(),Q=e(t(),1);function ve(e,t){let[n,r]=(0,Q.useState)(null),[i,a]=(0,Q.useState)(!0),[o,s]=(0,Q.useState)(null),c=(0,Q.useRef)(0),l=(0,Q.useCallback)(async()=>{let t=++c.current;s(null);try{let n=await v(e);t===c.current&&r(n)}catch(e){t===c.current&&s(e instanceof Error?e.message:String(e))}finally{t===c.current&&a(!1)}},[e]);return(0,Q.useEffect)(()=>(l(),()=>{c.current++}),[l,t]),(0,Q.useEffect)(()=>{let e,t=1/0,n=n=>{let r=Date.now()+n;r>=t||(window.clearTimeout(e),t=r,e=window.setTimeout(()=>{e=void 0,t=1/0,l()},n))},r=()=>n(100),i=()=>n(750),a=()=>{document.visibilityState===`visible`&&r()},o=[`task-changed-v2`,`task-updated`,`session-created`,`agent-run-started`,`agent-run-ended`,`automation-run-completed`,`workflow-run-updated`,`workflow-run-error`,`home-advisor-updated`,`gateway-realtime-connected`,`realtime-gap`,`focus`],s=[`session-updated`,`session-transcript-updated`];return o.forEach(e=>window.addEventListener(e,r)),s.forEach(e=>window.addEventListener(e,i)),document.addEventListener(`visibilitychange`,a),()=>{o.forEach(e=>window.removeEventListener(e,r)),s.forEach(e=>window.removeEventListener(e,i)),document.removeEventListener(`visibilitychange`,a),window.clearTimeout(e)}},[l]),{home:n,loading:i,loadError:o,setLoadError:s,load:l}}var $=r(),ye=12e3;function be(e){let t=(0,Z.c)(106),{variant:n,inputId:r,inputRef:i,intent:a,labels:o,attachments:s,isDragging:c,attachmentBusy:l,attachmentsFull:u,voice:d,chat:f,cancelAction:p,onIntentChange:m,onPickFiles:h,onRemoveAttachment:g,onPaste:_,onDragOver:v,onDragLeave:y,onDrop:b,onSubmit:x}=e,C=n===`inline`,w;t[0]!==s||t[1]!==a?(w=!!a.trim()||s.length>0,t[0]=s,t[1]=a,t[2]=w):w=t[2];let T=w,E=d.voiceActive&&d.phase!==`error`,D;t[3]!==x||t[4]!==d.voiceActive?(D=e=>{if(d.voiceActive){e.preventDefault();return}x(e)},t[3]=x,t[4]=d.voiceActive,t[5]=D):D=t[5];let O=C?`mx-auto mt-6 w-full overflow-hidden rounded-xl border border-edge bg-surface-base p-2 text-left shadow-surface transition-colors focus-within:border-accent focus-within:ring-2 focus-within:ring-accent/15 sm:mt-8`:`flex min-h-0 flex-1 flex-col`,k;t[6]===O?k=t[7]:(k=N(`relative`,O),t[6]=O,t[7]=k);let j;t[8]!==C||t[9]!==c||t[10]!==o.dropFiles?(j=c?(0,$.jsx)(`div`,{className:N(`pointer-events-none absolute inset-0 z-10 flex items-center justify-center bg-accent-soft/90 text-sm font-medium text-accent-fg backdrop-blur-[1px]`,C&&`rounded-2xl`),children:o.dropFiles}):null,t[8]=C,t[9]=c,t[10]=o.dropFiles,t[11]=j):j=t[11];let M=!C&&`flex min-h-0 flex-1 flex-col overflow-y-auto px-5 py-4`,P;t[12]===M?P=t[13]:(P=N(M),t[12]=M,t[13]=P);let ee=C?`sr-only`:`mb-2 shrink-0 text-sm font-medium text-fg`,F;t[14]!==r||t[15]!==o.intentLabel||t[16]!==ee?(F=(0,$.jsx)(`label`,{htmlFor:r,className:ee,children:o.intentLabel}),t[14]=r,t[15]=o.intentLabel,t[16]=ee,t[17]=F):F=t[17];let I;t[18]!==l||t[19]!==f||t[20]!==d.audioLevel||t[21]!==d.cancelVoiceInput||t[22]!==d.confirmVoiceInput||t[23]!==d.elapsedLabel||t[24]!==d.error||t[25]!==d.finalTranscript||t[26]!==d.partialTranscript||t[27]!==d.phase||t[28]!==d.retryVoiceInput||t[29]!==d.settingsRequired||t[30]!==d.voiceActive?(I=d.voiceActive?(0,$.jsx)(fe,{phase:d.phase,elapsedLabel:d.elapsedLabel,audioLevel:d.audioLevel,partialTranscript:d.partialTranscript,finalTranscript:d.finalTranscript,error:d.error,settingsRequired:d.settingsRequired,disabled:l,chat:f,onCancel:d.cancelVoiceInput,onConfirm:d.confirmVoiceInput,onRetry:d.retryVoiceInput}):null,t[18]=l,t[19]=f,t[20]=d.audioLevel,t[21]=d.cancelVoiceInput,t[22]=d.confirmVoiceInput,t[23]=d.elapsedLabel,t[24]=d.error,t[25]=d.finalTranscript,t[26]=d.partialTranscript,t[27]=d.phase,t[28]=d.retryVoiceInput,t[29]=d.settingsRequired,t[30]=d.voiceActive,t[31]=I):I=t[31];let te=E&&`hidden`,ne=C?`min-h-24 bg-transparent px-3 py-2`:`min-h-32 flex-1 rounded-xl border border-edge bg-surface-base p-3 focus:border-accent focus:ring-2 focus:ring-accent/20`,L;t[32]!==te||t[33]!==ne?(L=N(`w-full resize-none text-sm font-normal leading-6 text-fg outline-none placeholder:text-fg-subtle`,te,ne),t[32]=te,t[33]=ne,t[34]=L):L=t[34];let R;t[35]===m?R=t[36]:(R=e=>m(e.target.value),t[35]=m,t[36]=R);let z=!C,V;t[37]!==r||t[38]!==i||t[39]!==a||t[40]!==o.intentPlaceholder||t[41]!==o.intentSuggestion||t[42]!==m||t[43]!==_||t[44]!==L||t[45]!==R||t[46]!==z?(V=(0,$.jsx)(_e,{ref:i,id:r,className:L,value:a,onChange:R,onPaste:_,suggestion:o.intentSuggestion,onAcceptSuggestion:m,onKeyDown:xe,placeholder:o.intentPlaceholder,maxLength:ye,autoFocus:z}),t[37]=r,t[38]=i,t[39]=a,t[40]=o.intentPlaceholder,t[41]=o.intentSuggestion,t[42]=m,t[43]=_,t[44]=L,t[45]=R,t[46]=z,t[47]=V):V=t[47];let H=C?`border-b-0 bg-transparent px-3 pb-2 pt-0`:`mt-3 border-b-0 bg-transparent px-0 pb-0`,U;t[48]!==s||t[49]!==g||t[50]!==H?(U=(0,$.jsx)(S,{attachments:s,topPadded:!1,onRemove:g,className:H}),t[48]=s,t[49]=g,t[50]=H,t[51]=U):U=t[51];let W;t[52]!==C||t[53]!==a.length||t[54]!==o.shortcut?(W=C?null:(0,$.jsxs)(`div`,{className:`mt-2 flex shrink-0 items-center justify-between gap-3 text-[11px] text-fg-subtle`,children:[(0,$.jsx)(`span`,{children:o.shortcut}),(0,$.jsxs)(`span`,{className:`tabular-nums`,children:[a.length.toLocaleString(),` / `,ye.toLocaleString()]})]}),t[52]=C,t[53]=a.length,t[54]=o.shortcut,t[55]=W):W=t[55];let G;t[56]!==I||t[57]!==V||t[58]!==U||t[59]!==W||t[60]!==P||t[61]!==F?(G=(0,$.jsxs)(`div`,{className:P,children:[F,I,V,U,W]}),t[56]=I,t[57]=V,t[58]=U,t[59]=W,t[60]=P,t[61]=F,t[62]=G):G=t[62];let re=C?`border-edge-subtle px-1 pt-2`:`border-edge px-5 py-4`,K;t[63]===re?K=t[64]:(K=N(`flex shrink-0 items-center gap-2 border-t`,re),t[63]=re,t[64]=K);let ie=!C&&`mr-auto`,ae;t[65]===ie?ae=t[66]:(ae=N(`flex items-center gap-1`,ie),t[65]=ie,t[66]=ae);let q=l||u,se;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(se=(0,$.jsx)(ue,{className:`size-4`,"aria-hidden":!0}),t[67]=se):se=t[67];let ce;t[68]!==o.attachTitle||t[69]!==h||t[70]!==q?(ce=(0,$.jsx)(B,{type:`button`,variant:`ghost`,className:`size-9 rounded-lg p-0`,disabled:q,title:o.attachTitle,"aria-label":o.attachTitle,onClick:h,children:se}),t[68]=o.attachTitle,t[69]=h,t[70]=q,t[71]=ce):ce=t[71];let le;t[72]!==l||t[73]!==f||t[74]!==d.startVoiceInput||t[75]!==d.voiceActive?(le=d.voiceActive?null:(0,$.jsx)(oe,{disabled:l,chat:f,onStart:d.startVoiceInput}),t[72]=l,t[73]=f,t[74]=d.startVoiceInput,t[75]=d.voiceActive,t[76]=le):le=t[76];let de;t[77]!==ae||t[78]!==ce||t[79]!==le?(de=(0,$.jsxs)(`div`,{className:ae,children:[ce,le]}),t[77]=ae,t[78]=ce,t[79]=le,t[80]=de):de=t[80];let pe;t[81]!==p||t[82]!==C||t[83]!==o.shortcut?(pe=C?(0,$.jsx)(`span`,{className:`hidden text-[11px] text-fg-subtle sm:inline`,children:o.shortcut}):p,t[81]=p,t[82]=C,t[83]=o.shortcut,t[84]=pe):pe=t[84];let me=C?`ml-auto h-9 rounded-lg px-3.5 text-xs`:`min-w-32`,he=!T||l||d.voiceActive,ge=C?`size-3.5`:`size-4`,J;t[85]===ge?J=t[86]:(J=(0,$.jsx)(A,{className:ge,"aria-hidden":!0}),t[85]=ge,t[86]=J);let Y;t[87]!==o.submit||t[88]!==me||t[89]!==he||t[90]!==J?(Y=(0,$.jsxs)(B,{type:`submit`,variant:`primary`,className:me,disabled:he,children:[J,o.submit]}),t[87]=o.submit,t[88]=me,t[89]=he,t[90]=J,t[91]=Y):Y=t[91];let X;t[92]!==K||t[93]!==de||t[94]!==pe||t[95]!==Y?(X=(0,$.jsxs)(`div`,{className:K,children:[de,pe,Y]}),t[92]=K,t[93]=de,t[94]=pe,t[95]=Y,t[96]=X):X=t[96];let Q;return t[97]!==y||t[98]!==v||t[99]!==b||t[100]!==D||t[101]!==G||t[102]!==X||t[103]!==k||t[104]!==j?(Q=(0,$.jsxs)(`form`,{onSubmit:D,onDragOver:v,onDragLeave:y,onDrop:b,className:k,children:[j,G,X]}),t[97]=y,t[98]=v,t[99]=b,t[100]=D,t[101]=G,t[102]=X,t[103]=k,t[104]=j,t[105]=Q):Q=t[105],Q}function xe(e){e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())}function Se(e){let t=(0,Z.c)(4),{label:n,onClick:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsx)(ie,{className:`size-3.5`,"aria-hidden":!0}),t[0]=i):i=t[0];let a;return t[1]!==n||t[2]!==r?(a=(0,$.jsxs)(`button`,{type:`button`,className:`inline-flex min-h-9 items-center gap-1.5 rounded-lg px-2 text-xs font-medium text-fg-muted transition-colors duration-150 hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,onClick:r,children:[i,n]}),t[1]=n,t[2]=r,t[3]=a):a=t[3],a}function Ce(e){let t=(0,Z.c)(69),{opportunity:n,copy:r,onOpenHistory:i}=e,a,o,s,c,l,d;if(t[0]!==r.aiLabel||t[1]!==r.automationAction||t[2]!==r.automationHint||t[3]!==r.history||t[4]!==r.minutes||t[5]!==r.needsSetup||t[6]!==r.sceneAction||t[7]!==r.sceneHint||t[8]!==r.why||t[9]!==i||t[10]!==n.capabilities||t[11]!==n.continuation||t[12]!==n.estimatedMinutes||t[13]!==n.outcome||t[14]!==n.rationale||t[15]!==n.title){let e=n.capabilities.filter(Te),f;t[22]===r.aiLabel?f=t[23]:(f=(0,$.jsx)(`span`,{children:r.aiLabel}),t[22]=r.aiLabel,t[23]=f);let p;t[24]!==r.minutes||t[25]!==n.estimatedMinutes?(p=n.estimatedMinutes?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,$.jsx)(u,{className:`size-3.5`,"aria-hidden":!0}),n.estimatedMinutes,` `,r.minutes]}):null,t[24]=r.minutes,t[25]=n.estimatedMinutes,t[26]=p):p=t[26];let m;t[27]!==f||t[28]!==p?(m=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-fg-subtle`,children:[f,p]}),t[27]=f,t[28]=p,t[29]=m):m=t[29];let h;t[30]!==r.history||t[31]!==i?(h=(0,$.jsx)(Se,{label:r.history,onClick:i}),t[30]=r.history,t[31]=i,t[32]=h):h=t[32],t[33]!==h||t[34]!==m?(a=(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[m,h]}),t[33]=h,t[34]=m,t[35]=a):a=t[35],t[36]===n.title?o=t[37]:(o=(0,$.jsx)(`h3`,{className:`mt-3 text-xl font-semibold leading-7 tracking-tight text-fg`,children:n.title}),t[36]=n.title,t[37]=o),t[38]===n.outcome?s=t[39]:(s=(0,$.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:n.outcome}),t[38]=n.outcome,t[39]=s);let g;t[40]===r.why?g=t[41]:(g=(0,$.jsxs)(`span`,{className:`font-medium text-fg`,children:[r.why,`:`]}),t[40]=r.why,t[41]=g),t[42]!==n.rationale||t[43]!==g?(c=(0,$.jsxs)(`p`,{className:`mt-4 text-sm leading-6 text-fg-muted`,children:[g,n.rationale]}),t[42]=n.rationale,t[43]=g,t[44]=c):c=t[44],t[45]!==r.automationAction||t[46]!==r.automationHint||t[47]!==r.sceneAction||t[48]!==r.sceneHint||t[49]!==n.continuation?(l=n.continuation?(0,$.jsxs)(`div`,{className:`mt-4 flex flex-col gap-3 rounded-xl border border-edge bg-surface-subtle p-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,$.jsx)(`p`,{className:`text-xs leading-5 text-fg-muted`,children:n.continuation.kind===`automation`?r.automationHint:r.sceneHint}),(0,$.jsx)(`a`,{href:`#${n.continuation.href}`,className:`inline-flex min-h-11 shrink-0 items-center rounded-lg px-3 text-xs font-medium text-accent hover:bg-accent-soft focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:n.continuation.kind===`automation`?r.automationAction:r.sceneAction})]}):null,t[45]=r.automationAction,t[46]=r.automationHint,t[47]=r.sceneAction,t[48]=r.sceneHint,t[49]=n.continuation,t[50]=l):l=t[50],d=e.length>0?(0,$.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-2`,"aria-label":r.needsSetup,children:e.map(e=>(0,$.jsxs)(`a`,{href:`#${e.recoveryPath??`/settings`}`,className:`rounded-full border border-accent/25 bg-accent-soft px-2.5 py-1 text-xs text-accent hover:border-accent/50`,children:[r.needsSetup,` · `,e.capability]},`${e.kind}:${e.capability}`))}):null,t[0]=r.aiLabel,t[1]=r.automationAction,t[2]=r.automationHint,t[3]=r.history,t[4]=r.minutes,t[5]=r.needsSetup,t[6]=r.sceneAction,t[7]=r.sceneHint,t[8]=r.why,t[9]=i,t[10]=n.capabilities,t[11]=n.continuation,t[12]=n.estimatedMinutes,t[13]=n.outcome,t[14]=n.rationale,t[15]=n.title,t[16]=a,t[17]=o,t[18]=s,t[19]=c,t[20]=l,t[21]=d}else a=t[16],o=t[17],s=t[18],c=t[19],l=t[20],d=t[21];let f;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,$.jsx)(K,{className:`size-3.5 transition-transform group-open:rotate-180`,"aria-hidden":!0}),t[51]=f):f=t[51];let p;t[52]===r.evidence?p=t[53]:(p=(0,$.jsxs)(`summary`,{className:`flex min-h-9 cursor-pointer list-none items-center gap-1.5 text-xs font-medium text-fg-muted hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[r.evidence,f]}),t[52]=r.evidence,t[53]=p);let m;t[54]===n.evidence?m=t[55]:(m=n.evidence.map(we),t[54]=n.evidence,t[55]=m);let h;t[56]===m?h=t[57]:(h=(0,$.jsx)(`ul`,{className:`mt-2 space-y-2 border-l border-edge pl-3 text-xs leading-5 text-fg-muted`,children:m}),t[56]=m,t[57]=h);let g;t[58]!==h||t[59]!==p?(g=(0,$.jsxs)(`details`,{className:`mt-4 group`,children:[p,h]}),t[58]=h,t[59]=p,t[60]=g):g=t[60];let _;return t[61]!==a||t[62]!==g||t[63]!==o||t[64]!==s||t[65]!==c||t[66]!==l||t[67]!==d?(_=(0,$.jsxs)($.Fragment,{children:[a,o,s,c,l,d,g]}),t[61]=a,t[62]=g,t[63]=o,t[64]=s,t[65]=c,t[66]=l,t[67]=d,t[68]=_):_=t[68],_}function we(e){return(0,$.jsx)(`li`,{children:e.href?(0,$.jsx)(`a`,{href:`#${e.href}`,className:`hover:text-accent hover:underline`,children:e.observation}):e.observation},e.id)}function Te(e){return e.readiness!==`ready`}function Ee(e){let t=(0,Z.c)(130),{advisor:n,copy:r,busy:i,onRefresh:a,onAction:o,onFeedback:s,onClarification:c,onOpenHistory:u,preflight:d,receipt:f}=e,[p,m]=(0,Q.useState)(),h;t[0]!==n.alternatives||t[1]!==n.primary||t[2]!==n.state?(h=n.state===`ready`?[n.primary,...n.alternatives]:[],t[0]=n.alternatives,t[1]=n.primary,t[2]=n.state,t[3]=h):h=t[3];let g=h,_;t[4]!==g||t[5]!==p?(_=g.find(e=>e.id===p)??g[0],t[4]=g,t[5]=p,t[6]=_):_=t[6];let v=_,y;t[7]===g[0]?.id?y=t[8]:(y=()=>m(g[0]?.id),t[7]=g[0]?.id,t[8]=y);let b=g[0]?.id,x;if(t[9]!==n.state||t[10]!==b?(x=[n.state,b],t[9]=n.state,t[10]=b,t[11]=x):x=t[11],(0,Q.useEffect)(y,x),n.state===`disabled`)return null;if(f){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(l,{className:`size-5 shrink-0 text-success`,"aria-hidden":!0}),t[12]=e):e=t[12];let n;t[13]===f.title?n=t[14]:(n=(0,$.jsx)(`p`,{className:`text-sm font-semibold text-fg`,children:f.title}),t[13]=f.title,t[14]=n);let i;t[15]===f.detail?i=t[16]:(i=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:f.detail}),t[15]=f.detail,t[16]=i);let a;t[17]!==n||t[18]!==i?(a=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[n,i]}),t[17]=n,t[18]=i,t[19]=a):a=t[19];let o;t[20]!==r.history||t[21]!==u?(o=(0,$.jsx)(Se,{label:r.history,onClick:u}),t[20]=r.history,t[21]=u,t[22]=o):o=t[22];let s=`#${f.href}`,c;t[23]!==r.viewProgress||t[24]!==s?(c=(0,$.jsx)(B,{asChild:!0,variant:`secondary`,className:`min-h-10 text-xs`,children:(0,$.jsx)(`a`,{href:s,children:r.viewProgress})}),t[23]=r.viewProgress,t[24]=s,t[25]=c):c=t[25];let d;t[26]!==o||t[27]!==c?(d=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[o,c]}),t[26]=o,t[27]=c,t[28]=d):d=t[28];let p;return t[29]!==d||t[30]!==a?(p=(0,$.jsx)(`section`,{className:`mt-7 rounded-2xl border border-success/25 bg-success-soft px-5 py-4`,role:`status`,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center`,children:[e,a,d]})}),t[29]=d,t[30]=a,t[31]=p):p=t[31],p}if(n.state===`quiet`||n.state===`refreshing`)return null;if(n.state===`clarification`){let e;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(A,{className:`size-4`,"aria-hidden":!0}),t[32]=e):e=t[32];let i;t[33]===r.aiLabel?i=t[34]:(i=(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-medium text-accent`,children:[e,r.aiLabel]}),t[33]=r.aiLabel,t[34]=i);let a;t[35]!==r.history||t[36]!==u?(a=(0,$.jsx)(Se,{label:r.history,onClick:u}),t[35]=r.history,t[36]=u,t[37]=a):a=t[37];let o;t[38]!==i||t[39]!==a?(o=(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[i,a]}),t[38]=i,t[39]=a,t[40]=o):o=t[40];let s;t[41]===n.question.question?s=t[42]:(s=(0,$.jsx)(`h3`,{id:`home-advisor-question`,className:`mt-3 text-lg font-semibold text-fg`,children:n.question.question}),t[41]=n.question.question,t[42]=s);let l;if(t[43]!==n.question.options||t[44]!==n.question.question||t[45]!==c){let e;t[47]!==n.question.question||t[48]!==c?(e=e=>(0,$.jsx)(B,{type:`button`,variant:`secondary`,className:`min-h-11`,onClick:()=>c(n.question.question,e.label),children:e.label},e.id),t[47]=n.question.question,t[48]=c,t[49]=e):e=t[49],l=n.question.options.map(e),t[43]=n.question.options,t[44]=n.question.question,t[45]=c,t[46]=l}else l=t[46];let d;t[50]===l?d=t[51]:(d=(0,$.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:l}),t[50]=l,t[51]=d);let f;return t[52]!==s||t[53]!==d||t[54]!==o?(f=(0,$.jsxs)(`section`,{className:`mt-7 rounded-2xl border border-accent/25 bg-surface-base px-5 py-5`,"aria-labelledby":`home-advisor-question`,children:[o,s,d]}),t[52]=s,t[53]=d,t[54]=o,t[55]=f):f=t[55],f}if(!v)return null;let S=d?.opportunityId===v.id?d.value:void 0,C;t[56]!==n.stale||t[57]!==r.refreshing?(C=n.stale?(0,$.jsxs)(`p`,{className:`mb-3 inline-flex items-center gap-2 text-xs text-accent`,children:[(0,$.jsx)(q,{className:`size-3.5 animate-spin`,"aria-hidden":!0}),r.refreshing]}):null,t[56]=n.stale,t[57]=r.refreshing,t[58]=C):C=t[58];let w;t[59]!==r||t[60]!==u||t[61]!==v?(w=(0,$.jsx)(Ce,{opportunity:v,copy:r,onOpenHistory:u}),t[59]=r,t[60]=u,t[61]=v,t[62]=w):w=t[62];let T;t[63]!==i||t[64]!==r.configure||t[65]!==r.degradedStart||t[66]!==r.setupHint||t[67]!==r.setupTitle||t[68]!==o||t[69]!==v||t[70]!==S?(T=S?.state===`needs_setup`?(0,$.jsx)(`div`,{className:`mt-5 rounded-xl border border-accent/25 bg-accent-soft/40 p-4`,role:`alert`,"aria-live":`polite`,children:(0,$.jsxs)(`div`,{className:`flex gap-3`,children:[(0,$.jsx)(k,{className:`mt-0.5 size-4 shrink-0 text-accent`,"aria-hidden":!0}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`text-sm font-semibold text-fg`,children:r.setupTitle}),(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:r.setupHint}),(0,$.jsx)(`ul`,{className:`mt-2 space-y-1 text-xs leading-5 text-fg-muted`,children:S.blockers.map(De)}),(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[S.recoveryActions.map(e=>(0,$.jsxs)(`a`,{href:`#${e.href}`,className:`inline-flex min-h-11 items-center rounded-lg border border-accent/30 px-3 text-xs font-medium text-accent hover:bg-accent-soft focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[r.configure,` · `,e.capability]},e.capability)),S.degradedAction?(0,$.jsx)(B,{type:`button`,variant:`secondary`,className:`min-h-11`,disabled:i,onClick:()=>o(v,`degraded_start`),children:r.degradedStart}):null]})]})]})}):null,t[63]=i,t[64]=r.configure,t[65]=r.degradedStart,t[66]=r.setupHint,t[67]=r.setupTitle,t[68]=o,t[69]=v,t[70]=S,t[71]=T):T=t[71];let E;t[72]!==i||t[73]!==r.start||t[74]!==o||t[75]!==v?(E=v.actions.canStart?(0,$.jsxs)(B,{type:`button`,variant:`primary`,className:`min-h-11`,disabled:i,onClick:()=>o(v,`start`),children:[(0,$.jsx)(A,{className:`size-4`,"aria-hidden":!0}),r.start]}):null,t[72]=i,t[73]=r.start,t[74]=o,t[75]=v,t[76]=E):E=t[76];let D;t[77]!==i||t[78]!==r.discuss||t[79]!==o||t[80]!==v?(D=v.actions.canDiscuss?(0,$.jsxs)(B,{type:`button`,variant:`secondary`,className:`min-h-11`,disabled:i,onClick:()=>o(v,`discuss`),children:[(0,$.jsx)(J,{className:`size-4`,"aria-hidden":!0}),r.discuss]}):null,t[77]=i,t[78]=r.discuss,t[79]=o,t[80]=v,t[81]=D):D=t[81];let O;t[82]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,$.jsx)(q,{className:`size-4`,"aria-hidden":!0}),t[82]=O):O=t[82];let j;t[83]!==i||t[84]!==r.refresh||t[85]!==a?(j=(0,$.jsxs)(B,{type:`button`,variant:`ghost`,className:`min-h-11`,disabled:i,onClick:a,title:r.refresh,children:[O,r.refresh]}),t[83]=i,t[84]=r.refresh,t[85]=a,t[86]=j):j=t[86];let M;t[87]===r.feedback?M=t[88]:(M=(0,$.jsx)(`summary`,{className:`flex min-h-11 cursor-pointer list-none items-center rounded-lg px-3 text-xs text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:r.feedback}),t[87]=r.feedback,t[88]=M);let N;t[89]===r.alreadyDone?N=t[90]:(N=[`already_done`,r.alreadyDone],t[89]=r.alreadyDone,t[90]=N);let P;t[91]===r.irrelevant?P=t[92]:(P=[`irrelevant`,r.irrelevant],t[91]=r.irrelevant,t[92]=P);let ee;t[93]===r.later?ee=t[94]:(ee=[`too_early`,r.later],t[93]=r.later,t[94]=ee);let F;t[95]===r.sourceIncorrect?F=t[96]:(F=[`source_incorrect`,r.sourceIncorrect],t[95]=r.sourceIncorrect,t[96]=F);let I;t[97]===r.lessLikeThis?I=t[98]:(I=[`less_like_this`,r.lessLikeThis],t[97]=r.lessLikeThis,t[98]=I);let te;t[99]!==N||t[100]!==P||t[101]!==ee||t[102]!==F||t[103]!==I?(te=[N,P,ee,F,I],t[99]=N,t[100]=P,t[101]=ee,t[102]=F,t[103]=I,t[104]=te):te=t[104];let ne=te,L;t[105]!==s||t[106]!==v||t[107]!==ne?(L=(0,$.jsx)(`div`,{className:`absolute right-0 z-20 mt-1 w-44 rounded-xl border border-edge bg-surface-overlay p-1 shadow-float`,children:ne.map(e=>{let[t,n]=e;return(0,$.jsx)(`button`,{type:`button`,className:`min-h-10 w-full rounded-lg px-3 text-left text-sm text-fg-muted hover:bg-surface-hover hover:text-fg`,onClick:()=>s(v,t),children:n},t)})}),t[105]=s,t[106]=v,t[107]=ne,t[108]=L):L=t[108];let R;t[109]!==M||t[110]!==L?(R=(0,$.jsxs)(`details`,{className:`relative ml-auto`,children:[M,L]}),t[109]=M,t[110]=L,t[111]=R):R=t[111];let z;t[112]!==D||t[113]!==j||t[114]!==R||t[115]!==E?(z=(0,$.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center gap-2`,children:[E,D,j,R]}),t[112]=D,t[113]=j,t[114]=R,t[115]=E,t[116]=z):z=t[116];let V;t[117]!==z||t[118]!==C||t[119]!==w||t[120]!==T?(V=(0,$.jsxs)(`div`,{className:`px-5 py-5 sm:px-6`,children:[C,w,T,z]}),t[117]=z,t[118]=C,t[119]=w,t[120]=T,t[121]=V):V=t[121];let H;t[122]!==r.alternatives||t[123]!==g||t[124]!==v.id?(H=g.length>1?(0,$.jsxs)(`div`,{className:`border-t border-edge-subtle px-5 py-4 sm:px-6`,children:[(0,$.jsx)(`p`,{className:`text-xs font-medium text-fg-subtle`,children:r.alternatives}),(0,$.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:g.filter(e=>e.id!==v.id).map(e=>(0,$.jsx)(`button`,{type:`button`,className:`min-h-10 rounded-lg border border-edge px-3 text-left text-sm text-fg-muted hover:bg-surface-hover hover:text-fg`,onClick:()=>m(e.id),children:e.title},e.id))})]}):null,t[122]=r.alternatives,t[123]=g,t[124]=v.id,t[125]=H):H=t[125];let U;return t[126]!==r.aiLabel||t[127]!==V||t[128]!==H?(U=(0,$.jsxs)(`section`,{className:`mt-7 rounded-2xl border border-accent/25 bg-surface-base`,"aria-label":r.aiLabel,children:[V,H]}),t[126]=r.aiLabel,t[127]=V,t[128]=H,t[129]=U):U=t[129],U}function De(e){return(0,$.jsx)(`li`,{children:e.message},`${e.kind}:${e.capability}`)}var Oe=new Set([`started`,`discussing`,`completed`]);function ke(){let e=(0,Z.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(`div`,{className:`space-y-4`,"aria-busy":!0,children:[0,1,2].map(Ae)}),e[0]=t):t=e[0],t}function Ae(e){return(0,$.jsxs)(`div`,{className:`space-y-2 rounded-xl border border-edge-subtle p-4`,children:[(0,$.jsx)(G,{className:`h-4 w-24 rounded`}),(0,$.jsx)(G,{className:`h-5 w-4/5 rounded`}),(0,$.jsx)(G,{className:`h-4 w-3/5 rounded`})]},e)}function je(e){let t=(0,Z.c)(11),{open:n,refreshKey:r,onOpenChange:a,onReevaluate:o}=e,s=P(Ne),c=M(s).projectsPage.home,l=i(),[f,p]=(0,Q.useState)(`all`),m;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(m=[],t[0]=m):m=t[0];let[h,g]=(0,Q.useState)(m),[_,v]=(0,Q.useState)(!1),[y,b]=(0,Q.useState)(),x;t[1]===n?x=t[2]:(x=()=>{if(!n)return;let e=!0;return v(!0),b(void 0),E().then(t=>{e&&g(t.items)}).catch(t=>{e&&b(t instanceof Error?t.message:String(t))}).finally(()=>{e&&v(!1)}),()=>{e=!1}},t[1]=n,t[2]=x);let S;t[3]!==n||t[4]!==r?(S=[n,r],t[3]=n,t[4]=r,t[5]=S):S=t[5],(0,Q.useEffect)(x,S);let C=h.filter(e=>f===`all`||(f===`adopted`?Oe.has(e.status):!Oe.has(e.status))),w=new Intl.DateTimeFormat(s===`zh`?`zh-CN`:`en`,{dateStyle:`medium`}),T=new Intl.DateTimeFormat(s===`zh`?`zh-CN`:`en`,{dateStyle:`medium`,timeStyle:`short`}),O=new Map;for(let e of C){let t=w.format(new Date(e.updatedAt));O.set(t,[...O.get(t)??[],e])}let k=[...O.entries()],A=e=>e.feedbackKind===`already_done`?c.advisorHistoryStatusCompleted:e.feedbackKind===`irrelevant`?c.advisorHistoryStatusIrrelevant:e.feedbackKind===`source_incorrect`?c.advisorHistoryStatusSourceIncorrect:e.feedbackKind===`less_like_this`?c.advisorHistoryStatusLessLikeThis:{available:c.advisorHistoryStatusAvailable,started:c.advisorHistoryStatusStarted,discussing:c.advisorHistoryStatusDiscussing,completed:c.advisorHistoryStatusCompleted,snoozed:c.advisorHistoryStatusSnoozed,dismissed:c.advisorHistoryStatusDismissed,expired:c.advisorHistoryStatusExpired,superseded:c.advisorHistoryStatusSuperseded}[e.status],N=e=>{if(e.href){a(!1),l(D(`/`,e.href));return}e.status===`discussing`&&(a(!1),l(`/chat/new?${new URLSearchParams({draft:e.opportunity.actionPrompt}).toString()}`))},z;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,$.jsx)(ee,{className:`xopc-dialog-overlay fixed inset-0 z-[80] bg-scrim`}),t[6]=z):z=t[6];let V;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(V=(0,$.jsx)(ie,{className:`mt-0.5 size-5 shrink-0 text-accent`,"aria-hidden":!0}),t[7]=V):V=t[7];let H;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,$.jsx)(j,{className:`size-4`,"aria-hidden":!0}),t[8]=H):H=t[8];let U=_?(0,$.jsx)(ke,{}):y?(0,$.jsxs)(`div`,{className:`rounded-xl border border-danger/25 bg-danger-soft p-4 text-sm text-danger`,children:[(0,$.jsx)(`p`,{children:c.advisorHistoryLoadFailed}),(0,$.jsx)(B,{type:`button`,variant:`ghost`,className:`mt-2`,onClick:()=>a(!1),children:c.advisorHistoryClose})]}):k.length===0?(0,$.jsxs)(`div`,{className:`py-16 text-center`,children:[(0,$.jsx)(ie,{className:`mx-auto size-6 text-fg-subtle`,"aria-hidden":!0}),(0,$.jsx)(`p`,{className:`mt-3 text-sm font-medium text-fg`,children:c.advisorHistoryEmpty}),(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:c.advisorHistoryEmptyHint})]}):(0,$.jsx)(`div`,{className:`space-y-6`,children:k.map(e=>{let[t,n]=e;return(0,$.jsxs)(`section`,{"aria-label":t,children:[(0,$.jsx)(`h3`,{className:`mb-2 text-xs font-medium text-fg-subtle`,children:t}),(0,$.jsx)(`div`,{className:`space-y-2`,children:n.map(e=>{let t=!!e.href||e.status===`discussing`,n=[`snoozed`,`dismissed`,`expired`,`superseded`].includes(e.status);return(0,$.jsxs)(`article`,{className:`rounded-xl border border-edge-subtle bg-surface-base p-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`text-xs font-medium text-accent`,children:A(e)}),(0,$.jsx)(`h4`,{className:`mt-1.5 text-sm font-semibold leading-5 text-fg`,children:e.opportunity.title}),(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:e.opportunity.outcome})]}),(0,$.jsx)(`time`,{className:`shrink-0 text-[11px] text-fg-subtle`,dateTime:new Date(e.updatedAt).toISOString(),children:T.format(new Date(e.updatedAt))})]}),e.snoozedUntil?(0,$.jsxs)(`p`,{className:`mt-2 inline-flex items-center gap-1 text-xs text-fg-muted`,children:[(0,$.jsx)(u,{className:`size-3.5`,"aria-hidden":!0}),c.advisorHistoryReturnsAt,` `,T.format(new Date(e.snoozedUntil))]}):null,(0,$.jsxs)(`details`,{className:`group mt-3`,children:[(0,$.jsxs)(`summary`,{className:`flex min-h-8 cursor-pointer list-none items-center gap-1 text-xs font-medium text-fg-muted hover:text-fg`,children:[c.advisorHistoryEvidence,(0,$.jsx)(K,{className:`size-3.5 transition-transform duration-200 group-open:rotate-180 motion-reduce:transition-none`,"aria-hidden":!0})]}),(0,$.jsx)(`ul`,{className:`mt-2 space-y-1.5 border-l border-edge pl-3 text-xs leading-5 text-fg-muted`,children:e.opportunity.evidence.map(Me)})]}),t||n?(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[t?(0,$.jsxs)(B,{type:`button`,variant:`secondary`,className:`min-h-9 text-xs`,onClick:()=>N(e),children:[(0,$.jsx)(d,{className:`size-3.5`,"aria-hidden":!0}),e.status===`discussing`?c.advisorHistoryContinueDiscussion:c.advisorHistoryViewProgress]}):null,n?(0,$.jsxs)(B,{type:`button`,variant:`ghost`,className:`min-h-9 text-xs`,onClick:()=>{a(!1),o()},children:[(0,$.jsx)(q,{className:`size-3.5`,"aria-hidden":!0}),c.advisorHistoryReevaluate]}):null]}):null]},e.opportunity.id)})})]},t)})}),W;return t[9]===U?W=t[10]:(W=(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-5 py-4`,children:U}),t[9]=U,t[10]=W),(0,$.jsx)(R,{open:n,onOpenChange:a,children:(0,$.jsxs)(te,{children:[z,(0,$.jsxs)(ne,{className:`xopc-drawer-right fixed right-0 top-0 z-[90] flex size-full max-w-lg flex-col overflow-hidden border-l border-edge bg-surface-overlay shadow-popover outline-none`,"aria-describedby":`home-advisor-history-description`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-start gap-3 border-b border-edge px-5 py-4`,children:[V,(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(L,{className:`text-base font-semibold text-fg`,children:c.advisorHistoryTitle}),(0,$.jsx)(F,{id:`home-advisor-history-description`,className:`mt-1 text-xs leading-5 text-fg-muted`,children:c.advisorHistoryDescription})]}),(0,$.jsx)(I,{asChild:!0,children:(0,$.jsx)(B,{type:`button`,variant:`ghost`,className:`-mr-2 size-9 shrink-0 p-0`,"aria-label":c.advisorHistoryClose,children:H})})]}),(0,$.jsx)(`div`,{className:`shrink-0 border-b border-edge-subtle px-5 py-3`,children:(0,$.jsx)(`div`,{className:`inline-flex rounded-lg bg-surface-inset p-1`,role:`group`,"aria-label":c.advisorHistoryFilterLabel,children:[[`all`,c.advisorHistoryFilterAll],[`adopted`,c.advisorHistoryFilterAdopted],[`other`,c.advisorHistoryFilterOther]].map(e=>{let[t,n]=e;return(0,$.jsx)(`button`,{type:`button`,className:`min-h-9 rounded-md px-3 text-xs font-medium transition-colors duration-150 ${f===t?`bg-surface-panel text-fg shadow-surface`:`text-fg-muted hover:text-fg`}`,"aria-pressed":f===t,onClick:()=>p(t),children:n},t)})})}),W]})]})})}function Me(e){return(0,$.jsx)(`li`,{children:e.observation},e.id)}function Ne(e){return e.language}function Pe(e,t){return e.replace(`{{count}}`,String(t))}function Fe(e,t){if(e.state===`disabled`)return null;if(e.state===`ready`){let n=1+e.alternatives.length;return{label:Pe(t.ready,n),detail:e.primary.title,tone:`accent`,refreshing:!!e.stale}}return e.state===`clarification`?{label:t.clarification,detail:e.question.question,tone:`accent`,refreshing:!1}:e.state===`refreshing`?{label:t.refreshing,detail:e.previous?.title??t.refreshingDetail,tone:`accent`,refreshing:!0}:e.reason===`generation_failed`?{label:t.generationFailed,detail:t.generationFailedDetail,tone:`danger`,refreshing:!1}:e.reason===`budget_exhausted`?{label:t.budgetExhausted,detail:t.budgetExhaustedDetail,tone:`warning`,refreshing:!1}:e.reason===`model_unavailable`?{label:t.modelUnavailable,detail:t.modelUnavailableDetail,tone:`warning`,refreshing:!1}:{label:t.idle,detail:t.idleDetail,tone:`neutral`,refreshing:!1}}var Ie={accent:`bg-accent`,danger:`bg-danger`,neutral:`bg-fg-subtle`,warning:`bg-warning`};function Le(e){let t=(0,Z.c)(50),{advisor:n,busy:r,copy:i,onOpenHistory:a,onRefresh:o}=e,[s,c]=(0,Q.useState)(!1),l;t[0]!==n||t[1]!==i?(l=Fe(n,i),t[0]=n,t[1]=i,t[2]=l):l=t[2];let u=l;if(!u)return null;let d=n.state!==`refreshing`,f=n.state===`ready`?i.findAnother:i.retry,p=`${i.label}:${u.label}`,m;t[3]===u.refreshing?m=t[4]:(m=u.refreshing?(0,$.jsx)(q,{className:`size-3.5 shrink-0 animate-spin motion-reduce:animate-none`,"aria-hidden":!0}):(0,$.jsx)(A,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),t[3]=u.refreshing,t[4]=m);let h=Ie[u.tone],g;t[5]===h?g=t[6]:(g=N(`size-1.5 shrink-0 rounded-full`,h),t[5]=h,t[6]=g);let _;t[7]===g?_=t[8]:(_=(0,$.jsx)(`span`,{className:g,"aria-hidden":!0}),t[7]=g,t[8]=_);let v;t[9]!==i.label||t[10]!==u.label?(v=(0,$.jsxs)(`span`,{className:`truncate`,children:[i.label,` · `,u.label]}),t[9]=i.label,t[10]=u.label,t[11]=v):v=t[11];let y;t[12]!==p||t[13]!==m||t[14]!==_||t[15]!==v?(y=(0,$.jsx)(W,{asChild:!0,children:(0,$.jsxs)(B,{type:`button`,variant:`ghost`,className:`h-9 max-w-56 rounded-lg px-2.5`,"aria-label":p,children:[m,_,v]})}),t[12]=p,t[13]=m,t[14]=_,t[15]=v,t[16]=y):y=t[16];let b;t[17]===u.refreshing?b=t[18]:(b=(0,$.jsx)(`span`,{className:`mt-1 flex size-7 shrink-0 items-center justify-center rounded-lg bg-accent-soft text-accent`,children:u.refreshing?(0,$.jsx)(q,{className:`size-4 animate-spin motion-reduce:animate-none`,"aria-hidden":!0}):(0,$.jsx)(A,{className:`size-4`,"aria-hidden":!0})}),t[17]=u.refreshing,t[18]=b);let x;t[19]===u.label?x=t[20]:(x=(0,$.jsx)(`p`,{className:`font-semibold text-fg`,children:u.label}),t[19]=u.label,t[20]=x);let S;t[21]===u.detail?S=t[22]:(S=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:u.detail}),t[21]=u.detail,t[22]=S);let C;t[23]!==x||t[24]!==S?(C=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[x,S]}),t[23]=x,t[24]=S,t[25]=C):C=t[25];let w;t[26]!==C||t[27]!==b?(w=(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[b,C]}),t[26]=C,t[27]=b,t[28]=w):w=t[28];let T;t[29]===a?T=t[30]:(T=()=>{c(!1),a()},t[29]=a,t[30]=T);let E;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,$.jsx)(ie,{className:`size-3.5`,"aria-hidden":!0}),t[31]=E):E=t[31];let D;t[32]!==i.history||t[33]!==T?(D=(0,$.jsxs)(B,{type:`button`,variant:`ghost`,className:`h-9 rounded-lg text-xs`,onClick:T,children:[E,i.history]}),t[32]=i.history,t[33]=T,t[34]=D):D=t[34];let O;t[35]!==r||t[36]!==d||t[37]!==o||t[38]!==f?(O=d?(0,$.jsxs)(B,{type:`button`,variant:`secondary`,className:`h-9 rounded-lg text-xs`,disabled:r,onClick:()=>{c(!1),o()},children:[(0,$.jsx)(q,{className:`size-3.5`,"aria-hidden":!0}),f]}):null,t[35]=r,t[36]=d,t[37]=o,t[38]=f,t[39]=O):O=t[39];let k;t[40]!==D||t[41]!==O?(k=(0,$.jsxs)(`div`,{className:`mt-4 flex items-center justify-end gap-1 border-t border-edge-subtle pt-3`,children:[D,O]}),t[40]=D,t[41]=O,t[42]=k):k=t[42];let j;t[43]!==w||t[44]!==k?(j=(0,$.jsx)(V,{children:(0,$.jsxs)(H,{side:`bottom`,align:`end`,sideOffset:6,className:`z-[70] w-[min(21rem,calc(100vw-1.5rem))] rounded-xl border border-edge bg-surface-panel p-4 text-sm text-fg shadow-popover outline-none`,onOpenAutoFocus:Re,children:[w,k]})}),t[43]=w,t[44]=k,t[45]=j):j=t[45];let M;return t[46]!==s||t[47]!==j||t[48]!==y?(M=(0,$.jsxs)(U,{open:s,onOpenChange:c,children:[y,j]}),t[46]=s,t[47]=j,t[48]=y,t[49]=M):M=t[49],M}function Re(e){return e.preventDefault()}function ze({taskId:e,language:t,onComplete:n}){let r=t===`zh`,[i,a]=(0,Q.useState)(),[o,s]=(0,Q.useState)(),[c,l]=(0,Q.useState)(!1),[u,d]=(0,Q.useState)(0);(0,Q.useEffect)(()=>{let t=!0;return s(void 0),a(void 0),g(e).then(e=>{t&&a(e)}).catch(e=>{t&&s(e instanceof Error?e.message:String(e))}),()=>{t=!1}},[e,u]);let f=i?Y(i):[],m=i?.task.phase===`review`&&i.allowedCommands.includes(`close`)&&i.waits.length===0&&f.length>0&&f.every(e=>e.status===`passed`);async function h(e,t=!1){if(!c){l(!0),s(void 0);try{a(await e()),t&&n()}catch(e){s(e instanceof Error?e.message:String(e))}finally{l(!1)}}}let _=i?.receipts[0];return(0,$.jsxs)(`section`,{className:`mt-4 space-y-4 rounded-xl border border-edge bg-surface-panel p-4`,"aria-label":r?`任务验收`:`Task review`,children:[o?(0,$.jsxs)(`div`,{role:`alert`,className:`flex items-center justify-between gap-3 text-sm text-danger`,children:[(0,$.jsx)(`span`,{children:o}),(0,$.jsx)(B,{variant:`ghost`,disabled:c,onClick:()=>d(e=>e+1),children:r?`刷新`:`Refresh`})]}):null,!i&&!o?(0,$.jsxs)(`div`,{className:`space-y-3`,"aria-busy":!0,children:[(0,$.jsx)(G,{className:`h-5 w-1/3`}),(0,$.jsx)(G,{className:`h-24 w-full`})]}):null,i?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r?`执行结果`:`Result`}),_?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(X,{content:_.summary,contentKey:`home:${e}:result`,language:t,previewHeight:180}),_.remainingWork.length>0?(0,$.jsxs)(`p`,{className:`whitespace-pre-wrap text-sm text-fg-muted`,children:[r?`尚待完成:`:`Remaining work: `,_.remainingWork.join(`
|
|
2
|
-
`)]}):null,_.evidence.map((e,t)=>(0,$.jsxs)(`div`,{className:`text-sm text-fg-muted`,children:[e.uri&&/^https?:\/\//.test(e.uri)?(0,$.jsx)(`a`,{href:e.uri,target:`_blank`,rel:`noreferrer`,className:`text-accent-fg hover:underline`,children:e.title}):(0,$.jsx)(`span`,{children:e.title}),e.summary?(0,$.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap break-words`,children:e.summary}):null]},t))]}):(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:r?`暂无执行结果,请查看任务详情。`:`No result yet. View the task details.`}),(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r?`验收条件`:`Acceptance criteria`}),f.map((t,n)=>(0,$.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2 border-t border-edge-subtle pt-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1 text-sm text-fg`,children:[(0,$.jsx)(`p`,{className:`break-words`,children:t.text}),(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:r?{passed:`已通过`,failed:`未通过`,unverified:`待判定`}[t.status]:{passed:`Passed`,failed:`Failed`,unverified:`Not reviewed`}[t.status]})]}),i.task.phase!==`closed`&&i.task.contract?.acceptancePolicy!==`verified_auto`?(0,$.jsx)(`div`,{className:`flex gap-2`,children:[`passed`,`failed`].map(a=>(0,$.jsx)(B,{variant:`secondary`,disabled:c||t.status===a,onClick:()=>void h(()=>p(e,n,a,i.task.version,i.task.latestContractVersion)),children:r?a===`passed`?`确认通过`:`未通过`:a===`passed`?`Mark passed`:`Mark failed`},a))}):null]},n)),m?null:(0,$.jsx)(`p`,{className:`text-xs text-fg-muted`,children:r?`所有验收条件通过且任务无等待事项后,可完成验收。`:`Accept once all criteria pass and the task has no pending waits.`}),(0,$.jsx)(B,{variant:`primary`,disabled:c||!m,onClick:()=>void h(()=>y(e,{type:`close`,resolution:`done`},i.task.version),!0),children:r?`验收完成`:`Accept task`})]}):null]})}async function Be(e,t=`en`){let n=await g(e),r=n.runs.filter(e=>!e.parentRunId).sort((e,t)=>t.queuedAt-e.queuedAt)[0];if(!n.allowedCommands.includes(`start`)||r?.status!==`failed`)throw Error(t===`zh`?`任务状态已变化,暂时无法重试。请刷新并查看当前状态。`:`Task is no longer available for retry. Refresh and review its current state.`);await y(e,{type:`start`,executor:z.parse({...r.executorRef,kind:r.executorKind})},n.task.version)}function Ve(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>String(t[n]??``))}function He(){let e=(0,Z.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsxs)(`div`,{className:`space-y-8`,"aria-busy":!0,children:[(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsx)(G,{className:`h-10 w-3/5 rounded-xl`}),(0,$.jsx)(G,{className:`h-5 w-4/5 rounded-lg`})]}),(0,$.jsx)(G,{className:`h-64 rounded-2xl`}),(0,$.jsx)(G,{className:`h-32 rounded-xl`})]}),e[0]=t):t=e[0],t}function Ue(e){let t=(0,Z.c)(50),{item:n,busy:r,recommendationLabel:i,dueLabel:o,failureLabel:s,locale:c,onAction:l,onComplete:u}=e,[d,f]=a(),p=n.primaryAction?.type===`task_review`?n.primaryAction:void 0,m;t[0]!==p||t[1]!==d?(m=p&&d.get(`reviewTask`)===p.taskId,t[0]=p,t[1]=d,t[2]=m):m=t[2];let h=!!m,g;t[3]!==p||t[4]!==d||t[5]!==f?(g=e=>{let t=new URLSearchParams(d);e&&p?t.set(`reviewTask`,p.taskId):t.delete(`reviewTask`),f(t)},t[3]=p,t[4]=d,t[5]=f,t[6]=g):g=t[6];let _=g,v;t[7]!==o||t[8]!==n.dueAt||t[9]!==c?(v=n.dueAt?`${o} ${re(new Date(n.dueAt),c)}`:null,t[7]=o,t[8]=n.dueAt,t[9]=c,t[10]=v):v=t[10];let y=v,b=n.kind===`failure`?s:y,x;t[11]===b?x=t[12]:(x=b?(0,$.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-xs font-medium text-warning`,children:[(0,$.jsx)(`span`,{className:`size-1.5 rounded-full bg-warning`,"aria-hidden":!0}),(0,$.jsx)(`span`,{children:b})]}):null,t[11]=b,t[12]=x);let S=!n.openAction,C;t[13]!==n.id||t[14]!==n.openAction||t[15]!==l?(C=()=>n.openAction&&l(n.openAction,n.id),t[13]=n.id,t[14]=n.openAction,t[15]=l,t[16]=C):C=t[16];let w;t[17]===n.title?w=t[18]:(w=(0,$.jsx)(`span`,{className:`block text-lg font-semibold leading-7 tracking-tight text-fg`,children:n.title}),t[17]=n.title,t[18]=w);let T;t[19]===n.summary?T=t[20]:(T=(0,$.jsx)(`span`,{className:`mt-1.5 block text-sm leading-6 text-fg-muted`,children:n.summary}),t[19]=n.summary,t[20]=T);let E;t[21]!==S||t[22]!==C||t[23]!==w||t[24]!==T?(E=(0,$.jsxs)(`button`,{type:`button`,className:`block w-full text-left outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-accent`,disabled:S,onClick:C,children:[w,T]}),t[21]=S,t[22]=C,t[23]=w,t[24]=T,t[25]=E):E=t[25];let D;t[26]!==n.recommendation||t[27]!==i?(D=n.recommendation?(0,$.jsxs)(`p`,{className:`mt-3 text-sm leading-6 text-fg-muted`,children:[(0,$.jsxs)(`span`,{className:`font-semibold text-fg`,children:[i,`:`]}),n.recommendation]}):null,t[26]=n.recommendation,t[27]=i,t[28]=D):D=t[28];let O;t[29]!==r||t[30]!==n.id||t[31]!==n.primaryAction||t[32]!==n.secondaryActions||t[33]!==l||t[34]!==p||t[35]!==h||t[36]!==_?(O=n.primaryAction||n.secondaryActions.length>0?(0,$.jsxs)(`div`,{className:`mt-5 flex flex-wrap gap-2`,children:[n.primaryAction?(0,$.jsx)(B,{type:`button`,variant:`primary`,className:`h-9 rounded-lg px-3.5 text-xs`,disabled:r,"aria-expanded":p?h:void 0,onClick:()=>p?_(!h):l(n.primaryAction,n.id),children:n.primaryAction.label}):null,n.secondaryActions.map(e=>(0,$.jsx)(B,{type:`button`,variant:`secondary`,className:`h-9 rounded-lg px-3.5 text-xs shadow-none`,disabled:r,onClick:()=>l(e,n.id),children:e.label},`${e.type}:${e.label}`))]}):null,t[29]=r,t[30]=n.id,t[31]=n.primaryAction,t[32]=n.secondaryActions,t[33]=l,t[34]=p,t[35]=h,t[36]=_,t[37]=O):O=t[37];let k;t[38]!==c||t[39]!==u||t[40]!==p||t[41]!==h||t[42]!==_?(k=h&&p?(0,$.jsx)(ze,{taskId:p.taskId,language:c,onComplete:()=>{_(!1),u()}}):null,t[38]=c,t[39]=u,t[40]=p,t[41]=h,t[42]=_,t[43]=k):k=t[43];let A;return t[44]!==D||t[45]!==O||t[46]!==k||t[47]!==x||t[48]!==E?(A=(0,$.jsxs)(`article`,{className:`px-5 py-5 sm:px-6 sm:py-6`,children:[x,E,D,O,k]}),t[44]=D,t[45]=O,t[46]=k,t[47]=x,t[48]=E,t[49]=A):A=t[49],A}function We(e){let t=(0,Z.c)(26),{item:n,onAction:r}=e,i;t[0]===n.kind?i=t[1]:(i=n.kind===`scheduled`?(0,$.jsx)(ae,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(`span`,{className:`size-1.5 rounded-full bg-success`,"aria-hidden":!0}),t[0]=n.kind,t[1]=i);let a=i,o=!n.openAction,c;t[2]!==n.id||t[3]!==n.openAction||t[4]!==r?(c=()=>n.openAction&&r(n.openAction,n.id),t[2]=n.id,t[3]=n.openAction,t[4]=r,t[5]=c):c=t[5];let l;t[6]===a?l=t[7]:(l=(0,$.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center text-fg-subtle`,children:a}),t[6]=a,t[7]=l);let u;t[8]===n.title?u=t[9]:(u=(0,$.jsx)(`span`,{className:`block truncate text-sm font-medium text-fg`,children:n.title}),t[8]=n.title,t[9]=u);let d;t[10]===n.summary?d=t[11]:(d=(0,$.jsx)(`span`,{className:`mt-0.5 block truncate text-xs text-fg-muted`,children:n.summary}),t[10]=n.summary,t[11]=d);let f;t[12]!==u||t[13]!==d?(f=(0,$.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[u,d]}),t[12]=u,t[13]=d,t[14]=f):f=t[14];let p;t[15]===n.statusLabel?p=t[16]:(p=n.statusLabel?(0,$.jsx)(`span`,{className:`shrink-0 text-xs text-fg-subtle`,children:n.statusLabel}):null,t[15]=n.statusLabel,t[16]=p);let m;t[17]===n.openAction?m=t[18]:(m=n.openAction?(0,$.jsx)(s,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":!0}):null,t[17]=n.openAction,t[18]=m);let h;return t[19]!==o||t[20]!==c||t[21]!==l||t[22]!==f||t[23]!==p||t[24]!==m?(h=(0,$.jsxs)(`button`,{type:`button`,className:`flex min-h-16 w-full items-center gap-3 py-3 text-left outline-none hover:text-fg focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-accent`,disabled:o,onClick:c,children:[l,f,p,m]}),t[19]=o,t[20]=c,t[21]=l,t[22]=f,t[23]=p,t[24]=m,t[25]=h):h=t[25],h}function Ge(){let e=P(e=>e.language),t=M(e),n=t.projectsPage,r=se(e),a=i(),s=o(),l=pe(e=>e.setPageHeader),u=pe(e=>e.clearPageHeader),{home:d,loading:p,loadError:g,setLoadError:v,load:y}=ve(e,s.key),[S,E]=(0,Q.useState)(!1),[k,A]=(0,Q.useState)(``),N=(0,Q.useRef)(!1),[z,V]=(0,Q.useState)(null),[H,U]=(0,Q.useState)(!1),[W,G]=(0,Q.useState)(),[re,K]=(0,Q.useState)(!1),[ie,ae]=(0,Q.useState)(0),[oe,q]=(0,Q.useState)(),[ue,fe]=(0,Q.useState)(),[J,_e]=(0,Q.useState)(!1),Y=w({chat:t.chat}),X=(0,Q.useRef)(null),Z=de({disabled:J,chat:t.chat,onTranscript:e=>{A(t=>le(t,e)),window.setTimeout(()=>X.current?.focus(),0)}}),{phase:ye,voiceActive:xe,startVoiceInput:Se,cancelVoiceInput:Ce,confirmVoiceInput:we,retryVoiceInput:Te}=Z;(0,Q.useEffect)(()=>{if(!oe)return;let e=window.setTimeout(()=>q(void 0),8e3);return()=>window.clearTimeout(e)},[oe]);let De=(0,Q.useCallback)(async e=>{if(!(e.length===0||J)){_e(!0);try{await Y.processFiles(e)}finally{_e(!1)}}},[J,Y.processFiles]),Oe=(0,Q.useCallback)(async e=>{let t=ge(e.clipboardData);t.length!==0&&(e.preventDefault(),await De(t))},[De]),ke=(0,Q.useCallback)(e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`,Y.setIsDragging(!0))},[Y.setIsDragging]),Ae=(0,Q.useCallback)(e=>{let t=e.relatedTarget;(!(t instanceof Node)||!e.currentTarget.contains(t))&&Y.setIsDragging(!1)},[Y.setIsDragging]),Me=(0,Q.useCallback)(async e=>{e.preventDefault(),Y.setIsDragging(!1),await De(Array.from(e.dataTransfer.files))},[Y.setIsDragging,De]),Ne=(0,Q.useCallback)(e=>{e.preventDefault();let t=Y.wireAttachmentsPayload(),n=b(k,t.length>0?he(t):void 0,{projectScope:`none`});n&&(E(!1),A(``),Y.clearAttachments(),a(n))},[Y.clearAttachments,Y.wireAttachmentsPayload,k,a]),Pe=Y.attachments.length>=10,Fe={attachTitle:Pe?Ve(t.chat.maxAttachmentsReached,{max:10}):`${t.chat.attachFile} (${Y.attachments.length}/10)`,dropFiles:t.chat.dropFiles,intentLabel:r.intentLabel,intentPlaceholder:r.intentPlaceholder,intentSuggestion:r.intentSuggestion,shortcut:n.home.submitShortcut,submit:r.newWork},Ie=(0,Q.useMemo)(()=>({label:n.home.advisorStatusLabel,ready:n.home.advisorStatusReady,clarification:n.home.advisorStatusClarification,refreshing:n.home.advisorStatusRefreshing,refreshingDetail:n.home.advisorRefreshing,idle:n.home.advisorStatusIdle,idleDetail:n.home.advisorUnavailableTitle,generationFailed:n.home.advisorStatusGenerationFailed,budgetExhausted:n.home.advisorStatusBudgetExhausted,modelUnavailable:n.home.advisorStatusModelUnavailable,generationFailedDetail:n.home.advisorGenerationFailed,budgetExhaustedDetail:n.home.advisorBudgetExhausted,modelUnavailableDetail:n.home.advisorModelUnavailable,history:n.home.advisorHistory,retry:n.home.retry,findAnother:n.home.advisorRefresh}),[n.home]),Re=!!(d&&d.needsUser.length===0&&d.backgroundCount===0),ze=!!(d&&d.needsUser.length===0),Ge=ze||S;(0,Q.useEffect)(()=>{!Ge&&xe&&Ce()},[Ce,Ge,xe]),(0,Q.useEffect)(()=>{let e=e=>{let t=e.detail?.target;t&&t!==`chat`||!Ge||J||(e.preventDefault(),ye===`recording`?we():ye===`idle`?(X.current?.focus(),Se()):ye===`error`&&Te())},t=e=>{let t=e.detail?.target;t&&t!==`chat`||!Ge||!xe||(e.preventDefault(),Ce(),X.current?.focus())};return window.addEventListener(me,e),window.addEventListener(ce,t),()=>{window.removeEventListener(me,e),window.removeEventListener(ce,t)}},[J,Ce,Ge,we,Te,Se,xe,ye]);let Ke=(0,Q.useCallback)(e=>{e||Ce(),E(e)},[Ce]),qe=(0,Q.useCallback)((t,n)=>{if(t.type===`open`){a(D(`/`,t.href));return}t.type===`task_review`||N.current||(N.current=!0,V(n),v(null),(async()=>{try{t.type===`retry_task`?await Be(t.taskId,e):t.type===`connector_decision`?await _({kind:`connector_approval`,approvalId:t.approvalId},t.decision):t.type===`retry_run`?await m({kind:t.subjectKind,runId:t.runId}):t.type===`acknowledge_run`&&await C({kind:t.subjectKind,runId:t.runId}),await y()}catch(e){v(e instanceof Error?e.message:String(e))}finally{N.current=!1,V(null)}})())},[e,y,a]),Je=(0,Q.useCallback)(()=>{U(!0),G(void 0),fe(void 0),v(null),T(e).then(()=>y()).catch(e=>v(e instanceof Error?e.message:String(e))).finally(()=>U(!1))},[e,y]),Ye=(0,Q.useCallback)((e,t)=>{U(!0),v(null),x(e,t).then(async t=>{if(t.outcome===`needs_setup`){fe({opportunityId:e.id,value:t.preflight});return}if(fe(void 0),ae(e=>e+1),t.outcome===`task`){G({title:n.home.advisorStartedTitle,detail:Ve(n.home.advisorStartedDetail,{title:e.title}),href:D(`/`,t.href)}),await y();return}a(t.href)}).catch(e=>v(e instanceof Error?e.message:String(e))).finally(()=>U(!1))},[y,a,n.home.advisorStartedDetail,n.home.advisorStartedTitle]),Xe=(0,Q.useCallback)((e,t)=>{U(!0),G(void 0),fe(void 0),v(null),h(e,{kind:t,snoozedUntil:t===`too_early`?Date.now()+4320*6e4:void 0}).then(({idempotencyKey:t})=>(q({opportunityId:e.id,idempotencyKey:t}),ae(e=>e+1),y())).catch(e=>v(e instanceof Error?e.message:String(e))).finally(()=>U(!1))},[y]),Ze=(0,Q.useCallback)(()=>{if(!oe)return;let e=oe;q(void 0),U(!0),v(null),f(e.opportunityId,e.idempotencyKey).then(()=>(ae(e=>e+1),y())).catch(t=>{q(e),v(t instanceof Error?t.message:String(t))}).finally(()=>U(!1))},[oe,y]),Qe=(0,Q.useCallback)((e,t)=>{a(`/chat/new?${new URLSearchParams({draft:`${e}\n\n${t}`}).toString()}`)},[a]),$e=(0,Q.useMemo)(()=>(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[d?(0,$.jsx)(Le,{advisor:d.advisor,busy:H,copy:Ie,onOpenHistory:()=>K(!0),onRefresh:Je}):null,ze?null:(0,$.jsxs)(B,{type:`button`,variant:`primary`,className:`h-9 rounded-lg`,onClick:()=>E(!0),children:[(0,$.jsx)(O,{className:`size-4`,"aria-hidden":!0}),r.newWork]})]}),[H,Ie,r.newWork,d,Je,ze]);(0,Q.useLayoutEffect)(()=>(l({startExtra:null,main:(0,$.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:n.title}),end:$e}),()=>u()),[u,$e,l,n.title]);let et=d?.needsUser.length??0,tt=d?.backgroundCount??0,nt=et>0?Ve(n.home.attentionTitle,{count:et}):tt>0?n.home.clearTitle:n.home.idleTitle,rt=et>0?tt>0?Ve(n.home.attentionIntroWithBackground,{count:tt}):n.home.attentionIntro:tt>0?Ve(n.home.clearIntro,{count:tt}):n.home.idleIntro;return(0,$.jsxs)(`main`,{className:`mx-auto flex w-full max-w-[920px] flex-1 flex-col px-4 pb-8 pt-3 sm:px-6 lg:px-8 lg:pb-12 lg:pt-4`,children:[(0,$.jsx)(`input`,{ref:Y.fileInputRef,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{let t=e.target.files;t&&De(Array.from(t)),e.target.value=``}}),(0,$.jsx)(R,{open:S,onOpenChange:Ke,children:(0,$.jsxs)(te,{children:[(0,$.jsx)(ee,{className:`xopc-dialog-overlay fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]`}),(0,$.jsxs)(ne,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[90] flex h-[min(31rem,calc(100dvh-1.5rem))] w-[min(36rem,calc(100vw-1.5rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-overlay shadow-float focus:outline-none`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-start gap-4 border-b border-edge px-5 py-4`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(L,{className:`text-base font-semibold text-fg`,children:r.dialogTitle}),(0,$.jsx)(F,{className:`mt-1 text-sm leading-5 text-fg-muted`,children:r.dialogDescription})]}),(0,$.jsx)(I,{asChild:!0,children:(0,$.jsx)(B,{type:`button`,variant:`ghost`,className:`-mr-2 -mt-1 size-8 shrink-0 rounded-lg p-0`,title:n.cancel,"aria-label":n.cancel,children:(0,$.jsx)(j,{className:`size-4`,"aria-hidden":!0})})})]}),(0,$.jsx)(be,{variant:`dialog`,inputId:`new-conversation-intent`,inputRef:X,intent:k,labels:{...Fe,submit:r.submit},attachments:Y.attachments,isDragging:Y.isDragging,attachmentBusy:J,attachmentsFull:Pe,voice:Z,chat:t.chat,cancelAction:(0,$.jsx)(I,{asChild:!0,children:(0,$.jsx)(B,{type:`button`,variant:`ghost`,children:n.cancel})}),onIntentChange:A,onPickFiles:()=>Y.fileInputRef.current?.click(),onRemoveAttachment:Y.removeAttachment,onPaste:e=>void Oe(e),onDragOver:ke,onDragLeave:Ae,onDrop:e=>void Me(e),onSubmit:Ne})]})]})}),(0,$.jsx)(je,{open:re,refreshKey:ie,onOpenChange:K,onReevaluate:Je}),g?(0,$.jsxs)(`div`,{className:`mb-6 flex items-center justify-between gap-3 rounded-xl border border-danger/25 bg-danger-soft px-4 py-3 text-sm text-danger`,children:[(0,$.jsx)(`span`,{children:g}),(0,$.jsx)(B,{type:`button`,variant:`ghost`,className:`h-8 px-2`,onClick:()=>void y(),children:n.home.retry})]}):null,p?(0,$.jsx)(He,{}):d?(0,$.jsxs)(`div`,{className:Re?`mx-auto my-auto w-full max-w-[640px]`:`w-full`,children:[(0,$.jsxs)(`section`,{className:Re?`w-full text-center`:`max-w-3xl`,children:[(0,$.jsx)(`h2`,{className:`text-3xl font-semibold leading-tight tracking-[-0.035em] text-fg sm:text-4xl`,children:nt}),(0,$.jsx)(`p`,{className:Re?`mx-auto mt-3 max-w-xl text-sm leading-6 text-fg-muted sm:text-base sm:leading-7`:`mt-3 max-w-2xl text-sm leading-6 text-fg-muted sm:text-base sm:leading-7`,children:rt})]}),ze?(0,$.jsx)(be,{variant:`inline`,inputId:`home-conversation-intent`,inputRef:X,intent:k,labels:Fe,attachments:Y.attachments,isDragging:Y.isDragging,attachmentBusy:J,attachmentsFull:Pe,voice:Z,chat:t.chat,onIntentChange:A,onPickFiles:()=>Y.fileInputRef.current?.click(),onRemoveAttachment:Y.removeAttachment,onPaste:e=>void Oe(e),onDragOver:ke,onDragLeave:Ae,onDrop:e=>void Me(e),onSubmit:Ne}):null,(0,$.jsx)(Ee,{advisor:d.advisor,busy:H,copy:{aiLabel:n.home.advisorAiLabel,why:n.home.advisorWhy,evidence:n.home.advisorEvidence,needsSetup:n.home.advisorNeedsSetup,start:n.home.advisorStart,discuss:n.home.advisorDiscuss,refresh:n.home.advisorRefresh,refreshing:n.home.advisorRefreshing,history:n.home.advisorHistory,viewProgress:n.home.advisorViewProgress,alternatives:n.home.advisorAlternatives,feedback:n.home.advisorFeedback,alreadyDone:n.home.advisorAlreadyDone,irrelevant:n.home.advisorIrrelevant,later:n.home.advisorLater,lessLikeThis:n.home.advisorLessLikeThis,sourceIncorrect:n.home.advisorSourceIncorrect,minutes:n.home.advisorMinutes,setupTitle:n.home.advisorSetupTitle,setupHint:n.home.advisorSetupHint,configure:n.home.advisorConfigure,degradedStart:n.home.advisorDegradedStart,sceneHint:n.home.advisorSceneHint,sceneAction:n.home.advisorSceneAction,automationHint:n.home.advisorAutomationHint,automationAction:n.home.advisorAutomationAction},onRefresh:Je,onAction:Ye,onFeedback:Xe,onClarification:Qe,onOpenHistory:()=>K(!0),preflight:ue,receipt:W}),d.needsUser.length>0?(0,$.jsxs)(`section`,{className:`mt-10`,"aria-labelledby":`home-needs-user-title`,children:[(0,$.jsxs)(`div`,{className:`mb-3 flex items-center gap-2 px-1`,children:[(0,$.jsx)(c,{className:`size-4 text-warning`,"aria-hidden":!0}),(0,$.jsx)(`h2`,{id:`home-needs-user-title`,className:`text-sm font-semibold text-fg`,children:n.home.needsUserTitle})]}),(0,$.jsx)(`div`,{className:`divide-y divide-edge-subtle overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base`,children:d.needsUser.map(t=>(0,$.jsx)(Ue,{item:t,busy:z!==null,recommendationLabel:n.home.recommendationLabel,dueLabel:n.home.dueLabel,failureLabel:r.runAttention,locale:e,onAction:qe,onComplete:()=>void y()},t.id))})]}):null,d.background.length>0?(0,$.jsxs)(`section`,{className:`mt-10`,"aria-labelledby":`home-background-title`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-1`,children:[(0,$.jsx)(`h2`,{id:`home-background-title`,className:`text-sm font-semibold text-fg`,children:n.home.backgroundTitle}),(0,$.jsx)(`span`,{className:`text-xs text-fg-subtle`,children:Ve(n.home.backgroundCount,{count:d.backgroundCount})})]}),(0,$.jsx)(`div`,{className:`mt-2 divide-y divide-edge-subtle border-y border-edge-subtle`,children:d.background.map(e=>(0,$.jsx)(We,{item:e,onAction:qe},e.id))})]}):null]}):null,oe?(0,$.jsxs)(`div`,{role:`status`,className:`fixed bottom-5 left-1/2 z-[100] flex -translate-x-1/2 items-center gap-4 rounded-lg border border-edge bg-surface-panel px-4 py-3 text-sm text-fg shadow-float`,children:[(0,$.jsx)(`span`,{children:n.home.advisorFeedbackSaved}),(0,$.jsx)(`button`,{type:`button`,className:`font-medium text-accent-fg hover:underline`,onClick:Ze,children:n.home.advisorUndo})]}):null]})}export{Ge as HomePage};
|