chainlesschain 0.164.0 → 0.165.2
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/README.md +248 -2
- package/package.json +7 -4
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-D2MEn7fI.js → AIOps-lS1R0Cza.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-lCW_4Gf0.js → ActionButton-BmlgBPsj.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Bs7i-nsS.js → Analytics-CNKczv1S.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-CK7B6S_j.js → AppLayout-BuZGJARQ.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-C8ILjpyo.js → Artifacts-Dm73Sl-O.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-Bb9cNaWc.js → Audit-BGMW7A5e.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-sC9ooXIf.js → BackgroundAgents-BQ6M54JR.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D-DrsplT.js → Backup-DBzGP0bR.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-uCNZpwSK.js → BaseInput-D1mLCoOV.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CsDK1uE9.js → Chat-BUfcN7p8.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-OqSDt50w.js → ChatBubbleRenderer-CY5m8ZHg.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-JhTXM1-K.js → Checkbox-Du0Yg5Pi.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BbzZLnyD.js → Codegen-B2RXziHW.js} +1 -1
- package/src/assets/web-panel/assets/{Col-D4VW4m4j.js → Col-DWhekOrR.js} +1 -1
- package/src/assets/web-panel/assets/{Community-BXrYawxV.js → Community-HQhrkon4.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DCihGy1u.js → Compact-izHNb4uz.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DlyZ-lk8.js → Compliance-BDwLy41-.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-DvGZrhbO.js → Cowork-DFJhLa7K.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-DUncZi8h.js → Cron-DYY9RG7-.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-C_hLuUcm.js → Crosschain-rr7tJTtv.js} +1 -1
- package/src/assets/web-panel/assets/{DID-b6YSUqxr.js → DID-D2sfHRLi.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-uvM15Cfb.js → Dashboard-q_eGdhha.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-D1-Nd4qY.js → Dropdown-Cufrh2Bz.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-8ApvL6Zc.js → EmailListRenderer-B-kdv10f.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-LYJt8811.js → FamilyGuardDashboard-D21XjgfG.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BbI3HGpv.js → Federation-CAwRTLZH.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DSoEKuFu.js → FormItemContext-vx3daNDF.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-B0S9OWd5.js → GenericCardRenderer-CRWY2wU4.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DIs9Zhf3.js → Git-Q6SwauyD.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-jzZXrxcl.js → Governance-BJ1q4IQZ.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-JUPjf2ZI.js → Inference-CSWjROgD.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DxnfJvlP.js → KnowledgeGraph-fzuQsWuY.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-iXiz8BEE.js → Logs-DVF8Mnns.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-BLif4QSg.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-Y3Xch312.js → Marketplace-BQP7LOA4.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-D7kGGbO7.js → McpTools-BNlJCmNc.js} +4 -4
- package/src/assets/web-panel/assets/{Memory-Do_hVxzh.js → Memory-DLLg5WQ4.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CtrR0Tas.js → MobileBridge-CR2skNAF.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-BxVavObl.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-qo5QCTGd.js → Mtc-B17pgqMI.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-cq5mnjYj.js → MtcAudit-4UmV5cIL.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-Bq0MAQHw.js → Multisig-DoMEXEcU.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-DdWE6Vi2.js → NLProgramming-h9DMXFX4.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BxMBFcIp.js → Notes-Cihn-xX8.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-RTrAcbUe.js → NotificationSettings-BE6ZGa3R.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-DJbpGqzT.js → OrderTableRenderer-CnwojoSI.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-SQzIPdqC.js → Organization-B2vpwmjb.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-02yECh22.js → Overflow-C4z28R0-.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BNg4pNCM.js → P2P-BVlFkwhW.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BxPJZsD3.js → PdhVaultBrowser-BXbEdL5B.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-CLnDnPAz.js → Permissions-C28xs4lp.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-C5m0AjGf.js → PersonalDataHub-Dgl_rBjM.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-VwOf5Dhv.js → Pipeline-3QUIhrKI.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-CC0W2hZd.js → Privacy-8Gh33OZ5.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-Dz893Bob.js → ProjectInit-BNmg4tZi.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-CxQkvl0k.js → ProjectSettings-vgMfeCf9.js} +2 -2
- package/src/assets/web-panel/assets/Projects-BhtAVilc.js +1 -0
- package/src/assets/web-panel/assets/{Providers-DeB9IkxK.js → Providers-CXoOa8eX.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-OCeoaswn.js → QrScannerModal-BhfTF0oS.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DenotaAj.js → QuickAsk-C746HEAj.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-Cies_jjI.js → Recommend-BSej8Eo0.js} +1 -1
- package/src/assets/web-panel/assets/RemoteSession-f3gmnlG3.js +5 -0
- package/src/assets/web-panel/assets/{Reputation-CW0mvxgZ.js → Reputation-CyvybpkN.js} +1 -1
- package/src/assets/web-panel/assets/{Row-SEd32qZU.js → Row-DwV2PeYn.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BSwnJ3Lm.js → RssFeed-11GrzjZy.js} +3 -3
- package/src/assets/web-panel/assets/{Search-xe2m8bkC.js → Search-BjKXkrAY.js} +1 -1
- package/src/assets/web-panel/assets/{Security-Mq2F9Nro.js → Security-eWiFb9Yk.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BKGw2V3P.js → Services-CdCsMAtt.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DW95-Rxf.js → Skeleton-4Q2UTKQ5.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CHgChCv_.js → Skills-v4rtYrRj.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-tKh6k3R7.js → Sla-CRhsFvd_.js} +1 -1
- package/src/assets/web-panel/assets/SpeechSettings-DLjKsDVu.js +1 -0
- package/src/assets/web-panel/assets/{SyncSettings-D0Fw8fVL.js → SyncSettings-D16zonl7.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-20x1GB3D.js → Tasks-Xxozz0i_.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DJ-lts-a.js → Templates-CXJpPtCT.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BFdGpbs7.js → Tenant-XRV0L1ZF.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-Xpx61vHL.js → Terminal-CYuO1i_w.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-C6UIvyZQ.js → TimelineRenderer-BXqitWsu.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-Dellq08f.js → Tokens-BvPrDHIy.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-VKw8d0J-.js → Trigger-DhCrSTf5.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-DNftdKT5.js → Trust-DmsuZD6K.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DX9VAKJI.js → UkeySign-D_yrts5C.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-B2h3jO8q.js → VideoEditing-B01ihPrm.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CjGkof7f.js → Wallet-DpUjKa-N.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-2Zfcu55P.js → WebAuthn-CL07yON6.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-B9eZ8UxZ.js → WorkflowEditor-CLMflnRr.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CQNfD-YO.js → chat-DtUqe8h_.js} +1 -1
- package/src/assets/web-panel/assets/{colors-D4usyFT2.js → colors-DPKrgVfy.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-s4TpjvjX.js → compact-item-BTt2GtOm.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-BRCSvYxj.js → createContext-D_VeUc1J.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-Bj5nUW2v.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-AdkUbkV-.js → hasIn-1kndiylj.js} +1 -1
- package/src/assets/web-panel/assets/{index-BIoG5yYf.js → index-2eyAXE3d.js} +1 -1
- package/src/assets/web-panel/assets/{index-nXyk8GZ9.js → index-4bna2_SR.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2V-eKfK.js → index-8nz_fmlj.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_XBHopw.js → index-B9KvcS7R.js} +1 -1
- package/src/assets/web-panel/assets/{index-s_buFMEG.js → index-BAXfRKfG.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZT36ZYq.js → index-BHpBMWCh.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMcimU-2.js → index-BaZAbw9A.js} +1 -1
- package/src/assets/web-panel/assets/{index-DzRjHxEv.js → index-BepLZwgB.js} +1 -1
- package/src/assets/web-panel/assets/{index--00U6vXZ.js → index-Bhudc_Ez.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7Y8Aluc.js → index-BlDNVgBt.js} +1 -1
- package/src/assets/web-panel/assets/{index-BtobShro.js → index-By5n8up9.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cvyt-zhm.js → index-CHG-KcS4.js} +1 -1
- package/src/assets/web-panel/assets/index-CPcM-eqo.js +1 -0
- package/src/assets/web-panel/assets/{index-MMN9V6JF.js → index-CX81qSM4.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bad4VNvz.js → index-CauoBQkH.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCsM_Ybx.js → index-CcO04eDn.js} +1 -1
- package/src/assets/web-panel/assets/{index-DARsAyUp.js → index-CtF7EN49.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5KAQFPQ.js → index-CzjkKUmR.js} +1 -1
- package/src/assets/web-panel/assets/{index-RfMr79MW.js → index-D95OFht7.js} +1 -1
- package/src/assets/web-panel/assets/{index-DdCB70SS.js → index-DFIZ_1Sf.js} +1 -1
- package/src/assets/web-panel/assets/{index-CYdoQsa1.js → index-DG2MZQ3f.js} +1 -1
- package/src/assets/web-panel/assets/{index-BPhkFZ1I.js → index-DJ8vXGOa.js} +1 -1
- package/src/assets/web-panel/assets/{index-_IRVsV9X.js → index-Dbbymxpj.js} +1 -1
- package/src/assets/web-panel/assets/{index-DVKfQ0Ux.js → index-DdkplL9R.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkwiSLhU.js → index-DfGl8CqG.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJVEOa4i.js → index-DfKBRdSS.js} +1 -1
- package/src/assets/web-panel/assets/{index-C1mJtE6q.js → index-DsJCDUJG.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgiXR_-_.js → index-Dwqmtk65.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJCFe2Qf.js → index-DxdTdBix.js} +1 -1
- package/src/assets/web-panel/assets/{index-C484EJiS.js → index-FzdwcSy2.js} +1 -1
- package/src/assets/web-panel/assets/{index-B4JJCfQ2.js → index-GsoUQ2M7.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQhAVU5t.js → index-brCInrzq.js} +1 -1
- package/src/assets/web-panel/assets/{index-CKC1t3Ic.js → index-dVc-CXY4.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQ3DXBtD.js → index-fk2Rjacw.js} +3 -3
- package/src/assets/web-panel/assets/{index-Cduu2Hhr.js → index-l1BETrDb.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bw2MEnUk.js → index-m31Ka8hZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2GjI2oe.js → index-ocf06EVQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CJdQrZth.js → index-sDoMHTNA.js} +1 -1
- package/src/assets/web-panel/assets/index-xeSyVoRe.js +1 -0
- package/src/assets/web-panel/assets/{initDefaultProps-Blmpk7HL.js → initDefaultProps-CvyYJd7z.js} +1 -1
- package/src/assets/web-panel/assets/{motion-DPBJMv1n.js → motion-DYZkhUdz.js} +1 -1
- package/src/assets/web-panel/assets/{move-ButdzCM7.js → move-slnJRVT1.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-cyRC_QCe.js → mtc-parser-DVc0CKmy.js} +1 -1
- package/src/assets/web-panel/assets/{omit-1epSV7hz.js → omit-BCXAtHCq.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DuPY8xJs.js → pickAttrs-DBsemz_K.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-6XZqarhe.js → placementArrow-BRtkJ-nv.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-B40pXBWM.js → responsiveObserve-Cebq7EZn.js} +1 -1
- package/src/assets/web-panel/assets/{slide-jbZ9Wu4n.js → slide-DT7qvId2.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BKQQcVy4.js → statusUtils-pQiITLkG.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-NiKfWjUT.js → styleChecker-c-19BVKQ.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-bQUCvPeb.js → useFlexGapSupport-DsS5-0bE.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CUGji7ph.js → useFs-CxGiMe5n.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-4veyN2N2.js → usePersonalDataHub-D9btVID5.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-1-nLug-Z.js → vnode-CUYFsFEN.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-dhCeRDMo.js → zoom-CXmn_35j.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/cowork.js +559 -62
- package/src/commands/plugin.js +819 -64
- package/src/commands/session-location.js +318 -7
- package/src/constants.js +2 -2
- package/src/data/changelog.json +28 -2
- package/src/gateways/ws/action-protocol.js +293 -19
- package/src/gateways/ws/message-dispatcher.js +30 -0
- package/src/gateways/ws/remote-session-protocol.js +542 -35
- package/src/gateways/ws/ws-approval-gate.js +5 -0
- package/src/gateways/ws/ws-server.js +462 -38
- package/src/harness/jsonl-session-store.js +638 -2
- package/src/harness/prompt-compressor.js +4 -0
- package/src/harness/remote-session-audit.js +1 -0
- package/src/harness/remote-session-crypto.js +750 -50
- package/src/harness/remote-session-registry.js +795 -27
- package/src/lib/auto-mode-config.js +98 -3
- package/src/lib/background-agent-keeper-client.js +29 -0
- package/src/lib/background-agent-keeper-protocol.js +158 -10
- package/src/lib/background-agent-supervisor.js +870 -48
- package/src/lib/background-session-transport.js +23 -6
- package/src/lib/background-turn-bootstrap-protocol.js +64 -0
- package/src/lib/cowork-task-runner.js +70 -0
- package/src/lib/cowork-workflow.js +887 -62
- package/src/lib/delivery-production-adapter.js +38 -2
- package/src/lib/doctor-checkup.js +34 -10
- package/src/lib/dynamic-workflow-draft.js +535 -0
- package/src/lib/dynamic-workflow-facade.js +1105 -17
- package/src/lib/dynamic-workflow-runtime.js +2974 -0
- package/src/lib/execution-location-contract.js +111 -7
- package/src/lib/execution-location-runtime.js +3 -1
- package/src/lib/execution-location-target.js +910 -0
- package/src/lib/llm-providers.js +1 -0
- package/src/lib/mcp-call-ledger-store.js +35 -0
- package/src/lib/mcp-call-ledger.js +30 -0
- package/src/lib/mcp-stdio-package-materialization.js +1 -1
- package/src/lib/plugin-runtime/__tests__/remote-source.test.js +34 -16
- package/src/lib/plugin-runtime/install.js +4956 -657
- package/src/lib/plugin-runtime/manifest.js +3 -1
- package/src/lib/plugin-runtime/marketplace-artifact-readback.js +671 -31
- package/src/lib/plugin-runtime/marketplace-catalog.js +68 -2
- package/src/lib/plugin-runtime/marketplace-impact.js +208 -15
- package/src/lib/plugin-runtime/marketplace-network.js +317 -0
- package/src/lib/plugin-runtime/marketplace-pac-worker.js +15 -0
- package/src/lib/plugin-runtime/marketplace-remote-artifacts.js +25 -2
- package/src/lib/plugin-runtime/marketplace-source-cache.js +359 -0
- package/src/lib/plugin-runtime/policy.js +21 -6
- package/src/lib/plugin-runtime/publisher-trust.js +332 -0
- package/src/lib/plugin-runtime/remote-source.js +323 -27
- package/src/lib/plugin-runtime/scopes.js +317 -41
- package/src/lib/plugin-runtime/transaction-journal.js +806 -0
- package/src/lib/public-ide-capability-manifest.js +1 -1
- package/src/lib/remote-approval-bridge.js +745 -108
- package/src/lib/remote-control.js +2 -0
- package/src/lib/remote-membership-coordinator.js +612 -46
- package/src/lib/remote-membership-host-store.js +59 -10
- package/src/lib/runtime-provenance-ledger.js +171 -46
- package/src/lib/shell-approval.js +169 -6
- package/src/lib/sub-agent-context.js +268 -2
- package/src/lib/task-model-selector.js +1 -1
- package/src/lib/with-file-lock.js +167 -42
- package/src/repl/agent-repl.js +70 -29
- package/src/repl/remote-approval.js +29 -7
- package/src/runtime/agent-core.js +1695 -194
- package/src/runtime/headless-runner.js +22 -5
- package/src/runtime/headless-stream.js +19 -3
- package/src/workers/background-agent-keeper.js +279 -58
- package/src/workers/background-agent-worker.js +7 -0
- package/src/workers/background-turn-bootstrap.js +29 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-GmB6DOr6.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-BL0Czcoj.js +0 -1
- package/src/assets/web-panel/assets/Projects-DDAjkUkT.js +0 -1
- package/src/assets/web-panel/assets/RemoteSession-Dxzl5n2T.js +0 -5
- package/src/assets/web-panel/assets/SpeechSettings-D6UL3dA5.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DKJjSWRn.js +0 -1
- package/src/assets/web-panel/assets/index-C61cnl3K.js +0 -1
- package/src/assets/web-panel/assets/index-D4XFHxBr.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as k,J as d,U as b,R as l,c as t,K as n,o as fe,b as G,r as s,P as c,Q as v,V as r,S as _,F as Ce}from"./vendor-Bn1JzzAn.js";import{_ as ze,b as ye,u as be,d as ie,t as ke}from"./index-BQ3DXBtD.js";import{u as ve}from"./useFs-CUGji7ph.js";import{aA as Pe,R as Be,aR as Le,at as Te,aT as Ae,S as Me,G as Fe}from"./icons-DG5UD-6K.js";import"./useShellMode-CgR0wCYM.js";const se=["B","KB","MB","GB","TB","PB","EB"];function Re(A){if(A==null||isNaN(A))return"-";const f=Number(A);if(f<0)return"-";if(f===0)return"0 B";let o=Math.floor(Math.log(f)/Math.log(1024));return o<0&&(o=0),o>=se.length&&(o=se.length-1),(f/Math.pow(1024,o)).toFixed(o>0?1:0)+" "+se[o]}const Ie={__name:"Backup",setup(A,{expose:f}){f();const{t:o}=ye(),e=be(),W=ve(),U=s(!1),g=s("backup"),S=s(!1),x=s(!1),P=s(!1),h=s(""),y=s([]),w=s(""),M=G(()=>[{title:o("backup.backupColumns.id"),key:"id"},{title:o("backup.backupColumns.size"),key:"size",width:120},{title:o("backup.backupColumns.createdAt"),key:"createdAt"},{title:o("backup.backupColumns.action"),key:"action",width:100}]);async function m(){x.value=!0,h.value="";try{const{output:a}=await e.execute("backup list --json",15e3),i=T(a);Array.isArray(i)?y.value=i:i&&Array.isArray(i.backups)?y.value=i.backups:(y.value=[],a&&a.trim()&&(w.value=a))}catch(a){h.value=o("backup.messages.loadBackupsFailed",{err:a.message})}finally{x.value=!1}}async function O(){P.value=!0,w.value="",h.value="";try{const{output:a}=await e.execute("backup create --json",3e4);w.value=a||o("backup.backup.createDefaultMessage"),await m()}catch(a){w.value=o("backup.messages.createBackupFailed",{err:a.message})}finally{P.value=!1}}const F=s(!1),B=s(!1),L=s(null),C=s("");function Q(a){L.value=a,C.value="",F.value=!0}async function u(){if(L.value){B.value=!0,C.value="";try{const{output:a}=await e.execute(`backup restore ${L.value.id}`,6e4);C.value=a||o("backup.backup.restoreDefaultMessage")}catch(a){C.value=o("backup.messages.restoreFailed",{err:a.message})}finally{B.value=!1}}}const p=s(!1),R=s(""),I=s(!1),j=s(""),q=s(0),X=s(""),z=s(""),Y=s(!1),Z=s(!1),D=s([]),ge=G(()=>[{title:o("backup.conflictColumns.path"),key:"path"},{title:o("backup.conflictColumns.type"),key:"type",width:120}]);async function N(){p.value=!0,R.value="";try{const{output:a}=await e.execute("sync status --json",15e3),i=T(a);i?(I.value=i.online||i.synced||i.status==="online"||!1,j.value=I.value?o("backup.sync.synced"):o("backup.sync.notSynced"),q.value=i.pending??i.pendingChanges??0,X.value=i.lastSync||i.lastSyncTime||""):ce(a)}catch(a){R.value=o("backup.messages.loadSyncFailed",{err:a.message})}finally{p.value=!1}}function ce(a){if(!a){j.value=o("backup.sync.unknown");return}I.value=/synced|online|up.to.date/i.test(a),j.value=I.value?o("backup.sync.synced"):o("backup.sync.notSynced");const i=a.match(/pending[:\s]+(\d+)/i);q.value=i?parseInt(i[1]):0;const E=a.match(/last[:\s]+(.+)/i);E&&(X.value=E[1].trim())}async function me(){Y.value=!0,z.value="";try{const{output:a}=await e.execute("sync push",3e4);z.value=a||o("backup.sync.pushDefaultMessage"),await N()}catch(a){z.value=o("backup.messages.pushFailed",{err:a.message})}finally{Y.value=!1}}async function _e(){Z.value=!0,z.value="";try{const{output:a}=await e.execute("sync pull",3e4);z.value=a||o("backup.sync.pullDefaultMessage"),await N()}catch(a){z.value=o("backup.messages.pullFailed",{err:a.message})}finally{Z.value=!1}}async function re(){try{const{output:a}=await e.execute("sync conflicts --json",15e3),i=T(a);Array.isArray(i)?D.value=i:i&&Array.isArray(i.conflicts)?D.value=i.conflicts:D.value=[]}catch{D.value=[]}}const $=s(!1),ee=s(""),ae=s(!1),te=s(""),ne=s(!1),H=s(""),J=s([]),xe=G(()=>[{title:o("backup.pinColumns.cid"),key:"cid"},{title:o("backup.pinColumns.name"),key:"name"},{title:o("backup.pinColumns.size"),key:"size",width:120},{title:o("backup.pinColumns.pinnedAt"),key:"pinnedAt"},{title:o("backup.pinColumns.action"),key:"action",width:120}]);async function ue(){$.value=!0,ee.value="";try{const{output:a}=await e.execute("ipfs status --json",15e3),i=T(a);if(i)ae.value=i.online||i.status==="online"||i.connected||!1,te.value=i.peerId||i.id||"";else{ae.value=a?/online|connected|running/i.test(a):!1;const E=a?a.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;te.value=E?E[1]:""}}catch(a){ee.value=o("backup.messages.loadIpfsFailed",{err:a.message})}finally{$.value=!1}}async function K(){ne.value=!0,H.value="";try{const{output:a}=await e.execute("ipfs pins --json",15e3),i=T(a);Array.isArray(i)?J.value=i:i&&Array.isArray(i.pins)?J.value=i.pins:J.value=[]}catch(a){H.value=o("backup.messages.loadPinsFailed",{err:a.message})}finally{ne.value=!1}}const he=s(!1),oe=s(!1),le=s(""),V=s("");async function we(){if(le.value.trim()){oe.value=!0,V.value="";try{const{output:a}=await e.execute(`ipfs pin "${le.value.trim()}"`,3e4);V.value=a||o("backup.ipfs.pinDefaultSuccess"),await K()}catch(a){V.value=o("backup.messages.pinFailed",{err:a.message})}finally{oe.value=!1}}}async function Oe(a){try{await e.execute(`ipfs unpin ${a.cid}`,15e3),await K()}catch(i){H.value=o("backup.messages.unpinFailed",{err:i.message})}}function T(a){return ke(a)}async function Se(){if(y.value.length){U.value=!0;try{const a=await W.saveJson({schema:1,exportedAt:new Date().toISOString(),count:y.value.length,backups:y.value},{defaultPath:`backup-list-${new Date().toISOString().slice(0,10)}.json`});if(a.canceled)return;ie.success(a.path?o("backup.messages.exportOk",{count:y.value.length,path:a.path}):o("backup.messages.exportOkDefault"))}catch(a){ie.error(o("backup.messages.exportFailed",{err:a.message||a}))}finally{U.value=!1}}}async function de(){S.value=!0;try{await Promise.all([m(),N(),re(),ue(),K()])}finally{S.value=!1}}fe(de);const pe={t:o,ws:e,fs:W,exportingList:U,activeTab:g,refreshing:S,backupLoading:x,backupCreating:P,backupError:h,backups:y,lastBackupResult:w,backupColumns:M,loadBackups:m,createBackup:O,showRestoreModal:F,restoreLoading:B,restoreTarget:L,restoreResult:C,confirmRestore:Q,doRestore:u,syncLoading:p,syncError:R,syncOnline:I,syncStatusText:j,syncPending:q,lastSyncTime:X,syncOutput:z,pushLoading:Y,pullLoading:Z,conflicts:D,conflictColumns:ge,loadSync:N,parseSyncStatusText:ce,syncPush:me,syncPull:_e,loadConflicts:re,ipfsLoading:$,ipfsError:ee,ipfsOnline:ae,ipfsPeerId:te,pinsLoading:ne,pinsError:H,pins:J,pinColumns:xe,loadIpfsStatus:ue,loadPins:K,showPinModal:he,pinLoading:oe,pinFilePath:le,pinResult:V,doPin:we,unpinFile:Oe,safeParseJson:T,exportBackupList:Se,refreshAll:de,ref:s,computed:G,onMounted:fe,get useI18n(){return ye},get tryParseJson(){return ke},get CloudUploadOutlined(){return Fe},get SyncOutlined(){return Me},get HddOutlined(){return Ae},get PlusOutlined(){return Te},get DeleteOutlined(){return Le},get ReloadOutlined(){return Be},get DownloadOutlined(){return Pe},get message(){return ie},get useWsStore(){return be},get useFs(){return ve},get formatSize(){return Re}};return Object.defineProperty(pe,"__isScriptSetup",{enumerable:!1,value:!0}),pe}},De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={class:"page-title"},Ue={class:"page-sub"},je={key:0,style:{"text-align":"center",padding:"30px"}},Ne={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},He={key:1},Je={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ke={key:3,style:{"margin-top":"16px"}},Ve={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Ge={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},We={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},Qe={style:{color:"var(--text-secondary)"}},qe={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},Xe={style:{"font-family":"monospace"}},Ye={key:0},Ze={key:1,style:{"margin-top":"12px"}},$e={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},ea={key:0,style:{"text-align":"center",padding:"30px"}},aa={key:0,style:{"margin-bottom":"16px"}},ta={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},na={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},oa={key:0,style:{"font-family":"monospace","font-size":"12px"}},la={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ia={key:0,style:{"text-align":"center",padding:"30px"}},sa={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ca={key:0,style:{"text-align":"center",padding:"30px"}},ra={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},ua={key:1},da={key:2},pa={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},fa={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ya={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},ba={key:0,style:{"margin-top":"12px"}},ka={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}};function va(A,f,o,e,W,U){const g=k("a-button"),S=k("a-space"),x=k("a-spin"),P=k("a-empty"),h=k("a-table"),y=k("a-card"),w=k("a-modal"),M=k("a-tab-pane"),m=k("a-statistic"),O=k("a-col"),F=k("a-row"),B=k("a-tag"),L=k("a-popconfirm"),C=k("a-input"),Q=k("a-tabs");return c(),d("div",null,[b("div",De,[b("div",null,[b("h2",Ee,l(e.t("backup.title")),1),b("p",Ue,l(e.t("backup.subtitle")),1)]),t(g,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshAll},{icon:n(()=>[t(e.ReloadOutlined)]),default:n(()=>[v(" "+l(e.t("backup.refresh")),1)]),_:1},8,["loading"])]),t(Q,{activeKey:e.activeTab,"onUpdate:activeKey":f[4]||(f[4]=u=>e.activeTab=u),type:"card"},{default:n(()=>[r(" Tab 1: Backup management "),t(M,{key:"backup"},{tab:n(()=>[t(e.CloudUploadOutlined),v(" "+l(e.t("backup.tabs.backup")),1)]),default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:n(()=>[t(S,null,{default:n(()=>[t(e.CloudUploadOutlined),b("span",null,l(e.t("backup.backup.cardTitle")),1)]),_:1})]),extra:n(()=>[t(S,null,{default:n(()=>[t(g,{disabled:!e.backups.length,loading:e.exportingList,onClick:e.exportBackupList},{icon:n(()=>[t(e.DownloadOutlined)]),default:n(()=>[v(" "+l(e.t("backup.backup.exportButton")),1)]),_:1},8,["disabled","loading"]),t(g,{type:"primary",loading:e.backupCreating,onClick:e.createBackup},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[v(" "+l(e.t("backup.backup.createButton")),1)]),_:1},8,["loading"])]),_:1})]),default:n(()=>[e.backupLoading?(c(),d("div",je,[t(x)])):e.backups.length===0&&!e.lastBackupResult?(c(),_(P,{key:1,description:e.t("backup.backup.emptyText")},null,8,["description"])):r("v-if",!0),e.backups.length>0?(c(),_(h,{key:2,columns:e.backupColumns,"data-source":e.backups,pagination:!1,size:"small","row-key":"id"},{bodyCell:n(({column:u,record:p})=>[u.key==="id"?(c(),d("span",Ne,l(p.id.length>20?p.id.slice(0,20)+"...":p.id),1)):r("v-if",!0),u.key==="size"?(c(),d("span",He,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="createdAt"?(c(),d("span",Je,l(p.createdAt||"-"),1)):r("v-if",!0),u.key==="action"?(c(),_(g,{key:3,size:"small",type:"link",onClick:R=>e.confirmRestore(p)},{default:n(()=>[v(l(e.t("backup.backupColumns.restore")),1)]),_:1},8,["onClick"])):r("v-if",!0)]),_:1},8,["columns","data-source"])):r("v-if",!0),e.lastBackupResult?(c(),d("div",Ke,[b("div",Ve,l(e.t("backup.backup.lastResultLabel")),1),b("pre",Ge,l(e.lastBackupResult),1)])):r("v-if",!0),e.backupError?(c(),d("div",We,l(e.backupError),1)):r("v-if",!0)]),_:1}),t(w,{open:e.showRestoreModal,"onUpdate:open":f[0]||(f[0]=u=>e.showRestoreModal=u),title:e.t("backup.backup.restoreTitle"),"ok-text":e.t("backup.backup.restoreOk"),"cancel-text":e.t("common.cancel"),"confirm-loading":e.restoreLoading,onOk:e.doRestore,"ok-type":"danger"},{default:n(()=>[b("p",Qe,l(e.t("backup.backup.restoreIntro")),1),e.restoreTarget?(c(),d("div",qe,[b("div",null,[b("strong",null,l(e.t("backup.backup.backupIdPrefix")),1),f[5]||(f[5]=v()),b("span",Xe,l(e.restoreTarget.id),1)]),e.restoreTarget.createdAt?(c(),d("div",Ye,[b("strong",null,l(e.t("backup.backup.createdAtPrefix")),1),v(" "+l(e.restoreTarget.createdAt),1)])):r("v-if",!0)])):r("v-if",!0),e.restoreResult?(c(),d("div",Ze,[b("pre",$e,l(e.restoreResult),1)])):r("v-if",!0)]),_:1},8,["open","title","ok-text","cancel-text","confirm-loading"])]),_:1}),r(" Tab 2: Data sync "),t(M,{key:"sync"},{tab:n(()=>[t(e.SyncOutlined),v(" "+l(e.t("backup.tabs.sync")),1)]),default:n(()=>[e.syncLoading?(c(),d("div",ea,[t(x)])):(c(),d(Ce,{key:1},[t(F,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.statusLabel"),value:e.syncStatusText,"value-style":{color:e.syncOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.pendingLabel"),value:e.syncPending,"value-style":{color:e.syncPending>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.lastSyncLabel"),value:e.lastSyncTime||e.t("backup.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(S,{style:{"margin-bottom":"16px"}},{default:n(()=>[t(g,{loading:e.pushLoading,onClick:e.syncPush,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.CloudUploadOutlined)]),default:n(()=>[v(" "+l(e.t("backup.sync.pushButton")),1)]),_:1},8,["loading"]),t(g,{loading:e.pullLoading,onClick:e.syncPull,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.SyncOutlined)]),default:n(()=>[v(" "+l(e.t("backup.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),e.syncOutput?(c(),d("div",aa,[b("div",ta,l(e.t("backup.sync.outputLabel")),1),b("pre",na,l(e.syncOutput),1)])):r("v-if",!0),r(" Conflicts "),e.conflicts.length>0?(c(),_(y,{key:1,title:e.t("backup.sync.conflictsTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(h,{columns:e.conflictColumns,"data-source":e.conflicts,pagination:!1,size:"small","row-key":"path"},{bodyCell:n(({column:u,record:p})=>[u.key==="path"?(c(),d("span",oa,l(p.path),1)):r("v-if",!0),u.key==="type"?(c(),_(B,{key:1,color:"red"},{default:n(()=>[v(l(p.type||e.t("backup.sync.conflictDefault")),1)]),_:2},1024)):r("v-if",!0)]),_:1},8,["columns","data-source"])]),_:1},8,["title"])):r("v-if",!0)],64)),e.syncError?(c(),d("div",la,l(e.syncError),1)):r("v-if",!0)]),_:1}),r(" Tab 3: IPFS storage "),t(M,{key:"ipfs"},{tab:n(()=>[t(e.HddOutlined),v(" "+l(e.t("backup.tabs.ipfs")),1)]),default:n(()=>[t(y,{title:e.t("backup.ipfs.statusCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:n(()=>[t(B,{color:e.ipfsOnline?"green":"default"},{default:n(()=>[v(l(e.ipfsOnline?e.t("backup.ipfs.online"):e.t("backup.ipfs.offline")),1)]),_:1},8,["color"])]),default:n(()=>[e.ipfsLoading?(c(),d("div",ia,[t(x)])):(c(),_(F,{key:1,gutter:[16,16]},{default:n(()=>[t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.nodeStatusLabel"),value:e.ipfsOnline?e.t("backup.ipfs.connected"):e.t("backup.ipfs.disconnected"),"value-style":{color:e.ipfsOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.pinnedLabel"),value:e.pins.length,"value-style":{fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.peerIdLabel"),value:e.ipfsPeerId||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})),e.ipfsError?(c(),d("div",sa,l(e.ipfsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(y,{title:e.t("backup.ipfs.pinListTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[t(g,{size:"small",onClick:f[1]||(f[1]=u=>e.showPinModal=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[v(" "+l(e.t("backup.ipfs.pinFileButton")),1)]),_:1})]),default:n(()=>[e.pinsLoading?(c(),d("div",ca,[t(x)])):e.pins.length===0?(c(),_(P,{key:1,description:e.t("backup.ipfs.pinEmptyText")},null,8,["description"])):(c(),_(h,{key:2,columns:e.pinColumns,"data-source":e.pins,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:n(({column:u,record:p})=>[u.key==="cid"?(c(),d("span",ra,l(p.cid.length>24?p.cid.slice(0,24)+"...":p.cid),1)):r("v-if",!0),u.key==="name"?(c(),d("span",ua,l(p.name||"-"),1)):r("v-if",!0),u.key==="size"?(c(),d("span",da,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="pinnedAt"?(c(),d("span",pa,l(p.pinnedAt||"-"),1)):r("v-if",!0),u.key==="action"?(c(),_(L,{key:4,title:e.t("backup.ipfs.unpinConfirm"),"ok-text":e.t("backup.ipfs.unpinOk"),"cancel-text":e.t("common.cancel"),onConfirm:R=>e.unpinFile(p)},{default:n(()=>[t(g,{size:"small",type:"link",danger:""},{default:n(()=>[t(e.DeleteOutlined),v(" "+l(e.t("backup.ipfs.unpinAction")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):r("v-if",!0)]),_:1},8,["columns","data-source"])),e.pinsError?(c(),d("div",fa,l(e.pinsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(w,{open:e.showPinModal,"onUpdate:open":f[3]||(f[3]=u=>e.showPinModal=u),title:e.t("backup.ipfs.pinModalTitle"),"confirm-loading":e.pinLoading,onOk:e.doPin,"ok-text":e.t("backup.ipfs.pinModalOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[b("div",ya,l(e.t("backup.ipfs.pinModalIntro")),1),t(C,{value:e.pinFilePath,"onUpdate:value":f[2]||(f[2]=u=>e.pinFilePath=u),placeholder:e.t("backup.ipfs.pinModalPlaceholder"),onPressEnter:e.doPin},null,8,["value","placeholder"]),e.pinResult?(c(),d("div",ba,[b("pre",ka,l(e.pinResult),1)])):r("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}const wa=ze(Ie,[["render",va],["__scopeId","data-v-077902a5"],["__file","/tmp/cc-web-panel-J6U3Mt/repo/packages/web-panel/src/views/Backup.vue"]]);export{wa as default};
|
|
1
|
+
import{I as k,J as d,U as b,R as l,c as t,K as n,o as fe,b as G,r as s,P as c,Q as v,V as r,S as _,F as Ce}from"./vendor-Bn1JzzAn.js";import{_ as ze,b as ye,u as be,d as ie,t as ke}from"./index-fk2Rjacw.js";import{u as ve}from"./useFs-CxGiMe5n.js";import{aA as Pe,R as Be,aR as Le,at as Te,aT as Ae,S as Fe,G as Me}from"./icons-DG5UD-6K.js";import"./useShellMode-CgR0wCYM.js";const se=["B","KB","MB","GB","TB","PB","EB"];function Re(A){if(A==null||isNaN(A))return"-";const f=Number(A);if(f<0)return"-";if(f===0)return"0 B";let o=Math.floor(Math.log(f)/Math.log(1024));return o<0&&(o=0),o>=se.length&&(o=se.length-1),(f/Math.pow(1024,o)).toFixed(o>0?1:0)+" "+se[o]}const Ie={__name:"Backup",setup(A,{expose:f}){f();const{t:o}=ye(),e=be(),W=ve(),U=s(!1),g=s("backup"),S=s(!1),x=s(!1),P=s(!1),h=s(""),y=s([]),w=s(""),F=G(()=>[{title:o("backup.backupColumns.id"),key:"id"},{title:o("backup.backupColumns.size"),key:"size",width:120},{title:o("backup.backupColumns.createdAt"),key:"createdAt"},{title:o("backup.backupColumns.action"),key:"action",width:100}]);async function m(){x.value=!0,h.value="";try{const{output:a}=await e.execute("backup list --json",15e3),i=T(a);Array.isArray(i)?y.value=i:i&&Array.isArray(i.backups)?y.value=i.backups:(y.value=[],a&&a.trim()&&(w.value=a))}catch(a){h.value=o("backup.messages.loadBackupsFailed",{err:a.message})}finally{x.value=!1}}async function O(){P.value=!0,w.value="",h.value="";try{const{output:a}=await e.execute("backup create --json",3e4);w.value=a||o("backup.backup.createDefaultMessage"),await m()}catch(a){w.value=o("backup.messages.createBackupFailed",{err:a.message})}finally{P.value=!1}}const M=s(!1),B=s(!1),L=s(null),C=s("");function q(a){L.value=a,C.value="",M.value=!0}async function u(){if(L.value){B.value=!0,C.value="";try{const{output:a}=await e.execute(`backup restore ${L.value.id}`,6e4);C.value=a||o("backup.backup.restoreDefaultMessage")}catch(a){C.value=o("backup.messages.restoreFailed",{err:a.message})}finally{B.value=!1}}}const p=s(!1),R=s(""),I=s(!1),j=s(""),Q=s(0),X=s(""),z=s(""),Y=s(!1),Z=s(!1),D=s([]),ge=G(()=>[{title:o("backup.conflictColumns.path"),key:"path"},{title:o("backup.conflictColumns.type"),key:"type",width:120}]);async function N(){p.value=!0,R.value="";try{const{output:a}=await e.execute("sync status --json",15e3),i=T(a);i?(I.value=i.online||i.synced||i.status==="online"||!1,j.value=I.value?o("backup.sync.synced"):o("backup.sync.notSynced"),Q.value=i.pending??i.pendingChanges??0,X.value=i.lastSync||i.lastSyncTime||""):ce(a)}catch(a){R.value=o("backup.messages.loadSyncFailed",{err:a.message})}finally{p.value=!1}}function ce(a){if(!a){j.value=o("backup.sync.unknown");return}I.value=/synced|online|up.to.date/i.test(a),j.value=I.value?o("backup.sync.synced"):o("backup.sync.notSynced");const i=a.match(/pending[:\s]+(\d+)/i);Q.value=i?parseInt(i[1]):0;const E=a.match(/last[:\s]+(.+)/i);E&&(X.value=E[1].trim())}async function me(){Y.value=!0,z.value="";try{const{output:a}=await e.execute("sync push",3e4);z.value=a||o("backup.sync.pushDefaultMessage"),await N()}catch(a){z.value=o("backup.messages.pushFailed",{err:a.message})}finally{Y.value=!1}}async function _e(){Z.value=!0,z.value="";try{const{output:a}=await e.execute("sync pull",3e4);z.value=a||o("backup.sync.pullDefaultMessage"),await N()}catch(a){z.value=o("backup.messages.pullFailed",{err:a.message})}finally{Z.value=!1}}async function re(){try{const{output:a}=await e.execute("sync conflicts --json",15e3),i=T(a);Array.isArray(i)?D.value=i:i&&Array.isArray(i.conflicts)?D.value=i.conflicts:D.value=[]}catch{D.value=[]}}const $=s(!1),ee=s(""),ae=s(!1),te=s(""),ne=s(!1),H=s(""),J=s([]),xe=G(()=>[{title:o("backup.pinColumns.cid"),key:"cid"},{title:o("backup.pinColumns.name"),key:"name"},{title:o("backup.pinColumns.size"),key:"size",width:120},{title:o("backup.pinColumns.pinnedAt"),key:"pinnedAt"},{title:o("backup.pinColumns.action"),key:"action",width:120}]);async function ue(){$.value=!0,ee.value="";try{const{output:a}=await e.execute("ipfs status --json",15e3),i=T(a);if(i)ae.value=i.online||i.status==="online"||i.connected||!1,te.value=i.peerId||i.id||"";else{ae.value=a?/online|connected|running/i.test(a):!1;const E=a?a.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;te.value=E?E[1]:""}}catch(a){ee.value=o("backup.messages.loadIpfsFailed",{err:a.message})}finally{$.value=!1}}async function K(){ne.value=!0,H.value="";try{const{output:a}=await e.execute("ipfs pins --json",15e3),i=T(a);Array.isArray(i)?J.value=i:i&&Array.isArray(i.pins)?J.value=i.pins:J.value=[]}catch(a){H.value=o("backup.messages.loadPinsFailed",{err:a.message})}finally{ne.value=!1}}const he=s(!1),oe=s(!1),le=s(""),V=s("");async function we(){if(le.value.trim()){oe.value=!0,V.value="";try{const{output:a}=await e.execute(`ipfs pin "${le.value.trim()}"`,3e4);V.value=a||o("backup.ipfs.pinDefaultSuccess"),await K()}catch(a){V.value=o("backup.messages.pinFailed",{err:a.message})}finally{oe.value=!1}}}async function Oe(a){try{await e.execute(`ipfs unpin ${a.cid}`,15e3),await K()}catch(i){H.value=o("backup.messages.unpinFailed",{err:i.message})}}function T(a){return ke(a)}async function Se(){if(y.value.length){U.value=!0;try{const a=await W.saveJson({schema:1,exportedAt:new Date().toISOString(),count:y.value.length,backups:y.value},{defaultPath:`backup-list-${new Date().toISOString().slice(0,10)}.json`});if(a.canceled)return;ie.success(a.path?o("backup.messages.exportOk",{count:y.value.length,path:a.path}):o("backup.messages.exportOkDefault"))}catch(a){ie.error(o("backup.messages.exportFailed",{err:a.message||a}))}finally{U.value=!1}}}async function de(){S.value=!0;try{await Promise.all([m(),N(),re(),ue(),K()])}finally{S.value=!1}}fe(de);const pe={t:o,ws:e,fs:W,exportingList:U,activeTab:g,refreshing:S,backupLoading:x,backupCreating:P,backupError:h,backups:y,lastBackupResult:w,backupColumns:F,loadBackups:m,createBackup:O,showRestoreModal:M,restoreLoading:B,restoreTarget:L,restoreResult:C,confirmRestore:q,doRestore:u,syncLoading:p,syncError:R,syncOnline:I,syncStatusText:j,syncPending:Q,lastSyncTime:X,syncOutput:z,pushLoading:Y,pullLoading:Z,conflicts:D,conflictColumns:ge,loadSync:N,parseSyncStatusText:ce,syncPush:me,syncPull:_e,loadConflicts:re,ipfsLoading:$,ipfsError:ee,ipfsOnline:ae,ipfsPeerId:te,pinsLoading:ne,pinsError:H,pins:J,pinColumns:xe,loadIpfsStatus:ue,loadPins:K,showPinModal:he,pinLoading:oe,pinFilePath:le,pinResult:V,doPin:we,unpinFile:Oe,safeParseJson:T,exportBackupList:Se,refreshAll:de,ref:s,computed:G,onMounted:fe,get useI18n(){return ye},get tryParseJson(){return ke},get CloudUploadOutlined(){return Me},get SyncOutlined(){return Fe},get HddOutlined(){return Ae},get PlusOutlined(){return Te},get DeleteOutlined(){return Le},get ReloadOutlined(){return Be},get DownloadOutlined(){return Pe},get message(){return ie},get useWsStore(){return be},get useFs(){return ve},get formatSize(){return Re}};return Object.defineProperty(pe,"__isScriptSetup",{enumerable:!1,value:!0}),pe}},De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={class:"page-title"},Ue={class:"page-sub"},je={key:0,style:{"text-align":"center",padding:"30px"}},Ne={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},He={key:1},Je={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ke={key:3,style:{"margin-top":"16px"}},Ve={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Ge={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},We={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},qe={style:{color:"var(--text-secondary)"}},Qe={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},Xe={style:{"font-family":"monospace"}},Ye={key:0},Ze={key:1,style:{"margin-top":"12px"}},$e={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},ea={key:0,style:{"text-align":"center",padding:"30px"}},aa={key:0,style:{"margin-bottom":"16px"}},ta={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},na={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},oa={key:0,style:{"font-family":"monospace","font-size":"12px"}},la={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ia={key:0,style:{"text-align":"center",padding:"30px"}},sa={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ca={key:0,style:{"text-align":"center",padding:"30px"}},ra={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},ua={key:1},da={key:2},pa={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},fa={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ya={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},ba={key:0,style:{"margin-top":"12px"}},ka={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}};function va(A,f,o,e,W,U){const g=k("a-button"),S=k("a-space"),x=k("a-spin"),P=k("a-empty"),h=k("a-table"),y=k("a-card"),w=k("a-modal"),F=k("a-tab-pane"),m=k("a-statistic"),O=k("a-col"),M=k("a-row"),B=k("a-tag"),L=k("a-popconfirm"),C=k("a-input"),q=k("a-tabs");return c(),d("div",null,[b("div",De,[b("div",null,[b("h2",Ee,l(e.t("backup.title")),1),b("p",Ue,l(e.t("backup.subtitle")),1)]),t(g,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshAll},{icon:n(()=>[t(e.ReloadOutlined)]),default:n(()=>[v(" "+l(e.t("backup.refresh")),1)]),_:1},8,["loading"])]),t(q,{activeKey:e.activeTab,"onUpdate:activeKey":f[4]||(f[4]=u=>e.activeTab=u),type:"card"},{default:n(()=>[r(" Tab 1: Backup management "),t(F,{key:"backup"},{tab:n(()=>[t(e.CloudUploadOutlined),v(" "+l(e.t("backup.tabs.backup")),1)]),default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:n(()=>[t(S,null,{default:n(()=>[t(e.CloudUploadOutlined),b("span",null,l(e.t("backup.backup.cardTitle")),1)]),_:1})]),extra:n(()=>[t(S,null,{default:n(()=>[t(g,{disabled:!e.backups.length,loading:e.exportingList,onClick:e.exportBackupList},{icon:n(()=>[t(e.DownloadOutlined)]),default:n(()=>[v(" "+l(e.t("backup.backup.exportButton")),1)]),_:1},8,["disabled","loading"]),t(g,{type:"primary",loading:e.backupCreating,onClick:e.createBackup},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[v(" "+l(e.t("backup.backup.createButton")),1)]),_:1},8,["loading"])]),_:1})]),default:n(()=>[e.backupLoading?(c(),d("div",je,[t(x)])):e.backups.length===0&&!e.lastBackupResult?(c(),_(P,{key:1,description:e.t("backup.backup.emptyText")},null,8,["description"])):r("v-if",!0),e.backups.length>0?(c(),_(h,{key:2,columns:e.backupColumns,"data-source":e.backups,pagination:!1,size:"small","row-key":"id"},{bodyCell:n(({column:u,record:p})=>[u.key==="id"?(c(),d("span",Ne,l(p.id.length>20?p.id.slice(0,20)+"...":p.id),1)):r("v-if",!0),u.key==="size"?(c(),d("span",He,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="createdAt"?(c(),d("span",Je,l(p.createdAt||"-"),1)):r("v-if",!0),u.key==="action"?(c(),_(g,{key:3,size:"small",type:"link",onClick:R=>e.confirmRestore(p)},{default:n(()=>[v(l(e.t("backup.backupColumns.restore")),1)]),_:1},8,["onClick"])):r("v-if",!0)]),_:1},8,["columns","data-source"])):r("v-if",!0),e.lastBackupResult?(c(),d("div",Ke,[b("div",Ve,l(e.t("backup.backup.lastResultLabel")),1),b("pre",Ge,l(e.lastBackupResult),1)])):r("v-if",!0),e.backupError?(c(),d("div",We,l(e.backupError),1)):r("v-if",!0)]),_:1}),t(w,{open:e.showRestoreModal,"onUpdate:open":f[0]||(f[0]=u=>e.showRestoreModal=u),title:e.t("backup.backup.restoreTitle"),"ok-text":e.t("backup.backup.restoreOk"),"cancel-text":e.t("common.cancel"),"confirm-loading":e.restoreLoading,onOk:e.doRestore,"ok-type":"danger"},{default:n(()=>[b("p",qe,l(e.t("backup.backup.restoreIntro")),1),e.restoreTarget?(c(),d("div",Qe,[b("div",null,[b("strong",null,l(e.t("backup.backup.backupIdPrefix")),1),f[5]||(f[5]=v()),b("span",Xe,l(e.restoreTarget.id),1)]),e.restoreTarget.createdAt?(c(),d("div",Ye,[b("strong",null,l(e.t("backup.backup.createdAtPrefix")),1),v(" "+l(e.restoreTarget.createdAt),1)])):r("v-if",!0)])):r("v-if",!0),e.restoreResult?(c(),d("div",Ze,[b("pre",$e,l(e.restoreResult),1)])):r("v-if",!0)]),_:1},8,["open","title","ok-text","cancel-text","confirm-loading"])]),_:1}),r(" Tab 2: Data sync "),t(F,{key:"sync"},{tab:n(()=>[t(e.SyncOutlined),v(" "+l(e.t("backup.tabs.sync")),1)]),default:n(()=>[e.syncLoading?(c(),d("div",ea,[t(x)])):(c(),d(Ce,{key:1},[t(M,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.statusLabel"),value:e.syncStatusText,"value-style":{color:e.syncOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.pendingLabel"),value:e.syncPending,"value-style":{color:e.syncPending>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.lastSyncLabel"),value:e.lastSyncTime||e.t("backup.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(S,{style:{"margin-bottom":"16px"}},{default:n(()=>[t(g,{loading:e.pushLoading,onClick:e.syncPush,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.CloudUploadOutlined)]),default:n(()=>[v(" "+l(e.t("backup.sync.pushButton")),1)]),_:1},8,["loading"]),t(g,{loading:e.pullLoading,onClick:e.syncPull,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.SyncOutlined)]),default:n(()=>[v(" "+l(e.t("backup.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),e.syncOutput?(c(),d("div",aa,[b("div",ta,l(e.t("backup.sync.outputLabel")),1),b("pre",na,l(e.syncOutput),1)])):r("v-if",!0),r(" Conflicts "),e.conflicts.length>0?(c(),_(y,{key:1,title:e.t("backup.sync.conflictsTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(h,{columns:e.conflictColumns,"data-source":e.conflicts,pagination:!1,size:"small","row-key":"path"},{bodyCell:n(({column:u,record:p})=>[u.key==="path"?(c(),d("span",oa,l(p.path),1)):r("v-if",!0),u.key==="type"?(c(),_(B,{key:1,color:"red"},{default:n(()=>[v(l(p.type||e.t("backup.sync.conflictDefault")),1)]),_:2},1024)):r("v-if",!0)]),_:1},8,["columns","data-source"])]),_:1},8,["title"])):r("v-if",!0)],64)),e.syncError?(c(),d("div",la,l(e.syncError),1)):r("v-if",!0)]),_:1}),r(" Tab 3: IPFS storage "),t(F,{key:"ipfs"},{tab:n(()=>[t(e.HddOutlined),v(" "+l(e.t("backup.tabs.ipfs")),1)]),default:n(()=>[t(y,{title:e.t("backup.ipfs.statusCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:n(()=>[t(B,{color:e.ipfsOnline?"green":"default"},{default:n(()=>[v(l(e.ipfsOnline?e.t("backup.ipfs.online"):e.t("backup.ipfs.offline")),1)]),_:1},8,["color"])]),default:n(()=>[e.ipfsLoading?(c(),d("div",ia,[t(x)])):(c(),_(M,{key:1,gutter:[16,16]},{default:n(()=>[t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.nodeStatusLabel"),value:e.ipfsOnline?e.t("backup.ipfs.connected"):e.t("backup.ipfs.disconnected"),"value-style":{color:e.ipfsOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.pinnedLabel"),value:e.pins.length,"value-style":{fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(O,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.peerIdLabel"),value:e.ipfsPeerId||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})),e.ipfsError?(c(),d("div",sa,l(e.ipfsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(y,{title:e.t("backup.ipfs.pinListTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[t(g,{size:"small",onClick:f[1]||(f[1]=u=>e.showPinModal=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[v(" "+l(e.t("backup.ipfs.pinFileButton")),1)]),_:1})]),default:n(()=>[e.pinsLoading?(c(),d("div",ca,[t(x)])):e.pins.length===0?(c(),_(P,{key:1,description:e.t("backup.ipfs.pinEmptyText")},null,8,["description"])):(c(),_(h,{key:2,columns:e.pinColumns,"data-source":e.pins,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:n(({column:u,record:p})=>[u.key==="cid"?(c(),d("span",ra,l(p.cid.length>24?p.cid.slice(0,24)+"...":p.cid),1)):r("v-if",!0),u.key==="name"?(c(),d("span",ua,l(p.name||"-"),1)):r("v-if",!0),u.key==="size"?(c(),d("span",da,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="pinnedAt"?(c(),d("span",pa,l(p.pinnedAt||"-"),1)):r("v-if",!0),u.key==="action"?(c(),_(L,{key:4,title:e.t("backup.ipfs.unpinConfirm"),"ok-text":e.t("backup.ipfs.unpinOk"),"cancel-text":e.t("common.cancel"),onConfirm:R=>e.unpinFile(p)},{default:n(()=>[t(g,{size:"small",type:"link",danger:""},{default:n(()=>[t(e.DeleteOutlined),v(" "+l(e.t("backup.ipfs.unpinAction")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):r("v-if",!0)]),_:1},8,["columns","data-source"])),e.pinsError?(c(),d("div",fa,l(e.pinsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(w,{open:e.showPinModal,"onUpdate:open":f[3]||(f[3]=u=>e.showPinModal=u),title:e.t("backup.ipfs.pinModalTitle"),"confirm-loading":e.pinLoading,onOk:e.doPin,"ok-text":e.t("backup.ipfs.pinModalOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[b("div",ya,l(e.t("backup.ipfs.pinModalIntro")),1),t(C,{value:e.pinFilePath,"onUpdate:value":f[2]||(f[2]=u=>e.pinFilePath=u),placeholder:e.t("backup.ipfs.pinModalPlaceholder"),onPressEnter:e.doPin},null,8,["value","placeholder"]),e.pinResult?(c(),d("div",ba,[b("pre",ka,l(e.pinResult),1)])):r("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}const wa=ze(Ie,[["render",va],["__scopeId","data-v-077902a5"],["__file","/tmp/cc-web-panel-7zjqPd/repo/packages/web-panel/src/views/Backup.vue"]]);export{wa as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{P as s,f}from"./index-
|
|
1
|
+
import{P as s,f}from"./index-fk2Rjacw.js";import{d as w,c as O,s as h,w as k,b,r as S}from"./vendor-Bn1JzzAn.js";var z=function(n,u){var o={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&u.indexOf(t)<0&&(o[t]=n[t]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,t=Object.getOwnPropertySymbols(n);r<t.length;r++)u.indexOf(t[r])<0&&Object.prototype.propertyIsEnumerable.call(n,t[r])&&(o[t[r]]=n[t[r]]);return o};const K=w({compatConfig:{MODE:3},props:{disabled:s.looseBool,type:s.string,value:s.any,tag:{type:String,default:"input"},size:s.string,onChange:Function,onInput:Function,onBlur:Function,onFocus:Function,onKeydown:Function,onCompositionstart:Function,onCompositionend:Function,onKeyup:Function,onPaste:Function,onMousedown:Function},emits:["change","input","blur","keydown","focus","compositionstart","compositionend","keyup","paste","mousedown"],setup(n,u){let{expose:o}=u;const t=h(null);return o({focus:()=>{t.value&&t.value.focus()},blur:()=>{t.value&&t.value.blur()},input:t,setSelectionRange:(l,c,d)=>{var v;(v=t.value)===null||v===void 0||v.setSelectionRange(l,c,d)},select:()=>{var l;(l=t.value)===null||l===void 0||l.select()},getSelectionStart:()=>{var l;return(l=t.value)===null||l===void 0?void 0:l.selectionStart},getSelectionEnd:()=>{var l;return(l=t.value)===null||l===void 0?void 0:l.selectionEnd},getScrollTop:()=>{var l;return(l=t.value)===null||l===void 0?void 0:l.scrollTop}}),()=>{const{tag:l,value:c}=n,d=z(n,["tag","value"]);return O(l,f(f({},d),{},{ref:t,value:c}),null)}}});function D(n){const u=n.getBoundingClientRect(),o=document.documentElement;return{left:u.left+(window.scrollX||o.scrollLeft)-(o.clientLeft||document.body.clientLeft||0),top:u.top+(window.scrollY||o.scrollTop)-(o.clientTop||document.body.clientTop||0)}}function N(n){return Array.prototype.slice.apply(n).map(o=>`${o}: ${n.getPropertyValue(o)};`).join("")}function M(n){return Object.keys(n).reduce((u,o)=>{const t=n[o];return typeof t>"u"||t===null||(u+=`${o}: ${n[o]};`),u},"")}var $=function(n,u){var o={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&u.indexOf(t)<0&&(o[t]=n[t]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,t=Object.getOwnPropertySymbols(n);r<t.length;r++)u.indexOf(t[r])<0&&Object.prototype.propertyIsEnumerable.call(n,t[r])&&(o[t[r]]=n[t[r]]);return o};const A=w({compatConfig:{MODE:3},inheritAttrs:!1,props:{disabled:s.looseBool,type:s.string,value:s.any,lazy:s.bool.def(!0),tag:{type:String,default:"input"},size:s.string,style:s.oneOfType([String,Object]),class:s.string},emits:["change","input","blur","keydown","focus","compositionstart","compositionend","keyup","paste","mousedown"],setup(n,u){let{emit:o,attrs:t,expose:r}=u;const a=h(null),y=S(),i=S(!1);k([()=>n.value,i],()=>{i.value||(y.value=n.value)},{immediate:!0});const l=e=>{o("change",e)},c=e=>{i.value=!0,e.target.composing=!0,o("compositionstart",e)},d=e=>{i.value=!1,e.target.composing=!1,o("compositionend",e);const p=document.createEvent("HTMLEvents");p.initEvent("input",!0,!0),e.target.dispatchEvent(p),l(e)},v=e=>{if(i.value&&n.lazy){y.value=e.target.value;return}o("input",e)},_=e=>{o("blur",e)},C=e=>{o("focus",e)},E=()=>{a.value&&a.value.focus()},P=()=>{a.value&&a.value.blur()},j=e=>{o("keydown",e)},F=e=>{o("keyup",e)},T=(e,p,g)=>{var m;(m=a.value)===null||m===void 0||m.setSelectionRange(e,p,g)},B=()=>{var e;(e=a.value)===null||e===void 0||e.select()};r({focus:E,blur:P,input:b(()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.input}),setSelectionRange:T,select:B,getSelectionStart:()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.getSelectionStart()},getSelectionEnd:()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.getSelectionEnd()},getScrollTop:()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.getScrollTop()}});const R=e=>{o("mousedown",e)},x=e=>{o("paste",e)},I=b(()=>n.style&&typeof n.style!="string"?M(n.style):n.style);return()=>{const{style:e,lazy:p}=n,g=$(n,["style","lazy"]);return O(K,f(f(f({},g),t),{},{style:I.value,onInput:v,onChange:l,onBlur:_,onFocus:C,ref:a,value:y.value,onCompositionstart:c,onCompositionend:d,onKeyup:F,onKeydown:j,onPaste:x,onMousedown:R}),null)}}});export{A as B,D as g,N as s};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{P as c,J as m,U as u,S as M,R as h,V as _,_ as H,$ as te,F as
|
|
1
|
+
import{P as c,J as m,U as u,S as M,R as h,V as _,_ as H,$ as te,F as L,Z as Q,L as le,w as V,n as j,o as X,x as re,b,r as A,I as R,c as v,K as I,Q as z,a1 as Ee,a2 as Te,M as ce,N as de,a as ue}from"./vendor-Bn1JzzAn.js";import{_ as Y,b as he}from"./index-fk2Rjacw.js";import{u as fe,M as Ae}from"./chat-DtUqe8h_.js";import{ah as Pe,L as pe,ai as Re,a1 as Fe,a as je,b as qe,aj as Le,ak as De,p as Ne,c as Ve,f as We,a5 as Be,al as Qe,a7 as Ue,a8 as He,am as Ke,ag as Ge,ac as Je}from"./icons-DG5UD-6K.js";import{M as Xe}from"./MarkdownRenderer-BLif4QSg.js";import"./markdown-Yo_c6Krv.js";import"./markdown-CsiA8-E5.js";const Ye={__name:"ToolInvocationCard",props:{item:{type:Object,required:!0},expandable:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1}},emits:["toggle"],setup(a,{expose:d,emit:t}){d();const e=a,n=t;function i(){e.expandable&&n("toggle")}const s={props:e,emit:n,onToggle:i,get CheckCircleFilled(){return je},get ClockCircleOutlined(){return Fe},get DownOutlined(){return Re},get LoadingOutlined(){return pe},get RightOutlined(){return Pe}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Ze=["data-testid"],$e={class:"cb-action__icon"},et={class:"cb-action__label"},tt={key:0,class:"cb-action__detail"},nt={key:1,class:"cb-action__caret"};function st(a,d,t,e,n,i){return c(),m("div",{class:H(["cb-action",[`cb-action--${t.item.status}`,{"cb-action--expandable":t.expandable,"cb-action--open":t.expanded}]]),"data-testid":`tool-card-${t.item.id}`,onClick:e.onToggle},[u("span",$e,[t.item.status==="done"?(c(),M(e.CheckCircleFilled,{key:0})):t.item.status==="running"?(c(),M(e.LoadingOutlined,{key:1})):(c(),M(e.ClockCircleOutlined,{key:2}))]),u("span",et,h(t.item.label),1),t.item.detail?(c(),m("span",tt,h(t.item.detail),1)):_("v-if",!0),t.expandable?(c(),m("span",nt,[t.expanded?(c(),M(e.DownOutlined,{key:0})):(c(),M(e.RightOutlined,{key:1}))])):_("v-if",!0)],10,Ze)}const it=Y(Ye,[["render",st],["__scopeId","data-v-318f1edb"],["__file","/tmp/cc-web-panel-7zjqPd/repo/packages/web-panel/src/components/ToolInvocationCard.vue"]]);function B(a,d,t){let e=t.initialDeps??[],n,i=!0;function s(){var o,p,f;let S;t.key&&((o=t.debug)!=null&&o.call(t))&&(S=Date.now());const x=a();if(!(x.length!==e.length||x.some((y,l)=>e[l]!==y)))return n;e=x;let g;if(t.key&&((p=t.debug)!=null&&p.call(t))&&(g=Date.now()),n=d(...x),t.key&&((f=t.debug)!=null&&f.call(t))){const y=Math.round((Date.now()-S)*100)/100,l=Math.round((Date.now()-g)*100)/100,C=l/16,k=(E,P)=>{for(E=String(E);E.length<P;)E=" "+E;return E};console.info(`%c⏱ ${k(l,5)} /${k(y,5)} ms`,`
|
|
2
2
|
font-size: .6rem;
|
|
3
3
|
font-weight: bold;
|
|
4
|
-
color: hsl(${Math.max(0,Math.min(120-120*C,120))}deg 100% 31%);`,t?.key)}return t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(n),i=!1,n}return s.updateDeps=o=>{e=o},s}function me(a,d){if(a===void 0)throw new Error("Unexpected undefined");return a}const ot=(a,d)=>Math.abs(a-d)<1.01,at=a=>a,lt=a=>{const d=Math.max(a.startIndex-a.overscan,0),t=Math.min(a.endIndex+a.overscan,a.count-1),e=[];for(let n=d;n<=t;n++)e.push(n);return e},rt=(a,d,t)=>{if(d?.borderBoxSize){const e=d.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}return a[t.options.horizontal?"offsetWidth":"offsetHeight"]};class ge{constructor(d){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var t,e,n;return((n=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:n.call(e))??Date.now()},this.observer=(()=>{let t=null;const e=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(n=>{n.forEach(i=>{const s=()=>{const o=i.target,p=this.indexFromElement(o);if(!o.isConnected){this.observer.unobserve(o);return}this.shouldMeasureDuringScroll(p)&&this.resizeItem(p,this.options.measureElement(o,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(s):s()})}));return{disconnect:()=>{var n;(n=e())==null||n.disconnect(),t=null},observe:n=>{var i;return(i=e())==null?void 0:i.observe(n,{box:"border-box"})},unobserve:n=>{var i;return(i=e())==null?void 0:i.unobserve(n)}}})(),this.range=null,this.setOptions=t=>{Object.entries(t).forEach(([e,n])=>{typeof n>"u"&&delete t[e]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:at,rangeExtractor:lt,onChange:()=>{},measureElement:rt,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",...t}},this.notify=t=>{var e,n;(n=(e=this.options).onChange)==null||n.call(e,this,t)},this.maybeNotify=W(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:"maybeNotify",debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(n=>{this.observer.observe(n)}),this.unsubs.push(this.options.observeElementRect(this,n=>{this.scrollRect=n,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(n,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()<n?"forward":"backward":null,this.scrollOffset=n,this.isScrolling=i,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(t,e)=>{const n=new Map,i=new Map;for(let s=e-1;s>=0;s--){const o=t[s];if(n.has(o.lane))continue;const p=i.get(o.lane);if(p==null||o.end>p.end?i.set(o.lane,o):o.end<p.end&&n.set(o.lane,!0),n.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((s,o)=>s.end===o.end?s.index-o.index:s.end-o.end)[0]:void 0},this.getMeasurementOptions=W(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(t,e,n,i,s,o,p)=>(this.prevLanes!==void 0&&this.prevLanes!==o&&(this.lanesChangedFlag=!0),this.prevLanes=o,this.pendingMeasuredCacheIndexes=[],{count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p}),{key:!1}),this.getMeasurements=W(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p},f)=>{if(!s)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const g of this.laneAssignments.keys())g>=t&&this.laneAssignments.delete(g);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(g=>{this.itemSizeCache.set(g.key,g.size)}));const S=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1);const x=this.measurementsCache.slice(0,S),O=new Array(o).fill(void 0);for(let g=0;g<S;g++){const y=x[g];y&&(O[y.lane]=g)}for(let g=S;g<t;g++){const y=i(g),l=this.laneAssignments.get(g);let C,k;const z=p==="estimate"||f.has(y);if(l!==void 0&&this.options.lanes>1){C=l;const T=O[C],q=T!==void 0?x[T]:void 0;k=q?q.end+this.options.gap:e+n}else{const T=this.options.lanes===1?x[g-1]:this.getFurthestMeasurement(x,g);k=T?T.end+this.options.gap:e+n,C=T?T.lane:g%this.options.lanes,this.options.lanes>1&&z&&this.laneAssignments.set(g,C)}const P=f.get(y),U=typeof P=="number"?P:this.options.estimateSize(g),Q=k+U;x[g]={index:g,start:k,size:U,end:Q,key:y,lane:C},O[C]=g}return this.measurementsCache=x,x},{key:"getMeasurements",debug:()=>this.options.debug}),this.calculateRange=W(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,n,i)=>this.range=t.length>0&&e>0?ct({measurements:t,outerSize:e,scrollOffset:n,lanes:i}):null,{key:"calculateRange",debug:()=>this.options.debug}),this.getVirtualIndexes=W(()=>{let t=null,e=null;const n=this.calculateRange();return n&&(t=n.startIndex,e=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,n,i,s)=>i===null||s===null?[]:t({startIndex:i,endIndex:s,overscan:e,count:n}),{key:"getVirtualIndexes",debug:()=>this.options.debug}),this.indexFromElement=t=>{const e=this.options.indexAttribute,n=t.getAttribute(e);return n?parseInt(n,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const n=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(n!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),s=Math.max(0,n-i),o=Math.min(this.options.count-1,n+i);return t>=s&&t<=o}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((s,o)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(o))});return}const e=this.indexFromElement(t),n=this.options.getItemKey(e),i=this.elementsCache.get(n);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(n,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var n;const i=this.measurementsCache[t];if(!i)return;const s=this.itemSizeCache.get(i.key)??i.size,o=e-s;o!==0&&(((n=this.scrollState)==null?void 0:n.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(i,o,this):i.start<this.getScrollOffset()+this.scrollAdjustments)&&(this.options.debug&&console.info("correction",o),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(i.index),this.itemSizeCache=new Map(this.itemSizeCache.set(i.key,e)),this.notify(!1))},this.getVirtualItems=W(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{const n=[];for(let i=0,s=t.length;i<s;i++){const o=t[i],p=e[o];n.push(p)}return n},{key:"getVirtualItems",debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const e=this.getMeasurements();if(e.length!==0)return me(e[ve(0,e.length-1,n=>me(e[n]).start,t)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(t,e,n=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),s=this.getScrollOffset();e==="auto"&&(e=t>=s+i?"end":"start"),e==="center"?t+=(n-i)/2:e==="end"&&(t-=i);const o=this.getMaxScrollOffset();return Math.max(Math.min(o,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const n=this.getSize(),i=this.getScrollOffset(),s=this.measurementsCache[t];if(!s)return;if(e==="auto")if(s.end>=i+n-this.options.scrollPaddingEnd)e="end";else if(s.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];const o=e==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,e,s.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:n="auto"}={})=>{const i=this.getOffsetForAlignment(t,e),s=this.now();this.scrollState={index:null,align:e,behavior:n,startedAt:s,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:n="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,e);if(!i)return;const[s,o]=i,p=this.now();this.scrollState={index:t,align:o,behavior:n,startedAt:p,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{const n=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var t;const e=this.getMeasurements();let n;if(e.length===0)n=this.options.paddingStart;else if(this.options.lanes===1)n=((t=e[e.length-1])==null?void 0:t.end)??0;else{const i=Array(this.options.lanes).fill(null);let s=e.length-1;for(;s>=0&&i.some(o=>o===null);){const o=e[s];i[o.lane]===null&&(i[o.lane]=o.end),s--}n=Math.max(...i.filter(o=>o!==null))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(t,{adjustments:e,behavior:n})=>{this.options.scrollToFn(t,{behavior:n,adjustments:e},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(d)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,n=e?e[0]:this.scrollState.lastTargetOffset,i=1,s=n!==this.scrollState.lastTargetOffset;if(!s&&ot(n,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.scrollState=null;return}}else this.scrollState.stableFrames=0,s&&(this.scrollState.lastTargetOffset=n,this.scrollState.behavior="auto",this._scrollToOffset(n,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}const ve=(a,d,t,e)=>{for(;a<=d;){const n=(a+d)/2|0,i=t(n);if(i<e)a=n+1;else if(i>e)d=n-1;else return n}return a>0?a-1:0};function ct({measurements:a,outerSize:d,scrollOffset:t,lanes:e}){const n=a.length-1,i=p=>a[p].start;if(a.length<=e)return{startIndex:0,endIndex:n};let s=ve(0,n,i,t),o=s;if(e===1)for(;o<n&&a[o].end<t+d;)o++;else if(e>1){const p=Array(e).fill(0);for(;o<n&&p.some(S=>S<t+d);){const S=a[o];p[S.lane]=S.end,o++}const f=Array(e).fill(t+d);for(;s>=0&&f.some(S=>S>=t);){const S=a[s];f[S.lane]=S.start,s--}s=Math.max(0,s-s%e),o=Math.min(n,o+(e-1-o%e))}return{startIndex:s,endIndex:o}}const dt={__name:"VirtualMessageList",props:{messages:{type:Array,required:!0,default:()=>[]},estimateSize:{type:Number,default:120}},emits:["scroll-to-bottom","load-more"],setup(a,{expose:d,emit:t}){const e=a,n=t,i=A(null),s=A(null),o=A(0),p=b(()=>s.value?(o.value,s.value.getVirtualItems()):[]),f=()=>{if(i.value)try{s.value=new ge({count:e.messages.length,getScrollElement:()=>i.value,estimateSize:()=>e.estimateSize,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),j(()=>{s.value&&i.value&&(s.value.measure(),o.value++,i.value.scrollTop=1,setTimeout(()=>{i.value&&(i.value.scrollTop=0)},50))})}catch(y){console.error("[VirtualMessageList] init failed:",y)}},S=()=>{if(!i.value)return;s.value&&s.value.measure();const{scrollTop:y,scrollHeight:l,clientHeight:C}=i.value;y<100&&n("load-more"),y+C>=l-50&&n("scroll-to-bottom")},x=()=>{i.value&&requestAnimationFrame(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},O=y=>{const l=e.messages.findIndex(C=>C.id===y);l!==-1&&s.value&&s.value.scrollToIndex(l,{align:"center"})};V(()=>e.messages.length,(y,l)=>{s.value?(s.value.setOptions({count:y,estimateSize:()=>e.estimateSize}),o.value++,y>l&&j(()=>x())):j(()=>{f(),s.value&&o.value++})}),V(()=>e.messages,y=>{!s.value&&y.length>0?j(()=>f()):s.value&&(s.value.setOptions({count:y.length,estimateSize:()=>e.estimateSize,getScrollElement:()=>i.value,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),o.value++,j(()=>{s.value&&s.value.measure()}))},{deep:!0}),d({scrollToBottom:x,scrollToMessage:O}),X(()=>{j(()=>{f(),e.messages.length>0&&x()})}),re(()=>{s.value&&(s.value=null)});const g={props:e,emit:n,scrollContainer:i,virtualizer:s,updateKey:o,virtualItems:p,initVirtualizer:f,handleScroll:S,scrollToBottom:x,scrollToMessage:O,ref:A,computed:b,watch:V,onMounted:X,onUnmounted:re,nextTick:j,get Virtualizer(){return ge}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}},ut={key:1,class:"fallback-list"};function ht(a,d,t,e,n,i){return c(),m("div",{ref:"scrollContainer",class:"virtual-message-list",onScroll:e.handleScroll},[e.virtualizer&&e.virtualItems.length>0?(c(),m("div",{key:0,style:te({height:`${e.virtualizer.getTotalSize()}px`,width:"100%",position:"relative"})},[(c(!0),m(D,null,B(e.virtualItems,s=>(c(),m("div",{key:s.key,style:te({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${s.start}px)`})},[le(a.$slots,"default",{message:t.messages[s.index],index:s.index},void 0)],4))),128))],4)):(c(),m("div",ut,[(c(!0),m(D,null,B(t.messages,(s,o)=>(c(),m("div",{key:s.id||o},[le(a.$slots,"default",{message:s,index:o},void 0)]))),128))]))],544)}const ft=Y(dt,[["render",ht],["__scopeId","data-v-ff0bed80"],["__file","/tmp/cc-web-panel-J6U3Mt/repo/packages/web-panel/src/components/VirtualMessageList.vue"]]),mt={__name:"IntentConfirmationMessage",props:{message:{type:Object,required:!0}},emits:["confirm","correct"],setup(a,{expose:d,emit:t}){d();const e=a,n=t,i=A(!1),s=A(""),o=b(()=>e.message.metadata?.originalInput||""),p=b(()=>e.message.metadata?.understanding||{}),f=b(()=>p.value.correctedInput||o.value),S=b(()=>p.value.intent||"未识别"),x=b(()=>p.value.keyPoints||[]),O=b(()=>f.value!==o.value&&o.value.trim()!==""),g=b(()=>e.message.metadata?.status||"pending"),y=b(()=>g.value==="confirmed"),l=b(()=>g.value==="corrected"),C=b(()=>!!e.message.metadata?.streaming),k=b(()=>e.message.metadata?.streamingTokens||0),z=b(()=>e.message.metadata?.correction||null);function P(){n("confirm",{messageId:e.message.id,originalInput:o.value,understanding:p.value})}function U(){i.value=!0,s.value=f.value}function Q(){s.value.trim()&&(n("correct",{messageId:e.message.id,originalInput:o.value,correction:s.value}),i.value=!1)}function T(){i.value=!1,s.value=""}const q={props:e,emit:n,showCorrectionInput:i,correctionInput:s,originalInput:o,understanding:p,correctedInput:f,intent:S,keyPoints:x,hasCorrectedInput:O,status:g,isConfirmed:y,isCorrected:l,isStreaming:C,streamingTokens:k,correction:z,handleConfirm:P,handleCorrect:U,handleSubmitCorrection:Q,handleCancelCorrection:T,ref:A,computed:b,get CheckCircleOutlined(){return Ue},get ExclamationCircleOutlined(){return Ve},get BulbOutlined(){return Ne},get CheckOutlined(){return qe},get EditOutlined(){return De},get CloseOutlined(){return Le},get LoadingOutlined(){return pe}};return Object.defineProperty(q,"__isScriptSetup",{enumerable:!1,value:!0}),q}},gt={class:"intent-confirmation-message"},pt={class:"confirmation-header"},vt={class:"header-icon"},_t={class:"header-text"},yt={key:0},bt={key:1},St={key:2},kt={class:"understanding-content"},xt={key:0,class:"original-input"},Ct={class:"label"},wt={class:"value original-text"},It={key:1,class:"corrected-input"},Ot={class:"label"},Mt={class:"value corrected-text"},Et={class:"intent-section"},zt={class:"label"},Tt={class:"value"},At={key:2,class:"key-points-section"},Pt={class:"label"},Rt={class:"key-points-list"},Ft={key:3,class:"correction-section"},jt={class:"label"},Lt={class:"value correction-text"},Dt={key:0,class:"streaming-indicator"},qt={key:0,class:"streaming-tokens"},Nt={key:1,class:"action-buttons"},Vt={key:2,class:"correction-input-section"},Ut={class:"correction-actions"};function Wt(a,d,t,e,n,i){const s=R("a-button"),o=R("a-textarea");return c(),m("div",gt,[u("div",pt,[u("div",vt,[e.isConfirmed?(c(),M(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):e.isCorrected?(c(),M(e.ExclamationCircleOutlined,{key:1,style:{color:"#faad14"}})):(c(),M(e.BulbOutlined,{key:2,style:{color:"#1890ff"}}))]),u("div",_t,[e.isConfirmed?(c(),m("span",yt,h(a.$t("chat.intent.confirmed")),1)):e.isCorrected?(c(),m("span",bt,h(a.$t("chat.intent.corrected")),1)):(c(),m("span",St,h(t.message.content),1))])]),u("div",kt,[e.hasCorrectedInput?(c(),m("div",xt,[u("div",Ct,h(a.$t("chat.intent.label.original")),1),u("div",wt,h(e.originalInput),1)])):_("v-if",!0),e.hasCorrectedInput?(c(),m("div",It,[u("div",Ot,h(a.$t("chat.intent.label.understood")),1),u("div",Mt,h(e.correctedInput),1)])):_("v-if",!0),u("div",Et,[u("div",zt,"🎯 "+h(a.$t("chat.intent.label.intent")),1),u("div",Tt,h(e.intent),1)]),e.keyPoints&&e.keyPoints.length>0?(c(),m("div",At,[u("div",Pt,"📝 "+h(a.$t("chat.intent.label.keyPoints")),1),u("ul",Rt,[(c(!0),m(D,null,B(e.keyPoints,(p,f)=>(c(),m("li",{key:f},h(p),1))),128))])])):_("v-if",!0),e.correction?(c(),m("div",Ft,[u("div",jt,"📝 "+h(a.$t("chat.intent.label.correction")),1),u("div",Lt,h(e.correction),1)])):_("v-if",!0)]),e.isStreaming?(c(),m("div",Dt,[v(e.LoadingOutlined,{spin:""}),u("span",null,h(a.$t("chat.intent.status.understanding")),1),e.streamingTokens>0?(c(),m("span",qt,"· "+h(e.streamingTokens)+" tokens",1)):_("v-if",!0)])):!e.isConfirmed&&!e.isCorrected?(c(),m("div",Nt,[v(s,{type:"primary",onClick:e.handleConfirm},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.confirm")),1)]),_:1}),v(s,{onClick:e.handleCorrect},{default:I(()=>[v(e.EditOutlined),E(" "+h(a.$t("chat.intent.action.correct")),1)]),_:1})])):_("v-if",!0),e.showCorrectionInput?(c(),m("div",Vt,[v(o,{value:e.correctionInput,"onUpdate:value":d[0]||(d[0]=p=>e.correctionInput=p),placeholder:a.$t("chat.intent.action.correctPlaceholder"),"auto-size":{minRows:2,maxRows:6}},null,8,["value","placeholder"]),u("div",Ut,[v(s,{type:"primary",size:"small",onClick:e.handleSubmitCorrection},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.submitCorrection")),1)]),_:1}),v(s,{size:"small",onClick:e.handleCancelCorrection},{default:I(()=>[v(e.CloseOutlined),E(" "+h(a.$t("chat.intent.action.cancelCorrection")),1)]),_:1})])])):_("v-if",!0)])}const Bt=Y(mt,[["render",Wt],["__scopeId","data-v-62ebcfe5"],["__file","/tmp/cc-web-panel-J6U3Mt/repo/packages/web-panel/src/components/IntentConfirmationMessage.vue"]]),Qt={__name:"Chat",setup(a,{expose:d}){d();const{t,tm:e,rt:n}=he(),i=ce()||null,s=de()||null,o=window.__CC_CONFIG__||{},p=b(()=>o.mode==="project"),f=fe(),S=new Set,x=A(null),O=A(""),g=b(()=>f.contextMode);function y(r){f.setContextMode(r)}const l=b(()=>f.intentEnabled);function C(r){f.setIntentEnabled(r)}const k=b(()=>f.currentSessionId),z=b(()=>k.value?f.getMessages(k.value):[]),P=b(()=>{const r=f.streaming[k.value];return r?.active?r.content:null}),U=b(()=>{const r=z.value;return P.value?[...r,{role:"assistant",content:P.value,_streaming:!0,timestamp:Date.now()}]:r}),Q=b(()=>f.pendingQuestion[k.value]),T=b(()=>f.getIsLoading(k.value));function q(r){if(!r)return"";const w=new Date(r);return`${String(w.getHours()).padStart(2,"0")}:${String(w.getMinutes()).padStart(2,"0")}`}const K=ue(new Set);function _e(r){K.has(r)?K.delete(r):K.add(r)}function ye(r,w){return{id:`tool-${w}`,label:r.tool||t("chat.tool.unknownTool"),detail:ne(r),status:r.status==="done"?"done":"running"}}function ne(r){if(r.status==="running"){const L=r.input&&typeof r.input=="object"?Object.keys(r.input):[];return L.length?t("chat.tool.argsPreview",{n:L.length,key:L[0]}):t("chat.tool.running")}if(r.result==null)return t("chat.tool.done");const F=(typeof r.result=="string"?r.result:JSON.stringify(r.result)).split(`
|
|
5
|
-
`)[0]||"";return F.length>48?`${F.slice(0,48)}…`:F||t("chat.tool.done")}async function be(r){await f.createSession(r)}async function Z(){if(!O.value.trim()||T.value||!k.value)return;const r=O.value;O.value="",await f.submitUserInput(k.value,r)}function Se(r){f.confirmIntent(k.value,r.messageId)}function ke(r){f.correctIntent(k.value,r.messageId,r.correction)}const se=b(()=>{const r=f.customQuickPrompts;if(Array.isArray(r)&&r.length>0)return r;const w=e("chat.quickPrompts");return w?Object.values(w).map(F=>n(F)):[]}),
|
|
6
|
-
`),
|
|
7
|
-
`).map(w=>w.trim()).filter(w=>w.length>0);f.setCustomQuickPrompts(r.length>0?r:null),J.value=!1}function we(){f.setCustomQuickPrompts(null),J.value=!1}const Ie=b(()=>t(`chat.empty.hint.${g.value}`));async function Oe(r){k.value||await f.createSession("chat"),O.value=r,await Z()}function Me(r){f.answerQuestion(k.value,r)}V([z,P],()=>{j(()=>{x.value?.scrollToBottom()})},{deep:!0});async function ee({prompt:r,autoSend:w,session:F,token:L}){if(!r||S.has(L))return;S.add(L);let N=F||k.value;N?N!==k.value&&await f.switchSession(N):N=await f.createSession("chat"),O.value=r,w!==!1&&(await j(),await Z())}function ie(){const r=i?.query||{};if(!r.prompt)return null;const w=Array.isArray(r.prompt)?r.prompt[0]:String(r.prompt);if(!w.trim())return null;const L=(Array.isArray(r.autoSend)?r.autoSend[0]:r.autoSend)!=="false",N=Array.isArray(r.session)?r.session[0]:r.session,ae=N?String(N):null,Ee=`query::${w}::${ae||""}::${L}`;return{prompt:w,autoSend:L,session:ae,token:Ee}}async function G(){const r=ie();if(r){await ee(r),s&&i&&s.replace({path:i.path,query:{}}).catch(()=>{});return}const w=f.pendingAutoSend;if(w?.prompt){const F=w.token||`staged::${w.prompt}::${Date.now()}`;await ee({...w,token:F}),f.clearAutoSend?.()}}i&&V(()=>[i.query.prompt,i.query.autoSend,i.query.session],()=>{G()},{immediate:!1}),V(()=>f.pendingAutoSend,()=>{G()},{deep:!0}),X(async()=>{await f.loadSessions(),await G()});const oe={t,tm:e,rt:n,route:i,router:s,cfg:o,isProject:p,chatStore:f,consumedAutoSendTokens:S,virtualListRef:x,inputText:O,contextMode:g,setContextMode:y,intentEnabled:l,setIntentEnabled:C,currentSessionId:k,currentMessages:z,streamingContent:P,messagesWithStreaming:U,pendingQuestion:Q,isLoading:T,formatTime:q,expandedTools:K,toggleToolDetail:_e,toToolItem:ye,toolDetail:ne,newSession:be,sendMessage:Z,handleIntentConfirm:Se,handleIntentCorrect:ke,QUICK_PROMPTS:se,editingPrompts:J,promptDraft:$,openPromptEditor:xe,savePromptEditor:Ce,resetPromptsToDefault:we,emptyHint:Ie,usePrompt:Oe,answerQuestion:Me,consumeAutoSend:ee,readAutoSendFromQuery:ie,handleAutoSendIfPending:G,ref:A,reactive:ue,computed:b,watch:V,nextTick:j,onMounted:X,get useRoute(){return ce},get useRouter(){return de},get MessageOutlined(){return Ge},get RobotOutlined(){return Je},get SendOutlined(){return Ke},get FolderOutlined(){return He},get GlobalOutlined(){return Qe},get UserOutlined(){return Be},get FileTextOutlined(){return We},get useI18n(){return he},get useChatStore(){return fe},ToolInvocationCard:it,MarkdownRenderer:Xe,VirtualMessageList:ft,IntentConfirmationMessage:Bt,get MessageType(){return Ae}};return Object.defineProperty(oe,"__isScriptSetup",{enumerable:!1,value:!0}),oe}},Ht={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},Kt={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},Jt={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},Gt=["title"],Xt={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},Yt={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},Zt={style:{flex:"1","overflow-y":"auto",padding:"8px"}},$t=["onClick"],en={class:"session-icon"},tn={class:"session-info"},nn={class:"session-title"},sn={class:"session-meta"},on={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},an={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},ln={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},rn={style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},cn={style:{"font-size":"13px",color:"var(--text-muted)"}},dn={style:{"margin-top":"24px",display:"flex",gap:"12px"}},un={key:1,class:"chat-header"},hn={class:"chat-intent-toggle"},fn={class:"chat-intent-toggle-label"},mn={key:2,class:"chat-area-body"},gn={key:0,class:"chat-empty-prompts"},pn={class:"empty-title"},vn={class:"empty-hint"},_n={class:"quick-prompts"},yn={class:"system-banner"},bn={class:"tool-msg"},Sn={key:0,class:"tool-detail"},kn={class:"tool-detail__pre tool-detail__pre--input"},xn={key:0,class:"tool-detail__result"},Cn={class:"tool-detail__pre tool-detail__pre--result"},wn={class:"msg-body"},In={class:"msg-meta-row"},On={class:"msg-role"},Mn={class:"msg-time"},En={key:0,class:"msg-tokens"},zn={key:0,class:"bubble user"},Tn={key:2,class:"question-card"},An={class:"question-text"},Pn={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Rn={key:3,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},Fn={style:{display:"flex",gap:"8px","align-items":"flex-end"}},jn={style:{"margin-bottom":"8px","font-size":"12px",color:"var(--text-muted)"}},Ln={style:{"margin-top":"8px"}};function Dn(a,d,t,e,n,i){const s=R("a-button"),o=R("a-radio-button"),p=R("a-radio-group"),f=R("a-switch"),S=R("a-tooltip"),x=R("a-avatar"),O=R("a-input-search"),g=R("a-textarea"),y=R("a-modal");return c(),m("div",Ht,[_(" Session Sidebar "),u("div",Kt,[_(" Project/Global Scope Indicator "),e.isProject?(c(),m("div",Jt,[v(e.FolderOutlined),u("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:e.cfg.projectRoot},h(e.cfg.projectName||a.$t("chat.scope.fallbackProjectName")),9,Gt)])):(c(),m("div",Xt,[v(e.GlobalOutlined),u("span",null,h(a.$t("chat.scope.globalSessions")),1)])),u("div",Yt,[v(s,{type:"primary",size:"small",style:{flex:"1"},onClick:d[0]||(d[0]=l=>e.newSession("chat"))},{icon:I(()=>[v(e.MessageOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newChat")),1)]),_:1}),v(s,{size:"small",style:{flex:"1"},onClick:d[1]||(d[1]=l=>e.newSession("agent"))},{icon:I(()=>[v(e.RobotOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newAgent")),1)]),_:1})]),u("div",Zt,[(c(!0),m(D,null,B(e.chatStore.sessions,l=>(c(),m("div",{key:l.id,class:H(["session-item",{active:l.id===e.chatStore.currentSessionId}]),onClick:C=>e.chatStore.switchSession(l.id)},[u("span",en,h(l.type==="agent"?"🤖":"💬"),1),u("div",tn,[u("div",nn,h(l.title||a.$t("chat.session.untitled")),1),u("div",sn,h(a.$t("chat.session.messageCountSuffix",{n:l.messageCount||0})),1)])],10,$t))),128)),e.chatStore.sessions.length?_("v-if",!0):(c(),m("div",on,h(a.$t("chat.sidebarEmpty")),1))])]),_(" Chat Area "),u("div",an,[_(" Empty State "),e.currentSessionId?_("v-if",!0):(c(),m("div",ln,[d[7]||(d[7]=u("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),u("div",rn,h(a.$t("chat.empty.title")),1),u("div",cn,h(a.$t("chat.empty.subtitle")),1),u("div",dn,[v(s,{type:"primary",onClick:d[2]||(d[2]=l=>e.newSession("chat"))},{default:I(()=>[E(h(a.$t("chat.empty.newChat")),1)]),_:1}),v(s,{style:{},onClick:d[3]||(d[3]=l=>e.newSession("agent"))},{default:I(()=>[E(h(a.$t("chat.empty.newAgent")),1)]),_:1})])])),_(" Chat header: context mode + intent toggle "),e.currentSessionId?(c(),m("div",un,[v(p,{value:e.contextMode,size:"small","button-style":"solid","onUpdate:value":e.setContextMode},{default:I(()=>[v(o,{value:"project",disabled:!e.isProject},{default:I(()=>[v(e.FolderOutlined),E(" "+h(a.$t("chat.contextMode.project")),1)]),_:1},8,["disabled"]),v(o,{value:"file",disabled:""},{default:I(()=>[v(e.FileTextOutlined),E(" "+h(a.$t("chat.contextMode.file")),1)]),_:1}),v(o,{value:"global"},{default:I(()=>[v(e.GlobalOutlined),E(" "+h(a.$t("chat.contextMode.global")),1)]),_:1})]),_:1},8,["value"]),e.contextMode!=="global"?(c(),M(S,{key:0,title:a.$t("chat.intent.toggleHint"),placement:"bottom"},{default:I(()=>[u("label",hn,[v(f,{checked:e.intentEnabled,size:"small","onUpdate:checked":e.setIntentEnabled},null,8,["checked"]),u("span",fn,h(a.$t("chat.intent.toggleLabel")),1)])]),_:1},8,["title"])):_("v-if",!0)])):_("v-if",!0),_(" Messages "),e.currentSessionId?(c(),m("div",mn,[_(" Empty state with quick prompts when session has no messages "),e.messagesWithStreaming.length===0?(c(),m("div",gn,[d[8]||(d[8]=u("div",{class:"empty-icon"},"💬",-1)),u("div",pn,h(a.$t("chat.empty.startTitle")),1),u("div",vn,h(e.emptyHint),1),u("div",_n,[(c(!0),m(D,null,B(e.QUICK_PROMPTS,l=>(c(),M(s,{key:l,size:"small",class:"quick-prompt-btn",onClick:C=>e.usePrompt(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128)),v(s,{size:"small",type:"dashed",class:"quick-prompt-btn quick-prompt-edit",onClick:e.openPromptEditor},{default:I(()=>[E(h(a.$t("chat.quickPromptsEditor.openButton")),1)]),_:1})])])):(c(),M(e.VirtualMessageList,{key:1,ref:"virtualListRef",messages:e.messagesWithStreaming,"estimate-size":120,class:"chat-virtual-list"},{default:I(({message:l,index:C})=>[u("div",{class:H(["message-row",l.role])},[_(" Intent confirmation card (V5 parity) "),l.type===e.MessageType.INTENT_CONFIRMATION?(c(),M(e.IntentConfirmationMessage,{key:0,message:l,onConfirm:e.handleIntentConfirm,onCorrect:e.handleIntentCorrect},null,8,["message"])):l.role==="system"?(c(),m(D,{key:1},[_(" System banner (follow-up intent feedback etc.) "),u("div",yn,h(l.content),1)],2112)):l.role==="tool"?(c(),m(D,{key:2},[_(" Tool message "),u("div",bn,[v(e.ToolInvocationCard,{item:e.toToolItem(l,C),expandable:"",expanded:e.expandedTools.has(C),onToggle:k=>e.toggleToolDetail(C)},null,8,["item","expanded","onToggle"]),e.expandedTools.has(C)?(c(),m("div",Sn,[u("pre",kn,h(JSON.stringify(l.input,null,2)),1),l.result?(c(),m("div",xn,[u("pre",Cn,h(typeof l.result=="string"?l.result:JSON.stringify(l.result,null,2)),1)])):_("v-if",!0)])):_("v-if",!0)])],2112)):(c(),m(D,{key:3},[_(" User / Assistant message with avatar + meta row "),u("div",{class:H(["msg-with-avatar",l.role])},[v(x,{size:32,style:te({backgroundColor:l.role==="user"?"#1890ff":"#52c41a",flexShrink:0})},{icon:I(()=>[l.role==="user"?(c(),M(e.UserOutlined,{key:0})):(c(),M(e.RobotOutlined,{key:1}))]),_:2},1032,["style"]),u("div",wn,[u("div",In,[u("span",On,h(l.role==="user"?a.$t("chat.role.me"):"AI"),1),u("span",Mn,h(e.formatTime(l.timestamp)),1),l.tokens?(c(),m("span",En,"· "+h(l.tokens)+" tokens",1)):_("v-if",!0)]),l.role==="user"?(c(),m("div",zn,h(l.content),1)):(c(),M(e.MarkdownRenderer,{key:1,class:H(["bubble assistant",{streaming:l._streaming}]),content:l.content},null,8,["class","content"]))])],2)],2112))],2)]),_:1},8,["messages"])),_(" Interactive Question (sticky below the list) "),e.pendingQuestion?(c(),m("div",Tn,[u("div",An,h(e.pendingQuestion.question),1),e.pendingQuestion.choices?.length?(c(),m("div",Pn,[(c(!0),m(D,null,B(e.pendingQuestion.choices,l=>(c(),M(s,{key:l,size:"small",onClick:C=>e.answerQuestion(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128))])):(c(),M(O,{key:1,placeholder:a.$t("chat.input.answerPlaceholder"),"enter-button":a.$t("chat.input.send"),style:{"margin-top":"10px"},onSearch:e.answerQuestion},null,8,["placeholder","enter-button"]))])):_("v-if",!0)])):_("v-if",!0),_(" Input Area "),e.currentSessionId?(c(),m("div",Rn,[u("div",Fn,[v(g,{value:e.inputText,"onUpdate:value":d[4]||(d[4]=l=>e.inputText=l),placeholder:e.isLoading?a.$t("chat.input.loading"):a.$t("chat.input.placeholder"),"auto-size":{minRows:1,maxRows:6},disabled:e.isLoading,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:ze(Te(e.sendMessage,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),v(s,{type:"primary",loading:e.isLoading,onClick:e.sendMessage,style:{height:"40px"}},{icon:I(()=>[v(e.SendOutlined)]),_:1},8,["loading"])])])):_("v-if",!0)]),_(` Custom quick-prompts editor (Improvement 4) — placed at root so the
|
|
8
|
-
chat-area-body's v-if/v-else pair stays unbroken. `),v(y,{open:e.editingPrompts,"onUpdate:open":d[6]||(d[6]=l=>e.editingPrompts=l),title:a.$t("chat.quickPromptsEditor.title"),"ok-text":a.$t("chat.quickPromptsEditor.save"),"cancel-text":a.$t("chat.quickPromptsEditor.cancel"),onOk:e.savePromptEditor},{default:I(()=>[u("div",jn,h(a.$t("chat.quickPromptsEditor.hint")),1),v(g,{value:e.promptDraft,"onUpdate:value":d[5]||(d[5]=l=>e.promptDraft=l),rows:8,placeholder:a.$t("chat.quickPromptsEditor.placeholder")},null,8,["value","placeholder"]),u("div",
|
|
4
|
+
color: hsl(${Math.max(0,Math.min(120-120*C,120))}deg 100% 31%);`,t?.key)}return t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(n),i=!1,n}return s.updateDeps=o=>{e=o},s}function me(a,d){if(a===void 0)throw new Error("Unexpected undefined");return a}const ot=(a,d)=>Math.abs(a-d)<1.01,at=a=>a,lt=a=>{const d=Math.max(a.startIndex-a.overscan,0),t=Math.min(a.endIndex+a.overscan,a.count-1),e=[];for(let n=d;n<=t;n++)e.push(n);return e},rt=(a,d,t)=>{if(d?.borderBoxSize){const e=d.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}return a[t.options.horizontal?"offsetWidth":"offsetHeight"]};class ge{constructor(d){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var t,e,n;return((n=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:n.call(e))??Date.now()},this.observer=(()=>{let t=null;const e=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(n=>{n.forEach(i=>{const s=()=>{const o=i.target,p=this.indexFromElement(o);if(!o.isConnected){this.observer.unobserve(o);return}this.shouldMeasureDuringScroll(p)&&this.resizeItem(p,this.options.measureElement(o,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(s):s()})}));return{disconnect:()=>{var n;(n=e())==null||n.disconnect(),t=null},observe:n=>{var i;return(i=e())==null?void 0:i.observe(n,{box:"border-box"})},unobserve:n=>{var i;return(i=e())==null?void 0:i.unobserve(n)}}})(),this.range=null,this.setOptions=t=>{Object.entries(t).forEach(([e,n])=>{typeof n>"u"&&delete t[e]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:at,rangeExtractor:lt,onChange:()=>{},measureElement:rt,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",...t}},this.notify=t=>{var e,n;(n=(e=this.options).onChange)==null||n.call(e,this,t)},this.maybeNotify=B(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:"maybeNotify",debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(n=>{this.observer.observe(n)}),this.unsubs.push(this.options.observeElementRect(this,n=>{this.scrollRect=n,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(n,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()<n?"forward":"backward":null,this.scrollOffset=n,this.isScrolling=i,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(t,e)=>{const n=new Map,i=new Map;for(let s=e-1;s>=0;s--){const o=t[s];if(n.has(o.lane))continue;const p=i.get(o.lane);if(p==null||o.end>p.end?i.set(o.lane,o):o.end<p.end&&n.set(o.lane,!0),n.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((s,o)=>s.end===o.end?s.index-o.index:s.end-o.end)[0]:void 0},this.getMeasurementOptions=B(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(t,e,n,i,s,o,p)=>(this.prevLanes!==void 0&&this.prevLanes!==o&&(this.lanesChangedFlag=!0),this.prevLanes=o,this.pendingMeasuredCacheIndexes=[],{count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p}),{key:!1}),this.getMeasurements=B(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p},f)=>{if(!s)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const g of this.laneAssignments.keys())g>=t&&this.laneAssignments.delete(g);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(g=>{this.itemSizeCache.set(g.key,g.size)}));const S=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1);const x=this.measurementsCache.slice(0,S),O=new Array(o).fill(void 0);for(let g=0;g<S;g++){const y=x[g];y&&(O[y.lane]=g)}for(let g=S;g<t;g++){const y=i(g),l=this.laneAssignments.get(g);let C,k;const E=p==="estimate"||f.has(y);if(l!==void 0&&this.options.lanes>1){C=l;const T=O[C],D=T!==void 0?x[T]:void 0;k=D?D.end+this.options.gap:e+n}else{const T=this.options.lanes===1?x[g-1]:this.getFurthestMeasurement(x,g);k=T?T.end+this.options.gap:e+n,C=T?T.lane:g%this.options.lanes,this.options.lanes>1&&E&&this.laneAssignments.set(g,C)}const P=f.get(y),W=typeof P=="number"?P:this.options.estimateSize(g),U=k+W;x[g]={index:g,start:k,size:W,end:U,key:y,lane:C},O[C]=g}return this.measurementsCache=x,x},{key:"getMeasurements",debug:()=>this.options.debug}),this.calculateRange=B(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,n,i)=>this.range=t.length>0&&e>0?ct({measurements:t,outerSize:e,scrollOffset:n,lanes:i}):null,{key:"calculateRange",debug:()=>this.options.debug}),this.getVirtualIndexes=B(()=>{let t=null,e=null;const n=this.calculateRange();return n&&(t=n.startIndex,e=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,n,i,s)=>i===null||s===null?[]:t({startIndex:i,endIndex:s,overscan:e,count:n}),{key:"getVirtualIndexes",debug:()=>this.options.debug}),this.indexFromElement=t=>{const e=this.options.indexAttribute,n=t.getAttribute(e);return n?parseInt(n,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const n=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(n!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),s=Math.max(0,n-i),o=Math.min(this.options.count-1,n+i);return t>=s&&t<=o}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((s,o)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(o))});return}const e=this.indexFromElement(t),n=this.options.getItemKey(e),i=this.elementsCache.get(n);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(n,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var n;const i=this.measurementsCache[t];if(!i)return;const s=this.itemSizeCache.get(i.key)??i.size,o=e-s;o!==0&&(((n=this.scrollState)==null?void 0:n.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(i,o,this):i.start<this.getScrollOffset()+this.scrollAdjustments)&&(this.options.debug&&console.info("correction",o),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(i.index),this.itemSizeCache=new Map(this.itemSizeCache.set(i.key,e)),this.notify(!1))},this.getVirtualItems=B(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{const n=[];for(let i=0,s=t.length;i<s;i++){const o=t[i],p=e[o];n.push(p)}return n},{key:"getVirtualItems",debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const e=this.getMeasurements();if(e.length!==0)return me(e[ve(0,e.length-1,n=>me(e[n]).start,t)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(t,e,n=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),s=this.getScrollOffset();e==="auto"&&(e=t>=s+i?"end":"start"),e==="center"?t+=(n-i)/2:e==="end"&&(t-=i);const o=this.getMaxScrollOffset();return Math.max(Math.min(o,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const n=this.getSize(),i=this.getScrollOffset(),s=this.measurementsCache[t];if(!s)return;if(e==="auto")if(s.end>=i+n-this.options.scrollPaddingEnd)e="end";else if(s.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];const o=e==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,e,s.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:n="auto"}={})=>{const i=this.getOffsetForAlignment(t,e),s=this.now();this.scrollState={index:null,align:e,behavior:n,startedAt:s,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:n="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,e);if(!i)return;const[s,o]=i,p=this.now();this.scrollState={index:t,align:o,behavior:n,startedAt:p,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{const n=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var t;const e=this.getMeasurements();let n;if(e.length===0)n=this.options.paddingStart;else if(this.options.lanes===1)n=((t=e[e.length-1])==null?void 0:t.end)??0;else{const i=Array(this.options.lanes).fill(null);let s=e.length-1;for(;s>=0&&i.some(o=>o===null);){const o=e[s];i[o.lane]===null&&(i[o.lane]=o.end),s--}n=Math.max(...i.filter(o=>o!==null))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(t,{adjustments:e,behavior:n})=>{this.options.scrollToFn(t,{behavior:n,adjustments:e},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(d)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,n=e?e[0]:this.scrollState.lastTargetOffset,i=1,s=n!==this.scrollState.lastTargetOffset;if(!s&&ot(n,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.scrollState=null;return}}else this.scrollState.stableFrames=0,s&&(this.scrollState.lastTargetOffset=n,this.scrollState.behavior="auto",this._scrollToOffset(n,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}const ve=(a,d,t,e)=>{for(;a<=d;){const n=(a+d)/2|0,i=t(n);if(i<e)a=n+1;else if(i>e)d=n-1;else return n}return a>0?a-1:0};function ct({measurements:a,outerSize:d,scrollOffset:t,lanes:e}){const n=a.length-1,i=p=>a[p].start;if(a.length<=e)return{startIndex:0,endIndex:n};let s=ve(0,n,i,t),o=s;if(e===1)for(;o<n&&a[o].end<t+d;)o++;else if(e>1){const p=Array(e).fill(0);for(;o<n&&p.some(S=>S<t+d);){const S=a[o];p[S.lane]=S.end,o++}const f=Array(e).fill(t+d);for(;s>=0&&f.some(S=>S>=t);){const S=a[s];f[S.lane]=S.start,s--}s=Math.max(0,s-s%e),o=Math.min(n,o+(e-1-o%e))}return{startIndex:s,endIndex:o}}const dt={__name:"VirtualMessageList",props:{messages:{type:Array,required:!0,default:()=>[]},estimateSize:{type:Number,default:120}},emits:["scroll-to-bottom","load-more"],setup(a,{expose:d,emit:t}){const e=a,n=t,i=A(null),s=A(null),o=A(0),p=b(()=>s.value?(o.value,s.value.getVirtualItems()):[]),f=()=>{if(i.value)try{s.value=new ge({count:e.messages.length,getScrollElement:()=>i.value,estimateSize:()=>e.estimateSize,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),j(()=>{s.value&&i.value&&(s.value.measure(),o.value++,i.value.scrollTop=1,setTimeout(()=>{i.value&&(i.value.scrollTop=0)},50))})}catch(y){console.error("[VirtualMessageList] init failed:",y)}},S=()=>{if(!i.value)return;s.value&&s.value.measure();const{scrollTop:y,scrollHeight:l,clientHeight:C}=i.value;y<100&&n("load-more"),y+C>=l-50&&n("scroll-to-bottom")},x=()=>{i.value&&requestAnimationFrame(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},O=y=>{const l=e.messages.findIndex(C=>C.id===y);l!==-1&&s.value&&s.value.scrollToIndex(l,{align:"center"})};V(()=>e.messages.length,(y,l)=>{s.value?(s.value.setOptions({count:y,estimateSize:()=>e.estimateSize}),o.value++,y>l&&j(()=>x())):j(()=>{f(),s.value&&o.value++})}),V(()=>e.messages,y=>{!s.value&&y.length>0?j(()=>f()):s.value&&(s.value.setOptions({count:y.length,estimateSize:()=>e.estimateSize,getScrollElement:()=>i.value,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),o.value++,j(()=>{s.value&&s.value.measure()}))},{deep:!0}),d({scrollToBottom:x,scrollToMessage:O}),X(()=>{j(()=>{f(),e.messages.length>0&&x()})}),re(()=>{s.value&&(s.value=null)});const g={props:e,emit:n,scrollContainer:i,virtualizer:s,updateKey:o,virtualItems:p,initVirtualizer:f,handleScroll:S,scrollToBottom:x,scrollToMessage:O,ref:A,computed:b,watch:V,onMounted:X,onUnmounted:re,nextTick:j,get Virtualizer(){return ge}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}},ut={key:1,class:"fallback-list"};function ht(a,d,t,e,n,i){return c(),m("div",{ref:"scrollContainer",class:"virtual-message-list",onScroll:e.handleScroll},[e.virtualizer&&e.virtualItems.length>0?(c(),m("div",{key:0,style:te({height:`${e.virtualizer.getTotalSize()}px`,width:"100%",position:"relative"})},[(c(!0),m(L,null,Q(e.virtualItems,s=>(c(),m("div",{key:s.key,style:te({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${s.start}px)`})},[le(a.$slots,"default",{message:t.messages[s.index],index:s.index},void 0)],4))),128))],4)):(c(),m("div",ut,[(c(!0),m(L,null,Q(t.messages,(s,o)=>(c(),m("div",{key:s.id||o},[le(a.$slots,"default",{message:s,index:o},void 0)]))),128))]))],544)}const ft=Y(dt,[["render",ht],["__scopeId","data-v-ff0bed80"],["__file","/tmp/cc-web-panel-7zjqPd/repo/packages/web-panel/src/components/VirtualMessageList.vue"]]),mt={__name:"IntentConfirmationMessage",props:{message:{type:Object,required:!0}},emits:["confirm","correct"],setup(a,{expose:d,emit:t}){d();const e=a,n=t,i=A(!1),s=A(""),o=b(()=>e.message.metadata?.originalInput||""),p=b(()=>e.message.metadata?.understanding||{}),f=b(()=>p.value.correctedInput||o.value),S=b(()=>p.value.intent||"未识别"),x=b(()=>p.value.keyPoints||[]),O=b(()=>f.value!==o.value&&o.value.trim()!==""),g=b(()=>e.message.metadata?.status||"pending"),y=b(()=>g.value==="confirmed"),l=b(()=>g.value==="corrected"),C=b(()=>!!e.message.metadata?.streaming),k=b(()=>e.message.metadata?.streamingTokens||0),E=b(()=>e.message.metadata?.correction||null);function P(){n("confirm",{messageId:e.message.id,originalInput:o.value,understanding:p.value})}function W(){i.value=!0,s.value=f.value}function U(){s.value.trim()&&(n("correct",{messageId:e.message.id,originalInput:o.value,correction:s.value}),i.value=!1)}function T(){i.value=!1,s.value=""}const D={props:e,emit:n,showCorrectionInput:i,correctionInput:s,originalInput:o,understanding:p,correctedInput:f,intent:S,keyPoints:x,hasCorrectedInput:O,status:g,isConfirmed:y,isCorrected:l,isStreaming:C,streamingTokens:k,correction:E,handleConfirm:P,handleCorrect:W,handleSubmitCorrection:U,handleCancelCorrection:T,ref:A,computed:b,get CheckCircleOutlined(){return We},get ExclamationCircleOutlined(){return Ve},get BulbOutlined(){return Ne},get CheckOutlined(){return De},get EditOutlined(){return Le},get CloseOutlined(){return qe},get LoadingOutlined(){return pe}};return Object.defineProperty(D,"__isScriptSetup",{enumerable:!1,value:!0}),D}},gt={class:"intent-confirmation-message"},pt={class:"confirmation-header"},vt={class:"header-icon"},_t={class:"header-text"},yt={key:0},bt={key:1},St={key:2},kt={class:"understanding-content"},xt={key:0,class:"original-input"},Ct={class:"label"},wt={class:"value original-text"},It={key:1,class:"corrected-input"},Ot={class:"label"},Mt={class:"value corrected-text"},zt={class:"intent-section"},Et={class:"label"},Tt={class:"value"},At={key:2,class:"key-points-section"},Pt={class:"label"},Rt={class:"key-points-list"},Ft={key:3,class:"correction-section"},jt={class:"label"},qt={class:"value correction-text"},Lt={key:0,class:"streaming-indicator"},Dt={key:0,class:"streaming-tokens"},Nt={key:1,class:"action-buttons"},Vt={key:2,class:"correction-input-section"},Wt={class:"correction-actions"};function Bt(a,d,t,e,n,i){const s=R("a-button"),o=R("a-textarea");return c(),m("div",gt,[u("div",pt,[u("div",vt,[e.isConfirmed?(c(),M(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):e.isCorrected?(c(),M(e.ExclamationCircleOutlined,{key:1,style:{color:"#faad14"}})):(c(),M(e.BulbOutlined,{key:2,style:{color:"#1890ff"}}))]),u("div",_t,[e.isConfirmed?(c(),m("span",yt,h(a.$t("chat.intent.confirmed")),1)):e.isCorrected?(c(),m("span",bt,h(a.$t("chat.intent.corrected")),1)):(c(),m("span",St,h(t.message.content),1))])]),u("div",kt,[e.hasCorrectedInput?(c(),m("div",xt,[u("div",Ct,h(a.$t("chat.intent.label.original")),1),u("div",wt,h(e.originalInput),1)])):_("v-if",!0),e.hasCorrectedInput?(c(),m("div",It,[u("div",Ot,h(a.$t("chat.intent.label.understood")),1),u("div",Mt,h(e.correctedInput),1)])):_("v-if",!0),u("div",zt,[u("div",Et,"🎯 "+h(a.$t("chat.intent.label.intent")),1),u("div",Tt,h(e.intent),1)]),e.keyPoints&&e.keyPoints.length>0?(c(),m("div",At,[u("div",Pt,"📝 "+h(a.$t("chat.intent.label.keyPoints")),1),u("ul",Rt,[(c(!0),m(L,null,Q(e.keyPoints,(p,f)=>(c(),m("li",{key:f},h(p),1))),128))])])):_("v-if",!0),e.correction?(c(),m("div",Ft,[u("div",jt,"📝 "+h(a.$t("chat.intent.label.correction")),1),u("div",qt,h(e.correction),1)])):_("v-if",!0)]),e.isStreaming?(c(),m("div",Lt,[v(e.LoadingOutlined,{spin:""}),u("span",null,h(a.$t("chat.intent.status.understanding")),1),e.streamingTokens>0?(c(),m("span",Dt,"· "+h(e.streamingTokens)+" tokens",1)):_("v-if",!0)])):!e.isConfirmed&&!e.isCorrected?(c(),m("div",Nt,[v(s,{type:"primary",onClick:e.handleConfirm},{default:I(()=>[v(e.CheckOutlined),z(" "+h(a.$t("chat.intent.action.confirm")),1)]),_:1}),v(s,{onClick:e.handleCorrect},{default:I(()=>[v(e.EditOutlined),z(" "+h(a.$t("chat.intent.action.correct")),1)]),_:1})])):_("v-if",!0),e.showCorrectionInput?(c(),m("div",Vt,[v(o,{value:e.correctionInput,"onUpdate:value":d[0]||(d[0]=p=>e.correctionInput=p),placeholder:a.$t("chat.intent.action.correctPlaceholder"),"auto-size":{minRows:2,maxRows:6}},null,8,["value","placeholder"]),u("div",Wt,[v(s,{type:"primary",size:"small",onClick:e.handleSubmitCorrection},{default:I(()=>[v(e.CheckOutlined),z(" "+h(a.$t("chat.intent.action.submitCorrection")),1)]),_:1}),v(s,{size:"small",onClick:e.handleCancelCorrection},{default:I(()=>[v(e.CloseOutlined),z(" "+h(a.$t("chat.intent.action.cancelCorrection")),1)]),_:1})])])):_("v-if",!0)])}const Qt=Y(mt,[["render",Bt],["__scopeId","data-v-62ebcfe5"],["__file","/tmp/cc-web-panel-7zjqPd/repo/packages/web-panel/src/components/IntentConfirmationMessage.vue"]]),Ut={__name:"Chat",setup(a,{expose:d}){d();const{t,tm:e,rt:n}=he(),i=ce()||null,s=de()||null,o=window.__CC_CONFIG__||{},p=b(()=>o.mode==="project"),f=fe(),S=new Set,x=A(null),O=A(""),g=b(()=>f.contextMode);function y(r){f.setContextMode(r)}const l=b(()=>f.intentEnabled);function C(r){f.setIntentEnabled(r)}const k=b(()=>f.currentSessionId),E=b(()=>k.value?f.getMessages(k.value):[]),P=b(()=>{const r=f.streaming[k.value];return r?.active?r.content:null}),W=b(()=>{const r=E.value;return P.value?[...r,{role:"assistant",content:P.value,_streaming:!0,timestamp:Date.now()}]:r}),U=b(()=>f.pendingQuestion[k.value]),T=b(()=>f.getIsLoading(k.value));function D(r){if(!r)return"";const w=new Date(r);return`${String(w.getHours()).padStart(2,"0")}:${String(w.getMinutes()).padStart(2,"0")}`}const K=ue(new Set);function _e(r){K.has(r)?K.delete(r):K.add(r)}function ye(r,w){return{id:`tool-${w}`,label:r.tool||t("chat.tool.unknownTool"),detail:ne(r),status:r.status==="done"?"done":"running"}}function ne(r){if(r.status==="running"){const q=r.input&&typeof r.input=="object"?Object.keys(r.input):[];return q.length?t("chat.tool.argsPreview",{n:q.length,key:q[0]}):t("chat.tool.running")}if(r.result==null)return t("chat.tool.done");const F=(typeof r.result=="string"?r.result:JSON.stringify(r.result)).split(`
|
|
5
|
+
`)[0]||"";return F.length>48?`${F.slice(0,48)}…`:F||t("chat.tool.done")}async function be(r){await f.createSession(r)}async function Z(){if(!O.value.trim()||T.value||!k.value)return;const r=O.value;O.value="",await f.submitUserInput(k.value,r)}function Se(r){f.confirmIntent(k.value,r.messageId)}function ke(r){f.correctIntent(k.value,r.messageId,r.correction)}const se=b(()=>{const r=f.customQuickPrompts;if(Array.isArray(r)&&r.length>0)return r;const w=e("chat.quickPrompts");return w?Object.values(w).map(F=>n(F)):[]}),G=A(!1),$=A("");function xe(){$.value=se.value.join(`
|
|
6
|
+
`),G.value=!0}function Ce(){const r=$.value.split(`
|
|
7
|
+
`).map(w=>w.trim()).filter(w=>w.length>0);f.setCustomQuickPrompts(r.length>0?r:null),G.value=!1}function we(){f.setCustomQuickPrompts(null),G.value=!1}const Ie=b(()=>t(`chat.empty.hint.${g.value}`));async function Oe(r){k.value||await f.createSession("chat"),O.value=r,await Z()}function Me(r){f.answerQuestion(k.value,r)}V([E,P],()=>{j(()=>{x.value?.scrollToBottom()})},{deep:!0});async function ee({prompt:r,autoSend:w,session:F,token:q}){if(!r||S.has(q))return;S.add(q);let N=F||k.value;N?N!==k.value&&await f.switchSession(N):N=await f.createSession("chat"),O.value=r,w!==!1&&(await j(),await Z())}function ie(){const r=i?.query||{};if(!r.prompt)return null;const w=Array.isArray(r.prompt)?r.prompt[0]:String(r.prompt);if(!w.trim())return null;const q=(Array.isArray(r.autoSend)?r.autoSend[0]:r.autoSend)!=="false",N=Array.isArray(r.session)?r.session[0]:r.session,ae=N?String(N):null,ze=`query::${w}::${ae||""}::${q}`;return{prompt:w,autoSend:q,session:ae,token:ze}}async function J(){const r=ie();if(r){await ee(r),s&&i&&s.replace({path:i.path,query:{}}).catch(()=>{});return}const w=f.pendingAutoSend;if(w?.prompt){const F=w.token||`staged::${w.prompt}::${Date.now()}`;await ee({...w,token:F}),f.clearAutoSend?.()}}i&&V(()=>[i.query.prompt,i.query.autoSend,i.query.session],()=>{J()},{immediate:!1}),V(()=>f.pendingAutoSend,()=>{J()},{deep:!0}),X(async()=>{await f.loadSessions(),await J()});const oe={t,tm:e,rt:n,route:i,router:s,cfg:o,isProject:p,chatStore:f,consumedAutoSendTokens:S,virtualListRef:x,inputText:O,contextMode:g,setContextMode:y,intentEnabled:l,setIntentEnabled:C,currentSessionId:k,currentMessages:E,streamingContent:P,messagesWithStreaming:W,pendingQuestion:U,isLoading:T,formatTime:D,expandedTools:K,toggleToolDetail:_e,toToolItem:ye,toolDetail:ne,newSession:be,sendMessage:Z,handleIntentConfirm:Se,handleIntentCorrect:ke,QUICK_PROMPTS:se,editingPrompts:G,promptDraft:$,openPromptEditor:xe,savePromptEditor:Ce,resetPromptsToDefault:we,emptyHint:Ie,usePrompt:Oe,answerQuestion:Me,consumeAutoSend:ee,readAutoSendFromQuery:ie,handleAutoSendIfPending:J,ref:A,reactive:ue,computed:b,watch:V,nextTick:j,onMounted:X,get useRoute(){return ce},get useRouter(){return de},get MessageOutlined(){return Je},get RobotOutlined(){return Ge},get SendOutlined(){return Ke},get FolderOutlined(){return He},get GlobalOutlined(){return Ue},get UserOutlined(){return Qe},get FileTextOutlined(){return Be},get useI18n(){return he},get useChatStore(){return fe},ToolInvocationCard:it,MarkdownRenderer:Xe,VirtualMessageList:ft,IntentConfirmationMessage:Qt,get MessageType(){return Ae}};return Object.defineProperty(oe,"__isScriptSetup",{enumerable:!1,value:!0}),oe}},Ht={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},Kt={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},Gt={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},Jt=["title"],Xt={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},Yt={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},Zt={style:{flex:"1","overflow-y":"auto",padding:"8px"}},$t=["onClick"],en={class:"session-icon"},tn={class:"session-info"},nn={class:"session-title"},sn={class:"session-meta"},on={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},an={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},ln={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},rn={style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},cn={style:{"font-size":"13px",color:"var(--text-muted)"}},dn={style:{"margin-top":"24px",display:"flex",gap:"12px"}},un={key:1,class:"chat-header"},hn={class:"chat-intent-toggle"},fn={class:"chat-intent-toggle-label"},mn={key:2,class:"chat-area-body"},gn={key:0,class:"chat-empty-prompts"},pn={class:"empty-title"},vn={class:"empty-hint"},_n={class:"quick-prompts"},yn={class:"system-banner"},bn={class:"tool-msg"},Sn={key:0,class:"tool-detail"},kn={class:"tool-detail__pre tool-detail__pre--input"},xn={key:0,class:"tool-detail__result"},Cn={class:"tool-detail__pre tool-detail__pre--result"},wn={class:"msg-body"},In={class:"msg-meta-row"},On={class:"msg-role"},Mn={class:"msg-time"},zn={key:0,class:"msg-tokens"},En={key:0,class:"bubble user"},Tn={key:2,class:"question-card"},An={class:"question-text"},Pn={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Rn={key:3,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},Fn={style:{display:"flex",gap:"8px","align-items":"flex-end"}},jn={style:{"margin-bottom":"8px","font-size":"12px",color:"var(--text-muted)"}},qn={style:{"margin-top":"8px"}};function Ln(a,d,t,e,n,i){const s=R("a-button"),o=R("a-radio-button"),p=R("a-radio-group"),f=R("a-switch"),S=R("a-tooltip"),x=R("a-avatar"),O=R("a-input-search"),g=R("a-textarea"),y=R("a-modal");return c(),m("div",Ht,[_(" Session Sidebar "),u("div",Kt,[_(" Project/Global Scope Indicator "),e.isProject?(c(),m("div",Gt,[v(e.FolderOutlined),u("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:e.cfg.projectRoot},h(e.cfg.projectName||a.$t("chat.scope.fallbackProjectName")),9,Jt)])):(c(),m("div",Xt,[v(e.GlobalOutlined),u("span",null,h(a.$t("chat.scope.globalSessions")),1)])),u("div",Yt,[v(s,{type:"primary",size:"small",style:{flex:"1"},onClick:d[0]||(d[0]=l=>e.newSession("chat"))},{icon:I(()=>[v(e.MessageOutlined)]),default:I(()=>[z(" "+h(a.$t("chat.newChat")),1)]),_:1}),v(s,{size:"small",style:{flex:"1"},onClick:d[1]||(d[1]=l=>e.newSession("agent"))},{icon:I(()=>[v(e.RobotOutlined)]),default:I(()=>[z(" "+h(a.$t("chat.newAgent")),1)]),_:1})]),u("div",Zt,[(c(!0),m(L,null,Q(e.chatStore.sessions,l=>(c(),m("div",{key:l.id,class:H(["session-item",{active:l.id===e.chatStore.currentSessionId}]),onClick:C=>e.chatStore.switchSession(l.id)},[u("span",en,h(l.type==="agent"?"🤖":"💬"),1),u("div",tn,[u("div",nn,h(l.title||a.$t("chat.session.untitled")),1),u("div",sn,h(a.$t("chat.session.messageCountSuffix",{n:l.messageCount||0})),1)])],10,$t))),128)),e.chatStore.sessions.length?_("v-if",!0):(c(),m("div",on,h(a.$t("chat.sidebarEmpty")),1))])]),_(" Chat Area "),u("div",an,[_(" Empty State "),e.currentSessionId?_("v-if",!0):(c(),m("div",ln,[d[7]||(d[7]=u("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),u("div",rn,h(a.$t("chat.empty.title")),1),u("div",cn,h(a.$t("chat.empty.subtitle")),1),u("div",dn,[v(s,{type:"primary",onClick:d[2]||(d[2]=l=>e.newSession("chat"))},{default:I(()=>[z(h(a.$t("chat.empty.newChat")),1)]),_:1}),v(s,{style:{},onClick:d[3]||(d[3]=l=>e.newSession("agent"))},{default:I(()=>[z(h(a.$t("chat.empty.newAgent")),1)]),_:1})])])),_(" Chat header: context mode + intent toggle "),e.currentSessionId?(c(),m("div",un,[v(p,{value:e.contextMode,size:"small","button-style":"solid","onUpdate:value":e.setContextMode},{default:I(()=>[v(o,{value:"project",disabled:!e.isProject},{default:I(()=>[v(e.FolderOutlined),z(" "+h(a.$t("chat.contextMode.project")),1)]),_:1},8,["disabled"]),v(o,{value:"file",disabled:""},{default:I(()=>[v(e.FileTextOutlined),z(" "+h(a.$t("chat.contextMode.file")),1)]),_:1}),v(o,{value:"global"},{default:I(()=>[v(e.GlobalOutlined),z(" "+h(a.$t("chat.contextMode.global")),1)]),_:1})]),_:1},8,["value"]),e.contextMode!=="global"?(c(),M(S,{key:0,title:a.$t("chat.intent.toggleHint"),placement:"bottom"},{default:I(()=>[u("label",hn,[v(f,{checked:e.intentEnabled,size:"small","onUpdate:checked":e.setIntentEnabled},null,8,["checked"]),u("span",fn,h(a.$t("chat.intent.toggleLabel")),1)])]),_:1},8,["title"])):_("v-if",!0)])):_("v-if",!0),_(" Messages "),e.currentSessionId?(c(),m("div",mn,[_(" Empty state with quick prompts when session has no messages "),e.messagesWithStreaming.length===0?(c(),m("div",gn,[d[8]||(d[8]=u("div",{class:"empty-icon"},"💬",-1)),u("div",pn,h(a.$t("chat.empty.startTitle")),1),u("div",vn,h(e.emptyHint),1),u("div",_n,[(c(!0),m(L,null,Q(e.QUICK_PROMPTS,l=>(c(),M(s,{key:l,size:"small",class:"quick-prompt-btn",onClick:C=>e.usePrompt(l)},{default:I(()=>[z(h(l),1)]),_:2},1032,["onClick"]))),128)),v(s,{size:"small",type:"dashed",class:"quick-prompt-btn quick-prompt-edit",onClick:e.openPromptEditor},{default:I(()=>[z(h(a.$t("chat.quickPromptsEditor.openButton")),1)]),_:1})])])):(c(),M(e.VirtualMessageList,{key:1,ref:"virtualListRef",messages:e.messagesWithStreaming,"estimate-size":120,class:"chat-virtual-list"},{default:I(({message:l,index:C})=>[u("div",{class:H(["message-row",l.role])},[_(" Intent confirmation card (V5 parity) "),l.type===e.MessageType.INTENT_CONFIRMATION?(c(),M(e.IntentConfirmationMessage,{key:0,message:l,onConfirm:e.handleIntentConfirm,onCorrect:e.handleIntentCorrect},null,8,["message"])):l.role==="system"?(c(),m(L,{key:1},[_(" System banner (follow-up intent feedback etc.) "),u("div",yn,h(l.content),1)],2112)):l.role==="tool"?(c(),m(L,{key:2},[_(" Tool message "),u("div",bn,[v(e.ToolInvocationCard,{item:e.toToolItem(l,C),expandable:"",expanded:e.expandedTools.has(C),onToggle:k=>e.toggleToolDetail(C)},null,8,["item","expanded","onToggle"]),e.expandedTools.has(C)?(c(),m("div",Sn,[u("pre",kn,h(JSON.stringify(l.input,null,2)),1),l.result?(c(),m("div",xn,[u("pre",Cn,h(typeof l.result=="string"?l.result:JSON.stringify(l.result,null,2)),1)])):_("v-if",!0)])):_("v-if",!0)])],2112)):(c(),m(L,{key:3},[_(" User / Assistant message with avatar + meta row "),u("div",{class:H(["msg-with-avatar",l.role])},[v(x,{size:32,style:te({backgroundColor:l.role==="user"?"#1890ff":"#52c41a",flexShrink:0})},{icon:I(()=>[l.role==="user"?(c(),M(e.UserOutlined,{key:0})):(c(),M(e.RobotOutlined,{key:1}))]),_:2},1032,["style"]),u("div",wn,[u("div",In,[u("span",On,h(l.role==="user"?a.$t("chat.role.me"):"AI"),1),u("span",Mn,h(e.formatTime(l.timestamp)),1),l.tokens?(c(),m("span",zn,"· "+h(l.tokens)+" tokens",1)):_("v-if",!0)]),l.role==="user"?(c(),m("div",En,h(l.content),1)):(c(),M(e.MarkdownRenderer,{key:1,class:H(["bubble assistant",{streaming:l._streaming}]),content:l.content},null,8,["class","content"]))])],2)],2112))],2)]),_:1},8,["messages"])),_(" Interactive Question (sticky below the list) "),e.pendingQuestion?(c(),m("div",Tn,[u("div",An,h(e.pendingQuestion.question),1),e.pendingQuestion.choices?.length?(c(),m("div",Pn,[(c(!0),m(L,null,Q(e.pendingQuestion.choices,l=>(c(),M(s,{key:l,size:"small",onClick:C=>e.answerQuestion(l)},{default:I(()=>[z(h(l),1)]),_:2},1032,["onClick"]))),128))])):(c(),M(O,{key:1,placeholder:a.$t("chat.input.answerPlaceholder"),"enter-button":a.$t("chat.input.send"),style:{"margin-top":"10px"},onSearch:e.answerQuestion},null,8,["placeholder","enter-button"]))])):_("v-if",!0)])):_("v-if",!0),_(" Input Area "),e.currentSessionId?(c(),m("div",Rn,[u("div",Fn,[v(g,{value:e.inputText,"onUpdate:value":d[4]||(d[4]=l=>e.inputText=l),placeholder:e.isLoading?a.$t("chat.input.loading"):a.$t("chat.input.placeholder"),"auto-size":{minRows:1,maxRows:6},disabled:e.isLoading,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:Ee(Te(e.sendMessage,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),v(s,{type:"primary",loading:e.isLoading,onClick:e.sendMessage,style:{height:"40px"}},{icon:I(()=>[v(e.SendOutlined)]),_:1},8,["loading"])])])):_("v-if",!0)]),_(` Custom quick-prompts editor (Improvement 4) — placed at root so the
|
|
8
|
+
chat-area-body's v-if/v-else pair stays unbroken. `),v(y,{open:e.editingPrompts,"onUpdate:open":d[6]||(d[6]=l=>e.editingPrompts=l),title:a.$t("chat.quickPromptsEditor.title"),"ok-text":a.$t("chat.quickPromptsEditor.save"),"cancel-text":a.$t("chat.quickPromptsEditor.cancel"),onOk:e.savePromptEditor},{default:I(()=>[u("div",jn,h(a.$t("chat.quickPromptsEditor.hint")),1),v(g,{value:e.promptDraft,"onUpdate:value":d[5]||(d[5]=l=>e.promptDraft=l),rows:8,placeholder:a.$t("chat.quickPromptsEditor.placeholder")},null,8,["value","placeholder"]),u("div",qn,[v(s,{size:"small",onClick:e.resetPromptsToDefault},{default:I(()=>[z(h(a.$t("chat.quickPromptsEditor.reset")),1)]),_:1})])]),_:1},8,["open","title","ok-text","cancel-text"])])}const Hn=Y(Ut,[["render",Ln],["__scopeId","data-v-ef077a5e"],["__file","/tmp/cc-web-panel-7zjqPd/repo/packages/web-panel/src/views/Chat.vue"]]);export{Hn as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-Bn1JzzAn.js";import{_ as k}from"./index-
|
|
1
|
+
import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-Bn1JzzAn.js";import{_ as k}from"./index-fk2Rjacw.js";import"./icons-DG5UD-6K.js";const N={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},T={class:"bubble"},q={class:"meta"},M={class:"actor"},R={class:"time"},V={class:"body"};function j(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",T,[n("div",q,[n("span",M,a(r.actorLabel),1),n("span",R,a(r.formattedTime),1)]),n("div",V,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const P=k(N,[["render",j],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-7zjqPd/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{P as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as o,i as E,f as V,P as W}from"./index-
|
|
1
|
+
import{h as o,i as E,f as V,P as W}from"./index-fk2Rjacw.js";import{d as F,r as f,w as I,c as h}from"./vendor-Bn1JzzAn.js";import{i as M}from"./initDefaultProps-CvyYJd7z.js";var R=function(t,l){var c={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&l.indexOf(n)<0&&(c[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(t);a<n.length;a++)l.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(t,n[a])&&(c[n[a]]=t[n[a]]);return c};const T={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:W.any,required:Boolean},J=F({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:M(T,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup(t,l){let{attrs:c,emit:n,expose:a}=l;const d=f(t.checked===void 0?t.defaultChecked:t.checked),s=f();I(()=>t.checked,()=>{d.value=t.checked}),a({focus(){var e;(e=s.value)===null||e===void 0||e.focus()},blur(){var e;(e=s.value)===null||e===void 0||e.blur()}});const i=f(),y=e=>{if(t.disabled)return;t.checked===void 0&&(d.value=e.target.checked),e.shiftKey=i.value;const u={target:o(o({},t),{checked:e.target.checked}),stopPropagation(){e.stopPropagation()},preventDefault(){e.preventDefault()},nativeEvent:e};t.checked!==void 0&&(s.value.checked=!!t.checked),n("change",u),i.value=!1},k=e=>{n("click",e),i.value=e.shiftKey};return()=>{const{prefixCls:e,name:u,id:m,type:g,disabled:b,readonly:x,tabindex:C,autofocus:O,value:P,required:S}=t,_=R(t,["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"]),{class:j,onFocus:B,onBlur:w,onKeydown:K,onKeypress:N,onKeyup:D}=c,v=o(o({},_),c),$=Object.keys(v).reduce((p,r)=>((r.startsWith("data-")||r.startsWith("aria-")||r==="role")&&(p[r]=v[r]),p),{}),q=E(e,j,{[`${e}-checked`]:d.value,[`${e}-disabled`]:b}),A=o(o({name:u,id:m,type:g,readonly:x,disabled:b,tabindex:C,class:`${e}-input`,checked:!!d.value,autofocus:O,value:P},$),{onChange:y,onClick:k,onFocus:B,onBlur:w,onKeydown:K,onKeypress:N,onKeyup:D,required:S});return h("span",{class:q},[h("input",V({ref:s},A),null),h("span",{class:`${e}-inner`},null)])}}});export{J as V};
|