chainlesschain 0.162.0 → 0.162.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-Dn8q-Cu4.js → AIOps-D69_XwQf.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BePEVs4O.js → ActionButton-COVVHNnK.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-CKp-5Gi0.js → Analytics-m0Cuoraq.js} +2 -2
- package/src/assets/web-panel/assets/{AppLayout-DBgtkmP7.css → AppLayout-BEZq_CS0.css} +1 -1
- package/src/assets/web-panel/assets/{AppLayout-BSudqld0.js → AppLayout-BzzvYjpq.js} +3 -3
- package/src/assets/web-panel/assets/{Audit-iefpSeRG.js → Audit-DB5RNs9K.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-Ce43ZIhD.js → Backup-DD9SgVtq.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-BvGiwRav.js → BaseInput-CS2Y4V0O.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BAaQg-Oc.js → Chat-Cvw48zqw.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-Dvn8uxKO.js → Checkbox-DElRJpAL.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CTcZCayj.js → Codegen-CHdMYssy.js} +1 -1
- package/src/assets/web-panel/assets/{Col-CBFpGgb5.js → Col-BDk4BXjN.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DmCYaV9M.js → Community-ByDrN94M.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DnOD5uMF.js → Compact-D4E0roed.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-u53e9lg-.js → Compliance-DCkF4hfd.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CL5ohuXH.js → Cowork-CMn6mzHv.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-DubcmRgt.js → Cron-CARdrrMM.js} +1 -1
- package/src/assets/web-panel/assets/{Crosschain-BWXcUXc3.js → Crosschain-2pnRIGVn.js} +1 -1
- package/src/assets/web-panel/assets/{DID-Cw0i8WjE.js → DID-BRo55XlY.js} +1 -1
- package/src/assets/web-panel/assets/{Dashboard-BbofvIWH.js → Dashboard-DfNjjw7V.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DN6ur5xV.js → Dropdown-BDTTlG70.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CA-rIdkY.js → Federation-CKkeJ169.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-D_HGU4aA.js → FormItemContext-C6DJ0oHT.js} +1 -1
- package/src/assets/web-panel/assets/{Git-CBWFs6Uk.js → Git-DDQd8pDl.js} +1 -1
- package/src/assets/web-panel/assets/{Governance-Cx6PTC43.js → Governance-DZTuAASB.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Ubk1VstS.js → Inference-CIbj0XmL.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DTB10MYO.js → KnowledgeGraph-nTHxy0Fw.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-Tfk4FBVC.js → Logs-BrLBwq1m.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-BAsztG4O.js → Marketplace-q9X5VK92.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DliPfvuK.js → McpTools-DfxuLN57.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-hkw6Xwyv.js → Memory-DND9vjBx.js} +1 -1
- package/src/assets/web-panel/assets/{MobileBridge-eeNMFGj6.js → MobileBridge-Ba2jSFl0.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-CdclN769.js +1 -0
- package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +1 -0
- package/src/assets/web-panel/assets/{Mtc-BP3Riowm.js → Mtc-BNKpFjlY.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-DvD7pE7V.js → MtcAudit-BlZJm1Tf.js} +1 -1
- package/src/assets/web-panel/assets/{Multisig-CPtc-fVL.js → Multisig-DcX0uBmT.js} +1 -1
- package/src/assets/web-panel/assets/{NLProgramming-1y__Epjg.js → NLProgramming-dDIA3V_a.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CEvJqMP8.js → Notes-BDsTuZ5O.js} +1 -1
- package/src/assets/web-panel/assets/{NotificationSettings-wmCYm99r.js → NotificationSettings-DzGuAAKt.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-CSoz8gGr.js → Organization-DFfncYaU.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-kf1mnFrM.js → Overflow-O5JDtvyx.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-C4GfXJ8Z.js → P2P-BTLl5rnf.js} +1 -1
- package/src/assets/web-panel/assets/{Permissions-CW1Mn95X.js → Permissions-M-jmJa1X.js} +1 -1
- package/src/assets/web-panel/assets/{Pipeline-CM1ppddn.js → Pipeline-DyXoKp_J.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DuAY5fEm.js → Privacy-Cvv_9eBQ.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-C72779b6.js → ProjectInit-BS2s_sxy.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectSettings-CAilXWam.js → ProjectSettings-CGfEpOL1.js} +1 -1
- package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +1 -0
- package/src/assets/web-panel/assets/Projects-BkuTxL3o.js +1 -0
- package/src/assets/web-panel/assets/{Providers-Cf6Yv8bu.js → Providers-CkhZ5eii.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-CK1_VVzw.js → QuickAsk-CvGT4zj2.js} +1 -1
- package/src/assets/web-panel/assets/Recommend-C-gDvXw6.js +1 -0
- package/src/assets/web-panel/assets/{Reputation-ju6lWzMM.js → Reputation-5zAdCzHT.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DQwipGEm.js → Row-BsuDvMpO.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-DkLGmeLW.js → RssFeed-2QQb8p5X.js} +3 -3
- package/src/assets/web-panel/assets/{Search-YYhitzkt.js → Search-CFT_6Ljj.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DEllaBqe.js → Security-BrK_KNJK.js} +1 -1
- package/src/assets/web-panel/assets/{Services-BgPHBq9S.js → Services-DAmjLm-1.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-DHEyJI7c.js → Skeleton--WjfL2Ay.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-c212vgf3.js → Skills-1GWFYMGg.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-COqhw_no.js → Sla-508cBkmT.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Bmds06su.js → SpeechSettings-DIeNRX6V.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-Bx1_A34Y.js → SyncSettings-BQDW6gsX.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-B0Lo_9aN.js → Tasks-D39SBKyi.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-D0RcpfuW.js → Templates-tsObCBe6.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-G0yVctLy.js → Tenant-Ccpw-S6R.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-DqgLtK3c.js → Terminal-CgFg09NA.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-Cdt0aqCc.js → Tokens-BBWOiqLq.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DFbfZFuJ.js → Trigger-D4yonKuU.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BQXsWPz6.js → Trust-DHDcLjma.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DBem5Xkj.js → UkeySign-DBpW0j1p.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-B1yipKKv.js → VideoEditing-BPr_46Py.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-iPJtU5QZ.js → Wallet-4lfplIJV.js} +1 -1
- package/src/assets/web-panel/assets/{WebAuthn-HLb9srUL.js → WebAuthn-DI13wkez.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-BSqXL8GD.js → WorkflowEditor-CYbHpkQy.js} +1 -1
- package/src/assets/web-panel/assets/{chat-D_J-ZVBh.js → chat-BOH4vNJ7.js} +1 -1
- package/src/assets/web-panel/assets/{colors-B126JcB4.js → colors-qxXJ45GU.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-Bw5EEKw4.js → compact-item-Cjb446yk.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-xLJXI46O.js → createContext-CulBut34.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-K8QCNlyy.js → hasIn-DCnwRrNq.js} +1 -1
- package/src/assets/web-panel/assets/{icons-NT6gy8Ee.js → icons-DY9VpXfa.js} +4 -4
- package/src/assets/web-panel/assets/{index-zEr6BW9X.js → index-6xtj6SRQ.js} +1 -1
- package/src/assets/web-panel/assets/index-B0YFQoW_.js +1 -0
- package/src/assets/web-panel/assets/{index-DFPVNSby.js → index-BA8bUOYK.js} +1 -1
- package/src/assets/web-panel/assets/{index-DY5Oc3z6.js → index-BAy0ks7N.js} +4 -4
- package/src/assets/web-panel/assets/{index-DlX09aXr.js → index-BBWR20mC.js} +1 -1
- package/src/assets/web-panel/assets/{index-B9ztiTnX.js → index-BCr0xH2Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-CWBajOcE.js → index-BKNbteyC.js} +1 -1
- package/src/assets/web-panel/assets/{index-BaXXyyT0.js → index-BO-vFfxc.js} +1 -1
- package/src/assets/web-panel/assets/{index-DrfiELFa.js → index-BOFep_rA.js} +1 -1
- package/src/assets/web-panel/assets/index-BX7snsTz.js +1 -0
- package/src/assets/web-panel/assets/{index-yhA-qP4Y.js → index-Bb1KdW4J.js} +1 -1
- package/src/assets/web-panel/assets/{index-xJkPbv0L.js → index-Bp4_7Kow.js} +1 -1
- package/src/assets/web-panel/assets/{index-Da7bZewp.js → index-C3ImsNgP.js} +1 -1
- package/src/assets/web-panel/assets/{index-sAfwWh0R.js → index-C7reeGYU.js} +1 -1
- package/src/assets/web-panel/assets/{index-CvAey6iD.js → index-CFw2RtQ_.js} +1 -1
- package/src/assets/web-panel/assets/{index-DdMzLeDn.js → index-CRsnuDGC.js} +1 -1
- package/src/assets/web-panel/assets/{index-CVeuzjxG.js → index-CV_vlbaU.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dj8BNg-z.js → index-CW7a8O5w.js} +1 -1
- package/src/assets/web-panel/assets/{index-C2CgD7TN.js → index-C_029Hie.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFwF_JeQ.js → index-Civlun-X.js} +1 -1
- package/src/assets/web-panel/assets/{index-BSgvvXgq.js → index-CjJUQvIU.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZcij18m.js → index-Clxp_Rc0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DLZZi1Km.js → index-Cv2hQG7c.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_PqXUkT.js → index-D3bXm2aZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-COCq6xuZ.js → index-D6-3yvOU.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dt0Tp8TS.js → index-D80IlXq1.js} +1 -1
- package/src/assets/web-panel/assets/{index-fMwtau_-.js → index-DC38ymaH.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bv9odL87.js → index-DG1F9RZd.js} +1 -1
- package/src/assets/web-panel/assets/{index-mzNWO8Yy.js → index-DK5iJriy.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvNCyE3A.js → index-DNooejFX.js} +1 -1
- package/src/assets/web-panel/assets/{index-85lab9HJ.js → index-DQXojJvN.js} +1 -1
- package/src/assets/web-panel/assets/{index-qJbfToeQ.js → index-DkYY9W4x.js} +1 -1
- package/src/assets/web-panel/assets/{index-mqHxeING.js → index-DpzjQM4w.js} +1 -1
- package/src/assets/web-panel/assets/{index-p3d5_s7V.js → index-PP5MLidC.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQ_NIMQS.js → index-SHmkRPZ_.js} +1 -1
- package/src/assets/web-panel/assets/{index-BsbKjK1o.js → index-XMsNvoaz.js} +1 -1
- package/src/assets/web-panel/assets/{index-BWUG9yVI.js → index-cP5FNe0q.js} +1 -1
- package/src/assets/web-panel/assets/{index-LZYGhjVr.js → index-hca2ku7U.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bptjq-wQ.js → index-oGqObYfs.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CacwmJft.js → initDefaultProps-Dp93Vlbv.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BWrP7Lz6.js → motion-yBy7l6Td.js} +1 -1
- package/src/assets/web-panel/assets/{move-imnbiy1n.js → move-P6GgC8ZU.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BlaOv91I.js → omit-BMF4_2X_.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DUGKp0ro.js → pickAttrs-C1bUV-iL.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-P0ZA4yAK.js → placementArrow-CpNGMWxW.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CZz-M9cI.js → responsiveObserve-Bt3UzGUn.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BEnICwoX.js → slide-B5t0Lgse.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DdYKRSiH.js → statusUtils-nHmUS8yg.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DgUxvOQt.js → styleChecker-DgazP1mu.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BUEmeWdR.js → useFlexGapSupport-BQ4jJS_s.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-BXsj6Z5e.js → useFs-C8aeIQfU.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-B3Pp583L.js → vnode-DMH0ymoP.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-D-LYfiQh.js → zoom-DRmMxFNC.js} +1 -1
- package/src/assets/web-panel/index.html +2 -2
- package/src/assets/web-panel/assets/Projects-0OrfK90x.css +0 -1
- package/src/assets/web-panel/assets/Projects-DTIlVTkF.js +0 -1
- package/src/assets/web-panel/assets/Recommend-QBC7KgvR.js +0 -1
- package/src/assets/web-panel/assets/index-BEYypR_d.js +0 -1
- package/src/assets/web-panel/assets/index-DZWfmuM2.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{M as P,c as l,N as c,K as n,I as j,L as h,R as t,P as s,u as e,O as i}from"./vendor-M5lGV-wr.js";import{_ as g,b as y}from"./index-BAy0ks7N.js";import{F as v,M as _}from"./icons-DY9VpXfa.js";const B={class:"mobile-projects-placeholder"},x={class:"title"},M={class:"subtitle"},k={class:"explainer"},D={__name:"MobileProjects",setup(C){const r=j(),{t:o}=y();function p(){r.push("/projects")}function u(){r.push("/mobile-bridge")}return(N,T)=>{const m=n("a-alert"),a=n("a-button"),d=n("a-space"),b=n("a-empty"),f=n("a-card");return h(),P("div",B,[l(f,null,{default:c(()=>[l(b,{description:!1},{image:c(()=>[l(e(_),{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:c(()=>[t("h2",x,s(e(o)("mobileProjects.title")),1),t("p",M,s(e(o)("mobileProjects.subtitle")),1),l(m,{message:e(o)("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),t("div",k,[t("h3",null,s(e(o)("mobileProjects.currentDirection")),1),t("p",null,s(e(o)("mobileProjects.currentDirectionBody")),1),t("ul",null,[t("li",null,s(e(o)("mobileProjects.stepPhone")),1),t("li",null,s(e(o)("mobileProjects.stepTap")),1),t("li",null,s(e(o)("mobileProjects.stepPull")),1)]),t("h3",null,s(e(o)("mobileProjects.reverseDirection")),1),t("p",null,s(e(o)("mobileProjects.reverseDirectionBody")),1)]),l(d,{class:"actions"},{default:c(()=>[l(a,{type:"primary",onClick:p},{default:c(()=>[l(e(v)),i(" "+s(e(o)("mobileProjects.viewLocalProjects")),1)]),_:1}),l(a,{onClick:u},{default:c(()=>[l(e(_)),i(" "+s(e(o)("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}}},V=g(D,[["__scopeId","data-v-c9f7e00a"]]);export{V as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.mobile-projects-placeholder[data-v-c9f7e00a]{padding:32px;max-width:720px;margin:0 auto}.title[data-v-c9f7e00a]{margin-top:16px;font-size:24px;font-weight:600}.subtitle[data-v-c9f7e00a]{color:#00000080;margin-bottom:24px}.banner[data-v-c9f7e00a]{margin:16px 0 24px;text-align:left}.explainer[data-v-c9f7e00a]{text-align:left;background:#00000005;padding:16px;border-radius:8px;margin:16px 0}.explainer h3[data-v-c9f7e00a]{font-size:16px;margin:12px 0 8px}.explainer p[data-v-c9f7e00a]{color:#000000b3;margin:4px 0}.explainer ul[data-v-c9f7e00a]{margin:8px 0;padding-left:24px}.actions[data-v-c9f7e00a]{margin-top:16px}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{r as h,o as lt,x as ot,M,R as k,P as i,u as o,c as e,N as t,K as g,L as d,O as v,Q as m,$ as rt,a6 as nt,F as Ie,S as y,a1 as G,_ as st,Y as ut,f as te}from"./vendor-M5lGV-wr.js";import{_ as it,b as dt,u as ct,d as x}from"./index-
|
|
1
|
+
import{r as h,o as lt,x as ot,M,R as k,P as i,u as o,c as e,N as t,K as g,L as d,O as v,Q as m,$ as rt,a6 as nt,F as Ie,S as y,a1 as G,_ as st,Y as ut,f as te}from"./vendor-M5lGV-wr.js";import{_ as it,b as dt,u as ct,d as x}from"./index-BAy0ks7N.js";import{u as de}from"./useShellMode-CgR0wCYM.js";import{a as ce,b as $e,f as Fe,c as Le,d as ae,p as vt}from"./mtc-parser-Cc3pB9Xm.js";import{R as pt,f as ft,e as mt,x as je,b1 as bt,aJ as gt,N as yt,am as _t,H as ht}from"./icons-DY9VpXfa.js";import"./community-parser-CO25nZFt.js";const kt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},xt={class:"page-title"},wt={class:"page-sub"},St={style:{"font-family":"monospace"}},zt={style:{"font-family":"monospace"}},Ct={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},It={key:1,style:{color:"var(--text-muted)"}},$t={key:0,style:{"font-family":"monospace","font-size":"11px","word-break":"break-all"}},Ft={key:1,style:{color:"var(--text-muted)"}},Lt={key:1,style:{"font-family":"monospace","font-size":"11px"}},jt=["title"],Mt={style:{"font-family":"monospace"}},Dt={style:{"font-family":"monospace","font-size":"12px"}},Et={style:{"font-family":"monospace","font-size":"12px"}},Pt={class:"raw-pre"},Ot={style:{"font-family":"monospace"}},Ut={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-tertiary)","margin-left":"8px"}},At={key:0},Nt={style:{"font-family":"monospace"}},Rt={style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"11px"}},Tt={style:{"font-family":"monospace"}},Bt={style:{"font-family":"monospace"}},Ht={style:{"font-family":"monospace","font-size":"11px"}},qt={key:0,style:{color:"#cf1322","margin-left":"8px"}},Jt={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-secondary)","margin-left":"8px"}},Zt={class:"raw-pre",style:{margin:"0"}},Gt={__name:"Mtc",setup(Vt){const{t:r}=dt(),D=ct(),ve=h("status"),Y=h(!1),w=h(ce("")),X=h(""),le=h(!1),E=h($e("")),V=h(""),W=h(""),oe=h(!1),S=h(null),Me=te(()=>[{title:r("mtc.historyColumns.seq"),key:"seq",dataIndex:"seq",width:"90px"},{title:r("mtc.historyColumns.namespace"),key:"namespace",dataIndex:"namespace"},{title:r("mtc.historyColumns.treeSize"),key:"treeSize",dataIndex:"treeSize",width:"100px"},{title:r("mtc.historyColumns.treeHeadId"),key:"treeHeadId",dataIndex:"treeHeadId",width:"180px"},{title:r("mtc.historyColumns.publishedAt"),key:"publishedAt",dataIndex:"publishedAt",width:"140px"}]);function De(a,l){return a?a.length<=l?a:a.slice(0,l)+"…":""}async function pe(){Y.value=!0;try{if(de().isEmbedded){const a=await D.sendRaw({type:"mtc.audit-status"},3e4),l=a?.result;if(!a?.ok||!l?.success)throw new Error(l?.error||a?.error||"mtc.audit-status failed");w.value=ce(l.status)}else{const{output:a}=await D.execute("audit mtc status --json",3e4);w.value=ce(a)}}catch(a){x.error(r("mtc.messages.loadStatusFailed",{err:a?.message||a}))}finally{Y.value=!1}}async function Ee(){if(!X.value.trim()){x.warning(r("mtc.messages.stateFileRequired"));return}le.value=!0;try{const a=X.value.trim().replace(/"/g,'\\"'),{output:l}=await D.execute(`mtc publish-status "${a}" --json`,8e3);E.value=$e(l)}catch(a){x.error(r("mtc.messages.loadPublishFailed",{err:a?.message||a}))}finally{le.value=!1}}async function fe(){if(!V.value.trim()||!W.value.trim()){x.warning(r("mtc.messages.verifyPathsRequired"));return}oe.value=!0,S.value=null;try{const a=V.value.trim().replace(/"/g,'\\"'),l=W.value.trim().replace(/"/g,'\\"'),{output:u}=await D.execute(`mtc verify "${a}" --landmark "${l}" --json`,12e3);S.value=vt(u),S.value.raw||x.error(r("mtc.messages.verifyNoJson"))}catch(a){x.error(r("mtc.messages.verifyFailed",{err:a?.message||a}))}finally{oe.value=!1}}const $=h({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}}),Pe=te(()=>{switch($.value.config.mode){case"federated":return"Federated";case"light-client":return"Light Client";default:return"Independent"}}),Oe=[{title:"chain",key:"chain",dataIndex:"chain",width:"120px"},{title:"锚数",key:"count",dataIndex:"count",width:"80px"}],Ue=te(()=>{const a=$.value.trust_anchors.by_chain||{};return Object.entries(a).map(([l,u])=>({key:l,chain:l,count:u}))});function me(a){return{config:{enabled:!1,mode:"independent",alg:"ed25519",batch_interval_seconds:60,issuer:"",...a?.config||{}},trust_anchors:{chain_count:0,total:0,by_chain:{},...a?.trust_anchors||{}},staging:{pending:0,...a?.staging||{}},batches:{total:0,latest:null,...a?.batches||{}}}}const N=h({});let re=null;function Ae(a){return a==="ok"?"#52c41a":a==="degraded"?"#faad14":a==="down"?"#ff4d4f":"#888"}async function be(){try{if(de().isEmbedded){const u=await D.sendRaw({type:"mtc.bridge-sla"},3e4),f=u?.result;u?.ok&&f?.success&&f.metrics&&typeof f.metrics.sla_status=="string"&&(N.value=f.metrics);return}const{output:a}=await D.execute("crosschain mtc-sla --json",3e4),l=a.split(/\r?\n/);for(let u=0;u<l.length;u++)if(l[u].trimStart().startsWith("{"))for(let f=l.length;f>u;f--)try{const s=JSON.parse(l.slice(u,f).join(`
|
|
2
2
|
`));if(s&&typeof s.sla_status=="string"){N.value=s;return}}catch{}}catch{}}async function Ne(){try{if(de().isEmbedded){const u=await D.sendRaw({type:"mtc.bridge-status"},3e4),f=u?.result;if(!u?.ok||!f?.success||!f.status)throw new Error(f?.error||u?.error||"mtc.bridge-status failed");const s=f.status;$.value=me({config:{enabled:s.enabled,mode:s.mode,alg:s.alg,batch_interval_seconds:s.batch_interval_seconds,issuer:s.issuer},trust_anchors:s.trust_anchors,staging:s.staging,batches:s.batches});return}const{output:a}=await D.execute("crosschain mtc-status --json",3e4),l=a.split(/\r?\n/);for(let u=0;u<l.length;u++)if(l[u].trimStart().startsWith("{"))for(let f=l.length;f>u;f--)try{const s=JSON.parse(l.slice(u,f).join(`
|
|
3
|
-
`));if(s&&s.config){$.value=me(s);return}}catch{}}catch(a){x.error("加载桥 MTC 状态失败: "+(a?.message||a))}}const
|
|
4
|
-
`));break}catch{}if(p)break}K.value=p||{raw:s},x.success("命令执行完成"),l&&await xe()}catch(u){x.error("CLI 执行失败: "+(u?.message||u)),K.value={error:u?.message||String(u)}}finally{L.value=!1}}function ye(){const a=H.value;if(!a.actor||!a.candidate||!a.pubkeyId){x.warning("actor / candidate / pubkey-id 都必填");return}return O(`invite <FED> "${C(a.candidate)}" --actor "${C(a.actor)}" --candidate-pubkey-id "${C(a.pubkeyId)}"`)}function _e(){const a=q.value;if(!a.actor||!a.candidate){x.warning("actor / candidate 必填");return}return O(`vote <FED> "${C(a.candidate)}" --actor "${C(a.actor)}" --decision ${a.decision}`)}function he(){const a=
|
|
3
|
+
`));if(s&&s.config){$.value=me(s);return}}catch{}}catch(a){x.error("加载桥 MTC 状态失败: "+(a?.message||a))}}const Z=h(""),ne=h(!1),P=h(null),_=h(null),ge=h("随 governance-log 加载刷新"),se=te(()=>{const a=P.value?.state;return a?Array.isArray(a.pending_thresholds)&&a.pending_thresholds.length>0?a.pending_thresholds:a.pending_threshold&&Number.isInteger(a.pending_threshold.target)?[a.pending_threshold]:[]:[]}),Re=[{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 Te(a){switch(a){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 L=h(!1),K=h(null),H=h({actor:"",candidate:"",pubkeyId:""}),q=h({actor:"",candidate:"",decision:"approve"}),J=h({actor:"",newM:2}),R=h({actor:"",target:"",reason:"inactive"}),j=h({dropZone:"",verify:!1});function C(a){return String(a||"").replace(/"/g,"").replace(/[`$]/g,"")}async function O(a,l=!0){if(!Z.value.trim()){x.warning("请先输入联邦 ID");return}L.value=!0,K.value=null;try{const u=C(Z.value.trim()),f=`mtc federation ${a.replace("<FED>",`"${u}"`)} --json`,{output:s}=await D.execute(f,12e3),c=s.split(/\r?\n/);let p=null;for(let I=0;I<c.length;I++)if(c[I].trimStart().startsWith("{")){for(let U=c.length;U>I;U--)try{p=JSON.parse(c.slice(I,U).join(`
|
|
4
|
+
`));break}catch{}if(p)break}K.value=p||{raw:s},x.success("命令执行完成"),l&&await xe()}catch(u){x.error("CLI 执行失败: "+(u?.message||u)),K.value={error:u?.message||String(u)}}finally{L.value=!1}}function ye(){const a=H.value;if(!a.actor||!a.candidate||!a.pubkeyId){x.warning("actor / candidate / pubkey-id 都必填");return}return O(`invite <FED> "${C(a.candidate)}" --actor "${C(a.actor)}" --candidate-pubkey-id "${C(a.pubkeyId)}"`)}function _e(){const a=q.value;if(!a.actor||!a.candidate){x.warning("actor / candidate 必填");return}return O(`vote <FED> "${C(a.candidate)}" --actor "${C(a.actor)}" --decision ${a.decision}`)}function he(){const a=J.value;if(!a.actor){x.warning("actor 必填");return}return O(`propose-threshold <FED> ${parseInt(a.newM)} --actor "${C(a.actor)}"`)}function Be(){const a=J.value;if(!a.actor){x.warning("actor 必填");return}return O(`confirm-threshold <FED> --actor "${C(a.actor)}"`)}function He(a){const l=(J.value.actor||"").trim();if(!l){x.warning('请先在"改 threshold"子 tab 填 actor');return}if(!a){x.warning("proposal event_id 缺失");return}return O(`confirm-threshold <FED> --actor "${C(l)}" --proposal-event-id "${C(a)}"`)}function qe(a){return a?a.length<=16?a:`${a.slice(0,8)}…${a.slice(-4)}`:"—"}function ke(){const a=R.value;if(!a.actor||!a.target){x.warning("actor / target 必填");return}return O(`propose-revoke <FED> "${C(a.target)}" --actor "${C(a.actor)}" --reason "${C(a.reason)}"`)}function Je(){const a=R.value;if(!a.actor||!a.target){x.warning("actor / target 必填");return}return O(`confirm-revoke <FED> "${C(a.target)}" --actor "${C(a.actor)}"`)}function Ze(){if(!j.value.dropZone){x.warning("drop-zone 必填");return}return O(`governance-publish <FED> --drop-zone "${C(j.value.dropZone)}"`,!1)}function Ge(){if(!j.value.dropZone){x.warning("drop-zone 必填");return}const a=j.value.verify?" --verify":"";return O(`governance-pull <FED> --drop-zone "${C(j.value.dropZone)}"${a}`)}function Ve(){if(!j.value.dropZone){x.warning("drop-zone 必填");return}const a=j.value.verify?" --verify":"";return O(`governance-sync-serve <FED> --drop-zone "${C(j.value.dropZone)}" --once${a}`)}async function xe(){if(!Z.value.trim()){x.warning("请输入联邦 ID");return}ne.value=!0;try{const a=Z.value.trim().replace(/"/g,""),{output:l}=await D.execute(`mtc federation governance-log "${a}" --json`,8e3),u=l.split(/\r?\n/);let f=!1;for(let s=0;s<u.length;s++)if(u[s].trimStart().startsWith("{")){for(let c=u.length;c>s;c--)try{const p=JSON.parse(u.slice(s,c).join(`
|
|
5
5
|
`));if(p&&p.state){P.value=p,f=!0;break}}catch{}if(f)break}if(!f){x.error("未能解析 governance-log 输出");return}await We(a)}catch(a){x.error("加载 governance.log 失败: "+(a?.message||a))}finally{ne.value=!1}}async function We(a){if(_.value=null,ge.value="随 governance-log 加载刷新",!!a)try{const l=String(a).replace(/"/g,""),{output:u}=await D.execute(`mtc federation governance-sync-stats "${l}" --json`,8e3),f=u.split(/\r?\n/);for(let s=0;s<f.length;s++)if(f[s].trimStart().startsWith("{"))for(let c=f.length;c>s;c--)try{const p=JSON.parse(f.slice(s,c).join(`
|
|
6
|
-
`));if(p&&(p.available!==void 0||p.mode!==void 0)){_.value=p.available===!1?null:p;return}}catch{}}catch{_.value=null}}return lt(()=>{pe(),Ne(),be(),re=setInterval(be,3e4)}),ot(()=>{re&&clearInterval(re)}),(a,l)=>{const u=g("a-button"),f=g("a-space"),s=g("a-statistic"),c=g("a-card"),p=g("a-col"),I=g("a-tag"),U=g("a-row"),z=g("a-descriptions-item"),ee=g("a-descriptions"),T=g("a-alert"),A=g("a-tab-pane"),F=g("a-input"),b=g("a-form-item"),B=g("a-form"),ue=g("a-table"),Ke=g("a-collapse-panel"),Qe=g("a-collapse"),ie=g("a-empty"),we=g("a-list-item"),Se=g("a-list"),Ye=g("a-timeline-item"),Xe=g("a-timeline"),ze=g("a-select-option"),et=g("a-select"),tt=g("a-input-number"),at=g("a-checkbox"),Ce=g("a-tabs");return d(),M("div",null,[k("div",kt,[k("div",null,[k("h2",xt,i(o(r)("mtc.title")),1),k("p",wt,i(o(r)("mtc.subtitle")),1)]),e(f,null,{default:t(()=>[e(u,{loading:Y.value,onClick:pe},{icon:t(()=>[e(o(pt))]),default:t(()=>[v(" "+i(o(r)("mtc.refresh")),1)]),_:1},8,["loading"])]),_:1})]),e(Ce,{activeKey:ve.value,"onUpdate:activeKey":l[17]||(l[17]=n=>ve.value=n),class:"mtc-tabs"},{default:t(()=>[e(A,{key:"status",tab:o(r)("mtc.tabs.status")},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.enabledLabel"),value:w.value.config.enabled?o(r)("mtc.status.enabled"):o(r)("mtc.status.disabled"),"value-style":{color:w.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[(d(),m(rt(w.value.config.enabled?o(ft):o(mt))))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.intervalLabel"),value:o(Fe)(w.value.config.batch_interval_seconds),"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(je))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.stagingLabel"),value:w.value.staging.count,"value-style":{color:w.value.staging.count>0?"#faad14":"#888",fontSize:"20px"}},nt({prefix:t(()=>[e(o(bt))]),_:2},[w.value.staging.malformed>0?{name:"suffix",fn:t(()=>[e(I,{color:"red",style:{"margin-left":"8px"}},{default:t(()=>[v(i(o(r)("mtc.status.stagingMalformed",{count:w.value.staging.malformed})),1)]),_:1})]),key:"0"}:void 0]),1032,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.totalBatches"),value:w.value.batches.count,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(gt))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),e(c,{title:o(r)("mtc.status.configCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small"},{default:t(()=>[e(z,{label:"namespace"},{default:t(()=>[k("span",St,i(w.value.config.namespace_prefix||"—"),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[k("span",zt,i(w.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"oldest queued"},{default:t(()=>[v(i(o(Le)(w.value.staging.oldest_queued_at)),1)]),_:1}),e(z,{label:"last batch"},{default:t(()=>[w.value.batches.last_batch_id?(d(),M(Ie,{key:0},[e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+i(w.value.batches.last_batch_id),1)]),_:1}),k("span",Ct,i(o(r)("mtc.status.lastBatchSize",{size:w.value.batches.last_tree_size,time:o(ae)(w.value.batches.last_closed_at)})),1)],64)):(d(),M("span",It,i(o(r)("mtc.status.noBatches")),1))]),_:1}),e(z,{label:"last tree_head_id",span:2},{default:t(()=>[w.value.batches.last_tree_head_id?(d(),M("span",$t,i(w.value.batches.last_tree_head_id),1)):(d(),M("span",Ft,"—"))]),_:1})]),_:1})]),_:1},8,["title"]),!w.value.ok&&!Y.value?(d(),m(T,{key:0,type:"info","show-icon":"",message:o(r)("mtc.status.loadFailMessage"),description:o(r)("mtc.status.loadFailDescription")},null,8,["message","description"])):w.value.config.enabled?y("",!0):(d(),m(T,{key:1,type:"info","show-icon":"",message:o(r)("mtc.status.notEnabledMessage"),description:o(r)("mtc.status.notEnabledDescription")},null,8,["message","description"]))]),_:1},8,["tab"]),e(A,{key:"publisher",tab:o(r)("mtc.tabs.publisher")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(Ee,["prevent"])},{default:t(()=>[e(b,{label:o(r)("mtc.publisher.stateFileLabel")},{default:t(()=>[e(F,{value:X.value,"onUpdate:value":l[0]||(l[0]=n=>X.value=n),placeholder:o(r)("mtc.publisher.stateFilePlaceholder"),style:{"min-width":"360px"},"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(b,null,{default:t(()=>[e(u,{loading:le.value,type:"primary","html-type":"submit"},{default:t(()=>[v(i(o(r)("mtc.publisher.queryButton")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),E.value.ok&&!E.value.exists?(d(),m(T,{key:0,type:"info","show-icon":"",message:o(r)("mtc.publisher.missingMessage"),description:o(r)("mtc.publisher.missingDescription",{path:E.value.stateFile}),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("",!0),E.value.exists?(d(),m(U,{key:1,gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.publisher.lastSeq"),value:E.value.lastSeq,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(yt))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.publisher.historyEntries"),value:E.value.historyCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(_t))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.publisher.lastPublished"),value:o(ae)(E.value.lastPublishedAt),"value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:t(()=>[e(o(je))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})):y("",!0),E.value.exists&&E.value.history.length>0?(d(),m(ue,{key:2,"data-source":E.value.history,columns:Me.value,pagination:{pageSize:10},size:"small","row-key":"key"},{bodyCell:t(({column:n,record:Q})=>[n.key==="seq"?(d(),m(I,{key:0,color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+i(Q.seq),1)]),_:2},1024)):n.key==="treeHeadId"?(d(),M("span",Lt,i(De(Q.treeHeadId,22)),1)):n.key==="publishedAt"?(d(),M("span",{key:2,title:Q.publishedAt},i(o(ae)(Q.publishedAt)),9,jt)):y("",!0)]),_:1},8,["data-source","columns"])):y("",!0)]),_:1},8,["tab"]),e(A,{key:"verify",tab:o(r)("mtc.tabs.verify")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(T,{type:"info","show-icon":"",message:o(r)("mtc.verify.infoMessage"),description:o(r)("mtc.verify.infoDescription"),style:{"margin-bottom":"16px"}},null,8,["message","description"]),e(B,{layout:"vertical",onSubmit:G(fe,["prevent"])},{default:t(()=>[e(b,{label:o(r)("mtc.verify.envelopeLabel")},{default:t(()=>[e(F,{value:V.value,"onUpdate:value":l[1]||(l[1]=n=>V.value=n),placeholder:o(r)("mtc.verify.envelopePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(b,{label:o(r)("mtc.verify.landmarkLabel")},{default:t(()=>[e(F,{value:W.value,"onUpdate:value":l[2]||(l[2]=n=>W.value=n),placeholder:o(r)("mtc.verify.landmarkPlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(b,null,{default:t(()=>[e(u,{loading:oe.value,type:"primary",disabled:!V.value||!W.value,onClick:fe},{icon:t(()=>[e(o(ht))]),default:t(()=>[v(" "+i(o(r)("mtc.verify.runButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),S.value?(d(),m(c,{key:0,title:S.value.ok?o(r)("mtc.verify.passTitle"):o(r)("mtc.verify.failTitle"),size:"small",style:st({background:"var(--bg-card)",borderColor:S.value.ok?"#52c41a":"#ff4d4f"})},{default:t(()=>[e(ee,{column:1,size:"small",bordered:""},{default:t(()=>[e(z,{label:o(r)("mtc.verify.resultLabel")},{default:t(()=>[e(I,{color:S.value.ok?"green":"red"},{default:t(()=>[v(i(S.value.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1},8,["label"]),S.value.ok?y("",!0):(d(),m(z,{key:0,label:o(r)("mtc.verify.errorCodeLabel")},{default:t(()=>[k("span",Mt,i(S.value.code||o(r)("mtc.verify.errorCodeNone")),1),S.value.recoverable?(d(),m(I,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:t(()=>[v(i(o(r)("mtc.verify.recoverable")),1)]),_:1})):y("",!0)]),_:1},8,["label"])),S.value.leaf?(d(),m(z,{key:1,label:o(r)("mtc.verify.subjectLabel")},{default:t(()=>[k("span",Dt,i(S.value.leaf.subject||"—"),1)]),_:1},8,["label"])):y("",!0),S.value.leaf?(d(),m(z,{key:2,label:o(r)("mtc.verify.kindLabel")},{default:t(()=>[e(I,null,{default:t(()=>[v(i(S.value.leaf.kind||"—"),1)]),_:1})]),_:1},8,["label"])):y("",!0),S.value.treeHead?(d(),m(z,{key:3,label:o(r)("mtc.verify.treeSizeLabel")},{default:t(()=>[v(i(S.value.treeHead.tree_size),1)]),_:1},8,["label"])):y("",!0),S.value.treeHead?(d(),m(z,{key:4,label:o(r)("mtc.verify.issuerLabel")},{default:t(()=>[k("span",Et,i(S.value.treeHead.issuer||"—"),1)]),_:1},8,["label"])):y("",!0)]),_:1}),S.value.raw?(d(),m(Qe,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:t(()=>[e(Ke,{key:"raw",header:o(r)("mtc.verify.rawHeader")},{default:t(()=>[k("pre",Pt,i(JSON.stringify(S.value.raw,null,2)),1)]),_:1},8,["header"])]),_:1})):y("",!0)]),_:1},8,["title","style"])):y("",!0)]),_:1},8,["tab"]),e(A,{key:"bridge",tab:"跨链桥 MTC"},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"桥 MTC 集成",value:$.value.config.enabled?"已启用":"未启用","value-style":{color:$.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"互信模式",value:Pe.value,"value-style":{color:"#1677ff",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"待批次关闭",value:$.value.staging.pending,"value-style":{color:$.value.staging.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})]),_:1}),e(c,{title:"配置",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small",bordered:""},{default:t(()=>[e(z,{label:"算法"},{default:t(()=>[e(I,{color:$.value.config.alg==="slh-dsa-128f"?"purple":"blue"},{default:t(()=>[v(i($.value.config.alg||"—"),1)]),_:1},8,["color"])]),_:1}),e(z,{label:"batch interval"},{default:t(()=>[v(i(o(Fe)($.value.config.batch_interval_seconds)),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[k("span",Ot,i($.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"batches 总数"},{default:t(()=>[v(i($.value.batches.total)+" ",1),$.value.batches.latest?(d(),M("span",Ut," latest: "+i($.value.batches.latest),1)):y("",!0)]),_:1})]),_:1})]),_:1}),e(c,{title:"信任锚 (Independent 模式)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[$.value.trust_anchors.total===0?(d(),m(ie,{key:0,description:"未配置信任锚"})):(d(),m(ue,{key:1,"data-source":Ue.value,columns:Oe,pagination:!1,size:"small","row-key":"key"},null,8,["data-source"])),l[18]||(l[18]=k("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 添加:"),k("code",null,"cc crosschain mtc-trust-anchor add <chain> <pubkey-id> --alg --issuer")],-1))]),_:1}),e(c,{title:"SLA / Monitoring (v0.2)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"SLA Status",value:N.value.sla_status||"—","value-style":{color:Ae(N.value.sla_status),fontSize:"18px"}},null,8,["value","value-style"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"Staged pending",value:N.value.staged_pending_count??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"Batches / hour",value:N.value.batches_last_hour??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"Last batch",value:N.value.seconds_since_last_batch!==null&&N.value.seconds_since_last_batch!==void 0?`${N.value.seconds_since_last_batch}s ago`:"—","value-style":{fontSize:"14px"}},null,8,["value"])]),_:1})]),_:1}),l[19]||(l[19]=k("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 通过 "),k("code",null,"cc crosschain mtc-sla --json"),v(" 实时刷新(30s 自动 poll)。可纳入外部 Prometheus / Grafana。 ")],-1))]),_:1}),e(T,{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}),e(A,{key:"governance",tab:"联邦治理"},{default:t(()=>[e(B,{layout:"inline",style:{"margin-bottom":"16px"}},{default:t(()=>[e(b,{label:"联邦 ID"},{default:t(()=>[e(F,{value:J.value,"onUpdate:value":l[3]||(l[3]=n=>J.value=n),placeholder:"e.g. fed-test",style:{width:"240px"},"allow-clear":""},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:ne.value,onClick:xe},{default:t(()=>[...l[20]||(l[20]=[v(" 加载 governance.log ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),P.value?(d(),M("div",At,[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"状态",value:P.value.state.status||"—","value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"Threshold",value:P.value.state.threshold||1,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"事件总数",value:(P.value.events||[]).length,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),e(c,{title:"成员",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ue,{"data-source":P.value.state.members||[],columns:Re,pagination:!1,size:"small","row-key":"member_id"},null,8,["data-source"])]),_:1}),(P.value.state.pending_invites||[]).length?(d(),m(c,{key:0,title:"待投票邀请",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(Se,{"data-source":P.value.state.pending_invites,size:"small"},{renderItem:t(({item:n})=>[e(we,null,{default:t(()=>[k("span",Nt,i(n.member_id),1),e(I,{color:"blue"},{default:t(()=>[v("approve "+i(n.votes.approve.length)+"/"+i(n.required),1)]),_:2},1024),n.votes.reject.length?(d(),m(I,{key:0,color:"red"},{default:t(()=>[v("reject "+i(n.votes.reject.length),1)]),_:2},1024)):y("",!0)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):y("",!0),e(c,{title:"事件时间线",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(Xe,null,{default:t(()=>[(d(!0),M(Ie,null,ut(P.value.events||[],n=>(d(),m(Ye,{key:n.event_id},{default:t(()=>[k("span",Rt,i(n.issued_at),1),e(I,{color:Te(n.event_type),style:{"margin-left":"8px"}},{default:t(()=>[v(i(n.event_type),1)]),_:2},1032,["color"]),l[21]||(l[21]=v(" actor: ",-1)),k("span",Tt,i(n.actor_member_id),1)]),_:2},1024))),128))]),_:1})]),_:1}),se.value.length>0?(d(),m(c,{key:1,title:"待批 threshold proposals",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[se.value.length>1?(d(),m(T,{key:0,type:"warning","show-icon":"",message:"多 proposal 并发",description:"同一联邦同时存在多个待批 threshold proposal。下方每行可独立确认(CRDT-style 选择);不指定时 CLI 默认确认最新一条。",style:{"margin-bottom":"12px"}})):y("",!0),e(Se,{"data-source":se.value,size:"small"},{renderItem:t(({item:n})=>[e(we,null,{actions:t(()=>[e(u,{size:"small",type:"primary",loading:L.value,onClick:Q=>He(n.event_id)},{default:t(()=>[...l[24]||(l[24]=[v(" 确认这个 ",-1)])]),_:1},8,["loading","onClick"])]),default:t(()=>[e(f,{wrap:""},{default:t(()=>[e(I,{color:"orange"},{default:t(()=>[v("target M = "+i(n.target),1)]),_:2},1024),l[22]||(l[22]=k("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"by",-1)),k("span",Bt,i(n.proposer||"—"),1),l[23]||(l[23]=k("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"at",-1)),k("span",Ht,i(o(Le)(n.proposed_at)),1),e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v(i(qe(n.event_id)),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):y("",!0),_.value?(d(),m(c,{key:2,title:"实时同步状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(s,{title:"模式",value:_.value.mode||"—","value-style":{fontSize:"16px",color:"#1677ff"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(s,{title:"最近 tick",value:o(ae)(_.value.last_tick_at)||"—","value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(s,{title:"下次轮询",value:ge.value,"value-style":{fontSize:"14px",color:"var(--text-secondary)"}},null,8,["value"])]),_:1})]),_:1}),_.value.publish||_.value.pull||_.value.libp2p?(d(),m(ee,{key:0,column:{xs:1,sm:2},size:"small",style:{"margin-top":"12px"}},{default:t(()=>[_.value.publish?(d(),m(z,{key:0,label:"Publish"},{default:t(()=>[v(" last "+i(_.value.publish.last_published||0)+" / total "+i(_.value.publish.total_published||0),1)]),_:1})):y("",!0),_.value.pull?(d(),m(z,{key:1,label:"Pull"},{default:t(()=>[v(" last "+i(_.value.pull.last_appended||0)+" / total "+i(_.value.pull.total_appended||0)+" ",1),_.value.pull.last_invalid||_.value.pull.last_unknown?(d(),M("span",qt," · invalid "+i(_.value.pull.last_invalid||0)+" / unknown "+i(_.value.pull.last_unknown||0),1)):y("",!0)]),_:1})):y("",!0),_.value.libp2p?(d(),m(z,{key:2,label:"libp2p wire",span:2},{default:t(()=>[v(" recv "+i(_.value.libp2p.wire_received||0)+" · appended "+i(_.value.libp2p.wire_appended||0)+" ",1),_.value.libp2p.topic?(d(),M("span",Zt," ("+i(_.value.libp2p.topic)+") ",1)):y("",!0)]),_:1})):y("",!0)]),_:1})):(d(),m(ie,{key:1,description:"daemon 还没写过 tick — 启动 governance-sync-serve 或 governance-sync-libp2p 后再加载"}))]),_:1})):y("",!0),e(c,{title:"操作型治理 (签名密钥仍 CLI-only)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(T,{type:"warning","show-icon":"",message:"安全设计",description:"所有操作通过本机 CLI 子进程执行。私钥永远不进入 web 渲染进程 — 这里只是给 cc mtc federation * 命令拼参数。",style:{"margin-bottom":"12px"}}),e(Ce,{size:"small"},{default:t(()=>[e(A,{key:"invite",tab:"邀请"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(ye,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:H.value.actor,"onUpdate:value":l[4]||(l[4]=n=>H.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"candidate"},{default:t(()=>[e(F,{value:H.value.candidate,"onUpdate:value":l[5]||(l[5]=n=>H.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"pubkey-id"},{default:t(()=>[e(F,{value:H.value.pubkeyId,"onUpdate:value":l[6]||(l[6]=n=>H.value.pubkeyId=n),placeholder:"sha256:...",style:{width:"200px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:ye},{default:t(()=>[...l[25]||(l[25]=[v("invite",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"vote",tab:"投票"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(_e,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:q.value.actor,"onUpdate:value":l[7]||(l[7]=n=>q.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"candidate"},{default:t(()=>[e(F,{value:q.value.candidate,"onUpdate:value":l[8]||(l[8]=n=>q.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"decision"},{default:t(()=>[e(et,{value:q.value.decision,"onUpdate:value":l[9]||(l[9]=n=>q.value.decision=n),style:{width:"110px"}},{default:t(()=>[e(ze,{value:"approve"},{default:t(()=>[...l[26]||(l[26]=[v("approve",-1)])]),_:1}),e(ze,{value:"reject"},{default:t(()=>[...l[27]||(l[27]=[v("reject",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:_e},{default:t(()=>[...l[28]||(l[28]=[v("vote",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"threshold",tab:"改 threshold"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(he,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:Z.value.actor,"onUpdate:value":l[10]||(l[10]=n=>Z.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"新 M"},{default:t(()=>[e(tt,{value:Z.value.newM,"onUpdate:value":l[11]||(l[11]=n=>Z.value.newM=n),min:1,style:{width:"90px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:he},{default:t(()=>[...l[29]||(l[29]=[v("propose",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:Be},{default:t(()=>[...l[30]||(l[30]=[v("confirm",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"revoke",tab:"撤销"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(ke,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:R.value.actor,"onUpdate:value":l[12]||(l[12]=n=>R.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"target"},{default:t(()=>[e(F,{value:R.value.target,"onUpdate:value":l[13]||(l[13]=n=>R.value.target=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"reason"},{default:t(()=>[e(F,{value:R.value.reason,"onUpdate:value":l[14]||(l[14]=n=>R.value.reason=n),placeholder:"inactive",style:{width:"160px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:ke},{default:t(()=>[...l[31]||(l[31]=[v("propose-revoke",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:Ze},{default:t(()=>[...l[32]||(l[32]=[v("confirm-revoke",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"sync",tab:"跨成员同步"},{default:t(()=>[e(B,{layout:"inline"},{default:t(()=>[e(b,{label:"drop-zone"},{default:t(()=>[e(F,{value:j.value.dropZone,"onUpdate:value":l[15]||(l[15]=n=>j.value.dropZone=n),placeholder:"/path/to/shared/dir",style:{width:"220px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(at,{checked:j.value.verify,"onUpdate:checked":l[16]||(l[16]=n=>j.value.verify=n)},{default:t(()=>[...l[33]||(l[33]=[v("--verify",-1)])]),_:1},8,["checked"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:Je},{default:t(()=>[...l[34]||(l[34]=[v("publish",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:Ge},{default:t(()=>[...l[35]||(l[35]=[v("pull",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:Ve},{default:t(()=>[...l[36]||(l[36]=[v("sync-once",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1}),K.value?(d(),m(c,{key:0,size:"small",style:{"margin-top":"12px",background:"var(--bg-hover)"}},{default:t(()=>[k("pre",Jt,i(JSON.stringify(K.value,null,2)),1)]),_:1})):y("",!0)]),_:1})])):(d(),m(ie,{key:1,description:"输入联邦 ID 加载 governance.log"})),e(T,{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"])])}}},ta=it(Gt,[["__scopeId","data-v-f251eb98"]]);export{ta as default};
|
|
6
|
+
`));if(p&&(p.available!==void 0||p.mode!==void 0)){_.value=p.available===!1?null:p;return}}catch{}}catch{_.value=null}}return lt(()=>{pe(),Ne(),be(),re=setInterval(be,3e4)}),ot(()=>{re&&clearInterval(re)}),(a,l)=>{const u=g("a-button"),f=g("a-space"),s=g("a-statistic"),c=g("a-card"),p=g("a-col"),I=g("a-tag"),U=g("a-row"),z=g("a-descriptions-item"),ee=g("a-descriptions"),T=g("a-alert"),A=g("a-tab-pane"),F=g("a-input"),b=g("a-form-item"),B=g("a-form"),ue=g("a-table"),Ke=g("a-collapse-panel"),Qe=g("a-collapse"),ie=g("a-empty"),we=g("a-list-item"),Se=g("a-list"),Ye=g("a-timeline-item"),Xe=g("a-timeline"),ze=g("a-select-option"),et=g("a-select"),tt=g("a-input-number"),at=g("a-checkbox"),Ce=g("a-tabs");return d(),M("div",null,[k("div",kt,[k("div",null,[k("h2",xt,i(o(r)("mtc.title")),1),k("p",wt,i(o(r)("mtc.subtitle")),1)]),e(f,null,{default:t(()=>[e(u,{loading:Y.value,onClick:pe},{icon:t(()=>[e(o(pt))]),default:t(()=>[v(" "+i(o(r)("mtc.refresh")),1)]),_:1},8,["loading"])]),_:1})]),e(Ce,{activeKey:ve.value,"onUpdate:activeKey":l[17]||(l[17]=n=>ve.value=n),class:"mtc-tabs"},{default:t(()=>[e(A,{key:"status",tab:o(r)("mtc.tabs.status")},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.enabledLabel"),value:w.value.config.enabled?o(r)("mtc.status.enabled"):o(r)("mtc.status.disabled"),"value-style":{color:w.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[(d(),m(rt(w.value.config.enabled?o(ft):o(mt))))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.intervalLabel"),value:o(Fe)(w.value.config.batch_interval_seconds),"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(je))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.stagingLabel"),value:w.value.staging.count,"value-style":{color:w.value.staging.count>0?"#faad14":"#888",fontSize:"20px"}},nt({prefix:t(()=>[e(o(bt))]),_:2},[w.value.staging.malformed>0?{name:"suffix",fn:t(()=>[e(I,{color:"red",style:{"margin-left":"8px"}},{default:t(()=>[v(i(o(r)("mtc.status.stagingMalformed",{count:w.value.staging.malformed})),1)]),_:1})]),key:"0"}:void 0]),1032,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.totalBatches"),value:w.value.batches.count,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(gt))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),e(c,{title:o(r)("mtc.status.configCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small"},{default:t(()=>[e(z,{label:"namespace"},{default:t(()=>[k("span",St,i(w.value.config.namespace_prefix||"—"),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[k("span",zt,i(w.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"oldest queued"},{default:t(()=>[v(i(o(Le)(w.value.staging.oldest_queued_at)),1)]),_:1}),e(z,{label:"last batch"},{default:t(()=>[w.value.batches.last_batch_id?(d(),M(Ie,{key:0},[e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+i(w.value.batches.last_batch_id),1)]),_:1}),k("span",Ct,i(o(r)("mtc.status.lastBatchSize",{size:w.value.batches.last_tree_size,time:o(ae)(w.value.batches.last_closed_at)})),1)],64)):(d(),M("span",It,i(o(r)("mtc.status.noBatches")),1))]),_:1}),e(z,{label:"last tree_head_id",span:2},{default:t(()=>[w.value.batches.last_tree_head_id?(d(),M("span",$t,i(w.value.batches.last_tree_head_id),1)):(d(),M("span",Ft,"—"))]),_:1})]),_:1})]),_:1},8,["title"]),!w.value.ok&&!Y.value?(d(),m(T,{key:0,type:"info","show-icon":"",message:o(r)("mtc.status.loadFailMessage"),description:o(r)("mtc.status.loadFailDescription")},null,8,["message","description"])):w.value.config.enabled?y("",!0):(d(),m(T,{key:1,type:"info","show-icon":"",message:o(r)("mtc.status.notEnabledMessage"),description:o(r)("mtc.status.notEnabledDescription")},null,8,["message","description"]))]),_:1},8,["tab"]),e(A,{key:"publisher",tab:o(r)("mtc.tabs.publisher")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(Ee,["prevent"])},{default:t(()=>[e(b,{label:o(r)("mtc.publisher.stateFileLabel")},{default:t(()=>[e(F,{value:X.value,"onUpdate:value":l[0]||(l[0]=n=>X.value=n),placeholder:o(r)("mtc.publisher.stateFilePlaceholder"),style:{"min-width":"360px"},"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(b,null,{default:t(()=>[e(u,{loading:le.value,type:"primary","html-type":"submit"},{default:t(()=>[v(i(o(r)("mtc.publisher.queryButton")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),E.value.ok&&!E.value.exists?(d(),m(T,{key:0,type:"info","show-icon":"",message:o(r)("mtc.publisher.missingMessage"),description:o(r)("mtc.publisher.missingDescription",{path:E.value.stateFile}),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("",!0),E.value.exists?(d(),m(U,{key:1,gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.publisher.lastSeq"),value:E.value.lastSeq,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(yt))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.publisher.historyEntries"),value:E.value.historyCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(_t))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.publisher.lastPublished"),value:o(ae)(E.value.lastPublishedAt),"value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:t(()=>[e(o(je))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})):y("",!0),E.value.exists&&E.value.history.length>0?(d(),m(ue,{key:2,"data-source":E.value.history,columns:Me.value,pagination:{pageSize:10},size:"small","row-key":"key"},{bodyCell:t(({column:n,record:Q})=>[n.key==="seq"?(d(),m(I,{key:0,color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+i(Q.seq),1)]),_:2},1024)):n.key==="treeHeadId"?(d(),M("span",Lt,i(De(Q.treeHeadId,22)),1)):n.key==="publishedAt"?(d(),M("span",{key:2,title:Q.publishedAt},i(o(ae)(Q.publishedAt)),9,jt)):y("",!0)]),_:1},8,["data-source","columns"])):y("",!0)]),_:1},8,["tab"]),e(A,{key:"verify",tab:o(r)("mtc.tabs.verify")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(T,{type:"info","show-icon":"",message:o(r)("mtc.verify.infoMessage"),description:o(r)("mtc.verify.infoDescription"),style:{"margin-bottom":"16px"}},null,8,["message","description"]),e(B,{layout:"vertical",onSubmit:G(fe,["prevent"])},{default:t(()=>[e(b,{label:o(r)("mtc.verify.envelopeLabel")},{default:t(()=>[e(F,{value:V.value,"onUpdate:value":l[1]||(l[1]=n=>V.value=n),placeholder:o(r)("mtc.verify.envelopePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(b,{label:o(r)("mtc.verify.landmarkLabel")},{default:t(()=>[e(F,{value:W.value,"onUpdate:value":l[2]||(l[2]=n=>W.value=n),placeholder:o(r)("mtc.verify.landmarkPlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(b,null,{default:t(()=>[e(u,{loading:oe.value,type:"primary",disabled:!V.value||!W.value,onClick:fe},{icon:t(()=>[e(o(ht))]),default:t(()=>[v(" "+i(o(r)("mtc.verify.runButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),S.value?(d(),m(c,{key:0,title:S.value.ok?o(r)("mtc.verify.passTitle"):o(r)("mtc.verify.failTitle"),size:"small",style:st({background:"var(--bg-card)",borderColor:S.value.ok?"#52c41a":"#ff4d4f"})},{default:t(()=>[e(ee,{column:1,size:"small",bordered:""},{default:t(()=>[e(z,{label:o(r)("mtc.verify.resultLabel")},{default:t(()=>[e(I,{color:S.value.ok?"green":"red"},{default:t(()=>[v(i(S.value.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1},8,["label"]),S.value.ok?y("",!0):(d(),m(z,{key:0,label:o(r)("mtc.verify.errorCodeLabel")},{default:t(()=>[k("span",Mt,i(S.value.code||o(r)("mtc.verify.errorCodeNone")),1),S.value.recoverable?(d(),m(I,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:t(()=>[v(i(o(r)("mtc.verify.recoverable")),1)]),_:1})):y("",!0)]),_:1},8,["label"])),S.value.leaf?(d(),m(z,{key:1,label:o(r)("mtc.verify.subjectLabel")},{default:t(()=>[k("span",Dt,i(S.value.leaf.subject||"—"),1)]),_:1},8,["label"])):y("",!0),S.value.leaf?(d(),m(z,{key:2,label:o(r)("mtc.verify.kindLabel")},{default:t(()=>[e(I,null,{default:t(()=>[v(i(S.value.leaf.kind||"—"),1)]),_:1})]),_:1},8,["label"])):y("",!0),S.value.treeHead?(d(),m(z,{key:3,label:o(r)("mtc.verify.treeSizeLabel")},{default:t(()=>[v(i(S.value.treeHead.tree_size),1)]),_:1},8,["label"])):y("",!0),S.value.treeHead?(d(),m(z,{key:4,label:o(r)("mtc.verify.issuerLabel")},{default:t(()=>[k("span",Et,i(S.value.treeHead.issuer||"—"),1)]),_:1},8,["label"])):y("",!0)]),_:1}),S.value.raw?(d(),m(Qe,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:t(()=>[e(Ke,{key:"raw",header:o(r)("mtc.verify.rawHeader")},{default:t(()=>[k("pre",Pt,i(JSON.stringify(S.value.raw,null,2)),1)]),_:1},8,["header"])]),_:1})):y("",!0)]),_:1},8,["title","style"])):y("",!0)]),_:1},8,["tab"]),e(A,{key:"bridge",tab:"跨链桥 MTC"},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"桥 MTC 集成",value:$.value.config.enabled?"已启用":"未启用","value-style":{color:$.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"互信模式",value:Pe.value,"value-style":{color:"#1677ff",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"待批次关闭",value:$.value.staging.pending,"value-style":{color:$.value.staging.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})]),_:1}),e(c,{title:"配置",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small",bordered:""},{default:t(()=>[e(z,{label:"算法"},{default:t(()=>[e(I,{color:$.value.config.alg==="slh-dsa-128f"?"purple":"blue"},{default:t(()=>[v(i($.value.config.alg||"—"),1)]),_:1},8,["color"])]),_:1}),e(z,{label:"batch interval"},{default:t(()=>[v(i(o(Fe)($.value.config.batch_interval_seconds)),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[k("span",Ot,i($.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"batches 总数"},{default:t(()=>[v(i($.value.batches.total)+" ",1),$.value.batches.latest?(d(),M("span",Ut," latest: "+i($.value.batches.latest),1)):y("",!0)]),_:1})]),_:1})]),_:1}),e(c,{title:"信任锚 (Independent 模式)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[$.value.trust_anchors.total===0?(d(),m(ie,{key:0,description:"未配置信任锚"})):(d(),m(ue,{key:1,"data-source":Ue.value,columns:Oe,pagination:!1,size:"small","row-key":"key"},null,8,["data-source"])),l[18]||(l[18]=k("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 添加:"),k("code",null,"cc crosschain mtc-trust-anchor add <chain> <pubkey-id> --alg --issuer")],-1))]),_:1}),e(c,{title:"SLA / Monitoring (v0.2)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"SLA Status",value:N.value.sla_status||"—","value-style":{color:Ae(N.value.sla_status),fontSize:"18px"}},null,8,["value","value-style"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"Staged pending",value:N.value.staged_pending_count??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"Batches / hour",value:N.value.batches_last_hour??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"Last batch",value:N.value.seconds_since_last_batch!==null&&N.value.seconds_since_last_batch!==void 0?`${N.value.seconds_since_last_batch}s ago`:"—","value-style":{fontSize:"14px"}},null,8,["value"])]),_:1})]),_:1}),l[19]||(l[19]=k("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 通过 "),k("code",null,"cc crosschain mtc-sla --json"),v(" 实时刷新(30s 自动 poll)。可纳入外部 Prometheus / Grafana。 ")],-1))]),_:1}),e(T,{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}),e(A,{key:"governance",tab:"联邦治理"},{default:t(()=>[e(B,{layout:"inline",style:{"margin-bottom":"16px"}},{default:t(()=>[e(b,{label:"联邦 ID"},{default:t(()=>[e(F,{value:Z.value,"onUpdate:value":l[3]||(l[3]=n=>Z.value=n),placeholder:"e.g. fed-test",style:{width:"240px"},"allow-clear":""},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:ne.value,onClick:xe},{default:t(()=>[...l[20]||(l[20]=[v(" 加载 governance.log ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),P.value?(d(),M("div",At,[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"状态",value:P.value.state.status||"—","value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"Threshold",value:P.value.state.threshold||1,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"事件总数",value:(P.value.events||[]).length,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),e(c,{title:"成员",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ue,{"data-source":P.value.state.members||[],columns:Re,pagination:!1,size:"small","row-key":"member_id"},null,8,["data-source"])]),_:1}),(P.value.state.pending_invites||[]).length?(d(),m(c,{key:0,title:"待投票邀请",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(Se,{"data-source":P.value.state.pending_invites,size:"small"},{renderItem:t(({item:n})=>[e(we,null,{default:t(()=>[k("span",Nt,i(n.member_id),1),e(I,{color:"blue"},{default:t(()=>[v("approve "+i(n.votes.approve.length)+"/"+i(n.required),1)]),_:2},1024),n.votes.reject.length?(d(),m(I,{key:0,color:"red"},{default:t(()=>[v("reject "+i(n.votes.reject.length),1)]),_:2},1024)):y("",!0)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):y("",!0),e(c,{title:"事件时间线",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(Xe,null,{default:t(()=>[(d(!0),M(Ie,null,ut(P.value.events||[],n=>(d(),m(Ye,{key:n.event_id},{default:t(()=>[k("span",Rt,i(n.issued_at),1),e(I,{color:Te(n.event_type),style:{"margin-left":"8px"}},{default:t(()=>[v(i(n.event_type),1)]),_:2},1032,["color"]),l[21]||(l[21]=v(" actor: ",-1)),k("span",Tt,i(n.actor_member_id),1)]),_:2},1024))),128))]),_:1})]),_:1}),se.value.length>0?(d(),m(c,{key:1,title:"待批 threshold proposals",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[se.value.length>1?(d(),m(T,{key:0,type:"warning","show-icon":"",message:"多 proposal 并发",description:"同一联邦同时存在多个待批 threshold proposal。下方每行可独立确认(CRDT-style 选择);不指定时 CLI 默认确认最新一条。",style:{"margin-bottom":"12px"}})):y("",!0),e(Se,{"data-source":se.value,size:"small"},{renderItem:t(({item:n})=>[e(we,null,{actions:t(()=>[e(u,{size:"small",type:"primary",loading:L.value,onClick:Q=>He(n.event_id)},{default:t(()=>[...l[24]||(l[24]=[v(" 确认这个 ",-1)])]),_:1},8,["loading","onClick"])]),default:t(()=>[e(f,{wrap:""},{default:t(()=>[e(I,{color:"orange"},{default:t(()=>[v("target M = "+i(n.target),1)]),_:2},1024),l[22]||(l[22]=k("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"by",-1)),k("span",Bt,i(n.proposer||"—"),1),l[23]||(l[23]=k("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"at",-1)),k("span",Ht,i(o(Le)(n.proposed_at)),1),e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v(i(qe(n.event_id)),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):y("",!0),_.value?(d(),m(c,{key:2,title:"实时同步状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(s,{title:"模式",value:_.value.mode||"—","value-style":{fontSize:"16px",color:"#1677ff"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(s,{title:"最近 tick",value:o(ae)(_.value.last_tick_at)||"—","value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(s,{title:"下次轮询",value:ge.value,"value-style":{fontSize:"14px",color:"var(--text-secondary)"}},null,8,["value"])]),_:1})]),_:1}),_.value.publish||_.value.pull||_.value.libp2p?(d(),m(ee,{key:0,column:{xs:1,sm:2},size:"small",style:{"margin-top":"12px"}},{default:t(()=>[_.value.publish?(d(),m(z,{key:0,label:"Publish"},{default:t(()=>[v(" last "+i(_.value.publish.last_published||0)+" / total "+i(_.value.publish.total_published||0),1)]),_:1})):y("",!0),_.value.pull?(d(),m(z,{key:1,label:"Pull"},{default:t(()=>[v(" last "+i(_.value.pull.last_appended||0)+" / total "+i(_.value.pull.total_appended||0)+" ",1),_.value.pull.last_invalid||_.value.pull.last_unknown?(d(),M("span",qt," · invalid "+i(_.value.pull.last_invalid||0)+" / unknown "+i(_.value.pull.last_unknown||0),1)):y("",!0)]),_:1})):y("",!0),_.value.libp2p?(d(),m(z,{key:2,label:"libp2p wire",span:2},{default:t(()=>[v(" recv "+i(_.value.libp2p.wire_received||0)+" · appended "+i(_.value.libp2p.wire_appended||0)+" ",1),_.value.libp2p.topic?(d(),M("span",Jt," ("+i(_.value.libp2p.topic)+") ",1)):y("",!0)]),_:1})):y("",!0)]),_:1})):(d(),m(ie,{key:1,description:"daemon 还没写过 tick — 启动 governance-sync-serve 或 governance-sync-libp2p 后再加载"}))]),_:1})):y("",!0),e(c,{title:"操作型治理 (签名密钥仍 CLI-only)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(T,{type:"warning","show-icon":"",message:"安全设计",description:"所有操作通过本机 CLI 子进程执行。私钥永远不进入 web 渲染进程 — 这里只是给 cc mtc federation * 命令拼参数。",style:{"margin-bottom":"12px"}}),e(Ce,{size:"small"},{default:t(()=>[e(A,{key:"invite",tab:"邀请"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(ye,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:H.value.actor,"onUpdate:value":l[4]||(l[4]=n=>H.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"candidate"},{default:t(()=>[e(F,{value:H.value.candidate,"onUpdate:value":l[5]||(l[5]=n=>H.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"pubkey-id"},{default:t(()=>[e(F,{value:H.value.pubkeyId,"onUpdate:value":l[6]||(l[6]=n=>H.value.pubkeyId=n),placeholder:"sha256:...",style:{width:"200px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:ye},{default:t(()=>[...l[25]||(l[25]=[v("invite",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"vote",tab:"投票"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(_e,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:q.value.actor,"onUpdate:value":l[7]||(l[7]=n=>q.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"candidate"},{default:t(()=>[e(F,{value:q.value.candidate,"onUpdate:value":l[8]||(l[8]=n=>q.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"decision"},{default:t(()=>[e(et,{value:q.value.decision,"onUpdate:value":l[9]||(l[9]=n=>q.value.decision=n),style:{width:"110px"}},{default:t(()=>[e(ze,{value:"approve"},{default:t(()=>[...l[26]||(l[26]=[v("approve",-1)])]),_:1}),e(ze,{value:"reject"},{default:t(()=>[...l[27]||(l[27]=[v("reject",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:_e},{default:t(()=>[...l[28]||(l[28]=[v("vote",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"threshold",tab:"改 threshold"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(he,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:J.value.actor,"onUpdate:value":l[10]||(l[10]=n=>J.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"新 M"},{default:t(()=>[e(tt,{value:J.value.newM,"onUpdate:value":l[11]||(l[11]=n=>J.value.newM=n),min:1,style:{width:"90px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:he},{default:t(()=>[...l[29]||(l[29]=[v("propose",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:Be},{default:t(()=>[...l[30]||(l[30]=[v("confirm",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"revoke",tab:"撤销"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(ke,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:R.value.actor,"onUpdate:value":l[12]||(l[12]=n=>R.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"target"},{default:t(()=>[e(F,{value:R.value.target,"onUpdate:value":l[13]||(l[13]=n=>R.value.target=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"reason"},{default:t(()=>[e(F,{value:R.value.reason,"onUpdate:value":l[14]||(l[14]=n=>R.value.reason=n),placeholder:"inactive",style:{width:"160px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:ke},{default:t(()=>[...l[31]||(l[31]=[v("propose-revoke",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:Je},{default:t(()=>[...l[32]||(l[32]=[v("confirm-revoke",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"sync",tab:"跨成员同步"},{default:t(()=>[e(B,{layout:"inline"},{default:t(()=>[e(b,{label:"drop-zone"},{default:t(()=>[e(F,{value:j.value.dropZone,"onUpdate:value":l[15]||(l[15]=n=>j.value.dropZone=n),placeholder:"/path/to/shared/dir",style:{width:"220px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(at,{checked:j.value.verify,"onUpdate:checked":l[16]||(l[16]=n=>j.value.verify=n)},{default:t(()=>[...l[33]||(l[33]=[v("--verify",-1)])]),_:1},8,["checked"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:Ze},{default:t(()=>[...l[34]||(l[34]=[v("publish",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:Ge},{default:t(()=>[...l[35]||(l[35]=[v("pull",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:Ve},{default:t(()=>[...l[36]||(l[36]=[v("sync-once",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1}),K.value?(d(),m(c,{key:0,size:"small",style:{"margin-top":"12px",background:"var(--bg-hover)"}},{default:t(()=>[k("pre",Zt,i(JSON.stringify(K.value,null,2)),1)]),_:1})):y("",!0)]),_:1})])):(d(),m(ie,{key:1,description:"输入联邦 ID 加载 governance.log"})),e(T,{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"])])}}},ta=it(Gt,[["__scopeId","data-v-f251eb98"]]);export{ta as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as Le,o as xe,c as r,s as kt,t as Et,a as se,w as Ze,r as K,W as It,e as Tt,n as tt,b as Dt,f as we,F as ue,z as Ot,M as ne,N as o,u as e,Q as B,S as P,L as A,O as S,R as j,a1 as Rt,P as _}from"./vendor-M5lGV-wr.js";import{h as k,f as le,l as At,i as ut,q as dt,w as nt,N as Fe,Q as $t,R as _t,u as ke,_ as Nt,d as X}from"./index-
|
|
1
|
+
import{d as Le,o as xe,c as r,s as kt,t as Et,a as se,w as Ze,r as K,W as It,e as Tt,n as tt,b as Dt,f as we,F as ue,z as Ot,M as ne,N as o,u as e,Q as B,S as P,L as A,O as S,R as j,a1 as Rt,P as _}from"./vendor-M5lGV-wr.js";import{h as k,f as le,l as At,i as ut,q as dt,w as nt,N as Fe,Q as $t,R as _t,u as ke,_ as Nt,d as X}from"./index-BAy0ks7N.js";import{u as Ee}from"./useShellMode-CgR0wCYM.js";import{K as Ce}from"./KeyCode-D63Tfrq7.js";import{w as Ve}from"./raf-Deuc0E8-.js";import{i as ct}from"./styleChecker-DgazP1mu.js";import L,{Textarea as Se}from"./index-Civlun-X.js";import{b2 as Mt,b3 as Bt,ah as Pt,ag as zt,aL as Ut}from"./icons-DY9VpXfa.js";import{i as Kt}from"./index-DC38ymaH.js";import{o as pt}from"./operationUnit-vCu2co3e.js";import{s as Ht}from"./BaseInput-CS2Y4V0O.js";import{R as Lt}from"./index-Bb1KdW4J.js";import{T as Je}from"./index-DQXojJvN.js";import{o as ye}from"./omit-BMF4_2X_.js";import{u as jt}from"./useMergedState-O7QXt4P5.js";import q from"./index-DG1F9RZd.js";import Wt,{TabPane as be}from"./index-BKNbteyC.js";import he,{FormItem as O}from"./index-Cv2hQG7c.js";import{B as z}from"./index-cP5FNe0q.js";import rt,{DescriptionsItem as Y}from"./index-CFw2RtQ_.js";import re from"./index-D6-3yvOU.js";import ie from"./index-C7reeGYU.js";import Q from"./index-BA8bUOYK.js";import Xe from"./index-SHmkRPZ_.js";import Be,{ListItem as pe}from"./index-oGqObYfs.js";import lt from"./index-DNooejFX.js";import Ft from"./index-DpzjQM4w.js";import"./FormItemContext-C6DJ0oHT.js";import"./createContext-CulBut34.js";import"./statusUtils-nHmUS8yg.js";import"./vnode-DMH0ymoP.js";import"./Compact-D4E0roed.js";import"./_getTag-BVc6NQ_K.js";import"./isPlainObject-_gz-soRW.js";import"./compact-item-Cjb446yk.js";import"./ResizeObserver.es-D6qJbdzf.js";import"./Trigger-D4yonKuU.js";import"./motion-yBy7l6Td.js";import"./isVisible-C7tPsqfj.js";import"./placementArrow-CpNGMWxW.js";import"./firstNotUndefined-CLFzEa0p.js";import"./colors-qxXJ45GU.js";import"./zoom-DRmMxFNC.js";import"./initDefaultProps-Dp93Vlbv.js";import"./index-DkYY9W4x.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./_arrayIncludes-B8uzE354.js";import"./injectionKey-BXVc-oGP.js";import"./Overflow-O5JDtvyx.js";import"./collapseMotion-CjFH_Jop.js";import"./slide-B5t0Lgse.js";import"./OverrideContext-x9ZzjLwk.js";import"./Dropdown-BDTTlG70.js";import"./useState-CSzR8F8O.js";import"./useRefs-0J6m8UWN.js";import"./hasIn-DCnwRrNq.js";import"./isSymbol-DAy2hlR5.js";import"./isMobile--2fOlCHx.js";import"./Row-BsuDvMpO.js";import"./responsiveObserve-Bt3UzGUn.js";import"./useFlexGapSupport-BQ4jJS_s.js";import"./index-C3ImsNgP.js";import"./debounce-D9xTw4Sx.js";import"./Col-BDk4BXjN.js";import"./index-CW7a8O5w.js";import"./Skeleton--WjfL2Ay.js";import"./index-DK5iJriy.js";import"./index-BO-vFfxc.js";import"./index-D3bXm2aZ.js";import"./pickAttrs-C1bUV-iL.js";import"./move-P6GgC8ZU.js";import"./ActionButton-COVVHNnK.js";var Vt=function(t,s){var a={};for(var l in t)Object.prototype.hasOwnProperty.call(t,l)&&s.indexOf(l)<0&&(a[l]=t[l]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,l=Object.getOwnPropertySymbols(t);i<l.length;i++)s.indexOf(l[i])<0&&Object.prototype.propertyIsEnumerable.call(t,l[i])&&(a[l[i]]=t[l[i]]);return a};const Jt={border:0,background:"transparent",padding:0,lineHeight:"inherit",display:"inline-block"},ot=Le({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,s){let{slots:a,emit:l,attrs:i,expose:d}=s;const c=kt(),p=g=>{const{keyCode:y}=g;y===Ce.ENTER&&g.preventDefault()},C=g=>{const{keyCode:y}=g;y===Ce.ENTER&&l("click",g)},N=g=>{l("click",g)},w=()=>{c.value&&c.value.focus()},f=()=>{c.value&&c.value.blur()};return xe(()=>{t.autofocus&&w()}),d({focus:w,blur:f}),()=>{var g;const{noStyle:y,disabled:I}=t,b=Vt(t,["noStyle","disabled"]);let h={};return y||(h=k({},Jt)),I&&(h.pointerEvents="none"),r("div",le(le(le({role:"button",tabindex:0,ref:c},b),i),{},{onClick:N,onKeydown:p,onKeyup:C,style:k(k({},h),i.style||{})}),[(g=a.default)===null||g===void 0?void 0:g.call(a)])}}}),Xt=(t,s,a,l)=>{const{sizeMarginHeadingVerticalEnd:i,fontWeightStrong:d}=l;return{marginBottom:i,color:a,fontWeight:d,fontSize:t,lineHeight:s}},qt=t=>{const s=[1,2,3,4,5],a={};return s.forEach(l=>{a[`
|
|
2
2
|
h${l}&,
|
|
3
3
|
div&-h${l},
|
|
4
4
|
div&-h${l} > textarea,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{w as ve,L as c,Q as g,N as t,M as E,c as a,O as l,P as s,R as m,F as re,Y as be,S as w,K as i,f as P,r as $,o as De,u as j,_ as Ie,a1 as W}from"./vendor-M5lGV-wr.js";import{_ as xe,u as ke,d as v}from"./index-DY5Oc3z6.js";import{u as he}from"./useShellMode-CgR0wCYM.js";import{R as Ae,x as ge,l as Le,aE as Oe,f as ye,d as Pe,c as Ue}from"./icons-NT6gy8Ee.js";import _e from"./index-mqHxeING.js";import"./KeyCode-D63Tfrq7.js";import"./omit-BlaOv91I.js";import"./pickAttrs-DUGKp0ro.js";import"./initDefaultProps-CacwmJft.js";import"./motion-BWrP7Lz6.js";import"./raf-Deuc0E8-.js";import"./index-BWUG9yVI.js";import"./index-Dj8BNg-z.js";import"./isVisible-C7tPsqfj.js";import"./useState-CSzR8F8O.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./compact-item-Bw5EEKw4.js";import"./createContext-xLJXI46O.js";import"./Compact-DnOD5uMF.js";import"./_getTag-BVc6NQ_K.js";import"./styleChecker-DgUxvOQt.js";import"./zoom-D-LYfiQh.js";import"./ActionButton-BePEVs4O.js";import"./vnode-B3Pp583L.js";const je={style:{"font-size":"12px"}},Fe={style:{margin:"8px 0 0","max-height":"200px",overflow:"auto","font-size":"11px"}},Ne={style:{"margin-bottom":"16px"}},Ee={style:{"font-size":"12px"}},Je={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Ke={style:{"margin-bottom":"16px"}},Te={__name:"SignProposalModal",props:{open:{type:Boolean,default:!1},proposal:{type:Object,default:null}},emits:["update:open","signed"],setup(Y,{emit:G}){const q=Y,C=G,J=ke(),{isEmbedded:B}=he(),x=$(!1),M=$(null),k=$("ukey"),L=$(""),D=$(!1);async function n(r,d,b,S=15e3){if(B){const U=await J.sendRaw({type:r,...d},S);if(!U?.ok){const T=U?.error;throw new Error(typeof T=="string"?T:T?.message||`${r} failed`)}return U.result}return J.executeJson(b,S)}const y=P(()=>q.proposal?.proposal??{}),R=P(()=>new Set((q.proposal?.signatures??[]).map(r=>r.signerDid))),oe=P(()=>R.value.size),V=P(()=>(y.value?.memberSet??[]).filter(r=>!R.value.has(r.did))),K=P(()=>{const r=y.value?.payloadHash;return!r||typeof r!="string"?"(unavailable)":r.length<=12?r:`${r.slice(0,8)}…${r.slice(-4)}`}),le=P(()=>{const r=y.value?.payload;try{return r?JSON.stringify(r,null,2):y.value?.payloadJcs||"(empty)"}catch{return String(r)}}),Q=P(()=>x.value||!M.value?!1:k.value==="hex"?/^[0-9a-fA-F]{2,}$/.test(L.value.trim()):k.value==="ukey"),X=P(()=>k.value==="ukey"?"签名将通过主进程调用 U-Key 硬件 (Windows) / simulation 驱动 (macOS/Linux)。 请确认 payload hash 与发起方提供的一致。私钥不出硬件边界。":"调试模式:私钥 hex 仅供 CLI / dev 测试。生产环境请使用 U-Key 硬件源。");function O(r){return r?r.length<=28?r:`${r.slice(0,20)}…${r.slice(-8)}`:""}function Z(){M.value=null,k.value="ukey",L.value="",D.value=!1,x.value=!1}ve(()=>q.open,r=>{r&&Z()}),ve(V,r=>{r.length>0&&!M.value&&(M.value=r[0].did)});function se(r){x.value||C("update:open",r)}function ee(){x.value||C("update:open",!1)}async function ne(){if(!Q.value)return;const r=k.value==="hex"?{secretKeyHex:L.value.trim()}:{},d=y.value.memberSet.find(b=>b.did===M.value);x.value=!0;try{const b=await n("multisig.sign",{proposalId:y.value.id,signerDid:M.value,alg:d?.alg??"Ed25519",source:k.value,params:r},k.value==="hex"?`multisig sign ${y.value.id} --signer ${M.value} --key ${r.secretKeyHex} --json`:`multisig sign ${y.value.id} --signer ${M.value} --json`,2e4);if(b.accepted)v.success(b.reachedThreshold?"✓ 签名已接受 — 达到阈值":"✓ 签名已接受"),C("signed",b),C("update:open",!1);else{const S=b.reason||"unknown",U=b.detail?` (${b.detail})`:"";v.error(`签名失败: ${S}${U}`)}}catch(b){v.error(b.message||String(b))}finally{x.value=!1}}return(r,d)=>{const b=i("a-tag"),S=i("a-descriptions-item"),U=i("a-descriptions"),T=i("a-divider"),o=i("a-select-option"),e=i("a-select"),p=i("a-typography-text"),_=i("a-radio"),h=i("a-radio-group"),I=i("a-input-password"),F=i("a-alert"),te=i("a-button"),N=i("a-space"),ie=i("a-modal");return c(),g(ie,{open:Y.open,title:"签名提案",width:600,"mask-closable":!1,keyboard:!1,"destroy-on-close":"","onUpdate:open":se},{footer:t(()=>[a(N,null,{default:t(()=>[a(te,{disabled:x.value,onClick:ee},{default:t(()=>[...d[12]||(d[12]=[l("取消",-1)])]),_:1},8,["disabled"]),a(te,{type:"primary",danger:"",loading:x.value,disabled:!Q.value,onClick:ne},{default:t(()=>[...d[13]||(d[13]=[l("立即签名",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:t(()=>[Y.proposal?(c(),E(re,{key:0},[a(U,{column:1,bordered:"",size:"small"},{default:t(()=>[a(S,{label:"Domain"},{default:t(()=>[a(b,{color:"purple"},{default:t(()=>[l(s(y.value.domain),1)]),_:1})]),_:1}),a(S,{label:"Proposal ID"},{default:t(()=>[m("code",je,s(y.value.id),1)]),_:1}),a(S,{label:"阈值"},{default:t(()=>[l(s(y.value.thresholdM)+"-of-"+s(y.value.memberSet.length),1)]),_:1}),a(S,{label:"已签 / 需签"},{default:t(()=>[l(s(oe.value)+" / "+s(y.value.thresholdM),1)]),_:1}),a(S,{label:"Payload hash"},{default:t(()=>[D.value?(c(),E("code",{key:1,class:"hash-full",style:{cursor:"pointer","font-size":"11px","word-break":"break-all"},onClick:d[1]||(d[1]=z=>D.value=!1)},s(y.value.payloadHash||"(unavailable)"),1)):(c(),E("code",{key:0,class:"hash-short",style:{cursor:"pointer","font-size":"12px"},onClick:d[0]||(d[0]=z=>D.value=!0),title:"点击展开完整 hash"},s(K.value),1))]),_:1}),a(S,{label:"Payload"},{default:t(()=>[m("details",null,[d[5]||(d[5]=m("summary",{style:{cursor:"pointer",color:"var(--text-secondary)"}}," 展开 (JCS) ",-1)),m("pre",Fe,s(le.value),1)])]),_:1})]),_:1}),a(T),m("div",Ne,[d[7]||(d[7]=m("div",{style:{"margin-bottom":"8px","font-weight":"500"}},"签名身份 (DID)",-1)),a(e,{value:M.value,"onUpdate:value":d[2]||(d[2]=z=>M.value=z),style:{width:"100%"},placeholder:"选择签名成员",disabled:x.value},{default:t(()=>[(c(!0),E(re,null,be(V.value,z=>(c(),g(o,{key:z.did,value:z.did},{default:t(()=>[m("code",Ee,s(O(z.did)),1),m("span",Je," ("+s(z.alg)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","disabled"]),V.value.length===0?(c(),g(p,{key:0,type:"warning",style:{"font-size":"12px"}},{default:t(()=>[...d[6]||(d[6]=[l(" 所有成员均已签名 (达阈值) ",-1)])]),_:1})):w("",!0)]),m("div",Ke,[d[11]||(d[11]=m("div",{style:{"margin-bottom":"8px","font-weight":"500"}},"密钥来源",-1)),a(h,{value:k.value,"onUpdate:value":d[3]||(d[3]=z=>k.value=z),disabled:x.value},{default:t(()=>[a(_,{value:"ukey"},{default:t(()=>[...d[8]||(d[8]=[m("strong",null,"U-Key 硬件",-1),m("span",{style:{color:"var(--text-secondary)","margin-left":"8px","font-size":"12px"}}," 推荐 (PIN 确认 via 主进程) ",-1)])]),_:1}),d[10]||(d[10]=m("br",null,null,-1)),a(_,{value:"hex",style:{"margin-top":"6px"}},{default:t(()=>[...d[9]||(d[9]=[m("strong",null,"软件 hex",-1),m("span",{style:{color:"var(--text-secondary)","margin-left":"8px","font-size":"12px"}}," 调试用 — 私钥不应在 UI 输入 ",-1)])]),_:1})]),_:1},8,["value","disabled"]),k.value==="hex"?(c(),g(I,{key:0,value:L.value,"onUpdate:value":d[4]||(d[4]=z=>L.value=z),placeholder:"hex (32 bytes = 64 chars Ed25519)",style:{"margin-top":"8px"},disabled:x.value},null,8,["value","disabled"])):w("",!0)]),a(F,{message:"高风险操作",description:X.value,type:"warning","show-icon":"",style:{"margin-bottom":"8px"}},null,8,["description"])],64)):w("",!0)]),_:1},8,["open"])}}},Be=xe(Te,[["__scopeId","data-v-61747175"]]),Re={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},He={class:"filter-bar"},qe={key:0,style:{"font-size":"12px"}},Ve={style:{margin:"0 0 8px 0"}},Qe={style:{"margin-left":"8px",color:"var(--text-secondary)"}},We={style:{"margin-top":"8px"}},Ye={style:{cursor:"pointer",color:"var(--text-secondary)"}},Ge={key:0},Xe={style:{margin:"0","max-height":"240px",overflow:"auto","font-size":"12px"}},Ze={style:{margin:"16px 0 8px 0"}},et={style:{"font-size":"12px"}},tt={__name:"Multisig",setup(Y){const G=ke(),{isEmbedded:q}=he();async function C(o,e,p,_=8e3){if(q){const h=await G.sendRaw({type:o,...e},_);if(!h?.ok){const I=h?.error;throw new Error(typeof I=="string"?I:I?.message||`${o} failed`)}return h.result}return G.executeJson(p,_)}const J=$(!1),B=$([]),x=$([]),M=$("proposals"),k=$(""),L=$(""),D=$(!1),n=$(null),y=$(!1),R=$(null),oe=[{title:"ID",key:"id",width:200},{title:"Domain",dataIndex:"domain",width:220},{title:"状态",key:"state",width:110},{title:"阈值",key:"sigs",width:80},{title:"创建",key:"createdAt",width:140},{title:"过期",key:"expiresAt",width:140},{title:"操作",key:"actions",width:240,fixed:"right"}],V=[{title:"DID",dataIndex:"did"},{title:"Alg",dataIndex:"alg",width:200}],K=P(()=>{const o={pending:0,reached:0,consumed:0,cancelled:0,expired:0};for(const e of B.value)o[e.state]!==void 0&&(o[e.state]+=1);return o}),le=P(()=>B.value.filter(o=>!(k.value&&o.state!==k.value||L.value&&!o.domain.toLowerCase().includes(L.value.toLowerCase()))));function Q(o){switch(o){case"pending":return"gold";case"reached":return"cyan";case"consumed":return"green";case"cancelled":return"default";case"expired":return"red";default:return"default"}}function X(o){const e=o-Date.now(),p=Math.abs(e)/6e4;if(p<60)return e>0?`${Math.round(p)} 分钟后`:`${Math.round(p)} 分钟前`;const _=p/60;if(_<24)return e>0?`${Math.round(_)} 小时后`:`${Math.round(_)} 小时前`;const h=_/24;return e>0?`${Math.round(h)} 天后`:`${Math.round(h)} 天前`}async function O(){J.value=!0;try{const[o,e]=await Promise.all([C("multisig.list",{limit:500},"multisig list --limit 500 --json",1e4).catch(()=>[]),Promise.all(["marketplace.purchase","crosschain.bridge.outbound","did.rotate"].map(async p=>{try{const _=await C("multisig.policy.show",{domain:p},`multisig policy show ${p} --json`,8e3);return{domain:p,policy:_,updatedAtMs:Date.now()}}catch{return null}})).then(p=>p.filter(Boolean))]);B.value=Array.isArray(o)?o:[],x.value=Array.isArray(e)?e:[]}catch(o){v.error("加载失败: "+(o.message||o))}finally{J.value=!1}}async function Z(o){try{const e=await C("multisig.show",{proposalId:o.id},`multisig show ${o.id} --json`,8e3);n.value=e,D.value=!0}catch(e){v.error("加载详情失败: "+(e.message||e))}}function se(o){return{onClick:()=>Z(o)}}async function ee(o){_e.confirm({title:`取消提案 ${o.id.slice(0,12)}…?`,content:"已签名的成员需要重新发起新提案。此操作不可撤销。",okText:"取消提案",okType:"danger",cancelText:"保持",onOk:async()=>{try{const e=await C("multisig.cancel",{proposalId:o.id,reason:"web-shell"},`multisig cancel ${o.id} --reason web-shell --json`,8e3);e.ok?(v.success("提案已取消"),D.value=!1,await O()):v.error("取消失败: "+e.reason)}catch(e){v.error(e.message||String(e))}}})}async function ne(o){try{const e=await C("multisig.show",{proposalId:o.id},`multisig show ${o.id} --json`,8e3);R.value=e,y.value=!0}catch(e){v.error("加载提案详情失败: "+(e.message||e))}}function r(){n.value&&(R.value=n.value,y.value=!0)}async function d(){D.value=!1,await O()}async function b(o){try{const e=await C("marketplace.consume",{proposalId:o.id},`marketplace consume ${o.id} --json`,1e4);e.status==="consumed"?(v.success(`订单 ${e.order.itemId} 已执行 (¥${(e.order.amountFen/100).toFixed(2)})`),D.value=!1,await O()):v.error("执行失败: "+(e.reason||JSON.stringify(e)))}catch(e){v.error(e.message||String(e))}}async function S(o){try{const e=await C("crosschain.bridge.consume",{proposalId:o.id},`crosschain bridge-consume ${o.id} --json`,1e4);if(e.status==="consumed"){const p=e.payload||{},_=`${p.fromChain||"?"} → ${p.toChain||"?"} (amount ${p.amount??"?"})`;e.bridgeId?v.success(`跨链桥已执行: ${_} · bridgeId ${e.bridgeId}`):(v.success(`跨链桥提案已 finalize: ${_}`),_e.info({title:"跨链桥提案 finalize 完成",content:`Proposal 已标记 consumed。
|
|
1
|
+
import{w as ve,L as c,Q as g,N as t,M as E,c as a,O as l,P as s,R as m,F as re,Y as be,S as w,K as i,f as P,r as $,o as De,u as j,_ as Ie,a1 as W}from"./vendor-M5lGV-wr.js";import{_ as xe,u as ke,d as v}from"./index-BAy0ks7N.js";import{u as he}from"./useShellMode-CgR0wCYM.js";import{R as Ae,x as ge,l as Le,aE as Oe,f as ye,d as Pe,c as Ue}from"./icons-DY9VpXfa.js";import _e from"./index-DpzjQM4w.js";import"./KeyCode-D63Tfrq7.js";import"./omit-BMF4_2X_.js";import"./pickAttrs-C1bUV-iL.js";import"./initDefaultProps-Dp93Vlbv.js";import"./motion-yBy7l6Td.js";import"./raf-Deuc0E8-.js";import"./index-cP5FNe0q.js";import"./index-CW7a8O5w.js";import"./isVisible-C7tPsqfj.js";import"./useState-CSzR8F8O.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./compact-item-Cjb446yk.js";import"./createContext-CulBut34.js";import"./Compact-D4E0roed.js";import"./_getTag-BVc6NQ_K.js";import"./styleChecker-DgazP1mu.js";import"./zoom-DRmMxFNC.js";import"./ActionButton-COVVHNnK.js";import"./vnode-DMH0ymoP.js";const je={style:{"font-size":"12px"}},Fe={style:{margin:"8px 0 0","max-height":"200px",overflow:"auto","font-size":"11px"}},Ne={style:{"margin-bottom":"16px"}},Ee={style:{"font-size":"12px"}},Je={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Ke={style:{"margin-bottom":"16px"}},Te={__name:"SignProposalModal",props:{open:{type:Boolean,default:!1},proposal:{type:Object,default:null}},emits:["update:open","signed"],setup(Y,{emit:G}){const q=Y,C=G,J=ke(),{isEmbedded:B}=he(),x=$(!1),M=$(null),k=$("ukey"),L=$(""),D=$(!1);async function n(r,d,b,S=15e3){if(B){const U=await J.sendRaw({type:r,...d},S);if(!U?.ok){const T=U?.error;throw new Error(typeof T=="string"?T:T?.message||`${r} failed`)}return U.result}return J.executeJson(b,S)}const y=P(()=>q.proposal?.proposal??{}),R=P(()=>new Set((q.proposal?.signatures??[]).map(r=>r.signerDid))),oe=P(()=>R.value.size),V=P(()=>(y.value?.memberSet??[]).filter(r=>!R.value.has(r.did))),K=P(()=>{const r=y.value?.payloadHash;return!r||typeof r!="string"?"(unavailable)":r.length<=12?r:`${r.slice(0,8)}…${r.slice(-4)}`}),le=P(()=>{const r=y.value?.payload;try{return r?JSON.stringify(r,null,2):y.value?.payloadJcs||"(empty)"}catch{return String(r)}}),Q=P(()=>x.value||!M.value?!1:k.value==="hex"?/^[0-9a-fA-F]{2,}$/.test(L.value.trim()):k.value==="ukey"),X=P(()=>k.value==="ukey"?"签名将通过主进程调用 U-Key 硬件 (Windows) / simulation 驱动 (macOS/Linux)。 请确认 payload hash 与发起方提供的一致。私钥不出硬件边界。":"调试模式:私钥 hex 仅供 CLI / dev 测试。生产环境请使用 U-Key 硬件源。");function O(r){return r?r.length<=28?r:`${r.slice(0,20)}…${r.slice(-8)}`:""}function Z(){M.value=null,k.value="ukey",L.value="",D.value=!1,x.value=!1}ve(()=>q.open,r=>{r&&Z()}),ve(V,r=>{r.length>0&&!M.value&&(M.value=r[0].did)});function se(r){x.value||C("update:open",r)}function ee(){x.value||C("update:open",!1)}async function ne(){if(!Q.value)return;const r=k.value==="hex"?{secretKeyHex:L.value.trim()}:{},d=y.value.memberSet.find(b=>b.did===M.value);x.value=!0;try{const b=await n("multisig.sign",{proposalId:y.value.id,signerDid:M.value,alg:d?.alg??"Ed25519",source:k.value,params:r},k.value==="hex"?`multisig sign ${y.value.id} --signer ${M.value} --key ${r.secretKeyHex} --json`:`multisig sign ${y.value.id} --signer ${M.value} --json`,2e4);if(b.accepted)v.success(b.reachedThreshold?"✓ 签名已接受 — 达到阈值":"✓ 签名已接受"),C("signed",b),C("update:open",!1);else{const S=b.reason||"unknown",U=b.detail?` (${b.detail})`:"";v.error(`签名失败: ${S}${U}`)}}catch(b){v.error(b.message||String(b))}finally{x.value=!1}}return(r,d)=>{const b=i("a-tag"),S=i("a-descriptions-item"),U=i("a-descriptions"),T=i("a-divider"),o=i("a-select-option"),e=i("a-select"),p=i("a-typography-text"),_=i("a-radio"),h=i("a-radio-group"),I=i("a-input-password"),F=i("a-alert"),te=i("a-button"),N=i("a-space"),ie=i("a-modal");return c(),g(ie,{open:Y.open,title:"签名提案",width:600,"mask-closable":!1,keyboard:!1,"destroy-on-close":"","onUpdate:open":se},{footer:t(()=>[a(N,null,{default:t(()=>[a(te,{disabled:x.value,onClick:ee},{default:t(()=>[...d[12]||(d[12]=[l("取消",-1)])]),_:1},8,["disabled"]),a(te,{type:"primary",danger:"",loading:x.value,disabled:!Q.value,onClick:ne},{default:t(()=>[...d[13]||(d[13]=[l("立即签名",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:t(()=>[Y.proposal?(c(),E(re,{key:0},[a(U,{column:1,bordered:"",size:"small"},{default:t(()=>[a(S,{label:"Domain"},{default:t(()=>[a(b,{color:"purple"},{default:t(()=>[l(s(y.value.domain),1)]),_:1})]),_:1}),a(S,{label:"Proposal ID"},{default:t(()=>[m("code",je,s(y.value.id),1)]),_:1}),a(S,{label:"阈值"},{default:t(()=>[l(s(y.value.thresholdM)+"-of-"+s(y.value.memberSet.length),1)]),_:1}),a(S,{label:"已签 / 需签"},{default:t(()=>[l(s(oe.value)+" / "+s(y.value.thresholdM),1)]),_:1}),a(S,{label:"Payload hash"},{default:t(()=>[D.value?(c(),E("code",{key:1,class:"hash-full",style:{cursor:"pointer","font-size":"11px","word-break":"break-all"},onClick:d[1]||(d[1]=z=>D.value=!1)},s(y.value.payloadHash||"(unavailable)"),1)):(c(),E("code",{key:0,class:"hash-short",style:{cursor:"pointer","font-size":"12px"},onClick:d[0]||(d[0]=z=>D.value=!0),title:"点击展开完整 hash"},s(K.value),1))]),_:1}),a(S,{label:"Payload"},{default:t(()=>[m("details",null,[d[5]||(d[5]=m("summary",{style:{cursor:"pointer",color:"var(--text-secondary)"}}," 展开 (JCS) ",-1)),m("pre",Fe,s(le.value),1)])]),_:1})]),_:1}),a(T),m("div",Ne,[d[7]||(d[7]=m("div",{style:{"margin-bottom":"8px","font-weight":"500"}},"签名身份 (DID)",-1)),a(e,{value:M.value,"onUpdate:value":d[2]||(d[2]=z=>M.value=z),style:{width:"100%"},placeholder:"选择签名成员",disabled:x.value},{default:t(()=>[(c(!0),E(re,null,be(V.value,z=>(c(),g(o,{key:z.did,value:z.did},{default:t(()=>[m("code",Ee,s(O(z.did)),1),m("span",Je," ("+s(z.alg)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","disabled"]),V.value.length===0?(c(),g(p,{key:0,type:"warning",style:{"font-size":"12px"}},{default:t(()=>[...d[6]||(d[6]=[l(" 所有成员均已签名 (达阈值) ",-1)])]),_:1})):w("",!0)]),m("div",Ke,[d[11]||(d[11]=m("div",{style:{"margin-bottom":"8px","font-weight":"500"}},"密钥来源",-1)),a(h,{value:k.value,"onUpdate:value":d[3]||(d[3]=z=>k.value=z),disabled:x.value},{default:t(()=>[a(_,{value:"ukey"},{default:t(()=>[...d[8]||(d[8]=[m("strong",null,"U-Key 硬件",-1),m("span",{style:{color:"var(--text-secondary)","margin-left":"8px","font-size":"12px"}}," 推荐 (PIN 确认 via 主进程) ",-1)])]),_:1}),d[10]||(d[10]=m("br",null,null,-1)),a(_,{value:"hex",style:{"margin-top":"6px"}},{default:t(()=>[...d[9]||(d[9]=[m("strong",null,"软件 hex",-1),m("span",{style:{color:"var(--text-secondary)","margin-left":"8px","font-size":"12px"}}," 调试用 — 私钥不应在 UI 输入 ",-1)])]),_:1})]),_:1},8,["value","disabled"]),k.value==="hex"?(c(),g(I,{key:0,value:L.value,"onUpdate:value":d[4]||(d[4]=z=>L.value=z),placeholder:"hex (32 bytes = 64 chars Ed25519)",style:{"margin-top":"8px"},disabled:x.value},null,8,["value","disabled"])):w("",!0)]),a(F,{message:"高风险操作",description:X.value,type:"warning","show-icon":"",style:{"margin-bottom":"8px"}},null,8,["description"])],64)):w("",!0)]),_:1},8,["open"])}}},Be=xe(Te,[["__scopeId","data-v-61747175"]]),Re={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},He={class:"filter-bar"},qe={key:0,style:{"font-size":"12px"}},Ve={style:{margin:"0 0 8px 0"}},Qe={style:{"margin-left":"8px",color:"var(--text-secondary)"}},We={style:{"margin-top":"8px"}},Ye={style:{cursor:"pointer",color:"var(--text-secondary)"}},Ge={key:0},Xe={style:{margin:"0","max-height":"240px",overflow:"auto","font-size":"12px"}},Ze={style:{margin:"16px 0 8px 0"}},et={style:{"font-size":"12px"}},tt={__name:"Multisig",setup(Y){const G=ke(),{isEmbedded:q}=he();async function C(o,e,p,_=8e3){if(q){const h=await G.sendRaw({type:o,...e},_);if(!h?.ok){const I=h?.error;throw new Error(typeof I=="string"?I:I?.message||`${o} failed`)}return h.result}return G.executeJson(p,_)}const J=$(!1),B=$([]),x=$([]),M=$("proposals"),k=$(""),L=$(""),D=$(!1),n=$(null),y=$(!1),R=$(null),oe=[{title:"ID",key:"id",width:200},{title:"Domain",dataIndex:"domain",width:220},{title:"状态",key:"state",width:110},{title:"阈值",key:"sigs",width:80},{title:"创建",key:"createdAt",width:140},{title:"过期",key:"expiresAt",width:140},{title:"操作",key:"actions",width:240,fixed:"right"}],V=[{title:"DID",dataIndex:"did"},{title:"Alg",dataIndex:"alg",width:200}],K=P(()=>{const o={pending:0,reached:0,consumed:0,cancelled:0,expired:0};for(const e of B.value)o[e.state]!==void 0&&(o[e.state]+=1);return o}),le=P(()=>B.value.filter(o=>!(k.value&&o.state!==k.value||L.value&&!o.domain.toLowerCase().includes(L.value.toLowerCase()))));function Q(o){switch(o){case"pending":return"gold";case"reached":return"cyan";case"consumed":return"green";case"cancelled":return"default";case"expired":return"red";default:return"default"}}function X(o){const e=o-Date.now(),p=Math.abs(e)/6e4;if(p<60)return e>0?`${Math.round(p)} 分钟后`:`${Math.round(p)} 分钟前`;const _=p/60;if(_<24)return e>0?`${Math.round(_)} 小时后`:`${Math.round(_)} 小时前`;const h=_/24;return e>0?`${Math.round(h)} 天后`:`${Math.round(h)} 天前`}async function O(){J.value=!0;try{const[o,e]=await Promise.all([C("multisig.list",{limit:500},"multisig list --limit 500 --json",1e4).catch(()=>[]),Promise.all(["marketplace.purchase","crosschain.bridge.outbound","did.rotate"].map(async p=>{try{const _=await C("multisig.policy.show",{domain:p},`multisig policy show ${p} --json`,8e3);return{domain:p,policy:_,updatedAtMs:Date.now()}}catch{return null}})).then(p=>p.filter(Boolean))]);B.value=Array.isArray(o)?o:[],x.value=Array.isArray(e)?e:[]}catch(o){v.error("加载失败: "+(o.message||o))}finally{J.value=!1}}async function Z(o){try{const e=await C("multisig.show",{proposalId:o.id},`multisig show ${o.id} --json`,8e3);n.value=e,D.value=!0}catch(e){v.error("加载详情失败: "+(e.message||e))}}function se(o){return{onClick:()=>Z(o)}}async function ee(o){_e.confirm({title:`取消提案 ${o.id.slice(0,12)}…?`,content:"已签名的成员需要重新发起新提案。此操作不可撤销。",okText:"取消提案",okType:"danger",cancelText:"保持",onOk:async()=>{try{const e=await C("multisig.cancel",{proposalId:o.id,reason:"web-shell"},`multisig cancel ${o.id} --reason web-shell --json`,8e3);e.ok?(v.success("提案已取消"),D.value=!1,await O()):v.error("取消失败: "+e.reason)}catch(e){v.error(e.message||String(e))}}})}async function ne(o){try{const e=await C("multisig.show",{proposalId:o.id},`multisig show ${o.id} --json`,8e3);R.value=e,y.value=!0}catch(e){v.error("加载提案详情失败: "+(e.message||e))}}function r(){n.value&&(R.value=n.value,y.value=!0)}async function d(){D.value=!1,await O()}async function b(o){try{const e=await C("marketplace.consume",{proposalId:o.id},`marketplace consume ${o.id} --json`,1e4);e.status==="consumed"?(v.success(`订单 ${e.order.itemId} 已执行 (¥${(e.order.amountFen/100).toFixed(2)})`),D.value=!1,await O()):v.error("执行失败: "+(e.reason||JSON.stringify(e)))}catch(e){v.error(e.message||String(e))}}async function S(o){try{const e=await C("crosschain.bridge.consume",{proposalId:o.id},`crosschain bridge-consume ${o.id} --json`,1e4);if(e.status==="consumed"){const p=e.payload||{},_=`${p.fromChain||"?"} → ${p.toChain||"?"} (amount ${p.amount??"?"})`;e.bridgeId?v.success(`跨链桥已执行: ${_} · bridgeId ${e.bridgeId}`):(v.success(`跨链桥提案已 finalize: ${_}`),_e.info({title:"跨链桥提案 finalize 完成",content:`Proposal 已标记 consumed。
|
|
2
2
|
|
|
3
3
|
在 CLI 侧运行以下命令完成 cc_bridges 行插入:
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as nt,u as at,b as ot,d as v}from"./index-DY5Oc3z6.js";import{s as lt}from"./community-parser-CO25nZFt.js";import{R as rt,aq as st,q as it,r as _e,l as be,aU as ut,ah as ct,f as pt}from"./icons-NT6gy8Ee.js";import{o as dt,M as m,R as b,P as i,c as a,N as t,Q as h,S as _,K as d,r as x,L as u,O as p,u as y,F as C,Y as j,_ as ft,f as Q,a as ke}from"./vendor-M5lGV-wr.js";function P(s){const r=lt(s);if(!r)return null;try{return JSON.parse(r)}catch{}const l=r.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!l)return null;try{return JSON.parse(l[0])}catch{return null}}const oe=Object.freeze(["create_component","add_feature","fix_bug","refactor","add_api","add_test","update_style","configure","general"]),Le=Object.freeze(["draft","complete","refined"]),xe=Object.freeze(["naming","architecture","testing","style","imports","components"]);function D(s,r=0){return typeof s=="number"&&Number.isFinite(s)?s:r}function q(s,r){if(s==null)return r;if(typeof s!="string")return s;try{return JSON.parse(s)}catch{return s}}function mt(s){const r=P(s);return!r||typeof r!="object"||Array.isArray(r)?null:{intent:String(r.intent||"general"),confidence:D(r.confidence,0)}}function gt(s){const r=P(s);if(!r||typeof r!="object"||Array.isArray(r))return null;const l=Array.isArray(r.entities)?r.entities.map(g=>g&&typeof g=="object"?{type:String(g.type||""),value:String(g.value||"")}:null).filter(Boolean):[];return{entities:l,count:D(r.count,l.length)}}function yt(s){const r=P(s);if(!r||typeof r!="object"||Array.isArray(r))return null;const l=Array.isArray(r.detected)?r.detected.filter(g=>typeof g=="string"):[];return{detected:l,primary:r.primary?String(r.primary):l[0]||null}}function vt(s,r=0){if(!s||typeof s!="object")return null;const l=s.id||"";return l?{key:l,id:l,inputText:s.inputText??s.input_text??"",intent:String(s.intent||"general"),entities:q(s.entities,[]),techStack:q(s.techStack??s.tech_stack,[]),spec:q(s.spec,null),completenessScore:D(s.completenessScore??s.completeness_score,0),ambiguities:q(s.ambiguities,[]),status:String(s.status||"draft").toLowerCase(),createdAt:s.createdAt??s.created_at??null,updatedAt:s.updatedAt??s.updated_at??null,_idx:r}:null}function _t(s){const r=P(s);return Array.isArray(r)?r.map(vt).filter(Boolean):[]}function bt(s){const r=P(s);return!r||typeof r!="object"||Array.isArray(r)||r.translationId===void 0?null:{translated:!!r.translated,translationId:r.translationId,intent:String(r.intent||""),completeness:D(r.completeness,0)}}function kt(s){if(!s)return{noDb:!1,error:""};const r=/No ChainlessChain project database/i.test(s)||/Cannot read properties of undefined \(reading ['"]prepare['"]\)/i.test(s)||/TypeError.*prepare/i.test(s),l=s.match(/Error:\s*(No ChainlessChain project database[^\r\n]*)/i);if(l)return{noDb:!0,error:l[1].trim()};const g=s.match(/TypeError:\s*(.+?)(?:\r?\n|$)/i);return{noDb:r,error:g?g[1].trim():""}}function xt(s,r=0){if(!s||typeof s!="object")return null;const l=s.id||"";return l?{key:l,id:l,category:String(s.category||""),pattern:String(s.pattern||""),examples:q(s.examples,[]),confidence:D(s.confidence,0),sourceFiles:q(s.sourceFiles??s.source_files,[]),createdAt:s.createdAt??s.created_at??null,_idx:r}:null}function ht(s){const r=P(s);return Array.isArray(r)?r.map(xt).filter(Boolean):[]}const $t={translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}};function Ct(s){const r=JSON.parse(JSON.stringify($t));for(const g of oe)r.translations.byIntent[g]=0;for(const g of xe)r.conventions.byCategory[g]=0;const l=P(s);if(!l||typeof l!="object"||Array.isArray(l))return r;if(l.translations&&typeof l.translations=="object"){if(r.translations.total=D(l.translations.total,0),r.translations.avgCompleteness=D(l.translations.avgCompleteness??l.translations.avg_completeness,0),l.translations.byIntent&&typeof l.translations.byIntent=="object")for(const[g,S]of Object.entries(l.translations.byIntent))typeof S=="number"&&Number.isFinite(S)&&(r.translations.byIntent[g]=S);if(l.translations.byStatus&&typeof l.translations.byStatus=="object")for(const g of Object.keys(r.translations.byStatus))r.translations.byStatus[g]=D(l.translations.byStatus[g],0)}if(l.conventions&&typeof l.conventions=="object"&&(r.conventions.total=D(l.conventions.total,0),l.conventions.byCategory&&typeof l.conventions.byCategory=="object"))for(const[g,S]of Object.entries(l.conventions.byCategory))typeof S=="number"&&Number.isFinite(S)&&(r.conventions.byCategory[g]=S);return r}function ae(s){if(s==null||s==="")return"—";const r=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(r.getTime())?String(s):r.toLocaleString("zh-CN",{hour12:!1})}const St={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},zt={class:"page-title"},At={class:"page-sub"},Tt={class:"filter-bar"},jt={key:0,style:{color:"var(--text-primary)"}},Ft={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},wt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Nt={class:"filter-bar"},Ot={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Lt={key:0,style:{color:"var(--text-muted)"}},Dt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Rt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ut={key:0,style:{"margin-bottom":"12px"}},Et={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},It={style:{color:"var(--text-secondary)","font-size":"12px"}},Pt={key:1,style:{"margin-bottom":"12px"}},Jt={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},Mt={key:0,style:{color:"var(--text-muted)"}},Bt={key:2},qt={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},Kt={key:0,style:{color:"var(--text-muted)"}},Vt={key:0,style:{"padding-top":"8px"}},Wt={style:{"white-space":"pre-wrap",color:"var(--text-primary)"}},Yt={style:{"margin-top":"16px"}},Gt={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Qt={class:"json-block"},Ht={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Xt={class:"json-block"},Zt={key:0},en={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},tn={class:"json-block"},nn={__name:"NLProgramming",setup(s){const r=at(),{t:l}=ot(),g=x(!1),S=x(!1),le=x(!1),re=x(!1),he=x([]),se=x([]),F=x({translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}}),ie=x("translations"),K=x(""),V=x(""),H=x(""),ue=x(!1),X=x(!1),Z=x(!1),ce=x(!1),pe=ke({text:""}),w=ke({text:"",intent:null}),k=ke({category:"naming",pattern:"",examples:"",confidence:.8}),N=x(null),O=x(null),T=x(null),ee=x({noDb:!1,error:""}),$=x(null),De=Q(()=>[{title:l("nlprog.translationCols.inputText"),key:"inputText"},{title:l("nlprog.translationCols.intent"),key:"intent",width:"140px"},{title:l("nlprog.translationCols.completeness"),key:"completeness",width:"160px"},{title:l("nlprog.translationCols.status"),key:"status",width:"100px"},{title:l("nlprog.translationCols.updatedAt"),key:"updatedAt",width:"160px"},{title:l("nlprog.translationCols.action"),key:"action",width:"210px"}]),Re=Q(()=>[{title:l("nlprog.conventionCols.category"),key:"category",width:"120px"},{title:l("nlprog.conventionCols.pattern"),key:"pattern"},{title:l("nlprog.conventionCols.examples"),key:"examples",width:"220px"},{title:l("nlprog.conventionCols.confidence"),key:"confidence",width:"90px"},{title:l("nlprog.conventionCols.createdAt"),key:"createdAt",width:"160px"},{title:l("nlprog.conventionCols.action"),key:"action",width:"90px"}]),Ue=Q(()=>F.value.translations.avgCompleteness*100),Ee=Q(()=>{let e=he.value;return K.value&&(e=e.filter(n=>n.intent===K.value)),V.value&&(e=e.filter(n=>n.status===V.value)),e}),Ie=Q(()=>H.value?se.value.filter(e=>e.category===H.value):se.value);function J(e){const n=`nlprog.intentLabels.${e}`,c=l(n);return c===n?e:c}function te(e){return{create_component:"blue",add_feature:"green",fix_bug:"red",refactor:"purple",add_api:"cyan",add_test:"orange",update_style:"magenta",configure:"gold",general:"default"}[e]||"default"}function W(e){const n=`nlprog.statusLabels.${e}`,c=l(n);return c===n?e:c}function $e(e){return{draft:"default",complete:"green",refined:"cyan"}[e]||"default"}function de(e){const n=`nlprog.categoryLabels.${e}`,c=l(n);return c===n?e:c}function Pe(e){return{naming:"blue",architecture:"purple",testing:"cyan",style:"magenta",imports:"orange",components:"green"}[e]||"default"}function fe(e){return e>=.7?"#52c41a":e>=.4?"#faad14":"#ff4d4f"}function Je(e,n){return e?e.length>n?e.slice(0,n)+"...":e:""}function me(e){if(e==null)return"—";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Me({key:e}){e==="analyze"?(N.value=null,O.value=null,T.value=null,ue.value=!0):e==="translate"?(ee.value={noDb:!1,error:""},X.value=!0):e==="convention"&&(Z.value=!0)}async function R(){g.value=!0;try{const[e,n,c]=await Promise.all([r.execute("nlprog list --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("nlprog conventions --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("nlprog stats --json",8e3).catch(()=>({output:""}))]);he.value=_t(e.output),se.value=ht(n.output),F.value=Ct(c.output)}catch(e){v.error(l("nlprog.msg.loadFailed")+": "+(e?.message||e))}finally{g.value=!1}}async function Be(){const e=pe.text.trim();if(!e){v.warning(l("nlprog.msg.textEmpty"));return}S.value=!0,N.value=null,O.value=null,T.value=null;try{const n=e.replace(/"/g,'\\"'),[c,L,U]=await Promise.all([r.execute(`nlprog classify "${n}" --json`,8e3).catch(()=>({output:""})),r.execute(`nlprog extract "${n}" --json`,8e3).catch(()=>({output:""})),r.execute(`nlprog detect-stack "${n}" --json`,8e3).catch(()=>({output:""}))]);N.value=mt(c.output),O.value=gt(L.output),T.value=yt(U.output),!N.value&&!O.value&&!T.value&&v.error(l("nlprog.msg.analyzeFailed"))}catch(n){v.error(l("nlprog.msg.analyzeFailed")+": "+(n?.message||n))}finally{S.value=!1}}async function qe(){const e=w.text.trim();if(!e){v.warning(l("nlprog.msg.translateTextEmpty"));return}le.value=!0,ee.value={noDb:!1,error:""};try{const n=[`nlprog translate "${e.replace(/"/g,'\\"')}"`];w.intent&&n.push(`--intent ${w.intent}`),n.push("--json");const{output:c}=await r.execute(n.join(" "),12e3),L=kt(c);if(L.noDb){ee.value=L;return}const U=bt(c);if(!U){v.error(l("nlprog.msg.translateFailed")+": "+c.slice(0,120));return}v.success(l("nlprog.msg.translateSuccess",{pct:(U.completeness*100).toFixed(0)})),X.value=!1,Ce(),await R()}catch(n){v.error(l("nlprog.msg.translateFailed")+": "+(n?.message||n))}finally{le.value=!1}}async function Ke(e,n){if(n!==e.status)try{const{output:c}=await r.execute(`nlprog status ${e.id} ${n} --json`,8e3);if(/error|invalid/i.test(c)&&!/"updated"/.test(c)){v.error(l("nlprog.msg.transitionFailed")+": "+c.slice(0,120));return}v.success(l("nlprog.msg.transitionSuccess",{label:W(n)})),await R()}catch(c){v.error(l("nlprog.msg.transitionFailed")+": "+(c?.message||c))}}async function Ve(e){try{const{output:n}=await r.execute(`nlprog remove ${e.id} --json`,8e3);if(/error/i.test(n)&&!/"removed"/.test(n)){v.error(l("nlprog.msg.deleteFailed")+": "+n.slice(0,120));return}v.success(l("nlprog.msg.deleteSuccess")),await R()}catch(n){v.error(l("nlprog.msg.deleteFailed")+": "+(n?.message||n))}}function We(e){$.value=e,ce.value=!0}async function Ye(){const e=k.pattern.trim();if(!e){v.warning(l("nlprog.msg.patternEmpty"));return}if(k.examples.trim())try{JSON.parse(k.examples)}catch{v.warning(l("nlprog.msg.examplesBadJson"));return}re.value=!0;try{const n=[`nlprog convention-add --category ${k.category}`];n.push(`--pattern "${e.replace(/"/g,'\\"')}"`),k.examples.trim()&&n.push(`--examples '${k.examples.trim().replace(/'/g,"'\\''")}'`),k.confidence!=null&&n.push(`--confidence ${k.confidence}`),n.push("--json");const{output:c}=await r.execute(n.join(" "),1e4);if(/error|invalid|失败/i.test(c)&&!/"added"/.test(c)){v.error(l("nlprog.msg.addFailed")+": "+c.slice(0,120));return}v.success(l("nlprog.msg.addSuccess")),Z.value=!1,Se(),ie.value="conventions",await R()}catch(n){v.error(l("nlprog.msg.addFailed")+": "+(n?.message||n))}finally{re.value=!1}}async function Ge(e){try{const{output:n}=await r.execute(`nlprog convention-remove ${e.id} --json`,8e3);if(/error/i.test(n)&&!/"removed"/.test(n)){v.error(l("nlprog.msg.deleteFailed")+": "+n.slice(0,120));return}v.success(l("nlprog.msg.deleteSuccess")),await R()}catch(n){v.error(l("nlprog.msg.deleteFailed")+": "+(n?.message||n))}}function Ce(){w.text="",w.intent=null}function Se(){k.category="naming",k.pattern="",k.examples="",k.confidence=.8}return dt(R),(e,n)=>{const c=d("a-button"),L=d("a-menu-item"),U=d("a-menu"),ze=d("a-dropdown"),Ae=d("a-space"),Y=d("a-statistic"),E=d("a-card"),G=d("a-col"),Qe=d("a-row"),z=d("a-tag"),M=d("a-radio-button"),ge=d("a-radio-group"),Te=d("a-progress"),je=d("a-popconfirm"),Fe=d("a-table"),we=d("a-tab-pane"),He=d("a-tabs"),ye=d("a-textarea"),I=d("a-form-item"),ve=d("a-form"),ne=d("a-modal"),Ne=d("a-select-option"),Oe=d("a-select"),Xe=d("a-alert"),Ze=d("a-input"),et=d("a-input-number"),B=d("a-descriptions-item"),tt=d("a-descriptions");return u(),m("div",null,[b("div",St,[b("div",null,[b("h2",zt,i(e.$t("nlprog.title")),1),b("p",At,i(e.$t("nlprog.subtitle")),1)]),a(Ae,null,{default:t(()=>[a(c,{loading:g.value,onClick:R},{icon:t(()=>[a(y(rt))]),default:t(()=>[p(" "+i(e.$t("nlprog.refresh")),1)]),_:1},8,["loading"]),a(ze,{trigger:["click"]},{overlay:t(()=>[a(U,{onClick:Me},{default:t(()=>[a(L,{key:"analyze"},{default:t(()=>[a(y(it)),p(" "+i(e.$t("nlprog.actions.analyze")),1)]),_:1}),a(L,{key:"translate"},{default:t(()=>[a(y(_e)),p(" "+i(e.$t("nlprog.actions.translate")),1)]),_:1}),a(L,{key:"convention"},{default:t(()=>[a(y(be)),p(" "+i(e.$t("nlprog.actions.convention")),1)]),_:1})]),_:1})]),default:t(()=>[a(c,{type:"primary"},{icon:t(()=>[a(y(st))]),default:t(()=>[p(" "+i(e.$t("nlprog.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),a(Qe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(G,{xs:12,sm:8,lg:5},{default:t(()=>[a(E,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.translations"),value:F.value.translations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(y(_e))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(G,{xs:12,sm:8,lg:5},{default:t(()=>[a(E,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.avgCompleteness"),value:Ue.value,precision:1,suffix:"%","value-style":{color:F.value.translations.avgCompleteness>=.7?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:t(()=>[a(y(ut))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(G,{xs:12,sm:8,lg:5},{default:t(()=>[a(E,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.drafts"),value:F.value.translations.byStatus.draft,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:t(()=>[a(y(ct))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(G,{xs:12,sm:8,lg:5},{default:t(()=>[a(E,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.completed"),value:F.value.translations.byStatus.complete,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(y(pt))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(G,{xs:24,sm:8,lg:4},{default:t(()=>[a(E,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.conventions"),value:F.value.conventions.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(y(be))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),F.value.translations.total>0?(u(),h(E,{key:0,title:e.$t("nlprog.intentCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(Ae,{size:[12,8],wrap:""},{default:t(()=>[(u(!0),m(C,null,j(y(oe),o=>(u(),h(z,{key:o,color:te(o)},{default:t(()=>[p(i(J(o))+": "+i(F.value.translations.byIntent[o]||0),1)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):_("",!0),a(He,{activeKey:ie.value,"onUpdate:activeKey":n[3]||(n[3]=o=>ie.value=o),class:"nlprog-tabs"},{default:t(()=>[a(we,{key:"translations",tab:e.$t("nlprog.tabs.translations")},{default:t(()=>[b("div",Tt,[a(ge,{value:K.value,"onUpdate:value":n[0]||(n[0]=o=>K.value=o),size:"small"},{default:t(()=>[a(M,{value:""},{default:t(()=>[p(i(e.$t("nlprog.filter.allIntents")),1)]),_:1}),(u(!0),m(C,null,j(y(oe),o=>(u(),h(M,{key:o,value:o},{default:t(()=>[p(i(J(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(ge,{value:V.value,"onUpdate:value":n[1]||(n[1]=o=>V.value=o),size:"small","button-style":"solid"},{default:t(()=>[a(M,{value:""},{default:t(()=>[p(i(e.$t("nlprog.filter.allStatuses")),1)]),_:1}),(u(!0),m(C,null,j(y(Le),o=>(u(),h(M,{key:o,value:o},{default:t(()=>[p(i(W(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(Fe,{columns:De.value,"data-source":Ee.value,pagination:{pageSize:20,showTotal:o=>e.$t("nlprog.table.totalSuffix",{n:o})},size:"small",loading:g.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:o,record:f})=>[o.key==="inputText"?(u(),m("span",jt,i(Je(f.inputText,80)),1)):_("",!0),o.key==="intent"?(u(),h(z,{key:1,color:te(f.intent),style:{"font-size":"11px"}},{default:t(()=>[p(i(J(f.intent)),1)]),_:2},1032,["color"])):_("",!0),o.key==="completeness"?(u(),h(Te,{key:2,percent:Math.round(f.completenessScore*100),size:"small","stroke-color":fe(f.completenessScore),format:()=>(f.completenessScore*100).toFixed(0)+"%"},null,8,["percent","stroke-color","format"])):_("",!0),o.key==="status"?(u(),h(z,{key:3,color:$e(f.status)},{default:t(()=>[p(i(W(f.status)),1)]),_:2},1032,["color"])):_("",!0),o.key==="updatedAt"?(u(),m("span",Ft,i(y(ae)(f.updatedAt)),1)):_("",!0),o.key==="action"?(u(),m(C,{key:5},[a(c,{size:"small",type:"link",onClick:A=>We(f)},{default:t(()=>[p(i(e.$t("nlprog.table.actionDetails")),1)]),_:1},8,["onClick"]),a(ze,{trigger:["click"]},{overlay:t(()=>[a(U,{onClick:A=>Ke(f,A.key)},{default:t(()=>[(u(!0),m(C,null,j(y(Le),A=>(u(),h(L,{key:A,disabled:A===f.status},{default:t(()=>[p(i(W(A)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(c,{size:"small",type:"link"},{default:t(()=>[p(i(e.$t("nlprog.table.actionStatusDropdown")),1)]),_:1})]),_:2},1024),a(je,{title:e.$t("nlprog.deleteTranslationConfirm.title"),"ok-text":e.$t("nlprog.deleteTranslationConfirm.ok"),"cancel-text":e.$t("nlprog.deleteTranslationConfirm.cancel"),onConfirm:A=>Ve(f)},{default:t(()=>[a(c,{size:"small",type:"link",danger:""},{default:t(()=>[p(i(e.$t("nlprog.deleteTranslationConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):_("",!0)]),emptyText:t(()=>[b("div",wt,[a(y(_e),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(K.value||V.value?e.$t("nlprog.table.emptyTranslationsFiltered"):e.$t("nlprog.table.emptyTranslations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(we,{key:"conventions",tab:e.$t("nlprog.tabs.conventions")},{default:t(()=>[b("div",Nt,[a(ge,{value:H.value,"onUpdate:value":n[2]||(n[2]=o=>H.value=o),size:"small","button-style":"solid"},{default:t(()=>[a(M,{value:""},{default:t(()=>[p(i(e.$t("nlprog.filter.allCategories")),1)]),_:1}),(u(!0),m(C,null,j(y(xe),o=>(u(),h(M,{key:o,value:o},{default:t(()=>[p(i(de(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(Fe,{columns:Re.value,"data-source":Ie.value,pagination:{pageSize:20,showTotal:o=>e.$t("nlprog.table.totalSuffix",{n:o})},size:"small",loading:g.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:o,record:f})=>[o.key==="category"?(u(),h(z,{key:0,color:Pe(f.category)},{default:t(()=>[p(i(de(f.category)),1)]),_:2},1032,["color"])):_("",!0),o.key==="pattern"?(u(),m("span",Ot,i(f.pattern),1)):_("",!0),o.key==="examples"?(u(),m(C,{key:2},[(u(!0),m(C,null,j(Array.isArray(f.examples)?f.examples.slice(0,3):[],A=>(u(),h(z,{key:A,color:"default",style:{"font-size":"10px","font-family":"monospace",margin:"1px"}},{default:t(()=>[p(i(A),1)]),_:2},1024))),128)),!Array.isArray(f.examples)||f.examples.length===0?(u(),m("span",Lt,"—")):_("",!0)],64)):_("",!0),o.key==="confidence"?(u(),m("span",{key:3,style:ft({color:fe(f.confidence),fontWeight:500})},i((f.confidence*100).toFixed(0))+"% ",5)):_("",!0),o.key==="createdAt"?(u(),m("span",Dt,i(y(ae)(f.createdAt)),1)):_("",!0),o.key==="action"?(u(),h(je,{key:5,title:e.$t("nlprog.deleteConventionConfirm.title"),"ok-text":e.$t("nlprog.deleteConventionConfirm.ok"),"cancel-text":e.$t("nlprog.deleteConventionConfirm.cancel"),onConfirm:A=>Ge(f)},{default:t(()=>[a(c,{size:"small",type:"link",danger:""},{default:t(()=>[p(i(e.$t("nlprog.deleteConventionConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):_("",!0)]),emptyText:t(()=>[b("div",Rt,[a(y(be),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.$t("nlprog.table.emptyConventions")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(ne,{open:ue.value,"onUpdate:open":n[5]||(n[5]=o=>ue.value=o),title:e.$t("nlprog.analyze_modal.title"),"confirm-loading":S.value,width:600,"ok-text":e.$t("nlprog.analyze_modal.ok"),"cancel-text":e.$t("nlprog.analyze_modal.cancel"),onOk:Be},{default:t(()=>[a(ve,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:e.$t("nlprog.analyze_modal.textLabel"),required:""},{default:t(()=>[a(ye,{value:pe.text,"onUpdate:value":n[4]||(n[4]=o=>pe.text=o),placeholder:e.$t("nlprog.analyze_modal.textPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),N.value||O.value||T.value?(u(),h(E,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:t(()=>[N.value?(u(),m("div",Ut,[b("div",Et,i(e.$t("nlprog.analyze_modal.intent")),1),a(z,{color:te(N.value.intent),style:{"margin-right":"6px"}},{default:t(()=>[p(i(J(N.value.intent)),1)]),_:1},8,["color"]),b("span",It,i(e.$t("nlprog.analyze_modal.confidenceLine",{pct:(N.value.confidence*100).toFixed(0)})),1)])):_("",!0),O.value?(u(),m("div",Pt,[b("div",Jt,i(e.$t("nlprog.analyze_modal.entities",{n:O.value.count})),1),O.value.entities.length?_("",!0):(u(),m("span",Mt,i(e.$t("nlprog.analyze_modal.notDetected")),1)),(u(!0),m(C,null,j(O.value.entities,(o,f)=>(u(),h(z,{key:f,color:"purple",style:{"font-family":"monospace","font-size":"11px",margin:"1px"}},{default:t(()=>[p(" ["+i(o.type)+"] "+i(o.value),1)]),_:2},1024))),128))])):_("",!0),T.value?(u(),m("div",Bt,[b("div",qt,i(e.$t("nlprog.analyze_modal.stack")),1),T.value.detected.length?(u(),m(C,{key:1},[a(z,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[p(i(e.$t("nlprog.analyze_modal.stackPrimary",{name:T.value.primary})),1)]),_:1}),(u(!0),m(C,null,j(T.value.detected.filter(o=>o!==T.value.primary),o=>(u(),h(z,{key:o,color:"default",style:{"font-family":"monospace","font-size":"11px"}},{default:t(()=>[p(i(o),1)]),_:2},1024))),128))],64)):(u(),m("span",Kt,i(e.$t("nlprog.analyze_modal.notDetected")),1))])):_("",!0)]),_:1})):_("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ne,{open:X.value,"onUpdate:open":n[8]||(n[8]=o=>X.value=o),title:e.$t("nlprog.translate_modal.title"),"confirm-loading":le.value,width:540,"ok-text":e.$t("nlprog.translate_modal.ok"),"cancel-text":e.$t("nlprog.translate_modal.cancel"),onOk:qe,onCancel:Ce},{default:t(()=>[a(ve,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:e.$t("nlprog.translate_modal.textLabel"),required:""},{default:t(()=>[a(ye,{value:w.text,"onUpdate:value":n[6]||(n[6]=o=>w.text=o),placeholder:e.$t("nlprog.translate_modal.textPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(I,{label:e.$t("nlprog.translate_modal.intentLabel")},{default:t(()=>[a(Oe,{value:w.intent,"onUpdate:value":n[7]||(n[7]=o=>w.intent=o),"allow-clear":"",placeholder:e.$t("nlprog.translate_modal.intentPlaceholder")},{default:t(()=>[(u(!0),m(C,null,j(y(oe),o=>(u(),h(Ne,{key:o,value:o},{default:t(()=>[p(i(J(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),ee.value.noDb?(u(),h(Xe,{key:0,type:"warning","show-icon":"",message:e.$t("nlprog.translate_modal.noDbMessage"),description:e.$t("nlprog.translate_modal.noDbDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])):_("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ne,{open:Z.value,"onUpdate:open":n[13]||(n[13]=o=>Z.value=o),title:e.$t("nlprog.convention_modal.title"),"confirm-loading":re.value,width:540,"ok-text":e.$t("nlprog.convention_modal.ok"),"cancel-text":e.$t("nlprog.convention_modal.cancel"),onOk:Ye,onCancel:Se},{default:t(()=>[a(ve,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:e.$t("nlprog.convention_modal.categoryLabel"),required:""},{default:t(()=>[a(Oe,{value:k.category,"onUpdate:value":n[9]||(n[9]=o=>k.category=o)},{default:t(()=>[(u(!0),m(C,null,j(y(xe),o=>(u(),h(Ne,{key:o,value:o},{default:t(()=>[p(i(de(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),a(I,{label:e.$t("nlprog.convention_modal.patternLabel"),required:""},{default:t(()=>[a(Ze,{value:k.pattern,"onUpdate:value":n[10]||(n[10]=o=>k.pattern=o),placeholder:e.$t("nlprog.convention_modal.patternPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(I,{label:e.$t("nlprog.convention_modal.examplesLabel")},{default:t(()=>[a(ye,{value:k.examples,"onUpdate:value":n[11]||(n[11]=o=>k.examples=o),placeholder:e.$t("nlprog.convention_modal.examplesPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(I,{label:e.$t("nlprog.convention_modal.confidenceLabel")},{default:t(()=>[a(et,{value:k.confidence,"onUpdate:value":n[12]||(n[12]=o=>k.confidence=o),min:0,max:1,step:.05,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ne,{open:ce.value,"onUpdate:open":n[14]||(n[14]=o=>ce.value=o),title:e.$t("nlprog.details.title",{id:$.value?.id?.slice(0,8)||""}),width:720,footer:null},{default:t(()=>[$.value?(u(),m("div",Vt,[a(tt,{column:2,size:"small",bordered:""},{default:t(()=>[a(B,{label:e.$t("nlprog.details.intent")},{default:t(()=>[a(z,{color:te($.value.intent)},{default:t(()=>[p(i(J($.value.intent)),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.status")},{default:t(()=>[a(z,{color:$e($.value.status)},{default:t(()=>[p(i(W($.value.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.completeness"),span:2},{default:t(()=>[a(Te,{percent:Math.round($.value.completenessScore*100),"stroke-color":fe($.value.completenessScore),size:"small"},null,8,["percent","stroke-color"])]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.createdAt")},{default:t(()=>[p(i(y(ae)($.value.createdAt)),1)]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.updatedAt")},{default:t(()=>[p(i(y(ae)($.value.updatedAt)),1)]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.inputText"),span:2},{default:t(()=>[b("span",Wt,i($.value.inputText),1)]),_:1},8,["label"])]),_:1}),b("div",Yt,[b("h4",Gt,i(e.$t("nlprog.details.entities")),1),b("pre",Qt,i(me($.value.entities)),1)]),b("div",null,[b("h4",Ht,i(e.$t("nlprog.details.techStack")),1),b("pre",Xt,i(me($.value.techStack)),1)]),$.value.spec?(u(),m("div",Zt,[b("h4",en,i(e.$t("nlprog.details.spec")),1),b("pre",tn,i(me($.value.spec)),1)])):_("",!0)])):_("",!0)]),_:1},8,["open","title"])])}}},sn=nt(nn,[["__scopeId","data-v-55209f60"]]);export{sn as default};
|
|
1
|
+
import{_ as nt,u as at,b as ot,d as v}from"./index-BAy0ks7N.js";import{s as lt}from"./community-parser-CO25nZFt.js";import{R as rt,aq as st,q as it,r as _e,l as be,aW as ut,ah as ct,f as pt}from"./icons-DY9VpXfa.js";import{o as dt,M as m,R as b,P as i,c as a,N as t,Q as h,S as _,K as d,r as x,L as u,O as p,u as y,F as C,Y as j,_ as ft,f as Q,a as ke}from"./vendor-M5lGV-wr.js";function P(s){const r=lt(s);if(!r)return null;try{return JSON.parse(r)}catch{}const l=r.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!l)return null;try{return JSON.parse(l[0])}catch{return null}}const oe=Object.freeze(["create_component","add_feature","fix_bug","refactor","add_api","add_test","update_style","configure","general"]),Le=Object.freeze(["draft","complete","refined"]),xe=Object.freeze(["naming","architecture","testing","style","imports","components"]);function D(s,r=0){return typeof s=="number"&&Number.isFinite(s)?s:r}function q(s,r){if(s==null)return r;if(typeof s!="string")return s;try{return JSON.parse(s)}catch{return s}}function mt(s){const r=P(s);return!r||typeof r!="object"||Array.isArray(r)?null:{intent:String(r.intent||"general"),confidence:D(r.confidence,0)}}function gt(s){const r=P(s);if(!r||typeof r!="object"||Array.isArray(r))return null;const l=Array.isArray(r.entities)?r.entities.map(g=>g&&typeof g=="object"?{type:String(g.type||""),value:String(g.value||"")}:null).filter(Boolean):[];return{entities:l,count:D(r.count,l.length)}}function yt(s){const r=P(s);if(!r||typeof r!="object"||Array.isArray(r))return null;const l=Array.isArray(r.detected)?r.detected.filter(g=>typeof g=="string"):[];return{detected:l,primary:r.primary?String(r.primary):l[0]||null}}function vt(s,r=0){if(!s||typeof s!="object")return null;const l=s.id||"";return l?{key:l,id:l,inputText:s.inputText??s.input_text??"",intent:String(s.intent||"general"),entities:q(s.entities,[]),techStack:q(s.techStack??s.tech_stack,[]),spec:q(s.spec,null),completenessScore:D(s.completenessScore??s.completeness_score,0),ambiguities:q(s.ambiguities,[]),status:String(s.status||"draft").toLowerCase(),createdAt:s.createdAt??s.created_at??null,updatedAt:s.updatedAt??s.updated_at??null,_idx:r}:null}function _t(s){const r=P(s);return Array.isArray(r)?r.map(vt).filter(Boolean):[]}function bt(s){const r=P(s);return!r||typeof r!="object"||Array.isArray(r)||r.translationId===void 0?null:{translated:!!r.translated,translationId:r.translationId,intent:String(r.intent||""),completeness:D(r.completeness,0)}}function kt(s){if(!s)return{noDb:!1,error:""};const r=/No ChainlessChain project database/i.test(s)||/Cannot read properties of undefined \(reading ['"]prepare['"]\)/i.test(s)||/TypeError.*prepare/i.test(s),l=s.match(/Error:\s*(No ChainlessChain project database[^\r\n]*)/i);if(l)return{noDb:!0,error:l[1].trim()};const g=s.match(/TypeError:\s*(.+?)(?:\r?\n|$)/i);return{noDb:r,error:g?g[1].trim():""}}function xt(s,r=0){if(!s||typeof s!="object")return null;const l=s.id||"";return l?{key:l,id:l,category:String(s.category||""),pattern:String(s.pattern||""),examples:q(s.examples,[]),confidence:D(s.confidence,0),sourceFiles:q(s.sourceFiles??s.source_files,[]),createdAt:s.createdAt??s.created_at??null,_idx:r}:null}function ht(s){const r=P(s);return Array.isArray(r)?r.map(xt).filter(Boolean):[]}const $t={translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}};function Ct(s){const r=JSON.parse(JSON.stringify($t));for(const g of oe)r.translations.byIntent[g]=0;for(const g of xe)r.conventions.byCategory[g]=0;const l=P(s);if(!l||typeof l!="object"||Array.isArray(l))return r;if(l.translations&&typeof l.translations=="object"){if(r.translations.total=D(l.translations.total,0),r.translations.avgCompleteness=D(l.translations.avgCompleteness??l.translations.avg_completeness,0),l.translations.byIntent&&typeof l.translations.byIntent=="object")for(const[g,S]of Object.entries(l.translations.byIntent))typeof S=="number"&&Number.isFinite(S)&&(r.translations.byIntent[g]=S);if(l.translations.byStatus&&typeof l.translations.byStatus=="object")for(const g of Object.keys(r.translations.byStatus))r.translations.byStatus[g]=D(l.translations.byStatus[g],0)}if(l.conventions&&typeof l.conventions=="object"&&(r.conventions.total=D(l.conventions.total,0),l.conventions.byCategory&&typeof l.conventions.byCategory=="object"))for(const[g,S]of Object.entries(l.conventions.byCategory))typeof S=="number"&&Number.isFinite(S)&&(r.conventions.byCategory[g]=S);return r}function ae(s){if(s==null||s==="")return"—";const r=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(r.getTime())?String(s):r.toLocaleString("zh-CN",{hour12:!1})}const St={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},zt={class:"page-title"},At={class:"page-sub"},Tt={class:"filter-bar"},jt={key:0,style:{color:"var(--text-primary)"}},Ft={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},wt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Nt={class:"filter-bar"},Ot={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Lt={key:0,style:{color:"var(--text-muted)"}},Dt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Rt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Et={key:0,style:{"margin-bottom":"12px"}},It={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},Ut={style:{color:"var(--text-secondary)","font-size":"12px"}},Pt={key:1,style:{"margin-bottom":"12px"}},Jt={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},Mt={key:0,style:{color:"var(--text-muted)"}},Bt={key:2},qt={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},Kt={key:0,style:{color:"var(--text-muted)"}},Vt={key:0,style:{"padding-top":"8px"}},Wt={style:{"white-space":"pre-wrap",color:"var(--text-primary)"}},Yt={style:{"margin-top":"16px"}},Gt={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Qt={class:"json-block"},Ht={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Xt={class:"json-block"},Zt={key:0},en={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},tn={class:"json-block"},nn={__name:"NLProgramming",setup(s){const r=at(),{t:l}=ot(),g=x(!1),S=x(!1),le=x(!1),re=x(!1),he=x([]),se=x([]),F=x({translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}}),ie=x("translations"),K=x(""),V=x(""),H=x(""),ue=x(!1),X=x(!1),Z=x(!1),ce=x(!1),pe=ke({text:""}),w=ke({text:"",intent:null}),k=ke({category:"naming",pattern:"",examples:"",confidence:.8}),N=x(null),O=x(null),T=x(null),ee=x({noDb:!1,error:""}),$=x(null),De=Q(()=>[{title:l("nlprog.translationCols.inputText"),key:"inputText"},{title:l("nlprog.translationCols.intent"),key:"intent",width:"140px"},{title:l("nlprog.translationCols.completeness"),key:"completeness",width:"160px"},{title:l("nlprog.translationCols.status"),key:"status",width:"100px"},{title:l("nlprog.translationCols.updatedAt"),key:"updatedAt",width:"160px"},{title:l("nlprog.translationCols.action"),key:"action",width:"210px"}]),Re=Q(()=>[{title:l("nlprog.conventionCols.category"),key:"category",width:"120px"},{title:l("nlprog.conventionCols.pattern"),key:"pattern"},{title:l("nlprog.conventionCols.examples"),key:"examples",width:"220px"},{title:l("nlprog.conventionCols.confidence"),key:"confidence",width:"90px"},{title:l("nlprog.conventionCols.createdAt"),key:"createdAt",width:"160px"},{title:l("nlprog.conventionCols.action"),key:"action",width:"90px"}]),Ee=Q(()=>F.value.translations.avgCompleteness*100),Ie=Q(()=>{let e=he.value;return K.value&&(e=e.filter(n=>n.intent===K.value)),V.value&&(e=e.filter(n=>n.status===V.value)),e}),Ue=Q(()=>H.value?se.value.filter(e=>e.category===H.value):se.value);function J(e){const n=`nlprog.intentLabels.${e}`,c=l(n);return c===n?e:c}function te(e){return{create_component:"blue",add_feature:"green",fix_bug:"red",refactor:"purple",add_api:"cyan",add_test:"orange",update_style:"magenta",configure:"gold",general:"default"}[e]||"default"}function W(e){const n=`nlprog.statusLabels.${e}`,c=l(n);return c===n?e:c}function $e(e){return{draft:"default",complete:"green",refined:"cyan"}[e]||"default"}function de(e){const n=`nlprog.categoryLabels.${e}`,c=l(n);return c===n?e:c}function Pe(e){return{naming:"blue",architecture:"purple",testing:"cyan",style:"magenta",imports:"orange",components:"green"}[e]||"default"}function fe(e){return e>=.7?"#52c41a":e>=.4?"#faad14":"#ff4d4f"}function Je(e,n){return e?e.length>n?e.slice(0,n)+"...":e:""}function me(e){if(e==null)return"—";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Me({key:e}){e==="analyze"?(N.value=null,O.value=null,T.value=null,ue.value=!0):e==="translate"?(ee.value={noDb:!1,error:""},X.value=!0):e==="convention"&&(Z.value=!0)}async function R(){g.value=!0;try{const[e,n,c]=await Promise.all([r.execute("nlprog list --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("nlprog conventions --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("nlprog stats --json",8e3).catch(()=>({output:""}))]);he.value=_t(e.output),se.value=ht(n.output),F.value=Ct(c.output)}catch(e){v.error(l("nlprog.msg.loadFailed")+": "+(e?.message||e))}finally{g.value=!1}}async function Be(){const e=pe.text.trim();if(!e){v.warning(l("nlprog.msg.textEmpty"));return}S.value=!0,N.value=null,O.value=null,T.value=null;try{const n=e.replace(/"/g,'\\"'),[c,L,E]=await Promise.all([r.execute(`nlprog classify "${n}" --json`,8e3).catch(()=>({output:""})),r.execute(`nlprog extract "${n}" --json`,8e3).catch(()=>({output:""})),r.execute(`nlprog detect-stack "${n}" --json`,8e3).catch(()=>({output:""}))]);N.value=mt(c.output),O.value=gt(L.output),T.value=yt(E.output),!N.value&&!O.value&&!T.value&&v.error(l("nlprog.msg.analyzeFailed"))}catch(n){v.error(l("nlprog.msg.analyzeFailed")+": "+(n?.message||n))}finally{S.value=!1}}async function qe(){const e=w.text.trim();if(!e){v.warning(l("nlprog.msg.translateTextEmpty"));return}le.value=!0,ee.value={noDb:!1,error:""};try{const n=[`nlprog translate "${e.replace(/"/g,'\\"')}"`];w.intent&&n.push(`--intent ${w.intent}`),n.push("--json");const{output:c}=await r.execute(n.join(" "),12e3),L=kt(c);if(L.noDb){ee.value=L;return}const E=bt(c);if(!E){v.error(l("nlprog.msg.translateFailed")+": "+c.slice(0,120));return}v.success(l("nlprog.msg.translateSuccess",{pct:(E.completeness*100).toFixed(0)})),X.value=!1,Ce(),await R()}catch(n){v.error(l("nlprog.msg.translateFailed")+": "+(n?.message||n))}finally{le.value=!1}}async function Ke(e,n){if(n!==e.status)try{const{output:c}=await r.execute(`nlprog status ${e.id} ${n} --json`,8e3);if(/error|invalid/i.test(c)&&!/"updated"/.test(c)){v.error(l("nlprog.msg.transitionFailed")+": "+c.slice(0,120));return}v.success(l("nlprog.msg.transitionSuccess",{label:W(n)})),await R()}catch(c){v.error(l("nlprog.msg.transitionFailed")+": "+(c?.message||c))}}async function Ve(e){try{const{output:n}=await r.execute(`nlprog remove ${e.id} --json`,8e3);if(/error/i.test(n)&&!/"removed"/.test(n)){v.error(l("nlprog.msg.deleteFailed")+": "+n.slice(0,120));return}v.success(l("nlprog.msg.deleteSuccess")),await R()}catch(n){v.error(l("nlprog.msg.deleteFailed")+": "+(n?.message||n))}}function We(e){$.value=e,ce.value=!0}async function Ye(){const e=k.pattern.trim();if(!e){v.warning(l("nlprog.msg.patternEmpty"));return}if(k.examples.trim())try{JSON.parse(k.examples)}catch{v.warning(l("nlprog.msg.examplesBadJson"));return}re.value=!0;try{const n=[`nlprog convention-add --category ${k.category}`];n.push(`--pattern "${e.replace(/"/g,'\\"')}"`),k.examples.trim()&&n.push(`--examples '${k.examples.trim().replace(/'/g,"'\\''")}'`),k.confidence!=null&&n.push(`--confidence ${k.confidence}`),n.push("--json");const{output:c}=await r.execute(n.join(" "),1e4);if(/error|invalid|失败/i.test(c)&&!/"added"/.test(c)){v.error(l("nlprog.msg.addFailed")+": "+c.slice(0,120));return}v.success(l("nlprog.msg.addSuccess")),Z.value=!1,Se(),ie.value="conventions",await R()}catch(n){v.error(l("nlprog.msg.addFailed")+": "+(n?.message||n))}finally{re.value=!1}}async function Ge(e){try{const{output:n}=await r.execute(`nlprog convention-remove ${e.id} --json`,8e3);if(/error/i.test(n)&&!/"removed"/.test(n)){v.error(l("nlprog.msg.deleteFailed")+": "+n.slice(0,120));return}v.success(l("nlprog.msg.deleteSuccess")),await R()}catch(n){v.error(l("nlprog.msg.deleteFailed")+": "+(n?.message||n))}}function Ce(){w.text="",w.intent=null}function Se(){k.category="naming",k.pattern="",k.examples="",k.confidence=.8}return dt(R),(e,n)=>{const c=d("a-button"),L=d("a-menu-item"),E=d("a-menu"),ze=d("a-dropdown"),Ae=d("a-space"),Y=d("a-statistic"),I=d("a-card"),G=d("a-col"),Qe=d("a-row"),z=d("a-tag"),M=d("a-radio-button"),ge=d("a-radio-group"),Te=d("a-progress"),je=d("a-popconfirm"),Fe=d("a-table"),we=d("a-tab-pane"),He=d("a-tabs"),ye=d("a-textarea"),U=d("a-form-item"),ve=d("a-form"),ne=d("a-modal"),Ne=d("a-select-option"),Oe=d("a-select"),Xe=d("a-alert"),Ze=d("a-input"),et=d("a-input-number"),B=d("a-descriptions-item"),tt=d("a-descriptions");return u(),m("div",null,[b("div",St,[b("div",null,[b("h2",zt,i(e.$t("nlprog.title")),1),b("p",At,i(e.$t("nlprog.subtitle")),1)]),a(Ae,null,{default:t(()=>[a(c,{loading:g.value,onClick:R},{icon:t(()=>[a(y(rt))]),default:t(()=>[p(" "+i(e.$t("nlprog.refresh")),1)]),_:1},8,["loading"]),a(ze,{trigger:["click"]},{overlay:t(()=>[a(E,{onClick:Me},{default:t(()=>[a(L,{key:"analyze"},{default:t(()=>[a(y(it)),p(" "+i(e.$t("nlprog.actions.analyze")),1)]),_:1}),a(L,{key:"translate"},{default:t(()=>[a(y(_e)),p(" "+i(e.$t("nlprog.actions.translate")),1)]),_:1}),a(L,{key:"convention"},{default:t(()=>[a(y(be)),p(" "+i(e.$t("nlprog.actions.convention")),1)]),_:1})]),_:1})]),default:t(()=>[a(c,{type:"primary"},{icon:t(()=>[a(y(st))]),default:t(()=>[p(" "+i(e.$t("nlprog.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),a(Qe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(G,{xs:12,sm:8,lg:5},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.translations"),value:F.value.translations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(y(_e))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(G,{xs:12,sm:8,lg:5},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.avgCompleteness"),value:Ee.value,precision:1,suffix:"%","value-style":{color:F.value.translations.avgCompleteness>=.7?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:t(()=>[a(y(ut))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(G,{xs:12,sm:8,lg:5},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.drafts"),value:F.value.translations.byStatus.draft,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:t(()=>[a(y(ct))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(G,{xs:12,sm:8,lg:5},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.completed"),value:F.value.translations.byStatus.complete,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(y(pt))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(G,{xs:24,sm:8,lg:4},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(Y,{title:e.$t("nlprog.stats.conventions"),value:F.value.conventions.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(y(be))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),F.value.translations.total>0?(u(),h(I,{key:0,title:e.$t("nlprog.intentCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(Ae,{size:[12,8],wrap:""},{default:t(()=>[(u(!0),m(C,null,j(y(oe),o=>(u(),h(z,{key:o,color:te(o)},{default:t(()=>[p(i(J(o))+": "+i(F.value.translations.byIntent[o]||0),1)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):_("",!0),a(He,{activeKey:ie.value,"onUpdate:activeKey":n[3]||(n[3]=o=>ie.value=o),class:"nlprog-tabs"},{default:t(()=>[a(we,{key:"translations",tab:e.$t("nlprog.tabs.translations")},{default:t(()=>[b("div",Tt,[a(ge,{value:K.value,"onUpdate:value":n[0]||(n[0]=o=>K.value=o),size:"small"},{default:t(()=>[a(M,{value:""},{default:t(()=>[p(i(e.$t("nlprog.filter.allIntents")),1)]),_:1}),(u(!0),m(C,null,j(y(oe),o=>(u(),h(M,{key:o,value:o},{default:t(()=>[p(i(J(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(ge,{value:V.value,"onUpdate:value":n[1]||(n[1]=o=>V.value=o),size:"small","button-style":"solid"},{default:t(()=>[a(M,{value:""},{default:t(()=>[p(i(e.$t("nlprog.filter.allStatuses")),1)]),_:1}),(u(!0),m(C,null,j(y(Le),o=>(u(),h(M,{key:o,value:o},{default:t(()=>[p(i(W(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(Fe,{columns:De.value,"data-source":Ie.value,pagination:{pageSize:20,showTotal:o=>e.$t("nlprog.table.totalSuffix",{n:o})},size:"small",loading:g.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:o,record:f})=>[o.key==="inputText"?(u(),m("span",jt,i(Je(f.inputText,80)),1)):_("",!0),o.key==="intent"?(u(),h(z,{key:1,color:te(f.intent),style:{"font-size":"11px"}},{default:t(()=>[p(i(J(f.intent)),1)]),_:2},1032,["color"])):_("",!0),o.key==="completeness"?(u(),h(Te,{key:2,percent:Math.round(f.completenessScore*100),size:"small","stroke-color":fe(f.completenessScore),format:()=>(f.completenessScore*100).toFixed(0)+"%"},null,8,["percent","stroke-color","format"])):_("",!0),o.key==="status"?(u(),h(z,{key:3,color:$e(f.status)},{default:t(()=>[p(i(W(f.status)),1)]),_:2},1032,["color"])):_("",!0),o.key==="updatedAt"?(u(),m("span",Ft,i(y(ae)(f.updatedAt)),1)):_("",!0),o.key==="action"?(u(),m(C,{key:5},[a(c,{size:"small",type:"link",onClick:A=>We(f)},{default:t(()=>[p(i(e.$t("nlprog.table.actionDetails")),1)]),_:1},8,["onClick"]),a(ze,{trigger:["click"]},{overlay:t(()=>[a(E,{onClick:A=>Ke(f,A.key)},{default:t(()=>[(u(!0),m(C,null,j(y(Le),A=>(u(),h(L,{key:A,disabled:A===f.status},{default:t(()=>[p(i(W(A)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(c,{size:"small",type:"link"},{default:t(()=>[p(i(e.$t("nlprog.table.actionStatusDropdown")),1)]),_:1})]),_:2},1024),a(je,{title:e.$t("nlprog.deleteTranslationConfirm.title"),"ok-text":e.$t("nlprog.deleteTranslationConfirm.ok"),"cancel-text":e.$t("nlprog.deleteTranslationConfirm.cancel"),onConfirm:A=>Ve(f)},{default:t(()=>[a(c,{size:"small",type:"link",danger:""},{default:t(()=>[p(i(e.$t("nlprog.deleteTranslationConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):_("",!0)]),emptyText:t(()=>[b("div",wt,[a(y(_e),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(K.value||V.value?e.$t("nlprog.table.emptyTranslationsFiltered"):e.$t("nlprog.table.emptyTranslations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(we,{key:"conventions",tab:e.$t("nlprog.tabs.conventions")},{default:t(()=>[b("div",Nt,[a(ge,{value:H.value,"onUpdate:value":n[2]||(n[2]=o=>H.value=o),size:"small","button-style":"solid"},{default:t(()=>[a(M,{value:""},{default:t(()=>[p(i(e.$t("nlprog.filter.allCategories")),1)]),_:1}),(u(!0),m(C,null,j(y(xe),o=>(u(),h(M,{key:o,value:o},{default:t(()=>[p(i(de(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(Fe,{columns:Re.value,"data-source":Ue.value,pagination:{pageSize:20,showTotal:o=>e.$t("nlprog.table.totalSuffix",{n:o})},size:"small",loading:g.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:o,record:f})=>[o.key==="category"?(u(),h(z,{key:0,color:Pe(f.category)},{default:t(()=>[p(i(de(f.category)),1)]),_:2},1032,["color"])):_("",!0),o.key==="pattern"?(u(),m("span",Ot,i(f.pattern),1)):_("",!0),o.key==="examples"?(u(),m(C,{key:2},[(u(!0),m(C,null,j(Array.isArray(f.examples)?f.examples.slice(0,3):[],A=>(u(),h(z,{key:A,color:"default",style:{"font-size":"10px","font-family":"monospace",margin:"1px"}},{default:t(()=>[p(i(A),1)]),_:2},1024))),128)),!Array.isArray(f.examples)||f.examples.length===0?(u(),m("span",Lt,"—")):_("",!0)],64)):_("",!0),o.key==="confidence"?(u(),m("span",{key:3,style:ft({color:fe(f.confidence),fontWeight:500})},i((f.confidence*100).toFixed(0))+"% ",5)):_("",!0),o.key==="createdAt"?(u(),m("span",Dt,i(y(ae)(f.createdAt)),1)):_("",!0),o.key==="action"?(u(),h(je,{key:5,title:e.$t("nlprog.deleteConventionConfirm.title"),"ok-text":e.$t("nlprog.deleteConventionConfirm.ok"),"cancel-text":e.$t("nlprog.deleteConventionConfirm.cancel"),onConfirm:A=>Ge(f)},{default:t(()=>[a(c,{size:"small",type:"link",danger:""},{default:t(()=>[p(i(e.$t("nlprog.deleteConventionConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):_("",!0)]),emptyText:t(()=>[b("div",Rt,[a(y(be),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.$t("nlprog.table.emptyConventions")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(ne,{open:ue.value,"onUpdate:open":n[5]||(n[5]=o=>ue.value=o),title:e.$t("nlprog.analyze_modal.title"),"confirm-loading":S.value,width:600,"ok-text":e.$t("nlprog.analyze_modal.ok"),"cancel-text":e.$t("nlprog.analyze_modal.cancel"),onOk:Be},{default:t(()=>[a(ve,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(U,{label:e.$t("nlprog.analyze_modal.textLabel"),required:""},{default:t(()=>[a(ye,{value:pe.text,"onUpdate:value":n[4]||(n[4]=o=>pe.text=o),placeholder:e.$t("nlprog.analyze_modal.textPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),N.value||O.value||T.value?(u(),h(I,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:t(()=>[N.value?(u(),m("div",Et,[b("div",It,i(e.$t("nlprog.analyze_modal.intent")),1),a(z,{color:te(N.value.intent),style:{"margin-right":"6px"}},{default:t(()=>[p(i(J(N.value.intent)),1)]),_:1},8,["color"]),b("span",Ut,i(e.$t("nlprog.analyze_modal.confidenceLine",{pct:(N.value.confidence*100).toFixed(0)})),1)])):_("",!0),O.value?(u(),m("div",Pt,[b("div",Jt,i(e.$t("nlprog.analyze_modal.entities",{n:O.value.count})),1),O.value.entities.length?_("",!0):(u(),m("span",Mt,i(e.$t("nlprog.analyze_modal.notDetected")),1)),(u(!0),m(C,null,j(O.value.entities,(o,f)=>(u(),h(z,{key:f,color:"purple",style:{"font-family":"monospace","font-size":"11px",margin:"1px"}},{default:t(()=>[p(" ["+i(o.type)+"] "+i(o.value),1)]),_:2},1024))),128))])):_("",!0),T.value?(u(),m("div",Bt,[b("div",qt,i(e.$t("nlprog.analyze_modal.stack")),1),T.value.detected.length?(u(),m(C,{key:1},[a(z,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[p(i(e.$t("nlprog.analyze_modal.stackPrimary",{name:T.value.primary})),1)]),_:1}),(u(!0),m(C,null,j(T.value.detected.filter(o=>o!==T.value.primary),o=>(u(),h(z,{key:o,color:"default",style:{"font-family":"monospace","font-size":"11px"}},{default:t(()=>[p(i(o),1)]),_:2},1024))),128))],64)):(u(),m("span",Kt,i(e.$t("nlprog.analyze_modal.notDetected")),1))])):_("",!0)]),_:1})):_("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ne,{open:X.value,"onUpdate:open":n[8]||(n[8]=o=>X.value=o),title:e.$t("nlprog.translate_modal.title"),"confirm-loading":le.value,width:540,"ok-text":e.$t("nlprog.translate_modal.ok"),"cancel-text":e.$t("nlprog.translate_modal.cancel"),onOk:qe,onCancel:Ce},{default:t(()=>[a(ve,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(U,{label:e.$t("nlprog.translate_modal.textLabel"),required:""},{default:t(()=>[a(ye,{value:w.text,"onUpdate:value":n[6]||(n[6]=o=>w.text=o),placeholder:e.$t("nlprog.translate_modal.textPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.translate_modal.intentLabel")},{default:t(()=>[a(Oe,{value:w.intent,"onUpdate:value":n[7]||(n[7]=o=>w.intent=o),"allow-clear":"",placeholder:e.$t("nlprog.translate_modal.intentPlaceholder")},{default:t(()=>[(u(!0),m(C,null,j(y(oe),o=>(u(),h(Ne,{key:o,value:o},{default:t(()=>[p(i(J(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),ee.value.noDb?(u(),h(Xe,{key:0,type:"warning","show-icon":"",message:e.$t("nlprog.translate_modal.noDbMessage"),description:e.$t("nlprog.translate_modal.noDbDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])):_("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ne,{open:Z.value,"onUpdate:open":n[13]||(n[13]=o=>Z.value=o),title:e.$t("nlprog.convention_modal.title"),"confirm-loading":re.value,width:540,"ok-text":e.$t("nlprog.convention_modal.ok"),"cancel-text":e.$t("nlprog.convention_modal.cancel"),onOk:Ye,onCancel:Se},{default:t(()=>[a(ve,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(U,{label:e.$t("nlprog.convention_modal.categoryLabel"),required:""},{default:t(()=>[a(Oe,{value:k.category,"onUpdate:value":n[9]||(n[9]=o=>k.category=o)},{default:t(()=>[(u(!0),m(C,null,j(y(xe),o=>(u(),h(Ne,{key:o,value:o},{default:t(()=>[p(i(de(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.convention_modal.patternLabel"),required:""},{default:t(()=>[a(Ze,{value:k.pattern,"onUpdate:value":n[10]||(n[10]=o=>k.pattern=o),placeholder:e.$t("nlprog.convention_modal.patternPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.convention_modal.examplesLabel")},{default:t(()=>[a(ye,{value:k.examples,"onUpdate:value":n[11]||(n[11]=o=>k.examples=o),placeholder:e.$t("nlprog.convention_modal.examplesPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.convention_modal.confidenceLabel")},{default:t(()=>[a(et,{value:k.confidence,"onUpdate:value":n[12]||(n[12]=o=>k.confidence=o),min:0,max:1,step:.05,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ne,{open:ce.value,"onUpdate:open":n[14]||(n[14]=o=>ce.value=o),title:e.$t("nlprog.details.title",{id:$.value?.id?.slice(0,8)||""}),width:720,footer:null},{default:t(()=>[$.value?(u(),m("div",Vt,[a(tt,{column:2,size:"small",bordered:""},{default:t(()=>[a(B,{label:e.$t("nlprog.details.intent")},{default:t(()=>[a(z,{color:te($.value.intent)},{default:t(()=>[p(i(J($.value.intent)),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.status")},{default:t(()=>[a(z,{color:$e($.value.status)},{default:t(()=>[p(i(W($.value.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.completeness"),span:2},{default:t(()=>[a(Te,{percent:Math.round($.value.completenessScore*100),"stroke-color":fe($.value.completenessScore),size:"small"},null,8,["percent","stroke-color"])]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.createdAt")},{default:t(()=>[p(i(y(ae)($.value.createdAt)),1)]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.updatedAt")},{default:t(()=>[p(i(y(ae)($.value.updatedAt)),1)]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.inputText"),span:2},{default:t(()=>[b("span",Wt,i($.value.inputText),1)]),_:1},8,["label"])]),_:1}),b("div",Yt,[b("h4",Gt,i(e.$t("nlprog.details.entities")),1),b("pre",Qt,i(me($.value.entities)),1)]),b("div",null,[b("h4",Ht,i(e.$t("nlprog.details.techStack")),1),b("pre",Xt,i(me($.value.techStack)),1)]),$.value.spec?(u(),m("div",Zt,[b("h4",en,i(e.$t("nlprog.details.spec")),1),b("pre",tn,i(me($.value.spec)),1)])):_("",!0)])):_("",!0)]),_:1},8,["open","title"])])}}},sn=nt(nn,[["__scopeId","data-v-55209f60"]]);export{sn as default};
|