chainlesschain 0.166.141 → 0.166.143
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 +249 -14
- package/package.json +2 -2
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
- package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-BefmcZw2.js → AIOps-DNySV2Kf.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BBlS9rmj.js → ActionButton-ByFuxJsa.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DfNjXT9e.js → Analytics-ETbdywk5.js} +1 -1
- package/src/assets/web-panel/assets/{AppLayout-CIBZPPMS.js → AppLayout-CuHekZaP.js} +2 -2
- package/src/assets/web-panel/assets/{Artifacts-CE66rTTZ.js → Artifacts-BJJq2BDq.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-DOC8Lt8U.js → Audit-DXrietv8.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-9TMG041Q.js → BackgroundAgents-CFB1fxsr.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-us3KWb9F.js → Backup-VLtflRmp.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-D6Q95Wr5.js → BaseInput-BbqBaS2r.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BPrM5ARp.js → Chat-t0g7BXL8.js} +1 -1
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-Drs9vSc4.js → ChatBubbleRenderer-JNFsjV0j.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-DqZGMV0o.js → Checkbox-BCSclHQb.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CmolL6wr.js → Codegen-BcyINEHT.js} +1 -1
- package/src/assets/web-panel/assets/{Col-BwHSmoYQ.js → Col-C-0WNlwS.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DGWqobpd.js → Community-DxZeoORX.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-t_yy09-r.js → Compact-BNnX4jpz.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-D0S8-EsN.js → Compliance-KnjHtn9C.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Y1LiuRwP.js → Cowork-CDyCrhbX.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-FTqEw7QV.js → Cron-DxpS3D1G.js} +1 -1
- package/src/assets/web-panel/assets/{Crosschain-C3rPZ4Qu.js → Crosschain-BSzTZYyc.js} +1 -1
- package/src/assets/web-panel/assets/{DID-Ba2zySM-.js → DID-Bfj9Vdne.js} +1 -1
- package/src/assets/web-panel/assets/{Dashboard-D6xyN2ND.js → Dashboard-CcERVdgo.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BF4QuXJw.js → Dropdown-BtYXAz6E.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-s9dUxq14.js → EmailListRenderer-fdCMeGXU.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-CoAKOfqZ.js → EvolutionSettings-LHxhcuF2.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-CEznwH1c.js → FamilyGuardDashboard-MIgtLsos.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-rIzOt8-a.js → Federation-9-TOztwa.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BARFiExr.js → FormItemContext-BKcwEE6w.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-DI0A4swS.js → GenericCardRenderer-DJBPVUK2.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DdmysND4.js → Git-C_XYISjG.js} +1 -1
- package/src/assets/web-panel/assets/{Governance-DrdhwUz2.js → Governance-DWsbPrwq.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Scm8tumd.js → Inference-D0_bYket.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-_6bgPs4W.js → KnowledgeGraph-BoA3VQlw.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-DW_v7bSo.js → Logs-LEGItChf.js} +1 -1
- package/src/assets/web-panel/assets/{MarkdownRenderer-7JABuv1j.js → MarkdownRenderer-DOHVc-Uw.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-0h3YSvME.js → Marketplace-BKovl9NH.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-Byrg0Y3e.js → McpTools-D61ktoGb.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-Cyoq-o29.js → Memory-CllorS0l.js} +1 -1
- package/src/assets/web-panel/assets/{MobileBridge-ISIlploU.js → MobileBridge-D-dJ78bk.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-04EncaRx.js → MobileProjects-CaxMKkd3.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BMzkpyOF.js → Mtc-qEc62Qsx.js} +1 -1
- package/src/assets/web-panel/assets/{MtcAudit-Cx7BR5sz.js → MtcAudit-BY68jOZJ.js} +1 -1
- package/src/assets/web-panel/assets/{Multisig-D4pmkSX4.js → Multisig-eCCR8ELt.js} +1 -1
- package/src/assets/web-panel/assets/{NLProgramming-CCfaaWNu.js → NLProgramming-VtGv8pky.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Mq-1ZyaH.js → Notes-CPkYQySe.js} +1 -1
- package/src/assets/web-panel/assets/{NotificationSettings-rzf5V1TR.js → NotificationSettings-BuAvlHUu.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-OREUs5ue.js → OrderTableRenderer-CLf_HAGv.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-BQfOATgw.js → Organization-DjujhMbD.js} +1 -1
- package/src/assets/web-panel/assets/{Overflow-D7Pa6aaA.js → Overflow-RznznTS4.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CaJ79ZsC.js → P2P-DSa5ot0t.js} +1 -1
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CtimQQN3.js → PdhVaultBrowser-oSEh6vkf.js} +2 -2
- package/src/assets/web-panel/assets/{Permissions-AzmmkLZ0.js → Permissions-CdOZguX9.js} +1 -1
- package/src/assets/web-panel/assets/{PersonalDataHub-BRU8ME7z.js → PersonalDataHub-B4--6iEF.js} +1 -1
- package/src/assets/web-panel/assets/{Pipeline-BnNqutXh.js → Pipeline-BnI57jE8.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-gMyZcxsz.js → Privacy-C8MId3ad.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CkK-Fvr0.js → ProjectInit-DPGyYO8a.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectSettings-CGY_uiIX.js → ProjectSettings-qBMqaJaO.js} +1 -1
- package/src/assets/web-panel/assets/{Projects-DBNC7xXG.js → Projects-Bq87Syce.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-BVgWawtE.js → Providers-CVuG9Ugf.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DZILESCa.js → QrScannerModal-C94c8m3q.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DwRBzFWW.js → QuickAsk-BvfsXZ8s.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-B3VxvUih.js → Recommend-CoezBYH9.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-DM74lufU.js → RemoteSession-CcYC4v3u.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-DOOEuGHh.js → Reputation-diDbL4cO.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BZJYAo0S.js → Row-5qp3_fNS.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CYw44jcD.js → RssFeed-BCsMvpV4.js} +1 -1
- package/src/assets/web-panel/assets/{Search-CbypjDNG.js → Search-Br9nVxOp.js} +1 -1
- package/src/assets/web-panel/assets/{Security-0rSBDrXh.js → Security-BdOUzRfA.js} +1 -1
- package/src/assets/web-panel/assets/{Services-kqP79CBD.js → Services-Cp9TqzyN.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-BjxvGVfI.js → Skeleton-DSdWsUMR.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-SOoWyPCO.js → Skills-DRczAMTe.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-kdRVAT19.js → Sla-B6G_Vd8N.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DILtcMaJ.js → SpeechSettings-BCcLx5x4.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-C98Jauc4.js → SyncSettings-BFhwtxCp.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-Bw-KaQAs.js → Tasks-DGRE6VHO.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-CDJ027Hd.js → Templates-CJkJRFzd.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BqNV62UA.js → Tenant-CAOv6p00.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-B8aQ3GLO.js → Terminal-CDrwwrKj.js} +1 -1
- package/src/assets/web-panel/assets/{TimelineRenderer-BSpccq11.js → TimelineRenderer-DI0YE2SN.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BbGMoFO6.js → Tokens-DmqWTZSG.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-D75Mawa_.js → Trigger-CkXkhmjk.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BiK_Pk05.js → Trust-U8YJLcoJ.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Dv2xX_b9.js → UkeySign-BLTozMmr.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CdBWfeEE.js → VideoEditing-DHKyFlZa.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Cvrp4agg.js → Wallet-DapBxIQt.js} +1 -1
- package/src/assets/web-panel/assets/{WebAuthn-D0Htlf3v.js → WebAuthn-CkvG3yOr.js} +1 -1
- package/src/assets/web-panel/assets/{WorkflowEditor-nuUBOHIF.js → WorkflowEditor-cNLsinXP.js} +1 -1
- package/src/assets/web-panel/assets/{chat-C6MLShIo.js → chat-BzgkgfMC.js} +1 -1
- package/src/assets/web-panel/assets/{colors-9G5FqFOC.js → colors-BPpVKQsb.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-0M49EurU.js → compact-item-zepznuTv.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CiDDLED_.js → createContext-BRto-SQH.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-wZvUczmn.js → hasIn-CqsmU_n6.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0JZ_ccM.js → index-B-bNzvdU.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_XOMujL.js → index-B0Z6rfV-.js} +1 -1
- package/src/assets/web-panel/assets/{index-DwX9cOL6.js → index-B9_jRD2e.js} +1 -1
- package/src/assets/web-panel/assets/{index-DwUOiN8M.js → index-BEXKES7V.js} +1 -1
- package/src/assets/web-panel/assets/{index-8jz-X3xg.js → index-BGHd4D8F.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVV2mBbo.js → index-BLwY9y0X.js} +1 -1
- package/src/assets/web-panel/assets/{index-qJcOtd8J.js → index-B_l6gfDh.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6TAOS4G.js → index-BeBxP1M6.js} +1 -1
- package/src/assets/web-panel/assets/{index-C63qiwQz.js → index-BeSzdB7x.js} +1 -1
- package/src/assets/web-panel/assets/{index-k0BVfcwQ.js → index-BuBnM6Kz.js} +1 -1
- package/src/assets/web-panel/assets/{index-BXIY2BIN.js → index-Bz7pG8z3.js} +1 -1
- package/src/assets/web-panel/assets/{index-D51V5vmz.js → index-CBI-7Q3W.js} +1 -1
- package/src/assets/web-panel/assets/{index-BWTcG128.js → index-CTk9gY88.js} +1 -1
- package/src/assets/web-panel/assets/{index-sBsJaBmM.js → index-CdHXVSZ4.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dclwd_lj.js → index-CmPnDXx4.js} +1 -1
- package/src/assets/web-panel/assets/{index-BlcOkfzz.js → index-CnezE05k.js} +1 -1
- package/src/assets/web-panel/assets/{index-DOxTmc3k.js → index-CwkhrUmw.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cs66y4oC.js → index-CzoKAiyT.js} +3 -3
- package/src/assets/web-panel/assets/{index-BzeA3eRQ.js → index-DDPmr5Yr.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdaLWIz-.js → index-DEbAW3Ec.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvWRS-s7.js → index-DJSn3owP.js} +1 -1
- package/src/assets/web-panel/assets/{index-DN9t1qjW.js → index-DKa_jSfj.js} +1 -1
- package/src/assets/web-panel/assets/{index-BTCIIdoS.js → index-DUclk35X.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmS2P_eX.js → index-DXkw-nt5.js} +1 -1
- package/src/assets/web-panel/assets/{index-CoxzvhoN.js → index-D_-w4KkD.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cz1SAgnb.js → index-D_asIcU7.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfwJm0DU.js → index-Df_CY0We.js} +1 -1
- package/src/assets/web-panel/assets/{index-JhfNEldK.js → index-Dnvj_XU-.js} +1 -1
- package/src/assets/web-panel/assets/index-DruOFzuF.js +1 -0
- package/src/assets/web-panel/assets/{index-D9J_tLGk.js → index-DvGttIXQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DcZxOXd8.js → index-JrVhUwyh.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdUmgLxP.js → index-LVvzNdPa.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTy9gD3m.js → index-Q5sAV7wp.js} +1 -1
- package/src/assets/web-panel/assets/{index-CtbFv3Et.js → index-S8fkzbQ_.js} +1 -1
- package/src/assets/web-panel/assets/{index-BCfxxScC.js → index-Z6DBe2RU.js} +1 -1
- package/src/assets/web-panel/assets/{index-dJ_V_Fqy.js → index-faHHtBKj.js} +1 -1
- package/src/assets/web-panel/assets/index-hhOrZ6HO.js +1 -0
- package/src/assets/web-panel/assets/{index-DeHSwWVG.js → index-w36TkwyO.js} +1 -1
- package/src/assets/web-panel/assets/{index-D2wN6VIq.js → index-wbvZayBb.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DyIyjurJ.js → initDefaultProps-BlhbrsQk.js} +1 -1
- package/src/assets/web-panel/assets/{motion-B2D0PuTM.js → motion-UZx12NPM.js} +1 -1
- package/src/assets/web-panel/assets/{move-B22T5MnN.js → move-BTby5W4q.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-i4b7HNzF.js → mtc-parser-BOOaGiCg.js} +1 -1
- package/src/assets/web-panel/assets/{omit-ByNIr_gz.js → omit-BVylGzEr.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-_xP2RvxA.js → pickAttrs-Cp3Nflbr.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CVDvzK0z.js → placementArrow-BVXYvwH2.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CI1toXJ_.js → responsiveObserve-C67SbpBN.js} +1 -1
- package/src/assets/web-panel/assets/{slide-2_VosSRQ.js → slide-CnBvM22R.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CMiWWrZC.js → statusUtils-T8fy53tf.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DY8wTVCe.js → styleChecker-Bf7i4nlm.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DkdcgIyl.js → useFlexGapSupport-BUKk7jqw.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-gpl11PEF.js → useFs-T5lg6SpD.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DqnQ0H9y.js → usePersonalDataHub-Brvye8Tg.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CgY9xUvr.js → vnode-CK992ojP.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Ch0jan5_.js → zoom-CcABB_97.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/goal.js +340 -145
- package/src/commands/setup.js +17 -0
- package/src/data/changelog.json +26 -0
- package/src/lib/llm-onboarding-catalog.json +4 -3
- package/src/lib/plugin-runtime/cli-goal-capabilities.js +29 -0
- package/src/lib/plugin-runtime/cli-goal-draft-request.js +25 -15
- package/src/lib/plugin-runtime/cli-goal-drafts.js +78 -35
- package/src/lib/plugin-runtime/cli-goal-event-history.js +284 -0
- package/src/lib/plugin-runtime/cli-goal-events.js +175 -0
- package/src/lib/plugin-runtime/cli-goal-extension-host.js +21 -13
- package/src/lib/plugin-runtime/cli-project-goal-events.js +212 -0
- package/src/lib/plugin-runtime/examples/goal-project-observer/plugin.json +20 -0
- package/src/lib/plugin-runtime/examples/goal-status-observer/plugin.json +17 -0
- package/src/lib/plugin-runtime/examples/goal-task-creator/README.md +60 -0
- package/src/lib/plugin-runtime/examples/goal-task-creator/plugin.json +13 -0
- package/src/lib/plugin-runtime/examples/project-delivery-assistant/README.md +125 -0
- package/src/lib/plugin-runtime/examples/project-delivery-assistant/plugin.json +8 -8
- package/src/lib/plugin-runtime/goal-extensions.js +17 -0
- package/src/lib/project-goal-connection.js +126 -30
- package/src/lib/project-goal-draft-connection.js +18 -11
- package/src/assets/web-panel/assets/index-C101Sec6.js +0 -1
- package/src/assets/web-panel/assets/index-D23TaGOp.js +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{f as O,r as K,o as ge,x as ft,K as p,L as c,M as g,c as e,N as t,u as a,R as l,O as i,P as s,Q as C,F as V,Y as it,Z as J,S as M,I as lt,e as kt,_ as _t,w as gt,H as vt,$ as ht}from"./vendor-BXcBOG8b.js";import{u as ve,_ as he,E as bt,a as wt,b as Lt,T as $t,c as Ot,d as G}from"./index-
|
|
1
|
+
import{f as O,r as K,o as ge,x as ft,K as p,L as c,M as g,c as e,N as t,u as a,R as l,O as i,P as s,Q as C,F as V,Y as it,Z as J,S as M,I as lt,e as kt,_ as _t,w as gt,H as vt,$ as ht}from"./vendor-BXcBOG8b.js";import{u as ve,_ as he,E as bt,a as wt,b as Lt,T as $t,c as Ot,d as G}from"./index-CzoKAiyT.js";import{u as q}from"./useShellMode-CgR0wCYM.js";import{B as _e,R as St,M as ye,F as Y,G as te,D as ae,h as we,i as oe,j as ne,k as se,A as Le,N as $e,l as Oe,m as Se,n as ie,o as Ce,p as Ee,S as Ae,q as Re,r as Ne,s as le,t as je,u as Te,v as Be,w as De,U as Me,x as Z,y as Pe,z as Ue,H as Ie,P as Ke,J as ze,K as re,O as ue,Q as I,V as Fe,W as Ve,X as qe,Y as We,Z as ce,_ as de,$ as He,a0 as Je,a1 as pe,a2 as Ge,a3 as Ye,a4 as Ze,a5 as Qe,a6 as Xe,a7 as xe,a8 as et,a9 as tt,aa as at,ab as ot,ac as Ct,ad as nt,e as Et}from"./icons-DlxlFL4g.js";import At from"./index-DEbAW3Ec.js";import"./KeyCode-D63Tfrq7.js";import"./omit-BVylGzEr.js";import"./pickAttrs-Cp3Nflbr.js";import"./initDefaultProps-BlhbrsQk.js";import"./motion-UZx12NPM.js";import"./raf-Deuc0E8-.js";import"./index-BLwY9y0X.js";import"./index-Z6DBe2RU.js";import"./isVisible-C7tPsqfj.js";import"./useState-Dlgl7fUg.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./compact-item-zepznuTv.js";import"./createContext-BRto-SQH.js";import"./Compact-BNnX4jpz.js";import"./_getTag-BVc6NQ_K.js";import"./styleChecker-Bf7i4nlm.js";import"./zoom-CcABB_97.js";import"./ActionButton-ByFuxJsa.js";import"./vnode-CK992ojP.js";const Rt=""+new URL("logo-DBCYUiWP.png",import.meta.url).href,$={notifications:K([]),unreadCount:K(0)};function Q(h){if(h&&h.ok===!1)throw new Error(h.error||"notification handler failed");return h?.result??h}function Nt(){const h=ve();async function T({limit:u=50,offset:d=0,isRead:k}={}){if(!q().isEmbedded)return $.notifications.value=[],$.unreadCount.value=0,$.notifications.value;const y=await h.sendRaw({type:"notification.list",limit:u,offset:d,isRead:k},15e3),w=Q(y);if(w?.success===!1)throw new Error(w.error||"notification.list failed");return $.notifications.value=Array.isArray(w?.notifications)?w.notifications:[],await E(),$.notifications.value}async function E(){if(!q().isEmbedded)return $.unreadCount.value=0,0;const u=await h.sendRaw({type:"notification.unread-count"},1e4),d=Q(u);return $.unreadCount.value=Number(d?.count)||0,$.unreadCount.value}async function _(u){if(u==null||u==="")throw new Error("id is required");if(!q().isEmbedded)return;const d=await h.sendRaw({type:"notification.mark-read",id:u},1e4),k=Q(d);if(k?.success===!1)throw new Error(k.error||"notification.mark-read failed");const y=$.notifications.value.find(w=>w.id===u);y&&(y.is_read=1),await E()}async function S(){if(!q().isEmbedded)return;const u=await h.sendRaw({type:"notification.mark-all-read"},1e4),d=Q(u);if(d?.success===!1)throw new Error(d.error||"notification.mark-all-read failed");for(const k of $.notifications.value)k.is_read=1;$.unreadCount.value=0}async function b(u,d=""){if(!q().isEmbedded)throw new Error("桌面通知仅在嵌入式 web-shell 中可用");const k=await h.sendRaw({type:"notification.send-desktop",title:u,body:d},1e4),y=Q(k);if(y?.success===!1)throw new Error(y.error||"notification.send-desktop failed")}return{notifications:O(()=>$.notifications.value),unreadCount:O(()=>$.unreadCount.value),refresh:T,refreshUnreadCount:E,markRead:_,markAllRead:S,sendDesktop:b}}const jt={class:"notif-toolbar"},Tt={class:"notif-body"},Bt={key:2,class:"notif-list"},Dt=["onClick"],Mt={class:"notif-row"},Pt={class:"notif-title"},Ut={class:"notif-time"},It={key:0,class:"notif-message"},Kt={__name:"NotificationBell",setup(h){const T=K(!1),E=K("all"),_=K(!1),{notifications:S,unreadCount:b,refresh:u,markRead:d,markAllRead:k}=Nt();function y(){N()}ge(()=>{window.addEventListener("cc:open-notification-drawer",y)}),ft(()=>{window.removeEventListener("cc:open-notification-drawer",y)});const w=O(()=>E.value==="unread"?S.value.filter(m=>!m.is_read):S.value);async function A(){if(q().isEmbedded){_.value=!0;try{await u({limit:100})}catch{}finally{_.value=!1}}}async function N(){T.value=!0,await A()}async function j(m){if(!m.is_read)try{await d(m.id)}catch{}}async function L(){try{await k()}catch(m){console.warn("[NotificationBell] markAllRead failed:",m?.message||m)}}function R(m){if(!m)return"";const f=typeof m=="string"?Date.parse(m):Number(m);if(!Number.isFinite(f))return String(m);const B=Date.now()-f,z=6e4,P=60*z,W=24*P;return B<z?"刚刚":B<P?`${Math.floor(B/z)} 分钟前`:B<W?`${Math.floor(B/P)} 小时前`:new Date(f).toLocaleDateString()}return(m,f)=>{const B=p("a-badge"),z=p("a-tooltip"),P=p("a-radio-button"),W=p("a-radio-group"),H=p("a-space"),X=p("a-button"),me=p("a-empty"),fe=p("a-spin"),ke=p("a-drawer");return c(),g(V,null,[e(z,{title:"通知"},{default:t(()=>[e(B,{count:a(b),"overflow-count":99,offset:[-4,4]},{default:t(()=>[l("button",{type:"button",class:"notif-bell-btn","aria-label":"通知",onClick:N},[e(a(_e))])]),_:1},8,["count"])]),_:1}),e(ke,{open:T.value,"onUpdate:open":f[1]||(f[1]=v=>T.value=v),title:"通知中心",placement:"right",width:400,"body-style":{padding:0}},{default:t(()=>[l("div",jt,[e(H,null,{default:t(()=>[e(W,{value:E.value,"onUpdate:value":f[0]||(f[0]=v=>E.value=v),size:"small","button-style":"solid"},{default:t(()=>[e(P,{value:"all"},{default:t(()=>[i("全部 ("+s(a(S).length)+")",1)]),_:1}),e(P,{value:"unread"},{default:t(()=>[i("未读 ("+s(a(b))+")",1)]),_:1})]),_:1},8,["value"])]),_:1}),e(H,null,{default:t(()=>[e(X,{size:"small",loading:_.value,onClick:A},{icon:t(()=>[e(a(St))]),_:1},8,["loading"]),e(X,{size:"small",disabled:a(b)===0,onClick:L},{default:t(()=>[...f[2]||(f[2]=[i(" 全部已读 ",-1)])]),_:1},8,["disabled"])]),_:1})]),l("div",Tt,[!_.value&&w.value.length===0?(c(),C(me,{key:0,description:"暂无通知",image:a(bt).PRESENTED_IMAGE_SIMPLE,style:{padding:"60px 0"}},null,8,["image"])):_.value?(c(),C(fe,{key:1,style:{display:"block",padding:"60px"}})):(c(),g("ul",Bt,[(c(!0),g(V,null,it(w.value,v=>(c(),g("li",{key:v.id,class:J(["notif-item",{unread:!v.is_read}]),onClick:n=>j(v)},[l("div",Mt,[l("div",Pt,s(v.title||v.message||"(无标题)"),1),l("span",Ut,s(R(v.created_at)),1)]),v.message&&v.title?(c(),g("div",It,s(v.message),1)):M("",!0)],10,Dt))),128))]))])]),_:1},8,["open"])],64)}}},zt=he(Kt,[["__scopeId","data-v-af539070"]]),Ft={key:0,class:"mbh-count"},Vt={__name:"MobileBridgeHeaderStatus",setup(h){function T(A){if(!A)return[];try{return JSON.parse(A)}catch{}const N=String(A).split(`
|
|
2
2
|
`),j=N.findIndex(L=>{const R=L.trim();if(!R)return!1;const m=R[0];if(m!=="["&&m!=="{")return!1;if(R.length===1)return!0;const f=R[1];return!(f>="A"&&f<="Z"||f>="a"&&f<="z")});if(j<0)return[];for(let L=N.length-1;L>=j;L--){const R=N[L].trim();if(/^[\]\}]/.test(R)&&!/^[\]\}][A-Za-z]/.test(R))try{return JSON.parse(N.slice(j,L+1).join(`
|
|
3
|
-
`))}catch{return[]}}return[]}const E=lt(),_=ve(),S=K([]);let b=null;const u=O(()=>S.value.length),d=O(()=>u.value===0?"var(--text-muted, #999)":"#52c41a"),k=O(()=>u.value===0?"尚未配对任何手机 — 点击进入配对":`已配对 ${u.value} 台手机 — 点击进入管理`);async function y(){if(_.status==="connected")try{const{output:A}=await _.execute("p2p devices --type mobile --json",1e4);S.value=T(A)||[]}catch{}}function w(){E.push("/mobile-bridge")}return ge(()=>{y(),b=setInterval(y,5e3)}),kt(()=>{b&&(clearInterval(b),b=null)}),(A,N)=>{const j=p("a-badge"),L=p("a-tooltip");return c(),C(L,{title:k.value},{default:t(()=>[e(j,{count:u.value,"show-zero":!1,"overflow-count":9,offset:[-2,4]},{default:t(()=>[l("button",{type:"button",class:J(["mbh-btn",{"mbh-btn--active":u.value>0}]),onClick:w},[e(a(ye),{style:_t({color:d.value,fontSize:"14px"})},null,8,["style"]),u.value>0?(c(),g("span",Ft,s(u.value),1)):M("",!0)],2)]),_:1},8,["count"])]),_:1},8,["title"])}}},qt=he(Vt,[["__scopeId","data-v-05eb475d"]]),Wt=["src"],Ht={key:0,class:"logo-text"},Jt={key:0,class:"mode-banner project"},Gt={class:"banner-info"},Yt={class:"banner-name"},Zt={class:"banner-sub"},Qt={key:1,class:"mode-banner global"},Xt={class:"banner-name"},xt=["title"],ea={class:"group-label"},ta={class:"group-label"},aa={class:"group-label"},oa={class:"group-label"},na={class:"group-label"},sa={class:"group-label"},ia={class:"group-label"},la={class:"group-label"},ra={class:"group-label"},ua={key:0,class:"footer-text"},ca={class:"header-left"},da={class:"header-right"},pa={class:"theme-switcher"},ya=["data-theme-key","onClick"],ma=["data-locale"],fa={class:"lang-switch-label"},ka={class:"version-tag"},st="cc.web-panel.sidebar.openKeys",_a={__name:"AppLayout",setup(h){const T=lt(),E=vt(),_=ve(),S=wt(),{t:b}=Lt(),u=q(),d=K(!1),k=window.__CC_CONFIG__||{},y=O(()=>k.mode==="project"),w="v5.0.3.144",A=O(()=>S.current),N=O(()=>S.config.vars["--menu-mode"]),j=O(()=>{const n=E.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp",quickask:"quick-ask",ukeysign:"ukey-sign"}[n]||n]}),L=["g-overview","g-config","g-data","g-advanced","g-enterprise","g-social","g-media","g-extension"];function R(){try{const n=localStorage.getItem(st);if(n){const r=JSON.parse(n);if(Array.isArray(r))return r.filter(o=>L.includes(o))}}catch{}return[...L]}const m=K(R());gt(m,n=>{try{localStorage.setItem(st,JSON.stringify(n))}catch{}},{deep:!0});const f=O(()=>_.status),B=O(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[_.status]||"default"),z=O(()=>{const n=`appLayout.footerStatus.${_.status}`,r=b(n);return r===n?b("appLayout.footerStatus.unknown"):r});function P(n){S.setTheme(n)}const{current:W,supported:H,setLocale:X}=Ot();function me(){const n=H[(H.indexOf(W.value)+1)%H.length];X(n)}async function fe(n){try{const r=await _.sendRaw({type:"window.open",role:n},1e4);if(r?.ok===!1){G.error(`打开失败:${r.error||"未知"}`);return}const o=r?.result??r;o?.reason==="role_reserved"?G.warning("该窗口角色被保留"):o?.reason}catch(r){G.error(`打开桌面窗口失败:${r.message||r}`)}}async function ke(){At.confirm({title:"切换到桌面壳?",content:"回到 V5/V6 桌面壳。完整 electronAPI 表面(UKey 硬件 / 原生对话框 / 系统设置等)会重新可用,但失去 web-panel 的 SPA 体验。保存后需要重启应用才生效。",okText:"切换并重启",cancelText:"取消",centered:!0,async onOk(){try{const n=await _.sendRaw({type:"shell.switch",target:"desktop"},5e3);if(n?.ok===!1)throw new Error(n.error||"shell.switch returned failure");G.loading({content:"正在重启…",duration:0})}catch(n){const r=n instanceof Error?n.message:String(n);G.error("切换失败:"+r)}}})}function v({key:n}){if(typeof n=="string"&&n.startsWith("desktop:")){fe(n);return}T.push({mcp:"/mcp"}[n]||`/${n}`)}return ge(()=>_.connect()),(n,r)=>{const o=p("a-menu-item"),D=p("a-sub-menu"),F=p("a-menu-divider"),rt=p("a-menu"),ut=p("a-badge"),ct=p("a-layout-sider"),x=p("a-tooltip"),dt=p("a-tag"),pt=p("a-layout-header"),yt=p("router-view"),mt=p("a-layout-content"),be=p("a-layout");return c(),C(be,{class:"app-root"},{default:t(()=>[e(ct,{collapsed:d.value,"onUpdate:collapsed":r[2]||(r[2]=U=>d.value=U),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[l("div",{class:J(["logo",{collapsed:d.value}])},[l("img",{src:a(Rt),alt:"ChainlessChain",class:"logo-icon"},null,8,Wt),d.value?M("",!0):(c(),g("span",Ht,"ChainlessChain"))],2),d.value?(c(),g("div",{key:1,class:"mode-icon-sm",title:y.value?a(k).projectName:n.$t("appLayout.scope.global")},[y.value?(c(),C(a(Y),{key:0,style:{color:"#1677ff"}})):(c(),C(a(te),{key:1,style:{color:"#722ed1"}}))],8,xt)):(c(),g(V,{key:0},[y.value?(c(),g("div",Jt,[e(a(Y),{class:"banner-icon"}),l("div",Gt,[l("div",Yt,s(a(k).projectName||n.$t("appLayout.scope.fallbackProject")),1),l("div",Zt,s(n.$t("appLayout.scope.projectPanel")),1)])])):(c(),g("div",Qt,[e(a(te),{class:"banner-icon"}),l("span",Xt,s(n.$t("appLayout.scope.global")),1)]))],64)),e(rt,{selectedKeys:j.value,"onUpdate:selectedKeys":r[0]||(r[0]=U=>j.value=U),openKeys:m.value,"onUpdate:openKeys":r[1]||(r[1]=U=>m.value=U),theme:N.value,mode:"inline","inline-collapsed":d.value,class:"side-menu",onClick:v},{default:t(()=>[d.value?(c(),g(V,{key:1},[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ae))]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(we))]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(oe))]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(se))]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(Le))]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a($e))]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(Oe))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"skills"},{icon:t(()=>[e(a(Se))]),_:1}),e(o,{key:"evolution-settings"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(Ce))]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(Ee))]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(Y))]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Ae))]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(_e))]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a(Re))]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(Ne))]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(le))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"notes"},{icon:t(()=>[e(a(je))]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Te))]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Be))]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(a(De))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(a(Me))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Pe))]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ue))]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ie))]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Ke))]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(oe))]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(a(ze))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"security"},{icon:t(()=>[e(a(re))]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(ue))]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(Fe))]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(a(Z))]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Ve))]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(qe))]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(We))]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(a(ye))]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(a(ce))]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(de))]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(le))]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(He))]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Je))]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(pe))]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Ge))]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ye))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"wallet"},{icon:t(()=>[e(a(Ze))]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Z))]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(Qe))]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ae))]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(Xe))]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(xe))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"community"},{icon:t(()=>[e(a(et))]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(tt))]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(at))]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(ot))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"rssfeed"},{icon:t(()=>[e(a(nt))]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(ue))]),_:1}),a(u).isEmbedded?(c(),g(V,{key:0},[e(F,{class:"divider-sm"}),e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(re))]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(de))]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(pe))]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(se))]),_:1})],64)):M("",!0)],64)):(c(),g(V,{key:0},[e(D,{key:"g-overview"},{title:t(()=>[l("span",ea,s(n.$t("appLayout.groups.overview")),1)]),default:t(()=>[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.dashboard")),1)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(we))]),default:t(()=>[i(s(n.$t("appLayout.items.chat")),1)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.quickAsk")),1)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(ne))]),default:t(()=>[i(s(n.$t("appLayout.items.cowork")),1)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.services")),1)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(Le))]),default:t(()=>[i(s(n.$t("appLayout.items.aiops")),1)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a($e))]),default:t(()=>[i(s(n.$t("appLayout.items.tokens")),1)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(Oe))]),default:t(()=>[i(s(n.$t("appLayout.items.logs")),1)]),_:1})]),_:1}),e(D,{key:"g-config"},{title:t(()=>[l("span",ta,s(n.$t("appLayout.groups.config")),1)]),default:t(()=>[e(o,{key:"skills"},{icon:t(()=>[e(a(Se))]),default:t(()=>[i(s(n.$t("appLayout.items.skills")),1)]),_:1}),e(o,{key:"evolution-settings"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.evolutionSettings")),1)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(Ce))]),default:t(()=>[i(s(n.$t("appLayout.items.providers")),1)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(Ee))]),default:t(()=>[i(s(n.$t("appLayout.items.mcp")),1)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(Y))]),default:t(()=>[i(s(n.$t("appLayout.items.projectSettings")),1)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Ae))]),default:t(()=>[i(s(n.$t("appLayout.items.speechSettings")),1)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(_e))]),default:t(()=>[i(s(n.$t("appLayout.items.notificationSettings")),1)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a(Re))]),default:t(()=>[i(s(n.$t("appLayout.items.syncSettings")),1)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(Ne))]),default:t(()=>[i(s(n.$t("appLayout.items.nlprog")),1)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.codegen")),1)]),_:1})]),_:1}),e(D,{key:"g-data"},{title:t(()=>[l("span",aa,s(n.$t("appLayout.groups.data")),1)]),default:t(()=>[e(o,{key:"notes"},{icon:t(()=>[e(a(je))]),default:t(()=>[i(s(n.$t("appLayout.items.notes")),1)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Te))]),default:t(()=>[i(s(n.$t("appLayout.items.search")),1)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.memory")),1)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Be))]),default:t(()=>[i(s(n.$t("appLayout.items.knowledge")),1)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(a(De))]),default:t(()=>[r[3]||(r[3]=i("个人数据中台",-1))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(a(Me))]),default:t(()=>[r[4]||(r[4]=i("数据浏览器",-1))]),_:1}),e(o,{key:"family-guard"},{icon:t(()=>[e(a(Z))]),default:t(()=>[r[5]||(r[5]=i("家庭守护",-1))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Pe))]),default:t(()=>[i(s(n.$t("appLayout.items.marketplace")),1)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ue))]),default:t(()=>[i(s(n.$t("appLayout.items.cron")),1)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ie))]),default:t(()=>[i(s(n.$t("appLayout.items.workflow")),1)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Ke))]),default:t(()=>[i(s(n.$t("appLayout.items.pipeline")),1)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.tasks")),1)]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(a(ne))]),default:t(()=>[r[6]||(r[6]=i("后台 Agent",-1))]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(a(ze))]),default:t(()=>[r[7]||(r[7]=i("交付物",-1))]),_:1})]),_:1}),e(D,{key:"g-advanced"},{title:t(()=>[l("span",oa,s(n.$t("appLayout.groups.advanced")),1)]),default:t(()=>[e(o,{key:"security"},{icon:t(()=>[e(a(re))]),default:t(()=>[i(s(n.$t("appLayout.items.security")),1)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(ue))]),default:t(()=>[i(s(n.$t("appLayout.items.ukeySign")),1)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.trust")),1)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(Fe))]),default:t(()=>[i(s(n.$t("appLayout.items.audit")),1)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.mtc")),1)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.mtcAudit","MTC 审计")),1)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(a(Z))]),default:t(()=>[i(s(n.$t("appLayout.items.multisig","M-of-N 多签")),1)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Ve))]),default:t(()=>[i(s(n.$t("appLayout.items.did")),1)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(qe))]),default:t(()=>[i(s(n.$t("appLayout.items.permissions")),1)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(We))]),default:t(()=>[i(s(n.$t("appLayout.items.p2p")),1)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(a(ye))]),default:t(()=>[i(s(n.$t("appLayout.items.mobileBridge","移动桥")),1)]),_:1}),e(o,{key:"remote-session"},{icon:t(()=>[e(a(ce))]),default:t(()=>[i(s(n.$t("appLayout.items.remoteSession","远程会话")),1)]),_:1}),e(o,{key:"mobile-projects"},{icon:t(()=>[e(a(ye))]),default:t(()=>[i(s(n.$t("appLayout.items.mobileProjects","手机项目 (v0.2)")),1)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(a(ce))]),default:t(()=>[i(s(n.$t("appLayout.items.terminal","远程终端")),1)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(de))]),default:t(()=>[i(s(n.$t("appLayout.items.backup")),1)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.git")),1)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(He))]),default:t(()=>[i(s(n.$t("appLayout.items.projects")),1)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Je))]),default:t(()=>[i(s(n.$t("appLayout.items.crosschain")),1)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.compliance")),1)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(pe))]),default:t(()=>[i(s(n.$t("appLayout.items.privacy")),1)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Ge))]),default:t(()=>[i(s(n.$t("appLayout.items.inference")),1)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ye))]),default:t(()=>[i(s(n.$t("appLayout.items.federation")),1)]),_:1})]),_:1}),e(D,{key:"g-enterprise"},{title:t(()=>[l("span",na,s(n.$t("appLayout.groups.enterprise")),1)]),default:t(()=>[e(o,{key:"wallet"},{icon:t(()=>[e(a(Ze))]),default:t(()=>[i(s(n.$t("appLayout.items.wallet")),1)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Z))]),default:t(()=>[i(s(n.$t("appLayout.items.organization")),1)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(Qe))]),default:t(()=>[i(s(n.$t("appLayout.items.tenant")),1)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.sla")),1)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(Xe))]),default:t(()=>[i(s(n.$t("appLayout.items.analytics")),1)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(xe))]),default:t(()=>[i(s(n.$t("appLayout.items.templates")),1)]),_:1})]),_:1}),e(D,{key:"g-social"},{title:t(()=>[l("span",sa,s(n.$t("appLayout.groups.social")),1)]),default:t(()=>[e(o,{key:"community"},{icon:t(()=>[e(a(et))]),default:t(()=>[i(s(n.$t("appLayout.items.community")),1)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(tt))]),default:t(()=>[i(s(n.$t("appLayout.items.governance")),1)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(at))]),default:t(()=>[i(s(n.$t("appLayout.items.reputation")),1)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(ot))]),default:t(()=>[i(s(n.$t("appLayout.items.recommend")),1)]),_:1})]),_:1}),e(D,{key:"g-media"},{title:t(()=>[l("span",ia,s(n.$t("appLayout.groups.media")),1)]),default:t(()=>[e(o,{key:"video"},{icon:t(()=>[e(a(Ct))]),default:t(()=>[i(s(n.$t("appLayout.items.video")),1)]),_:1})]),_:1}),e(D,{key:"g-extension"},{title:t(()=>[l("span",la,s(n.$t("appLayout.groups.extension")),1)]),default:t(()=>[e(o,{key:"rssfeed"},{icon:t(()=>[e(a(nt))]),default:t(()=>[i(s(n.$t("appLayout.items.rssfeed")),1)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(ue))]),default:t(()=>[i(s(n.$t("appLayout.items.webauthn")),1)]),_:1})]),_:1}),a(u).isEmbedded?(c(),C(D,{key:"g-desktop"},{title:t(()=>[l("span",ra,s(n.$t("appLayout.groups.desktop")),1)]),default:t(()=>[e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(re))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopHardware")),1)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(de))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopBackup")),1)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(pe))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopLlmTest")),1)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopSettings")),1)]),_:1})]),_:1})):M("",!0)],64))]),_:1},8,["selectedKeys","openKeys","theme","inline-collapsed"]),l("div",{class:J(["sidebar-footer",{collapsed:d.value}])},[e(ut,{status:B.value},null,8,["status"]),d.value?M("",!0):(c(),g("span",ua,s(z.value),1))],2)]),_:1},8,["collapsed"]),e(be,{class:"main-area"},{default:t(()=>[e(pt,{class:"app-header"},{default:t(()=>[l("div",ca,[l("div",{class:J(["scope-tag",y.value?"project":"global"])},[(c(),C(ht(y.value?a(Y):a(te)))),l("span",null,s(y.value?a(k).projectName||n.$t("appLayout.scope.fallbackProject"):n.$t("appLayout.scope.global")),1),y.value&&a(k).projectRoot?(c(),C(x,{key:0,title:a(k).projectRoot},{default:t(()=>[e(a(Et),{class:"info-icon"})]),_:1},8,["title"])):M("",!0)],2)]),l("div",da,[l("div",pa,[(c(!0),g(V,null,it(a($t),(U,ee)=>(c(),C(x,{key:ee,title:U.label},{default:t(()=>[l("button",{class:J(["theme-btn",{active:A.value===ee}]),"data-theme-key":ee,onClick:ga=>P(ee)},s(U.icon),11,ya)]),_:2},1032,["title"]))),128))]),e(x,{title:n.$t("language.label")},{default:t(()=>[l("button",{class:"lang-switch-btn","data-locale":a(W),onClick:me},[e(a(te),{class:"lang-switch-icon"}),l("span",fa,s(n.$t("language.switch")),1)],8,ma)]),_:1},8,["title"]),e(qt),a(u).isEmbedded?(c(),C(zt,{key:0})):M("",!0),l("span",ka,s(a(w)),1),a(u).isEmbedded?(c(),C(x,{key:1,title:n.$t("appLayout.shellSwitch")},{default:t(()=>[l("button",{type:"button",class:"shell-switch-btn",onClick:ke},[e(a(ce))])]),_:1},8,["title"])):M("",!0),e(dt,{color:f.value==="connected"?"green":f.value==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[i(s(f.value==="connected"?n.$t("appLayout.wsStatus.connected"):f.value==="connecting"?n.$t("appLayout.wsStatus.connecting"):n.$t("appLayout.wsStatus.disconnected")),1)]),_:1},8,["color"])])]),_:1}),e(mt,{class:"page-content"},{default:t(()=>[e(yt)]),_:1})]),_:1})]),_:1})}}},qa=he(_a,[["__scopeId","data-v-563989a5"]]);export{qa as default};
|
|
3
|
+
`))}catch{return[]}}return[]}const E=lt(),_=ve(),S=K([]);let b=null;const u=O(()=>S.value.length),d=O(()=>u.value===0?"var(--text-muted, #999)":"#52c41a"),k=O(()=>u.value===0?"尚未配对任何手机 — 点击进入配对":`已配对 ${u.value} 台手机 — 点击进入管理`);async function y(){if(_.status==="connected")try{const{output:A}=await _.execute("p2p devices --type mobile --json",1e4);S.value=T(A)||[]}catch{}}function w(){E.push("/mobile-bridge")}return ge(()=>{y(),b=setInterval(y,5e3)}),kt(()=>{b&&(clearInterval(b),b=null)}),(A,N)=>{const j=p("a-badge"),L=p("a-tooltip");return c(),C(L,{title:k.value},{default:t(()=>[e(j,{count:u.value,"show-zero":!1,"overflow-count":9,offset:[-2,4]},{default:t(()=>[l("button",{type:"button",class:J(["mbh-btn",{"mbh-btn--active":u.value>0}]),onClick:w},[e(a(ye),{style:_t({color:d.value,fontSize:"14px"})},null,8,["style"]),u.value>0?(c(),g("span",Ft,s(u.value),1)):M("",!0)],2)]),_:1},8,["count"])]),_:1},8,["title"])}}},qt=he(Vt,[["__scopeId","data-v-05eb475d"]]),Wt=["src"],Ht={key:0,class:"logo-text"},Jt={key:0,class:"mode-banner project"},Gt={class:"banner-info"},Yt={class:"banner-name"},Zt={class:"banner-sub"},Qt={key:1,class:"mode-banner global"},Xt={class:"banner-name"},xt=["title"],ea={class:"group-label"},ta={class:"group-label"},aa={class:"group-label"},oa={class:"group-label"},na={class:"group-label"},sa={class:"group-label"},ia={class:"group-label"},la={class:"group-label"},ra={class:"group-label"},ua={key:0,class:"footer-text"},ca={class:"header-left"},da={class:"header-right"},pa={class:"theme-switcher"},ya=["data-theme-key","onClick"],ma=["data-locale"],fa={class:"lang-switch-label"},ka={class:"version-tag"},st="cc.web-panel.sidebar.openKeys",_a={__name:"AppLayout",setup(h){const T=lt(),E=vt(),_=ve(),S=wt(),{t:b}=Lt(),u=q(),d=K(!1),k=window.__CC_CONFIG__||{},y=O(()=>k.mode==="project"),w="v5.0.3.145",A=O(()=>S.current),N=O(()=>S.config.vars["--menu-mode"]),j=O(()=>{const n=E.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp",quickask:"quick-ask",ukeysign:"ukey-sign"}[n]||n]}),L=["g-overview","g-config","g-data","g-advanced","g-enterprise","g-social","g-media","g-extension"];function R(){try{const n=localStorage.getItem(st);if(n){const r=JSON.parse(n);if(Array.isArray(r))return r.filter(o=>L.includes(o))}}catch{}return[...L]}const m=K(R());gt(m,n=>{try{localStorage.setItem(st,JSON.stringify(n))}catch{}},{deep:!0});const f=O(()=>_.status),B=O(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[_.status]||"default"),z=O(()=>{const n=`appLayout.footerStatus.${_.status}`,r=b(n);return r===n?b("appLayout.footerStatus.unknown"):r});function P(n){S.setTheme(n)}const{current:W,supported:H,setLocale:X}=Ot();function me(){const n=H[(H.indexOf(W.value)+1)%H.length];X(n)}async function fe(n){try{const r=await _.sendRaw({type:"window.open",role:n},1e4);if(r?.ok===!1){G.error(`打开失败:${r.error||"未知"}`);return}const o=r?.result??r;o?.reason==="role_reserved"?G.warning("该窗口角色被保留"):o?.reason}catch(r){G.error(`打开桌面窗口失败:${r.message||r}`)}}async function ke(){At.confirm({title:"切换到桌面壳?",content:"回到 V5/V6 桌面壳。完整 electronAPI 表面(UKey 硬件 / 原生对话框 / 系统设置等)会重新可用,但失去 web-panel 的 SPA 体验。保存后需要重启应用才生效。",okText:"切换并重启",cancelText:"取消",centered:!0,async onOk(){try{const n=await _.sendRaw({type:"shell.switch",target:"desktop"},5e3);if(n?.ok===!1)throw new Error(n.error||"shell.switch returned failure");G.loading({content:"正在重启…",duration:0})}catch(n){const r=n instanceof Error?n.message:String(n);G.error("切换失败:"+r)}}})}function v({key:n}){if(typeof n=="string"&&n.startsWith("desktop:")){fe(n);return}T.push({mcp:"/mcp"}[n]||`/${n}`)}return ge(()=>_.connect()),(n,r)=>{const o=p("a-menu-item"),D=p("a-sub-menu"),F=p("a-menu-divider"),rt=p("a-menu"),ut=p("a-badge"),ct=p("a-layout-sider"),x=p("a-tooltip"),dt=p("a-tag"),pt=p("a-layout-header"),yt=p("router-view"),mt=p("a-layout-content"),be=p("a-layout");return c(),C(be,{class:"app-root"},{default:t(()=>[e(ct,{collapsed:d.value,"onUpdate:collapsed":r[2]||(r[2]=U=>d.value=U),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[l("div",{class:J(["logo",{collapsed:d.value}])},[l("img",{src:a(Rt),alt:"ChainlessChain",class:"logo-icon"},null,8,Wt),d.value?M("",!0):(c(),g("span",Ht,"ChainlessChain"))],2),d.value?(c(),g("div",{key:1,class:"mode-icon-sm",title:y.value?a(k).projectName:n.$t("appLayout.scope.global")},[y.value?(c(),C(a(Y),{key:0,style:{color:"#1677ff"}})):(c(),C(a(te),{key:1,style:{color:"#722ed1"}}))],8,xt)):(c(),g(V,{key:0},[y.value?(c(),g("div",Jt,[e(a(Y),{class:"banner-icon"}),l("div",Gt,[l("div",Yt,s(a(k).projectName||n.$t("appLayout.scope.fallbackProject")),1),l("div",Zt,s(n.$t("appLayout.scope.projectPanel")),1)])])):(c(),g("div",Qt,[e(a(te),{class:"banner-icon"}),l("span",Xt,s(n.$t("appLayout.scope.global")),1)]))],64)),e(rt,{selectedKeys:j.value,"onUpdate:selectedKeys":r[0]||(r[0]=U=>j.value=U),openKeys:m.value,"onUpdate:openKeys":r[1]||(r[1]=U=>m.value=U),theme:N.value,mode:"inline","inline-collapsed":d.value,class:"side-menu",onClick:v},{default:t(()=>[d.value?(c(),g(V,{key:1},[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ae))]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(we))]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(oe))]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(se))]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(Le))]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a($e))]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(Oe))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"skills"},{icon:t(()=>[e(a(Se))]),_:1}),e(o,{key:"evolution-settings"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(Ce))]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(Ee))]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(Y))]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Ae))]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(_e))]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a(Re))]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(Ne))]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(le))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"notes"},{icon:t(()=>[e(a(je))]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Te))]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Be))]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(a(De))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(a(Me))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Pe))]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ue))]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ie))]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Ke))]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(oe))]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(a(ze))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"security"},{icon:t(()=>[e(a(re))]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(ue))]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(Fe))]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(a(Z))]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Ve))]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(qe))]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(We))]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(a(ye))]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(a(ce))]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(de))]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(le))]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(He))]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Je))]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(pe))]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Ge))]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ye))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"wallet"},{icon:t(()=>[e(a(Ze))]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Z))]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(Qe))]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ae))]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(Xe))]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(xe))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"community"},{icon:t(()=>[e(a(et))]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(tt))]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(at))]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(ot))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"rssfeed"},{icon:t(()=>[e(a(nt))]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(ue))]),_:1}),a(u).isEmbedded?(c(),g(V,{key:0},[e(F,{class:"divider-sm"}),e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(re))]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(de))]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(pe))]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(se))]),_:1})],64)):M("",!0)],64)):(c(),g(V,{key:0},[e(D,{key:"g-overview"},{title:t(()=>[l("span",ea,s(n.$t("appLayout.groups.overview")),1)]),default:t(()=>[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.dashboard")),1)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(we))]),default:t(()=>[i(s(n.$t("appLayout.items.chat")),1)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.quickAsk")),1)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(ne))]),default:t(()=>[i(s(n.$t("appLayout.items.cowork")),1)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.services")),1)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(Le))]),default:t(()=>[i(s(n.$t("appLayout.items.aiops")),1)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a($e))]),default:t(()=>[i(s(n.$t("appLayout.items.tokens")),1)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(Oe))]),default:t(()=>[i(s(n.$t("appLayout.items.logs")),1)]),_:1})]),_:1}),e(D,{key:"g-config"},{title:t(()=>[l("span",ta,s(n.$t("appLayout.groups.config")),1)]),default:t(()=>[e(o,{key:"skills"},{icon:t(()=>[e(a(Se))]),default:t(()=>[i(s(n.$t("appLayout.items.skills")),1)]),_:1}),e(o,{key:"evolution-settings"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.evolutionSettings")),1)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(Ce))]),default:t(()=>[i(s(n.$t("appLayout.items.providers")),1)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(Ee))]),default:t(()=>[i(s(n.$t("appLayout.items.mcp")),1)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(Y))]),default:t(()=>[i(s(n.$t("appLayout.items.projectSettings")),1)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Ae))]),default:t(()=>[i(s(n.$t("appLayout.items.speechSettings")),1)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(_e))]),default:t(()=>[i(s(n.$t("appLayout.items.notificationSettings")),1)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a(Re))]),default:t(()=>[i(s(n.$t("appLayout.items.syncSettings")),1)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(Ne))]),default:t(()=>[i(s(n.$t("appLayout.items.nlprog")),1)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.codegen")),1)]),_:1})]),_:1}),e(D,{key:"g-data"},{title:t(()=>[l("span",aa,s(n.$t("appLayout.groups.data")),1)]),default:t(()=>[e(o,{key:"notes"},{icon:t(()=>[e(a(je))]),default:t(()=>[i(s(n.$t("appLayout.items.notes")),1)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Te))]),default:t(()=>[i(s(n.$t("appLayout.items.search")),1)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.memory")),1)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Be))]),default:t(()=>[i(s(n.$t("appLayout.items.knowledge")),1)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(a(De))]),default:t(()=>[r[3]||(r[3]=i("个人数据中台",-1))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(a(Me))]),default:t(()=>[r[4]||(r[4]=i("数据浏览器",-1))]),_:1}),e(o,{key:"family-guard"},{icon:t(()=>[e(a(Z))]),default:t(()=>[r[5]||(r[5]=i("家庭守护",-1))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Pe))]),default:t(()=>[i(s(n.$t("appLayout.items.marketplace")),1)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ue))]),default:t(()=>[i(s(n.$t("appLayout.items.cron")),1)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ie))]),default:t(()=>[i(s(n.$t("appLayout.items.workflow")),1)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Ke))]),default:t(()=>[i(s(n.$t("appLayout.items.pipeline")),1)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.tasks")),1)]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(a(ne))]),default:t(()=>[r[6]||(r[6]=i("后台 Agent",-1))]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(a(ze))]),default:t(()=>[r[7]||(r[7]=i("交付物",-1))]),_:1})]),_:1}),e(D,{key:"g-advanced"},{title:t(()=>[l("span",oa,s(n.$t("appLayout.groups.advanced")),1)]),default:t(()=>[e(o,{key:"security"},{icon:t(()=>[e(a(re))]),default:t(()=>[i(s(n.$t("appLayout.items.security")),1)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(ue))]),default:t(()=>[i(s(n.$t("appLayout.items.ukeySign")),1)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.trust")),1)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(Fe))]),default:t(()=>[i(s(n.$t("appLayout.items.audit")),1)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.mtc")),1)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.mtcAudit","MTC 审计")),1)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(a(Z))]),default:t(()=>[i(s(n.$t("appLayout.items.multisig","M-of-N 多签")),1)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Ve))]),default:t(()=>[i(s(n.$t("appLayout.items.did")),1)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(qe))]),default:t(()=>[i(s(n.$t("appLayout.items.permissions")),1)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(We))]),default:t(()=>[i(s(n.$t("appLayout.items.p2p")),1)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(a(ye))]),default:t(()=>[i(s(n.$t("appLayout.items.mobileBridge","移动桥")),1)]),_:1}),e(o,{key:"remote-session"},{icon:t(()=>[e(a(ce))]),default:t(()=>[i(s(n.$t("appLayout.items.remoteSession","远程会话")),1)]),_:1}),e(o,{key:"mobile-projects"},{icon:t(()=>[e(a(ye))]),default:t(()=>[i(s(n.$t("appLayout.items.mobileProjects","手机项目 (v0.2)")),1)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(a(ce))]),default:t(()=>[i(s(n.$t("appLayout.items.terminal","远程终端")),1)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(de))]),default:t(()=>[i(s(n.$t("appLayout.items.backup")),1)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.git")),1)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(He))]),default:t(()=>[i(s(n.$t("appLayout.items.projects")),1)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Je))]),default:t(()=>[i(s(n.$t("appLayout.items.crosschain")),1)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.compliance")),1)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(pe))]),default:t(()=>[i(s(n.$t("appLayout.items.privacy")),1)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Ge))]),default:t(()=>[i(s(n.$t("appLayout.items.inference")),1)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ye))]),default:t(()=>[i(s(n.$t("appLayout.items.federation")),1)]),_:1})]),_:1}),e(D,{key:"g-enterprise"},{title:t(()=>[l("span",na,s(n.$t("appLayout.groups.enterprise")),1)]),default:t(()=>[e(o,{key:"wallet"},{icon:t(()=>[e(a(Ze))]),default:t(()=>[i(s(n.$t("appLayout.items.wallet")),1)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Z))]),default:t(()=>[i(s(n.$t("appLayout.items.organization")),1)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(Qe))]),default:t(()=>[i(s(n.$t("appLayout.items.tenant")),1)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.sla")),1)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(Xe))]),default:t(()=>[i(s(n.$t("appLayout.items.analytics")),1)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(xe))]),default:t(()=>[i(s(n.$t("appLayout.items.templates")),1)]),_:1})]),_:1}),e(D,{key:"g-social"},{title:t(()=>[l("span",sa,s(n.$t("appLayout.groups.social")),1)]),default:t(()=>[e(o,{key:"community"},{icon:t(()=>[e(a(et))]),default:t(()=>[i(s(n.$t("appLayout.items.community")),1)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(tt))]),default:t(()=>[i(s(n.$t("appLayout.items.governance")),1)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(at))]),default:t(()=>[i(s(n.$t("appLayout.items.reputation")),1)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(ot))]),default:t(()=>[i(s(n.$t("appLayout.items.recommend")),1)]),_:1})]),_:1}),e(D,{key:"g-media"},{title:t(()=>[l("span",ia,s(n.$t("appLayout.groups.media")),1)]),default:t(()=>[e(o,{key:"video"},{icon:t(()=>[e(a(Ct))]),default:t(()=>[i(s(n.$t("appLayout.items.video")),1)]),_:1})]),_:1}),e(D,{key:"g-extension"},{title:t(()=>[l("span",la,s(n.$t("appLayout.groups.extension")),1)]),default:t(()=>[e(o,{key:"rssfeed"},{icon:t(()=>[e(a(nt))]),default:t(()=>[i(s(n.$t("appLayout.items.rssfeed")),1)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(ue))]),default:t(()=>[i(s(n.$t("appLayout.items.webauthn")),1)]),_:1})]),_:1}),a(u).isEmbedded?(c(),C(D,{key:"g-desktop"},{title:t(()=>[l("span",ra,s(n.$t("appLayout.groups.desktop")),1)]),default:t(()=>[e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(re))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopHardware")),1)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(de))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopBackup")),1)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(pe))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopLlmTest")),1)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopSettings")),1)]),_:1})]),_:1})):M("",!0)],64))]),_:1},8,["selectedKeys","openKeys","theme","inline-collapsed"]),l("div",{class:J(["sidebar-footer",{collapsed:d.value}])},[e(ut,{status:B.value},null,8,["status"]),d.value?M("",!0):(c(),g("span",ua,s(z.value),1))],2)]),_:1},8,["collapsed"]),e(be,{class:"main-area"},{default:t(()=>[e(pt,{class:"app-header"},{default:t(()=>[l("div",ca,[l("div",{class:J(["scope-tag",y.value?"project":"global"])},[(c(),C(ht(y.value?a(Y):a(te)))),l("span",null,s(y.value?a(k).projectName||n.$t("appLayout.scope.fallbackProject"):n.$t("appLayout.scope.global")),1),y.value&&a(k).projectRoot?(c(),C(x,{key:0,title:a(k).projectRoot},{default:t(()=>[e(a(Et),{class:"info-icon"})]),_:1},8,["title"])):M("",!0)],2)]),l("div",da,[l("div",pa,[(c(!0),g(V,null,it(a($t),(U,ee)=>(c(),C(x,{key:ee,title:U.label},{default:t(()=>[l("button",{class:J(["theme-btn",{active:A.value===ee}]),"data-theme-key":ee,onClick:ga=>P(ee)},s(U.icon),11,ya)]),_:2},1032,["title"]))),128))]),e(x,{title:n.$t("language.label")},{default:t(()=>[l("button",{class:"lang-switch-btn","data-locale":a(W),onClick:me},[e(a(te),{class:"lang-switch-icon"}),l("span",fa,s(n.$t("language.switch")),1)],8,ma)]),_:1},8,["title"]),e(qt),a(u).isEmbedded?(c(),C(zt,{key:0})):M("",!0),l("span",ka,s(a(w)),1),a(u).isEmbedded?(c(),C(x,{key:1,title:n.$t("appLayout.shellSwitch")},{default:t(()=>[l("button",{type:"button",class:"shell-switch-btn",onClick:ke},[e(a(ce))])]),_:1},8,["title"])):M("",!0),e(dt,{color:f.value==="connected"?"green":f.value==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[i(s(f.value==="connected"?n.$t("appLayout.wsStatus.connected"):f.value==="connecting"?n.$t("appLayout.wsStatus.connecting"):n.$t("appLayout.wsStatus.disconnected")),1)]),_:1},8,["color"])])]),_:1}),e(mt,{class:"page-content"},{default:t(()=>[e(yt)]),_:1})]),_:1})]),_:1})}}},qa=he(_a,[["__scopeId","data-v-563989a5"]]);export{qa as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as D}from"./MarkdownRenderer-
|
|
1
|
+
import{M as D}from"./MarkdownRenderer-DOHVc-Uw.js";import{E as K,r as _,f as B,o as G,e as Q,M as w,R as v,c as r,N as o,u as i,Q as x,S as z,K as m,L as c,O as d,P as f,F as V}from"./vendor-BXcBOG8b.js";import{u as S,_ as W,d as R}from"./index-CzoKAiyT.js";import{R as q}from"./icons-DlxlFL4g.js";import"./markdown-Bq2x0XsR.js";import"./markdown-DUKxbhE4.js";const H=K("artifacts",()=>{const A=_([]),t=_(!1),g=_(""),b=_(""),u=_(null),C=_(!1),I=B(()=>[...new Set(A.value.map(a=>a.kind).filter(Boolean))].sort());async function l(){const e=S();t.value=!0;try{const a={type:"artifact-list"};g.value&&(a.kind=g.value),b.value&&(a.session=b.value);const s=await e.sendRaw(a);s&&Array.isArray(s.artifacts)&&(A.value=[...s.artifacts].reverse())}catch{}finally{t.value=!1}}async function n(e){const a=S();C.value=!0,u.value={entry:e,previewable:!1};try{const s=await a.sendRaw({type:"artifact-content",artifactId:e.id});u.value={entry:e,previewable:s?.previewable===!0,encoding:s?.encoding||null,content:s?.content||"",truncated:s?.truncated===!0,reason:s?.reason||null}}catch(s){u.value={entry:e,previewable:!1,reason:s?.message||"preview failed"}}finally{C.value=!1}}function F(){u.value=null}const p=B(()=>{const e=u.value;return!e?.previewable||e.encoding!=="base64"?null:`data:${e.entry?.mime||"image/png"};base64,${e.content}`}),$=B(()=>{const e=u.value;return e?.previewable===!0&&e.encoding==="utf8"&&String(e.entry?.mime||"").toLowerCase()==="text/markdown"});async function k(e,a={}){if(!e?.id)return!1;const s=a.fetch||globalThis.fetch,P=a.document||globalThis.document,T=a.URL||globalThis.URL,O=(a.config||globalThis.window?.__CC_CONFIG__)??{};try{const E=await s(`/api/artifacts/${e.id}/download`,{headers:O.wsToken?{Authorization:`Bearer ${O.wsToken}`}:{}});if(!E.ok)return!1;const j=await E.blob(),U=T.createObjectURL(j),h=P.createElement("a");return h.href=U,h.download=e.title||e.id,P.body.appendChild(h),h.click(),h.remove(),T.revokeObjectURL(U),!0}catch{return!1}}async function y(e){const a=S();if(!e)return!1;try{const s=await a.sendRaw({type:"artifact-remove",artifactId:e});return u.value?.entry?.id===e&&(u.value=null),await l(),s?.found===!0}catch{return!1}}async function M(){const e=S();try{const a=await e.sendRaw({type:"artifact-clean"});return await l(),Number(a?.removed)||0}catch{return 0}}function L(e){const a=Number(e)||0;return a<1024?`${a} B`:a<1024*1024?`${(a/1024).toFixed(1)} KB`:`${(a/(1024*1024)).toFixed(1)} MB`}function N(e){switch(e){case"report":return"blue";case"patch":return"purple";case"screenshot":return"cyan";case"log":return"default";case"data":return"green";default:return"default"}}return{artifacts:A,loading:t,kindFilter:g,sessionFilter:b,kinds:I,preview:u,previewLoading:C,previewImageSrc:p,previewIsMarkdown:$,fetchArtifacts:l,openPreview:n,closePreview:F,removeArtifact:y,cleanExpired:M,downloadArtifact:k,formatSize:L,kindColor:N}}),J={class:"page-header"},X=["onClick"],Y=["src"],Z={key:1,class:"preview-markdown"},ee={key:2,class:"preview-text"},te={class:"preview-meta"},ne={key:0},ae={__name:"Artifacts",setup(A){const t=H(),g=[{title:"标题",key:"title",dataIndex:"title",ellipsis:!0},{title:"类型",key:"kind",dataIndex:"kind",width:110},{title:"MIME",dataIndex:"mime",width:160,ellipsis:!0},{title:"大小",key:"size",dataIndex:"size",width:90},{title:"发布时间",key:"createdAt",dataIndex:"createdAt",width:170},{title:"会话",dataIndex:"sessionId",width:160,ellipsis:!0},{title:"操作",key:"actions",width:150}],b=B(()=>t.kinds.map(l=>({label:l,value:l})));async function u(l){await t.removeArtifact(l)?R.success("已删除"):R.error("删除失败")}async function C(){const l=await t.cleanExpired();R.info(l>0?`清理了 ${l} 个过期交付物`:"没有过期交付物")}async function I(l){await t.downloadArtifact(l)||R.error("下载失败")}return G(()=>{t.fetchArtifacts()}),Q(()=>{t.closePreview()}),(l,n)=>{const F=m("a-select"),p=m("a-button"),$=m("a-popconfirm"),k=m("a-space"),y=m("a-tag"),M=m("a-table"),L=m("a-empty"),N=m("a-card");return c(),w("div",null,[v("div",J,[n[7]||(n[7]=v("div",null,[v("h2",{class:"page-title"},"交付物"),v("p",{class:"page-sub"}," agent 用 publish_artifact 发布的交付物(报告 / patch / 截图 / 日志),在这里预览与管理(cc artifacts 同源)。 ")],-1)),r(k,null,{default:o(()=>[r(F,{value:i(t).kindFilter,"onUpdate:value":n[0]||(n[0]=e=>i(t).kindFilter=e),style:{"min-width":"120px"},placeholder:"全部类型","allow-clear":"",options:b.value,onChange:n[1]||(n[1]=e=>i(t).fetchArtifacts())},null,8,["value","options"]),r($,{title:"删除所有过期交付物?",onConfirm:C},{default:o(()=>[r(p,null,{default:o(()=>[...n[5]||(n[5]=[d("清理过期",-1)])]),_:1})]),_:1}),r(p,{ghost:"",loading:i(t).loading,onClick:n[2]||(n[2]=e=>i(t).fetchArtifacts())},{icon:o(()=>[r(i(q))]),default:o(()=>[n[6]||(n[6]=d(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),r(M,{"data-source":i(t).artifacts,columns:g,"row-key":"id",size:"small",pagination:{pageSize:10,hideOnSinglePage:!0}},{bodyCell:o(({column:e,record:a})=>[e.key==="title"?(c(),w("a",{key:0,onClick:s=>i(t).openPreview(a)},f(a.title),9,X)):e.key==="kind"?(c(),x(y,{key:1,color:i(t).kindColor(a.kind)},{default:o(()=>[d(f(a.kind),1)]),_:2},1032,["color"])):e.key==="size"?(c(),w(V,{key:2},[d(f(i(t).formatSize(a.size)),1)],64)):e.key==="createdAt"?(c(),w(V,{key:3},[d(f((a.createdAt||"").replace("T"," ").slice(0,19)),1)],64)):e.key==="actions"?(c(),x(k,{key:4},{default:o(()=>[r(p,{size:"small",onClick:s=>i(t).openPreview(a)},{default:o(()=>[...n[8]||(n[8]=[d("预览",-1)])]),_:1},8,["onClick"]),r(p,{size:"small",onClick:s=>I(a)},{default:o(()=>[...n[9]||(n[9]=[d("下载",-1)])]),_:1},8,["onClick"]),r($,{title:"删除该交付物?",onConfirm:s=>u(a.id)},{default:o(()=>[r(p,{size:"small",danger:""},{default:o(()=>[...n[10]||(n[10]=[d("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)):z("",!0)]),_:1},8,["data-source"]),i(t).preview?(c(),x(N,{key:0,size:"small",class:"preview-card",loading:i(t).previewLoading},{title:o(()=>[r(k,null,{default:o(()=>[v("span",null,f(i(t).preview.entry?.title),1),r(y,{color:i(t).kindColor(i(t).preview.entry?.kind)},{default:o(()=>[d(f(i(t).preview.entry?.kind),1)]),_:1},8,["color"]),r(y,{color:"default"},{default:o(()=>[d(f(i(t).preview.entry?.mime),1)]),_:1}),i(t).preview.truncated?(c(),x(y,{key:0,color:"warning"},{default:o(()=>[...n[11]||(n[11]=[d("已截断预览",-1)])]),_:1})):z("",!0)]),_:1})]),extra:o(()=>[r(k,null,{default:o(()=>[r(p,{size:"small",onClick:n[3]||(n[3]=e=>I(i(t).preview.entry))},{default:o(()=>[...n[12]||(n[12]=[d("下载",-1)])]),_:1}),r(p,{size:"small",onClick:n[4]||(n[4]=e=>i(t).closePreview())},{default:o(()=>[...n[13]||(n[13]=[d("关闭",-1)])]),_:1})]),_:1})]),default:o(()=>[i(t).previewImageSrc?(c(),w("img",{key:0,src:i(t).previewImageSrc,class:"preview-image",alt:"artifact preview"},null,8,Y)):i(t).previewIsMarkdown?(c(),w("div",Z,[r(D,{content:i(t).preview.content||""},null,8,["content"])])):i(t).preview.previewable?(c(),w("pre",ee,f(i(t).preview.content||"(空文件)"),1)):(c(),x(L,{key:3,description:i(t).preview.reason||"该类型不支持在线预览,可在本机用 cc artifacts open <id> 打开"},null,8,["description"])),v("div",te,[v("span",null,f(i(t).preview.entry?.id),1),i(t).preview.entry?.sessionId?(c(),w("span",ne," · session "+f(i(t).preview.entry.sessionId),1)):z("",!0),v("span",null," · sha256 "+f((i(t).preview.entry?.sha256||"").slice(0,12))+"…",1)])]),_:1},8,["loading"])):z("",!0)])}}},de=W(ae,[["__scopeId","data-v-c5692fe9"]]);export{de as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{X as De,t as te,_ as Ne,b as Fe,u as je,d as R}from"./index-Cs66y4oC.js";import{u as Be}from"./useFs-gpl11PEF.js";import{R as Je,aA as $e,V as de,d as Ue,an as Ve,A as Ke,f as Pe}from"./icons-DlxlFL4g.js";import{o as He,M as p,R as g,P as r,u as s,c as l,N as t,Q as x,S as k,K as _,r as L,L as u,O as y,F as z,Y as D,_ as We,f as U}from"./vendor-BXcBOG8b.js";import"./useShellMode-CgR0wCYM.js";const V=Object.freeze(["auth","permission","data","system","file","did","crypto","api"]),ee=Object.freeze(["low","medium","high","critical"]);function G(i,e=0){return typeof i=="number"&&Number.isFinite(i)?i:e}function fe(i){if(!i)return{noDb:!1,error:""};const e=De(i),d=/Database not available/i.test(e);return{noDb:d,error:d?"Database not available":""}}function Ye(i,e=0){if(!i||typeof i!="object")return null;const d=i.id||"";if(!d)return null;let b=i.details;if(typeof b=="string"&&b)try{b=JSON.parse(b)}catch{}const h=typeof i.success=="boolean"?i.success:i.success===1||i.success==="1"||i.success===!0,N=i.audit_mtc_event_id??i.auditMtcEventId??null;return{key:d,id:d,eventType:String(i.event_type??i.eventType??"").toLowerCase(),operation:String(i.operation||""),actor:i.actor??"",target:i.target??"",details:b??null,riskLevel:String(i.risk_level??i.riskLevel??"low").toLowerCase(),ipAddress:i.ip_address??i.ipAddress??"",userAgent:i.user_agent??i.userAgent??"",success:h,errorMessage:i.error_message??i.errorMessage??"",createdAt:i.created_at??i.createdAt??"",auditMtcEventId:N,_idx:e}}function qe(i){const e=te(i);return Array.isArray(e)?e.map(Ye).filter(Boolean):[]}const Qe={total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}};function Xe(i){const e=JSON.parse(JSON.stringify(Qe));for(const b of V)e.byEventType[b]=0;for(const b of ee)e.byRiskLevel[b]=0;const d=te(i);if(!d||typeof d!="object"||Array.isArray(d))return e;if(e.total=G(d.total,0),e.failures=G(d.failures,0),e.highRisk=G(d.highRisk,0),d.byEventType&&typeof d.byEventType=="object")for(const[b,h]of Object.entries(d.byEventType))typeof h=="number"&&Number.isFinite(h)&&(e.byEventType[b]=h);if(d.byRiskLevel&&typeof d.byRiskLevel=="object")for(const[b,h]of Object.entries(d.byRiskLevel))typeof h=="number"&&Number.isFinite(h)&&(e.byRiskLevel[b]=h);return e}function Ze(i){return!i||!i.auditMtcEventId?"none":"tracked"}function pe(i){if(i==null||i==="")return"—";const e=String(i),d=e.includes(" ")&&!e.includes("T")?e.replace(" ","T")+"Z":e,b=new Date(d);return isNaN(b.getTime())?e:b.toLocaleString("zh-CN",{hour12:!1})}const Ge={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},et={class:"page-title"},tt={class:"page-sub"},at={class:"type-name"},lt={class:"type-count"},ot={class:"filter-bar"},st={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},nt={style:{color:"var(--text-primary)","font-weight":"500","font-family":"monospace","font-size":"12px"}},it={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"2px"}},rt={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},ut={key:1,style:{color:"var(--text-muted)"}},ct={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},dt={key:1,style:{color:"var(--text-muted)"}},ft={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},pt={key:0,style:{"padding-top":"8px"}},yt={style:{"font-family":"monospace","font-size":"12px"}},vt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},_t={style:{"font-family":"monospace"}},mt={key:0,style:{"font-family":"monospace","font-size":"12px"}},bt={key:1,style:{color:"var(--text-muted)"}},gt={key:0,style:{"font-family":"monospace","font-size":"12px"}},kt={key:1,style:{color:"var(--text-muted)"}},ht={style:{"font-family":"monospace","font-size":"12px"}},xt={style:{"font-family":"monospace","font-size":"11px"}},Lt={style:{color:"#ff4d4f"}},Tt={class:"details-pre"},Ct={__name:"Audit",setup(i){const{t:e}=Fe(),d=je(),b=Be(),h=L(!1),N=L([]),m=L({total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}}),K=L({noDb:!1,error:""}),ae=L("events"),F=L(""),w=L(""),I=L(""),M=L(""),j=L(!1),P=L(!1),f=L(null),ye=U(()=>[{title:e("audit.logColumns.createdAt"),key:"createdAt",width:"160px"},{title:e("audit.logColumns.eventType"),key:"eventType",width:"110px"},{title:e("audit.logColumns.operation"),key:"operation"},{title:e("audit.logColumns.actor"),key:"actor",width:"140px"},{title:e("audit.logColumns.target"),key:"target",width:"180px"},{title:e("audit.logColumns.riskLevel"),key:"riskLevel",width:"90px"},{title:e("audit.logColumns.success"),key:"success",width:"80px"},{title:e("audit.logColumns.mtc"),key:"mtc",width:"110px"},{title:e("audit.logColumns.action"),key:"action",width:"80px"}]),H=L({});function W(a){return a.auditMtcEventId&&H.value[a.id]||null}function ve(a){const o=W(a);return o?o.state==="staging"?e("audit.mtc.stagingLabel"):o.state==="batched"?e("audit.mtc.batchedLabel",{batchId:o.batchId||"?"}):e("audit.mtc.unknownLabel"):e("audit.mtc.signedNotChecked")}function _e(a){const o=W(a);return o?o.state==="staging"?"orange":o.state==="batched"?"green":"default":"blue"}function me(a){if(!a.auditMtcEventId)return"";const o=W(a),c=e("audit.mtc.tooltipBase",{id:a.auditMtcEventId});return o?o.state==="staging"?e("audit.mtc.tooltipStaging",{base:c}):o.state==="batched"?e("audit.mtc.tooltipBatched",{base:c,batchId:o.batchId,treeHead:o.treeHeadId||""}):c:e("audit.mtc.tooltipNotChecked",{base:c})}async function be(a){if(!a.auditMtcEventId)return;const o=a.auditMtcEventId.replace(/"/g,'\\"');try{const c=await d.execute(`audit mtc reconcile-check "${o}" --json`,8e3),C=te(c.output);if(!C){R.warning(e("audit.mtc.noJson"));return}const X=C.found?{state:"batched",batchId:C.batchId,treeHeadId:C.treeHeadId}:C.staging?{state:"staging"}:{state:"unknown"};H.value={...H.value,[a.id]:X}}catch(c){R.error(e("audit.mtc.checkFailed",{err:c?.message||c}))}}const Y=U(()=>m.value.total?(m.value.total-m.value.failures)/m.value.total*100:100),ge=U(()=>!!(w.value||I.value||M.value||j.value)),ke=U(()=>{let a=N.value;if(I.value&&(a=a.filter(o=>o.eventType===I.value)),M.value&&(a=a.filter(o=>o.riskLevel===M.value)),j.value&&(a=a.filter(o=>!o.success)),w.value){const o=w.value.toLowerCase();a=a.filter(c=>(c.operation||"").toLowerCase().includes(o)||(c.actor||"").toLowerCase().includes(o)||(c.target||"").toLowerCase().includes(o))}return a});function q(a){const o=`audit.type.${a}`,c=e(o);return c===o?a:c}function B(a){return{auth:"blue",permission:"purple",data:"cyan",system:"default",file:"green",did:"gold",crypto:"magenta",api:"volcano"}[a]||"default"}function le(a){return{auth:"#1677ff",permission:"#722ed1",data:"#13c2c2",system:"#888",file:"#52c41a",did:"#faad14",crypto:"#eb2f96",api:"#fa541c"}[a]||"#888"}function J(a){const o=`audit.risk.${a}`,c=e(o);return c===o?a:c}function Q(a){return{low:"default",medium:"gold",high:"orange",critical:"red"}[a]||"default"}function he(a){return{low:"#888",medium:"#faad14",high:"#fa8c16",critical:"#ff4d4f"}[a]||"#888"}function oe(a,o){return o?Math.round(a/o*100):0}function xe(a,o){return a?a.length<=o?a:a.slice(0,o)+"…":""}function Le(a){if(typeof a=="string")return a;try{return JSON.stringify(a,null,2)}catch{return String(a)}}let se=null;function Te(){clearTimeout(se),se=setTimeout(()=>{w.value=F.value.trim()},300)}function Ce(){w.value=F.value.trim()}async function ne(){h.value=!0,K.value={noDb:!1,error:""};try{const[a,o]=await Promise.all([d.execute("audit log --json -n 200",12e3).catch(()=>({output:""})),d.execute("audit stats --json",8e3).catch(()=>({output:""}))]),c=[a,o].map(C=>fe(C.output)).find(C=>C.noDb);c&&(K.value=c),N.value=qe(a.output),m.value=Xe(o.output)}catch(a){R.error(e("audit.messages.loadFailed",{err:a?.message||a}))}finally{h.value=!1}}function Se(a){f.value=a,P.value=!0}async function ze(){try{const{output:a}=await d.execute("audit export -f json -n 10000",2e4);if(fe(a).noDb){R.error(e("audit.messages.needInit"));return}if(!a.trim().startsWith("[")){R.error(e("audit.messages.exportFailed",{err:a.slice(0,120)}));return}const c=await b.saveText(a.trim(),{defaultPath:`audit-${new Date().toISOString().slice(0,10)}.json`,filters:[{name:"JSON",extensions:["json"]}]});if(c.canceled)return;R.success(c.path?e("audit.messages.exportOk",{path:c.path}):e("audit.messages.exportOkDefault"))}catch(a){R.error(e("audit.messages.exportFailed",{err:a?.message||a}))}}return He(ne),(a,o)=>{const c=_("a-button"),C=_("a-space"),X=_("a-alert"),O=_("a-statistic"),A=_("a-card"),E=_("a-col"),Z=_("a-row"),S=_("a-tag"),Ae=_("a-input-search"),$=_("a-radio-button"),ie=_("a-radio-group"),Ee=_("a-checkbox"),re=_("a-tooltip"),Re=_("a-table"),ue=_("a-tab-pane"),ce=_("a-progress"),we=_("a-tabs"),T=_("a-descriptions-item"),Ie=_("a-descriptions"),Me=_("a-modal");return u(),p("div",null,[g("div",Ge,[g("div",null,[g("h2",et,r(s(e)("audit.title")),1),g("p",tt,r(s(e)("audit.subtitle")),1)]),l(C,null,{default:t(()=>[l(c,{loading:h.value,onClick:ne},{icon:t(()=>[l(s(Je))]),default:t(()=>[y(" "+r(s(e)("audit.refresh")),1)]),_:1},8,["loading"]),l(c,{onClick:ze},{icon:t(()=>[l(s($e))]),default:t(()=>[y(" "+r(s(e)("audit.exportJson")),1)]),_:1})]),_:1})]),K.value.noDb?(u(),x(X,{key:0,type:"info","show-icon":"",message:s(e)("audit.noDb.message"),description:s(e)("audit.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):k("",!0),l(Z,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[l(E,{xs:12,sm:8,lg:5},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.total"),value:m.value.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[l(s(de))]),_:1},8,["title","value"])]),_:1})]),_:1}),l(E,{xs:12,sm:8,lg:5},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.failures"),value:m.value.failures,"value-style":{color:m.value.failures>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[l(s(Ue))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(E,{xs:12,sm:8,lg:5},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.highRisk"),value:m.value.highRisk,"value-style":{color:m.value.highRisk>0?"#fa8c16":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[l(s(Ve))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(E,{xs:12,sm:8,lg:5},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.critical"),value:m.value.byRiskLevel.critical||0,"value-style":{color:(m.value.byRiskLevel.critical||0)>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:t(()=>[l(s(Ke))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(E,{xs:24,sm:8,lg:4},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.successRate"),value:Y.value,suffix:"%",precision:1,"value-style":{color:Y.value>=95?"#52c41a":Y.value>=80?"#faad14":"#ff4d4f",fontSize:"20px"}},{prefix:t(()=>[l(s(Pe))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),l(A,{title:s(e)("audit.typeCatalogueTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[l(Z,{gutter:[12,12]},{default:t(()=>[(u(!0),p(z,null,D(s(V),n=>(u(),x(E,{key:n,xs:12,sm:8,lg:3},{default:t(()=>[g("div",{class:"type-pill",style:We({borderLeftColor:le(n)})},[l(S,{color:B(n),style:{"font-family":"monospace","font-size":"11px"}},{default:t(()=>[y(r(n),1)]),_:2},1032,["color"]),g("div",at,r(q(n)),1),g("div",lt,r(m.value.byEventType[n]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),l(we,{activeKey:ae.value,"onUpdate:activeKey":o[4]||(o[4]=n=>ae.value=n),class:"audit-tabs"},{default:t(()=>[l(ue,{key:"events",tab:s(e)("audit.tabs.events")},{default:t(()=>[g("div",ot,[l(Ae,{value:F.value,"onUpdate:value":o[0]||(o[0]=n=>F.value=n),placeholder:s(e)("audit.filter.searchPlaceholder"),"allow-clear":"",style:{"max-width":"280px"},onSearch:Ce,onInput:Te},null,8,["value","placeholder"]),l(ie,{value:I.value,"onUpdate:value":o[1]||(o[1]=n=>I.value=n),size:"small","button-style":"solid"},{default:t(()=>[l($,{value:""},{default:t(()=>[y(r(s(e)("audit.filter.allTypes")),1)]),_:1}),(u(!0),p(z,null,D(s(V),n=>(u(),x($,{key:n,value:n},{default:t(()=>[y(r(q(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(ie,{value:M.value,"onUpdate:value":o[2]||(o[2]=n=>M.value=n),size:"small"},{default:t(()=>[l($,{value:""},{default:t(()=>[y(r(s(e)("audit.filter.allRisks")),1)]),_:1}),(u(!0),p(z,null,D(s(ee),n=>(u(),x($,{key:n,value:n},{default:t(()=>[y(r(J(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(Ee,{checked:j.value,"onUpdate:checked":o[3]||(o[3]=n=>j.value=n)},{default:t(()=>[y(r(s(e)("audit.filter.failuresOnly")),1)]),_:1},8,["checked"])]),l(Re,{columns:ye.value,"data-source":ke.value,pagination:{pageSize:20,showTotal:n=>s(e)("audit.totals.rows",{count:n})},size:"small",loading:h.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:v})=>[n.key==="createdAt"?(u(),p("span",st,r(s(pe)(v.createdAt)),1)):k("",!0),n.key==="eventType"?(u(),x(S,{key:1,color:B(v.eventType),style:{"font-family":"monospace"}},{default:t(()=>[y(r(v.eventType),1)]),_:2},1032,["color"])):k("",!0),n.key==="operation"?(u(),p(z,{key:2},[g("span",nt,r(v.operation),1),v.errorMessage?(u(),p("div",it,r(v.errorMessage),1)):k("",!0)],64)):k("",!0),n.key==="actor"?(u(),p(z,{key:3},[v.actor?(u(),p("span",rt,r(v.actor),1)):(u(),p("span",ut,"—"))],64)):k("",!0),n.key==="target"?(u(),p(z,{key:4},[v.target?(u(),p("span",ct,r(xe(v.target,32)),1)):(u(),p("span",dt,"—"))],64)):k("",!0),n.key==="riskLevel"?(u(),x(S,{key:5,color:Q(v.riskLevel)},{default:t(()=>[y(r(J(v.riskLevel)),1)]),_:2},1032,["color"])):k("",!0),n.key==="success"?(u(),x(S,{key:6,color:v.success?"green":"red"},{default:t(()=>[y(r(v.success?"OK":"FAIL"),1)]),_:2},1032,["color"])):k("",!0),n.key==="mtc"?(u(),p(z,{key:7},[s(Ze)(v)==="none"?(u(),x(re,{key:0,title:s(e)("audit.mtc.noneTooltip")},{default:t(()=>[l(S,{color:"default"},{default:t(()=>[...o[6]||(o[6]=[y("—",-1)])]),_:1})]),_:1},8,["title"])):(u(),x(re,{key:1,title:me(v)},{default:t(()=>[l(S,{color:_e(v),style:{cursor:"pointer"},onClick:Oe=>be(v)},{default:t(()=>[y(r(ve(v)),1)]),_:2},1032,["color","onClick"])]),_:2},1032,["title"]))],64)):k("",!0),n.key==="action"?(u(),x(c,{key:8,size:"small",type:"link",onClick:Oe=>Se(v)},{default:t(()=>[y(r(s(e)("audit.rowAction.details")),1)]),_:1},8,["onClick"])):k("",!0)]),emptyText:t(()=>[g("div",ft,[l(s(de),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(ge.value?s(e)("audit.empty.filtered"):s(e)("audit.empty.noEvents")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),l(ue,{key:"breakdown",tab:s(e)("audit.tabs.breakdown")},{default:t(()=>[l(Z,{gutter:[16,16]},{default:t(()=>[l(E,{xs:24,lg:12},{default:t(()=>[l(A,{title:s(e)("audit.breakdown.byType"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[(u(!0),p(z,null,D(s(V),n=>(u(),p("div",{key:n,class:"bd-row"},[l(S,{color:B(n),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:t(()=>[y(r(n),1)]),_:2},1032,["color"]),l(ce,{percent:oe(m.value.byEventType[n]||0,m.value.total),"stroke-color":le(n),format:()=>`${m.value.byEventType[n]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),l(E,{xs:24,lg:12},{default:t(()=>[l(A,{title:s(e)("audit.breakdown.byRisk"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[(u(!0),p(z,null,D(s(ee),n=>(u(),p("div",{key:n,class:"bd-row"},[l(S,{color:Q(n),style:{"min-width":"80px","text-align":"center"}},{default:t(()=>[y(r(J(n)),1)]),_:2},1032,["color"]),l(ce,{percent:oe(m.value.byRiskLevel[n]||0,m.value.total),"stroke-color":he(n),format:()=>`${m.value.byRiskLevel[n]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),l(Me,{open:P.value,"onUpdate:open":o[5]||(o[5]=n=>P.value=n),title:s(e)("audit.details.title",{id:f.value?.id?.slice(0,8)||""}),width:720,footer:null},{default:t(()=>[f.value?(u(),p("div",pt,[l(Ie,{column:2,size:"small",bordered:""},{default:t(()=>[l(T,{label:s(e)("audit.details.id"),span:2},{default:t(()=>[g("span",yt,r(f.value.id),1)]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.eventType")},{default:t(()=>[l(S,{color:B(f.value.eventType),style:{"font-family":"monospace"}},{default:t(()=>[y(r(f.value.eventType),1)]),_:1},8,["color"]),g("span",vt,r(q(f.value.eventType)),1)]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.riskLevel")},{default:t(()=>[l(S,{color:Q(f.value.riskLevel)},{default:t(()=>[y(r(J(f.value.riskLevel)),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.operation"),span:2},{default:t(()=>[g("span",_t,r(f.value.operation),1)]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.status")},{default:t(()=>[l(S,{color:f.value.success?"green":"red"},{default:t(()=>[y(r(f.value.success?s(e)("audit.details.success"):s(e)("audit.details.failure")),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.time")},{default:t(()=>[y(r(s(pe)(f.value.createdAt)),1)]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.actor")},{default:t(()=>[f.value.actor?(u(),p("span",mt,r(f.value.actor),1)):(u(),p("span",bt,"—"))]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.target")},{default:t(()=>[f.value.target?(u(),p("span",gt,r(f.value.target),1)):(u(),p("span",kt,"—"))]),_:1},8,["label"]),f.value.ipAddress?(u(),x(T,{key:0,label:s(e)("audit.details.ip")},{default:t(()=>[g("span",ht,r(f.value.ipAddress),1)]),_:1},8,["label"])):k("",!0),f.value.userAgent?(u(),x(T,{key:1,label:s(e)("audit.details.userAgent")},{default:t(()=>[g("span",xt,r(f.value.userAgent),1)]),_:1},8,["label"])):k("",!0),f.value.errorMessage?(u(),x(T,{key:2,label:s(e)("audit.details.errorMessage"),span:2},{default:t(()=>[g("span",Lt,r(f.value.errorMessage),1)]),_:1},8,["label"])):k("",!0),f.value.details?(u(),x(T,{key:3,label:s(e)("audit.details.details"),span:2},{default:t(()=>[g("pre",Tt,r(Le(f.value.details)),1)]),_:1},8,["label"])):k("",!0)]),_:1})])):k("",!0)]),_:1},8,["open","title"])])}}},wt=Ne(Ct,[["__scopeId","data-v-42ba1d8d"]]);export{wt as default};
|
|
1
|
+
import{X as De,t as te,_ as Ne,b as Fe,u as je,d as R}from"./index-CzoKAiyT.js";import{u as Be}from"./useFs-T5lg6SpD.js";import{R as Je,aA as $e,V as de,d as Ue,an as Ve,A as Ke,f as Pe}from"./icons-DlxlFL4g.js";import{o as He,M as p,R as g,P as r,u as s,c as l,N as t,Q as x,S as k,K as _,r as L,L as u,O as y,F as z,Y as D,_ as We,f as U}from"./vendor-BXcBOG8b.js";import"./useShellMode-CgR0wCYM.js";const V=Object.freeze(["auth","permission","data","system","file","did","crypto","api"]),ee=Object.freeze(["low","medium","high","critical"]);function G(i,e=0){return typeof i=="number"&&Number.isFinite(i)?i:e}function fe(i){if(!i)return{noDb:!1,error:""};const e=De(i),d=/Database not available/i.test(e);return{noDb:d,error:d?"Database not available":""}}function Ye(i,e=0){if(!i||typeof i!="object")return null;const d=i.id||"";if(!d)return null;let b=i.details;if(typeof b=="string"&&b)try{b=JSON.parse(b)}catch{}const h=typeof i.success=="boolean"?i.success:i.success===1||i.success==="1"||i.success===!0,N=i.audit_mtc_event_id??i.auditMtcEventId??null;return{key:d,id:d,eventType:String(i.event_type??i.eventType??"").toLowerCase(),operation:String(i.operation||""),actor:i.actor??"",target:i.target??"",details:b??null,riskLevel:String(i.risk_level??i.riskLevel??"low").toLowerCase(),ipAddress:i.ip_address??i.ipAddress??"",userAgent:i.user_agent??i.userAgent??"",success:h,errorMessage:i.error_message??i.errorMessage??"",createdAt:i.created_at??i.createdAt??"",auditMtcEventId:N,_idx:e}}function qe(i){const e=te(i);return Array.isArray(e)?e.map(Ye).filter(Boolean):[]}const Qe={total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}};function Xe(i){const e=JSON.parse(JSON.stringify(Qe));for(const b of V)e.byEventType[b]=0;for(const b of ee)e.byRiskLevel[b]=0;const d=te(i);if(!d||typeof d!="object"||Array.isArray(d))return e;if(e.total=G(d.total,0),e.failures=G(d.failures,0),e.highRisk=G(d.highRisk,0),d.byEventType&&typeof d.byEventType=="object")for(const[b,h]of Object.entries(d.byEventType))typeof h=="number"&&Number.isFinite(h)&&(e.byEventType[b]=h);if(d.byRiskLevel&&typeof d.byRiskLevel=="object")for(const[b,h]of Object.entries(d.byRiskLevel))typeof h=="number"&&Number.isFinite(h)&&(e.byRiskLevel[b]=h);return e}function Ze(i){return!i||!i.auditMtcEventId?"none":"tracked"}function pe(i){if(i==null||i==="")return"—";const e=String(i),d=e.includes(" ")&&!e.includes("T")?e.replace(" ","T")+"Z":e,b=new Date(d);return isNaN(b.getTime())?e:b.toLocaleString("zh-CN",{hour12:!1})}const Ge={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},et={class:"page-title"},tt={class:"page-sub"},at={class:"type-name"},lt={class:"type-count"},ot={class:"filter-bar"},st={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},nt={style:{color:"var(--text-primary)","font-weight":"500","font-family":"monospace","font-size":"12px"}},it={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"2px"}},rt={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},ut={key:1,style:{color:"var(--text-muted)"}},ct={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},dt={key:1,style:{color:"var(--text-muted)"}},ft={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},pt={key:0,style:{"padding-top":"8px"}},yt={style:{"font-family":"monospace","font-size":"12px"}},vt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},_t={style:{"font-family":"monospace"}},mt={key:0,style:{"font-family":"monospace","font-size":"12px"}},bt={key:1,style:{color:"var(--text-muted)"}},gt={key:0,style:{"font-family":"monospace","font-size":"12px"}},kt={key:1,style:{color:"var(--text-muted)"}},ht={style:{"font-family":"monospace","font-size":"12px"}},xt={style:{"font-family":"monospace","font-size":"11px"}},Lt={style:{color:"#ff4d4f"}},Tt={class:"details-pre"},Ct={__name:"Audit",setup(i){const{t:e}=Fe(),d=je(),b=Be(),h=L(!1),N=L([]),m=L({total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}}),K=L({noDb:!1,error:""}),ae=L("events"),F=L(""),w=L(""),I=L(""),M=L(""),j=L(!1),P=L(!1),f=L(null),ye=U(()=>[{title:e("audit.logColumns.createdAt"),key:"createdAt",width:"160px"},{title:e("audit.logColumns.eventType"),key:"eventType",width:"110px"},{title:e("audit.logColumns.operation"),key:"operation"},{title:e("audit.logColumns.actor"),key:"actor",width:"140px"},{title:e("audit.logColumns.target"),key:"target",width:"180px"},{title:e("audit.logColumns.riskLevel"),key:"riskLevel",width:"90px"},{title:e("audit.logColumns.success"),key:"success",width:"80px"},{title:e("audit.logColumns.mtc"),key:"mtc",width:"110px"},{title:e("audit.logColumns.action"),key:"action",width:"80px"}]),H=L({});function W(a){return a.auditMtcEventId&&H.value[a.id]||null}function ve(a){const o=W(a);return o?o.state==="staging"?e("audit.mtc.stagingLabel"):o.state==="batched"?e("audit.mtc.batchedLabel",{batchId:o.batchId||"?"}):e("audit.mtc.unknownLabel"):e("audit.mtc.signedNotChecked")}function _e(a){const o=W(a);return o?o.state==="staging"?"orange":o.state==="batched"?"green":"default":"blue"}function me(a){if(!a.auditMtcEventId)return"";const o=W(a),c=e("audit.mtc.tooltipBase",{id:a.auditMtcEventId});return o?o.state==="staging"?e("audit.mtc.tooltipStaging",{base:c}):o.state==="batched"?e("audit.mtc.tooltipBatched",{base:c,batchId:o.batchId,treeHead:o.treeHeadId||""}):c:e("audit.mtc.tooltipNotChecked",{base:c})}async function be(a){if(!a.auditMtcEventId)return;const o=a.auditMtcEventId.replace(/"/g,'\\"');try{const c=await d.execute(`audit mtc reconcile-check "${o}" --json`,8e3),C=te(c.output);if(!C){R.warning(e("audit.mtc.noJson"));return}const X=C.found?{state:"batched",batchId:C.batchId,treeHeadId:C.treeHeadId}:C.staging?{state:"staging"}:{state:"unknown"};H.value={...H.value,[a.id]:X}}catch(c){R.error(e("audit.mtc.checkFailed",{err:c?.message||c}))}}const Y=U(()=>m.value.total?(m.value.total-m.value.failures)/m.value.total*100:100),ge=U(()=>!!(w.value||I.value||M.value||j.value)),ke=U(()=>{let a=N.value;if(I.value&&(a=a.filter(o=>o.eventType===I.value)),M.value&&(a=a.filter(o=>o.riskLevel===M.value)),j.value&&(a=a.filter(o=>!o.success)),w.value){const o=w.value.toLowerCase();a=a.filter(c=>(c.operation||"").toLowerCase().includes(o)||(c.actor||"").toLowerCase().includes(o)||(c.target||"").toLowerCase().includes(o))}return a});function q(a){const o=`audit.type.${a}`,c=e(o);return c===o?a:c}function B(a){return{auth:"blue",permission:"purple",data:"cyan",system:"default",file:"green",did:"gold",crypto:"magenta",api:"volcano"}[a]||"default"}function le(a){return{auth:"#1677ff",permission:"#722ed1",data:"#13c2c2",system:"#888",file:"#52c41a",did:"#faad14",crypto:"#eb2f96",api:"#fa541c"}[a]||"#888"}function J(a){const o=`audit.risk.${a}`,c=e(o);return c===o?a:c}function Q(a){return{low:"default",medium:"gold",high:"orange",critical:"red"}[a]||"default"}function he(a){return{low:"#888",medium:"#faad14",high:"#fa8c16",critical:"#ff4d4f"}[a]||"#888"}function oe(a,o){return o?Math.round(a/o*100):0}function xe(a,o){return a?a.length<=o?a:a.slice(0,o)+"…":""}function Le(a){if(typeof a=="string")return a;try{return JSON.stringify(a,null,2)}catch{return String(a)}}let se=null;function Te(){clearTimeout(se),se=setTimeout(()=>{w.value=F.value.trim()},300)}function Ce(){w.value=F.value.trim()}async function ne(){h.value=!0,K.value={noDb:!1,error:""};try{const[a,o]=await Promise.all([d.execute("audit log --json -n 200",12e3).catch(()=>({output:""})),d.execute("audit stats --json",8e3).catch(()=>({output:""}))]),c=[a,o].map(C=>fe(C.output)).find(C=>C.noDb);c&&(K.value=c),N.value=qe(a.output),m.value=Xe(o.output)}catch(a){R.error(e("audit.messages.loadFailed",{err:a?.message||a}))}finally{h.value=!1}}function Se(a){f.value=a,P.value=!0}async function ze(){try{const{output:a}=await d.execute("audit export -f json -n 10000",2e4);if(fe(a).noDb){R.error(e("audit.messages.needInit"));return}if(!a.trim().startsWith("[")){R.error(e("audit.messages.exportFailed",{err:a.slice(0,120)}));return}const c=await b.saveText(a.trim(),{defaultPath:`audit-${new Date().toISOString().slice(0,10)}.json`,filters:[{name:"JSON",extensions:["json"]}]});if(c.canceled)return;R.success(c.path?e("audit.messages.exportOk",{path:c.path}):e("audit.messages.exportOkDefault"))}catch(a){R.error(e("audit.messages.exportFailed",{err:a?.message||a}))}}return He(ne),(a,o)=>{const c=_("a-button"),C=_("a-space"),X=_("a-alert"),O=_("a-statistic"),A=_("a-card"),E=_("a-col"),Z=_("a-row"),S=_("a-tag"),Ae=_("a-input-search"),$=_("a-radio-button"),ie=_("a-radio-group"),Ee=_("a-checkbox"),re=_("a-tooltip"),Re=_("a-table"),ue=_("a-tab-pane"),ce=_("a-progress"),we=_("a-tabs"),T=_("a-descriptions-item"),Ie=_("a-descriptions"),Me=_("a-modal");return u(),p("div",null,[g("div",Ge,[g("div",null,[g("h2",et,r(s(e)("audit.title")),1),g("p",tt,r(s(e)("audit.subtitle")),1)]),l(C,null,{default:t(()=>[l(c,{loading:h.value,onClick:ne},{icon:t(()=>[l(s(Je))]),default:t(()=>[y(" "+r(s(e)("audit.refresh")),1)]),_:1},8,["loading"]),l(c,{onClick:ze},{icon:t(()=>[l(s($e))]),default:t(()=>[y(" "+r(s(e)("audit.exportJson")),1)]),_:1})]),_:1})]),K.value.noDb?(u(),x(X,{key:0,type:"info","show-icon":"",message:s(e)("audit.noDb.message"),description:s(e)("audit.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):k("",!0),l(Z,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[l(E,{xs:12,sm:8,lg:5},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.total"),value:m.value.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[l(s(de))]),_:1},8,["title","value"])]),_:1})]),_:1}),l(E,{xs:12,sm:8,lg:5},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.failures"),value:m.value.failures,"value-style":{color:m.value.failures>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[l(s(Ue))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(E,{xs:12,sm:8,lg:5},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.highRisk"),value:m.value.highRisk,"value-style":{color:m.value.highRisk>0?"#fa8c16":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[l(s(Ve))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(E,{xs:12,sm:8,lg:5},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.critical"),value:m.value.byRiskLevel.critical||0,"value-style":{color:(m.value.byRiskLevel.critical||0)>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:t(()=>[l(s(Ke))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(E,{xs:24,sm:8,lg:4},{default:t(()=>[l(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[l(O,{title:s(e)("audit.stats.successRate"),value:Y.value,suffix:"%",precision:1,"value-style":{color:Y.value>=95?"#52c41a":Y.value>=80?"#faad14":"#ff4d4f",fontSize:"20px"}},{prefix:t(()=>[l(s(Pe))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),l(A,{title:s(e)("audit.typeCatalogueTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[l(Z,{gutter:[12,12]},{default:t(()=>[(u(!0),p(z,null,D(s(V),n=>(u(),x(E,{key:n,xs:12,sm:8,lg:3},{default:t(()=>[g("div",{class:"type-pill",style:We({borderLeftColor:le(n)})},[l(S,{color:B(n),style:{"font-family":"monospace","font-size":"11px"}},{default:t(()=>[y(r(n),1)]),_:2},1032,["color"]),g("div",at,r(q(n)),1),g("div",lt,r(m.value.byEventType[n]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),l(we,{activeKey:ae.value,"onUpdate:activeKey":o[4]||(o[4]=n=>ae.value=n),class:"audit-tabs"},{default:t(()=>[l(ue,{key:"events",tab:s(e)("audit.tabs.events")},{default:t(()=>[g("div",ot,[l(Ae,{value:F.value,"onUpdate:value":o[0]||(o[0]=n=>F.value=n),placeholder:s(e)("audit.filter.searchPlaceholder"),"allow-clear":"",style:{"max-width":"280px"},onSearch:Ce,onInput:Te},null,8,["value","placeholder"]),l(ie,{value:I.value,"onUpdate:value":o[1]||(o[1]=n=>I.value=n),size:"small","button-style":"solid"},{default:t(()=>[l($,{value:""},{default:t(()=>[y(r(s(e)("audit.filter.allTypes")),1)]),_:1}),(u(!0),p(z,null,D(s(V),n=>(u(),x($,{key:n,value:n},{default:t(()=>[y(r(q(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(ie,{value:M.value,"onUpdate:value":o[2]||(o[2]=n=>M.value=n),size:"small"},{default:t(()=>[l($,{value:""},{default:t(()=>[y(r(s(e)("audit.filter.allRisks")),1)]),_:1}),(u(!0),p(z,null,D(s(ee),n=>(u(),x($,{key:n,value:n},{default:t(()=>[y(r(J(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(Ee,{checked:j.value,"onUpdate:checked":o[3]||(o[3]=n=>j.value=n)},{default:t(()=>[y(r(s(e)("audit.filter.failuresOnly")),1)]),_:1},8,["checked"])]),l(Re,{columns:ye.value,"data-source":ke.value,pagination:{pageSize:20,showTotal:n=>s(e)("audit.totals.rows",{count:n})},size:"small",loading:h.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:v})=>[n.key==="createdAt"?(u(),p("span",st,r(s(pe)(v.createdAt)),1)):k("",!0),n.key==="eventType"?(u(),x(S,{key:1,color:B(v.eventType),style:{"font-family":"monospace"}},{default:t(()=>[y(r(v.eventType),1)]),_:2},1032,["color"])):k("",!0),n.key==="operation"?(u(),p(z,{key:2},[g("span",nt,r(v.operation),1),v.errorMessage?(u(),p("div",it,r(v.errorMessage),1)):k("",!0)],64)):k("",!0),n.key==="actor"?(u(),p(z,{key:3},[v.actor?(u(),p("span",rt,r(v.actor),1)):(u(),p("span",ut,"—"))],64)):k("",!0),n.key==="target"?(u(),p(z,{key:4},[v.target?(u(),p("span",ct,r(xe(v.target,32)),1)):(u(),p("span",dt,"—"))],64)):k("",!0),n.key==="riskLevel"?(u(),x(S,{key:5,color:Q(v.riskLevel)},{default:t(()=>[y(r(J(v.riskLevel)),1)]),_:2},1032,["color"])):k("",!0),n.key==="success"?(u(),x(S,{key:6,color:v.success?"green":"red"},{default:t(()=>[y(r(v.success?"OK":"FAIL"),1)]),_:2},1032,["color"])):k("",!0),n.key==="mtc"?(u(),p(z,{key:7},[s(Ze)(v)==="none"?(u(),x(re,{key:0,title:s(e)("audit.mtc.noneTooltip")},{default:t(()=>[l(S,{color:"default"},{default:t(()=>[...o[6]||(o[6]=[y("—",-1)])]),_:1})]),_:1},8,["title"])):(u(),x(re,{key:1,title:me(v)},{default:t(()=>[l(S,{color:_e(v),style:{cursor:"pointer"},onClick:Oe=>be(v)},{default:t(()=>[y(r(ve(v)),1)]),_:2},1032,["color","onClick"])]),_:2},1032,["title"]))],64)):k("",!0),n.key==="action"?(u(),x(c,{key:8,size:"small",type:"link",onClick:Oe=>Se(v)},{default:t(()=>[y(r(s(e)("audit.rowAction.details")),1)]),_:1},8,["onClick"])):k("",!0)]),emptyText:t(()=>[g("div",ft,[l(s(de),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(ge.value?s(e)("audit.empty.filtered"):s(e)("audit.empty.noEvents")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),l(ue,{key:"breakdown",tab:s(e)("audit.tabs.breakdown")},{default:t(()=>[l(Z,{gutter:[16,16]},{default:t(()=>[l(E,{xs:24,lg:12},{default:t(()=>[l(A,{title:s(e)("audit.breakdown.byType"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[(u(!0),p(z,null,D(s(V),n=>(u(),p("div",{key:n,class:"bd-row"},[l(S,{color:B(n),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:t(()=>[y(r(n),1)]),_:2},1032,["color"]),l(ce,{percent:oe(m.value.byEventType[n]||0,m.value.total),"stroke-color":le(n),format:()=>`${m.value.byEventType[n]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),l(E,{xs:24,lg:12},{default:t(()=>[l(A,{title:s(e)("audit.breakdown.byRisk"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[(u(!0),p(z,null,D(s(ee),n=>(u(),p("div",{key:n,class:"bd-row"},[l(S,{color:Q(n),style:{"min-width":"80px","text-align":"center"}},{default:t(()=>[y(r(J(n)),1)]),_:2},1032,["color"]),l(ce,{percent:oe(m.value.byRiskLevel[n]||0,m.value.total),"stroke-color":he(n),format:()=>`${m.value.byRiskLevel[n]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),l(Me,{open:P.value,"onUpdate:open":o[5]||(o[5]=n=>P.value=n),title:s(e)("audit.details.title",{id:f.value?.id?.slice(0,8)||""}),width:720,footer:null},{default:t(()=>[f.value?(u(),p("div",pt,[l(Ie,{column:2,size:"small",bordered:""},{default:t(()=>[l(T,{label:s(e)("audit.details.id"),span:2},{default:t(()=>[g("span",yt,r(f.value.id),1)]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.eventType")},{default:t(()=>[l(S,{color:B(f.value.eventType),style:{"font-family":"monospace"}},{default:t(()=>[y(r(f.value.eventType),1)]),_:1},8,["color"]),g("span",vt,r(q(f.value.eventType)),1)]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.riskLevel")},{default:t(()=>[l(S,{color:Q(f.value.riskLevel)},{default:t(()=>[y(r(J(f.value.riskLevel)),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.operation"),span:2},{default:t(()=>[g("span",_t,r(f.value.operation),1)]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.status")},{default:t(()=>[l(S,{color:f.value.success?"green":"red"},{default:t(()=>[y(r(f.value.success?s(e)("audit.details.success"):s(e)("audit.details.failure")),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.time")},{default:t(()=>[y(r(s(pe)(f.value.createdAt)),1)]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.actor")},{default:t(()=>[f.value.actor?(u(),p("span",mt,r(f.value.actor),1)):(u(),p("span",bt,"—"))]),_:1},8,["label"]),l(T,{label:s(e)("audit.details.target")},{default:t(()=>[f.value.target?(u(),p("span",gt,r(f.value.target),1)):(u(),p("span",kt,"—"))]),_:1},8,["label"]),f.value.ipAddress?(u(),x(T,{key:0,label:s(e)("audit.details.ip")},{default:t(()=>[g("span",ht,r(f.value.ipAddress),1)]),_:1},8,["label"])):k("",!0),f.value.userAgent?(u(),x(T,{key:1,label:s(e)("audit.details.userAgent")},{default:t(()=>[g("span",xt,r(f.value.userAgent),1)]),_:1},8,["label"])):k("",!0),f.value.errorMessage?(u(),x(T,{key:2,label:s(e)("audit.details.errorMessage"),span:2},{default:t(()=>[g("span",Lt,r(f.value.errorMessage),1)]),_:1},8,["label"])):k("",!0),f.value.details?(u(),x(T,{key:3,label:s(e)("audit.details.details"),span:2},{default:t(()=>[g("pre",Tt,r(Le(f.value.details)),1)]),_:1},8,["label"])):k("",!0)]),_:1})])):k("",!0)]),_:1},8,["open","title"])])}}},wt=Ne(Ct,[["__scopeId","data-v-42ba1d8d"]]);export{wt as default};
|
package/src/assets/web-panel/assets/{BackgroundAgents-9TMG041Q.js → BackgroundAgents-CFB1fxsr.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as ee,r as c,f as Z,w as te,o as ne,e as ae,M as j,R as P,c as d,N as l,u,Q as M,S as x,K as _,L as g,O as m,F as W,P as h,n as se}from"./vendor-BXcBOG8b.js";import{u as b,_ as le,d as D}from"./index-
|
|
1
|
+
import{E as ee,r as c,f as Z,w as te,o as ne,e as ae,M as j,R as P,c as d,N as l,u,Q as M,S as x,K as _,L as g,O as m,F as W,P as h,n as se}from"./vendor-BXcBOG8b.js";import{u as b,_ as le,d as D}from"./index-CzoKAiyT.js";import{R as oe}from"./icons-DlxlFL4g.js";function R(y,t={}){return{type:y,...t}}function ue(y){if(typeof y!="object"||y===null)return!1;const t=y;return(t.type==="bg-event"||t.type==="bg-log")&&typeof t.bgId=="string"}const J=200,Y=4e5,re=ee("backgroundAgents",()=>{const y=c([]),t=c(!1),C=c(!0),r=c(null),E=c(null),A=c(!1),$=c(""),S=c([]);let T=null,w=null;const H=Z(()=>y.value.filter(n=>n.status==="running"));async function v(){const n=b();t.value=!0;try{const a=await n.sendRaw(R("bg-list",{all:C.value}));a&&Array.isArray(a.sessions)&&(y.value=a.sessions)}catch{}finally{t.value=!1}}function F(n){S.value.push(n),S.value.length>J&&S.value.splice(0,S.value.length-J)}function G(n){$.value+=n,$.value.length>Y&&($.value=$.value.slice(-Y))}function L(){if(w)return;w=b().onMessage(a=>{!ue(a)||a.bgId!==r.value||(a.type==="bg-log"&&typeof a.chunk=="string"?G(a.chunk):a.type==="bg-event"&&a.event&&(F(a.event),a.event.type==="transport-closed"?(A.value=!0,v()):(a.event.type==="turn-started"||a.event.type==="turn-ended"||a.event.type==="idle")&&v()))})}async function B(n){const a=b();r.value&&r.value!==n&&await O();const o=await a.sendRaw(R("bg-attach",{bgId:n,lines:200}));return r.value=n,E.value=o?.hello||null,A.value=!1,o?.reattached||($.value=typeof o?.log=="string"?o.log:"",S.value=[]),L(),o}async function N(n){const a=b(),o=String(n||"").trim();return!r.value||!o?!1:(await a.sendRaw(R("bg-prompt",{bgId:r.value,text:o})),!0)}async function I(){const n=b();r.value&&await n.sendRaw(R("bg-stop-turn",{bgId:r.value}))}async function O(){const n=b(),a=r.value;if(r.value=null,E.value=null,A.value=!1,a)try{await n.sendRaw(R("bg-detach",{bgId:a}))}catch{}}async function K(n,a){const o=b(),p=String(a||"").trim();return!n||!p?!1:(await o.sendRaw(R("bg-rename",{bgId:n,title:p})),await v(),!0)}async function q(n,a){const o=b(),p=String(a||"").trim();if(!n||!p)return null;const X=await o.sendRaw(R("bg-resume",{bgId:n,text:p}));return await v(),X?.session||null}async function s(n){const a=b(),o=n||r.value;if(o)try{await a.sendRaw(R("bg-stop",{bgId:o}))}finally{r.value===o&&(r.value=null,E.value=null),await v()}}function e(n=5e3){V(),v(),T=setInterval(v,n)}function V(){T&&(clearInterval(T),T=null)}async function k(){V(),w&&(w(),w=null),await O()}function z(n){switch(n){case"running":return"processing";case"completed":return"success";case"failed":return"error";case"stopped":return"warning";case"lost":return"error";default:return"default"}}function U(n,a=Date.now()){const o=n?.endedAt||a,p=Math.max(0,o-(n?.startedAt||o));return p<6e4?`${Math.round(p/1e3)}s`:p<36e5?`${Math.floor(p/6e4)}m ${Math.round(p%6e4/1e3)}s`:`${Math.floor(p/36e5)}h ${Math.floor(p%36e5/6e4)}m`}return{sessions:y,loading:t,showAll:C,running:H,attachedId:r,attachedHello:E,transportClosed:A,logText:$,events:S,fetchSessions:v,attach:B,sendPrompt:N,stopTurn:I,detach:O,renameSession:K,resumeSession:q,stopSession:s,startPolling:e,stopPolling:V,teardown:k,getStatusColor:z,formatElapsed:U}}),ie={class:"page-header"},de={key:0,class:"event-line"},ce={class:"prompt-row"},pe={__name:"BackgroundAgents",setup(y){const t=re(),C=c(""),r=c(null),E=[{title:"ID",dataIndex:"id",key:"id",ellipsis:!0},{title:"状态",key:"status",width:160},{title:"标题",dataIndex:"title",key:"title",ellipsis:!0},{title:"轮次",dataIndex:"turnCount",key:"turnCount",width:70},{title:"耗时",key:"elapsed",width:100},{title:"操作",key:"actions",width:170}],A=Z(()=>t.events.length?t.events[t.events.length-1]:null);function $(s){switch(s.type){case"turn-started":return`第 ${s.turn} 轮开始${s.prompt?`:${s.prompt}`:""}`;case"turn-ended":return`第 ${s.turn} 轮结束(exit ${s.exitCode})`;case"idle":return"会话空闲,等待 follow-up prompt";case"accepted":return`prompt 已排队(#${s.queued})`;case"stopping":return"正在停止当前轮";case"transport-closed":return"会话已收尾,连接关闭";case"error":return`错误:${s.message}`;default:return s.type}}async function S(s){try{await t.attach(s)}catch(e){D.error(`接管失败:${e.message}`)}}async function T(){const s=C.value;if(s.trim())try{await t.sendPrompt(s),C.value=""}catch(e){D.error(`发送失败:${e.message}`)}}const w=c(!1),H=c(!1),v=c("");let F=null;function G(s){F=s.id,v.value=s.title||"",w.value=!0}async function L(){if(v.value.trim()){H.value=!0;try{await t.renameSession(F,v.value),w.value=!1}catch(s){D.error(`重命名失败:${s.message}`)}finally{H.value=!1}}}const B=c(!1),N=c(!1),I=c("");let O=null;function K(s){O=s.id,I.value="",B.value=!0}async function q(){if(I.value.trim()){N.value=!0;try{const s=await t.resumeSession(O,I.value);B.value=!1,s&&D.success(`已续跑为 ${s.id}`)}catch(s){D.error(`续跑失败:${s.message}`)}finally{N.value=!1}}}return te(()=>t.logText,async()=>{await se(),r.value&&(r.value.scrollTop=r.value.scrollHeight)}),ne(()=>t.startPolling(5e3)),ae(()=>t.teardown()),(s,e)=>{const V=_("a-switch"),k=_("a-button"),z=_("a-space"),U=_("a-tag"),n=_("a-popconfirm"),a=_("a-table"),o=_("a-input"),p=_("a-card"),X=_("a-modal");return g(),j("div",null,[P("div",ie,[e[11]||(e[11]=P("div",null,[P("h2",{class:"page-title"},"后台 Agent"),P("p",{class:"page-sub"}," 查看 cc agent --bg 后台会话,实时跟随日志并交互接管(follow-up prompt / 停止本轮)。 ")],-1)),d(z,null,{default:l(()=>[d(V,{checked:u(t).showAll,"onUpdate:checked":e[0]||(e[0]=i=>u(t).showAll=i),"checked-children":"全部","un-checked-children":"运行中",onChange:e[1]||(e[1]=i=>u(t).fetchSessions())},null,8,["checked"]),d(k,{ghost:"",loading:u(t).loading,onClick:e[2]||(e[2]=i=>u(t).fetchSessions())},{icon:l(()=>[d(u(oe))]),default:l(()=>[e[10]||(e[10]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),d(a,{"data-source":u(t).sessions,columns:E,"row-key":"id",size:"small",pagination:{pageSize:8,hideOnSinglePage:!0},class:"bg-table"},{bodyCell:l(({column:i,record:f})=>[i.key==="status"?(g(),j(W,{key:0},[d(U,{color:u(t).getStatusColor(f.status)},{default:l(()=>[m(h(f.status),1)]),_:2},1032,["color"]),f.phase?(g(),M(U,{key:0,color:"default"},{default:l(()=>[m(h(f.phase),1)]),_:2},1024)):x("",!0)],64)):i.key==="elapsed"?(g(),j(W,{key:1},[m(h(u(t).formatElapsed(f)),1)],64)):i.key==="actions"?(g(),M(z,{key:2},{default:l(()=>[d(k,{size:"small",type:"primary",disabled:f.status!=="running"||!f.interactive,onClick:Q=>S(f.id)},{default:l(()=>[m(h(u(t).attachedId===f.id?"已连接":"接管"),1)]),_:2},1032,["disabled","onClick"]),d(k,{size:"small",onClick:Q=>G(f)},{default:l(()=>[...e[12]||(e[12]=[m("重命名",-1)])]),_:1},8,["onClick"]),f.status!=="running"&&f.sessionId?(g(),M(k,{key:0,size:"small",onClick:Q=>K(f)},{default:l(()=>[...e[13]||(e[13]=[m(" 续跑 ",-1)])]),_:1},8,["onClick"])):x("",!0),f.status==="running"?(g(),M(n,{key:1,title:"终止整个后台会话?",onConfirm:Q=>u(t).stopSession(f.id)},{default:l(()=>[d(k,{size:"small",danger:""},{default:l(()=>[...e[14]||(e[14]=[m("终止",-1)])]),_:1})]),_:1},8,["onConfirm"])):x("",!0)]),_:2},1024)):x("",!0)]),_:1},8,["data-source"]),u(t).attachedId?(g(),M(p,{key:0,size:"small",class:"attach-card"},{title:l(()=>[d(z,null,{default:l(()=>[P("span",null,h(u(t).attachedId),1),u(t).attachedHello?(g(),M(U,{key:0,color:"processing"},{default:l(()=>[m(" turn "+h(u(t).attachedHello.turn)+" · "+h(u(t).attachedHello.phase),1)]),_:1})):x("",!0),u(t).transportClosed?(g(),M(U,{key:1,color:"warning"},{default:l(()=>[...e[15]||(e[15]=[m("会话已结束",-1)])]),_:1})):x("",!0)]),_:1})]),extra:l(()=>[d(z,null,{default:l(()=>[d(k,{size:"small",disabled:u(t).transportClosed,onClick:e[3]||(e[3]=i=>u(t).stopTurn())},{default:l(()=>[...e[16]||(e[16]=[m("停止本轮",-1)])]),_:1},8,["disabled"]),d(k,{size:"small",onClick:e[4]||(e[4]=i=>u(t).detach())},{default:l(()=>[...e[17]||(e[17]=[m("断开",-1)])]),_:1})]),_:1})]),default:l(()=>[P("pre",{ref_key:"logPane",ref:r,class:"log-pane"},h(u(t).logText||"(暂无输出)"),513),A.value?(g(),j("div",de," — "+h($(A.value)),1)):x("",!0),P("div",ce,[d(o,{value:C.value,"onUpdate:value":e[5]||(e[5]=i=>C.value=i),placeholder:"输入 follow-up prompt,回车发送到该后台会话",disabled:u(t).transportClosed,onPressEnter:T},null,8,["value","disabled"]),d(k,{type:"primary",disabled:u(t).transportClosed||!C.value.trim(),onClick:T},{default:l(()=>[...e[18]||(e[18]=[m(" 发送 ",-1)])]),_:1},8,["disabled"])])]),_:1})):x("",!0),d(X,{open:w.value,"onUpdate:open":e[7]||(e[7]=i=>w.value=i),title:"重命名后台会话","confirm-loading":H.value,onOk:L},{default:l(()=>[d(o,{value:v.value,"onUpdate:value":e[6]||(e[6]=i=>v.value=i),placeholder:"新标题",onPressEnter:L},null,8,["value"])]),_:1},8,["open","confirm-loading"]),d(X,{open:B.value,"onUpdate:open":e[9]||(e[9]=i=>B.value=i),title:"续跑该会话(新的后台运行,续接同一对话)","confirm-loading":N.value,onOk:q},{default:l(()=>[d(o,{value:I.value,"onUpdate:value":e[8]||(e[8]=i=>I.value=i),placeholder:"输入要继续执行的 prompt",onPressEnter:q},null,8,["value"])]),_:1},8,["open","confirm-loading"])])}}},ge=le(pe,[["__scopeId","data-v-da096c10"]]);export{ge as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as Ue,b as Ke,u as Ve,t as Je,d as xe}from"./index-Cs66y4oC.js";import{u as qe}from"./useFs-gpl11PEF.js";import{R as Ge,aA as He,at as he,_ as re,q as I,aT as K,aR as Qe}from"./icons-DlxlFL4g.js";import{o as We,M as i,R as f,P as n,u as a,c as o,N as s,r as c,K as y,L as u,O as b,Q as _,S as r,F as Xe,f as pe}from"./vendor-BXcBOG8b.js";import"./useShellMode-CgR0wCYM.js";const de=["B","KB","MB","GB","TB","PB","EB"];function we(D){if(D==null||isNaN(D))return"-";const e=Number(D);if(e<0)return"-";if(e===0)return"0 B";let d=Math.floor(Math.log(e)/Math.log(1024));return d<0&&(d=0),d>=de.length&&(d=de.length-1),(e/Math.pow(1024,d)).toFixed(d>0?1:0)+" "+de[d]}const Ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},ea={class:"page-sub"},aa={key:0,style:{"text-align":"center",padding:"30px"}},ta={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},oa={key:1},sa={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},la={key:3,style:{"margin-top":"16px"}},na={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},ca={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"}},ua={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ia={style:{color:"var(--text-secondary)"}},ra={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},pa={style:{"font-family":"monospace"}},da={key:0},va={key:1,style:{"margin-top":"12px"}},fa={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"}},ya={key:0,style:{"text-align":"center",padding:"30px"}},ba={key:0,style:{"margin-bottom":"16px"}},ka={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},ga={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"}},ma={key:0,style:{"font-family":"monospace","font-size":"12px"}},_a={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},xa={key:0,style:{"text-align":"center",padding:"30px"}},ha={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},wa={key:0,style:{"text-align":"center",padding:"30px"}},za={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Ca={key:1},Sa={key:2},Aa={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},Ba={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},La={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},Ma={key:0,style:{"margin-top":"12px"}},Oa={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"}},Pa={__name:"Backup",setup(D){const{t:e}=Ke(),d=Ve(),ze=qe(),V=c(!1),ve=c("backup"),J=c(!1),q=c(!1),G=c(!1),M=c(""),g=c([]),h=c(""),Ce=pe(()=>[{title:e("backup.backupColumns.id"),key:"id"},{title:e("backup.backupColumns.size"),key:"size",width:120},{title:e("backup.backupColumns.createdAt"),key:"createdAt"},{title:e("backup.backupColumns.action"),key:"action",width:100}]);async function fe(){q.value=!0,M.value="";try{const{output:t}=await d.execute("backup list --json",15e3),l=T(t);Array.isArray(l)?g.value=l:l&&Array.isArray(l.backups)?g.value=l.backups:(g.value=[],t&&t.trim()&&(h.value=t))}catch(t){M.value=e("backup.messages.loadBackupsFailed",{err:t.message})}finally{q.value=!1}}async function Se(){G.value=!0,h.value="",M.value="";try{const{output:t}=await d.execute("backup create --json",3e4);h.value=t||e("backup.backup.createDefaultMessage"),await fe()}catch(t){h.value=e("backup.messages.createBackupFailed",{err:t.message})}finally{G.value=!1}}const H=c(!1),Q=c(!1),w=c(null),z=c("");function Ae(t){w.value=t,z.value="",H.value=!0}async function Be(){if(w.value){Q.value=!0,z.value="";try{const{output:t}=await d.execute(`backup restore ${w.value.id}`,6e4);z.value=t||e("backup.backup.restoreDefaultMessage")}catch(t){z.value=e("backup.messages.restoreFailed",{err:t.message})}finally{Q.value=!1}}}const W=c(!1),R=c(""),O=c(!1),N=c(""),j=c(0),X=c(""),x=c(""),Y=c(!1),Z=c(!1),C=c([]),Le=pe(()=>[{title:e("backup.conflictColumns.path"),key:"path"},{title:e("backup.conflictColumns.type"),key:"type",width:120}]);async function ee(){W.value=!0,R.value="";try{const{output:t}=await d.execute("sync status --json",15e3),l=T(t);l?(O.value=l.online||l.synced||l.status==="online"||!1,N.value=O.value?e("backup.sync.synced"):e("backup.sync.notSynced"),j.value=l.pending??l.pendingChanges??0,X.value=l.lastSync||l.lastSyncTime||""):Me(t)}catch(t){R.value=e("backup.messages.loadSyncFailed",{err:t.message})}finally{W.value=!1}}function Me(t){if(!t){N.value=e("backup.sync.unknown");return}O.value=/synced|online|up.to.date/i.test(t),N.value=O.value?e("backup.sync.synced"):e("backup.sync.notSynced");const l=t.match(/pending[:\s]+(\d+)/i);j.value=l?parseInt(l[1]):0;const k=t.match(/last[:\s]+(.+)/i);k&&(X.value=k[1].trim())}async function Oe(){Y.value=!0,x.value="";try{const{output:t}=await d.execute("sync push",3e4);x.value=t||e("backup.sync.pushDefaultMessage"),await ee()}catch(t){x.value=e("backup.messages.pushFailed",{err:t.message})}finally{Y.value=!1}}async function Pe(){Z.value=!0,x.value="";try{const{output:t}=await d.execute("sync pull",3e4);x.value=t||e("backup.sync.pullDefaultMessage"),await ee()}catch(t){x.value=e("backup.messages.pullFailed",{err:t.message})}finally{Z.value=!1}}async function Fe(){try{const{output:t}=await d.execute("sync conflicts --json",15e3),l=T(t);Array.isArray(l)?C.value=l:l&&Array.isArray(l.conflicts)?C.value=l.conflicts:C.value=[]}catch{C.value=[]}}const ae=c(!1),E=c(""),S=c(!1),te=c(""),oe=c(!1),P=c(""),A=c([]),Te=pe(()=>[{title:e("backup.pinColumns.cid"),key:"cid"},{title:e("backup.pinColumns.name"),key:"name"},{title:e("backup.pinColumns.size"),key:"size",width:120},{title:e("backup.pinColumns.pinnedAt"),key:"pinnedAt"},{title:e("backup.pinColumns.action"),key:"action",width:120}]);async function Ie(){ae.value=!0,E.value="";try{const{output:t}=await d.execute("ipfs status --json",15e3),l=T(t);if(l)S.value=l.online||l.status==="online"||l.connected||!1,te.value=l.peerId||l.id||"";else{S.value=t?/online|connected|running/i.test(t):!1;const k=t?t.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;te.value=k?k[1]:""}}catch(t){E.value=e("backup.messages.loadIpfsFailed",{err:t.message})}finally{ae.value=!1}}async function se(){oe.value=!0,P.value="";try{const{output:t}=await d.execute("ipfs pins --json",15e3),l=T(t);Array.isArray(l)?A.value=l:l&&Array.isArray(l.pins)?A.value=l.pins:A.value=[]}catch(t){P.value=e("backup.messages.loadPinsFailed",{err:t.message})}finally{oe.value=!1}}const le=c(!1),ne=c(!1),$=c(""),F=c("");async function ye(){if($.value.trim()){ne.value=!0,F.value="";try{const{output:t}=await d.execute(`ipfs pin "${$.value.trim()}"`,3e4);F.value=t||e("backup.ipfs.pinDefaultSuccess"),await se()}catch(t){F.value=e("backup.messages.pinFailed",{err:t.message})}finally{ne.value=!1}}}async function De(t){try{await d.execute(`ipfs unpin ${t.cid}`,15e3),await se()}catch(l){P.value=e("backup.messages.unpinFailed",{err:l.message})}}function T(t){return Je(t)}async function Re(){if(g.value.length){V.value=!0;try{const t=await ze.saveJson({schema:1,exportedAt:new Date().toISOString(),count:g.value.length,backups:g.value},{defaultPath:`backup-list-${new Date().toISOString().slice(0,10)}.json`});if(t.canceled)return;xe.success(t.path?e("backup.messages.exportOk",{count:g.value.length,path:t.path}):e("backup.messages.exportOkDefault"))}catch(t){xe.error(e("backup.messages.exportFailed",{err:t.message||t}))}finally{V.value=!1}}}async function be(){J.value=!0;try{await Promise.all([fe(),ee(),Fe(),Ie(),se()])}finally{J.value=!1}}return We(be),(t,l)=>{const k=y("a-button"),ce=y("a-space"),U=y("a-spin"),ke=y("a-empty"),ue=y("a-table"),m=y("a-card"),ge=y("a-modal"),ie=y("a-tab-pane"),B=y("a-statistic"),L=y("a-col"),me=y("a-row"),_e=y("a-tag"),Ne=y("a-popconfirm"),je=y("a-input"),Ee=y("a-tabs");return u(),i("div",null,[f("div",Ye,[f("div",null,[f("h2",Ze,n(a(e)("backup.title")),1),f("p",ea,n(a(e)("backup.subtitle")),1)]),o(k,{type:"primary",ghost:"",loading:J.value,onClick:be},{icon:s(()=>[o(a(Ge))]),default:s(()=>[b(" "+n(a(e)("backup.refresh")),1)]),_:1},8,["loading"])]),o(Ee,{activeKey:ve.value,"onUpdate:activeKey":l[4]||(l[4]=p=>ve.value=p),type:"card"},{default:s(()=>[o(ie,{key:"backup"},{tab:s(()=>[o(a(re)),b(" "+n(a(e)("backup.tabs.backup")),1)]),default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:s(()=>[o(ce,null,{default:s(()=>[o(a(re)),f("span",null,n(a(e)("backup.backup.cardTitle")),1)]),_:1})]),extra:s(()=>[o(ce,null,{default:s(()=>[o(k,{disabled:!g.value.length,loading:V.value,onClick:Re},{icon:s(()=>[o(a(He))]),default:s(()=>[b(" "+n(a(e)("backup.backup.exportButton")),1)]),_:1},8,["disabled","loading"]),o(k,{type:"primary",loading:G.value,onClick:Se},{icon:s(()=>[o(a(he))]),default:s(()=>[b(" "+n(a(e)("backup.backup.createButton")),1)]),_:1},8,["loading"])]),_:1})]),default:s(()=>[q.value?(u(),i("div",aa,[o(U)])):g.value.length===0&&!h.value?(u(),_(ke,{key:1,description:a(e)("backup.backup.emptyText")},null,8,["description"])):r("",!0),g.value.length>0?(u(),_(ue,{key:2,columns:Ce.value,"data-source":g.value,pagination:!1,size:"small","row-key":"id"},{bodyCell:s(({column:p,record:v})=>[p.key==="id"?(u(),i("span",ta,n(v.id.length>20?v.id.slice(0,20)+"...":v.id),1)):r("",!0),p.key==="size"?(u(),i("span",oa,n(a(we)(v.size)),1)):r("",!0),p.key==="createdAt"?(u(),i("span",sa,n(v.createdAt||"-"),1)):r("",!0),p.key==="action"?(u(),_(k,{key:3,size:"small",type:"link",onClick:$e=>Ae(v)},{default:s(()=>[b(n(a(e)("backup.backupColumns.restore")),1)]),_:1},8,["onClick"])):r("",!0)]),_:1},8,["columns","data-source"])):r("",!0),h.value?(u(),i("div",la,[f("div",na,n(a(e)("backup.backup.lastResultLabel")),1),f("pre",ca,n(h.value),1)])):r("",!0),M.value?(u(),i("div",ua,n(M.value),1)):r("",!0)]),_:1}),o(ge,{open:H.value,"onUpdate:open":l[0]||(l[0]=p=>H.value=p),title:a(e)("backup.backup.restoreTitle"),"ok-text":a(e)("backup.backup.restoreOk"),"cancel-text":a(e)("common.cancel"),"confirm-loading":Q.value,onOk:Be,"ok-type":"danger"},{default:s(()=>[f("p",ia,n(a(e)("backup.backup.restoreIntro")),1),w.value?(u(),i("div",ra,[f("div",null,[f("strong",null,n(a(e)("backup.backup.backupIdPrefix")),1),l[5]||(l[5]=b()),f("span",pa,n(w.value.id),1)]),w.value.createdAt?(u(),i("div",da,[f("strong",null,n(a(e)("backup.backup.createdAtPrefix")),1),b(" "+n(w.value.createdAt),1)])):r("",!0)])):r("",!0),z.value?(u(),i("div",va,[f("pre",fa,n(z.value),1)])):r("",!0)]),_:1},8,["open","title","ok-text","cancel-text","confirm-loading"])]),_:1}),o(ie,{key:"sync"},{tab:s(()=>[o(a(I)),b(" "+n(a(e)("backup.tabs.sync")),1)]),default:s(()=>[W.value?(u(),i("div",ya,[o(U)])):(u(),i(Xe,{key:1},[o(me,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.sync.statusLabel"),value:N.value,"value-style":{color:O.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:s(()=>[o(a(I))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.sync.pendingLabel"),value:j.value,"value-style":{color:j.value>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:s(()=>[o(a(I))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.sync.lastSyncLabel"),value:X.value||a(e)("backup.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:s(()=>[o(a(I))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),o(ce,{style:{"margin-bottom":"16px"}},{default:s(()=>[o(k,{loading:Y.value,onClick:Oe,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[o(a(re))]),default:s(()=>[b(" "+n(a(e)("backup.sync.pushButton")),1)]),_:1},8,["loading"]),o(k,{loading:Z.value,onClick:Pe,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[o(a(I))]),default:s(()=>[b(" "+n(a(e)("backup.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),x.value?(u(),i("div",ba,[f("div",ka,n(a(e)("backup.sync.outputLabel")),1),f("pre",ga,n(x.value),1)])):r("",!0),C.value.length>0?(u(),_(m,{key:1,title:a(e)("backup.sync.conflictsTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(ue,{columns:Le.value,"data-source":C.value,pagination:!1,size:"small","row-key":"path"},{bodyCell:s(({column:p,record:v})=>[p.key==="path"?(u(),i("span",ma,n(v.path),1)):r("",!0),p.key==="type"?(u(),_(_e,{key:1,color:"red"},{default:s(()=>[b(n(v.type||a(e)("backup.sync.conflictDefault")),1)]),_:2},1024)):r("",!0)]),_:1},8,["columns","data-source"])]),_:1},8,["title"])):r("",!0)],64)),R.value?(u(),i("div",_a,n(R.value),1)):r("",!0)]),_:1}),o(ie,{key:"ipfs"},{tab:s(()=>[o(a(K)),b(" "+n(a(e)("backup.tabs.ipfs")),1)]),default:s(()=>[o(m,{title:a(e)("backup.ipfs.statusCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:s(()=>[o(_e,{color:S.value?"green":"default"},{default:s(()=>[b(n(S.value?a(e)("backup.ipfs.online"):a(e)("backup.ipfs.offline")),1)]),_:1},8,["color"])]),default:s(()=>[ae.value?(u(),i("div",xa,[o(U)])):(u(),_(me,{key:1,gutter:[16,16]},{default:s(()=>[o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.ipfs.nodeStatusLabel"),value:S.value?a(e)("backup.ipfs.connected"):a(e)("backup.ipfs.disconnected"),"value-style":{color:S.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:s(()=>[o(a(K))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.ipfs.pinnedLabel"),value:A.value.length,"value-style":{fontSize:"16px"}},{prefix:s(()=>[o(a(K))]),_:1},8,["title","value"])]),_:1})]),_:1}),o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.ipfs.peerIdLabel"),value:te.value||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:s(()=>[o(a(K))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})),E.value?(u(),i("div",ha,n(E.value),1)):r("",!0)]),_:1},8,["title"]),o(m,{title:a(e)("backup.ipfs.pinListTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:s(()=>[o(k,{size:"small",onClick:l[1]||(l[1]=p=>le.value=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[o(a(he))]),default:s(()=>[b(" "+n(a(e)("backup.ipfs.pinFileButton")),1)]),_:1})]),default:s(()=>[oe.value?(u(),i("div",wa,[o(U)])):A.value.length===0?(u(),_(ke,{key:1,description:a(e)("backup.ipfs.pinEmptyText")},null,8,["description"])):(u(),_(ue,{key:2,columns:Te.value,"data-source":A.value,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:s(({column:p,record:v})=>[p.key==="cid"?(u(),i("span",za,n(v.cid.length>24?v.cid.slice(0,24)+"...":v.cid),1)):r("",!0),p.key==="name"?(u(),i("span",Ca,n(v.name||"-"),1)):r("",!0),p.key==="size"?(u(),i("span",Sa,n(a(we)(v.size)),1)):r("",!0),p.key==="pinnedAt"?(u(),i("span",Aa,n(v.pinnedAt||"-"),1)):r("",!0),p.key==="action"?(u(),_(Ne,{key:4,title:a(e)("backup.ipfs.unpinConfirm"),"ok-text":a(e)("backup.ipfs.unpinOk"),"cancel-text":a(e)("common.cancel"),onConfirm:$e=>De(v)},{default:s(()=>[o(k,{size:"small",type:"link",danger:""},{default:s(()=>[o(a(Qe)),b(" "+n(a(e)("backup.ipfs.unpinAction")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):r("",!0)]),_:1},8,["columns","data-source"])),P.value?(u(),i("div",Ba,n(P.value),1)):r("",!0)]),_:1},8,["title"]),o(ge,{open:le.value,"onUpdate:open":l[3]||(l[3]=p=>le.value=p),title:a(e)("backup.ipfs.pinModalTitle"),"confirm-loading":ne.value,onOk:ye,"ok-text":a(e)("backup.ipfs.pinModalOk"),"cancel-text":a(e)("common.cancel")},{default:s(()=>[f("div",La,n(a(e)("backup.ipfs.pinModalIntro")),1),o(je,{value:$.value,"onUpdate:value":l[2]||(l[2]=p=>$.value=p),placeholder:a(e)("backup.ipfs.pinModalPlaceholder"),onPressEnter:ye},null,8,["value","placeholder"]),F.value?(u(),i("div",Ma,[f("pre",Oa,n(F.value),1)])):r("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}}},Na=Ue(Pa,[["__scopeId","data-v-9db8d2e8"]]);export{Na as default};
|
|
1
|
+
import{_ as Ue,b as Ke,u as Ve,t as Je,d as xe}from"./index-CzoKAiyT.js";import{u as qe}from"./useFs-T5lg6SpD.js";import{R as Ge,aA as He,at as he,_ as re,q as I,aT as K,aR as Qe}from"./icons-DlxlFL4g.js";import{o as We,M as i,R as f,P as n,u as a,c as o,N as s,r as c,K as y,L as u,O as b,Q as _,S as r,F as Xe,f as pe}from"./vendor-BXcBOG8b.js";import"./useShellMode-CgR0wCYM.js";const de=["B","KB","MB","GB","TB","PB","EB"];function we(D){if(D==null||isNaN(D))return"-";const e=Number(D);if(e<0)return"-";if(e===0)return"0 B";let d=Math.floor(Math.log(e)/Math.log(1024));return d<0&&(d=0),d>=de.length&&(d=de.length-1),(e/Math.pow(1024,d)).toFixed(d>0?1:0)+" "+de[d]}const Ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},ea={class:"page-sub"},aa={key:0,style:{"text-align":"center",padding:"30px"}},ta={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},oa={key:1},sa={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},la={key:3,style:{"margin-top":"16px"}},na={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},ca={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"}},ua={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ia={style:{color:"var(--text-secondary)"}},ra={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},pa={style:{"font-family":"monospace"}},da={key:0},va={key:1,style:{"margin-top":"12px"}},fa={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"}},ya={key:0,style:{"text-align":"center",padding:"30px"}},ba={key:0,style:{"margin-bottom":"16px"}},ka={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},ga={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"}},ma={key:0,style:{"font-family":"monospace","font-size":"12px"}},_a={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},xa={key:0,style:{"text-align":"center",padding:"30px"}},ha={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},wa={key:0,style:{"text-align":"center",padding:"30px"}},za={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Ca={key:1},Sa={key:2},Aa={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},Ba={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},La={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},Ma={key:0,style:{"margin-top":"12px"}},Oa={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"}},Pa={__name:"Backup",setup(D){const{t:e}=Ke(),d=Ve(),ze=qe(),V=c(!1),ve=c("backup"),J=c(!1),q=c(!1),G=c(!1),M=c(""),g=c([]),h=c(""),Ce=pe(()=>[{title:e("backup.backupColumns.id"),key:"id"},{title:e("backup.backupColumns.size"),key:"size",width:120},{title:e("backup.backupColumns.createdAt"),key:"createdAt"},{title:e("backup.backupColumns.action"),key:"action",width:100}]);async function fe(){q.value=!0,M.value="";try{const{output:t}=await d.execute("backup list --json",15e3),l=T(t);Array.isArray(l)?g.value=l:l&&Array.isArray(l.backups)?g.value=l.backups:(g.value=[],t&&t.trim()&&(h.value=t))}catch(t){M.value=e("backup.messages.loadBackupsFailed",{err:t.message})}finally{q.value=!1}}async function Se(){G.value=!0,h.value="",M.value="";try{const{output:t}=await d.execute("backup create --json",3e4);h.value=t||e("backup.backup.createDefaultMessage"),await fe()}catch(t){h.value=e("backup.messages.createBackupFailed",{err:t.message})}finally{G.value=!1}}const H=c(!1),Q=c(!1),w=c(null),z=c("");function Ae(t){w.value=t,z.value="",H.value=!0}async function Be(){if(w.value){Q.value=!0,z.value="";try{const{output:t}=await d.execute(`backup restore ${w.value.id}`,6e4);z.value=t||e("backup.backup.restoreDefaultMessage")}catch(t){z.value=e("backup.messages.restoreFailed",{err:t.message})}finally{Q.value=!1}}}const W=c(!1),R=c(""),O=c(!1),N=c(""),j=c(0),X=c(""),x=c(""),Y=c(!1),Z=c(!1),C=c([]),Le=pe(()=>[{title:e("backup.conflictColumns.path"),key:"path"},{title:e("backup.conflictColumns.type"),key:"type",width:120}]);async function ee(){W.value=!0,R.value="";try{const{output:t}=await d.execute("sync status --json",15e3),l=T(t);l?(O.value=l.online||l.synced||l.status==="online"||!1,N.value=O.value?e("backup.sync.synced"):e("backup.sync.notSynced"),j.value=l.pending??l.pendingChanges??0,X.value=l.lastSync||l.lastSyncTime||""):Me(t)}catch(t){R.value=e("backup.messages.loadSyncFailed",{err:t.message})}finally{W.value=!1}}function Me(t){if(!t){N.value=e("backup.sync.unknown");return}O.value=/synced|online|up.to.date/i.test(t),N.value=O.value?e("backup.sync.synced"):e("backup.sync.notSynced");const l=t.match(/pending[:\s]+(\d+)/i);j.value=l?parseInt(l[1]):0;const k=t.match(/last[:\s]+(.+)/i);k&&(X.value=k[1].trim())}async function Oe(){Y.value=!0,x.value="";try{const{output:t}=await d.execute("sync push",3e4);x.value=t||e("backup.sync.pushDefaultMessage"),await ee()}catch(t){x.value=e("backup.messages.pushFailed",{err:t.message})}finally{Y.value=!1}}async function Pe(){Z.value=!0,x.value="";try{const{output:t}=await d.execute("sync pull",3e4);x.value=t||e("backup.sync.pullDefaultMessage"),await ee()}catch(t){x.value=e("backup.messages.pullFailed",{err:t.message})}finally{Z.value=!1}}async function Fe(){try{const{output:t}=await d.execute("sync conflicts --json",15e3),l=T(t);Array.isArray(l)?C.value=l:l&&Array.isArray(l.conflicts)?C.value=l.conflicts:C.value=[]}catch{C.value=[]}}const ae=c(!1),E=c(""),S=c(!1),te=c(""),oe=c(!1),P=c(""),A=c([]),Te=pe(()=>[{title:e("backup.pinColumns.cid"),key:"cid"},{title:e("backup.pinColumns.name"),key:"name"},{title:e("backup.pinColumns.size"),key:"size",width:120},{title:e("backup.pinColumns.pinnedAt"),key:"pinnedAt"},{title:e("backup.pinColumns.action"),key:"action",width:120}]);async function Ie(){ae.value=!0,E.value="";try{const{output:t}=await d.execute("ipfs status --json",15e3),l=T(t);if(l)S.value=l.online||l.status==="online"||l.connected||!1,te.value=l.peerId||l.id||"";else{S.value=t?/online|connected|running/i.test(t):!1;const k=t?t.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;te.value=k?k[1]:""}}catch(t){E.value=e("backup.messages.loadIpfsFailed",{err:t.message})}finally{ae.value=!1}}async function se(){oe.value=!0,P.value="";try{const{output:t}=await d.execute("ipfs pins --json",15e3),l=T(t);Array.isArray(l)?A.value=l:l&&Array.isArray(l.pins)?A.value=l.pins:A.value=[]}catch(t){P.value=e("backup.messages.loadPinsFailed",{err:t.message})}finally{oe.value=!1}}const le=c(!1),ne=c(!1),$=c(""),F=c("");async function ye(){if($.value.trim()){ne.value=!0,F.value="";try{const{output:t}=await d.execute(`ipfs pin "${$.value.trim()}"`,3e4);F.value=t||e("backup.ipfs.pinDefaultSuccess"),await se()}catch(t){F.value=e("backup.messages.pinFailed",{err:t.message})}finally{ne.value=!1}}}async function De(t){try{await d.execute(`ipfs unpin ${t.cid}`,15e3),await se()}catch(l){P.value=e("backup.messages.unpinFailed",{err:l.message})}}function T(t){return Je(t)}async function Re(){if(g.value.length){V.value=!0;try{const t=await ze.saveJson({schema:1,exportedAt:new Date().toISOString(),count:g.value.length,backups:g.value},{defaultPath:`backup-list-${new Date().toISOString().slice(0,10)}.json`});if(t.canceled)return;xe.success(t.path?e("backup.messages.exportOk",{count:g.value.length,path:t.path}):e("backup.messages.exportOkDefault"))}catch(t){xe.error(e("backup.messages.exportFailed",{err:t.message||t}))}finally{V.value=!1}}}async function be(){J.value=!0;try{await Promise.all([fe(),ee(),Fe(),Ie(),se()])}finally{J.value=!1}}return We(be),(t,l)=>{const k=y("a-button"),ce=y("a-space"),U=y("a-spin"),ke=y("a-empty"),ue=y("a-table"),m=y("a-card"),ge=y("a-modal"),ie=y("a-tab-pane"),B=y("a-statistic"),L=y("a-col"),me=y("a-row"),_e=y("a-tag"),Ne=y("a-popconfirm"),je=y("a-input"),Ee=y("a-tabs");return u(),i("div",null,[f("div",Ye,[f("div",null,[f("h2",Ze,n(a(e)("backup.title")),1),f("p",ea,n(a(e)("backup.subtitle")),1)]),o(k,{type:"primary",ghost:"",loading:J.value,onClick:be},{icon:s(()=>[o(a(Ge))]),default:s(()=>[b(" "+n(a(e)("backup.refresh")),1)]),_:1},8,["loading"])]),o(Ee,{activeKey:ve.value,"onUpdate:activeKey":l[4]||(l[4]=p=>ve.value=p),type:"card"},{default:s(()=>[o(ie,{key:"backup"},{tab:s(()=>[o(a(re)),b(" "+n(a(e)("backup.tabs.backup")),1)]),default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:s(()=>[o(ce,null,{default:s(()=>[o(a(re)),f("span",null,n(a(e)("backup.backup.cardTitle")),1)]),_:1})]),extra:s(()=>[o(ce,null,{default:s(()=>[o(k,{disabled:!g.value.length,loading:V.value,onClick:Re},{icon:s(()=>[o(a(He))]),default:s(()=>[b(" "+n(a(e)("backup.backup.exportButton")),1)]),_:1},8,["disabled","loading"]),o(k,{type:"primary",loading:G.value,onClick:Se},{icon:s(()=>[o(a(he))]),default:s(()=>[b(" "+n(a(e)("backup.backup.createButton")),1)]),_:1},8,["loading"])]),_:1})]),default:s(()=>[q.value?(u(),i("div",aa,[o(U)])):g.value.length===0&&!h.value?(u(),_(ke,{key:1,description:a(e)("backup.backup.emptyText")},null,8,["description"])):r("",!0),g.value.length>0?(u(),_(ue,{key:2,columns:Ce.value,"data-source":g.value,pagination:!1,size:"small","row-key":"id"},{bodyCell:s(({column:p,record:v})=>[p.key==="id"?(u(),i("span",ta,n(v.id.length>20?v.id.slice(0,20)+"...":v.id),1)):r("",!0),p.key==="size"?(u(),i("span",oa,n(a(we)(v.size)),1)):r("",!0),p.key==="createdAt"?(u(),i("span",sa,n(v.createdAt||"-"),1)):r("",!0),p.key==="action"?(u(),_(k,{key:3,size:"small",type:"link",onClick:$e=>Ae(v)},{default:s(()=>[b(n(a(e)("backup.backupColumns.restore")),1)]),_:1},8,["onClick"])):r("",!0)]),_:1},8,["columns","data-source"])):r("",!0),h.value?(u(),i("div",la,[f("div",na,n(a(e)("backup.backup.lastResultLabel")),1),f("pre",ca,n(h.value),1)])):r("",!0),M.value?(u(),i("div",ua,n(M.value),1)):r("",!0)]),_:1}),o(ge,{open:H.value,"onUpdate:open":l[0]||(l[0]=p=>H.value=p),title:a(e)("backup.backup.restoreTitle"),"ok-text":a(e)("backup.backup.restoreOk"),"cancel-text":a(e)("common.cancel"),"confirm-loading":Q.value,onOk:Be,"ok-type":"danger"},{default:s(()=>[f("p",ia,n(a(e)("backup.backup.restoreIntro")),1),w.value?(u(),i("div",ra,[f("div",null,[f("strong",null,n(a(e)("backup.backup.backupIdPrefix")),1),l[5]||(l[5]=b()),f("span",pa,n(w.value.id),1)]),w.value.createdAt?(u(),i("div",da,[f("strong",null,n(a(e)("backup.backup.createdAtPrefix")),1),b(" "+n(w.value.createdAt),1)])):r("",!0)])):r("",!0),z.value?(u(),i("div",va,[f("pre",fa,n(z.value),1)])):r("",!0)]),_:1},8,["open","title","ok-text","cancel-text","confirm-loading"])]),_:1}),o(ie,{key:"sync"},{tab:s(()=>[o(a(I)),b(" "+n(a(e)("backup.tabs.sync")),1)]),default:s(()=>[W.value?(u(),i("div",ya,[o(U)])):(u(),i(Xe,{key:1},[o(me,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.sync.statusLabel"),value:N.value,"value-style":{color:O.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:s(()=>[o(a(I))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.sync.pendingLabel"),value:j.value,"value-style":{color:j.value>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:s(()=>[o(a(I))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.sync.lastSyncLabel"),value:X.value||a(e)("backup.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:s(()=>[o(a(I))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),o(ce,{style:{"margin-bottom":"16px"}},{default:s(()=>[o(k,{loading:Y.value,onClick:Oe,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[o(a(re))]),default:s(()=>[b(" "+n(a(e)("backup.sync.pushButton")),1)]),_:1},8,["loading"]),o(k,{loading:Z.value,onClick:Pe,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[o(a(I))]),default:s(()=>[b(" "+n(a(e)("backup.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),x.value?(u(),i("div",ba,[f("div",ka,n(a(e)("backup.sync.outputLabel")),1),f("pre",ga,n(x.value),1)])):r("",!0),C.value.length>0?(u(),_(m,{key:1,title:a(e)("backup.sync.conflictsTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(ue,{columns:Le.value,"data-source":C.value,pagination:!1,size:"small","row-key":"path"},{bodyCell:s(({column:p,record:v})=>[p.key==="path"?(u(),i("span",ma,n(v.path),1)):r("",!0),p.key==="type"?(u(),_(_e,{key:1,color:"red"},{default:s(()=>[b(n(v.type||a(e)("backup.sync.conflictDefault")),1)]),_:2},1024)):r("",!0)]),_:1},8,["columns","data-source"])]),_:1},8,["title"])):r("",!0)],64)),R.value?(u(),i("div",_a,n(R.value),1)):r("",!0)]),_:1}),o(ie,{key:"ipfs"},{tab:s(()=>[o(a(K)),b(" "+n(a(e)("backup.tabs.ipfs")),1)]),default:s(()=>[o(m,{title:a(e)("backup.ipfs.statusCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:s(()=>[o(_e,{color:S.value?"green":"default"},{default:s(()=>[b(n(S.value?a(e)("backup.ipfs.online"):a(e)("backup.ipfs.offline")),1)]),_:1},8,["color"])]),default:s(()=>[ae.value?(u(),i("div",xa,[o(U)])):(u(),_(me,{key:1,gutter:[16,16]},{default:s(()=>[o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.ipfs.nodeStatusLabel"),value:S.value?a(e)("backup.ipfs.connected"):a(e)("backup.ipfs.disconnected"),"value-style":{color:S.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:s(()=>[o(a(K))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.ipfs.pinnedLabel"),value:A.value.length,"value-style":{fontSize:"16px"}},{prefix:s(()=>[o(a(K))]),_:1},8,["title","value"])]),_:1})]),_:1}),o(L,{xs:24,sm:8},{default:s(()=>[o(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(B,{title:a(e)("backup.ipfs.peerIdLabel"),value:te.value||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:s(()=>[o(a(K))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})),E.value?(u(),i("div",ha,n(E.value),1)):r("",!0)]),_:1},8,["title"]),o(m,{title:a(e)("backup.ipfs.pinListTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:s(()=>[o(k,{size:"small",onClick:l[1]||(l[1]=p=>le.value=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[o(a(he))]),default:s(()=>[b(" "+n(a(e)("backup.ipfs.pinFileButton")),1)]),_:1})]),default:s(()=>[oe.value?(u(),i("div",wa,[o(U)])):A.value.length===0?(u(),_(ke,{key:1,description:a(e)("backup.ipfs.pinEmptyText")},null,8,["description"])):(u(),_(ue,{key:2,columns:Te.value,"data-source":A.value,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:s(({column:p,record:v})=>[p.key==="cid"?(u(),i("span",za,n(v.cid.length>24?v.cid.slice(0,24)+"...":v.cid),1)):r("",!0),p.key==="name"?(u(),i("span",Ca,n(v.name||"-"),1)):r("",!0),p.key==="size"?(u(),i("span",Sa,n(a(we)(v.size)),1)):r("",!0),p.key==="pinnedAt"?(u(),i("span",Aa,n(v.pinnedAt||"-"),1)):r("",!0),p.key==="action"?(u(),_(Ne,{key:4,title:a(e)("backup.ipfs.unpinConfirm"),"ok-text":a(e)("backup.ipfs.unpinOk"),"cancel-text":a(e)("common.cancel"),onConfirm:$e=>De(v)},{default:s(()=>[o(k,{size:"small",type:"link",danger:""},{default:s(()=>[o(a(Qe)),b(" "+n(a(e)("backup.ipfs.unpinAction")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):r("",!0)]),_:1},8,["columns","data-source"])),P.value?(u(),i("div",Ba,n(P.value),1)):r("",!0)]),_:1},8,["title"]),o(ge,{open:le.value,"onUpdate:open":l[3]||(l[3]=p=>le.value=p),title:a(e)("backup.ipfs.pinModalTitle"),"confirm-loading":ne.value,onOk:ye,"ok-text":a(e)("backup.ipfs.pinModalOk"),"cancel-text":a(e)("common.cancel")},{default:s(()=>[f("div",La,n(a(e)("backup.ipfs.pinModalIntro")),1),o(je,{value:$.value,"onUpdate:value":l[2]||(l[2]=p=>$.value=p),placeholder:a(e)("backup.ipfs.pinModalPlaceholder"),onPressEnter:ye},null,8,["value","placeholder"]),F.value?(u(),i("div",Ma,[f("pre",Oa,n(F.value),1)])):r("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}}},Na=Ue(Pa,[["__scopeId","data-v-9db8d2e8"]]);export{Na as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{P as s,f}from"./index-
|
|
1
|
+
import{P as s,f}from"./index-CzoKAiyT.js";import{d as w,c as O,s as h,w as k,f as b,r as S}from"./vendor-BXcBOG8b.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};
|