chainlesschain 0.162.83 → 0.162.85
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/package.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-D5clZ6G2.js → AIOps-9s5boloe.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-3eQeksbm.js → ActionButton-nuq5gtIb.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BK_rVOdn.js → Analytics-DrDHYSjZ.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-CRdXxdYx.js → AppLayout-BDs4ULs3.js} +4 -4
- package/src/assets/web-panel/assets/{Audit-nm2JDlFV.js → Audit-DaqX39ZA.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-CNBCIHz2.js → Backup-ZpAZcYWU.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-ydDdLJ4G.js → BaseInput-rEL4bCmz.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DSXE_wj8.js → Chat-LkXtveTN.js} +4 -4
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-BXq5_Wmg.js → ChatBubbleRenderer-BdkD-opG.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-Q88NMnUT.js → Checkbox-B_nJ54jp.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BnAsBKi-.js → Codegen-C0NHbbUn.js} +1 -1
- package/src/assets/web-panel/assets/{Col-Z0uKQ8wp.js → Col-Bijl1DuU.js} +1 -1
- package/src/assets/web-panel/assets/{Community-D_mwBjBi.js → Community-CVxkvzf7.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-GDJKV58z.js → Compact-CXmuCEc2.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DkILaUon.js → Compliance-CsP-YVrE.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BmvorDct.js → Cowork-B31Nw8vF.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-xl9kIF-K.js → Cron-Bo_cDFwM.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-kd20yZ8k.js → Crosschain-D0C8hYOr.js} +1 -1
- package/src/assets/web-panel/assets/{DID-uWUHDhZC.js → DID-eq7i-KXB.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-Bzowenln.js → Dashboard-CVRBWNgx.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-D61Ipq9d.js → Dropdown-DcEm3tiv.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-B7B3l-XQ.js → EmailListRenderer-B16xNYan.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DYNCXD5N.js → FamilyGuardDashboard-C1THZ4cA.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BInggTIg.js → Federation-BO6tO2cA.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-C5QahcLV.js → FormItemContext-BLCjbBnQ.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CihURe0o.js → GenericCardRenderer-HGQG6O9G.js} +1 -1
- package/src/assets/web-panel/assets/{Git-M3A1Io0L.js → Git-DN44Wtw8.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BwiburwE.js → Governance-BwUlWRZa.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DYqYqRdQ.js → Inference-CI7XUJpq.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DSQtMRuu.js → KnowledgeGraph-D5AFdDA1.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CSv_AEOE.js → Logs-ChxfsVjf.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-DHwmVF8C.js → Marketplace-fzmD7edl.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BiX_gw_7.js → McpTools-egeEEiOo.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-CI5rNn-7.js → Memory-ClfkU0Zc.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CfzmrNmB.js → MobileBridge-CZP0a7ug.js} +2 -2
- package/src/assets/web-panel/assets/{MobileProjects-Be6BolGS.js → MobileProjects-ClhNmxpO.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-f5cjTT3Z.js → Mtc-2W2NWMiR.js} +5 -5
- package/src/assets/web-panel/assets/{MtcAudit-BFGPj2S3.js → MtcAudit-BTH5f5vy.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-BxnPK9G3.js → Multisig-Dm-8GZVC.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CG00J0f3.js → NLProgramming-CWvQYw0f.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CRzkqjOv.js → Notes-Ba9QC8Nt.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-gE3UfYJN.js → NotificationSettings-DhGUAxEK.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-DwM-WxqV.js +1 -0
- package/src/assets/web-panel/assets/{Organization-DF-RWCDw.js → Organization-BE6PoYoV.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-DBDRjR3X.js → Overflow-CidZn_Vh.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DWa-ob-g.js → P2P-D8KPm4lA.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-xUkEUgL2.js → PdhVaultBrowser-uALWSx7o.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-DlsHAFXy.js → Permissions-DBRrTNke.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-B9OE6l49.js → PersonalDataHub-DYhCXT0Y.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-NeqShyjv.js → Pipeline-CcP7z75i.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-PnD-FHqV.js → Privacy-DIL17ASI.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BVKsBEh3.js → ProjectInit-UbjZrOSd.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-CseYRiEX.js → ProjectSettings-DEi3eB8z.js} +2 -2
- package/src/assets/web-panel/assets/Projects-DhHbGqmv.js +1 -0
- package/src/assets/web-panel/assets/{Providers-CWedQXMM.js → Providers-BDh_Pzi1.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-63zSY3zp.js → QuickAsk-BDRMDklR.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CKNMvGx7.js → Recommend-SiCcAGiO.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-C7ShHl_z.js → Reputation-CHG51BYr.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BmcTGqZ2.js → Row-syZxxDmc.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-DwiCGY8Z.js → RssFeed-CLfcVChu.js} +3 -3
- package/src/assets/web-panel/assets/{Search-QMl4RNua.js → Search-By-0Z5NO.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DYs16pCC.js → Security-gxHVmg1J.js} +4 -4
- package/src/assets/web-panel/assets/{Services-DJiNK0IN.js → Services-DGbUxRrs.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-66U5zsq4.js → Skeleton-JiyfBUz-.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CNx1kG1S.js → Skills-C4xFz9Bd.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DjuZmKCY.js → Sla-DyeMx6KJ.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-PQuRbruR.js → SpeechSettings-CY8SKnF9.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CGjh_EGx.js → SyncSettings-t3ZgQs5m.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-QZbex-Rg.js → Tasks-BavjuZCf.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-BPXiXpmV.js → Templates-dZ0agBUO.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BIp5A7TQ.js → Tenant-DEoI-tNH.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-DyFq-Mz2.js → Terminal-CvMaElnO.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-EfsIzHSs.js → TimelineRenderer-CUS477-i.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-B5EAkibw.js → Tokens-B9-haDN7.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-2kmiTx39.js → Trigger-den4MocY.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-IoQm_Uz3.js → Trust-DqnPipcT.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Cv2EqjAq.js → UkeySign-CmPLZGO2.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CdBJCJRx.js → VideoEditing-BcldEyuI.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CYfAoXU3.js → Wallet-Dap9Ydle.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-cKyQY5Pf.js → WebAuthn-cSNYDx2c.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-Cuv4VAn1.js → WorkflowEditor-R4gjxnPH.js} +1 -1
- package/src/assets/web-panel/assets/{chat-Dou41SaJ.js → chat-Dgaug64C.js} +1 -1
- package/src/assets/web-panel/assets/{colors-BnP8JvZJ.js → colors-CzEwsWwx.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CWCSOuGZ.js → compact-item-DWfrBoYH.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-8Jzpris1.js → createContext-DTQOT4YN.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-BpZTkDGI.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-081bLjmn.js → hasIn-BZffORzo.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTpF4Xdi.js → index-3of1AqNk.js} +1 -1
- package/src/assets/web-panel/assets/{index-CBIiTJw0.js → index-4Vr4kM9h.js} +1 -1
- package/src/assets/web-panel/assets/{index-CpJ1NyHk.js → index-B4Zncxxn.js} +1 -1
- package/src/assets/web-panel/assets/{index-CDDQ5GJM.js → index-B5fMCVs_.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQYAo_rM.js → index-BI6qopNT.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVRxwEtj.js → index-BgWQb3ab.js} +1 -1
- package/src/assets/web-panel/assets/{index-6ovmKZFr.js → index-BgqftzvZ.js} +3 -3
- package/src/assets/web-panel/assets/{index-DplJZBUJ.js → index-Bx9jDCsw.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2IuKroe.js → index-Bz3VXQHs.js} +1 -1
- package/src/assets/web-panel/assets/{index-pi5Cg49v.js → index-C-aIuwpi.js} +1 -1
- package/src/assets/web-panel/assets/{index-BV5jJ5XZ.js → index-C0YRxk_4.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0KSkd8K.js → index-C2pcp3GP.js} +1 -1
- package/src/assets/web-panel/assets/{index-ML6C2R9q.js → index-C7wTpk38.js} +1 -1
- package/src/assets/web-panel/assets/{index-CEBwfv6k.js → index-CCHs-tnT.js} +1 -1
- package/src/assets/web-panel/assets/{index-dSRPEXjB.js → index-CFNgAerJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-B3BxHtv0.js → index-CKs7M2hi.js} +1 -1
- package/src/assets/web-panel/assets/{index-DxlV4ilq.js → index-CN37EzzF.js} +1 -1
- package/src/assets/web-panel/assets/{index-DojNxG6D.js → index-CR6f7W_w.js} +1 -1
- package/src/assets/web-panel/assets/{index-CK8UwWmi.js → index-CS3ZkiIg.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmQOSWns.js → index-CU_6ho7E.js} +1 -1
- package/src/assets/web-panel/assets/{index-B8CfZwpW.js → index-CV7WR2SO.js} +1 -1
- package/src/assets/web-panel/assets/{index-DJj_l-A4.js → index-CXK7GqtK.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHRfZITq.js → index-CZWIp8ei.js} +1 -1
- package/src/assets/web-panel/assets/{index-DQai_JzS.js → index-Cl1aGzuh.js} +1 -1
- package/src/assets/web-panel/assets/index-CmQTcEwA.js +1 -0
- package/src/assets/web-panel/assets/{index-CbUfz8iM.js → index-D3XaluNc.js} +1 -1
- package/src/assets/web-panel/assets/{index-B1s-bdg9.js → index-D6B2nVTh.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlBSB7M0.js → index-D7h9VCvX.js} +1 -1
- package/src/assets/web-panel/assets/{index-Wq-xGp-R.js → index-DFYzC2yk.js} +1 -1
- package/src/assets/web-panel/assets/{index-8VBebvyu.js → index-DGjB2DHG.js} +1 -1
- package/src/assets/web-panel/assets/{index-DfwwFKea.js → index-DRAeb51w.js} +1 -1
- package/src/assets/web-panel/assets/{index-BXH5Kc7c.js → index-D_TSRl0O.js} +1 -1
- package/src/assets/web-panel/assets/{index-COiKkJDU.js → index-Dlc29Z4D.js} +1 -1
- package/src/assets/web-panel/assets/{index--PstlP1N.js → index-FEhVHCgN.js} +1 -1
- package/src/assets/web-panel/assets/{index-TtkPSmfs.js → index-MpkucUn9.js} +1 -1
- package/src/assets/web-panel/assets/{index-CeRe7yOt.js → index-OoAfomZi.js} +1 -1
- package/src/assets/web-panel/assets/{index-DVV9Yoj5.js → index-Ov5m4jW7.js} +1 -1
- package/src/assets/web-panel/assets/{index-3fSZzWbP.js → index-OvBi64nW.js} +1 -1
- package/src/assets/web-panel/assets/index-vzAexOhR.js +1 -0
- package/src/assets/web-panel/assets/{initDefaultProps-C8-M6qD9.js → initDefaultProps-B2v8eGiE.js} +1 -1
- package/src/assets/web-panel/assets/{motion-DpIOwjTZ.js → motion-CwkWvaNW.js} +1 -1
- package/src/assets/web-panel/assets/{move-BoqPw0Zr.js → move-BYJ058wL.js} +1 -1
- package/src/assets/web-panel/assets/{omit-gBR7QllC.js → omit-B3nuYFSU.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-sB3eltnD.js → pickAttrs-0hcTSJaT.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CaAWJJAv.js → placementArrow-D6IUlBKU.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DSTXN510.js → responsiveObserve-FKtuDNR2.js} +1 -1
- package/src/assets/web-panel/assets/{slide-xHJEfzhP.js → slide-B_QbBNod.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DrMd97n-.js → statusUtils-rGTl4pd7.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Cr09j4iw.js → styleChecker-DSo1kqIn.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-GiRw3HoR.js → useFlexGapSupport-CxkZaI6s.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-NoE2Uu_m.js → useFs-DrW3e3kn.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-D31yY2U7.js → usePersonalDataHub-CVKkAaON.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-Q2JxGiJd.js → vnode-lTUDdHso.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-CCefpdWQ.js → zoom-D9qIJ7kF.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/lib/image-input.js +64 -9
- package/src/repl/agent-repl.js +50 -5
- package/src/assets/web-panel/assets/OrderTableRenderer-BdiQtesh.js +0 -1
- package/src/assets/web-panel/assets/Projects-05QyZ1aS.js +0 -1
- package/src/assets/web-panel/assets/devWarning-BHqHPKav.js +0 -1
- package/src/assets/web-panel/assets/index-BXk6zL6J.js +0 -1
- package/src/assets/web-panel/assets/index-DwBj50kh.js +0 -1
package/src/assets/web-panel/assets/{MobileProjects-Be6BolGS.js → MobileProjects-ClhNmxpO.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-BvqAck49.js";import{_ as v,b as m}from"./index-
|
|
1
|
+
import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-BvqAck49.js";import{_ as v,b as m}from"./index-BgqftzvZ.js";import{a7 as y,M}from"./icons-DP3uiYxy.js";const B={__name:"MobileProjects",setup(p,{expose:i}){i();const c=u(),{t:e}=m();function a(){c.push("/projects")}function _(){c.push("/mobile-bridge")}const s={router:c,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return m},get MobileOutlined(){return M},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},k={class:"subtitle"},w={class:"explainer"};function T(p,i,c,e,a,_){const s=n("a-alert"),d=n("a-button"),f=n("a-space"),P=n("a-empty"),j=n("a-card");return h(),g("div",x,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",k,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",w,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(B,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-oYLsUC/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{I as y,J as
|
|
1
|
+
import{I as y,J as T,U as x,R as n,c as t,K as a,r as _,o as _e,x as pe,b as $,P as i,Q as s,V as c,S as g,a0 as Ae,a5 as Ue,F as he,a2 as Z,$ as Be,Z as He}from"./vendor-BvqAck49.js";import{_ as Ne,b as ke,u as xe,d as p}from"./index-BgqftzvZ.js";import{u as le}from"./useShellMode-CgR0wCYM.js";import{a as oe,b as ue,f as qe,c as Ve,d as Ge,p as Se}from"./mtc-parser-BbAbUB-9.js";import{r as Ze,aq as Je,N as We,D as Ke,b5 as Qe,e as Ye,f as Xe,a0 as $e,R as et}from"./icons-DP3uiYxy.js";import"./community-parser-CO25nZFt.js";const tt={__name:"Mtc",setup(we,{expose:o}){o();const{t:L}=ke(),e=xe(),fe=_("status"),ee=_(!1),C=_(oe("")),q=_(""),h=_(!1),m=_(ue("")),k=_(""),z=_(""),D=_(!1),S=_(null),V=$(()=>[{title:L("mtc.historyColumns.seq"),key:"seq",dataIndex:"seq",width:"90px"},{title:L("mtc.historyColumns.namespace"),key:"namespace",dataIndex:"namespace"},{title:L("mtc.historyColumns.treeSize"),key:"treeSize",dataIndex:"treeSize",width:"100px"},{title:L("mtc.historyColumns.treeHeadId"),key:"treeHeadId",dataIndex:"treeHeadId",width:"180px"},{title:L("mtc.historyColumns.publishedAt"),key:"publishedAt",dataIndex:"publishedAt",width:"140px"}]);function E(l,u){return l?l.length<=u?l:l.slice(0,u)+"…":""}async function O(){ee.value=!0;try{if(le().isEmbedded){const l=await e.sendRaw({type:"mtc.audit-status"},3e4),u=l?.result;if(!l?.ok||!u?.success)throw new Error(u?.error||l?.error||"mtc.audit-status failed");C.value=oe(u.status)}else{const{output:l}=await e.execute("audit mtc status --json",3e4);C.value=oe(l)}}catch(l){p.error(L("mtc.messages.loadStatusFailed",{err:l?.message||l}))}finally{ee.value=!1}}async function F(){if(!q.value.trim()){p.warning(L("mtc.messages.stateFileRequired"));return}h.value=!0;try{const l=q.value.trim().replace(/"/g,'\\"'),{output:u}=await e.execute(`mtc publish-status "${l}" --json`,8e3);m.value=ue(u)}catch(l){p.error(L("mtc.messages.loadPublishFailed",{err:l?.message||l}))}finally{h.value=!1}}async function v(){if(!k.value.trim()||!z.value.trim()){p.warning(L("mtc.messages.verifyPathsRequired"));return}D.value=!0,S.value=null;try{const l=k.value.trim().replace(/"/g,'\\"'),u=z.value.trim().replace(/"/g,'\\"'),{output:d}=await e.execute(`mtc verify "${l}" --landmark "${u}" --json`,12e3);S.value=Se(d),S.value.raw||p.error(L("mtc.messages.verifyNoJson"))}catch(l){p.error(L("mtc.messages.verifyFailed",{err:l?.message||l}))}finally{D.value=!1}}const R=_({config:{enabled:!1,mode:"independent",alg:"ed25519",batch_interval_seconds:60,issuer:""},trust_anchors:{chain_count:0,total:0,by_chain:{}},staging:{pending:0},batches:{total:0,latest:null}}),J=$(()=>{switch(R.value.config.mode){case"federated":return"Federated";case"light-client":return"Light Client";default:return"Independent"}}),re=[{title:"chain",key:"chain",dataIndex:"chain",width:"120px"},{title:"锚数",key:"count",dataIndex:"count",width:"80px"}],ne=$(()=>{const l=R.value.trust_anchors.by_chain||{};return Object.entries(l).map(([u,d])=>({key:u,chain:u,count:d}))});function U(l){return{config:{enabled:!1,mode:"independent",alg:"ed25519",batch_interval_seconds:60,issuer:"",...l?.config||{}},trust_anchors:{chain_count:0,total:0,by_chain:{},...l?.trust_anchors||{}},staging:{pending:0,...l?.staging||{}},batches:{total:0,latest:null,...l?.batches||{}}}}const G=_({});let A=null;function ie(l){return l==="ok"?"#52c41a":l==="degraded"?"#faad14":l==="down"?"#ff4d4f":"#888"}async function W(){try{if(le().isEmbedded){const d=await e.sendRaw({type:"mtc.bridge-sla"},3e4),b=d?.result;d?.ok&&b?.success&&b.metrics&&typeof b.metrics.sla_status=="string"&&(G.value=b.metrics);return}const{output:l}=await e.execute("crosschain mtc-sla --json",3e4),u=l.split(/\r?\n/);for(let d=0;d<u.length;d++)if(u[d].trimStart().startsWith("{"))for(let b=u.length;b>d;b--)try{const f=JSON.parse(u.slice(d,b).join(`
|
|
2
2
|
`));if(f&&typeof f.sla_status=="string"){G.value=f;return}}catch{}}catch{}}async function K(){try{if(le().isEmbedded){const d=await e.sendRaw({type:"mtc.bridge-status"},3e4),b=d?.result;if(!d?.ok||!b?.success||!b.status)throw new Error(b?.error||d?.error||"mtc.bridge-status failed");const f=b.status;R.value=U({config:{enabled:f.enabled,mode:f.mode,alg:f.alg,batch_interval_seconds:f.batch_interval_seconds,issuer:f.issuer},trust_anchors:f.trust_anchors,staging:f.staging,batches:f.batches});return}const{output:l}=await e.execute("crosschain mtc-status --json",3e4),u=l.split(/\r?\n/);for(let d=0;d<u.length;d++)if(u[d].trimStart().startsWith("{"))for(let b=u.length;b>d;b--)try{const f=JSON.parse(u.slice(d,b).join(`
|
|
3
|
-
`));if(f&&f.config){R.value=U(f);return}}catch{}}catch(l){p.error("加载桥 MTC 状态失败: "+(l?.message||l))}}const B=_(""),Q=_(!1),Y=_(null),
|
|
4
|
-
`));break}catch{}if(I)break}te.value=I||{raw:f},p.success("命令执行完成"),u&&await ge()}catch(d){p.error("CLI 执行失败: "+(d?.message||d)),te.value={error:d?.message||String(d)}}finally{se.value=!1}}function Fe(){const l=ve.value;if(!l.actor||!l.candidate||!l.pubkeyId){p.warning("actor / candidate / pubkey-id 都必填");return}return M(`invite <FED> "${w(l.candidate)}" --actor "${w(l.actor)}" --candidate-pubkey-id "${w(l.pubkeyId)}"`)}function Ie(){const l=me.value;if(!l.actor||!l.candidate){p.warning("actor / candidate 必填");return}return M(`vote <FED> "${w(l.candidate)}" --actor "${w(l.actor)}" --decision ${l.decision}`)}function Re(){const l=ae.value;if(!l.actor){p.warning("actor 必填");return}return M(`propose-threshold <FED> ${parseInt(l.newM)} --actor "${w(l.actor)}"`)}function Le(){const l=ae.value;if(!l.actor){p.warning("actor 必填");return}return M(`confirm-threshold <FED> --actor "${w(l.actor)}"`)}function Oe(l){const u=(ae.value.actor||"").trim();if(!u){p.warning('请先在"改 threshold"子 tab 填 actor');return}if(!l){p.warning("proposal event_id 缺失");return}return M(`confirm-threshold <FED> --actor "${w(u)}" --proposal-event-id "${w(l)}"`)}function
|
|
5
|
-
`));if(I&&I.state){Y.value=I,b=!0;break}}catch{}if(b)break}if(!b){p.error("未能解析 governance-log 输出");return}await be(l)}catch(l){p.error("加载 governance.log 失败: "+(l?.message||l))}finally{Q.value=!1}}async function be(l){if(
|
|
6
|
-
`));if(I&&(I.available!==void 0||I.mode!==void 0)){N.value=I.available===!1?null:I;return}}catch{}}catch{N.value=null}}_e(()=>{O(),K(),W(),A=setInterval(W,3e4)}),pe(()=>{A&&clearInterval(A)});const ye={t:L,ws:e,activeTab:fe,loading:ee,status:C,publishStateFile:q,publishLoading:h,publish:m,verifyEnvelopePath:k,verifyLandmarkPath:z,verifyLoading:D,verifyResult:S,historyColumns:V,truncate:E,loadStatus:O,loadPublishState:F,runVerify:v,bridgeStatus:R,bridgeModeLabel:J,bridgeAnchorColumns:re,bridgeAnchorsTable:ne,mergeBridgeStatus:U,bridgeSla:G,get slaPollHandle(){return A},set slaPollHandle(l){A=l},slaStatusColor:ie,loadBridgeSla:W,loadBridgeStatus:K,govFederationId:B,govLoading:Q,govResult:Y,govSyncStats:N,govSyncRefreshHint:r,pendingThresholdsList:H,memberColumns:Ce,eventTypeColor:ze,actionLoading:se,lastActionResult:te,inviteForm:ve,voteForm:me,thresholdForm:ae,revokeForm:de,syncForm:j,shellSafe:w,runGovAction:M,runInvite:Fe,runVote:Ie,runProposeThreshold:Re,runConfirmThreshold:Le,runConfirmThresholdById:Oe,truncateEventId:Te,runProposeRevoke:Pe,runConfirmRevoke:Me,runGovPublish:De,runGovPull:Ee,runGovSyncOnce:je,loadGovernanceLog:ge,loadGovSyncStats:be,ref:_,computed:$,onMounted:_e,get useI18n(){return ke},get ReloadOutlined(){return et},get ClockCircleOutlined(){return $e},get CheckCircleOutlined(){return Xe},get InfoCircleOutlined(){return Ye},get InboxOutlined(){return Qe},get DatabaseOutlined(){return Ke},get NumberOutlined(){return We},get HistoryOutlined(){return Je},get SafetyOutlined(){return Ze},get message(){return p},get useWsStore(){return xe},get useShellMode(){return le},get parseAuditMtcStatus(){return oe},get parsePublishStatus(){return ue},get parseVerifyResult(){return Se},get formatBatchInterval(){return Ge},get formatTimestamp(){return Ve},get formatRelative(){return qe},onUnmounted:pe};return Object.defineProperty(ye,"__isScriptSetup",{enumerable:!1,value:!0}),ye}},at={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},lt={class:"page-title"},ot={class:"page-sub"},rt={style:{"font-family":"monospace"}},nt={style:{"font-family":"monospace"}},it={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},st={key:1,style:{color:"var(--text-muted)"}},dt={key:0,style:{"font-family":"monospace","font-size":"11px","word-break":"break-all"}},ct={key:1,style:{color:"var(--text-muted)"}},ut={key:1,style:{"font-family":"monospace","font-size":"11px"}},ft=["title"],vt={style:{"font-family":"monospace"}},mt={style:{"font-family":"monospace","font-size":"12px"}},gt={style:{"font-family":"monospace","font-size":"12px"}},bt={class:"raw-pre"},yt={style:{"font-family":"monospace"}},_t={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-tertiary)","margin-left":"8px"}},pt={key:0},ht={style:{"font-family":"monospace"}},kt={style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"11px"}},xt={style:{"font-family":"monospace"}},St={style:{"font-family":"monospace"}},wt={style:{"font-family":"monospace","font-size":"11px"}},Ct={key:0,style:{color:"#cf1322","margin-left":"8px"}},zt={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-secondary)","margin-left":"8px"}},Ft={class:"raw-pre",style:{margin:"0"}};function It(we,o,L,e,fe,ee){const C=y("a-button"),q=y("a-space"),h=y("a-statistic"),m=y("a-card"),k=y("a-col"),z=y("a-tag"),D=y("a-row"),S=y("a-descriptions-item"),V=y("a-descriptions"),E=y("a-alert"),O=y("a-tab-pane"),F=y("a-input"),v=y("a-form-item"),R=y("a-form"),J=y("a-table"),re=y("a-collapse-panel"),ne=y("a-collapse"),U=y("a-empty"),G=y("a-list-item"),A=y("a-list"),ie=y("a-timeline-item"),W=y("a-timeline"),K=y("a-select-option"),B=y("a-select"),Q=y("a-input-number"),Y=y("a-checkbox"),N=y("a-tabs");return i(),P("div",null,[x("div",at,[x("div",null,[x("h2",lt,n(e.t("mtc.title")),1),x("p",ot,n(e.t("mtc.subtitle")),1)]),t(q,null,{default:a(()=>[t(C,{loading:e.loading,onClick:e.loadStatus},{icon:a(()=>[t(e.ReloadOutlined)]),default:a(()=>[s(" "+n(e.t("mtc.refresh")),1)]),_:1},8,["loading"])]),_:1})]),t(N,{activeKey:e.activeTab,"onUpdate:activeKey":o[17]||(o[17]=r=>e.activeTab=r),class:"mtc-tabs"},{default:a(()=>[c(" ── Tab 1: Audit MTC status ────────────────────────────── "),t(O,{key:"status",tab:e.t("mtc.tabs.status")},{default:a(()=>[t(D,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.enabledLabel"),value:e.status.config.enabled?e.t("mtc.status.enabled"):e.t("mtc.status.disabled"),"value-style":{color:e.status.config.enabled?"#52c41a":"#888",fontSize:"20px"}},{prefix:a(()=>[(i(),g(Ae(e.status.config.enabled?e.CheckCircleOutlined:e.InfoCircleOutlined)))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.intervalLabel"),value:e.formatBatchInterval(e.status.config.batch_interval_seconds),"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.stagingLabel"),value:e.status.staging.count,"value-style":{color:e.status.staging.count>0?"#faad14":"#888",fontSize:"20px"}},Ue({prefix:a(()=>[t(e.InboxOutlined)]),_:2},[e.status.staging.malformed>0?{name:"suffix",fn:a(()=>[t(z,{color:"red",style:{"margin-left":"8px"}},{default:a(()=>[s(n(e.t("mtc.status.stagingMalformed",{count:e.status.staging.malformed})),1)]),_:1})]),key:"0"}:void 0]),1032,["title","value","value-style"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.totalBatches"),value:e.status.batches.count,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[t(e.DatabaseOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(m,{title:e.t("mtc.status.configCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(V,{column:{xs:1,sm:2},size:"small"},{default:a(()=>[t(S,{label:"namespace"},{default:a(()=>[x("span",rt,n(e.status.config.namespace_prefix||"—"),1)]),_:1}),t(S,{label:"issuer"},{default:a(()=>[x("span",nt,n(e.status.config.issuer||"—"),1)]),_:1}),t(S,{label:"oldest queued"},{default:a(()=>[s(n(e.formatTimestamp(e.status.staging.oldest_queued_at)),1)]),_:1}),t(S,{label:"last batch"},{default:a(()=>[e.status.batches.last_batch_id?(i(),P(he,{key:0},[t(z,{color:"cyan",style:{"font-family":"monospace"}},{default:a(()=>[s("#"+n(e.status.batches.last_batch_id),1)]),_:1}),x("span",it,n(e.t("mtc.status.lastBatchSize",{size:e.status.batches.last_tree_size,time:e.formatRelative(e.status.batches.last_closed_at)})),1)],64)):(i(),P("span",st,n(e.t("mtc.status.noBatches")),1))]),_:1}),t(S,{label:"last tree_head_id",span:2},{default:a(()=>[e.status.batches.last_tree_head_id?(i(),P("span",dt,n(e.status.batches.last_tree_head_id),1)):(i(),P("span",ct,"—"))]),_:1})]),_:1})]),_:1},8,["title"]),!e.status.ok&&!e.loading?(i(),g(E,{key:0,type:"info","show-icon":"",message:e.t("mtc.status.loadFailMessage"),description:e.t("mtc.status.loadFailDescription")},null,8,["message","description"])):e.status.config.enabled?c("v-if",!0):(i(),g(E,{key:1,type:"info","show-icon":"",message:e.t("mtc.status.notEnabledMessage"),description:e.t("mtc.status.notEnabledDescription")},null,8,["message","description"]))]),_:1},8,["tab"]),c(" ── Tab 2: Marketplace publisher history ───────────────── "),t(O,{key:"publisher",tab:e.t("mtc.tabs.publisher")},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.loadPublishState,["prevent"])},{default:a(()=>[t(v,{label:e.t("mtc.publisher.stateFileLabel")},{default:a(()=>[t(F,{value:e.publishStateFile,"onUpdate:value":o[0]||(o[0]=r=>e.publishStateFile=r),placeholder:e.t("mtc.publisher.stateFilePlaceholder"),style:{"min-width":"360px"},"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),t(v,null,{default:a(()=>[t(C,{loading:e.publishLoading,type:"primary","html-type":"submit"},{default:a(()=>[s(n(e.t("mtc.publisher.queryButton")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e.publish.ok&&!e.publish.exists?(i(),g(E,{key:0,type:"info","show-icon":"",message:e.t("mtc.publisher.missingMessage"),description:e.t("mtc.publisher.missingDescription",{path:e.publish.stateFile}),style:{"margin-bottom":"16px"}},null,8,["message","description"])):c("v-if",!0),e.publish.exists?(i(),g(D,{key:1,gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:12,lg:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.publisher.lastSeq"),value:e.publish.lastSeq,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(e.NumberOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.publisher.historyEntries"),value:e.publish.historyCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[t(e.HistoryOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.publisher.lastPublished"),value:e.formatRelative(e.publish.lastPublishedAt),"value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:a(()=>[t(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})):c("v-if",!0),e.publish.exists&&e.publish.history.length>0?(i(),g(J,{key:2,"data-source":e.publish.history,columns:e.historyColumns,pagination:{pageSize:10},size:"small","row-key":"key"},{bodyCell:a(({column:r,record:H})=>[r.key==="seq"?(i(),g(z,{key:0,color:"cyan",style:{"font-family":"monospace"}},{default:a(()=>[s("#"+n(H.seq),1)]),_:2},1024)):r.key==="treeHeadId"?(i(),P("span",ut,n(e.truncate(H.treeHeadId,22)),1)):r.key==="publishedAt"?(i(),P("span",{key:2,title:H.publishedAt},n(e.formatRelative(H.publishedAt)),9,ft)):c("v-if",!0)]),_:1},8,["data-source","columns"])):c("v-if",!0)]),_:1},8,["tab"]),c(" ── Tab 3: Verify tool ─────────────────────────────────── "),t(O,{key:"verify",tab:e.t("mtc.tabs.verify")},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(E,{type:"info","show-icon":"",message:e.t("mtc.verify.infoMessage"),description:e.t("mtc.verify.infoDescription"),style:{"margin-bottom":"16px"}},null,8,["message","description"]),t(R,{layout:"vertical",onSubmit:Z(e.runVerify,["prevent"])},{default:a(()=>[t(v,{label:e.t("mtc.verify.envelopeLabel")},{default:a(()=>[t(F,{value:e.verifyEnvelopePath,"onUpdate:value":o[1]||(o[1]=r=>e.verifyEnvelopePath=r),placeholder:e.t("mtc.verify.envelopePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),t(v,{label:e.t("mtc.verify.landmarkLabel")},{default:a(()=>[t(F,{value:e.verifyLandmarkPath,"onUpdate:value":o[2]||(o[2]=r=>e.verifyLandmarkPath=r),placeholder:e.t("mtc.verify.landmarkPlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),t(v,null,{default:a(()=>[t(C,{loading:e.verifyLoading,type:"primary",disabled:!e.verifyEnvelopePath||!e.verifyLandmarkPath,onClick:e.runVerify},{icon:a(()=>[t(e.SafetyOutlined)]),default:a(()=>[s(" "+n(e.t("mtc.verify.runButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),e.verifyResult?(i(),g(m,{key:0,title:e.verifyResult.ok?e.t("mtc.verify.passTitle"):e.t("mtc.verify.failTitle"),size:"small",style:Be({background:"var(--bg-card)",borderColor:e.verifyResult.ok?"#52c41a":"#ff4d4f"})},{default:a(()=>[t(V,{column:1,size:"small",bordered:""},{default:a(()=>[t(S,{label:e.t("mtc.verify.resultLabel")},{default:a(()=>[t(z,{color:e.verifyResult.ok?"green":"red"},{default:a(()=>[s(n(e.verifyResult.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1},8,["label"]),e.verifyResult.ok?c("v-if",!0):(i(),g(S,{key:0,label:e.t("mtc.verify.errorCodeLabel")},{default:a(()=>[x("span",vt,n(e.verifyResult.code||e.t("mtc.verify.errorCodeNone")),1),e.verifyResult.recoverable?(i(),g(z,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:a(()=>[s(n(e.t("mtc.verify.recoverable")),1)]),_:1})):c("v-if",!0)]),_:1},8,["label"])),e.verifyResult.leaf?(i(),g(S,{key:1,label:e.t("mtc.verify.subjectLabel")},{default:a(()=>[x("span",mt,n(e.verifyResult.leaf.subject||"—"),1)]),_:1},8,["label"])):c("v-if",!0),e.verifyResult.leaf?(i(),g(S,{key:2,label:e.t("mtc.verify.kindLabel")},{default:a(()=>[t(z,null,{default:a(()=>[s(n(e.verifyResult.leaf.kind||"—"),1)]),_:1})]),_:1},8,["label"])):c("v-if",!0),e.verifyResult.treeHead?(i(),g(S,{key:3,label:e.t("mtc.verify.treeSizeLabel")},{default:a(()=>[s(n(e.verifyResult.treeHead.tree_size),1)]),_:1},8,["label"])):c("v-if",!0),e.verifyResult.treeHead?(i(),g(S,{key:4,label:e.t("mtc.verify.issuerLabel")},{default:a(()=>[x("span",gt,n(e.verifyResult.treeHead.issuer||"—"),1)]),_:1},8,["label"])):c("v-if",!0)]),_:1}),e.verifyResult.raw?(i(),g(ne,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:a(()=>[t(re,{key:"raw",header:e.t("mtc.verify.rawHeader")},{default:a(()=>[x("pre",bt,n(JSON.stringify(e.verifyResult.raw,null,2)),1)]),_:1},8,["header"])]),_:1})):c("v-if",!0)]),_:1},8,["title","style"])):c("v-if",!0)]),_:1},8,["tab"]),c(" ── Tab 4: Cross-chain bridge MTC (v0.6) ────────── "),t(O,{key:"bridge",tab:"跨链桥 MTC"},{default:a(()=>[t(D,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"桥 MTC 集成",value:e.bridgeStatus.config.enabled?"已启用":"未启用","value-style":{color:e.bridgeStatus.config.enabled?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"互信模式",value:e.bridgeModeLabel,"value-style":{color:"#1677ff",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"待批次关闭",value:e.bridgeStatus.staging.pending,"value-style":{color:e.bridgeStatus.staging.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})]),_:1}),t(m,{title:"配置",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(V,{column:{xs:1,sm:2},size:"small",bordered:""},{default:a(()=>[t(S,{label:"算法"},{default:a(()=>[t(z,{color:e.bridgeStatus.config.alg==="slh-dsa-128f"?"purple":"blue"},{default:a(()=>[s(n(e.bridgeStatus.config.alg||"—"),1)]),_:1},8,["color"])]),_:1}),t(S,{label:"batch interval"},{default:a(()=>[s(n(e.formatBatchInterval(e.bridgeStatus.config.batch_interval_seconds)),1)]),_:1}),t(S,{label:"issuer"},{default:a(()=>[x("span",yt,n(e.bridgeStatus.config.issuer||"—"),1)]),_:1}),t(S,{label:"batches 总数"},{default:a(()=>[s(n(e.bridgeStatus.batches.total)+" ",1),e.bridgeStatus.batches.latest?(i(),P("span",_t," latest: "+n(e.bridgeStatus.batches.latest),1)):c("v-if",!0)]),_:1})]),_:1})]),_:1}),t(m,{title:"信任锚 (Independent 模式)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[e.bridgeStatus.trust_anchors.total===0?(i(),g(U,{key:0,description:"未配置信任锚"})):(i(),g(J,{key:1,"data-source":e.bridgeAnchorsTable,columns:e.bridgeAnchorColumns,pagination:!1,size:"small","row-key":"key"},null,8,["data-source"])),o[18]||(o[18]=x("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[s(" 添加:"),x("code",null,"cc crosschain mtc-trust-anchor add <chain> <pubkey-id> --alg --issuer")],-1))]),_:1}),c(" v0.2: SLA / monitoring metrics from cc crosschain mtc-sla "),t(m,{title:"SLA / Monitoring (v0.2)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(D,{gutter:[12,12]},{default:a(()=>[t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"SLA Status",value:e.bridgeSla.sla_status||"—","value-style":{color:e.slaStatusColor(e.bridgeSla.sla_status),fontSize:"18px"}},null,8,["value","value-style"])]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"Staged pending",value:e.bridgeSla.staged_pending_count??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"Batches / hour",value:e.bridgeSla.batches_last_hour??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"Last batch",value:e.bridgeSla.seconds_since_last_batch!==null&&e.bridgeSla.seconds_since_last_batch!==void 0?`${e.bridgeSla.seconds_since_last_batch}s ago`:"—","value-style":{fontSize:"14px"}},null,8,["value"])]),_:1})]),_:1}),o[19]||(o[19]=x("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[s(" 通过 "),x("code",null,"cc crosschain mtc-sla --json"),s(" 实时刷新(30s 自动 poll)。可纳入外部 Prometheus / Grafana。 ")],-1))]),_:1}),t(E,{type:"info","show-icon":"",message:"桥 MTC 仍 opt-in",description:"启用后 cc crosschain bridge|swap|send 加 --mtc 才会写 envelope;定期 cc crosschain mtc-batch 关 staging 为批次。完整指南见 docs.chainlesschain.com/guide/mtc-merkle-tree-certs。"})]),_:1}),c(" ── Tab 5: Federation governance (v0.7+v0.8) ───── "),t(O,{key:"governance",tab:"联邦治理"},{default:a(()=>[t(R,{layout:"inline",style:{"margin-bottom":"16px"}},{default:a(()=>[t(v,{label:"联邦 ID"},{default:a(()=>[t(F,{value:e.govFederationId,"onUpdate:value":o[3]||(o[3]=r=>e.govFederationId=r),placeholder:"e.g. fed-test",style:{width:"240px"},"allow-clear":""},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.govLoading,onClick:e.loadGovernanceLog},{default:a(()=>[...o[20]||(o[20]=[s(" 加载 governance.log ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),e.govResult?(i(),P("div",pt,[t(D,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"状态",value:e.govResult.state.status||"—","value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"Threshold",value:e.govResult.state.threshold||1,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"事件总数",value:(e.govResult.events||[]).length,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),t(m,{title:"成员",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(J,{"data-source":e.govResult.state.members||[],columns:e.memberColumns,pagination:!1,size:"small","row-key":"member_id"},null,8,["data-source"])]),_:1}),(e.govResult.state.pending_invites||[]).length?(i(),g(m,{key:0,title:"待投票邀请",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(A,{"data-source":e.govResult.state.pending_invites,size:"small"},{renderItem:a(({item:r})=>[t(G,null,{default:a(()=>[x("span",ht,n(r.member_id),1),t(z,{color:"blue"},{default:a(()=>[s("approve "+n(r.votes.approve.length)+"/"+n(r.required),1)]),_:2},1024),r.votes.reject.length?(i(),g(z,{key:0,color:"red"},{default:a(()=>[s("reject "+n(r.votes.reject.length),1)]),_:2},1024)):c("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):c("v-if",!0),t(m,{title:"事件时间线",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(W,null,{default:a(()=>[(i(!0),P(he,null,Ne(e.govResult.events||[],r=>(i(),g(ie,{key:r.event_id},{default:a(()=>[x("span",kt,n(r.issued_at),1),t(z,{color:e.eventTypeColor(r.event_type),style:{"margin-left":"8px"}},{default:a(()=>[s(n(r.event_type),1)]),_:2},1032,["color"]),o[21]||(o[21]=s(" actor: ",-1)),x("span",xt,n(r.actor_member_id),1)]),_:2},1024))),128))]),_:1})]),_:1}),c(" ── v0.10: Pending threshold proposals (multi-proposal CRDT) ─── "),e.pendingThresholdsList.length>0?(i(),g(m,{key:1,title:"待批 threshold proposals",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[e.pendingThresholdsList.length>1?(i(),g(E,{key:0,type:"warning","show-icon":"",message:"多 proposal 并发",description:"同一联邦同时存在多个待批 threshold proposal。下方每行可独立确认(CRDT-style 选择);不指定时 CLI 默认确认最新一条。",style:{"margin-bottom":"12px"}})):c("v-if",!0),t(A,{"data-source":e.pendingThresholdsList,size:"small"},{renderItem:a(({item:r})=>[t(G,null,{actions:a(()=>[t(C,{size:"small",type:"primary",loading:e.actionLoading,onClick:H=>e.runConfirmThresholdById(r.event_id)},{default:a(()=>[...o[24]||(o[24]=[s(" 确认这个 ",-1)])]),_:1},8,["loading","onClick"])]),default:a(()=>[t(q,{wrap:""},{default:a(()=>[t(z,{color:"orange"},{default:a(()=>[s("target M = "+n(r.target),1)]),_:2},1024),o[22]||(o[22]=x("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"by",-1)),x("span",St,n(r.proposer||"—"),1),o[23]||(o[23]=x("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"at",-1)),x("span",wt,n(e.formatTimestamp(r.proposed_at)),1),t(z,{color:"cyan",style:{"font-family":"monospace"}},{default:a(()=>[s(n(e.truncateEventId(r.event_id)),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):c("v-if",!0),c(" ── v0.10: Live sync stats (governance-sync daemon counters) ─── "),e.govSyncStats?(i(),g(m,{key:2,title:"实时同步状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(D,{gutter:[12,12]},{default:a(()=>[t(k,{xs:24,sm:8},{default:a(()=>[t(h,{title:"模式",value:e.govSyncStats.mode||"—","value-style":{fontSize:"16px",color:"#1677ff"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(h,{title:"最近 tick",value:e.formatRelative(e.govSyncStats.last_tick_at)||"—","value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(h,{title:"下次轮询",value:e.govSyncRefreshHint,"value-style":{fontSize:"14px",color:"var(--text-secondary)"}},null,8,["value"])]),_:1})]),_:1}),e.govSyncStats.publish||e.govSyncStats.pull||e.govSyncStats.libp2p?(i(),g(V,{key:0,column:{xs:1,sm:2},size:"small",style:{"margin-top":"12px"}},{default:a(()=>[e.govSyncStats.publish?(i(),g(S,{key:0,label:"Publish"},{default:a(()=>[s(" last "+n(e.govSyncStats.publish.last_published||0)+" / total "+n(e.govSyncStats.publish.total_published||0),1)]),_:1})):c("v-if",!0),e.govSyncStats.pull?(i(),g(S,{key:1,label:"Pull"},{default:a(()=>[s(" last "+n(e.govSyncStats.pull.last_appended||0)+" / total "+n(e.govSyncStats.pull.total_appended||0)+" ",1),e.govSyncStats.pull.last_invalid||e.govSyncStats.pull.last_unknown?(i(),P("span",Ct," · invalid "+n(e.govSyncStats.pull.last_invalid||0)+" / unknown "+n(e.govSyncStats.pull.last_unknown||0),1)):c("v-if",!0)]),_:1})):c("v-if",!0),e.govSyncStats.libp2p?(i(),g(S,{key:2,label:"libp2p wire",span:2},{default:a(()=>[s(" recv "+n(e.govSyncStats.libp2p.wire_received||0)+" · appended "+n(e.govSyncStats.libp2p.wire_appended||0)+" ",1),e.govSyncStats.libp2p.topic?(i(),P("span",zt," ("+n(e.govSyncStats.libp2p.topic)+") ",1)):c("v-if",!0)]),_:1})):c("v-if",!0)]),_:1})):(i(),g(U,{key:1,description:"daemon 还没写过 tick — 启动 governance-sync-serve 或 governance-sync-libp2p 后再加载"}))]),_:1})):c("v-if",!0),c(" ── Operational governance actions (v0.9) ─────── "),t(m,{title:"操作型治理 (签名密钥仍 CLI-only)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(E,{type:"warning","show-icon":"",message:"安全设计",description:"所有操作通过本机 CLI 子进程执行。私钥永远不进入 web 渲染进程 — 这里只是给 cc mtc federation * 命令拼参数。",style:{"margin-bottom":"12px"}}),t(N,{size:"small"},{default:a(()=>[t(O,{key:"invite",tab:"邀请"},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.runInvite,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.inviteForm.actor,"onUpdate:value":o[4]||(o[4]=r=>e.inviteForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"candidate"},{default:a(()=>[t(F,{value:e.inviteForm.candidate,"onUpdate:value":o[5]||(o[5]=r=>e.inviteForm.candidate=r),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"pubkey-id"},{default:a(()=>[t(F,{value:e.inviteForm.pubkeyId,"onUpdate:value":o[6]||(o[6]=r=>e.inviteForm.pubkeyId=r),placeholder:"sha256:...",style:{width:"200px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runInvite},{default:a(()=>[...o[25]||(o[25]=[s("invite",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"vote",tab:"投票"},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.runVote,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.voteForm.actor,"onUpdate:value":o[7]||(o[7]=r=>e.voteForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"candidate"},{default:a(()=>[t(F,{value:e.voteForm.candidate,"onUpdate:value":o[8]||(o[8]=r=>e.voteForm.candidate=r),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"decision"},{default:a(()=>[t(B,{value:e.voteForm.decision,"onUpdate:value":o[9]||(o[9]=r=>e.voteForm.decision=r),style:{width:"110px"}},{default:a(()=>[t(K,{value:"approve"},{default:a(()=>[...o[26]||(o[26]=[s("approve",-1)])]),_:1}),t(K,{value:"reject"},{default:a(()=>[...o[27]||(o[27]=[s("reject",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runVote},{default:a(()=>[...o[28]||(o[28]=[s("vote",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"threshold",tab:"改 threshold"},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.runProposeThreshold,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.thresholdForm.actor,"onUpdate:value":o[10]||(o[10]=r=>e.thresholdForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"新 M"},{default:a(()=>[t(Q,{value:e.thresholdForm.newM,"onUpdate:value":o[11]||(o[11]=r=>e.thresholdForm.newM=r),min:1,style:{width:"90px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runProposeThreshold},{default:a(()=>[...o[29]||(o[29]=[s("propose",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runConfirmThreshold},{default:a(()=>[...o[30]||(o[30]=[s("confirm",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"revoke",tab:"撤销"},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.runProposeRevoke,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.revokeForm.actor,"onUpdate:value":o[12]||(o[12]=r=>e.revokeForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"target"},{default:a(()=>[t(F,{value:e.revokeForm.target,"onUpdate:value":o[13]||(o[13]=r=>e.revokeForm.target=r),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"reason"},{default:a(()=>[t(F,{value:e.revokeForm.reason,"onUpdate:value":o[14]||(o[14]=r=>e.revokeForm.reason=r),placeholder:"inactive",style:{width:"160px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runProposeRevoke},{default:a(()=>[...o[31]||(o[31]=[s("propose-revoke",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runConfirmRevoke},{default:a(()=>[...o[32]||(o[32]=[s("confirm-revoke",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"sync",tab:"跨成员同步"},{default:a(()=>[t(R,{layout:"inline"},{default:a(()=>[t(v,{label:"drop-zone"},{default:a(()=>[t(F,{value:e.syncForm.dropZone,"onUpdate:value":o[15]||(o[15]=r=>e.syncForm.dropZone=r),placeholder:"/path/to/shared/dir",style:{width:"220px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(Y,{checked:e.syncForm.verify,"onUpdate:checked":o[16]||(o[16]=r=>e.syncForm.verify=r)},{default:a(()=>[...o[33]||(o[33]=[s("--verify",-1)])]),_:1},8,["checked"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runGovPublish},{default:a(()=>[...o[34]||(o[34]=[s("publish",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runGovPull},{default:a(()=>[...o[35]||(o[35]=[s("pull",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runGovSyncOnce},{default:a(()=>[...o[36]||(o[36]=[s("sync-once",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1}),e.lastActionResult?(i(),g(m,{key:0,size:"small",style:{"margin-top":"12px",background:"var(--bg-hover)"}},{default:a(()=>[x("pre",Ft,n(JSON.stringify(e.lastActionResult,null,2)),1)]),_:1})):c("v-if",!0)]),_:1})])):(i(),g(U,{key:1,description:"输入联邦 ID 加载 governance.log"})),t(E,{style:{"margin-top":"16px"},type:"info","show-icon":"",message:"跨成员同步",description:"cc mtc federation governance-publish/pull --drop-zone 文件系统通道;governance-sync-libp2p --listen 走 libp2p gossipsub 通道;governance-sync-serve 自动 daemon 化。事件签名 + dedupe by event_id 保证幂等。"})]),_:1})]),_:1},8,["activeKey"])])}const Et=He(tt,[["render",It],["__scopeId","data-v-c2eadccb"],["__file","/tmp/cc-web-panel-KNdDYT/repo/packages/web-panel/src/views/Mtc.vue"]]);export{Et as default};
|
|
3
|
+
`));if(f&&f.config){R.value=U(f);return}}catch{}}catch(l){p.error("加载桥 MTC 状态失败: "+(l?.message||l))}}const B=_(""),Q=_(!1),Y=_(null),H=_(null),r=_("随 governance-log 加载刷新"),N=$(()=>{const l=Y.value?.state;return l?Array.isArray(l.pending_thresholds)&&l.pending_thresholds.length>0?l.pending_thresholds:l.pending_threshold&&Number.isInteger(l.pending_threshold.target)?[l.pending_threshold]:[]:[]}),Ce=[{title:"member_id",key:"member_id",dataIndex:"member_id"},{title:"status",key:"status",dataIndex:"status",width:"110px"},{title:"weight",key:"weight",dataIndex:"weight",width:"80px"},{title:"alg",key:"alg",dataIndex:"alg",width:"120px"}];function ze(l){switch(l){case"create":return"cyan";case"invite":case"vote":return"blue";case"leave":case"rotate-key":return"default";case"propose-revoke":case"propose-threshold":return"orange";case"confirm-revoke":case"confirm-threshold":return"gold";case"fork":case"merge":return"purple";case"dispute":case"wind-down":return"red";default:return"default"}}const se=_(!1),te=_(null),ve=_({actor:"",candidate:"",pubkeyId:""}),me=_({actor:"",candidate:"",decision:"approve"}),ae=_({actor:"",newM:2}),de=_({actor:"",target:"",reason:"inactive"}),j=_({dropZone:"",verify:!1});function w(l){return String(l||"").replace(/"/g,"").replace(/[`$]/g,"")}async function M(l,u=!0){if(!B.value.trim()){p.warning("请先输入联邦 ID");return}se.value=!0,te.value=null;try{const d=w(B.value.trim()),b=`mtc federation ${l.replace("<FED>",`"${d}"`)} --json`,{output:f}=await e.execute(b,12e3),P=f.split(/\r?\n/);let I=null;for(let X=0;X<P.length;X++)if(P[X].trimStart().startsWith("{")){for(let ce=P.length;ce>X;ce--)try{I=JSON.parse(P.slice(X,ce).join(`
|
|
4
|
+
`));break}catch{}if(I)break}te.value=I||{raw:f},p.success("命令执行完成"),u&&await ge()}catch(d){p.error("CLI 执行失败: "+(d?.message||d)),te.value={error:d?.message||String(d)}}finally{se.value=!1}}function Fe(){const l=ve.value;if(!l.actor||!l.candidate||!l.pubkeyId){p.warning("actor / candidate / pubkey-id 都必填");return}return M(`invite <FED> "${w(l.candidate)}" --actor "${w(l.actor)}" --candidate-pubkey-id "${w(l.pubkeyId)}"`)}function Ie(){const l=me.value;if(!l.actor||!l.candidate){p.warning("actor / candidate 必填");return}return M(`vote <FED> "${w(l.candidate)}" --actor "${w(l.actor)}" --decision ${l.decision}`)}function Re(){const l=ae.value;if(!l.actor){p.warning("actor 必填");return}return M(`propose-threshold <FED> ${parseInt(l.newM)} --actor "${w(l.actor)}"`)}function Le(){const l=ae.value;if(!l.actor){p.warning("actor 必填");return}return M(`confirm-threshold <FED> --actor "${w(l.actor)}"`)}function Oe(l){const u=(ae.value.actor||"").trim();if(!u){p.warning('请先在"改 threshold"子 tab 填 actor');return}if(!l){p.warning("proposal event_id 缺失");return}return M(`confirm-threshold <FED> --actor "${w(u)}" --proposal-event-id "${w(l)}"`)}function Pe(l){return l?l.length<=16?l:`${l.slice(0,8)}…${l.slice(-4)}`:"—"}function Te(){const l=de.value;if(!l.actor||!l.target){p.warning("actor / target 必填");return}return M(`propose-revoke <FED> "${w(l.target)}" --actor "${w(l.actor)}" --reason "${w(l.reason)}"`)}function Me(){const l=de.value;if(!l.actor||!l.target){p.warning("actor / target 必填");return}return M(`confirm-revoke <FED> "${w(l.target)}" --actor "${w(l.actor)}"`)}function De(){if(!j.value.dropZone){p.warning("drop-zone 必填");return}return M(`governance-publish <FED> --drop-zone "${w(j.value.dropZone)}"`,!1)}function Ee(){if(!j.value.dropZone){p.warning("drop-zone 必填");return}const l=j.value.verify?" --verify":"";return M(`governance-pull <FED> --drop-zone "${w(j.value.dropZone)}"${l}`)}function je(){if(!j.value.dropZone){p.warning("drop-zone 必填");return}const l=j.value.verify?" --verify":"";return M(`governance-sync-serve <FED> --drop-zone "${w(j.value.dropZone)}" --once${l}`)}async function ge(){if(!B.value.trim()){p.warning("请输入联邦 ID");return}Q.value=!0;try{const l=B.value.trim().replace(/"/g,""),{output:u}=await e.execute(`mtc federation governance-log "${l}" --json`,8e3),d=u.split(/\r?\n/);let b=!1;for(let f=0;f<d.length;f++)if(d[f].trimStart().startsWith("{")){for(let P=d.length;P>f;P--)try{const I=JSON.parse(d.slice(f,P).join(`
|
|
5
|
+
`));if(I&&I.state){Y.value=I,b=!0;break}}catch{}if(b)break}if(!b){p.error("未能解析 governance-log 输出");return}await be(l)}catch(l){p.error("加载 governance.log 失败: "+(l?.message||l))}finally{Q.value=!1}}async function be(l){if(H.value=null,r.value="随 governance-log 加载刷新",!!l)try{const u=String(l).replace(/"/g,""),{output:d}=await e.execute(`mtc federation governance-sync-stats "${u}" --json`,8e3),b=d.split(/\r?\n/);for(let f=0;f<b.length;f++)if(b[f].trimStart().startsWith("{"))for(let P=b.length;P>f;P--)try{const I=JSON.parse(b.slice(f,P).join(`
|
|
6
|
+
`));if(I&&(I.available!==void 0||I.mode!==void 0)){H.value=I.available===!1?null:I;return}}catch{}}catch{H.value=null}}_e(()=>{O(),K(),W(),A=setInterval(W,3e4)}),pe(()=>{A&&clearInterval(A)});const ye={t:L,ws:e,activeTab:fe,loading:ee,status:C,publishStateFile:q,publishLoading:h,publish:m,verifyEnvelopePath:k,verifyLandmarkPath:z,verifyLoading:D,verifyResult:S,historyColumns:V,truncate:E,loadStatus:O,loadPublishState:F,runVerify:v,bridgeStatus:R,bridgeModeLabel:J,bridgeAnchorColumns:re,bridgeAnchorsTable:ne,mergeBridgeStatus:U,bridgeSla:G,get slaPollHandle(){return A},set slaPollHandle(l){A=l},slaStatusColor:ie,loadBridgeSla:W,loadBridgeStatus:K,govFederationId:B,govLoading:Q,govResult:Y,govSyncStats:H,govSyncRefreshHint:r,pendingThresholdsList:N,memberColumns:Ce,eventTypeColor:ze,actionLoading:se,lastActionResult:te,inviteForm:ve,voteForm:me,thresholdForm:ae,revokeForm:de,syncForm:j,shellSafe:w,runGovAction:M,runInvite:Fe,runVote:Ie,runProposeThreshold:Re,runConfirmThreshold:Le,runConfirmThresholdById:Oe,truncateEventId:Pe,runProposeRevoke:Te,runConfirmRevoke:Me,runGovPublish:De,runGovPull:Ee,runGovSyncOnce:je,loadGovernanceLog:ge,loadGovSyncStats:be,ref:_,computed:$,onMounted:_e,get useI18n(){return ke},get ReloadOutlined(){return et},get ClockCircleOutlined(){return $e},get CheckCircleOutlined(){return Xe},get InfoCircleOutlined(){return Ye},get InboxOutlined(){return Qe},get DatabaseOutlined(){return Ke},get NumberOutlined(){return We},get HistoryOutlined(){return Je},get SafetyOutlined(){return Ze},get message(){return p},get useWsStore(){return xe},get useShellMode(){return le},get parseAuditMtcStatus(){return oe},get parsePublishStatus(){return ue},get parseVerifyResult(){return Se},get formatBatchInterval(){return Ge},get formatTimestamp(){return Ve},get formatRelative(){return qe},onUnmounted:pe};return Object.defineProperty(ye,"__isScriptSetup",{enumerable:!1,value:!0}),ye}},at={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},lt={class:"page-title"},ot={class:"page-sub"},rt={style:{"font-family":"monospace"}},nt={style:{"font-family":"monospace"}},it={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},st={key:1,style:{color:"var(--text-muted)"}},dt={key:0,style:{"font-family":"monospace","font-size":"11px","word-break":"break-all"}},ct={key:1,style:{color:"var(--text-muted)"}},ut={key:1,style:{"font-family":"monospace","font-size":"11px"}},ft=["title"],vt={style:{"font-family":"monospace"}},mt={style:{"font-family":"monospace","font-size":"12px"}},gt={style:{"font-family":"monospace","font-size":"12px"}},bt={class:"raw-pre"},yt={style:{"font-family":"monospace"}},_t={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-tertiary)","margin-left":"8px"}},pt={key:0},ht={style:{"font-family":"monospace"}},kt={style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"11px"}},xt={style:{"font-family":"monospace"}},St={style:{"font-family":"monospace"}},wt={style:{"font-family":"monospace","font-size":"11px"}},Ct={key:0,style:{color:"#cf1322","margin-left":"8px"}},zt={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-secondary)","margin-left":"8px"}},Ft={class:"raw-pre",style:{margin:"0"}};function It(we,o,L,e,fe,ee){const C=y("a-button"),q=y("a-space"),h=y("a-statistic"),m=y("a-card"),k=y("a-col"),z=y("a-tag"),D=y("a-row"),S=y("a-descriptions-item"),V=y("a-descriptions"),E=y("a-alert"),O=y("a-tab-pane"),F=y("a-input"),v=y("a-form-item"),R=y("a-form"),J=y("a-table"),re=y("a-collapse-panel"),ne=y("a-collapse"),U=y("a-empty"),G=y("a-list-item"),A=y("a-list"),ie=y("a-timeline-item"),W=y("a-timeline"),K=y("a-select-option"),B=y("a-select"),Q=y("a-input-number"),Y=y("a-checkbox"),H=y("a-tabs");return i(),T("div",null,[x("div",at,[x("div",null,[x("h2",lt,n(e.t("mtc.title")),1),x("p",ot,n(e.t("mtc.subtitle")),1)]),t(q,null,{default:a(()=>[t(C,{loading:e.loading,onClick:e.loadStatus},{icon:a(()=>[t(e.ReloadOutlined)]),default:a(()=>[s(" "+n(e.t("mtc.refresh")),1)]),_:1},8,["loading"])]),_:1})]),t(H,{activeKey:e.activeTab,"onUpdate:activeKey":o[17]||(o[17]=r=>e.activeTab=r),class:"mtc-tabs"},{default:a(()=>[c(" ── Tab 1: Audit MTC status ────────────────────────────── "),t(O,{key:"status",tab:e.t("mtc.tabs.status")},{default:a(()=>[t(D,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.enabledLabel"),value:e.status.config.enabled?e.t("mtc.status.enabled"):e.t("mtc.status.disabled"),"value-style":{color:e.status.config.enabled?"#52c41a":"#888",fontSize:"20px"}},{prefix:a(()=>[(i(),g(Ae(e.status.config.enabled?e.CheckCircleOutlined:e.InfoCircleOutlined)))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.intervalLabel"),value:e.formatBatchInterval(e.status.config.batch_interval_seconds),"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.stagingLabel"),value:e.status.staging.count,"value-style":{color:e.status.staging.count>0?"#faad14":"#888",fontSize:"20px"}},Ue({prefix:a(()=>[t(e.InboxOutlined)]),_:2},[e.status.staging.malformed>0?{name:"suffix",fn:a(()=>[t(z,{color:"red",style:{"margin-left":"8px"}},{default:a(()=>[s(n(e.t("mtc.status.stagingMalformed",{count:e.status.staging.malformed})),1)]),_:1})]),key:"0"}:void 0]),1032,["title","value","value-style"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.status.totalBatches"),value:e.status.batches.count,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[t(e.DatabaseOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(m,{title:e.t("mtc.status.configCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(V,{column:{xs:1,sm:2},size:"small"},{default:a(()=>[t(S,{label:"namespace"},{default:a(()=>[x("span",rt,n(e.status.config.namespace_prefix||"—"),1)]),_:1}),t(S,{label:"issuer"},{default:a(()=>[x("span",nt,n(e.status.config.issuer||"—"),1)]),_:1}),t(S,{label:"oldest queued"},{default:a(()=>[s(n(e.formatTimestamp(e.status.staging.oldest_queued_at)),1)]),_:1}),t(S,{label:"last batch"},{default:a(()=>[e.status.batches.last_batch_id?(i(),T(he,{key:0},[t(z,{color:"cyan",style:{"font-family":"monospace"}},{default:a(()=>[s("#"+n(e.status.batches.last_batch_id),1)]),_:1}),x("span",it,n(e.t("mtc.status.lastBatchSize",{size:e.status.batches.last_tree_size,time:e.formatRelative(e.status.batches.last_closed_at)})),1)],64)):(i(),T("span",st,n(e.t("mtc.status.noBatches")),1))]),_:1}),t(S,{label:"last tree_head_id",span:2},{default:a(()=>[e.status.batches.last_tree_head_id?(i(),T("span",dt,n(e.status.batches.last_tree_head_id),1)):(i(),T("span",ct,"—"))]),_:1})]),_:1})]),_:1},8,["title"]),!e.status.ok&&!e.loading?(i(),g(E,{key:0,type:"info","show-icon":"",message:e.t("mtc.status.loadFailMessage"),description:e.t("mtc.status.loadFailDescription")},null,8,["message","description"])):e.status.config.enabled?c("v-if",!0):(i(),g(E,{key:1,type:"info","show-icon":"",message:e.t("mtc.status.notEnabledMessage"),description:e.t("mtc.status.notEnabledDescription")},null,8,["message","description"]))]),_:1},8,["tab"]),c(" ── Tab 2: Marketplace publisher history ───────────────── "),t(O,{key:"publisher",tab:e.t("mtc.tabs.publisher")},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.loadPublishState,["prevent"])},{default:a(()=>[t(v,{label:e.t("mtc.publisher.stateFileLabel")},{default:a(()=>[t(F,{value:e.publishStateFile,"onUpdate:value":o[0]||(o[0]=r=>e.publishStateFile=r),placeholder:e.t("mtc.publisher.stateFilePlaceholder"),style:{"min-width":"360px"},"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),t(v,null,{default:a(()=>[t(C,{loading:e.publishLoading,type:"primary","html-type":"submit"},{default:a(()=>[s(n(e.t("mtc.publisher.queryButton")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e.publish.ok&&!e.publish.exists?(i(),g(E,{key:0,type:"info","show-icon":"",message:e.t("mtc.publisher.missingMessage"),description:e.t("mtc.publisher.missingDescription",{path:e.publish.stateFile}),style:{"margin-bottom":"16px"}},null,8,["message","description"])):c("v-if",!0),e.publish.exists?(i(),g(D,{key:1,gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:12,lg:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.publisher.lastSeq"),value:e.publish.lastSeq,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(e.NumberOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.publisher.historyEntries"),value:e.publish.historyCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[t(e.HistoryOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(k,{xs:24,sm:12,lg:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:e.t("mtc.publisher.lastPublished"),value:e.formatRelative(e.publish.lastPublishedAt),"value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:a(()=>[t(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})):c("v-if",!0),e.publish.exists&&e.publish.history.length>0?(i(),g(J,{key:2,"data-source":e.publish.history,columns:e.historyColumns,pagination:{pageSize:10},size:"small","row-key":"key"},{bodyCell:a(({column:r,record:N})=>[r.key==="seq"?(i(),g(z,{key:0,color:"cyan",style:{"font-family":"monospace"}},{default:a(()=>[s("#"+n(N.seq),1)]),_:2},1024)):r.key==="treeHeadId"?(i(),T("span",ut,n(e.truncate(N.treeHeadId,22)),1)):r.key==="publishedAt"?(i(),T("span",{key:2,title:N.publishedAt},n(e.formatRelative(N.publishedAt)),9,ft)):c("v-if",!0)]),_:1},8,["data-source","columns"])):c("v-if",!0)]),_:1},8,["tab"]),c(" ── Tab 3: Verify tool ─────────────────────────────────── "),t(O,{key:"verify",tab:e.t("mtc.tabs.verify")},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(E,{type:"info","show-icon":"",message:e.t("mtc.verify.infoMessage"),description:e.t("mtc.verify.infoDescription"),style:{"margin-bottom":"16px"}},null,8,["message","description"]),t(R,{layout:"vertical",onSubmit:Z(e.runVerify,["prevent"])},{default:a(()=>[t(v,{label:e.t("mtc.verify.envelopeLabel")},{default:a(()=>[t(F,{value:e.verifyEnvelopePath,"onUpdate:value":o[1]||(o[1]=r=>e.verifyEnvelopePath=r),placeholder:e.t("mtc.verify.envelopePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),t(v,{label:e.t("mtc.verify.landmarkLabel")},{default:a(()=>[t(F,{value:e.verifyLandmarkPath,"onUpdate:value":o[2]||(o[2]=r=>e.verifyLandmarkPath=r),placeholder:e.t("mtc.verify.landmarkPlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),t(v,null,{default:a(()=>[t(C,{loading:e.verifyLoading,type:"primary",disabled:!e.verifyEnvelopePath||!e.verifyLandmarkPath,onClick:e.runVerify},{icon:a(()=>[t(e.SafetyOutlined)]),default:a(()=>[s(" "+n(e.t("mtc.verify.runButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),e.verifyResult?(i(),g(m,{key:0,title:e.verifyResult.ok?e.t("mtc.verify.passTitle"):e.t("mtc.verify.failTitle"),size:"small",style:Be({background:"var(--bg-card)",borderColor:e.verifyResult.ok?"#52c41a":"#ff4d4f"})},{default:a(()=>[t(V,{column:1,size:"small",bordered:""},{default:a(()=>[t(S,{label:e.t("mtc.verify.resultLabel")},{default:a(()=>[t(z,{color:e.verifyResult.ok?"green":"red"},{default:a(()=>[s(n(e.verifyResult.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1},8,["label"]),e.verifyResult.ok?c("v-if",!0):(i(),g(S,{key:0,label:e.t("mtc.verify.errorCodeLabel")},{default:a(()=>[x("span",vt,n(e.verifyResult.code||e.t("mtc.verify.errorCodeNone")),1),e.verifyResult.recoverable?(i(),g(z,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:a(()=>[s(n(e.t("mtc.verify.recoverable")),1)]),_:1})):c("v-if",!0)]),_:1},8,["label"])),e.verifyResult.leaf?(i(),g(S,{key:1,label:e.t("mtc.verify.subjectLabel")},{default:a(()=>[x("span",mt,n(e.verifyResult.leaf.subject||"—"),1)]),_:1},8,["label"])):c("v-if",!0),e.verifyResult.leaf?(i(),g(S,{key:2,label:e.t("mtc.verify.kindLabel")},{default:a(()=>[t(z,null,{default:a(()=>[s(n(e.verifyResult.leaf.kind||"—"),1)]),_:1})]),_:1},8,["label"])):c("v-if",!0),e.verifyResult.treeHead?(i(),g(S,{key:3,label:e.t("mtc.verify.treeSizeLabel")},{default:a(()=>[s(n(e.verifyResult.treeHead.tree_size),1)]),_:1},8,["label"])):c("v-if",!0),e.verifyResult.treeHead?(i(),g(S,{key:4,label:e.t("mtc.verify.issuerLabel")},{default:a(()=>[x("span",gt,n(e.verifyResult.treeHead.issuer||"—"),1)]),_:1},8,["label"])):c("v-if",!0)]),_:1}),e.verifyResult.raw?(i(),g(ne,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:a(()=>[t(re,{key:"raw",header:e.t("mtc.verify.rawHeader")},{default:a(()=>[x("pre",bt,n(JSON.stringify(e.verifyResult.raw,null,2)),1)]),_:1},8,["header"])]),_:1})):c("v-if",!0)]),_:1},8,["title","style"])):c("v-if",!0)]),_:1},8,["tab"]),c(" ── Tab 4: Cross-chain bridge MTC (v0.6) ────────── "),t(O,{key:"bridge",tab:"跨链桥 MTC"},{default:a(()=>[t(D,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"桥 MTC 集成",value:e.bridgeStatus.config.enabled?"已启用":"未启用","value-style":{color:e.bridgeStatus.config.enabled?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"互信模式",value:e.bridgeModeLabel,"value-style":{color:"#1677ff",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"待批次关闭",value:e.bridgeStatus.staging.pending,"value-style":{color:e.bridgeStatus.staging.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})]),_:1}),t(m,{title:"配置",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(V,{column:{xs:1,sm:2},size:"small",bordered:""},{default:a(()=>[t(S,{label:"算法"},{default:a(()=>[t(z,{color:e.bridgeStatus.config.alg==="slh-dsa-128f"?"purple":"blue"},{default:a(()=>[s(n(e.bridgeStatus.config.alg||"—"),1)]),_:1},8,["color"])]),_:1}),t(S,{label:"batch interval"},{default:a(()=>[s(n(e.formatBatchInterval(e.bridgeStatus.config.batch_interval_seconds)),1)]),_:1}),t(S,{label:"issuer"},{default:a(()=>[x("span",yt,n(e.bridgeStatus.config.issuer||"—"),1)]),_:1}),t(S,{label:"batches 总数"},{default:a(()=>[s(n(e.bridgeStatus.batches.total)+" ",1),e.bridgeStatus.batches.latest?(i(),T("span",_t," latest: "+n(e.bridgeStatus.batches.latest),1)):c("v-if",!0)]),_:1})]),_:1})]),_:1}),t(m,{title:"信任锚 (Independent 模式)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[e.bridgeStatus.trust_anchors.total===0?(i(),g(U,{key:0,description:"未配置信任锚"})):(i(),g(J,{key:1,"data-source":e.bridgeAnchorsTable,columns:e.bridgeAnchorColumns,pagination:!1,size:"small","row-key":"key"},null,8,["data-source"])),o[18]||(o[18]=x("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[s(" 添加:"),x("code",null,"cc crosschain mtc-trust-anchor add <chain> <pubkey-id> --alg --issuer")],-1))]),_:1}),c(" v0.2: SLA / monitoring metrics from cc crosschain mtc-sla "),t(m,{title:"SLA / Monitoring (v0.2)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(D,{gutter:[12,12]},{default:a(()=>[t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"SLA Status",value:e.bridgeSla.sla_status||"—","value-style":{color:e.slaStatusColor(e.bridgeSla.sla_status),fontSize:"18px"}},null,8,["value","value-style"])]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"Staged pending",value:e.bridgeSla.staged_pending_count??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"Batches / hour",value:e.bridgeSla.batches_last_hour??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:12,lg:6},{default:a(()=>[t(h,{title:"Last batch",value:e.bridgeSla.seconds_since_last_batch!==null&&e.bridgeSla.seconds_since_last_batch!==void 0?`${e.bridgeSla.seconds_since_last_batch}s ago`:"—","value-style":{fontSize:"14px"}},null,8,["value"])]),_:1})]),_:1}),o[19]||(o[19]=x("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[s(" 通过 "),x("code",null,"cc crosschain mtc-sla --json"),s(" 实时刷新(30s 自动 poll)。可纳入外部 Prometheus / Grafana。 ")],-1))]),_:1}),t(E,{type:"info","show-icon":"",message:"桥 MTC 仍 opt-in",description:"启用后 cc crosschain bridge|swap|send 加 --mtc 才会写 envelope;定期 cc crosschain mtc-batch 关 staging 为批次。完整指南见 docs.chainlesschain.com/guide/mtc-merkle-tree-certs。"})]),_:1}),c(" ── Tab 5: Federation governance (v0.7+v0.8) ───── "),t(O,{key:"governance",tab:"联邦治理"},{default:a(()=>[t(R,{layout:"inline",style:{"margin-bottom":"16px"}},{default:a(()=>[t(v,{label:"联邦 ID"},{default:a(()=>[t(F,{value:e.govFederationId,"onUpdate:value":o[3]||(o[3]=r=>e.govFederationId=r),placeholder:"e.g. fed-test",style:{width:"240px"},"allow-clear":""},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.govLoading,onClick:e.loadGovernanceLog},{default:a(()=>[...o[20]||(o[20]=[s(" 加载 governance.log ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),e.govResult?(i(),T("div",pt,[t(D,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:a(()=>[t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"状态",value:e.govResult.state.status||"—","value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"Threshold",value:e.govResult.state.threshold||1,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(h,{title:"事件总数",value:(e.govResult.events||[]).length,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),t(m,{title:"成员",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(J,{"data-source":e.govResult.state.members||[],columns:e.memberColumns,pagination:!1,size:"small","row-key":"member_id"},null,8,["data-source"])]),_:1}),(e.govResult.state.pending_invites||[]).length?(i(),g(m,{key:0,title:"待投票邀请",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(A,{"data-source":e.govResult.state.pending_invites,size:"small"},{renderItem:a(({item:r})=>[t(G,null,{default:a(()=>[x("span",ht,n(r.member_id),1),t(z,{color:"blue"},{default:a(()=>[s("approve "+n(r.votes.approve.length)+"/"+n(r.required),1)]),_:2},1024),r.votes.reject.length?(i(),g(z,{key:0,color:"red"},{default:a(()=>[s("reject "+n(r.votes.reject.length),1)]),_:2},1024)):c("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):c("v-if",!0),t(m,{title:"事件时间线",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(W,null,{default:a(()=>[(i(!0),T(he,null,He(e.govResult.events||[],r=>(i(),g(ie,{key:r.event_id},{default:a(()=>[x("span",kt,n(r.issued_at),1),t(z,{color:e.eventTypeColor(r.event_type),style:{"margin-left":"8px"}},{default:a(()=>[s(n(r.event_type),1)]),_:2},1032,["color"]),o[21]||(o[21]=s(" actor: ",-1)),x("span",xt,n(r.actor_member_id),1)]),_:2},1024))),128))]),_:1})]),_:1}),c(" ── v0.10: Pending threshold proposals (multi-proposal CRDT) ─── "),e.pendingThresholdsList.length>0?(i(),g(m,{key:1,title:"待批 threshold proposals",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[e.pendingThresholdsList.length>1?(i(),g(E,{key:0,type:"warning","show-icon":"",message:"多 proposal 并发",description:"同一联邦同时存在多个待批 threshold proposal。下方每行可独立确认(CRDT-style 选择);不指定时 CLI 默认确认最新一条。",style:{"margin-bottom":"12px"}})):c("v-if",!0),t(A,{"data-source":e.pendingThresholdsList,size:"small"},{renderItem:a(({item:r})=>[t(G,null,{actions:a(()=>[t(C,{size:"small",type:"primary",loading:e.actionLoading,onClick:N=>e.runConfirmThresholdById(r.event_id)},{default:a(()=>[...o[24]||(o[24]=[s(" 确认这个 ",-1)])]),_:1},8,["loading","onClick"])]),default:a(()=>[t(q,{wrap:""},{default:a(()=>[t(z,{color:"orange"},{default:a(()=>[s("target M = "+n(r.target),1)]),_:2},1024),o[22]||(o[22]=x("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"by",-1)),x("span",St,n(r.proposer||"—"),1),o[23]||(o[23]=x("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"at",-1)),x("span",wt,n(e.formatTimestamp(r.proposed_at)),1),t(z,{color:"cyan",style:{"font-family":"monospace"}},{default:a(()=>[s(n(e.truncateEventId(r.event_id)),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):c("v-if",!0),c(" ── v0.10: Live sync stats (governance-sync daemon counters) ─── "),e.govSyncStats?(i(),g(m,{key:2,title:"实时同步状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[t(D,{gutter:[12,12]},{default:a(()=>[t(k,{xs:24,sm:8},{default:a(()=>[t(h,{title:"模式",value:e.govSyncStats.mode||"—","value-style":{fontSize:"16px",color:"#1677ff"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(h,{title:"最近 tick",value:e.formatRelative(e.govSyncStats.last_tick_at)||"—","value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),t(k,{xs:24,sm:8},{default:a(()=>[t(h,{title:"下次轮询",value:e.govSyncRefreshHint,"value-style":{fontSize:"14px",color:"var(--text-secondary)"}},null,8,["value"])]),_:1})]),_:1}),e.govSyncStats.publish||e.govSyncStats.pull||e.govSyncStats.libp2p?(i(),g(V,{key:0,column:{xs:1,sm:2},size:"small",style:{"margin-top":"12px"}},{default:a(()=>[e.govSyncStats.publish?(i(),g(S,{key:0,label:"Publish"},{default:a(()=>[s(" last "+n(e.govSyncStats.publish.last_published||0)+" / total "+n(e.govSyncStats.publish.total_published||0),1)]),_:1})):c("v-if",!0),e.govSyncStats.pull?(i(),g(S,{key:1,label:"Pull"},{default:a(()=>[s(" last "+n(e.govSyncStats.pull.last_appended||0)+" / total "+n(e.govSyncStats.pull.total_appended||0)+" ",1),e.govSyncStats.pull.last_invalid||e.govSyncStats.pull.last_unknown?(i(),T("span",Ct," · invalid "+n(e.govSyncStats.pull.last_invalid||0)+" / unknown "+n(e.govSyncStats.pull.last_unknown||0),1)):c("v-if",!0)]),_:1})):c("v-if",!0),e.govSyncStats.libp2p?(i(),g(S,{key:2,label:"libp2p wire",span:2},{default:a(()=>[s(" recv "+n(e.govSyncStats.libp2p.wire_received||0)+" · appended "+n(e.govSyncStats.libp2p.wire_appended||0)+" ",1),e.govSyncStats.libp2p.topic?(i(),T("span",zt," ("+n(e.govSyncStats.libp2p.topic)+") ",1)):c("v-if",!0)]),_:1})):c("v-if",!0)]),_:1})):(i(),g(U,{key:1,description:"daemon 还没写过 tick — 启动 governance-sync-serve 或 governance-sync-libp2p 后再加载"}))]),_:1})):c("v-if",!0),c(" ── Operational governance actions (v0.9) ─────── "),t(m,{title:"操作型治理 (签名密钥仍 CLI-only)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(E,{type:"warning","show-icon":"",message:"安全设计",description:"所有操作通过本机 CLI 子进程执行。私钥永远不进入 web 渲染进程 — 这里只是给 cc mtc federation * 命令拼参数。",style:{"margin-bottom":"12px"}}),t(H,{size:"small"},{default:a(()=>[t(O,{key:"invite",tab:"邀请"},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.runInvite,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.inviteForm.actor,"onUpdate:value":o[4]||(o[4]=r=>e.inviteForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"candidate"},{default:a(()=>[t(F,{value:e.inviteForm.candidate,"onUpdate:value":o[5]||(o[5]=r=>e.inviteForm.candidate=r),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"pubkey-id"},{default:a(()=>[t(F,{value:e.inviteForm.pubkeyId,"onUpdate:value":o[6]||(o[6]=r=>e.inviteForm.pubkeyId=r),placeholder:"sha256:...",style:{width:"200px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runInvite},{default:a(()=>[...o[25]||(o[25]=[s("invite",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"vote",tab:"投票"},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.runVote,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.voteForm.actor,"onUpdate:value":o[7]||(o[7]=r=>e.voteForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"candidate"},{default:a(()=>[t(F,{value:e.voteForm.candidate,"onUpdate:value":o[8]||(o[8]=r=>e.voteForm.candidate=r),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"decision"},{default:a(()=>[t(B,{value:e.voteForm.decision,"onUpdate:value":o[9]||(o[9]=r=>e.voteForm.decision=r),style:{width:"110px"}},{default:a(()=>[t(K,{value:"approve"},{default:a(()=>[...o[26]||(o[26]=[s("approve",-1)])]),_:1}),t(K,{value:"reject"},{default:a(()=>[...o[27]||(o[27]=[s("reject",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runVote},{default:a(()=>[...o[28]||(o[28]=[s("vote",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"threshold",tab:"改 threshold"},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.runProposeThreshold,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.thresholdForm.actor,"onUpdate:value":o[10]||(o[10]=r=>e.thresholdForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"新 M"},{default:a(()=>[t(Q,{value:e.thresholdForm.newM,"onUpdate:value":o[11]||(o[11]=r=>e.thresholdForm.newM=r),min:1,style:{width:"90px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runProposeThreshold},{default:a(()=>[...o[29]||(o[29]=[s("propose",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runConfirmThreshold},{default:a(()=>[...o[30]||(o[30]=[s("confirm",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"revoke",tab:"撤销"},{default:a(()=>[t(R,{layout:"inline",onSubmit:Z(e.runProposeRevoke,["prevent"])},{default:a(()=>[t(v,{label:"actor"},{default:a(()=>[t(F,{value:e.revokeForm.actor,"onUpdate:value":o[12]||(o[12]=r=>e.revokeForm.actor=r),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"target"},{default:a(()=>[t(F,{value:e.revokeForm.target,"onUpdate:value":o[13]||(o[13]=r=>e.revokeForm.target=r),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),t(v,{label:"reason"},{default:a(()=>[t(F,{value:e.revokeForm.reason,"onUpdate:value":o[14]||(o[14]=r=>e.revokeForm.reason=r),placeholder:"inactive",style:{width:"160px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runProposeRevoke},{default:a(()=>[...o[31]||(o[31]=[s("propose-revoke",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runConfirmRevoke},{default:a(()=>[...o[32]||(o[32]=[s("confirm-revoke",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),t(O,{key:"sync",tab:"跨成员同步"},{default:a(()=>[t(R,{layout:"inline"},{default:a(()=>[t(v,{label:"drop-zone"},{default:a(()=>[t(F,{value:e.syncForm.dropZone,"onUpdate:value":o[15]||(o[15]=r=>e.syncForm.dropZone=r),placeholder:"/path/to/shared/dir",style:{width:"220px"}},null,8,["value"])]),_:1}),t(v,null,{default:a(()=>[t(Y,{checked:e.syncForm.verify,"onUpdate:checked":o[16]||(o[16]=r=>e.syncForm.verify=r)},{default:a(()=>[...o[33]||(o[33]=[s("--verify",-1)])]),_:1},8,["checked"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runGovPublish},{default:a(()=>[...o[34]||(o[34]=[s("publish",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{type:"primary",loading:e.actionLoading,onClick:e.runGovPull},{default:a(()=>[...o[35]||(o[35]=[s("pull",-1)])]),_:1},8,["loading"])]),_:1}),t(v,null,{default:a(()=>[t(C,{loading:e.actionLoading,onClick:e.runGovSyncOnce},{default:a(()=>[...o[36]||(o[36]=[s("sync-once",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1}),e.lastActionResult?(i(),g(m,{key:0,size:"small",style:{"margin-top":"12px",background:"var(--bg-hover)"}},{default:a(()=>[x("pre",Ft,n(JSON.stringify(e.lastActionResult,null,2)),1)]),_:1})):c("v-if",!0)]),_:1})])):(i(),g(U,{key:1,description:"输入联邦 ID 加载 governance.log"})),t(E,{style:{"margin-top":"16px"},type:"info","show-icon":"",message:"跨成员同步",description:"cc mtc federation governance-publish/pull --drop-zone 文件系统通道;governance-sync-libp2p --listen 走 libp2p gossipsub 通道;governance-sync-serve 自动 daemon 化。事件签名 + dedupe by event_id 保证幂等。"})]),_:1})]),_:1},8,["activeKey"])])}const Et=Ne(tt,[["render",It],["__scopeId","data-v-c2eadccb"],["__file","/tmp/cc-web-panel-oYLsUC/repo/packages/web-panel/src/views/Mtc.vue"]]);export{Et as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as Ae,o as se,c as o,s as vt,t as pt,a as Z,w as ze,r as O,X as yt,b as ie,f as gt,n as Ke,e as bt,F as re,z as ht,J as Y,K as a,S as A,V as F,P as k,Q as b,U as K,a2 as wt,R as E}from"./vendor-BvqAck49.js";import{h as C,f as $,l as St,i as Ze,q as $e,w as fe,N as Oe,R as It,S as Ct,u as ve,_ as xt,d as H}from"./index-
|
|
1
|
+
import{d as Ae,o as se,c as o,s as vt,t as pt,a as Z,w as ze,r as O,X as yt,b as ie,f as gt,n as Ke,e as bt,F as re,z as ht,J as Y,K as a,S as A,V as F,P as k,Q as b,U as K,a2 as wt,R as E}from"./vendor-BvqAck49.js";import{h as C,f as $,l as St,i as Ze,q as $e,w as fe,N as Oe,R as It,S as Ct,u as ve,_ as xt,d as H}from"./index-BgqftzvZ.js";import{u as pe}from"./useShellMode-CgR0wCYM.js";import kt from"./index-MpkucUn9.js";import je from"./index-OvBi64nW.js";import{K as me}from"./KeyCode-D63Tfrq7.js";import{w as Be}from"./raf-Deuc0E8-.js";import{i as et}from"./styleChecker-DSo1kqIn.js";import Tt,{Textarea as tt}from"./index-CFNgAerJ.js";import{b6 as Et,b7 as Ft,ai as At,aj as Dt,aR as Rt}from"./icons-DP3uiYxy.js";import{i as Ot}from"./index-FEhVHCgN.js";import{o as rt}from"./operationUnit-vCu2co3e.js";import{s as Bt}from"./BaseInput-rEL4bCmz.js";import{R as _t}from"./index-Ov5m4jW7.js";import{T as _e}from"./index-BgWQb3ab.js";import{o as de}from"./omit-B3nuYFSU.js";import{u as Nt}from"./useMergedState-Cl2q1fes.js";import Mt from"./index-BI6qopNT.js";import Pt,{ListItem as zt}from"./index-DGjB2DHG.js";import Ut,{DescriptionsItem as Lt}from"./index-B5fMCVs_.js";import Kt from"./index-OoAfomZi.js";import jt from"./index-CR6f7W_w.js";import Ht from"./index-CKs7M2hi.js";import{B as Wt}from"./index-D6B2nVTh.js";import Vt from"./index-CS3ZkiIg.js";import Jt,{FormItem as Xt}from"./index-Dlc29Z4D.js";import qt,{TabPane as Qt}from"./index-3of1AqNk.js";import"./index-Cl1aGzuh.js";import"./isVisible-C7tPsqfj.js";import"./useState-BK4hy8Ma.js";import"./FormItemContext-BLCjbBnQ.js";import"./devWarning-BpZTkDGI.js";import"./createContext-DTQOT4YN.js";import"./pickAttrs-0hcTSJaT.js";import"./initDefaultProps-B2v8eGiE.js";import"./motion-CwkWvaNW.js";import"./zoom-D9qIJ7kF.js";import"./ActionButton-nuq5gtIb.js";import"./vnode-lTUDdHso.js";import"./compact-item-DWfrBoYH.js";import"./Compact-CXmuCEc2.js";import"./_getTag-DnrRH4E6.js";import"./statusUtils-rGTl4pd7.js";import"./isPlainObject-BWRMT62c.js";import"./ResizeObserver.es-D6qJbdzf.js";import"./Trigger-den4MocY.js";import"./placementArrow-D6IUlBKU.js";import"./firstNotUndefined-CLFzEa0p.js";import"./colors-CzEwsWwx.js";import"./useFlexGapSupport-CxkZaI6s.js";import"./index-CV7WR2SO.js";import"./index-C0YRxk_4.js";import"./index-DFYzC2yk.js";import"./Overflow-CidZn_Vh.js";import"./isMobile--2fOlCHx.js";import"./move-BYJ058wL.js";import"./slide-B_QbBNod.js";import"./responsiveObserve-FKtuDNR2.js";import"./Row-syZxxDmc.js";import"./index-C-aIuwpi.js";import"./Col-Bijl1DuU.js";import"./Skeleton-JiyfBUz-.js";import"./hasIn-BZffORzo.js";import"./isSymbol-S5WZT7lS.js";import"./_arrayIncludes-B8uzE354.js";import"./debounce-CFGTTtN3.js";import"./collapseMotion-mxzzcDsg.js";import"./index-C2pcp3GP.js";import"./injectionKey-BXVc-oGP.js";import"./OverrideContext-C2r4vyBb.js";import"./Dropdown-DcEm3tiv.js";import"./useRefs-DD9q4mOT.js";var Gt=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const Yt={border:0,background:"transparent",padding:0,lineHeight:"inherit",display:"inline-block"},He=Ae({compatConfig:{MODE:3},name:"TransButton",inheritAttrs:!1,props:{noStyle:{type:Boolean,default:void 0},onClick:Function,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0}},setup(t,r){let{slots:i,emit:e,attrs:l,expose:d}=r;const n=vt(),s=u=>{const{keyCode:c}=u;c===me.ENTER&&u.preventDefault()},g=u=>{const{keyCode:c}=u;c===me.ENTER&&e("click",u)},D=u=>{e("click",u)},y=()=>{n.value&&n.value.focus()},w=()=>{n.value&&n.value.blur()};return se(()=>{t.autofocus&&y()}),d({focus:y,blur:w}),()=>{var u;const{noStyle:c,disabled:S}=t,v=Gt(t,["noStyle","disabled"]);let p={};return c||(p=C({},Yt)),S&&(p.pointerEvents="none"),o("div",$($($({role:"button",tabindex:0,ref:n},v),l),{},{onClick:D,onKeydown:s,onKeyup:g,style:C(C({},p),l.style||{})}),[(u=i.default)===null||u===void 0?void 0:u.call(i)])}}}),Zt=(t,r,i,e)=>{const{sizeMarginHeadingVerticalEnd:l,fontWeightStrong:d}=e;return{marginBottom:l,color:i,fontWeight:d,fontSize:t,lineHeight:r}},$t=t=>{const r=[1,2,3,4,5],i={};return r.forEach(e=>{i[`
|
|
2
2
|
h${e}&,
|
|
3
3
|
div&-h${e},
|
|
4
4
|
div&-h${e} > textarea,
|
|
@@ -16,4 +16,4 @@ import{d as Ae,o as se,c as o,s as vt,t as pt,a as Z,w as ze,r as O,X as yt,b as
|
|
|
16
16
|
`]:C(C({},rt(t)),{marginInlineStart:t.marginXXS})}),rr(t)),nr(t)),or()),{"&-rtl":{direction:"rtl"}})}},nt=St("Typography",t=>[ar(t)],{sizeMarginHeadingVerticalStart:"1.2em",sizeMarginHeadingVerticalEnd:"0.5em"}),lr=()=>({prefixCls:String,value:String,maxlength:Number,autoSize:{type:[Boolean,Object]},onSave:Function,onCancel:Function,onEnd:Function,onChange:Function,originContent:String,direction:String,component:String}),ir=Ae({compatConfig:{MODE:3},name:"Editable",inheritAttrs:!1,props:lr(),setup(t,r){let{emit:i,slots:e,attrs:l}=r;const{prefixCls:d}=pt(t),n=Z({current:t.value||"",lastKeyCode:void 0,inComposition:!1,cancelFlag:!1});ze(()=>t.value,h=>{n.current=h});const s=O();se(()=>{var h;if(s.value){const x=(h=s.value)===null||h===void 0?void 0:h.resizableTextArea,N=x?.textArea;N.focus();const{length:B}=N.value;N.setSelectionRange(B,B)}});function g(h){s.value=h}function D(h){let{target:{value:x}}=h;n.current=x.replace(/[\r\n]/g,""),i("change",n.current)}function y(){n.inComposition=!0}function w(){n.inComposition=!1}function u(h){const{keyCode:x}=h;x===me.ENTER&&h.preventDefault(),!n.inComposition&&(n.lastKeyCode=x)}function c(h){const{keyCode:x,ctrlKey:N,altKey:B,metaKey:j,shiftKey:q}=h;n.lastKeyCode===x&&!n.inComposition&&!N&&!B&&!j&&!q&&(x===me.ENTER?(v(),i("end")):x===me.ESC&&(n.current=t.originContent,i("cancel")))}function S(){v()}function v(){i("save",n.current.trim())}const[p,z]=nt(d);return()=>{const h=Ze({[`${d.value}`]:!0,[`${d.value}-edit-content`]:!0,[`${d.value}-rtl`]:t.direction==="rtl",[t.component?`${d.value}-${t.component}`:""]:!0},l.class,z.value);return p(o("div",$($({},l),{},{class:h}),[o(tt,{ref:g,maxlength:t.maxlength,value:n.current,onChange:D,onKeydown:u,onKeyup:c,onCompositionstart:y,onCompositionend:w,onBlur:S,rows:1,autoSize:t.autoSize===void 0||t.autoSize},null),e.enterIcon?e.enterIcon({className:`${t.prefixCls}-edit-content-confirm`}):o(Ft,{class:`${t.prefixCls}-edit-content-confirm`},null)]))}}}),sr=3,dr=8;let W;const Ne={padding:0,margin:0,display:"inline",lineHeight:"inherit"};function ot(t,r){t.setAttribute("aria-hidden","true");const i=window.getComputedStyle(r),e=Bt(i);t.setAttribute("style",e),t.style.position="fixed",t.style.left="0",t.style.height="auto",t.style.minHeight="auto",t.style.maxHeight="auto",t.style.paddingTop="0",t.style.paddingBottom="0",t.style.borderTopWidth="0",t.style.borderBottomWidth="0",t.style.top="-999999px",t.style.zIndex="-1000",t.style.textOverflow="clip",t.style.whiteSpace="normal",t.style.webkitLineClamp="none"}function ur(t){const r=document.createElement("div");ot(r,t),r.appendChild(document.createTextNode("text")),document.body.appendChild(r);const i=r.getBoundingClientRect().height;return document.body.removeChild(r),i}const cr=((t,r,i,e,l)=>{W||(W=document.createElement("div"),W.setAttribute("aria-hidden","true"),document.body.appendChild(W));const{rows:d,suffix:n=""}=r,s=ur(t),g=Math.round(s*d*100)/100;ot(W,t);const D=yt({render(){return o("div",{style:Ne},[o("span",{style:Ne},[i,n]),o("span",{style:Ne},[e])])}});D.mount(W);function y(){return Math.round(W.getBoundingClientRect().height*100)/100-.1<=g}if(y())return D.unmount(),{content:i,text:W.innerHTML,ellipsis:!1};const w=Array.prototype.slice.apply(W.childNodes[0].childNodes[0].cloneNode(!0).childNodes).filter(x=>{let{nodeType:N,data:B}=x;return N!==dr&&B!==""}),u=Array.prototype.slice.apply(W.childNodes[0].childNodes[1].cloneNode(!0).childNodes);D.unmount();const c=[];W.innerHTML="";const S=document.createElement("span");W.appendChild(S);const v=document.createTextNode(l+n);S.appendChild(v),u.forEach(x=>{W.appendChild(x)});function p(x){S.insertBefore(x,v)}function z(x,N){let B=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,j=arguments.length>3&&arguments[3]!==void 0?arguments[3]:N.length,q=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;const M=Math.floor((B+j)/2),ee=N.slice(0,M);if(x.textContent=ee,B>=j-1)for(let Q=j;Q>=B;Q-=1){const te=N.slice(0,Q);if(x.textContent=te,y()||!te)return Q===N.length?{finished:!1,vNode:N}:{finished:!0,vNode:te}}return y()?z(x,N,M,j,M):z(x,N,B,M,q)}function h(x){if(x.nodeType===sr){const B=x.textContent||"",j=document.createTextNode(B);return p(j),z(j,B)}return{finished:!1,vNode:null}}return w.some(x=>{const{finished:N,vNode:B}=h(x);return B&&c.push(B),N}),{content:c,text:W.innerHTML,ellipsis:!0}});var mr=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const fr=()=>({prefixCls:String,direction:String,component:String}),V=Ae({name:"ATypography",inheritAttrs:!1,props:fr(),setup(t,r){let{slots:i,attrs:e}=r;const{prefixCls:l,direction:d}=$e("typography",t),[n,s]=nt(l);return()=>{var g;const D=C(C({},t),e),{prefixCls:y,direction:w,component:u="article"}=D,c=mr(D,["prefixCls","direction","component"]);return n(o(u,$($({},c),{},{class:Ze(l.value,{[`${l.value}-rtl`]:d.value==="rtl"},e.class,s.value)}),{default:()=>[(g=i.default)===null||g===void 0?void 0:g.call(i)]}))}}}),vr=()=>{const t=document.getSelection();if(!t.rangeCount)return function(){};let r=document.activeElement;const i=[];for(let e=0;e<t.rangeCount;e++)i.push(t.getRangeAt(e));switch(r.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":r.blur();break;default:r=null;break}return t.removeAllRanges(),function(){t.type==="Caret"&&t.removeAllRanges(),t.rangeCount||i.forEach(function(e){t.addRange(e)}),r&&r.focus()}},We={"text/plain":"Text","text/html":"Url",default:"Text"},pr="Copy to clipboard: #{key}, Enter";function yr(t){const r=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return t.replace(/#{\s*key\s*}/g,r)}function gr(t,r){let i,e,l,d,n,s=!1;r||(r={});const g=r.debug||!1;try{if(e=vr(),l=document.createRange(),d=document.getSelection(),n=document.createElement("span"),n.textContent=t,n.style.all="unset",n.style.position="fixed",n.style.top=0,n.style.clip="rect(0, 0, 0, 0)",n.style.whiteSpace="pre",n.style.webkitUserSelect="text",n.style.MozUserSelect="text",n.style.msUserSelect="text",n.style.userSelect="text",n.addEventListener("copy",function(y){if(y.stopPropagation(),r.format)if(y.preventDefault(),typeof y.clipboardData>"u"){g&&console.warn("unable to use e.clipboardData"),g&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();const w=We[r.format]||We.default;window.clipboardData.setData(w,t)}else y.clipboardData.clearData(),y.clipboardData.setData(r.format,t);r.onCopy&&(y.preventDefault(),r.onCopy(y.clipboardData))}),document.body.appendChild(n),l.selectNodeContents(n),d.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");s=!0}catch(D){g&&console.error("unable to copy using execCommand: ",D),g&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(r.format||"text",t),r.onCopy&&r.onCopy(window.clipboardData),s=!0}catch(y){g&&console.error("unable to copy using clipboardData: ",y),g&&console.error("falling back to prompt"),i=yr("message"in r?r.message:pr),window.prompt(i,t)}}finally{d&&(typeof d.removeRange=="function"?d.removeRange(l):d.removeAllRanges()),n&&document.body.removeChild(n),e()}return s}var br=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const hr=et("webkitLineClamp"),wr=et("textOverflow"),Ve="...",ye=()=>({editable:{type:[Boolean,Object],default:void 0},copyable:{type:[Boolean,Object],default:void 0},prefixCls:String,component:String,type:String,disabled:{type:Boolean,default:void 0},ellipsis:{type:[Boolean,Object],default:void 0},code:{type:Boolean,default:void 0},mark:{type:Boolean,default:void 0},underline:{type:Boolean,default:void 0},delete:{type:Boolean,default:void 0},strong:{type:Boolean,default:void 0},keyboard:{type:Boolean,default:void 0},content:String,"onUpdate:content":Function}),ge=Ae({compatConfig:{MODE:3},name:"TypographyBase",inheritAttrs:!1,props:ye(),setup(t,r){let{slots:i,attrs:e,emit:l}=r;const{prefixCls:d,direction:n}=$e("typography",t),s=Z({copied:!1,ellipsisText:"",ellipsisContent:null,isEllipsis:!1,expanded:!1,clientRendered:!1,expandStr:"",copyStr:"",copiedStr:"",editStr:"",copyId:void 0,rafId:void 0,prevProps:void 0,originContent:""}),g=O(),D=O(),y=ie(()=>{const f=t.ellipsis;return f?C({rows:1,expandable:!1},typeof f=="object"?f:null):{}});se(()=>{s.clientRendered=!0,M()}),gt(()=>{clearTimeout(s.copyId),Be.cancel(s.rafId)}),ze([()=>y.value.rows,()=>t.content],()=>{Ke(()=>{j()})},{flush:"post",deep:!0}),bt(()=>{t.content===void 0&&(fe(!t.editable,"Typography","When `editable` is enabled, please use `content` instead of children"),fe(!t.ellipsis,"Typography","When `ellipsis` is enabled, please use `content` instead of children"))});function w(){var f;return t.ellipsis||t.editable?t.content:(f=Oe(g.value))===null||f===void 0?void 0:f.innerText}function u(f){const{onExpand:I}=y.value;s.expanded=!0,I?.(f)}function c(f){f.preventDefault(),s.originContent=t.content,B(!0)}function S(f){v(f),B(!1)}function v(f){const{onChange:I}=h.value;f!==t.content&&(l("update:content",f),I?.(f))}function p(){var f,I;(I=(f=h.value).onCancel)===null||I===void 0||I.call(f),B(!1)}function z(f){f.preventDefault(),f.stopPropagation();const{copyable:I}=t,T=C({},typeof I=="object"?I:null);T.text===void 0&&(T.text=w()),gr(T.text||""),s.copied=!0,Ke(()=>{T.onCopy&&T.onCopy(f),s.copyId=setTimeout(()=>{s.copied=!1},3e3)})}const h=ie(()=>{const f=t.editable;return f?C({},typeof f=="object"?f:null):{editing:!1}}),[x,N]=Nt(!1,{value:ie(()=>h.value.editing)});function B(f){const{onStart:I}=h.value;f&&I&&I(),N(f)}ze(x,f=>{var I;f||(I=D.value)===null||I===void 0||I.focus()},{flush:"post"});function j(f){if(f){const{width:I,height:T}=f;if(!I||!T)return}Be.cancel(s.rafId),s.rafId=Be(()=>{M()})}const q=ie(()=>{const{rows:f,expandable:I,suffix:T,onEllipsis:P,tooltip:U}=y.value;return T||U||t.editable||t.copyable||I||P?!1:f===1?wr:hr}),M=()=>{const{ellipsisText:f,isEllipsis:I}=s,{rows:T,suffix:P,onEllipsis:U}=y.value;if(!T||T<0||!Oe(g.value)||s.expanded||t.content===void 0||q.value)return;const{content:m,text:R,ellipsis:L}=cr(Oe(g.value),{rows:T,suffix:P},t.content,ue(!0),Ve);(f!==R||s.isEllipsis!==L)&&(s.ellipsisText=R,s.ellipsisContent=m,s.isEllipsis=L,I!==L&&U&&U(L))};function ee(f,I){let{mark:T,code:P,underline:U,delete:m,strong:R,keyboard:L}=f,X=I;function G(Ie,J){if(!Ie)return;const Ce=(function(){return X})();X=o(J,null,{default:()=>[Ce]})}return G(R,"strong"),G(U,"u"),G(m,"del"),G(P,"code"),G(T,"mark"),G(L,"kbd"),X}function Q(f){const{expandable:I,symbol:T}=y.value;if(!I||!f&&(s.expanded||!s.isEllipsis))return null;const P=(i.ellipsisSymbol?i.ellipsisSymbol():T)||s.expandStr;return o("a",{key:"expand",class:`${d.value}-expand`,onClick:u,"aria-label":s.expandStr},[P])}function te(){if(!t.editable)return;const{tooltip:f,triggerType:I=["icon"]}=t.editable,T=i.editableIcon?i.editableIcon():o(At,{role:"button"},null),P=i.editableTooltip?i.editableTooltip():s.editStr,U=typeof P=="string"?P:"";return I.indexOf("icon")!==-1?o(_e,{key:"edit",title:f===!1?"":P},{default:()=>[o(He,{ref:D,class:`${d.value}-edit`,onClick:c,"aria-label":U},{default:()=>[T]})]}):null}function De(){if(!t.copyable)return;const{tooltip:f}=t.copyable,I=s.copied?s.copiedStr:s.copyStr,T=i.copyableTooltip?i.copyableTooltip({copied:s.copied}):I,P=typeof T=="string"?T:"",U=s.copied?o(Dt,null,null):o(Rt,null,null),m=i.copyableIcon?i.copyableIcon({copied:!!s.copied}):U;return o(_e,{key:"copy",title:f===!1?"":T},{default:()=>[o(He,{class:[`${d.value}-copy`,{[`${d.value}-copy-success`]:s.copied}],onClick:z,"aria-label":P},{default:()=>[m]})]})}function _(){const{class:f,style:I}=e,{maxlength:T,autoSize:P,onEnd:U}=h.value;return o(ir,{class:f,style:I,prefixCls:d.value,value:t.content,originContent:s.originContent,maxlength:T,autoSize:P,onSave:S,onChange:v,onCancel:p,onEnd:U,direction:n.value,component:t.component},{enterIcon:i.editableEnterIcon})}function ue(f){return[Q(f),te(),De()].filter(I=>I)}return()=>{var f;const{triggerType:I=["icon"]}=h.value,T=t.ellipsis||t.editable?t.content!==void 0?t.content:(f=i.default)===null||f===void 0?void 0:f.call(i):i.default?i.default():t.content;return x.value?_():o(It,{componentName:"Text",children:P=>{const U=C(C({},t),e),{type:m,disabled:R,content:L,class:X,style:G}=U,Ie=br(U,["type","disabled","content","class","style"]),{rows:J,suffix:Ce,tooltip:Re}=y.value,{edit:at,copy:lt,copied:it,expand:st}=P;s.editStr=at,s.copyStr=lt,s.copiedStr=it,s.expandStr=st;const dt=de(Ie,["prefixCls","editable","copyable","ellipsis","mark","code","delete","underline","strong","keyboard","onUpdate:content"]),xe=q.value,ut=J===1&&xe,Ue=J&&J>1&&xe;let ne=T,ct;if(J&&s.isEllipsis&&!s.expanded&&!xe){const{title:Le}=Ie;let oe=Le||"";!Le&&(typeof T=="string"||typeof T=="number")&&(oe=String(T)),oe=oe?.slice(String(s.ellipsisContent||"").length),ne=o(re,null,[ht(s.ellipsisContent),o("span",{title:oe,"aria-hidden":"true"},[Ve]),Ce])}else ne=o(re,null,[T,Ce]);ne=ee(t,ne);const mt=Re&&J&&s.isEllipsis&&!s.expanded&&!xe,ft=i.ellipsisTooltip?i.ellipsisTooltip():Re;return o(_t,{onResize:j,disabled:!J},{default:()=>[o(V,$({ref:g,class:[{[`${d.value}-${m}`]:m,[`${d.value}-disabled`]:R,[`${d.value}-ellipsis`]:J,[`${d.value}-single-line`]:J===1&&!s.isEllipsis,[`${d.value}-ellipsis-single-line`]:ut,[`${d.value}-ellipsis-multiple-line`]:Ue},X],style:C(C({},G),{WebkitLineClamp:Ue?J:void 0}),"aria-label":ct,direction:n.value,onClick:I.indexOf("text")!==-1?c:()=>{}},dt),{default:()=>[mt?o(_e,{title:Re===!0?T:ft},{default:()=>[o("span",null,[ne])]}):ne,ue()]})]})}},null)}}});var Sr=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const Ir=()=>de(C(C({},ye()),{ellipsis:{type:Boolean,default:void 0}}),["component"]),be=(t,r)=>{let{slots:i,attrs:e}=r;const l=C(C({},t),e),{ellipsis:d,rel:n}=l,s=Sr(l,["ellipsis","rel"]);fe(typeof d!="object","Typography.Link","`ellipsis` only supports boolean value.");const g=C(C({},s),{rel:n===void 0&&s.target==="_blank"?"noopener noreferrer":n,ellipsis:!!d,component:"a"});return delete g.navigate,o(ge,g,i)};be.displayName="ATypographyLink";be.inheritAttrs=!1;be.props=Ir();const Cr=()=>de(ye(),["component"]),he=(t,r)=>{let{slots:i,attrs:e}=r;const l=C(C(C({},t),{component:"div"}),e);return o(ge,l,i)};he.displayName="ATypographyParagraph";he.inheritAttrs=!1;he.props=Cr();const xr=()=>C(C({},de(ye(),["component"])),{ellipsis:{type:[Boolean,Object],default:void 0}}),we=(t,r)=>{let{slots:i,attrs:e}=r;const{ellipsis:l}=t;fe(typeof l!="object"||!l||!("expandable"in l)&&!("rows"in l),"Typography.Text","`ellipsis` do not support `expandable` or `rows` props.");const d=C(C(C({},t),{ellipsis:l&&typeof l=="object"?de(l,["expandable","rows"]):l,component:"span"}),e);return o(ge,d,i)};we.displayName="ATypographyText";we.inheritAttrs=!1;we.props=xr();var kr=function(t,r){var i={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.indexOf(e)<0&&(i[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l<e.length;l++)r.indexOf(e[l])<0&&Object.prototype.propertyIsEnumerable.call(t,e[l])&&(i[e[l]]=t[e[l]]);return i};const Tr=Ct(1,2,3,4,5),Er=()=>C(C({},de(ye(),["component","strong"])),{level:Number}),Se=(t,r)=>{let{slots:i,attrs:e}=r;const{level:l=1}=t,d=kr(t,["level"]);let n;Tr.includes(l)?n=`h${l}`:(fe(!1,"Typography","Title only accept `1 | 2 | 3 | 4 | 5` as `level` value."),n="h1");const s=C(C(C({},d),{component:n}),e);return o(ge,s,i)};Se.displayName="ATypographyTitle";Se.inheritAttrs=!1;Se.props=Er();V.Text=we;V.Title=Se;V.Paragraph=he;V.Link=be;V.Base=ge;V.install=function(t){return t.component(V.name,V),t.component(V.Text.displayName,we),t.component(V.Title.displayName,Se),t.component(V.Paragraph.displayName,he),t.component(V.Link.displayName,be),t};const Fr=12e3;function Ar(t){if(t&&t.ok===!1)throw new Error(t.error||"mtc.envelope.get handler failed");return t?.result??t}function Je(){const t=ve(),{isEmbedded:r}=pe(),i=O({phase:"idle"});async function e(d,n){if(!d||!n){i.value={phase:"error",message:"communityId / messageId 必填"};return}if(!r){i.value={phase:"error",message:"此功能仅在嵌入式 web-shell 中可用"};return}i.value={phase:"loading"};try{const s=await t.sendRaw({type:"mtc.envelope.get",communityId:d,messageId:n},Fr),g=Ar(s);if(!g||g.success!==!0){i.value={phase:"not-found",reason:g?.error};return}i.value={phase:"found",result:{origin:g.origin||"local",envelope:g.envelope||{},landmark:g.landmark??null,treeHeadId:g.treeHeadId||"",namespace:g.namespace,batchId:g.batchId,leafIndex:g.leafIndex,staging:g.staging}}}catch(s){i.value={phase:"error",message:s?.message||String(s)}}}function l(){i.value={phase:"idle"}}return{state:i,fetch:e,reset:l,isEmbedded:r}}const ke=6e4;function Te(t){if(t&&t.ok===!1)throw new Error(t.error||"archive handler failed");return t?.result??t}function Xe(){const t=ve(),{isEmbedded:r}=pe(),i=O([]),e=O(null),l=O(!1),d=O(""),n=O(null);function s(u){return d.value=u?.message||String(u),null}async function g(u,c){if(d.value="",!u)return s(new Error("communityId 必填"));l.value=!0;try{const S=await t.sendRaw({type:"mtc.archive.list",communityId:u,providerSpec:c},ke),v=Te(S);return!v||v.success!==!0?s(new Error(v?.error||"列出归档失败")):(i.value=Array.isArray(v.archives)?v.archives:[],i.value)}catch(S){return s(S)}finally{l.value=!1}}async function D(u,c,S={}){if(d.value="",!u)return s(new Error("communityId 必填"));l.value=!0;try{const v=await t.sendRaw({type:"mtc.archive.push",communityId:u,providerSpec:c,packOpts:S},ke),p=Te(v);return!p||p.success!==!0?s(new Error(p?.error||"归档推送失败")):(e.value=p.result,p.result)}catch(v){return s(v)}finally{l.value=!1}}async function y(u,c,S){if(d.value="",!u||!c)return s(new Error("communityId + archiveName 必填"));l.value=!0;try{const v=await t.sendRaw({type:"mtc.archive.restore",communityId:u,archiveName:c,providerSpec:S},ke),p=Te(v);return!p||p.success!==!0?s(new Error(p?.error||"归档恢复失败")):(e.value=p.result,p.result)}catch(v){return s(v)}finally{l.value=!1}}async function w(){d.value="";try{const u=await t.sendRaw({type:"mtc.archive.has-stored-webdav-credentials"},ke),c=Te(u);return!c||c.success!==!0?(n.value=!1,!1):(n.value=!!c.hasCredentials,n.value)}catch(u){return n.value=!1,s(u)}}return{archives:i,lastResult:e,loading:l,errorMessage:d,isEmbedded:r,hasStoredWebdavCredentials:n,listArchives:g,pushArchive:D,restoreArchive:y,checkStoredWebdavCredentials:w}}const ae=12e3;function le(t){if(t&&t.ok===!1)throw new Error(t.error||"governance-mofn handler failed");return t?.result??t}function qe(t){if(typeof Buffer<"u"&&Buffer.isBuffer(t))return t.toString("base64");if(t instanceof Uint8Array){let r="";for(let i=0;i<t.length;i++)r+=String.fromCharCode(t[i]);return globalThis.btoa(r)}if(typeof t=="string")return t;throw new TypeError("signerKeys.{secretKey,publicKey} must be Buffer / Uint8Array / base64 string")}function Qe(){const t=ve(),{isEmbedded:r}=pe(),i=O([]),e=O(null),l=O(!1),d=O("");function n(c){return d.value=c?.message||String(c),null}async function s(c){if(d.value="",!c)return n(new Error("communityId 必填"));l.value=!0;try{const S=await t.sendRaw({type:"mtc.governance-mofn.list",communityId:c},ae),v=le(S);return!v||v.success!==!0?n(new Error(v?.error||"提案列表读取失败")):(i.value=Array.isArray(v.proposals)?v.proposals:[],i.value)}catch(S){return n(S)}finally{l.value=!1}}async function g({communityId:c,proposalId:S,payload:v,members:p,threshold:z}){d.value="",l.value=!0;try{const h=await t.sendRaw({type:"mtc.governance-mofn.create",communityId:c,proposalId:S,payload:v,members:p,threshold:z},ae),x=le(h);return!x||x.success!==!0?n(new Error(x?.error||"创建提案失败")):x.proposal}catch(h){return n(h)}finally{l.value=!1}}async function D(c,S,v){if(d.value="",!v||!v.did)return n(new Error("signerKeys 必须含 did/secretKey/publicKey"));l.value=!0;try{const p={did:v.did,secretKey:qe(v.secretKey),publicKey:qe(v.publicKey)},z=await t.sendRaw({type:"mtc.governance-mofn.sign",communityId:c,proposalId:S,signerKeys:p},ae),h=le(z);return!h||h.success!==!0?n(new Error(h?.error||"签名提交失败")):(e.value=h.status,h.status)}catch(p){return n(p)}finally{l.value=!1}}async function y(c,S){if(d.value="",!c||!S)return n(new Error("communityId + proposalId 必填"));l.value=!0;try{const v=await t.sendRaw({type:"mtc.governance-mofn.sign-as-self",communityId:c,proposalId:S},ae),p=le(v);return!p||p.success!==!0?n(new Error(p?.error||"代签失败")):(e.value=p.status,{...p.status,signerDID:p.signerDID})}catch(v){return n(v)}finally{l.value=!1}}async function w(c,S){d.value="",l.value=!0;try{const v=await t.sendRaw({type:"mtc.governance-mofn.status",communityId:c,proposalId:S},ae),p=le(v);return!p||p.success!==!0?n(new Error(p?.error||"状态读取失败")):(e.value=p.status,p.status)}catch(v){return n(v)}finally{l.value=!1}}async function u(c,S){d.value="",l.value=!0;try{const v=await t.sendRaw({type:"mtc.governance-mofn.finalize",communityId:c,proposalId:S},ae),p=le(v);return!p||p.success!==!0?n(new Error(p?.error||"提案 finalize 失败")):p.result}catch(v){return n(v)}finally{l.value=!1}}return{proposals:i,currentStatus:e,loading:l,errorMessage:d,isEmbedded:r,listProposals:s,createProposal:g,addSignature:D,signAsSelf:y,getStatus:w,finalize:u}}const Ee=8e3;function Fe(t){if(t&&t.ok===!1)throw new Error(t.error||"cross-fed-trust handler failed");return t?.result??t}function Ge(){const t=ve(),{isEmbedded:r}=pe(),i=O([]),e=O([]),l=O(!1),d=O("");function n(w){return d.value=w?.message||String(w),null}async function s(w){if(d.value="",!w)return n(new Error("localCommunityId 必填"));l.value=!0;try{const u=await t.sendRaw({type:"mtc.cross-fed-trust.list",localCommunityId:w},Ee),c=Fe(u);return!c||c.success!==!0?n(new Error(c?.error||"信任列表读取失败")):(i.value=Array.isArray(c.records)?c.records:[],i.value)}catch(u){return n(u)}finally{l.value=!1}}async function g({localCommunityId:w,remoteCommunityId:u,remoteMembers:c,expiresAt:S,note:v}){d.value="",l.value=!0;try{const p=await t.sendRaw({type:"mtc.cross-fed-trust.establish",localCommunityId:w,remoteCommunityId:u,remoteMembers:c,expiresAt:S||void 0,note:v||void 0},Ee),z=Fe(p);return!z||z.success!==!0?n(new Error(z?.error||"建立信任失败")):z.record}catch(p){return n(p)}finally{l.value=!1}}async function D(w,u){d.value="",l.value=!0;try{const c=await t.sendRaw({type:"mtc.cross-fed-trust.revoke",localCommunityId:w,remoteCommunityId:u},Ee),S=Fe(c);return!S||S.success!==!0?n(new Error(S?.error||"撤销信任失败")):S.removed}catch(c){return n(c)}finally{l.value=!1}}async function y(w){if(d.value="",!w)return n(new Error("localCommunityId 必填"));l.value=!0;try{const u=await t.sendRaw({type:"mtc.cross-fed-trust.get-trusted-dids",localCommunityId:w},Ee),c=Fe(u);return!c||c.success!==!0?n(new Error(c?.error||"DID 列表读取失败")):(e.value=Array.isArray(c.dids)?c.dids:[],e.value)}catch(u){return n(u)}finally{l.value=!1}}return{records:i,trustedDids:e,loading:l,errorMessage:d,isEmbedded:r,listTrust:s,establishTrust:g,revokeTrust:D,getTrustedDids:y}}const Me=6e4;function Pe(t){if(t&&t.ok===!1)throw new Error(t.error||"auto-archive handler failed");return t?.result??t}function Ye(){const t=ve(),{isEmbedded:r}=pe(),i=O(null),e=O(null),l=O(!1),d=O("");function n(y){return d.value=y?.message||String(y),null}async function s(){d.value="",l.value=!0;try{const y=await t.sendRaw({type:"mtc.auto-archive.config-get"},Me),w=Pe(y);return!w||w.success!==!0?n(new Error(w?.error||"config-get failed")):(i.value=w.config,w.config)}catch(y){return n(y)}finally{l.value=!1}}async function g(y){if(d.value="",!y||typeof y!="object")return n(new Error("patch 必须是对象"));l.value=!0;try{const w=await t.sendRaw({type:"mtc.auto-archive.config-set",patch:y},Me),u=Pe(w);return!u||u.success!==!0?n(new Error(u?.error||"config-set failed")):(i.value=u.config,u.config)}catch(w){return n(w)}finally{l.value=!1}}async function D(){d.value="",l.value=!0;try{const y=await t.sendRaw({type:"mtc.auto-archive.run-now"},Me*5),w=Pe(y);return!w||w.success!==!0?n(new Error(w?.error||"run-now failed")):(e.value=w.result,await s(),w.result)}catch(y){return n(y)}finally{l.value=!1}}return{config:i,lastRunResult:e,loading:l,errorMessage:d,isEmbedded:r,getConfig:s,setConfig:g,runNow:D}}const ce=36e5,Dr={__name:"MtcAudit",setup(t,{expose:r}){r();const i=Je(),e=Xe(),l=Qe(),d=Ge(),n=Ye(),s=O("envelope"),g=Z({communityId:"",messageId:""});async function D(){await i.fetch(g.communityId,g.messageId)}const y=O(!1);function w(m){navigator.clipboard&&(navigator.clipboard.writeText(JSON.stringify(m,null,2)),H.success("已复制到剪贴板"))}const u=Z({communityId:"",providerKind:"filesystem",rootDir:"",useStoredCredentials:!0,url:"",username:"",password:"",remotePath:"",sinceBatchId:"",archiveName:""});async function c(){e.isEmbedded&&await e.checkStoredWebdavCredentials()}se(c);const S=ie(()=>u.providerKind==="filesystem"?{kind:"filesystem",rootDir:u.rootDir}:u.providerKind==="webdav"?u.useStoredCredentials?{kind:"webdav",useStoredCredentials:!0}:{kind:"webdav",url:u.url,username:u.username,password:u.password,remotePath:u.remotePath}:null);async function v(){await e.listArchives(u.communityId,S.value)}async function p(){const m={};u.sinceBatchId&&(m.sinceBatchId=u.sinceBatchId);const R=await e.pushArchive(u.communityId,S.value,m);R&&H.success(`归档已推送:${R.name} (${R.bytes} bytes)`)}async function z(){const m=await e.restoreArchive(u.communityId,u.archiveName,S.value);m&&H.success(`恢复完成:${m.restored} 新文件 / ${m.skipped} 跳过`)}const h=Z({communityId:"",proposalId:"",payload:'{ "kind": "rule_change", "body": "" }',members:"",threshold:2});async function x(){await l.listProposals(h.communityId)}async function N(){let m;try{m=JSON.parse(h.payload)}catch(X){H.error("payload 必须是合法 JSON: "+X.message);return}const R=h.members.split(/\s+/).map(X=>X.trim()).filter(Boolean),L=await l.createProposal({communityId:h.communityId,proposalId:h.proposalId,payload:m,members:R,threshold:h.threshold});L&&(H.success(`提案已创建:${L.proposalId} (${L.threshold}-of-${L.members.length})`),await x())}async function B(m){const R=await l.finalize(h.communityId,m);R&&(H.success(`提案已 finalize: ${R.treeHeadId.slice(0,24)}...`),await x())}async function j(m){await l.getStatus(h.communityId,m)}async function q(m){const R=await l.signAsSelf(h.communityId,m);R&&(H.success(`已用本人身份 (${(R.signerDID||"").slice(-8)}) 代签 — 已收集 ${R.collected}/${R.threshold}`),await x())}const M=Z({localCommunityId:"",remoteCommunityId:"",remoteMembers:"",expiresAt:"",note:""});async function ee(){await d.listTrust(M.localCommunityId)}async function Q(){const m=M.remoteMembers.split(/\s+/).map(L=>L.trim()).filter(Boolean);await d.establishTrust({localCommunityId:M.localCommunityId,remoteCommunityId:M.remoteCommunityId,remoteMembers:m,expiresAt:M.expiresAt,note:M.note})&&(H.success(`信任已建立: ${M.localCommunityId} ↔ ${M.remoteCommunityId}`),await ee())}async function te(m){je.confirm({title:"确认撤销跨联邦信任?",content:`${M.localCommunityId} → ${m} 将不再被 inbound landmark 校验接受`,onOk:async()=>{await d.revokeTrust(M.localCommunityId,m)&&(H.success("已撤销"),await ee())}})}async function De(){await d.getTrustedDids(M.localCommunityId)}const _=Z({enabled:!1,intervalHours:24,providerKind:"webdav",rootDir:"",useStoredCredentials:!0,url:"",username:"",password:"",remotePath:"",communityIdsRaw:""});function ue(){const m=Number(_.intervalHours);return Number.isFinite(m)&&m>=5/60?Math.round(m*ce):ce*24}function f(){return _.providerKind==="filesystem"?{kind:"filesystem",rootDir:_.rootDir}:_.useStoredCredentials?{kind:"webdav",useStoredCredentials:!0}:{kind:"webdav",url:_.url,username:_.username,password:_.password,remotePath:_.remotePath}}async function I(){const m=await n.getConfig();m&&(_.enabled=!!m.enabled,_.intervalHours=Math.round((m.intervalMs||ce*24)/ce),m.providerSpec&&(_.providerKind=m.providerSpec.kind,m.providerSpec.kind==="filesystem"?_.rootDir=m.providerSpec.rootDir||"":m.providerSpec.kind==="webdav"&&(_.useStoredCredentials=!!m.providerSpec.useStoredCredentials,m.providerSpec.useStoredCredentials||(_.url=m.providerSpec.url||"",_.username=m.providerSpec.username||"",_.remotePath=m.providerSpec.remotePath||""))),_.communityIdsRaw=(m.communityIds||[]).join(`
|
|
17
17
|
`))}async function T(){const m=_.communityIdsRaw.split(/\s+/).map(L=>L.trim()).filter(Boolean);await n.setConfig({enabled:_.enabled,intervalMs:ue(),providerSpec:f(),communityIds:m})&&H.success(_.enabled?"已保存并启动定时归档":"已保存(定时归档关闭)")}async function P(){const m=await n.runNow();if(m)if(m.status==="ok")H.success(`归档完成:${m.summary?.totalArchives||0} 包 / ${m.summary?.totalBytes||0} bytes`);else if(m.status==="partial"){const R=Object.entries(m.summary?.perCommunity||{}).filter(([,L])=>!L.ok).length;H.warning(`部分成功:${m.summary?.totalArchives||0} 包成功,${R} 个 community 失败`)}else H.error(`归档失败:${m.error||"未知错误"}`)}se(async()=>{n.isEmbedded&&await I()});const U={envelope:i,archive:e,mofn:l,trust:d,autoArchive:n,activeTab:s,envForm:g,fetchEnvelope:D,envelopeAdvanced:y,copyJson:w,archForm:u,refreshStoredCredCheck:c,providerSpec:S,archiveList:v,archivePush:p,archiveRestore:z,propForm:h,mofnList:x,mofnCreate:N,mofnFinalize:B,mofnStatus:j,mofnSignAsSelf:q,trustForm:M,trustList:ee,trustEstablish:Q,trustRevoke:te,trustDids:De,autoForm:_,HOURS_TO_MS:ce,_intervalMs:ue,_providerSpecForCron:f,autoLoadConfig:I,autoSave:T,autoRunNow:P,ref:O,reactive:Z,computed:ie,onMounted:se,get Tabs(){return qt},get TabPane(){return Qt},get Form(){return Jt},get FormItem(){return Xt},get Input(){return Tt},get InputNumber(){return Vt},get Textarea(){return tt},get Button(){return Wt},get Alert(){return Ht},get Tag(){return jt},get Card(){return Kt},get Descriptions(){return Ut},get DescriptionsItem(){return Lt},get List(){return Pt},get ListItem(){return zt},get Space(){return Mt},get Typography(){return V},get Modal(){return je},get Switch(){return kt},get message(){return H},get useMtcEnvelope(){return Je},get useMtcArchive(){return Xe},get useGovernanceMofn(){return Qe},get useCrossFedTrust(){return Ge},get useAutoArchive(){return Ye}};return Object.defineProperty(U,"__isScriptSetup",{enumerable:!1,value:!0}),U}},Rr={class:"mtc-audit-page"},Or={style:{"margin-top":"16px"}},Br={key:0,style:{"margin-top":"8px"}},_r={style:{"font-size":"12px","max-height":"240px",overflow:"auto"}},Nr={style:{"font-size":"12px","max-height":"240px",overflow:"auto"}},Mr={style:{"font-size":"12px","max-height":"200px",overflow:"auto"}},Pr={style:{"font-size":"12px","max-height":"240px",overflow:"auto"}},zr={key:1},Ur={style:{"font-size":"12px","max-height":"200px",overflow:"auto"}};function Lr(t,r,i,e,l,d){return k(),Y("div",Rr,[o(e.Typography.Title,{level:3},{default:a(()=>[...r[38]||(r[38]=[b("🔐 MTC 审计套件 (B4)",-1)])]),_:1}),o(e.Typography.Paragraph,{type:"secondary"},{default:a(()=>[...r[39]||(r[39]=[b(" Merkle envelope 查询 / 外部归档 / M-of-N 治理 / 跨联邦信任锚 — 全套对外暴露。 默认壳走 WS topic ",-1),K("code",null,"mtc.*",-1),b(",主进程未托管对应 manager 时按钮会返回错误信息。 ",-1)])]),_:1}),e.envelope.isEmbedded?F("v-if",!0):(k(),A(e.Alert,{key:0,type:"warning","show-icon":"",message:"非嵌入式 web-shell",description:"此页所有功能依赖桌面主进程的 channelEventBatcher / channelEnvelopeArchiver / governanceMultiSig / crossFedTrust 实例 — 请用桌面 Web Shell 访问,纯浏览器模式下按钮会一律失败。",style:{"margin-bottom":"16px"}})),o(e.Tabs,{"active-key":e.activeTab,"onUpdate:activeKey":r[37]||(r[37]=n=>e.activeTab=n)},{default:a(()=>[F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"envelope",tab:"Envelope 查询"},{default:a(()=>[o(e.Form,{layout:"inline",onSubmit:wt(e.fetchEnvelope,["prevent"])},{default:a(()=>[o(e.FormItem,{label:"communityId"},{default:a(()=>[o(e.Input,{value:e.envForm.communityId,"onUpdate:value":r[0]||(r[0]=n=>e.envForm.communityId=n),placeholder:"comm-X","allow-clear":""},null,8,["value"])]),_:1}),o(e.FormItem,{label:"messageId"},{default:a(()=>[o(e.Input,{value:e.envForm.messageId,"onUpdate:value":r[1]||(r[1]=n=>e.envForm.messageId=n),placeholder:"msg-X","allow-clear":""},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Button,{type:"primary","html-type":"submit",loading:e.envelope.state.value.phase==="loading",disabled:!e.envelope.isEmbedded},{default:a(()=>[...r[40]||(r[40]=[b(" 查询 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),K("div",Or,[e.envelope.state.value.phase==="error"?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.envelope.state.value.message},null,8,["message"])):e.envelope.state.value.phase==="not-found"?(k(),A(e.Alert,{key:1,type:"warning","show-icon":"",message:"未找到密码学证据",description:e.envelope.state.value.reason||"消息可能尚未被打包到 Merkle 批,或发送方未在线。"},null,8,["description"])):e.envelope.state.value.phase==="found"?(k(),Y(re,{key:2},[o(e.Descriptions,{bordered:"",column:1,size:"small"},{default:a(()=>[o(e.DescriptionsItem,{label:"来源"},{default:a(()=>[o(e.Tag,{color:e.envelope.state.value.result.origin==="local"?"green":"blue"},{default:a(()=>[b(E(e.envelope.state.value.result.origin==="local"?"本机批次":"远端拉取"),1)]),_:1},8,["color"]),e.envelope.state.value.result.staging?(k(),A(e.Tag,{key:0,color:"orange"},{default:a(()=>[...r[41]||(r[41]=[b("尚未关闭批次",-1)])]),_:1})):F("v-if",!0)]),_:1}),o(e.DescriptionsItem,{label:"Tree Head ID"},{default:a(()=>[K("code",null,E(e.envelope.state.value.result.treeHeadId),1)]),_:1}),e.envelope.state.value.result.batchId?(k(),A(e.DescriptionsItem,{key:0,label:"Batch ID"},{default:a(()=>[b(E(e.envelope.state.value.result.batchId),1)]),_:1})):F("v-if",!0),e.envelope.state.value.result.namespace?(k(),A(e.DescriptionsItem,{key:1,label:"Namespace"},{default:a(()=>[K("code",null,E(e.envelope.state.value.result.namespace),1)]),_:1})):F("v-if",!0),e.envelope.state.value.result.leafIndex!==void 0?(k(),A(e.DescriptionsItem,{key:2,label:"Leaf Index"},{default:a(()=>[b(E(e.envelope.state.value.result.leafIndex),1)]),_:1})):F("v-if",!0)]),_:1}),o(e.Button,{type:"link",size:"small",style:{"padding-left":"0","margin-top":"8px"},onClick:r[2]||(r[2]=n=>e.envelopeAdvanced=!e.envelopeAdvanced)},{default:a(()=>[b(E(e.envelopeAdvanced?"收起":"展开")+" raw JSON ",1)]),_:1}),e.envelopeAdvanced?(k(),Y("div",Br,[o(e.Card,{size:"small"},{title:a(()=>[o(e.Space,null,{default:a(()=>[r[43]||(r[43]=K("span",null,"Envelope",-1)),o(e.Button,{size:"small",onClick:r[3]||(r[3]=n=>e.copyJson(e.envelope.state.value.result.envelope))},{default:a(()=>[...r[42]||(r[42]=[b("复制",-1)])]),_:1})]),_:1})]),default:a(()=>[K("pre",_r,E(JSON.stringify(e.envelope.state.value.result.envelope,null,2)),1)]),_:1}),e.envelope.state.value.result.landmark?(k(),A(e.Card,{key:0,size:"small",style:{"margin-top":"8px"}},{title:a(()=>[o(e.Space,null,{default:a(()=>[r[45]||(r[45]=K("span",null,"Landmark",-1)),o(e.Button,{size:"small",onClick:r[4]||(r[4]=n=>e.copyJson(e.envelope.state.value.result.landmark))},{default:a(()=>[...r[44]||(r[44]=[b("复制",-1)])]),_:1})]),_:1})]),default:a(()=>[K("pre",Nr,E(JSON.stringify(e.envelope.state.value.result.landmark,null,2)),1)]),_:1})):F("v-if",!0)])):F("v-if",!0)],64)):F("v-if",!0)])]),_:1}),F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"archive",tab:"Archive 归档"},{default:a(()=>[o(e.Form,{layout:"vertical"},{default:a(()=>[o(e.FormItem,{label:"communityId",required:""},{default:a(()=>[o(e.Input,{value:e.archForm.communityId,"onUpdate:value":r[5]||(r[5]=n=>e.archForm.communityId=n),placeholder:"comm-X"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"provider 类型"},{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{type:e.archForm.providerKind==="filesystem"?"primary":"default",onClick:r[6]||(r[6]=n=>e.archForm.providerKind="filesystem")},{default:a(()=>[...r[46]||(r[46]=[b(" Filesystem ",-1)])]),_:1},8,["type"]),o(e.Button,{type:e.archForm.providerKind==="webdav"?"primary":"default",onClick:r[7]||(r[7]=n=>e.archForm.providerKind="webdav")},{default:a(()=>[...r[47]||(r[47]=[b(" WebDAV ",-1)])]),_:1},8,["type"])]),_:1})]),_:1}),e.archForm.providerKind==="filesystem"?(k(),A(e.FormItem,{key:0,label:"rootDir 本地路径",required:""},{default:a(()=>[o(e.Input,{value:e.archForm.rootDir,"onUpdate:value":r[8]||(r[8]=n=>e.archForm.rootDir=n),placeholder:"/path/to/archive-mirror"},null,8,["value"])]),_:1})):(k(),Y(re,{key:1},[o(e.FormItem,{label:"使用已保存的 WebDAV 凭据"},{default:a(()=>[o(e.Space,{direction:"vertical",style:{width:"100%"}},{default:a(()=>[o(e.Switch,{checked:e.archForm.useStoredCredentials,"onUpdate:checked":r[9]||(r[9]=n=>e.archForm.useStoredCredentials=n),disabled:e.archive.hasStoredWebdavCredentials.value===!1,"checked-children":"使用 Settings 中已保存的 WebDAV 配置","un-checked-children":"本次手输(仍只在 main 进程暂存,不写盘)"},null,8,["checked","disabled"]),e.archForm.useStoredCredentials&&e.archive.hasStoredWebdavCredentials.value===!0?(k(),A(e.Alert,{key:0,type:"success","show-icon":"",message:"已找到 Settings → 同步 → WebDAV 中保存的凭据,主进程会从 secure-config.enc(safeStorage / AES-256-GCM 加密)解密后构造 WebDAVClient — 渲染端不接触明文密码。"})):e.archForm.useStoredCredentials&&e.archive.hasStoredWebdavCredentials.value===!1?(k(),A(e.Alert,{key:1,type:"warning","show-icon":"",message:"尚未保存 WebDAV 凭据,请先在 Settings → 同步 → WebDAV 中配置一次,然后再回来推送归档。"})):F("v-if",!0)]),_:1})]),_:1}),e.archForm.useStoredCredentials?F("v-if",!0):(k(),Y(re,{key:0},[o(e.FormItem,{label:"url"},{default:a(()=>[o(e.Input,{value:e.archForm.url,"onUpdate:value":r[10]||(r[10]=n=>e.archForm.url=n),placeholder:"https://nas.example/dav"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"username"},{default:a(()=>[o(e.Input,{value:e.archForm.username,"onUpdate:value":r[11]||(r[11]=n=>e.archForm.username=n)},null,8,["value"])]),_:1}),o(e.FormItem,{label:"password"},{default:a(()=>[o(e.Input,{value:e.archForm.password,"onUpdate:value":r[12]||(r[12]=n=>e.archForm.password=n),type:"password"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"remotePath"},{default:a(()=>[o(e.Input,{value:e.archForm.remotePath,"onUpdate:value":r[13]||(r[13]=n=>e.archForm.remotePath=n),placeholder:"/cc-archives"},null,8,["value"])]),_:1})],64))],64)),o(e.FormItem,{label:"(可选) sinceBatchId 增量推"},{default:a(()=>[o(e.Input,{value:e.archForm.sinceBatchId,"onUpdate:value":r[14]||(r[14]=n=>e.archForm.sinceBatchId=n),placeholder:"000005"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"(restore 用) archiveName"},{default:a(()=>[o(e.Input,{value:e.archForm.archiveName,"onUpdate:value":r[15]||(r[15]=n=>e.archForm.archiveName=n),placeholder:"channel-mtc-...zip"},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{loading:e.archive.loading.value,onClick:e.archiveList},{default:a(()=>[...r[48]||(r[48]=[b("列出归档",-1)])]),_:1},8,["loading"]),o(e.Button,{type:"primary",loading:e.archive.loading.value,disabled:!e.archive.isEmbedded,onClick:e.archivePush},{default:a(()=>[...r[49]||(r[49]=[b(" 推送 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{loading:e.archive.loading.value,disabled:!e.archive.isEmbedded,onClick:e.archiveRestore},{default:a(()=>[...r[50]||(r[50]=[b(" 恢复 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),e.archive.errorMessage.value?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.archive.errorMessage.value},null,8,["message"])):F("v-if",!0),e.archive.archives.value.length?(k(),A(e.List,{key:1,size:"small",bordered:"","data-source":e.archive.archives.value,style:{"margin-top":"12px"}},{header:a(()=>[K("span",null,"provider 现有归档("+E(e.archive.archives.value.length)+")",1)]),renderItem:a(({item:n})=>[o(e.ListItem,null,{default:a(()=>[K("code",null,E(n),1),o(e.Button,{size:"small",type:"link",onClick:s=>e.archForm.archiveName=n},{default:a(()=>[...r[51]||(r[51]=[b("填入恢复",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:1},8,["data-source"])):F("v-if",!0),e.archive.lastResult.value?(k(),A(e.Card,{key:2,size:"small",style:{"margin-top":"12px"}},{title:a(()=>[...r[52]||(r[52]=[b("最近一次操作",-1)])]),default:a(()=>[K("pre",Mr,E(JSON.stringify(e.archive.lastResult.value,null,2)),1)]),_:1})):F("v-if",!0)]),_:1}),F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"mofn",tab:"Governance M-of-N"},{default:a(()=>[o(e.Form,{layout:"vertical"},{default:a(()=>[o(e.FormItem,{label:"communityId",required:""},{default:a(()=>[o(e.Input,{value:e.propForm.communityId,"onUpdate:value":r[16]||(r[16]=n=>e.propForm.communityId=n),placeholder:"comm-X"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"proposalId",required:""},{default:a(()=>[o(e.Input,{value:e.propForm.proposalId,"onUpdate:value":r[17]||(r[17]=n=>e.propForm.proposalId=n),placeholder:"prop-rule-1"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"payload (JSON)"},{default:a(()=>[o(e.Textarea,{value:e.propForm.payload,"onUpdate:value":r[18]||(r[18]=n=>e.propForm.payload=n),rows:3},null,8,["value"])]),_:1}),o(e.FormItem,{label:"members(DID 列表,空白分隔)"},{default:a(()=>[o(e.Textarea,{value:e.propForm.members,"onUpdate:value":r[19]||(r[19]=n=>e.propForm.members=n),rows:3,placeholder:`did:chainlesschain:abc
|
|
18
18
|
did:chainlesschain:def`},null,8,["value"])]),_:1}),o(e.FormItem,{label:"threshold"},{default:a(()=>[o(e.InputNumber,{value:e.propForm.threshold,"onUpdate:value":r[20]||(r[20]=n=>e.propForm.threshold=n),min:1,max:100},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{loading:e.mofn.loading.value,onClick:e.mofnList},{default:a(()=>[...r[53]||(r[53]=[b("刷新提案列表",-1)])]),_:1},8,["loading"]),o(e.Button,{type:"primary",loading:e.mofn.loading.value,disabled:!e.mofn.isEmbedded,onClick:e.mofnCreate},{default:a(()=>[...r[54]||(r[54]=[b(" 创建提案 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),e.mofn.errorMessage.value?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.mofn.errorMessage.value,style:{margin:"12px 0"}},null,8,["message"])):F("v-if",!0),o(e.Alert,{type:"success","show-icon":"",message:"签名收集 v2 — 主进程代签",description:"点击提案行的「代我签名」按钮:renderer 只发 (communityId, proposalId),桌面主进程从 DIDManager 取本人当前身份,在主进程内完成 Ed25519 签名后写入 staging/。私钥永不离开主进程。",style:{"margin-bottom":"12px"}}),e.mofn.proposals.value.length?(k(),A(e.List,{key:1,size:"small",bordered:"","data-source":e.mofn.proposals.value},{header:a(()=>[K("span",null,"提案列表("+E(e.mofn.proposals.value.length)+")",1)]),renderItem:a(({item:n})=>[o(e.ListItem,null,{default:a(()=>[o(e.ListItem.Meta,null,{title:a(()=>[o(e.Space,null,{default:a(()=>[K("code",null,E(n.proposalId),1),o(e.Tag,{color:n.finalized?"green":"blue"},{default:a(()=>[b(E(n.finalized?"已最终化":`${n.collected}/${n.threshold} 收集中`),1)]),_:2},1032,["color"])]),_:2},1024)]),description:a(()=>[b(" members="+E(n.members.length)+" · created "+E(n.createdAt),1)]),_:2},1024),o(e.Space,null,{default:a(()=>[o(e.Button,{size:"small",loading:e.mofn.loading.value,onClick:s=>e.mofnStatus(n.proposalId)},{default:a(()=>[...r[55]||(r[55]=[b("详情",-1)])]),_:1},8,["loading","onClick"]),o(e.Button,{size:"small",disabled:n.finalized||!e.mofn.isEmbedded,loading:e.mofn.loading.value,onClick:s=>e.mofnSignAsSelf(n.proposalId)},{default:a(()=>[...r[56]||(r[56]=[b(" 代我签名 ",-1)])]),_:1},8,["disabled","loading","onClick"]),o(e.Button,{size:"small",type:"primary",disabled:n.finalized||n.collected<n.threshold||!e.mofn.isEmbedded,loading:e.mofn.loading.value,onClick:s=>e.mofnFinalize(n.proposalId)},{default:a(()=>[...r[57]||(r[57]=[b(" Finalize ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])):F("v-if",!0),e.mofn.currentStatus.value?(k(),A(e.Card,{key:2,size:"small",style:{"margin-top":"12px"}},{title:a(()=>[...r[58]||(r[58]=[b("当前提案状态",-1)])]),default:a(()=>[K("pre",Pr,E(JSON.stringify(e.mofn.currentStatus.value,null,2)),1)]),_:1})):F("v-if",!0)]),_:1}),F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"trust",tab:"Cross-Fed Trust"},{default:a(()=>[o(e.Form,{layout:"vertical"},{default:a(()=>[o(e.FormItem,{label:"localCommunityId",required:""},{default:a(()=>[o(e.Input,{value:e.trustForm.localCommunityId,"onUpdate:value":r[21]||(r[21]=n=>e.trustForm.localCommunityId=n),placeholder:"comm-engineering"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"remoteCommunityId"},{default:a(()=>[o(e.Input,{value:e.trustForm.remoteCommunityId,"onUpdate:value":r[22]||(r[22]=n=>e.trustForm.remoteCommunityId=n),placeholder:"comm-research"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"remoteMembers(DID 列表,空白分隔)"},{default:a(()=>[o(e.Textarea,{value:e.trustForm.remoteMembers,"onUpdate:value":r[23]||(r[23]=n=>e.trustForm.remoteMembers=n),rows:3},null,8,["value"])]),_:1}),o(e.FormItem,{label:"expiresAt(ISO 时间,留空表示永久)"},{default:a(()=>[o(e.Input,{value:e.trustForm.expiresAt,"onUpdate:value":r[24]||(r[24]=n=>e.trustForm.expiresAt=n),placeholder:"2099-01-01T00:00:00Z"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"note (可选)"},{default:a(()=>[o(e.Input,{value:e.trustForm.note,"onUpdate:value":r[25]||(r[25]=n=>e.trustForm.note=n)},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{loading:e.trust.loading.value,onClick:e.trustList},{default:a(()=>[...r[59]||(r[59]=[b("刷新",-1)])]),_:1},8,["loading"]),o(e.Button,{type:"primary",loading:e.trust.loading.value,disabled:!e.trust.isEmbedded,onClick:e.trustEstablish},{default:a(()=>[...r[60]||(r[60]=[b(" 建立信任 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{loading:e.trust.loading.value,onClick:e.trustDids},{default:a(()=>[...r[61]||(r[61]=[b("查看合并 DID 集",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e.trust.errorMessage.value?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.trust.errorMessage.value},null,8,["message"])):F("v-if",!0),e.trust.records.value.length?(k(),A(e.List,{key:1,size:"small",bordered:"","data-source":e.trust.records.value,style:{"margin-top":"12px"}},{header:a(()=>[K("span",null,"已建立信任("+E(e.trust.records.value.length)+")",1)]),renderItem:a(({item:n})=>[o(e.ListItem,null,{default:a(()=>[o(e.ListItem.Meta,null,{title:a(()=>[o(e.Space,null,{default:a(()=>[K("code",null,E(n.remoteCommunityId),1),o(e.Tag,{color:"blue"},{default:a(()=>[b(E(n.remoteMembers.length)+" 成员",1)]),_:2},1024),n.expiresAt?(k(),A(e.Tag,{key:0,color:"orange"},{default:a(()=>[b("expires "+E(n.expiresAt),1)]),_:2},1024)):(k(),A(e.Tag,{key:1,color:"green"},{default:a(()=>[...r[62]||(r[62]=[b("永久",-1)])]),_:1}))]),_:2},1024)]),description:a(()=>[b(E(n.note||"(无备注)")+" · issued "+E(n.issuedAt),1)]),_:2},1024),o(e.Button,{size:"small",danger:"",disabled:!e.trust.isEmbedded,onClick:s=>e.trustRevoke(n.remoteCommunityId)},{default:a(()=>[...r[63]||(r[63]=[b(" 撤销 ",-1)])]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:1},8,["data-source"])):F("v-if",!0),e.trust.trustedDids.value.length?(k(),A(e.Card,{key:2,size:"small",style:{"margin-top":"12px"}},{title:a(()=>[b("合并 DID 集("+E(e.trust.trustedDids.value.length)+" 个)",1)]),default:a(()=>[o(e.List,{size:"small","data-source":e.trust.trustedDids.value},{renderItem:a(({item:n})=>[o(e.ListItem,null,{default:a(()=>[K("code",null,E(n),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):F("v-if",!0)]),_:1}),F(" ─────────────────────────────────────────── "),o(e.TabPane,{key:"auto-archive",tab:"Auto Archive 定时归档"},{default:a(()=>[o(e.Alert,{type:"info","show-icon":"",message:"B4-auto-archive v1 — 主进程内的定时器",description:"开启后桌面主进程会按设定的间隔自动 ChannelEnvelopeArchiver.push 一遍所有目标 community。最小间隔 5 分钟(防误配)。任何归档失败会记入 lastRunStatus='partial',不会中断后续 community 的归档。",style:{"margin-bottom":"16px"}}),o(e.Form,{layout:"vertical"},{default:a(()=>[o(e.FormItem,{label:"启用定时归档"},{default:a(()=>[o(e.Switch,{checked:e.autoForm.enabled,"onUpdate:checked":r[26]||(r[26]=n=>e.autoForm.enabled=n)},null,8,["checked"])]),_:1}),o(e.FormItem,{label:"归档间隔(小时)"},{default:a(()=>[o(e.InputNumber,{value:e.autoForm.intervalHours,"onUpdate:value":r[27]||(r[27]=n=>e.autoForm.intervalHours=n),min:.1,max:168,step:1},null,8,["value"]),o(e.Typography.Text,{type:"secondary",style:{"margin-left":"8px"}},{default:a(()=>[...r[64]||(r[64]=[b(" ≥ 5 分钟(0.083 小时);常用值:1 / 6 / 24 / 168 ",-1)])]),_:1})]),_:1}),o(e.FormItem,{label:"归档目标 provider"},{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{type:e.autoForm.providerKind==="filesystem"?"primary":"default",onClick:r[28]||(r[28]=n=>e.autoForm.providerKind="filesystem")},{default:a(()=>[...r[65]||(r[65]=[b(" Filesystem ",-1)])]),_:1},8,["type"]),o(e.Button,{type:e.autoForm.providerKind==="webdav"?"primary":"default",onClick:r[29]||(r[29]=n=>e.autoForm.providerKind="webdav")},{default:a(()=>[...r[66]||(r[66]=[b(" WebDAV ",-1)])]),_:1},8,["type"])]),_:1})]),_:1}),e.autoForm.providerKind==="filesystem"?(k(),A(e.FormItem,{key:0,label:"rootDir 本地路径",required:""},{default:a(()=>[o(e.Input,{value:e.autoForm.rootDir,"onUpdate:value":r[30]||(r[30]=n=>e.autoForm.rootDir=n),placeholder:"/path/to/archive-mirror"},null,8,["value"])]),_:1})):(k(),Y(re,{key:1},[o(e.FormItem,{label:"使用已保存的 WebDAV 凭据"},{default:a(()=>[o(e.Switch,{checked:e.autoForm.useStoredCredentials,"onUpdate:checked":r[31]||(r[31]=n=>e.autoForm.useStoredCredentials=n)},null,8,["checked"]),o(e.Typography.Text,{type:"secondary",style:{"margin-left":"8px"}},{default:a(()=>[...r[67]||(r[67]=[b(" 建议 ON — main 进程从 secure-config.enc 解密,密码不写入 cron 配置 ",-1)])]),_:1})]),_:1}),e.autoForm.useStoredCredentials?F("v-if",!0):(k(),Y(re,{key:0},[o(e.FormItem,{label:"url"},{default:a(()=>[o(e.Input,{value:e.autoForm.url,"onUpdate:value":r[32]||(r[32]=n=>e.autoForm.url=n),placeholder:"https://nas.example/dav"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"username"},{default:a(()=>[o(e.Input,{value:e.autoForm.username,"onUpdate:value":r[33]||(r[33]=n=>e.autoForm.username=n)},null,8,["value"])]),_:1}),o(e.FormItem,{label:"password"},{default:a(()=>[o(e.Input,{value:e.autoForm.password,"onUpdate:value":r[34]||(r[34]=n=>e.autoForm.password=n),type:"password"},null,8,["value"])]),_:1}),o(e.FormItem,{label:"remotePath"},{default:a(()=>[o(e.Input,{value:e.autoForm.remotePath,"onUpdate:value":r[35]||(r[35]=n=>e.autoForm.remotePath=n),placeholder:"/cc-archives"},null,8,["value"])]),_:1})],64))],64)),o(e.FormItem,{label:"目标 community(每行一个;留空表示全部已加入的)"},{default:a(()=>[o(e.Textarea,{value:e.autoForm.communityIdsRaw,"onUpdate:value":r[36]||(r[36]=n=>e.autoForm.communityIdsRaw=n),rows:3,placeholder:`comm-A
|
|
19
|
-
comm-B`},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{type:"primary",loading:e.autoArchive.loading.value,disabled:!e.autoArchive.isEmbedded,onClick:e.autoSave},{default:a(()=>[...r[68]||(r[68]=[b(" 保存配置 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{loading:e.autoArchive.loading.value,disabled:!e.autoArchive.isEmbedded,onClick:e.autoRunNow},{default:a(()=>[...r[69]||(r[69]=[b(" 立即归档一次 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{disabled:!e.autoArchive.isEmbedded,onClick:e.autoLoadConfig},{default:a(()=>[...r[70]||(r[70]=[b("刷新",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1}),e.autoArchive.errorMessage.value?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.autoArchive.errorMessage.value,style:{"margin-top":"12px"}},null,8,["message"])):F("v-if",!0),e.autoArchive.config.value?(k(),A(e.Card,{key:1,size:"small",title:"当前持久化配置 + 上次运行状态",style:{"margin-top":"16px"}},{default:a(()=>[o(e.Descriptions,{column:2,size:"small"},{default:a(()=>[o(e.DescriptionsItem,{label:"enabled"},{default:a(()=>[o(e.Tag,{color:e.autoArchive.config.value.enabled?"green":"default"},{default:a(()=>[b(E(e.autoArchive.config.value.enabled?"ON":"OFF"),1)]),_:1},8,["color"])]),_:1}),o(e.DescriptionsItem,{label:"interval"},{default:a(()=>[b(E(Math.round((e.autoArchive.config.value.intervalMs||0)/1e3/60))+" 分钟 ",1)]),_:1}),o(e.DescriptionsItem,{label:"providerKind"},{default:a(()=>[b(E(e.autoArchive.config.value.providerSpec?.kind||"—"),1)]),_:1}),o(e.DescriptionsItem,{label:"targets"},{default:a(()=>[b(E(e.autoArchive.config.value.communityIds.length||"全部"),1)]),_:1}),o(e.DescriptionsItem,{label:"lastRunAt"},{default:a(()=>[b(E(e.autoArchive.config.value.lastRunAt?new Date(e.autoArchive.config.value.lastRunAt).toLocaleString():"—"),1)]),_:1}),o(e.DescriptionsItem,{label:"lastRunStatus"},{default:a(()=>[e.autoArchive.config.value.lastRunStatus?(k(),A(e.Tag,{key:0,color:e.autoArchive.config.value.lastRunStatus==="ok"?"green":e.autoArchive.config.value.lastRunStatus==="partial"?"orange":"red"},{default:a(()=>[b(E(e.autoArchive.config.value.lastRunStatus),1)]),_:1},8,["color"])):(k(),Y("span",zr,"—"))]),_:1})]),_:1}),e.autoArchive.config.value.lastRunError?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.autoArchive.config.value.lastRunError,style:{"margin-top":"8px"}},null,8,["message"])):F("v-if",!0)]),_:1})):F("v-if",!0),e.autoArchive.lastRunResult.value&&e.autoArchive.lastRunResult.value.summary?(k(),A(e.Card,{key:2,size:"small",title:"本次手动 run-now 摘要",style:{"margin-top":"12px"}},{default:a(()=>[K("pre",Ur,E(JSON.stringify(e.autoArchive.lastRunResult.value.summary,null,2)),1)]),_:1})):F("v-if",!0)]),_:1})]),_:1},8,["active-key"])])}const lo=xt(Dr,[["render",Lr],["__scopeId","data-v-28bd698f"],["__file","/tmp/cc-web-panel-
|
|
19
|
+
comm-B`},null,8,["value"])]),_:1}),o(e.FormItem,null,{default:a(()=>[o(e.Space,null,{default:a(()=>[o(e.Button,{type:"primary",loading:e.autoArchive.loading.value,disabled:!e.autoArchive.isEmbedded,onClick:e.autoSave},{default:a(()=>[...r[68]||(r[68]=[b(" 保存配置 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{loading:e.autoArchive.loading.value,disabled:!e.autoArchive.isEmbedded,onClick:e.autoRunNow},{default:a(()=>[...r[69]||(r[69]=[b(" 立即归档一次 ",-1)])]),_:1},8,["loading","disabled"]),o(e.Button,{disabled:!e.autoArchive.isEmbedded,onClick:e.autoLoadConfig},{default:a(()=>[...r[70]||(r[70]=[b("刷新",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1}),e.autoArchive.errorMessage.value?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.autoArchive.errorMessage.value,style:{"margin-top":"12px"}},null,8,["message"])):F("v-if",!0),e.autoArchive.config.value?(k(),A(e.Card,{key:1,size:"small",title:"当前持久化配置 + 上次运行状态",style:{"margin-top":"16px"}},{default:a(()=>[o(e.Descriptions,{column:2,size:"small"},{default:a(()=>[o(e.DescriptionsItem,{label:"enabled"},{default:a(()=>[o(e.Tag,{color:e.autoArchive.config.value.enabled?"green":"default"},{default:a(()=>[b(E(e.autoArchive.config.value.enabled?"ON":"OFF"),1)]),_:1},8,["color"])]),_:1}),o(e.DescriptionsItem,{label:"interval"},{default:a(()=>[b(E(Math.round((e.autoArchive.config.value.intervalMs||0)/1e3/60))+" 分钟 ",1)]),_:1}),o(e.DescriptionsItem,{label:"providerKind"},{default:a(()=>[b(E(e.autoArchive.config.value.providerSpec?.kind||"—"),1)]),_:1}),o(e.DescriptionsItem,{label:"targets"},{default:a(()=>[b(E(e.autoArchive.config.value.communityIds.length||"全部"),1)]),_:1}),o(e.DescriptionsItem,{label:"lastRunAt"},{default:a(()=>[b(E(e.autoArchive.config.value.lastRunAt?new Date(e.autoArchive.config.value.lastRunAt).toLocaleString():"—"),1)]),_:1}),o(e.DescriptionsItem,{label:"lastRunStatus"},{default:a(()=>[e.autoArchive.config.value.lastRunStatus?(k(),A(e.Tag,{key:0,color:e.autoArchive.config.value.lastRunStatus==="ok"?"green":e.autoArchive.config.value.lastRunStatus==="partial"?"orange":"red"},{default:a(()=>[b(E(e.autoArchive.config.value.lastRunStatus),1)]),_:1},8,["color"])):(k(),Y("span",zr,"—"))]),_:1})]),_:1}),e.autoArchive.config.value.lastRunError?(k(),A(e.Alert,{key:0,type:"error","show-icon":"",message:e.autoArchive.config.value.lastRunError,style:{"margin-top":"8px"}},null,8,["message"])):F("v-if",!0)]),_:1})):F("v-if",!0),e.autoArchive.lastRunResult.value&&e.autoArchive.lastRunResult.value.summary?(k(),A(e.Card,{key:2,size:"small",title:"本次手动 run-now 摘要",style:{"margin-top":"12px"}},{default:a(()=>[K("pre",Ur,E(JSON.stringify(e.autoArchive.lastRunResult.value.summary,null,2)),1)]),_:1})):F("v-if",!0)]),_:1})]),_:1},8,["active-key"])])}const lo=xt(Dr,[["render",Lr],["__scopeId","data-v-28bd698f"],["__file","/tmp/cc-web-panel-oYLsUC/repo/packages/web-panel/src/views/MtcAudit.vue"]]);export{lo as default};
|