chainlesschain 0.162.42 → 0.162.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-Dsw5p7A7.js → AIOps-B0VFIcg3.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-sk89dGuT.js → ActionButton-V20enLcA.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-kd8hzeK3.js → Analytics-DndClUmA.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-CxlLp7J8.js → AppLayout-D2rOhyu6.js} +5 -5
- package/src/assets/web-panel/assets/{Audit-CQnGmRxA.js → Audit-DqfIKxsM.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BioBFWVV.js → Backup-Cuqlers6.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DiYG1n7T.js → BaseInput-C5hGNJ5N.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BBuQf6VM.js → Chat-jbQSEg4t.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-BwgFmlRu.js → ChatBubbleRenderer-43u4DJn6.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-B-9WwFTA.js → Checkbox-DbUBGgg0.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-DCkpThQa.js → Codegen-B99Mk_oQ.js} +1 -1
- package/src/assets/web-panel/assets/{Col-BowFdito.js → Col-Uxc3P9FF.js} +1 -1
- package/src/assets/web-panel/assets/{Community-BWGa92rE.js → Community-CCCVsol2.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-CqJYYK0v.js → Compact-DpVZkM4n.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DiFqpJrM.js → Compliance-CZic_otw.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-qZNWcSQ9.js → Cowork-mfrcXT5E.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-BK70XYci.js → Cron-DZgYJquv.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-DoM9N2kO.js → Crosschain-CsJE5KNs.js} +1 -1
- package/src/assets/web-panel/assets/{DID-B1F1RhQr.js → DID-DhzhW9OD.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CmDxx07G.js → Dashboard-wRXP3tMC.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-5GRByJY9.js → Dropdown-B-J3c7n7.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CyNgNjLG.js → EmailListRenderer-sNbeZPLo.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-Jwg-Wuye.js → FamilyGuardDashboard-CzfFKArY.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BQvoY2_5.js → Federation-DYehIJb9.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DKy8Zatd.js → FormItemContext-DpDqU3yC.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-n7VGwZNh.js → GenericCardRenderer-MSm4ZBE2.js} +1 -1
- package/src/assets/web-panel/assets/{Git-CFCUe_so.js → Git-CJJpll9b.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-DuZbRElA.js → Governance-D93XtWte.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DSEsBonV.js → Inference-8fZkwWyg.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-DQoaeSnN.js → KnowledgeGraph-BbbI-D3L.js} +1 -1
- package/src/assets/web-panel/assets/Logs-B6n1Hcn8.js +2 -0
- package/src/assets/web-panel/assets/{Marketplace--gDqWnX8.js → Marketplace-B92T5ZT1.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-btiDEQ_G.js → McpTools-DKddzSA8.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-CYrqC903.js → Memory-CAHamDmS.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CktV5fRJ.js → MobileBridge-BTPLGA6_.js} +3 -3
- package/src/assets/web-panel/assets/{MobileProjects-CTVZQD7g.js → MobileProjects-DvGxl7Bd.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-CRq5Ir7q.js → Mtc-BGm92GtT.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-HvY-N0XZ.js → MtcAudit-CL6I9XX4.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-CWmUSW7g.js → Multisig-BYQujNg6.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-BUwhn6xG.js → NLProgramming-x4DYENrx.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BI8NqNSW.js → Notes-DyW_mhF0.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-DVa8gbo1.js → NotificationSettings-CgeAblV8.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-XNEr64wi.js → OrderTableRenderer-COT7rmDe.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-a0imltNQ.js → Organization-Pm-XRWB1.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-DJ2P1mNg.js → Overflow-Batydsoy.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-pRJPEJ7a.js → P2P-qwLlvxlM.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-eJa8vkF5.js → PdhVaultBrowser-CYvPhc0M.js} +5 -5
- package/src/assets/web-panel/assets/{Permissions-fxa21qzR.js → Permissions-gRGKScdi.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-C3JggyPn.js → PersonalDataHub-Bob9qL_z.js} +2 -2
- package/src/assets/web-panel/assets/{Pipeline-iR9fwke0.js → Pipeline-DvP3SdFD.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-oBf4gwv0.js → Privacy-B-c--IOb.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-DZU2PVgs.js → ProjectInit-UYJYk1VO.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-amcXcSet.js → ProjectSettings--euwin_I.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-QoksY3-i.js → Projects-2xn0tfJt.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-uquz_5KZ.js → Providers-Bgq2bGTl.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-Wxx-iIH9.js → QuickAsk-Ck0iiQiv.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CD8OJGJF.js → Recommend-CuW6xeEE.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-BuJMHfco.js → Reputation-JiNIQHms.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DvfqASM7.js → Row-BCudZU5T.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-TGSmYgmV.js → RssFeed-CH0VQaou.js} +3 -3
- package/src/assets/web-panel/assets/{Search-ndSDi33l.js → Search-CJjlSa50.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CL1FLyzy.js → Security-B8Cf8rVb.js} +3 -3
- package/src/assets/web-panel/assets/{Services--AeNKFrY.js → Services-BocEJ7ad.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CMllAeqY.js → Skeleton-DpI6YIya.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DD29bVTm.js → Skills-C2lt0BNa.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DU_Mdrad.js → Sla-BxSG8zOp.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Cu0ncgI_.js → SpeechSettings-DzOejchn.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-Bfk00Eb9.js → SyncSettings-CgKxL89k.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-C-2V1COO.js → Tasks-CYDrs0ND.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-CWO4Aw1l.js → Templates-CRIQTXNH.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BnDkNC6u.js → Tenant-DC4HO1F6.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-VR0JLDdw.js → Terminal-CqMZJzEh.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-DMjbfev0.js → TimelineRenderer-D-TTq2sh.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-j1ZGEgBP.js → Tokens-NUv03cX9.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-BKVNLlOB.js → Trigger-X-FBeIBO.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-Bbfv8AJr.js → Trust-BFd9yV9d.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-C0_Gllsu.js → UkeySign-BVJ0bGzq.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CE__3Owf.js → VideoEditing-C3Q7lvPF.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Cjzavume.js → Wallet-Doxo0C8S.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-KbjxueWc.js → WebAuthn-DveIKeGo.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-Bz7UuLhK.js → WorkflowEditor-CTzSNXfX.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BrSAQ_Gd.js → chat-eQ6OL2Nl.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Bn8oqI93.js → colors-B7NzPMJ1.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-jxrLqj8Q.js → compact-item-DA8_yifp.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-B0uxIvgB.js → createContext-CAdn_TqD.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-UBrKMao4.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BFsfry47.js → hasIn-ko4B6kih.js} +1 -1
- package/src/assets/web-panel/assets/{index-CireH7ze.js → index-B0I9Q9uH.js} +1 -1
- package/src/assets/web-panel/assets/{index-vma7bVdQ.js → index-B6M0zm0k.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bd-zsWvY.js → index-BBIQJRlz.js} +1 -1
- package/src/assets/web-panel/assets/{index-CAIdm73g.js → index-BBq7mqhI.js} +1 -1
- package/src/assets/web-panel/assets/{index-DmD-qtjF.js → index-BKAgTgeT.js} +1 -1
- package/src/assets/web-panel/assets/{index-DteDdzDQ.js → index-BNt9GIgX.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCVF9irI.js → index-BX1VHvqW.js} +1 -1
- package/src/assets/web-panel/assets/{index-BY4oOQaA.js → index-B_sjoYmu.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQvlv_iE.js → index-Bb6JBiCG.js} +1 -1
- package/src/assets/web-panel/assets/index-BcOtgvfX.js +1 -0
- package/src/assets/web-panel/assets/{index-DMPQqeLb.js → index-C2qPPvCv.js} +3 -3
- package/src/assets/web-panel/assets/{index-B9ZDJUc0.js → index-CDweqnrF.js} +1 -1
- package/src/assets/web-panel/assets/{index-9iuxVwRC.js → index-CJY-yrWh.js} +1 -1
- package/src/assets/web-panel/assets/{index-DdjhDnIk.js → index-CgcRhqah.js} +1 -1
- package/src/assets/web-panel/assets/{index-DcHQBw3b.js → index-CloqX2ad.js} +1 -1
- package/src/assets/web-panel/assets/{index-_fgTMPd1.js → index-Co5moC1M.js} +1 -1
- package/src/assets/web-panel/assets/{index-DOJYoYG7.js → index-CqNS5nZH.js} +1 -1
- package/src/assets/web-panel/assets/{index-BRkK0yoO.js → index-CzerRnMr.js} +1 -1
- package/src/assets/web-panel/assets/{index-Crqzhccj.js → index-D38_8grM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CovEs7is.js → index-D4yrKz8e.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7q_gApa.js → index-DGCgSG2a.js} +1 -1
- package/src/assets/web-panel/assets/{index-BiXyJmcf.js → index-DLn-aR4t.js} +1 -1
- package/src/assets/web-panel/assets/{index-BPpGWBAU.js → index-DMGbCVXZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DeHd8uSh.js → index-DQ-4d9yy.js} +1 -1
- package/src/assets/web-panel/assets/{index-LLFwwG0R.js → index-DZ0Dd5mp.js} +1 -1
- package/src/assets/web-panel/assets/{index-E6sYKDbw.js → index-DmEcUTX3.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bk_Tv7Ey.js → index-Dnz_7pqU.js} +1 -1
- package/src/assets/web-panel/assets/index-DogBvgW2.js +1 -0
- package/src/assets/web-panel/assets/{index-pMVcl-a3.js → index-Dq_DwzU4.js} +1 -1
- package/src/assets/web-panel/assets/{index-C6AmzUjG.js → index-DyfLqass.js} +1 -1
- package/src/assets/web-panel/assets/{index-CZ8gyTGc.js → index-N7_jPRVy.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1WrY_4z.js → index-aClwSoZt.js} +1 -1
- package/src/assets/web-panel/assets/{index-CR3QNisI.js → index-b2I5q4bm.js} +1 -1
- package/src/assets/web-panel/assets/{index-D08W2YxD.js → index-dMx6z8Kk.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSDgBgrL.js → index-dhQxLUnV.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjxJSCB8.js → index-ku6l6unx.js} +1 -1
- package/src/assets/web-panel/assets/{index-xRD9Fctn.js → index-llKEnU9Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQZsB8nt.js → index-snb01c99.js} +1 -1
- package/src/assets/web-panel/assets/{index-BzZfG8Ft.js → index-v8QteGiY.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-AKS5cCeZ.js → initDefaultProps-BE1YKWp0.js} +1 -1
- package/src/assets/web-panel/assets/{motion-SDjWiFhF.js → motion-B4Pkg4rs.js} +1 -1
- package/src/assets/web-panel/assets/{move-LEZnOtYR.js → move-DbLtadAv.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DhLBVNzX.js → omit-Dn52nvgx.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DdVSELea.js → pickAttrs-D4B5N6WV.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BaEGCCq9.js → placementArrow-CKSjiqCc.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DV6XM19W.js → responsiveObserve-g5NpHuRh.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BOUnaBay.js → slide-WYVY3fl7.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BAaMQ0VA.js → statusUtils-YAkHF6HM.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CsoP0nmm.js → styleChecker-Cv_nVk4H.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-t20RbINy.js → useFlexGapSupport-D1JaeNmU.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DH_Emn7A.js → useFs-DYfXeCVm.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-CeYW427U.js → usePersonalDataHub-DdtPxV0b.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CX5gGmGb.js → vnode-nFZXhzTF.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-CofyY9oD.js → zoom-CmyXMc6s.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/agent.js +66 -51
- package/src/lib/llm-config-defaults.js +31 -0
- package/src/runtime/headless-stream.js +109 -0
- package/src/assets/web-panel/assets/Logs-u7UMHPnz.js +0 -2
- package/src/assets/web-panel/assets/devWarning-rqonNzey.js +0 -1
- package/src/assets/web-panel/assets/index-BI1fCgPX.js +0 -1
- package/src/assets/web-panel/assets/index-D8iCZ8gl.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as y,J as g,U as f,R as s,c as o,K as a,V as p,S as k,o as ue,a as se,b as ie,r as P,P as d,Q as u,F,Z as I,$ as Ie}from"./vendor-BvqAck49.js";import{_ as Ue,u as pe,b as ve,E as fe,d as b}from"./index-DMPQqeLb.js";import{s as Pe}from"./community-parser-CO25nZFt.js";import{aU as Ne,aT as Ve,d as Ye,f as Ge,ap as Be,a4 as qe,as as Je,R as Ke}from"./icons-DP3uiYxy.js";function B(t){const n=Pe(t);if(!n)return null;try{return JSON.parse(n)}catch{}const c=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!c)return null;try{return JSON.parse(c[0])}catch{return null}}const Se=Object.freeze(["draft","active","passed","rejected","expired"]),he=Object.freeze(["parameter_change","feature_request","policy_update","budget_allocation"]),He=Object.freeze(["yes","no","abstain"]);function w(t,n=0){return typeof t=="number"&&Number.isFinite(t)?t:n}function U(t){if(!t)return{noDb:!1,error:""};const n=Pe(t),c=/Database not available/i.test(n);return{noDb:c,error:c?"Database not available":""}}function We(t,n=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,name:String(t.name||""),description:String(t.description||""),_idx:n}:null}function me(t){const n=B(t);return Array.isArray(n)?n.map(We).filter(Boolean):[]}function Ze(t,n=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,title:String(t.title||""),description:t.description??"",type:String(t.type||"feature_request"),proposerDid:t.proposerDid??"",status:String(t.status||"draft").toLowerCase(),impactLevel:t.impactLevel??"",impactAnalysis:t.impactAnalysis??null,voteYes:w(t.voteYes,0),voteNo:w(t.voteNo,0),voteAbstain:w(t.voteAbstain,0),votingStartsAt:t.votingStartsAt??null,votingEndsAt:t.votingEndsAt??null,metadata:t.metadata??null,createdAt:t.createdAt??null,_idx:n}:null}function ye(t){const n=B(t);return Array.isArray(n)?n.map(Ze).filter(Boolean):[]}function Qe(t,n=0){if(!t||typeof t!="object")return null;const c=t.id||"";if(!c)return null;const e=String(t.vote||"").toLowerCase();return{key:c,id:c,proposalId:String(t.proposalId||""),voterDid:String(t.voterDid||""),vote:(He.includes(e),e),reason:t.reason??"",weight:w(t.weight,1),createdAt:t.createdAt??null,_idx:n}}function ge(t){const n=B(t);return Array.isArray(n)?n.map(Qe).filter(Boolean):[]}function be(t){const n=B(t);return!n||typeof n!="object"||Array.isArray(n)?null:{impactLevel:String(n.impactLevel||""),affectedComponents:Array.isArray(n.affectedComponents)?n.affectedComponents.filter(c=>typeof c=="string"):[],riskScore:w(n.riskScore,0),benefitScore:w(n.benefitScore,0),estimatedEffort:String(n.estimatedEffort||""),communitySentiment:String(n.communitySentiment||""),recommendations:Array.isArray(n.recommendations)?n.recommendations.filter(c=>typeof c=="string"):[],analyzedAt:n.analyzedAt??null}}function _e(t){const n=B(t);return!n||typeof n!="object"||Array.isArray(n)?null:{proposalId:String(n.proposalId||""),predictedOutcome:String(n.predictedOutcome||""),confidence:w(n.confidence,0),yesProb:w(n.yesProb,0),noProb:w(n.noProb,0),abstainProb:w(n.abstainProb,0),basedOn:String(n.basedOn||""),sampleSize:w(n.sampleSize,0)}}const Xe={proposalCount:0,voteCount:0,byStatus:{},byType:{}};function ke(t){const n=JSON.parse(JSON.stringify(Xe));for(const e of Se)n.byStatus[e]=0;for(const e of he)n.byType[e]=0;const c=B(t);if(!c||typeof c!="object"||Array.isArray(c))return n;if(n.proposalCount=w(c.proposalCount,0),n.voteCount=w(c.voteCount,0),c.byStatus&&typeof c.byStatus=="object")for(const[e,D]of Object.entries(c.byStatus))typeof D=="number"&&Number.isFinite(D)&&(n.byStatus[e]=D);if(c.byType&&typeof c.byType=="object")for(const[e,D]of Object.entries(c.byType))typeof D=="number"&&Number.isFinite(D)&&(n.byType[e]=D);return n}function $e(t){if(t==null||t==="")return"—";const n=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(n.getTime())?String(t):n.toLocaleString("zh-CN",{hour12:!1})}const et={__name:"Governance",setup(t,{expose:n}){n();const c=pe(),{t:e}=ve(),D=fe.PRESENTED_IMAGE_SIMPLE,Z=P(!1),L=P(!1),N=P(!1),q=P([]),T=P([]),O=P({proposalCount:0,voteCount:0,byStatus:{},byType:{}}),C=P({noDb:!1,error:""}),V=P("proposals"),_=P(""),x=P(""),Y=P(!1),E=P(!1),Q=P(!1),X=P(!1),J=P(!1),z=se({title:"",type:"feature_request",proposerDid:"",description:""}),A=se({voterDid:"",value:"yes",weight:1,reason:""}),h=P(null),K=P([]),H=P(null),G=P(null),$=ie(()=>[{title:e("governance.cols.title"),key:"title"},{title:e("governance.cols.type"),key:"type",width:"130px"},{title:e("governance.cols.status"),key:"status",width:"100px"},{title:e("governance.cols.tally"),key:"tally",width:"180px"},{title:e("governance.cols.impact"),key:"impact",width:"100px"},{title:e("governance.cols.createdAt"),key:"createdAt",width:"160px"},{title:e("governance.cols.action"),key:"action",width:"320px"}]),M=ie(()=>{let l=q.value;return _.value&&(l=l.filter(i=>i.status===_.value)),x.value&&(l=l.filter(i=>i.type===x.value)),l});function ae(l){const i=`governance.statusLabels.${l}`,v=e(i);return v===i?l:v}function S(l){return{draft:"default",active:"processing",passed:"green",rejected:"red",expired:"default"}[l]||"default"}function ee(l){return{draft:"#888",active:"#1677ff",passed:"#52c41a",rejected:"#ff4d4f",expired:"#888"}[l]||"#888"}function ne(l){const i=`governance.typeLabels.${l}`,v=e(i);return v===i?l:v}function te(l){return{parameter_change:"cyan",feature_request:"blue",policy_update:"purple",budget_allocation:"gold"}[l]||"default"}function oe(l){return{parameter_change:"#13c2c2",feature_request:"#1677ff",policy_update:"#722ed1",budget_allocation:"#faad14"}[l]||"#888"}function r(l){const i=`governance.impactLabels.${l}`,v=e(i);return v===i?l:v}function m(l){return{low:"default",medium:"blue",high:"orange",critical:"red"}[l]||"default"}function R(l){return{low:"#888",medium:"#1677ff",high:"#faad14",critical:"#ff4d4f"}[l]||"#888"}function Ce(l){const i=`governance.voteLabels.${l}`,v=e(i);return v===i?l:v}function Ae(l){return{yes:"green",no:"red",abstain:"default"}[l]||"default"}function Oe(l){if(!l)return"—";const i=`governance.effortLabels.${l}`,v=e(i);return v===i?l:v}function ze(l){if(!l)return"—";const i=`governance.sentimentLabels.${l}`,v=e(i);return v===i?l:v}function we(l){const i=l.voteYes+l.voteNo;return i?Math.round(l.voteYes/i*100):0}function Le(l,i){return i?Math.round(l/i*100):0}async function W(){Z.value=!0,C.value={noDb:!1,error:""};try{const[l,i,v]=await Promise.all([c.execute("governance types --json",8e3).catch(()=>({output:""})),c.execute("governance list --json",1e4).catch(()=>({output:""})),c.execute("governance stats --json",8e3).catch(()=>({output:""}))]),j=[i,v].map(le=>U(le.output)).find(le=>le.noDb);j&&(C.value=j),T.value=me(l.output),q.value=ye(i.output),O.value=ke(v.output)}catch(l){b.error(e("governance.msg.loadFailed")+": "+(l?.message||l))}finally{Z.value=!1}}async function Te(){if(!z.title.trim()){b.warning(e("governance.msg.titleEmpty"));return}L.value=!0;try{const l=[`governance create "${z.title.trim().replace(/"/g,'\\"')}"`];l.push(`-t ${z.type}`),z.proposerDid.trim()&&l.push(`-p "${z.proposerDid.trim().replace(/"/g,'\\"')}"`),z.description.trim()&&l.push(`-d "${z.description.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:i}=await c.execute(l.join(" "),1e4);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}if(!/"id"/.test(i)){b.error(e("governance.msg.createFailed")+": "+i.slice(0,120));return}b.success(e("governance.msg.createSuccess")),Y.value=!1,ce(),await W()}catch(l){b.error(e("governance.msg.createFailed")+": "+(l?.message||l))}finally{L.value=!1}}async function xe(l){await re(`governance activate ${l.id} --json`,e("governance.msg.activated"))}async function Fe(l){await re(`governance close ${l.id} --json`,e("governance.msg.closed"))}async function re(l,i){try{const{output:v}=await c.execute(l,1e4);if(U(v).noDb){b.error(e("governance.msg.needCcInit"));return}if(!/"id"|"proposalId"|"passed"/.test(v)){b.error(e("governance.msg.actionFailed")+": "+v.slice(0,120));return}b.success(i),await W()}catch(v){b.error(e("governance.msg.actionFailed")+": "+(v?.message||v))}}function De(l){h.value=l,A.voterDid="",A.value="yes",A.weight=1,A.reason="",E.value=!0}async function Ee(){if(h.value){if(!A.voterDid.trim()){b.warning(e("governance.msg.voterEmpty"));return}N.value=!0;try{const l=[`governance vote ${h.value.id}`,`"${A.voterDid.trim().replace(/"/g,'\\"')}"`,A.value,`-w ${A.weight}`];A.reason.trim()&&l.push(`-r "${A.reason.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:i}=await c.execute(l.join(" "),8e3);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}if(!/"id"/.test(i)){b.error(e("governance.msg.voteFailed")+": "+i.slice(0,120));return}b.success(e("governance.msg.voteSuccess")),E.value=!1,await W()}catch(l){b.error(e("governance.msg.voteFailed")+": "+(l?.message||l))}finally{N.value=!1}}}async function je(l){h.value=l,K.value=[],Q.value=!0;try{const{output:i}=await c.execute(`governance votes ${l.id} --json`,8e3);K.value=ge(i)}catch{}}async function Me(l){h.value=l,H.value=null;try{const{output:i}=await c.execute(`governance analyze ${l.id} --json`,8e3);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}const j=be(i);if(!j){b.error(e("governance.msg.analyzeFailed")+": "+i.slice(0,120));return}H.value=j,X.value=!0}catch(i){b.error(e("governance.msg.analyzeFailed")+": "+(i?.message||i))}}async function Re(l){h.value=l,G.value=null;try{const{output:i}=await c.execute(`governance predict ${l.id} --json`,8e3);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}const j=_e(i);if(!j){b.error(e("governance.msg.predictFailed")+": "+i.slice(0,120));return}G.value=j,J.value=!0}catch(i){b.error(e("governance.msg.predictFailed")+": "+(i?.message||i))}}function ce(){z.title="",z.type="feature_request",z.proposerDid="",z.description=""}ue(W);const de={ws:c,t:e,EMPTY_IMG:D,loading:Z,creating:L,voting:N,proposals:q,proposalTypes:T,stats:O,errorState:C,activeTab:V,statusFilter:_,typeFilter:x,showCreateModal:Y,showVoteModal:E,showDetailsModal:Q,showAnalysisModal:X,showPredictionModal:J,createForm:z,voteForm:A,currentProposal:h,detailVotes:K,currentAnalysis:H,currentPrediction:G,proposalColumns:$,filteredProposals:M,statusLabel:ae,statusColor:S,statusBarColor:ee,typeLabel:ne,typeColor:te,typeBarColor:oe,impactLabel:r,impactColor:m,impactBarColor:R,voteLabel:Ce,voteColor:Ae,effortLabel:Oe,sentimentLabel:ze,yesPct:we,pctOfTotal:Le,loadAll:W,createProposal:Te,activateProposal:xe,closeProposal:Fe,runProposalAction:re,openVoteModal:De,submitVote:Ee,viewProposalDetails:je,runAnalyze:Me,runPredict:Re,resetCreateForm:ce,ref:P,computed:ie,onMounted:ue,reactive:se,get ReloadOutlined(){return Ke},get PlusOutlined(){return Je},get FileTextOutlined(){return qe},get PlayCircleOutlined(){return Be},get CheckCircleOutlined(){return Ge},get CloseCircleOutlined(){return Ye},get LikeOutlined(){return Ve},get ArrowRightOutlined(){return Ne},get message(){return b},get Empty(){return fe},get useI18n(){return ve},get useWsStore(){return pe},get parseTypes(){return me},get parseProposals(){return ye},get parseVotes(){return ge},get parseAnalysis(){return be},get parsePrediction(){return _e},get parseStats(){return ke},get detectGovernanceError(){return U},get formatGovernanceTime(){return $e},get PROPOSAL_STATUSES(){return Se},get PROPOSAL_TYPE_IDS(){return he}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},tt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ot={class:"page-title"},at={class:"page-sub"},nt={class:"type-head"},rt={class:"type-count"},lt={class:"type-name"},st={class:"type-desc"},it={class:"filter-bar"},ct={style:{color:"var(--text-primary)","font-weight":"500"}},dt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},ut={style:{"font-family":"monospace","font-size":"12px"}},pt={style:{color:"#52c41a"}},vt={style:{color:"#ff4d4f"}},ft={style:{color:"var(--text-muted)"}},mt={key:1,style:{color:"var(--text-muted)"}},yt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},gt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},bt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},_t={key:0,style:{"padding-top":"8px"}},kt={style:{"font-family":"monospace","font-size":"12px"}},Pt={key:0,style:{"font-family":"monospace","font-size":"12px"}},St={key:1,style:{color:"var(--text-muted)"}},ht={key:0,style:{"white-space":"pre-wrap"}},Ct={key:1,style:{color:"var(--text-muted)"}},At={style:{color:"var(--text-primary)","font-size":"13px",margin:"20px 0 10px"}},Ot={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},zt={style:{"margin-left":"8px","font-family":"monospace","font-size":"11px",color:"var(--text-secondary)"}},wt={key:0,style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Lt={style:{"margin-left":"auto",color:"var(--text-muted)","font-size":"11px"}},Tt={key:0,style:{"padding-top":"8px"}},xt={style:{"margin-bottom":"8px"}},Ft={style:{color:"var(--text-secondary)","font-size":"12px"}},Dt={style:{color:"var(--text-secondary)","font-size":"12px"}},Et={key:0,style:{"padding-top":"8px"}},jt={style:{"text-align":"center","margin-bottom":"20px"}},Mt={style:{color:"#52c41a"}},Rt={style:{color:"#ff4d4f"}},It={style:{color:"var(--text-muted)"}};function Ut(t,n,c,e,D,Z){const L=y("a-button"),N=y("a-space"),q=y("a-alert"),T=y("a-statistic"),O=y("a-card"),C=y("a-col"),V=y("a-row"),_=y("a-tag"),x=y("a-radio-button"),Y=y("a-radio-group"),E=y("a-progress"),Q=y("a-popconfirm"),X=y("a-table"),J=y("a-tab-pane"),z=y("a-tabs"),A=y("a-input"),h=y("a-form-item"),K=y("a-select-option"),H=y("a-select"),G=y("a-textarea"),$=y("a-form"),M=y("a-modal"),ae=y("a-input-number"),S=y("a-descriptions-item"),ee=y("a-descriptions"),ne=y("a-empty"),te=y("a-list-item"),oe=y("a-list");return d(),g("div",null,[f("div",tt,[f("div",null,[f("h2",ot,s(t.$t("governance.title")),1),f("p",at,s(t.$t("governance.subtitle")),1)]),o(N,null,{default:a(()=>[o(L,{loading:e.loading,onClick:e.loadAll},{icon:a(()=>[o(e.ReloadOutlined)]),default:a(()=>[u(" "+s(t.$t("governance.refresh")),1)]),_:1},8,["loading"]),o(L,{type:"primary",onClick:n[0]||(n[0]=r=>e.showCreateModal=!0)},{icon:a(()=>[o(e.PlusOutlined)]),default:a(()=>[u(" "+s(t.$t("governance.create")),1)]),_:1})]),_:1})]),p(" noDb banner "),e.errorState.noDb?(d(),k(q,{key:0,type:"info","show-icon":"",message:t.$t("governance.noDb.message"),description:t.$t("governance.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):p("v-if",!0),p(" Stat cards "),o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.total"),value:e.stats.proposalCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[o(e.FileTextOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.active"),value:e.stats.byStatus.active||0,"value-style":{color:(e.stats.byStatus.active||0)>0?"#1677ff":"#888",fontSize:"20px"}},{prefix:a(()=>[o(e.PlayCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.passed"),value:e.stats.byStatus.passed||0,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:a(()=>[o(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.rejected"),value:e.stats.byStatus.rejected||0,"value-style":{color:"#ff4d4f",fontSize:"20px"}},{prefix:a(()=>[o(e.CloseCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(C,{xs:24,sm:8,lg:4},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.votes"),value:e.stats.voteCount,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:a(()=>[o(e.LikeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),p(" Type catalogue "),o(O,{title:t.$t("governance.typesCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:a(()=>[o(V,{gutter:[12,12]},{default:a(()=>[(d(!0),g(F,null,I(e.proposalTypes,r=>(d(),k(C,{key:r.id,xs:12,sm:12,lg:6},{default:a(()=>[f("div",{class:"type-pill",style:Ie({borderLeftColor:e.typeColor(r.id)})},[f("div",nt,[o(_,{color:e.typeColor(r.id),style:{"font-family":"monospace"}},{default:a(()=>[u(s(r.id),1)]),_:2},1032,["color"]),f("span",rt,s(e.stats.byType[r.id]||0),1)]),f("div",lt,s(r.name),1),f("div",st,s(r.description),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),p(" Tabs "),o(z,{activeKey:e.activeTab,"onUpdate:activeKey":n[3]||(n[3]=r=>e.activeTab=r),class:"governance-tabs"},{default:a(()=>[p(" ── Proposals tab ────────────────────────────────────────── "),o(J,{key:"proposals",tab:t.$t("governance.tabs.proposals")},{default:a(()=>[f("div",it,[o(Y,{value:e.statusFilter,"onUpdate:value":n[1]||(n[1]=r=>e.statusFilter=r),size:"small","button-style":"solid"},{default:a(()=>[o(x,{value:""},{default:a(()=>[u(s(t.$t("governance.filter.allStatuses")),1)]),_:1}),(d(!0),g(F,null,I(e.PROPOSAL_STATUSES,r=>(d(),k(x,{key:r,value:r},{default:a(()=>[u(s(e.statusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(Y,{value:e.typeFilter,"onUpdate:value":n[2]||(n[2]=r=>e.typeFilter=r),size:"small"},{default:a(()=>[o(x,{value:""},{default:a(()=>[u(s(t.$t("governance.filter.allTypes")),1)]),_:1}),(d(!0),g(F,null,I(e.PROPOSAL_TYPE_IDS,r=>(d(),k(x,{key:r,value:r},{default:a(()=>[u(s(e.typeLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(X,{columns:e.proposalColumns,"data-source":e.filteredProposals,pagination:{pageSize:20,showTotal:r=>t.$t("governance.table.totalSuffix",{n:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:r,record:m})=>[r.key==="title"?(d(),g(F,{key:0},[f("span",ct,s(m.title||t.$t("governance.table.unnamed")),1),f("div",dt,s(m.id.slice(0,16)),1)],64)):p("v-if",!0),r.key==="type"?(d(),k(_,{key:1,color:e.typeColor(m.type),style:{"font-family":"monospace"}},{default:a(()=>[u(s(e.typeLabel(m.type)),1)]),_:2},1032,["color"])):p("v-if",!0),r.key==="status"?(d(),k(_,{key:2,color:e.statusColor(m.status)},{default:a(()=>[u(s(e.statusLabel(m.status)),1)]),_:2},1032,["color"])):p("v-if",!0),r.key==="tally"?(d(),g(F,{key:3},[f("span",ut,[f("span",pt,"+"+s(m.voteYes),1),n[17]||(n[17]=u(" / ",-1)),f("span",vt,"-"+s(m.voteNo),1),n[18]||(n[18]=u(" / ",-1)),f("span",ft,"~"+s(m.voteAbstain),1)]),m.voteYes+m.voteNo>0?(d(),k(E,{key:0,percent:e.yesPct(m),size:"small","show-info":!1,"stroke-color":m.voteYes>=m.voteNo?"#52c41a":"#ff4d4f",style:{"margin-top":"4px"}},null,8,["percent","stroke-color"])):p("v-if",!0)],64)):p("v-if",!0),r.key==="impact"?(d(),g(F,{key:4},[m.impactLevel?(d(),k(_,{key:0,color:e.impactColor(m.impactLevel)},{default:a(()=>[u(s(e.impactLabel(m.impactLevel)),1)]),_:2},1032,["color"])):(d(),g("span",mt,"—"))],64)):p("v-if",!0),r.key==="createdAt"?(d(),g("span",yt,s(e.formatGovernanceTime(m.createdAt)),1)):p("v-if",!0),r.key==="action"?(d(),g(F,{key:6},[o(L,{size:"small",type:"link",onClick:R=>e.viewProposalDetails(m)},{default:a(()=>[u(s(t.$t("governance.actions.details")),1)]),_:1},8,["onClick"]),m.status==="draft"?(d(),k(L,{key:0,size:"small",type:"link",onClick:R=>e.activateProposal(m)},{default:a(()=>[u(s(t.$t("governance.actions.activate")),1)]),_:1},8,["onClick"])):p("v-if",!0),m.status==="active"?(d(),k(L,{key:1,size:"small",type:"link",style:{color:"#52c41a"},onClick:R=>e.openVoteModal(m)},{default:a(()=>[u(s(t.$t("governance.actions.vote")),1)]),_:1},8,["onClick"])):p("v-if",!0),m.status==="active"?(d(),k(Q,{key:2,title:t.$t("governance.closeConfirm.title"),"ok-text":t.$t("governance.closeConfirm.ok"),"cancel-text":t.$t("governance.closeConfirm.cancel"),onConfirm:R=>e.closeProposal(m)},{default:a(()=>[o(L,{size:"small",type:"link",danger:""},{default:a(()=>[u(s(t.$t("governance.actions.close")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):p("v-if",!0),o(L,{size:"small",type:"link",onClick:R=>e.runAnalyze(m)},{default:a(()=>[u(s(t.$t("governance.actions.analyze")),1)]),_:1},8,["onClick"]),o(L,{size:"small",type:"link",onClick:R=>e.runPredict(m)},{default:a(()=>[u(s(t.$t("governance.actions.predict")),1)]),_:1},8,["onClick"])],64)):p("v-if",!0)]),emptyText:a(()=>[f("div",gt,[o(e.FileTextOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),u(" "+s(e.statusFilter||e.typeFilter?t.$t("governance.table.emptyFiltered"):t.$t("governance.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Status & type breakdown tab ──────────────────────────── "),o(J,{key:"breakdown",tab:t.$t("governance.tabs.breakdown")},{default:a(()=>[o(V,{gutter:[16,16]},{default:a(()=>[o(C,{xs:24,lg:12},{default:a(()=>[o(O,{title:t.$t("governance.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[(d(!0),g(F,null,I(e.PROPOSAL_STATUSES,r=>(d(),g("div",{key:r,class:"bd-row"},[o(_,{color:e.statusColor(r),style:{"min-width":"60px","text-align":"center"}},{default:a(()=>[u(s(e.statusLabel(r)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byStatus[r]||0,e.stats.proposalCount),"stroke-color":e.statusBarColor(r),format:()=>`${e.stats.byStatus[r]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(C,{xs:24,lg:12},{default:a(()=>[o(O,{title:t.$t("governance.breakdown.byType"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[(d(!0),g(F,null,I(e.PROPOSAL_TYPE_IDS,r=>(d(),g("div",{key:r,class:"bd-row"},[o(_,{color:e.typeColor(r),style:{"min-width":"90px","text-align":"center"}},{default:a(()=>[u(s(e.typeLabel(r)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byType[r]||0,e.stats.proposalCount),"stroke-color":e.typeBarColor(r),format:()=>`${e.stats.byType[r]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),p(" ── Create proposal modal ───────────────────────────────── "),o(M,{open:e.showCreateModal,"onUpdate:open":n[8]||(n[8]=r=>e.showCreateModal=r),title:t.$t("governance.create_modal.title"),"confirm-loading":e.creating,width:560,"ok-text":t.$t("governance.create_modal.ok"),"cancel-text":t.$t("governance.create_modal.cancel"),onOk:e.createProposal,onCancel:e.resetCreateForm},{default:a(()=>[o($,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(h,{label:t.$t("governance.create_modal.titleLabel"),required:""},{default:a(()=>[o(A,{value:e.createForm.title,"onUpdate:value":n[4]||(n[4]=r=>e.createForm.title=r),placeholder:t.$t("governance.create_modal.titlePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.create_modal.typeLabel"),required:""},{default:a(()=>[o(H,{value:e.createForm.type,"onUpdate:value":n[5]||(n[5]=r=>e.createForm.type=r)},{default:a(()=>[(d(!0),g(F,null,I(e.PROPOSAL_TYPE_IDS,r=>(d(),k(K,{key:r,value:r},{default:a(()=>[u(s(e.typeLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.create_modal.proposerLabel")},{default:a(()=>[o(A,{value:e.createForm.proposerDid,"onUpdate:value":n[6]||(n[6]=r=>e.createForm.proposerDid=r),placeholder:t.$t("governance.create_modal.proposerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.create_modal.descLabel")},{default:a(()=>[o(G,{value:e.createForm.description,"onUpdate:value":n[7]||(n[7]=r=>e.createForm.description=r),placeholder:t.$t("governance.create_modal.descPlaceholder"),"auto-size":{minRows:3,maxRows:8}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Vote modal ───────────────────────────────────────────── "),o(M,{open:e.showVoteModal,"onUpdate:open":n[13]||(n[13]=r=>e.showVoteModal=r),title:t.$t("governance.vote_modal.title",{title:e.currentProposal?.title||""}),"confirm-loading":e.voting,width:540,"ok-text":t.$t("governance.vote_modal.ok"),"cancel-text":t.$t("governance.vote_modal.cancel"),onOk:e.submitVote},{default:a(()=>[o($,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(h,{label:t.$t("governance.vote_modal.voterLabel"),required:""},{default:a(()=>[o(A,{value:e.voteForm.voterDid,"onUpdate:value":n[9]||(n[9]=r=>e.voteForm.voterDid=r),placeholder:"did:key:..."},null,8,["value"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.vote_modal.valueLabel"),required:""},{default:a(()=>[o(Y,{value:e.voteForm.value,"onUpdate:value":n[10]||(n[10]=r=>e.voteForm.value=r),"button-style":"solid"},{default:a(()=>[o(x,{value:"yes",style:{color:"#52c41a"}},{default:a(()=>[u(s(t.$t("governance.vote_modal.yes")),1)]),_:1}),o(x,{value:"no",style:{color:"#ff4d4f"}},{default:a(()=>[u(s(t.$t("governance.vote_modal.no")),1)]),_:1}),o(x,{value:"abstain"},{default:a(()=>[u(s(t.$t("governance.vote_modal.abstain")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.vote_modal.weightLabel")},{default:a(()=>[o(ae,{value:e.voteForm.weight,"onUpdate:value":n[11]||(n[11]=r=>e.voteForm.weight=r),min:.1,step:.1,style:{width:"120px"}},null,8,["value"]),f("span",bt,s(t.$t("governance.vote_modal.weightHint")),1)]),_:1},8,["label"]),o(h,{label:t.$t("governance.vote_modal.reasonLabel")},{default:a(()=>[o(G,{value:e.voteForm.reason,"onUpdate:value":n[12]||(n[12]=r=>e.voteForm.reason=r),placeholder:t.$t("governance.vote_modal.reasonPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Proposal details modal ──────────────────────────────── "),o(M,{open:e.showDetailsModal,"onUpdate:open":n[14]||(n[14]=r=>e.showDetailsModal=r),title:t.$t("governance.details.title",{title:e.currentProposal?.title||""}),width:780,footer:null},{default:a(()=>[e.currentProposal?(d(),g("div",_t,[o(ee,{column:2,size:"small",bordered:""},{default:a(()=>[o(S,{label:t.$t("governance.details.id"),span:2},{default:a(()=>[f("span",kt,s(e.currentProposal.id),1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.type")},{default:a(()=>[o(_,{color:e.typeColor(e.currentProposal.type)},{default:a(()=>[u(s(e.typeLabel(e.currentProposal.type)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.status")},{default:a(()=>[o(_,{color:e.statusColor(e.currentProposal.status)},{default:a(()=>[u(s(e.statusLabel(e.currentProposal.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.proposer"),span:2},{default:a(()=>[e.currentProposal.proposerDid?(d(),g("span",Pt,s(e.currentProposal.proposerDid),1)):(d(),g("span",St,s(t.$t("governance.details.proposerUnset")),1))]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.description"),span:2},{default:a(()=>[e.currentProposal.description?(d(),g("div",ht,s(e.currentProposal.description),1)):(d(),g("span",Ct,"—"))]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.tally"),span:2},{default:a(()=>[o(N,null,{default:a(()=>[o(_,{color:"green"},{default:a(()=>[u(s(t.$t("governance.details.tallyYes",{n:e.currentProposal.voteYes})),1)]),_:1}),o(_,{color:"red"},{default:a(()=>[u(s(t.$t("governance.details.tallyNo",{n:e.currentProposal.voteNo})),1)]),_:1}),o(_,null,{default:a(()=>[u(s(t.$t("governance.details.tallyAbstain",{n:e.currentProposal.voteAbstain})),1)]),_:1})]),_:1})]),_:1},8,["label"]),e.currentProposal.impactLevel?(d(),k(S,{key:0,label:t.$t("governance.details.impact")},{default:a(()=>[o(_,{color:e.impactColor(e.currentProposal.impactLevel)},{default:a(()=>[u(s(e.impactLabel(e.currentProposal.impactLevel)),1)]),_:1},8,["color"])]),_:1},8,["label"])):p("v-if",!0),o(S,{label:t.$t("governance.details.createdAt")},{default:a(()=>[u(s(e.formatGovernanceTime(e.currentProposal.createdAt)),1)]),_:1},8,["label"]),e.currentProposal.votingStartsAt?(d(),k(S,{key:1,label:t.$t("governance.details.votingStartsAt")},{default:a(()=>[u(s(e.formatGovernanceTime(e.currentProposal.votingStartsAt)),1)]),_:1},8,["label"])):p("v-if",!0),e.currentProposal.votingEndsAt?(d(),k(S,{key:2,label:t.$t("governance.details.votingEndsAt")},{default:a(()=>[u(s(e.formatGovernanceTime(e.currentProposal.votingEndsAt)),1)]),_:1},8,["label"])):p("v-if",!0)]),_:1}),p(" Votes list "),f("h4",At,s(t.$t("governance.details.votesHeader")),1),e.detailVotes.length?(d(),k(oe,{key:1,size:"small","data-source":e.detailVotes,pagination:{pageSize:8}},{renderItem:a(({item:r})=>[o(te,null,{default:a(()=>[o(_,{color:e.voteColor(r.vote),style:{"min-width":"50px","text-align":"center"}},{default:a(()=>[u(s(e.voteLabel(r.vote)),1)]),_:2},1032,["color"]),f("span",Ot,"w="+s(r.weight),1),f("span",zt,s(r.voterDid),1),r.reason?(d(),g("span",wt,"— "+s(r.reason),1)):p("v-if",!0),f("span",Lt,s(e.formatGovernanceTime(r.createdAt)),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(ne,{key:0,description:t.$t("governance.details.votesEmpty"),image:e.EMPTY_IMG},null,8,["description","image"]))])):p("v-if",!0)]),_:1},8,["open","title"]),p(" ── Analysis modal ──────────────────────────────────────── "),o(M,{open:e.showAnalysisModal,"onUpdate:open":n[15]||(n[15]=r=>e.showAnalysisModal=r),title:t.$t("governance.analysis.title",{title:e.currentProposal?.title||""}),width:640,footer:null},{default:a(()=>[e.currentAnalysis?(d(),g("div",Tt,[o(V,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:a(()=>[o(C,{span:8},{default:a(()=>[o(T,{title:t.$t("governance.analysis.impactLevel"),value:e.impactLabel(e.currentAnalysis.impactLevel),"value-style":{color:e.impactBarColor(e.currentAnalysis.impactLevel),fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1}),o(C,{span:8},{default:a(()=>[o(T,{title:t.$t("governance.analysis.effort"),value:e.effortLabel(e.currentAnalysis.estimatedEffort),"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(C,{span:8},{default:a(()=>[o(T,{title:t.$t("governance.analysis.sentiment"),value:e.sentimentLabel(e.currentAnalysis.communitySentiment),"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1})]),_:1}),o(O,{title:t.$t("governance.analysis.riskBenefit"),size:"small",style:{"margin-bottom":"12px"}},{default:a(()=>[f("div",xt,[f("span",Ft,s(t.$t("governance.analysis.riskScore")),1),o(E,{percent:Math.round(e.currentAnalysis.riskScore*100),"stroke-color":"#ff4d4f"},null,8,["percent"])]),f("div",null,[f("span",Dt,s(t.$t("governance.analysis.benefitScore")),1),o(E,{percent:Math.round(e.currentAnalysis.benefitScore*100),"stroke-color":"#52c41a"},null,8,["percent"])])]),_:1},8,["title"]),e.currentAnalysis.affectedComponents.length?(d(),k(O,{key:0,title:t.$t("governance.analysis.components"),size:"small",style:{"margin-bottom":"12px"}},{default:a(()=>[(d(!0),g(F,null,I(e.currentAnalysis.affectedComponents,r=>(d(),k(_,{key:r,color:"blue"},{default:a(()=>[u(s(r),1)]),_:2},1024))),128))]),_:1},8,["title"])):p("v-if",!0),e.currentAnalysis.recommendations.length?(d(),k(O,{key:1,title:t.$t("governance.analysis.recommendations"),size:"small"},{default:a(()=>[o(oe,{size:"small","data-source":e.currentAnalysis.recommendations},{renderItem:a(({item:r})=>[o(te,null,{default:a(()=>[o(e.ArrowRightOutlined,{style:{color:"#faad14","margin-right":"8px"}}),u(" "+s(r),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):p("v-if",!0)])):p("v-if",!0)]),_:1},8,["open","title"]),p(" ── Prediction modal ────────────────────────────────────── "),o(M,{open:e.showPredictionModal,"onUpdate:open":n[16]||(n[16]=r=>e.showPredictionModal=r),title:t.$t("governance.prediction.title",{title:e.currentProposal?.title||""}),width:540,footer:null},{default:a(()=>[e.currentPrediction?(d(),g("div",Et,[f("div",jt,[o(_,{color:e.currentPrediction.predictedOutcome==="pass"?"green":"red",style:{"font-size":"16px",padding:"6px 14px"}},{default:a(()=>[u(s(e.currentPrediction.predictedOutcome==="pass"?t.$t("governance.prediction.outcomePass"):t.$t("governance.prediction.outcomeReject")),1)]),_:1},8,["color"])]),o(ee,{column:2,size:"small",bordered:""},{default:a(()=>[o(S,{label:t.$t("governance.prediction.confidence"),span:2},{default:a(()=>[o(E,{percent:Math.round(e.currentPrediction.confidence*100),"stroke-color":e.currentPrediction.confidence>=.6?"#52c41a":"#faad14"},null,8,["percent","stroke-color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.basedOn")},{default:a(()=>[o(_,{color:e.currentPrediction.basedOn==="votes"?"blue":"orange"},{default:a(()=>[u(s(e.currentPrediction.basedOn==="votes"?t.$t("governance.prediction.basedOnVotes"):t.$t("governance.prediction.basedOnHeuristic")),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.sampleSize")},{default:a(()=>[u(s(e.currentPrediction.sampleSize),1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.yesProb")},{default:a(()=>[f("span",Mt,s((e.currentPrediction.yesProb*100).toFixed(1))+"%",1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.noProb")},{default:a(()=>[f("span",Rt,s((e.currentPrediction.noProb*100).toFixed(1))+"%",1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.abstainProb"),span:2},{default:a(()=>[f("span",It,s((e.currentPrediction.abstainProb*100).toFixed(1))+"%",1)]),_:1},8,["label"])]),_:1})])):p("v-if",!0)]),_:1},8,["open","title"])])}const Bt=Ue(et,[["render",Ut],["__scopeId","data-v-3a4a41f3"],["__file","/tmp/cc-web-panel-Fa41ZI/repo/packages/web-panel/src/views/Governance.vue"]]);export{Bt as default};
|
|
1
|
+
import{I as y,J as g,U as f,R as s,c as o,K as a,V as p,S as k,o as ue,a as se,b as ie,r as P,P as d,Q as u,F,Z as N,$ as Ne}from"./vendor-BvqAck49.js";import{_ as Ue,u as pe,b as ve,E as fe,d as b}from"./index-C2qPPvCv.js";import{s as Pe}from"./community-parser-CO25nZFt.js";import{aU as Ie,aT as Ve,d as Ge,f as Ye,ap as Be,a4 as qe,as as Je,R as Ke}from"./icons-DP3uiYxy.js";function B(t){const n=Pe(t);if(!n)return null;try{return JSON.parse(n)}catch{}const c=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!c)return null;try{return JSON.parse(c[0])}catch{return null}}const Se=Object.freeze(["draft","active","passed","rejected","expired"]),he=Object.freeze(["parameter_change","feature_request","policy_update","budget_allocation"]),He=Object.freeze(["yes","no","abstain"]);function w(t,n=0){return typeof t=="number"&&Number.isFinite(t)?t:n}function U(t){if(!t)return{noDb:!1,error:""};const n=Pe(t),c=/Database not available/i.test(n);return{noDb:c,error:c?"Database not available":""}}function We(t,n=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,name:String(t.name||""),description:String(t.description||""),_idx:n}:null}function me(t){const n=B(t);return Array.isArray(n)?n.map(We).filter(Boolean):[]}function Ze(t,n=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,title:String(t.title||""),description:t.description??"",type:String(t.type||"feature_request"),proposerDid:t.proposerDid??"",status:String(t.status||"draft").toLowerCase(),impactLevel:t.impactLevel??"",impactAnalysis:t.impactAnalysis??null,voteYes:w(t.voteYes,0),voteNo:w(t.voteNo,0),voteAbstain:w(t.voteAbstain,0),votingStartsAt:t.votingStartsAt??null,votingEndsAt:t.votingEndsAt??null,metadata:t.metadata??null,createdAt:t.createdAt??null,_idx:n}:null}function ye(t){const n=B(t);return Array.isArray(n)?n.map(Ze).filter(Boolean):[]}function Qe(t,n=0){if(!t||typeof t!="object")return null;const c=t.id||"";if(!c)return null;const e=String(t.vote||"").toLowerCase();return{key:c,id:c,proposalId:String(t.proposalId||""),voterDid:String(t.voterDid||""),vote:(He.includes(e),e),reason:t.reason??"",weight:w(t.weight,1),createdAt:t.createdAt??null,_idx:n}}function ge(t){const n=B(t);return Array.isArray(n)?n.map(Qe).filter(Boolean):[]}function be(t){const n=B(t);return!n||typeof n!="object"||Array.isArray(n)?null:{impactLevel:String(n.impactLevel||""),affectedComponents:Array.isArray(n.affectedComponents)?n.affectedComponents.filter(c=>typeof c=="string"):[],riskScore:w(n.riskScore,0),benefitScore:w(n.benefitScore,0),estimatedEffort:String(n.estimatedEffort||""),communitySentiment:String(n.communitySentiment||""),recommendations:Array.isArray(n.recommendations)?n.recommendations.filter(c=>typeof c=="string"):[],analyzedAt:n.analyzedAt??null}}function _e(t){const n=B(t);return!n||typeof n!="object"||Array.isArray(n)?null:{proposalId:String(n.proposalId||""),predictedOutcome:String(n.predictedOutcome||""),confidence:w(n.confidence,0),yesProb:w(n.yesProb,0),noProb:w(n.noProb,0),abstainProb:w(n.abstainProb,0),basedOn:String(n.basedOn||""),sampleSize:w(n.sampleSize,0)}}const Xe={proposalCount:0,voteCount:0,byStatus:{},byType:{}};function ke(t){const n=JSON.parse(JSON.stringify(Xe));for(const e of Se)n.byStatus[e]=0;for(const e of he)n.byType[e]=0;const c=B(t);if(!c||typeof c!="object"||Array.isArray(c))return n;if(n.proposalCount=w(c.proposalCount,0),n.voteCount=w(c.voteCount,0),c.byStatus&&typeof c.byStatus=="object")for(const[e,D]of Object.entries(c.byStatus))typeof D=="number"&&Number.isFinite(D)&&(n.byStatus[e]=D);if(c.byType&&typeof c.byType=="object")for(const[e,D]of Object.entries(c.byType))typeof D=="number"&&Number.isFinite(D)&&(n.byType[e]=D);return n}function $e(t){if(t==null||t==="")return"—";const n=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(n.getTime())?String(t):n.toLocaleString("zh-CN",{hour12:!1})}const et={__name:"Governance",setup(t,{expose:n}){n();const c=pe(),{t:e}=ve(),D=fe.PRESENTED_IMAGE_SIMPLE,Z=P(!1),L=P(!1),I=P(!1),q=P([]),T=P([]),O=P({proposalCount:0,voteCount:0,byStatus:{},byType:{}}),C=P({noDb:!1,error:""}),V=P("proposals"),_=P(""),x=P(""),G=P(!1),E=P(!1),Q=P(!1),X=P(!1),J=P(!1),z=se({title:"",type:"feature_request",proposerDid:"",description:""}),A=se({voterDid:"",value:"yes",weight:1,reason:""}),h=P(null),K=P([]),H=P(null),Y=P(null),$=ie(()=>[{title:e("governance.cols.title"),key:"title"},{title:e("governance.cols.type"),key:"type",width:"130px"},{title:e("governance.cols.status"),key:"status",width:"100px"},{title:e("governance.cols.tally"),key:"tally",width:"180px"},{title:e("governance.cols.impact"),key:"impact",width:"100px"},{title:e("governance.cols.createdAt"),key:"createdAt",width:"160px"},{title:e("governance.cols.action"),key:"action",width:"320px"}]),M=ie(()=>{let l=q.value;return _.value&&(l=l.filter(i=>i.status===_.value)),x.value&&(l=l.filter(i=>i.type===x.value)),l});function ae(l){const i=`governance.statusLabels.${l}`,v=e(i);return v===i?l:v}function S(l){return{draft:"default",active:"processing",passed:"green",rejected:"red",expired:"default"}[l]||"default"}function ee(l){return{draft:"#888",active:"#1677ff",passed:"#52c41a",rejected:"#ff4d4f",expired:"#888"}[l]||"#888"}function ne(l){const i=`governance.typeLabels.${l}`,v=e(i);return v===i?l:v}function te(l){return{parameter_change:"cyan",feature_request:"blue",policy_update:"purple",budget_allocation:"gold"}[l]||"default"}function oe(l){return{parameter_change:"#13c2c2",feature_request:"#1677ff",policy_update:"#722ed1",budget_allocation:"#faad14"}[l]||"#888"}function r(l){const i=`governance.impactLabels.${l}`,v=e(i);return v===i?l:v}function m(l){return{low:"default",medium:"blue",high:"orange",critical:"red"}[l]||"default"}function R(l){return{low:"#888",medium:"#1677ff",high:"#faad14",critical:"#ff4d4f"}[l]||"#888"}function Ce(l){const i=`governance.voteLabels.${l}`,v=e(i);return v===i?l:v}function Ae(l){return{yes:"green",no:"red",abstain:"default"}[l]||"default"}function Oe(l){if(!l)return"—";const i=`governance.effortLabels.${l}`,v=e(i);return v===i?l:v}function ze(l){if(!l)return"—";const i=`governance.sentimentLabels.${l}`,v=e(i);return v===i?l:v}function we(l){const i=l.voteYes+l.voteNo;return i?Math.round(l.voteYes/i*100):0}function Le(l,i){return i?Math.round(l/i*100):0}async function W(){Z.value=!0,C.value={noDb:!1,error:""};try{const[l,i,v]=await Promise.all([c.execute("governance types --json",8e3).catch(()=>({output:""})),c.execute("governance list --json",1e4).catch(()=>({output:""})),c.execute("governance stats --json",8e3).catch(()=>({output:""}))]),j=[i,v].map(le=>U(le.output)).find(le=>le.noDb);j&&(C.value=j),T.value=me(l.output),q.value=ye(i.output),O.value=ke(v.output)}catch(l){b.error(e("governance.msg.loadFailed")+": "+(l?.message||l))}finally{Z.value=!1}}async function Te(){if(!z.title.trim()){b.warning(e("governance.msg.titleEmpty"));return}L.value=!0;try{const l=[`governance create "${z.title.trim().replace(/"/g,'\\"')}"`];l.push(`-t ${z.type}`),z.proposerDid.trim()&&l.push(`-p "${z.proposerDid.trim().replace(/"/g,'\\"')}"`),z.description.trim()&&l.push(`-d "${z.description.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:i}=await c.execute(l.join(" "),1e4);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}if(!/"id"/.test(i)){b.error(e("governance.msg.createFailed")+": "+i.slice(0,120));return}b.success(e("governance.msg.createSuccess")),G.value=!1,ce(),await W()}catch(l){b.error(e("governance.msg.createFailed")+": "+(l?.message||l))}finally{L.value=!1}}async function xe(l){await re(`governance activate ${l.id} --json`,e("governance.msg.activated"))}async function Fe(l){await re(`governance close ${l.id} --json`,e("governance.msg.closed"))}async function re(l,i){try{const{output:v}=await c.execute(l,1e4);if(U(v).noDb){b.error(e("governance.msg.needCcInit"));return}if(!/"id"|"proposalId"|"passed"/.test(v)){b.error(e("governance.msg.actionFailed")+": "+v.slice(0,120));return}b.success(i),await W()}catch(v){b.error(e("governance.msg.actionFailed")+": "+(v?.message||v))}}function De(l){h.value=l,A.voterDid="",A.value="yes",A.weight=1,A.reason="",E.value=!0}async function Ee(){if(h.value){if(!A.voterDid.trim()){b.warning(e("governance.msg.voterEmpty"));return}I.value=!0;try{const l=[`governance vote ${h.value.id}`,`"${A.voterDid.trim().replace(/"/g,'\\"')}"`,A.value,`-w ${A.weight}`];A.reason.trim()&&l.push(`-r "${A.reason.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:i}=await c.execute(l.join(" "),8e3);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}if(!/"id"/.test(i)){b.error(e("governance.msg.voteFailed")+": "+i.slice(0,120));return}b.success(e("governance.msg.voteSuccess")),E.value=!1,await W()}catch(l){b.error(e("governance.msg.voteFailed")+": "+(l?.message||l))}finally{I.value=!1}}}async function je(l){h.value=l,K.value=[],Q.value=!0;try{const{output:i}=await c.execute(`governance votes ${l.id} --json`,8e3);K.value=ge(i)}catch{}}async function Me(l){h.value=l,H.value=null;try{const{output:i}=await c.execute(`governance analyze ${l.id} --json`,8e3);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}const j=be(i);if(!j){b.error(e("governance.msg.analyzeFailed")+": "+i.slice(0,120));return}H.value=j,X.value=!0}catch(i){b.error(e("governance.msg.analyzeFailed")+": "+(i?.message||i))}}async function Re(l){h.value=l,Y.value=null;try{const{output:i}=await c.execute(`governance predict ${l.id} --json`,8e3);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}const j=_e(i);if(!j){b.error(e("governance.msg.predictFailed")+": "+i.slice(0,120));return}Y.value=j,J.value=!0}catch(i){b.error(e("governance.msg.predictFailed")+": "+(i?.message||i))}}function ce(){z.title="",z.type="feature_request",z.proposerDid="",z.description=""}ue(W);const de={ws:c,t:e,EMPTY_IMG:D,loading:Z,creating:L,voting:I,proposals:q,proposalTypes:T,stats:O,errorState:C,activeTab:V,statusFilter:_,typeFilter:x,showCreateModal:G,showVoteModal:E,showDetailsModal:Q,showAnalysisModal:X,showPredictionModal:J,createForm:z,voteForm:A,currentProposal:h,detailVotes:K,currentAnalysis:H,currentPrediction:Y,proposalColumns:$,filteredProposals:M,statusLabel:ae,statusColor:S,statusBarColor:ee,typeLabel:ne,typeColor:te,typeBarColor:oe,impactLabel:r,impactColor:m,impactBarColor:R,voteLabel:Ce,voteColor:Ae,effortLabel:Oe,sentimentLabel:ze,yesPct:we,pctOfTotal:Le,loadAll:W,createProposal:Te,activateProposal:xe,closeProposal:Fe,runProposalAction:re,openVoteModal:De,submitVote:Ee,viewProposalDetails:je,runAnalyze:Me,runPredict:Re,resetCreateForm:ce,ref:P,computed:ie,onMounted:ue,reactive:se,get ReloadOutlined(){return Ke},get PlusOutlined(){return Je},get FileTextOutlined(){return qe},get PlayCircleOutlined(){return Be},get CheckCircleOutlined(){return Ye},get CloseCircleOutlined(){return Ge},get LikeOutlined(){return Ve},get ArrowRightOutlined(){return Ie},get message(){return b},get Empty(){return fe},get useI18n(){return ve},get useWsStore(){return pe},get parseTypes(){return me},get parseProposals(){return ye},get parseVotes(){return ge},get parseAnalysis(){return be},get parsePrediction(){return _e},get parseStats(){return ke},get detectGovernanceError(){return U},get formatGovernanceTime(){return $e},get PROPOSAL_STATUSES(){return Se},get PROPOSAL_TYPE_IDS(){return he}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},tt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ot={class:"page-title"},at={class:"page-sub"},nt={class:"type-head"},rt={class:"type-count"},lt={class:"type-name"},st={class:"type-desc"},it={class:"filter-bar"},ct={style:{color:"var(--text-primary)","font-weight":"500"}},dt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},ut={style:{"font-family":"monospace","font-size":"12px"}},pt={style:{color:"#52c41a"}},vt={style:{color:"#ff4d4f"}},ft={style:{color:"var(--text-muted)"}},mt={key:1,style:{color:"var(--text-muted)"}},yt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},gt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},bt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},_t={key:0,style:{"padding-top":"8px"}},kt={style:{"font-family":"monospace","font-size":"12px"}},Pt={key:0,style:{"font-family":"monospace","font-size":"12px"}},St={key:1,style:{color:"var(--text-muted)"}},ht={key:0,style:{"white-space":"pre-wrap"}},Ct={key:1,style:{color:"var(--text-muted)"}},At={style:{color:"var(--text-primary)","font-size":"13px",margin:"20px 0 10px"}},Ot={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},zt={style:{"margin-left":"8px","font-family":"monospace","font-size":"11px",color:"var(--text-secondary)"}},wt={key:0,style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Lt={style:{"margin-left":"auto",color:"var(--text-muted)","font-size":"11px"}},Tt={key:0,style:{"padding-top":"8px"}},xt={style:{"margin-bottom":"8px"}},Ft={style:{color:"var(--text-secondary)","font-size":"12px"}},Dt={style:{color:"var(--text-secondary)","font-size":"12px"}},Et={key:0,style:{"padding-top":"8px"}},jt={style:{"text-align":"center","margin-bottom":"20px"}},Mt={style:{color:"#52c41a"}},Rt={style:{color:"#ff4d4f"}},Nt={style:{color:"var(--text-muted)"}};function Ut(t,n,c,e,D,Z){const L=y("a-button"),I=y("a-space"),q=y("a-alert"),T=y("a-statistic"),O=y("a-card"),C=y("a-col"),V=y("a-row"),_=y("a-tag"),x=y("a-radio-button"),G=y("a-radio-group"),E=y("a-progress"),Q=y("a-popconfirm"),X=y("a-table"),J=y("a-tab-pane"),z=y("a-tabs"),A=y("a-input"),h=y("a-form-item"),K=y("a-select-option"),H=y("a-select"),Y=y("a-textarea"),$=y("a-form"),M=y("a-modal"),ae=y("a-input-number"),S=y("a-descriptions-item"),ee=y("a-descriptions"),ne=y("a-empty"),te=y("a-list-item"),oe=y("a-list");return d(),g("div",null,[f("div",tt,[f("div",null,[f("h2",ot,s(t.$t("governance.title")),1),f("p",at,s(t.$t("governance.subtitle")),1)]),o(I,null,{default:a(()=>[o(L,{loading:e.loading,onClick:e.loadAll},{icon:a(()=>[o(e.ReloadOutlined)]),default:a(()=>[u(" "+s(t.$t("governance.refresh")),1)]),_:1},8,["loading"]),o(L,{type:"primary",onClick:n[0]||(n[0]=r=>e.showCreateModal=!0)},{icon:a(()=>[o(e.PlusOutlined)]),default:a(()=>[u(" "+s(t.$t("governance.create")),1)]),_:1})]),_:1})]),p(" noDb banner "),e.errorState.noDb?(d(),k(q,{key:0,type:"info","show-icon":"",message:t.$t("governance.noDb.message"),description:t.$t("governance.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):p("v-if",!0),p(" Stat cards "),o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.total"),value:e.stats.proposalCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[o(e.FileTextOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.active"),value:e.stats.byStatus.active||0,"value-style":{color:(e.stats.byStatus.active||0)>0?"#1677ff":"#888",fontSize:"20px"}},{prefix:a(()=>[o(e.PlayCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.passed"),value:e.stats.byStatus.passed||0,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:a(()=>[o(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.rejected"),value:e.stats.byStatus.rejected||0,"value-style":{color:"#ff4d4f",fontSize:"20px"}},{prefix:a(()=>[o(e.CloseCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(C,{xs:24,sm:8,lg:4},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.votes"),value:e.stats.voteCount,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:a(()=>[o(e.LikeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),p(" Type catalogue "),o(O,{title:t.$t("governance.typesCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:a(()=>[o(V,{gutter:[12,12]},{default:a(()=>[(d(!0),g(F,null,N(e.proposalTypes,r=>(d(),k(C,{key:r.id,xs:12,sm:12,lg:6},{default:a(()=>[f("div",{class:"type-pill",style:Ne({borderLeftColor:e.typeColor(r.id)})},[f("div",nt,[o(_,{color:e.typeColor(r.id),style:{"font-family":"monospace"}},{default:a(()=>[u(s(r.id),1)]),_:2},1032,["color"]),f("span",rt,s(e.stats.byType[r.id]||0),1)]),f("div",lt,s(r.name),1),f("div",st,s(r.description),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),p(" Tabs "),o(z,{activeKey:e.activeTab,"onUpdate:activeKey":n[3]||(n[3]=r=>e.activeTab=r),class:"governance-tabs"},{default:a(()=>[p(" ── Proposals tab ────────────────────────────────────────── "),o(J,{key:"proposals",tab:t.$t("governance.tabs.proposals")},{default:a(()=>[f("div",it,[o(G,{value:e.statusFilter,"onUpdate:value":n[1]||(n[1]=r=>e.statusFilter=r),size:"small","button-style":"solid"},{default:a(()=>[o(x,{value:""},{default:a(()=>[u(s(t.$t("governance.filter.allStatuses")),1)]),_:1}),(d(!0),g(F,null,N(e.PROPOSAL_STATUSES,r=>(d(),k(x,{key:r,value:r},{default:a(()=>[u(s(e.statusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(G,{value:e.typeFilter,"onUpdate:value":n[2]||(n[2]=r=>e.typeFilter=r),size:"small"},{default:a(()=>[o(x,{value:""},{default:a(()=>[u(s(t.$t("governance.filter.allTypes")),1)]),_:1}),(d(!0),g(F,null,N(e.PROPOSAL_TYPE_IDS,r=>(d(),k(x,{key:r,value:r},{default:a(()=>[u(s(e.typeLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(X,{columns:e.proposalColumns,"data-source":e.filteredProposals,pagination:{pageSize:20,showTotal:r=>t.$t("governance.table.totalSuffix",{n:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:r,record:m})=>[r.key==="title"?(d(),g(F,{key:0},[f("span",ct,s(m.title||t.$t("governance.table.unnamed")),1),f("div",dt,s(m.id.slice(0,16)),1)],64)):p("v-if",!0),r.key==="type"?(d(),k(_,{key:1,color:e.typeColor(m.type),style:{"font-family":"monospace"}},{default:a(()=>[u(s(e.typeLabel(m.type)),1)]),_:2},1032,["color"])):p("v-if",!0),r.key==="status"?(d(),k(_,{key:2,color:e.statusColor(m.status)},{default:a(()=>[u(s(e.statusLabel(m.status)),1)]),_:2},1032,["color"])):p("v-if",!0),r.key==="tally"?(d(),g(F,{key:3},[f("span",ut,[f("span",pt,"+"+s(m.voteYes),1),n[17]||(n[17]=u(" / ",-1)),f("span",vt,"-"+s(m.voteNo),1),n[18]||(n[18]=u(" / ",-1)),f("span",ft,"~"+s(m.voteAbstain),1)]),m.voteYes+m.voteNo>0?(d(),k(E,{key:0,percent:e.yesPct(m),size:"small","show-info":!1,"stroke-color":m.voteYes>=m.voteNo?"#52c41a":"#ff4d4f",style:{"margin-top":"4px"}},null,8,["percent","stroke-color"])):p("v-if",!0)],64)):p("v-if",!0),r.key==="impact"?(d(),g(F,{key:4},[m.impactLevel?(d(),k(_,{key:0,color:e.impactColor(m.impactLevel)},{default:a(()=>[u(s(e.impactLabel(m.impactLevel)),1)]),_:2},1032,["color"])):(d(),g("span",mt,"—"))],64)):p("v-if",!0),r.key==="createdAt"?(d(),g("span",yt,s(e.formatGovernanceTime(m.createdAt)),1)):p("v-if",!0),r.key==="action"?(d(),g(F,{key:6},[o(L,{size:"small",type:"link",onClick:R=>e.viewProposalDetails(m)},{default:a(()=>[u(s(t.$t("governance.actions.details")),1)]),_:1},8,["onClick"]),m.status==="draft"?(d(),k(L,{key:0,size:"small",type:"link",onClick:R=>e.activateProposal(m)},{default:a(()=>[u(s(t.$t("governance.actions.activate")),1)]),_:1},8,["onClick"])):p("v-if",!0),m.status==="active"?(d(),k(L,{key:1,size:"small",type:"link",style:{color:"#52c41a"},onClick:R=>e.openVoteModal(m)},{default:a(()=>[u(s(t.$t("governance.actions.vote")),1)]),_:1},8,["onClick"])):p("v-if",!0),m.status==="active"?(d(),k(Q,{key:2,title:t.$t("governance.closeConfirm.title"),"ok-text":t.$t("governance.closeConfirm.ok"),"cancel-text":t.$t("governance.closeConfirm.cancel"),onConfirm:R=>e.closeProposal(m)},{default:a(()=>[o(L,{size:"small",type:"link",danger:""},{default:a(()=>[u(s(t.$t("governance.actions.close")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):p("v-if",!0),o(L,{size:"small",type:"link",onClick:R=>e.runAnalyze(m)},{default:a(()=>[u(s(t.$t("governance.actions.analyze")),1)]),_:1},8,["onClick"]),o(L,{size:"small",type:"link",onClick:R=>e.runPredict(m)},{default:a(()=>[u(s(t.$t("governance.actions.predict")),1)]),_:1},8,["onClick"])],64)):p("v-if",!0)]),emptyText:a(()=>[f("div",gt,[o(e.FileTextOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),u(" "+s(e.statusFilter||e.typeFilter?t.$t("governance.table.emptyFiltered"):t.$t("governance.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Status & type breakdown tab ──────────────────────────── "),o(J,{key:"breakdown",tab:t.$t("governance.tabs.breakdown")},{default:a(()=>[o(V,{gutter:[16,16]},{default:a(()=>[o(C,{xs:24,lg:12},{default:a(()=>[o(O,{title:t.$t("governance.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[(d(!0),g(F,null,N(e.PROPOSAL_STATUSES,r=>(d(),g("div",{key:r,class:"bd-row"},[o(_,{color:e.statusColor(r),style:{"min-width":"60px","text-align":"center"}},{default:a(()=>[u(s(e.statusLabel(r)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byStatus[r]||0,e.stats.proposalCount),"stroke-color":e.statusBarColor(r),format:()=>`${e.stats.byStatus[r]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(C,{xs:24,lg:12},{default:a(()=>[o(O,{title:t.$t("governance.breakdown.byType"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[(d(!0),g(F,null,N(e.PROPOSAL_TYPE_IDS,r=>(d(),g("div",{key:r,class:"bd-row"},[o(_,{color:e.typeColor(r),style:{"min-width":"90px","text-align":"center"}},{default:a(()=>[u(s(e.typeLabel(r)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byType[r]||0,e.stats.proposalCount),"stroke-color":e.typeBarColor(r),format:()=>`${e.stats.byType[r]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),p(" ── Create proposal modal ───────────────────────────────── "),o(M,{open:e.showCreateModal,"onUpdate:open":n[8]||(n[8]=r=>e.showCreateModal=r),title:t.$t("governance.create_modal.title"),"confirm-loading":e.creating,width:560,"ok-text":t.$t("governance.create_modal.ok"),"cancel-text":t.$t("governance.create_modal.cancel"),onOk:e.createProposal,onCancel:e.resetCreateForm},{default:a(()=>[o($,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(h,{label:t.$t("governance.create_modal.titleLabel"),required:""},{default:a(()=>[o(A,{value:e.createForm.title,"onUpdate:value":n[4]||(n[4]=r=>e.createForm.title=r),placeholder:t.$t("governance.create_modal.titlePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.create_modal.typeLabel"),required:""},{default:a(()=>[o(H,{value:e.createForm.type,"onUpdate:value":n[5]||(n[5]=r=>e.createForm.type=r)},{default:a(()=>[(d(!0),g(F,null,N(e.PROPOSAL_TYPE_IDS,r=>(d(),k(K,{key:r,value:r},{default:a(()=>[u(s(e.typeLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.create_modal.proposerLabel")},{default:a(()=>[o(A,{value:e.createForm.proposerDid,"onUpdate:value":n[6]||(n[6]=r=>e.createForm.proposerDid=r),placeholder:t.$t("governance.create_modal.proposerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.create_modal.descLabel")},{default:a(()=>[o(Y,{value:e.createForm.description,"onUpdate:value":n[7]||(n[7]=r=>e.createForm.description=r),placeholder:t.$t("governance.create_modal.descPlaceholder"),"auto-size":{minRows:3,maxRows:8}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Vote modal ───────────────────────────────────────────── "),o(M,{open:e.showVoteModal,"onUpdate:open":n[13]||(n[13]=r=>e.showVoteModal=r),title:t.$t("governance.vote_modal.title",{title:e.currentProposal?.title||""}),"confirm-loading":e.voting,width:540,"ok-text":t.$t("governance.vote_modal.ok"),"cancel-text":t.$t("governance.vote_modal.cancel"),onOk:e.submitVote},{default:a(()=>[o($,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(h,{label:t.$t("governance.vote_modal.voterLabel"),required:""},{default:a(()=>[o(A,{value:e.voteForm.voterDid,"onUpdate:value":n[9]||(n[9]=r=>e.voteForm.voterDid=r),placeholder:"did:key:..."},null,8,["value"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.vote_modal.valueLabel"),required:""},{default:a(()=>[o(G,{value:e.voteForm.value,"onUpdate:value":n[10]||(n[10]=r=>e.voteForm.value=r),"button-style":"solid"},{default:a(()=>[o(x,{value:"yes",style:{color:"#52c41a"}},{default:a(()=>[u(s(t.$t("governance.vote_modal.yes")),1)]),_:1}),o(x,{value:"no",style:{color:"#ff4d4f"}},{default:a(()=>[u(s(t.$t("governance.vote_modal.no")),1)]),_:1}),o(x,{value:"abstain"},{default:a(()=>[u(s(t.$t("governance.vote_modal.abstain")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.vote_modal.weightLabel")},{default:a(()=>[o(ae,{value:e.voteForm.weight,"onUpdate:value":n[11]||(n[11]=r=>e.voteForm.weight=r),min:.1,step:.1,style:{width:"120px"}},null,8,["value"]),f("span",bt,s(t.$t("governance.vote_modal.weightHint")),1)]),_:1},8,["label"]),o(h,{label:t.$t("governance.vote_modal.reasonLabel")},{default:a(()=>[o(Y,{value:e.voteForm.reason,"onUpdate:value":n[12]||(n[12]=r=>e.voteForm.reason=r),placeholder:t.$t("governance.vote_modal.reasonPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Proposal details modal ──────────────────────────────── "),o(M,{open:e.showDetailsModal,"onUpdate:open":n[14]||(n[14]=r=>e.showDetailsModal=r),title:t.$t("governance.details.title",{title:e.currentProposal?.title||""}),width:780,footer:null},{default:a(()=>[e.currentProposal?(d(),g("div",_t,[o(ee,{column:2,size:"small",bordered:""},{default:a(()=>[o(S,{label:t.$t("governance.details.id"),span:2},{default:a(()=>[f("span",kt,s(e.currentProposal.id),1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.type")},{default:a(()=>[o(_,{color:e.typeColor(e.currentProposal.type)},{default:a(()=>[u(s(e.typeLabel(e.currentProposal.type)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.status")},{default:a(()=>[o(_,{color:e.statusColor(e.currentProposal.status)},{default:a(()=>[u(s(e.statusLabel(e.currentProposal.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.proposer"),span:2},{default:a(()=>[e.currentProposal.proposerDid?(d(),g("span",Pt,s(e.currentProposal.proposerDid),1)):(d(),g("span",St,s(t.$t("governance.details.proposerUnset")),1))]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.description"),span:2},{default:a(()=>[e.currentProposal.description?(d(),g("div",ht,s(e.currentProposal.description),1)):(d(),g("span",Ct,"—"))]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.tally"),span:2},{default:a(()=>[o(I,null,{default:a(()=>[o(_,{color:"green"},{default:a(()=>[u(s(t.$t("governance.details.tallyYes",{n:e.currentProposal.voteYes})),1)]),_:1}),o(_,{color:"red"},{default:a(()=>[u(s(t.$t("governance.details.tallyNo",{n:e.currentProposal.voteNo})),1)]),_:1}),o(_,null,{default:a(()=>[u(s(t.$t("governance.details.tallyAbstain",{n:e.currentProposal.voteAbstain})),1)]),_:1})]),_:1})]),_:1},8,["label"]),e.currentProposal.impactLevel?(d(),k(S,{key:0,label:t.$t("governance.details.impact")},{default:a(()=>[o(_,{color:e.impactColor(e.currentProposal.impactLevel)},{default:a(()=>[u(s(e.impactLabel(e.currentProposal.impactLevel)),1)]),_:1},8,["color"])]),_:1},8,["label"])):p("v-if",!0),o(S,{label:t.$t("governance.details.createdAt")},{default:a(()=>[u(s(e.formatGovernanceTime(e.currentProposal.createdAt)),1)]),_:1},8,["label"]),e.currentProposal.votingStartsAt?(d(),k(S,{key:1,label:t.$t("governance.details.votingStartsAt")},{default:a(()=>[u(s(e.formatGovernanceTime(e.currentProposal.votingStartsAt)),1)]),_:1},8,["label"])):p("v-if",!0),e.currentProposal.votingEndsAt?(d(),k(S,{key:2,label:t.$t("governance.details.votingEndsAt")},{default:a(()=>[u(s(e.formatGovernanceTime(e.currentProposal.votingEndsAt)),1)]),_:1},8,["label"])):p("v-if",!0)]),_:1}),p(" Votes list "),f("h4",At,s(t.$t("governance.details.votesHeader")),1),e.detailVotes.length?(d(),k(oe,{key:1,size:"small","data-source":e.detailVotes,pagination:{pageSize:8}},{renderItem:a(({item:r})=>[o(te,null,{default:a(()=>[o(_,{color:e.voteColor(r.vote),style:{"min-width":"50px","text-align":"center"}},{default:a(()=>[u(s(e.voteLabel(r.vote)),1)]),_:2},1032,["color"]),f("span",Ot,"w="+s(r.weight),1),f("span",zt,s(r.voterDid),1),r.reason?(d(),g("span",wt,"— "+s(r.reason),1)):p("v-if",!0),f("span",Lt,s(e.formatGovernanceTime(r.createdAt)),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(ne,{key:0,description:t.$t("governance.details.votesEmpty"),image:e.EMPTY_IMG},null,8,["description","image"]))])):p("v-if",!0)]),_:1},8,["open","title"]),p(" ── Analysis modal ──────────────────────────────────────── "),o(M,{open:e.showAnalysisModal,"onUpdate:open":n[15]||(n[15]=r=>e.showAnalysisModal=r),title:t.$t("governance.analysis.title",{title:e.currentProposal?.title||""}),width:640,footer:null},{default:a(()=>[e.currentAnalysis?(d(),g("div",Tt,[o(V,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:a(()=>[o(C,{span:8},{default:a(()=>[o(T,{title:t.$t("governance.analysis.impactLevel"),value:e.impactLabel(e.currentAnalysis.impactLevel),"value-style":{color:e.impactBarColor(e.currentAnalysis.impactLevel),fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1}),o(C,{span:8},{default:a(()=>[o(T,{title:t.$t("governance.analysis.effort"),value:e.effortLabel(e.currentAnalysis.estimatedEffort),"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(C,{span:8},{default:a(()=>[o(T,{title:t.$t("governance.analysis.sentiment"),value:e.sentimentLabel(e.currentAnalysis.communitySentiment),"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1})]),_:1}),o(O,{title:t.$t("governance.analysis.riskBenefit"),size:"small",style:{"margin-bottom":"12px"}},{default:a(()=>[f("div",xt,[f("span",Ft,s(t.$t("governance.analysis.riskScore")),1),o(E,{percent:Math.round(e.currentAnalysis.riskScore*100),"stroke-color":"#ff4d4f"},null,8,["percent"])]),f("div",null,[f("span",Dt,s(t.$t("governance.analysis.benefitScore")),1),o(E,{percent:Math.round(e.currentAnalysis.benefitScore*100),"stroke-color":"#52c41a"},null,8,["percent"])])]),_:1},8,["title"]),e.currentAnalysis.affectedComponents.length?(d(),k(O,{key:0,title:t.$t("governance.analysis.components"),size:"small",style:{"margin-bottom":"12px"}},{default:a(()=>[(d(!0),g(F,null,N(e.currentAnalysis.affectedComponents,r=>(d(),k(_,{key:r,color:"blue"},{default:a(()=>[u(s(r),1)]),_:2},1024))),128))]),_:1},8,["title"])):p("v-if",!0),e.currentAnalysis.recommendations.length?(d(),k(O,{key:1,title:t.$t("governance.analysis.recommendations"),size:"small"},{default:a(()=>[o(oe,{size:"small","data-source":e.currentAnalysis.recommendations},{renderItem:a(({item:r})=>[o(te,null,{default:a(()=>[o(e.ArrowRightOutlined,{style:{color:"#faad14","margin-right":"8px"}}),u(" "+s(r),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):p("v-if",!0)])):p("v-if",!0)]),_:1},8,["open","title"]),p(" ── Prediction modal ────────────────────────────────────── "),o(M,{open:e.showPredictionModal,"onUpdate:open":n[16]||(n[16]=r=>e.showPredictionModal=r),title:t.$t("governance.prediction.title",{title:e.currentProposal?.title||""}),width:540,footer:null},{default:a(()=>[e.currentPrediction?(d(),g("div",Et,[f("div",jt,[o(_,{color:e.currentPrediction.predictedOutcome==="pass"?"green":"red",style:{"font-size":"16px",padding:"6px 14px"}},{default:a(()=>[u(s(e.currentPrediction.predictedOutcome==="pass"?t.$t("governance.prediction.outcomePass"):t.$t("governance.prediction.outcomeReject")),1)]),_:1},8,["color"])]),o(ee,{column:2,size:"small",bordered:""},{default:a(()=>[o(S,{label:t.$t("governance.prediction.confidence"),span:2},{default:a(()=>[o(E,{percent:Math.round(e.currentPrediction.confidence*100),"stroke-color":e.currentPrediction.confidence>=.6?"#52c41a":"#faad14"},null,8,["percent","stroke-color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.basedOn")},{default:a(()=>[o(_,{color:e.currentPrediction.basedOn==="votes"?"blue":"orange"},{default:a(()=>[u(s(e.currentPrediction.basedOn==="votes"?t.$t("governance.prediction.basedOnVotes"):t.$t("governance.prediction.basedOnHeuristic")),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.sampleSize")},{default:a(()=>[u(s(e.currentPrediction.sampleSize),1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.yesProb")},{default:a(()=>[f("span",Mt,s((e.currentPrediction.yesProb*100).toFixed(1))+"%",1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.noProb")},{default:a(()=>[f("span",Rt,s((e.currentPrediction.noProb*100).toFixed(1))+"%",1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.abstainProb"),span:2},{default:a(()=>[f("span",Nt,s((e.currentPrediction.abstainProb*100).toFixed(1))+"%",1)]),_:1},8,["label"])]),_:1})])):p("v-if",!0)]),_:1},8,["open","title"])])}const Bt=Ue(et,[["render",Ut],["__scopeId","data-v-3a4a41f3"],["__file","/tmp/cc-web-panel-nNRGJZ/repo/packages/web-panel/src/views/Governance.vue"]]);export{Bt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as b,J as g,U as w,R as d,c as a,K as t,V as f,S,o as ae,a as Q,b as V,r as _,P as c,Q as m,F as h,Z as E,$ as Se}from"./vendor-BvqAck49.js";import{_ as he,b as oe,u as re,d as p}from"./index-DMPQqeLb.js";import{s as Ce}from"./community-parser-CO25nZFt.js";import{a0 as Fe,f as Te,$ as Oe,a3 as we,as as Ae,R as Me}from"./icons-DP3uiYxy.js";function X(s){const i=Ce(s);if(!i)return null;try{return JSON.parse(i)}catch{}const n=i.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!n)return null;try{return JSON.parse(n[0])}catch{return null}}const Ne=Object.freeze(["online","offline","busy","degraded"]),ze=Object.freeze(["queued","dispatched","running","complete","failed"]),Ie=Object.freeze(["standard","encrypted","federated"]);function F(s,i=0){return typeof s=="number"&&Number.isFinite(s)?s:i}function Le(s){if(Array.isArray(s))return s.filter(i=>typeof i=="string");if(typeof s=="string")try{const i=JSON.parse(s);if(Array.isArray(i))return i.filter(n=>typeof n=="string")}catch{}return[]}function je(s,i=0){if(!s||typeof s!="object")return null;const n=s.id||"";return n?{key:n,id:n,nodeId:s.nodeId??s.node_id??"",endpoint:s.endpoint||"",capabilities:Le(s.capabilities),gpuMemoryMb:F(s.gpuMemoryMb??s.gpu_memory_mb,0),status:String(s.status||"offline").toLowerCase(),lastHeartbeat:s.lastHeartbeat??s.last_heartbeat??null,taskCount:F(s.taskCount??s.task_count,0),createdAt:s.createdAt??s.created_at??null,_idx:i}:null}function ie(s){const i=X(s);return Array.isArray(i)?i.map(je).filter(Boolean):[]}function Ue(s,i=0){if(!s||typeof s!="object")return null;const n=s.id||"";return n?{key:n,id:n,model:String(s.model||""),input:s.input??"",output:s.output??"",privacyMode:String(s.privacyMode??s.privacy_mode??"standard").toLowerCase(),priority:F(s.priority,5),assignedNode:s.assignedNode??s.assigned_node??null,status:String(s.status||"queued").toLowerCase(),durationMs:s.durationMs??s.duration_ms??null,createdAt:s.createdAt??s.created_at??null,completedAt:s.completedAt??s.completed_at??null,_idx:i}:null}function le(s){const i=X(s);return Array.isArray(i)?i.map(Ue).filter(Boolean):[]}const Re={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function se(s){const i=JSON.parse(JSON.stringify(Re)),n=X(s);return!n||typeof n!="object"||Array.isArray(n)||(n.nodes&&typeof n.nodes=="object"&&(i.nodes.total=F(n.nodes.total,0),i.nodes.online=F(n.nodes.online,0),i.nodes.offline=F(n.nodes.offline,0),i.nodes.busy=F(n.nodes.busy,0)),n.tasks&&typeof n.tasks=="object"&&(i.tasks.total=F(n.tasks.total,0),i.tasks.queued=F(n.tasks.queued,0),i.tasks.completed=F(n.tasks.completed,0),i.tasks.failed=F(n.tasks.failed,0),i.tasks.avgDurationMs=F(n.tasks.avgDurationMs??n.tasks.avg_duration_ms,0))),i}function De(s){if(s==null||s==="")return"—";const i=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(i.getTime())?String(s):i.toLocaleString("zh-CN",{hour12:!1})}const Pe={__name:"Inference",setup(s,{expose:i}){i();const{t:n}=oe(),e=re(),H=_(!1),J=_(!1),T=_(!1),U=_(""),R=_(""),I=_([]),D=_([]),L=_({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),M=_("nodes"),N=_(""),q=_(""),C=_(""),O=_(!1),j=_(!1),k=Q({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),v=Q({model:"",input:"",priority:5,mode:"standard"}),K=V(()=>[{title:n("inference.nodeColumns.nodeId"),key:"nodeId"},{title:n("inference.nodeColumns.capabilities"),key:"capabilities",width:"220px"},{title:n("inference.nodeColumns.gpu"),key:"gpu",width:"100px"},{title:n("inference.nodeColumns.status"),key:"status",width:"100px"},{title:n("inference.nodeColumns.taskCount"),key:"taskCount",width:"90px"},{title:n("inference.nodeColumns.lastHeartbeat"),key:"lastHeartbeat",width:"160px"},{title:n("inference.nodeColumns.action"),key:"action",width:"210px"}]),W=V(()=>[{title:n("inference.taskColumns.model"),key:"model"},{title:n("inference.taskColumns.privacyMode"),key:"privacyMode",width:"110px"},{title:n("inference.taskColumns.priority"),key:"priority",width:"80px"},{title:n("inference.taskColumns.assignedNode"),key:"assignedNode",width:"140px"},{title:n("inference.taskColumns.status"),key:"status",width:"110px"},{title:n("inference.taskColumns.duration"),key:"duration",width:"110px"},{title:n("inference.taskColumns.createdAt"),key:"createdAt",width:"160px"},{title:n("inference.taskColumns.action"),key:"action",width:"140px"}]),P=V(()=>N.value?I.value.filter(o=>o.status===N.value):I.value),A=V(()=>{let o=D.value;return q.value&&(o=o.filter(r=>r.status===q.value)),C.value&&(o=o.filter(r=>r.privacyMode===C.value)),o});function B(o){const r=`inference.nodeStatus.${o}`,y=n(r);return y===r?o:y}function Y(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function G(o){const r=`inference.taskStatus.${o}`,y=n(r);return y===r?o:y}function Z(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function l(o){const r=`inference.privacy.${o}`,y=n(r);return y===r?o:y}function u(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function x(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function de(o){const r=I.value.find(y=>y.id===o);return r?r.nodeId:o.slice(0,8)}function ce(o,r){return o?o.length>r?o.slice(0,r)+"...":o:""}function ue(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function fe(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function me(o){return o.status!=="complete"&&o.status!=="failed"}function ye({key:o}){o==="register"?O.value=!0:o==="submit"&&(j.value=!0)}async function z(){H.value=!0;try{const[o,r,y]=await Promise.all([e.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference stats --json",8e3).catch(()=>({output:""}))]);I.value=ie(o.output),D.value=le(r.output),L.value=se(y.output)}catch(o){p.error(n("inference.messages.loadFailed",{err:o?.message||o}))}finally{H.value=!1}}async function ge(){const o=k.nodeId.trim();if(!o){p.warning(n("inference.messages.nodeIdRequired"));return}J.value=!0;try{const r=[`inference register "${o.replace(/"/g,'\\"')}"`];if(k.endpoint.trim()&&r.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.capabilities.trim()){const ne=k.capabilities.split(/[,\s]+/).filter(Boolean).join(",");ne&&r.push(`--capabilities "${ne}"`)}k.gpuMemory!=null&&r.push(`--gpu ${k.gpuMemory}`),r.push("--json");const{output:y}=await e.execute(r.join(" "),1e4);if(/error|failed|失败/i.test(y)&&!/"nodeId"/.test(y)){p.error(n("inference.messages.registerFailed",{err:y.slice(0,120)}));return}p.success(n("inference.messages.registerOk")),O.value=!1,$(),await z()}catch(r){p.error(n("inference.messages.registerFailed",{err:r?.message||r}))}finally{J.value=!1}}async function pe(){const o=v.model.trim();if(!o){p.warning(n("inference.messages.modelRequired"));return}T.value=!0;try{const r=[`inference submit "${o.replace(/"/g,'\\"')}"`];v.input.trim()&&r.push(`--input "${v.input.trim().replace(/"/g,'\\"')}"`),v.priority!=null&&r.push(`--priority ${v.priority}`),r.push(`--mode ${v.mode}`),r.push("--json");const{output:y}=await e.execute(r.join(" "),12e3);if(/error|failed|失败/i.test(y)&&!/"taskId"/.test(y)){p.error(n("inference.messages.submitFailed",{err:y.slice(0,120)}));return}p.success(n("inference.messages.submitOk")),j.value=!1,ee(),M.value="tasks",await z()}catch(r){p.error(n("inference.messages.submitFailed",{err:r?.message||r}))}finally{T.value=!1}}async function be(o){U.value=o.id;try{const{output:r}=await e.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(r)&&!/"updated"/.test(r)){p.error(n("inference.messages.heartbeatFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.heartbeatOk")),await z()}catch(r){p.error(n("inference.messages.heartbeatFailed",{err:r?.message||r}))}finally{U.value=""}}async function ke(o,r){if(r!==o.status)try{const{output:y}=await e.execute(`inference node-status ${o.id} ${r} --json`,8e3);if(/error|invalid/i.test(y)&&!/"updated"/.test(y)){p.error(n("inference.messages.statusFailed",{err:y.slice(0,120)}));return}p.success(n("inference.messages.statusOk",{status:B(r)})),await z()}catch(y){p.error(n("inference.messages.statusFailed",{err:y?.message||y}))}}async function _e(o){try{const{output:r}=await e.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(r)&&!/"removed"/.test(r)){p.error(n("inference.messages.unregisterFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.unregisterOk")),await z()}catch(r){p.error(n("inference.messages.unregisterFailed",{err:r?.message||r}))}}async function ve(o){R.value=o.id;try{const{output:r}=await e.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(r)&&!/"completed"/.test(r)){p.error(n("inference.messages.completeFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.completeOk")),await z()}catch(r){p.error(n("inference.messages.completeFailed",{err:r?.message||r}))}finally{R.value=""}}async function xe(o){try{const{output:r}=await e.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(r)&&!/"failed"/.test(r)){p.error(n("inference.messages.failFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.failOk")),await z()}catch(r){p.error(n("inference.messages.failFailed",{err:r?.message||r}))}}function $(){k.nodeId="",k.endpoint="",k.capabilities="",k.gpuMemory=null}function ee(){v.model="",v.input="",v.priority=5,v.mode="standard"}ae(z);const te={t:n,ws:e,loading:H,registering:J,submitting:T,heartbeatId:U,completingId:R,nodes:I,tasks:D,stats:L,activeTab:M,nodeStatusFilter:N,taskStatusFilter:q,taskPrivacyFilter:C,showRegisterModal:O,showSubmitModal:j,registerForm:k,submitForm:v,nodeColumns:K,taskColumns:W,filteredNodes:P,filteredTasks:A,nodeStatusLabel:B,nodeStatusColor:Y,taskStatusLabel:G,taskStatusColor:Z,privacyLabel:l,privacyColor:u,priorityColor:x,nodeShortName:de,truncate:ce,formatGpuMemory:ue,canComplete:fe,canFail:me,handleNewClick:ye,loadAll:z,registerNode:ge,submitTask:pe,sendHeartbeat:be,transitionStatus:ke,unregisterNode:_e,completeTask:ve,failTask:xe,resetRegisterForm:$,resetSubmitForm:ee,ref:_,computed:V,onMounted:ae,reactive:Q,get useI18n(){return oe},get ReloadOutlined(){return Me},get PlusOutlined(){return Ae},get CloudServerOutlined(){return we},get ThunderboltOutlined(){return Oe},get CheckCircleOutlined(){return Te},get ClockCircleOutlined(){return Fe},get message(){return p},get useWsStore(){return re},get parseNodes(){return ie},get parseTasks(){return le},get parseStats(){return se},get formatInferenceTime(){return De},get NODE_STATUSES(){return Ne},get TASK_STATUSES(){return ze},get PRIVACY_MODES(){return Ie}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Ee={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},qe={class:"page-title"},Be={class:"page-sub"},Ve={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},He={class:"filter-bar"},Je={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Ye={key:1,style:{color:"var(--text-muted)"}},Ge={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},We={key:1,style:{color:"var(--text-muted)"}},Ze={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Qe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Xe={class:"filter-bar"},$e={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},et={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},tt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},nt={key:1,style:{color:"var(--text-muted)"}},at={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},ot={key:1,style:{color:"var(--text-muted)"}},rt={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function lt(s,i,n,e,H,J){const T=b("a-button"),U=b("a-menu-item"),R=b("a-menu"),I=b("a-dropdown"),D=b("a-space"),L=b("a-statistic"),M=b("a-card"),N=b("a-col"),q=b("a-row"),C=b("a-tag"),O=b("a-radio-button"),j=b("a-radio-group"),k=b("a-popconfirm"),v=b("a-table"),K=b("a-tab-pane"),W=b("a-tabs"),P=b("a-input"),A=b("a-form-item"),B=b("a-input-number"),Y=b("a-form"),G=b("a-modal"),Z=b("a-textarea");return c(),g("div",null,[w("div",Ee,[w("div",null,[w("h2",qe,d(e.t("inference.title")),1),w("p",Be,d(e.t("inference.subtitle")),1)]),a(D,null,{default:t(()=>[a(T,{loading:e.loading,onClick:e.loadAll},{icon:t(()=>[a(e.ReloadOutlined)]),default:t(()=>[m(" "+d(e.t("inference.refresh")),1)]),_:1},8,["loading"]),a(I,{trigger:["click"]},{overlay:t(()=>[a(R,{onClick:e.handleNewClick},{default:t(()=>[a(U,{key:"register"},{default:t(()=>[a(e.CloudServerOutlined),m(" "+d(e.t("inference.actions.register")),1)]),_:1}),a(U,{key:"submit"},{default:t(()=>[a(e.ThunderboltOutlined),m(" "+d(e.t("inference.actions.submit")),1)]),_:1})]),_:1})]),default:t(()=>[a(T,{type:"primary"},{icon:t(()=>[a(e.PlusOutlined)]),default:t(()=>[m(" "+d(e.t("inference.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),f(" Stat cards "),a(q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.totalNodes"),value:e.stats.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(e.CloudServerOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.onlineNodes"),value:e.stats.nodes.online,"value-style":{color:e.stats.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[a(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.totalTasks"),value:e.stats.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.queued"),value:e.stats.tasks.queued,"value-style":{color:e.stats.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(e.ClockCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(N,{xs:24,sm:8,lg:4},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.avgDuration"),value:e.stats.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),f(" Node status breakdown "),e.stats.nodes.total>0?(c(),S(M,{key:0,title:e.t("inference.breakdown.title"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(D,{size:[12,8],wrap:""},{default:t(()=>[a(C,{color:"green"},{default:t(()=>[m(d(e.t("inference.breakdown.online",{count:e.stats.nodes.online})),1)]),_:1}),a(C,{color:"orange"},{default:t(()=>[m(d(e.t("inference.breakdown.busy",{count:e.stats.nodes.busy})),1)]),_:1}),a(C,{color:"default"},{default:t(()=>[m(d(e.t("inference.breakdown.offline",{count:e.stats.nodes.offline})),1)]),_:1}),w("span",Ve,d(e.t("inference.breakdown.extra",{complete:e.stats.tasks.completed,failed:e.stats.tasks.failed})),1)]),_:1})]),_:1},8,["title"])):f("v-if",!0),f(" Tabs "),a(W,{activeKey:e.activeTab,"onUpdate:activeKey":i[3]||(i[3]=l=>e.activeTab=l),class:"inference-tabs"},{default:t(()=>[f(" ── Nodes tab ─────────────────────────────────────────────── "),a(K,{key:"nodes",tab:e.t("inference.tabs.nodes")},{default:t(()=>[w("div",He,[a(j,{value:e.nodeStatusFilter,"onUpdate:value":i[0]||(i[0]=l=>e.nodeStatusFilter=l),size:"small","button-style":"solid"},{default:t(()=>[a(O,{value:""},{default:t(()=>[m(d(e.t("inference.filter.all")),1)]),_:1}),(c(!0),g(h,null,E(e.NODE_STATUSES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.nodeStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(v,{columns:e.nodeColumns,"data-source":e.filteredNodes,pagination:{pageSize:20,showTotal:l=>e.t("inference.totals.rows",{count:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:l,record:u})=>[l.key==="nodeId"?(c(),g(h,{key:0},[w("span",Je,d(u.nodeId),1),u.endpoint?(c(),g("div",Ke,d(e.truncate(u.endpoint,50)),1)):f("v-if",!0)],64)):f("v-if",!0),l.key==="capabilities"?(c(),g(h,{key:1},[(c(!0),g(h,null,E(u.capabilities.slice(0,4),x=>(c(),S(C,{key:x,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[m(d(x),1)]),_:2},1024))),128)),u.capabilities.length>4?(c(),S(C,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[m("+"+d(u.capabilities.length-4),1)]),_:2},1024)):f("v-if",!0),u.capabilities.length?f("v-if",!0):(c(),g("span",Ye,"—"))],64)):f("v-if",!0),l.key==="gpu"?(c(),g(h,{key:2},[u.gpuMemoryMb>0?(c(),g("span",Ge,d(e.formatGpuMemory(u.gpuMemoryMb)),1)):(c(),g("span",We,"—"))],64)):f("v-if",!0),l.key==="status"?(c(),S(C,{key:3,color:e.nodeStatusColor(u.status)},{default:t(()=>[m(d(e.nodeStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),l.key==="taskCount"?(c(),S(C,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[m(d(u.taskCount),1)]),_:2},1024)):f("v-if",!0),l.key==="lastHeartbeat"?(c(),g("span",Ze,d(e.formatInferenceTime(u.lastHeartbeat)),1)):f("v-if",!0),l.key==="action"?(c(),g(h,{key:6},[a(T,{size:"small",type:"link",loading:e.heartbeatId===u.id,onClick:x=>e.sendHeartbeat(u)},{default:t(()=>[m(d(e.t("inference.rowActions.heartbeat")),1)]),_:1},8,["loading","onClick"]),a(I,{trigger:["click"]},{overlay:t(()=>[a(R,{onClick:x=>e.transitionStatus(u,x.key)},{default:t(()=>[(c(!0),g(h,null,E(e.NODE_STATUSES,x=>(c(),S(U,{key:x,disabled:x===u.status},{default:t(()=>[m(d(e.nodeStatusLabel(x)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(T,{size:"small",type:"link"},{default:t(()=>[m(d(e.t("inference.rowActions.statusDropdown")),1)]),_:1})]),_:2},1024),a(k,{title:e.t("inference.rowActions.unregisterConfirm"),"ok-text":e.t("inference.rowActions.unregisterOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.unregisterNode(u)},{default:t(()=>[a(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.unregister")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):f("v-if",!0)]),emptyText:t(()=>[w("div",Qe,[a(e.CloudServerOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.nodeStatusFilter?e.t("inference.empty.filteredNodes"):e.t("inference.empty.noNodes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),f(" ── Tasks tab ─────────────────────────────────────────────── "),a(K,{key:"tasks",tab:e.t("inference.tabs.tasks")},{default:t(()=>[w("div",Xe,[a(j,{value:e.taskStatusFilter,"onUpdate:value":i[1]||(i[1]=l=>e.taskStatusFilter=l),size:"small"},{default:t(()=>[a(O,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allStatuses")),1)]),_:1}),(c(!0),g(h,null,E(e.TASK_STATUSES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.taskStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(j,{value:e.taskPrivacyFilter,"onUpdate:value":i[2]||(i[2]=l=>e.taskPrivacyFilter=l),size:"small"},{default:t(()=>[a(O,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allModes")),1)]),_:1}),(c(!0),g(h,null,E(e.PRIVACY_MODES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.privacyLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(v,{columns:e.taskColumns,"data-source":e.filteredTasks,pagination:{pageSize:20,showTotal:l=>e.t("inference.totals.rows",{count:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:l,record:u})=>[l.key==="model"?(c(),g(h,{key:0},[w("span",$e,d(u.model),1),u.input?(c(),g("div",et,d(e.truncate(u.input,60)),1)):f("v-if",!0)],64)):f("v-if",!0),l.key==="privacyMode"?(c(),S(C,{key:1,color:e.privacyColor(u.privacyMode)},{default:t(()=>[m(d(e.privacyLabel(u.privacyMode)),1)]),_:2},1032,["color"])):f("v-if",!0),l.key==="priority"?(c(),g("span",{key:2,style:Se({color:e.priorityColor(u.priority),fontWeight:500})},d(u.priority),5)):f("v-if",!0),l.key==="assignedNode"?(c(),g(h,{key:3},[u.assignedNode?(c(),g("span",tt,d(e.nodeShortName(u.assignedNode)),1)):(c(),g("span",nt,"—"))],64)):f("v-if",!0),l.key==="status"?(c(),S(C,{key:4,color:e.taskStatusColor(u.status)},{default:t(()=>[m(d(e.taskStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),l.key==="duration"?(c(),g(h,{key:5},[u.durationMs!=null?(c(),g("span",at,d(u.durationMs)+" ms ",1)):(c(),g("span",ot,"—"))],64)):f("v-if",!0),l.key==="createdAt"?(c(),g("span",rt,d(e.formatInferenceTime(u.createdAt)),1)):f("v-if",!0),l.key==="action"?(c(),g(h,{key:7},[e.canComplete(u)?(c(),S(T,{key:0,size:"small",type:"link",loading:e.completingId===u.id,onClick:x=>e.completeTask(u)},{default:t(()=>[m(d(e.t("inference.rowActions.complete")),1)]),_:1},8,["loading","onClick"])):f("v-if",!0),e.canFail(u)?(c(),S(k,{key:1,title:e.t("inference.rowActions.failConfirm"),"ok-text":e.t("inference.rowActions.failOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.failTask(u)},{default:t(()=>[a(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.fail")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):f("v-if",!0)],64)):f("v-if",!0)]),emptyText:t(()=>[w("div",it,[a(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.taskStatusFilter||e.taskPrivacyFilter?e.t("inference.empty.filteredTasks"):e.t("inference.empty.noTasks")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Register node modal ──────────────────────────────────── "),a(G,{open:e.showRegisterModal,"onUpdate:open":i[8]||(i[8]=l=>e.showRegisterModal=l),title:e.t("inference.register.title"),"confirm-loading":e.registering,width:520,"ok-text":e.t("inference.register.ok"),"cancel-text":e.t("common.cancel"),onOk:e.registerNode,onCancel:e.resetRegisterForm},{default:t(()=>[a(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(A,{label:e.t("inference.register.nodeIdLabel"),required:""},{default:t(()=>[a(P,{value:e.registerForm.nodeId,"onUpdate:value":i[4]||(i[4]=l=>e.registerForm.nodeId=l),placeholder:e.t("inference.register.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.register.endpointLabel")},{default:t(()=>[a(P,{value:e.registerForm.endpoint,"onUpdate:value":i[5]||(i[5]=l=>e.registerForm.endpoint=l),placeholder:e.t("inference.register.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.register.capabilitiesLabel")},{default:t(()=>[a(P,{value:e.registerForm.capabilities,"onUpdate:value":i[6]||(i[6]=l=>e.registerForm.capabilities=l),placeholder:e.t("inference.register.capabilitiesPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.register.gpuLabel")},{default:t(()=>[a(B,{value:e.registerForm.gpuMemory,"onUpdate:value":i[7]||(i[7]=l=>e.registerForm.gpuMemory=l),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" ── Submit task modal ────────────────────────────────────── "),a(G,{open:e.showSubmitModal,"onUpdate:open":i[13]||(i[13]=l=>e.showSubmitModal=l),title:e.t("inference.submit.title"),"confirm-loading":e.submitting,width:520,"ok-text":e.t("inference.submit.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitTask,onCancel:e.resetSubmitForm},{default:t(()=>[a(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(A,{label:e.t("inference.submit.modelLabel"),required:""},{default:t(()=>[a(P,{value:e.submitForm.model,"onUpdate:value":i[9]||(i[9]=l=>e.submitForm.model=l),placeholder:e.t("inference.submit.modelPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.submit.inputLabel")},{default:t(()=>[a(Z,{value:e.submitForm.input,"onUpdate:value":i[10]||(i[10]=l=>e.submitForm.input=l),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"]),a(A,{label:e.t("inference.submit.priorityLabel")},{default:t(()=>[a(B,{value:e.submitForm.priority,"onUpdate:value":i[11]||(i[11]=l=>e.submitForm.priority=l),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(A,{label:e.t("inference.submit.modeLabel")},{default:t(()=>[a(j,{value:e.submitForm.mode,"onUpdate:value":i[12]||(i[12]=l=>e.submitForm.mode=l)},{default:t(()=>[(c(!0),g(h,null,E(e.PRIVACY_MODES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.privacyLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const ft=he(Pe,[["render",lt],["__scopeId","data-v-93ae85f8"],["__file","/tmp/cc-web-panel-Fa41ZI/repo/packages/web-panel/src/views/Inference.vue"]]);export{ft as default};
|
|
1
|
+
import{I as b,J as g,U as w,R as d,c as a,K as t,V as f,S,o as ae,a as Q,b as V,r as _,P as c,Q as m,F as h,Z as E,$ as Se}from"./vendor-BvqAck49.js";import{_ as he,b as oe,u as re,d as p}from"./index-C2qPPvCv.js";import{s as Ce}from"./community-parser-CO25nZFt.js";import{a0 as Fe,f as Te,$ as Oe,a3 as we,as as Ae,R as Me}from"./icons-DP3uiYxy.js";function X(s){const i=Ce(s);if(!i)return null;try{return JSON.parse(i)}catch{}const n=i.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!n)return null;try{return JSON.parse(n[0])}catch{return null}}const Ne=Object.freeze(["online","offline","busy","degraded"]),ze=Object.freeze(["queued","dispatched","running","complete","failed"]),Ie=Object.freeze(["standard","encrypted","federated"]);function F(s,i=0){return typeof s=="number"&&Number.isFinite(s)?s:i}function Le(s){if(Array.isArray(s))return s.filter(i=>typeof i=="string");if(typeof s=="string")try{const i=JSON.parse(s);if(Array.isArray(i))return i.filter(n=>typeof n=="string")}catch{}return[]}function je(s,i=0){if(!s||typeof s!="object")return null;const n=s.id||"";return n?{key:n,id:n,nodeId:s.nodeId??s.node_id??"",endpoint:s.endpoint||"",capabilities:Le(s.capabilities),gpuMemoryMb:F(s.gpuMemoryMb??s.gpu_memory_mb,0),status:String(s.status||"offline").toLowerCase(),lastHeartbeat:s.lastHeartbeat??s.last_heartbeat??null,taskCount:F(s.taskCount??s.task_count,0),createdAt:s.createdAt??s.created_at??null,_idx:i}:null}function ie(s){const i=X(s);return Array.isArray(i)?i.map(je).filter(Boolean):[]}function Re(s,i=0){if(!s||typeof s!="object")return null;const n=s.id||"";return n?{key:n,id:n,model:String(s.model||""),input:s.input??"",output:s.output??"",privacyMode:String(s.privacyMode??s.privacy_mode??"standard").toLowerCase(),priority:F(s.priority,5),assignedNode:s.assignedNode??s.assigned_node??null,status:String(s.status||"queued").toLowerCase(),durationMs:s.durationMs??s.duration_ms??null,createdAt:s.createdAt??s.created_at??null,completedAt:s.completedAt??s.completed_at??null,_idx:i}:null}function le(s){const i=X(s);return Array.isArray(i)?i.map(Re).filter(Boolean):[]}const Ue={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function se(s){const i=JSON.parse(JSON.stringify(Ue)),n=X(s);return!n||typeof n!="object"||Array.isArray(n)||(n.nodes&&typeof n.nodes=="object"&&(i.nodes.total=F(n.nodes.total,0),i.nodes.online=F(n.nodes.online,0),i.nodes.offline=F(n.nodes.offline,0),i.nodes.busy=F(n.nodes.busy,0)),n.tasks&&typeof n.tasks=="object"&&(i.tasks.total=F(n.tasks.total,0),i.tasks.queued=F(n.tasks.queued,0),i.tasks.completed=F(n.tasks.completed,0),i.tasks.failed=F(n.tasks.failed,0),i.tasks.avgDurationMs=F(n.tasks.avgDurationMs??n.tasks.avg_duration_ms,0))),i}function De(s){if(s==null||s==="")return"—";const i=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(i.getTime())?String(s):i.toLocaleString("zh-CN",{hour12:!1})}const Pe={__name:"Inference",setup(s,{expose:i}){i();const{t:n}=oe(),e=re(),H=_(!1),J=_(!1),T=_(!1),R=_(""),U=_(""),I=_([]),D=_([]),L=_({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),M=_("nodes"),N=_(""),q=_(""),C=_(""),O=_(!1),j=_(!1),k=Q({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),v=Q({model:"",input:"",priority:5,mode:"standard"}),K=V(()=>[{title:n("inference.nodeColumns.nodeId"),key:"nodeId"},{title:n("inference.nodeColumns.capabilities"),key:"capabilities",width:"220px"},{title:n("inference.nodeColumns.gpu"),key:"gpu",width:"100px"},{title:n("inference.nodeColumns.status"),key:"status",width:"100px"},{title:n("inference.nodeColumns.taskCount"),key:"taskCount",width:"90px"},{title:n("inference.nodeColumns.lastHeartbeat"),key:"lastHeartbeat",width:"160px"},{title:n("inference.nodeColumns.action"),key:"action",width:"210px"}]),W=V(()=>[{title:n("inference.taskColumns.model"),key:"model"},{title:n("inference.taskColumns.privacyMode"),key:"privacyMode",width:"110px"},{title:n("inference.taskColumns.priority"),key:"priority",width:"80px"},{title:n("inference.taskColumns.assignedNode"),key:"assignedNode",width:"140px"},{title:n("inference.taskColumns.status"),key:"status",width:"110px"},{title:n("inference.taskColumns.duration"),key:"duration",width:"110px"},{title:n("inference.taskColumns.createdAt"),key:"createdAt",width:"160px"},{title:n("inference.taskColumns.action"),key:"action",width:"140px"}]),P=V(()=>N.value?I.value.filter(o=>o.status===N.value):I.value),A=V(()=>{let o=D.value;return q.value&&(o=o.filter(r=>r.status===q.value)),C.value&&(o=o.filter(r=>r.privacyMode===C.value)),o});function B(o){const r=`inference.nodeStatus.${o}`,y=n(r);return y===r?o:y}function G(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function Y(o){const r=`inference.taskStatus.${o}`,y=n(r);return y===r?o:y}function Z(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function l(o){const r=`inference.privacy.${o}`,y=n(r);return y===r?o:y}function u(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function x(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function de(o){const r=I.value.find(y=>y.id===o);return r?r.nodeId:o.slice(0,8)}function ce(o,r){return o?o.length>r?o.slice(0,r)+"...":o:""}function ue(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function fe(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function me(o){return o.status!=="complete"&&o.status!=="failed"}function ye({key:o}){o==="register"?O.value=!0:o==="submit"&&(j.value=!0)}async function z(){H.value=!0;try{const[o,r,y]=await Promise.all([e.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference stats --json",8e3).catch(()=>({output:""}))]);I.value=ie(o.output),D.value=le(r.output),L.value=se(y.output)}catch(o){p.error(n("inference.messages.loadFailed",{err:o?.message||o}))}finally{H.value=!1}}async function ge(){const o=k.nodeId.trim();if(!o){p.warning(n("inference.messages.nodeIdRequired"));return}J.value=!0;try{const r=[`inference register "${o.replace(/"/g,'\\"')}"`];if(k.endpoint.trim()&&r.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.capabilities.trim()){const ne=k.capabilities.split(/[,\s]+/).filter(Boolean).join(",");ne&&r.push(`--capabilities "${ne}"`)}k.gpuMemory!=null&&r.push(`--gpu ${k.gpuMemory}`),r.push("--json");const{output:y}=await e.execute(r.join(" "),1e4);if(/error|failed|失败/i.test(y)&&!/"nodeId"/.test(y)){p.error(n("inference.messages.registerFailed",{err:y.slice(0,120)}));return}p.success(n("inference.messages.registerOk")),O.value=!1,$(),await z()}catch(r){p.error(n("inference.messages.registerFailed",{err:r?.message||r}))}finally{J.value=!1}}async function pe(){const o=v.model.trim();if(!o){p.warning(n("inference.messages.modelRequired"));return}T.value=!0;try{const r=[`inference submit "${o.replace(/"/g,'\\"')}"`];v.input.trim()&&r.push(`--input "${v.input.trim().replace(/"/g,'\\"')}"`),v.priority!=null&&r.push(`--priority ${v.priority}`),r.push(`--mode ${v.mode}`),r.push("--json");const{output:y}=await e.execute(r.join(" "),12e3);if(/error|failed|失败/i.test(y)&&!/"taskId"/.test(y)){p.error(n("inference.messages.submitFailed",{err:y.slice(0,120)}));return}p.success(n("inference.messages.submitOk")),j.value=!1,ee(),M.value="tasks",await z()}catch(r){p.error(n("inference.messages.submitFailed",{err:r?.message||r}))}finally{T.value=!1}}async function be(o){R.value=o.id;try{const{output:r}=await e.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(r)&&!/"updated"/.test(r)){p.error(n("inference.messages.heartbeatFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.heartbeatOk")),await z()}catch(r){p.error(n("inference.messages.heartbeatFailed",{err:r?.message||r}))}finally{R.value=""}}async function ke(o,r){if(r!==o.status)try{const{output:y}=await e.execute(`inference node-status ${o.id} ${r} --json`,8e3);if(/error|invalid/i.test(y)&&!/"updated"/.test(y)){p.error(n("inference.messages.statusFailed",{err:y.slice(0,120)}));return}p.success(n("inference.messages.statusOk",{status:B(r)})),await z()}catch(y){p.error(n("inference.messages.statusFailed",{err:y?.message||y}))}}async function _e(o){try{const{output:r}=await e.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(r)&&!/"removed"/.test(r)){p.error(n("inference.messages.unregisterFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.unregisterOk")),await z()}catch(r){p.error(n("inference.messages.unregisterFailed",{err:r?.message||r}))}}async function ve(o){U.value=o.id;try{const{output:r}=await e.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(r)&&!/"completed"/.test(r)){p.error(n("inference.messages.completeFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.completeOk")),await z()}catch(r){p.error(n("inference.messages.completeFailed",{err:r?.message||r}))}finally{U.value=""}}async function xe(o){try{const{output:r}=await e.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(r)&&!/"failed"/.test(r)){p.error(n("inference.messages.failFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.failOk")),await z()}catch(r){p.error(n("inference.messages.failFailed",{err:r?.message||r}))}}function $(){k.nodeId="",k.endpoint="",k.capabilities="",k.gpuMemory=null}function ee(){v.model="",v.input="",v.priority=5,v.mode="standard"}ae(z);const te={t:n,ws:e,loading:H,registering:J,submitting:T,heartbeatId:R,completingId:U,nodes:I,tasks:D,stats:L,activeTab:M,nodeStatusFilter:N,taskStatusFilter:q,taskPrivacyFilter:C,showRegisterModal:O,showSubmitModal:j,registerForm:k,submitForm:v,nodeColumns:K,taskColumns:W,filteredNodes:P,filteredTasks:A,nodeStatusLabel:B,nodeStatusColor:G,taskStatusLabel:Y,taskStatusColor:Z,privacyLabel:l,privacyColor:u,priorityColor:x,nodeShortName:de,truncate:ce,formatGpuMemory:ue,canComplete:fe,canFail:me,handleNewClick:ye,loadAll:z,registerNode:ge,submitTask:pe,sendHeartbeat:be,transitionStatus:ke,unregisterNode:_e,completeTask:ve,failTask:xe,resetRegisterForm:$,resetSubmitForm:ee,ref:_,computed:V,onMounted:ae,reactive:Q,get useI18n(){return oe},get ReloadOutlined(){return Me},get PlusOutlined(){return Ae},get CloudServerOutlined(){return we},get ThunderboltOutlined(){return Oe},get CheckCircleOutlined(){return Te},get ClockCircleOutlined(){return Fe},get message(){return p},get useWsStore(){return re},get parseNodes(){return ie},get parseTasks(){return le},get parseStats(){return se},get formatInferenceTime(){return De},get NODE_STATUSES(){return Ne},get TASK_STATUSES(){return ze},get PRIVACY_MODES(){return Ie}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Ee={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},qe={class:"page-title"},Be={class:"page-sub"},Ve={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},He={class:"filter-bar"},Je={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Ge={key:1,style:{color:"var(--text-muted)"}},Ye={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},We={key:1,style:{color:"var(--text-muted)"}},Ze={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Qe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Xe={class:"filter-bar"},$e={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},et={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},tt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},nt={key:1,style:{color:"var(--text-muted)"}},at={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},ot={key:1,style:{color:"var(--text-muted)"}},rt={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function lt(s,i,n,e,H,J){const T=b("a-button"),R=b("a-menu-item"),U=b("a-menu"),I=b("a-dropdown"),D=b("a-space"),L=b("a-statistic"),M=b("a-card"),N=b("a-col"),q=b("a-row"),C=b("a-tag"),O=b("a-radio-button"),j=b("a-radio-group"),k=b("a-popconfirm"),v=b("a-table"),K=b("a-tab-pane"),W=b("a-tabs"),P=b("a-input"),A=b("a-form-item"),B=b("a-input-number"),G=b("a-form"),Y=b("a-modal"),Z=b("a-textarea");return c(),g("div",null,[w("div",Ee,[w("div",null,[w("h2",qe,d(e.t("inference.title")),1),w("p",Be,d(e.t("inference.subtitle")),1)]),a(D,null,{default:t(()=>[a(T,{loading:e.loading,onClick:e.loadAll},{icon:t(()=>[a(e.ReloadOutlined)]),default:t(()=>[m(" "+d(e.t("inference.refresh")),1)]),_:1},8,["loading"]),a(I,{trigger:["click"]},{overlay:t(()=>[a(U,{onClick:e.handleNewClick},{default:t(()=>[a(R,{key:"register"},{default:t(()=>[a(e.CloudServerOutlined),m(" "+d(e.t("inference.actions.register")),1)]),_:1}),a(R,{key:"submit"},{default:t(()=>[a(e.ThunderboltOutlined),m(" "+d(e.t("inference.actions.submit")),1)]),_:1})]),_:1})]),default:t(()=>[a(T,{type:"primary"},{icon:t(()=>[a(e.PlusOutlined)]),default:t(()=>[m(" "+d(e.t("inference.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),f(" Stat cards "),a(q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.totalNodes"),value:e.stats.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(e.CloudServerOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.onlineNodes"),value:e.stats.nodes.online,"value-style":{color:e.stats.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[a(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.totalTasks"),value:e.stats.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.queued"),value:e.stats.tasks.queued,"value-style":{color:e.stats.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(e.ClockCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(N,{xs:24,sm:8,lg:4},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.avgDuration"),value:e.stats.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),f(" Node status breakdown "),e.stats.nodes.total>0?(c(),S(M,{key:0,title:e.t("inference.breakdown.title"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(D,{size:[12,8],wrap:""},{default:t(()=>[a(C,{color:"green"},{default:t(()=>[m(d(e.t("inference.breakdown.online",{count:e.stats.nodes.online})),1)]),_:1}),a(C,{color:"orange"},{default:t(()=>[m(d(e.t("inference.breakdown.busy",{count:e.stats.nodes.busy})),1)]),_:1}),a(C,{color:"default"},{default:t(()=>[m(d(e.t("inference.breakdown.offline",{count:e.stats.nodes.offline})),1)]),_:1}),w("span",Ve,d(e.t("inference.breakdown.extra",{complete:e.stats.tasks.completed,failed:e.stats.tasks.failed})),1)]),_:1})]),_:1},8,["title"])):f("v-if",!0),f(" Tabs "),a(W,{activeKey:e.activeTab,"onUpdate:activeKey":i[3]||(i[3]=l=>e.activeTab=l),class:"inference-tabs"},{default:t(()=>[f(" ── Nodes tab ─────────────────────────────────────────────── "),a(K,{key:"nodes",tab:e.t("inference.tabs.nodes")},{default:t(()=>[w("div",He,[a(j,{value:e.nodeStatusFilter,"onUpdate:value":i[0]||(i[0]=l=>e.nodeStatusFilter=l),size:"small","button-style":"solid"},{default:t(()=>[a(O,{value:""},{default:t(()=>[m(d(e.t("inference.filter.all")),1)]),_:1}),(c(!0),g(h,null,E(e.NODE_STATUSES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.nodeStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(v,{columns:e.nodeColumns,"data-source":e.filteredNodes,pagination:{pageSize:20,showTotal:l=>e.t("inference.totals.rows",{count:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:l,record:u})=>[l.key==="nodeId"?(c(),g(h,{key:0},[w("span",Je,d(u.nodeId),1),u.endpoint?(c(),g("div",Ke,d(e.truncate(u.endpoint,50)),1)):f("v-if",!0)],64)):f("v-if",!0),l.key==="capabilities"?(c(),g(h,{key:1},[(c(!0),g(h,null,E(u.capabilities.slice(0,4),x=>(c(),S(C,{key:x,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[m(d(x),1)]),_:2},1024))),128)),u.capabilities.length>4?(c(),S(C,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[m("+"+d(u.capabilities.length-4),1)]),_:2},1024)):f("v-if",!0),u.capabilities.length?f("v-if",!0):(c(),g("span",Ge,"—"))],64)):f("v-if",!0),l.key==="gpu"?(c(),g(h,{key:2},[u.gpuMemoryMb>0?(c(),g("span",Ye,d(e.formatGpuMemory(u.gpuMemoryMb)),1)):(c(),g("span",We,"—"))],64)):f("v-if",!0),l.key==="status"?(c(),S(C,{key:3,color:e.nodeStatusColor(u.status)},{default:t(()=>[m(d(e.nodeStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),l.key==="taskCount"?(c(),S(C,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[m(d(u.taskCount),1)]),_:2},1024)):f("v-if",!0),l.key==="lastHeartbeat"?(c(),g("span",Ze,d(e.formatInferenceTime(u.lastHeartbeat)),1)):f("v-if",!0),l.key==="action"?(c(),g(h,{key:6},[a(T,{size:"small",type:"link",loading:e.heartbeatId===u.id,onClick:x=>e.sendHeartbeat(u)},{default:t(()=>[m(d(e.t("inference.rowActions.heartbeat")),1)]),_:1},8,["loading","onClick"]),a(I,{trigger:["click"]},{overlay:t(()=>[a(U,{onClick:x=>e.transitionStatus(u,x.key)},{default:t(()=>[(c(!0),g(h,null,E(e.NODE_STATUSES,x=>(c(),S(R,{key:x,disabled:x===u.status},{default:t(()=>[m(d(e.nodeStatusLabel(x)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(T,{size:"small",type:"link"},{default:t(()=>[m(d(e.t("inference.rowActions.statusDropdown")),1)]),_:1})]),_:2},1024),a(k,{title:e.t("inference.rowActions.unregisterConfirm"),"ok-text":e.t("inference.rowActions.unregisterOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.unregisterNode(u)},{default:t(()=>[a(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.unregister")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):f("v-if",!0)]),emptyText:t(()=>[w("div",Qe,[a(e.CloudServerOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.nodeStatusFilter?e.t("inference.empty.filteredNodes"):e.t("inference.empty.noNodes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),f(" ── Tasks tab ─────────────────────────────────────────────── "),a(K,{key:"tasks",tab:e.t("inference.tabs.tasks")},{default:t(()=>[w("div",Xe,[a(j,{value:e.taskStatusFilter,"onUpdate:value":i[1]||(i[1]=l=>e.taskStatusFilter=l),size:"small"},{default:t(()=>[a(O,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allStatuses")),1)]),_:1}),(c(!0),g(h,null,E(e.TASK_STATUSES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.taskStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(j,{value:e.taskPrivacyFilter,"onUpdate:value":i[2]||(i[2]=l=>e.taskPrivacyFilter=l),size:"small"},{default:t(()=>[a(O,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allModes")),1)]),_:1}),(c(!0),g(h,null,E(e.PRIVACY_MODES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.privacyLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(v,{columns:e.taskColumns,"data-source":e.filteredTasks,pagination:{pageSize:20,showTotal:l=>e.t("inference.totals.rows",{count:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:l,record:u})=>[l.key==="model"?(c(),g(h,{key:0},[w("span",$e,d(u.model),1),u.input?(c(),g("div",et,d(e.truncate(u.input,60)),1)):f("v-if",!0)],64)):f("v-if",!0),l.key==="privacyMode"?(c(),S(C,{key:1,color:e.privacyColor(u.privacyMode)},{default:t(()=>[m(d(e.privacyLabel(u.privacyMode)),1)]),_:2},1032,["color"])):f("v-if",!0),l.key==="priority"?(c(),g("span",{key:2,style:Se({color:e.priorityColor(u.priority),fontWeight:500})},d(u.priority),5)):f("v-if",!0),l.key==="assignedNode"?(c(),g(h,{key:3},[u.assignedNode?(c(),g("span",tt,d(e.nodeShortName(u.assignedNode)),1)):(c(),g("span",nt,"—"))],64)):f("v-if",!0),l.key==="status"?(c(),S(C,{key:4,color:e.taskStatusColor(u.status)},{default:t(()=>[m(d(e.taskStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),l.key==="duration"?(c(),g(h,{key:5},[u.durationMs!=null?(c(),g("span",at,d(u.durationMs)+" ms ",1)):(c(),g("span",ot,"—"))],64)):f("v-if",!0),l.key==="createdAt"?(c(),g("span",rt,d(e.formatInferenceTime(u.createdAt)),1)):f("v-if",!0),l.key==="action"?(c(),g(h,{key:7},[e.canComplete(u)?(c(),S(T,{key:0,size:"small",type:"link",loading:e.completingId===u.id,onClick:x=>e.completeTask(u)},{default:t(()=>[m(d(e.t("inference.rowActions.complete")),1)]),_:1},8,["loading","onClick"])):f("v-if",!0),e.canFail(u)?(c(),S(k,{key:1,title:e.t("inference.rowActions.failConfirm"),"ok-text":e.t("inference.rowActions.failOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.failTask(u)},{default:t(()=>[a(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.fail")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):f("v-if",!0)],64)):f("v-if",!0)]),emptyText:t(()=>[w("div",it,[a(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.taskStatusFilter||e.taskPrivacyFilter?e.t("inference.empty.filteredTasks"):e.t("inference.empty.noTasks")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Register node modal ──────────────────────────────────── "),a(Y,{open:e.showRegisterModal,"onUpdate:open":i[8]||(i[8]=l=>e.showRegisterModal=l),title:e.t("inference.register.title"),"confirm-loading":e.registering,width:520,"ok-text":e.t("inference.register.ok"),"cancel-text":e.t("common.cancel"),onOk:e.registerNode,onCancel:e.resetRegisterForm},{default:t(()=>[a(G,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(A,{label:e.t("inference.register.nodeIdLabel"),required:""},{default:t(()=>[a(P,{value:e.registerForm.nodeId,"onUpdate:value":i[4]||(i[4]=l=>e.registerForm.nodeId=l),placeholder:e.t("inference.register.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.register.endpointLabel")},{default:t(()=>[a(P,{value:e.registerForm.endpoint,"onUpdate:value":i[5]||(i[5]=l=>e.registerForm.endpoint=l),placeholder:e.t("inference.register.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.register.capabilitiesLabel")},{default:t(()=>[a(P,{value:e.registerForm.capabilities,"onUpdate:value":i[6]||(i[6]=l=>e.registerForm.capabilities=l),placeholder:e.t("inference.register.capabilitiesPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.register.gpuLabel")},{default:t(()=>[a(B,{value:e.registerForm.gpuMemory,"onUpdate:value":i[7]||(i[7]=l=>e.registerForm.gpuMemory=l),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" ── Submit task modal ────────────────────────────────────── "),a(Y,{open:e.showSubmitModal,"onUpdate:open":i[13]||(i[13]=l=>e.showSubmitModal=l),title:e.t("inference.submit.title"),"confirm-loading":e.submitting,width:520,"ok-text":e.t("inference.submit.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitTask,onCancel:e.resetSubmitForm},{default:t(()=>[a(G,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(A,{label:e.t("inference.submit.modelLabel"),required:""},{default:t(()=>[a(P,{value:e.submitForm.model,"onUpdate:value":i[9]||(i[9]=l=>e.submitForm.model=l),placeholder:e.t("inference.submit.modelPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.submit.inputLabel")},{default:t(()=>[a(Z,{value:e.submitForm.input,"onUpdate:value":i[10]||(i[10]=l=>e.submitForm.input=l),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"]),a(A,{label:e.t("inference.submit.priorityLabel")},{default:t(()=>[a(B,{value:e.submitForm.priority,"onUpdate:value":i[11]||(i[11]=l=>e.submitForm.priority=l),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(A,{label:e.t("inference.submit.modeLabel")},{default:t(()=>[a(j,{value:e.submitForm.mode,"onUpdate:value":i[12]||(i[12]=l=>e.submitForm.mode=l)},{default:t(()=>[(c(!0),g(h,null,E(e.PRIVACY_MODES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.privacyLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const ft=he(Pe,[["render",lt],["__scopeId","data-v-93ae85f8"],["__file","/tmp/cc-web-panel-nNRGJZ/repo/packages/web-panel/src/views/Inference.vue"]]);export{ft as default};
|
package/src/assets/web-panel/assets/{KnowledgeGraph-DQoaeSnN.js → KnowledgeGraph-BbbI-D3L.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as c,J as m,U as E,R as s,c as a,K as o,S as A,V as f,o as re,b as U,a as X,r as k,P as d,Q as y,F as B,Z as N}from"./vendor-BvqAck49.js";import{_ as Se,u as ie,b as se,d as v}from"./index-DMPQqeLb.js";import{u as de,i as pe,a as ue,b as ce,c as ye,d as ge,E as Ie}from"./echarts-jxgIOFUZ.js";import{H as Ae,x as De,p as Fe,aB as je,as as ze,R as Me}from"./icons-DP3uiYxy.js";function Z(t){if(!t)return null;const l=t.trim();try{return JSON.parse(l)}catch{const i=l.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(!i)return null;try{return JSON.parse(i[1])}catch{return null}}}function ee(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||t.entity_id||"";if(!i)return null;const e=Array.isArray(t.tags)?t.tags:typeof t.tags=="string"&&t.tags.length>0?t.tags.split(",").map(b=>b.trim()).filter(Boolean):[];return{key:i,id:i,name:t.name||"",type:t.type||"",tags:e,properties:t.properties&&typeof t.properties=="object"?t.properties:null,createdAt:t.created_at||t.createdAt||"",updatedAt:t.updated_at||t.updatedAt||"",_idx:l}}function me(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||t.relation_id||"";if(!i)return null;const e=t.sourceId||t.source_id||"",b=t.targetId||t.target_id||"";if(!e||!b)return null;const O=typeof t.weight=="number"?t.weight:typeof t.weight=="string"?parseFloat(t.weight):1;return{key:i,id:i,sourceId:e,targetId:b,relationType:t.relationType||t.relation_type||"",weight:Number.isFinite(O)?O:1,properties:t.properties&&typeof t.properties=="object"?t.properties:null,createdAt:t.created_at||t.createdAt||"",_idx:l}}function fe(t){const l=Z(t);return Array.isArray(l)?l.map(ee).filter(Boolean):l&&Array.isArray(l.entities)?l.entities.map(ee).filter(Boolean):[]}function he(t){const l=Z(t);return Array.isArray(l)?l.map(me).filter(Boolean):l&&Array.isArray(l.relations)?l.relations.map(me).filter(Boolean):[]}function ke(t){const l=Z(t);if(!l||typeof l!="object"||Array.isArray(l))return{entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}};const i=e=>{const b=typeof e=="number"?e:parseFloat(e);return Number.isFinite(b)?b:0};return{entityCount:i(l.entityCount??l.entity_count),relationCount:i(l.relationCount??l.relation_count),avgDegree:i(l.avgDegree??l.avg_degree),density:i(l.density),typeDistribution:l.typeDistribution||l.type_distribution||{},relationTypeDistribution:l.relationTypeDistribution||l.relation_type_distribution||{}}}function ve(t){const l=Z(t);return Array.isArray(l)?l.map((i,e)=>{if(!i||typeof i!="object"||!i.entity)return null;const b=ee(i.entity,e);return b?{key:`${b.id}-${e}`,depth:typeof i.depth=="number"?i.depth:0,entity:b}:null}).filter(Boolean):[]}function _e(t){const l=Z(t);return Array.isArray(l)?l.map(i=>!i||typeof i!="object"||!i.name?null:{name:String(i.name),description:String(i.description||"")}).filter(Boolean):[]}function be(t,l){const i=new Map,e=[];for(const p of t)i.has(p.type)||(i.set(p.type,e.length),e.push({name:p.type||"unknown"}));const b=t.map(p=>({id:p.id,name:p.name||p.id.slice(0,8),category:i.get(p.type)??0,value:1,symbolSize:24})),O=new Set(t.map(p=>p.id)),R=[];for(const p of l)!O.has(p.sourceId)||!O.has(p.targetId)||R.push({source:p.sourceId,target:p.targetId,value:p.relationType,lineStyle:{width:Math.max(1,Math.min(6,p.weight*2))}});return{nodes:b,links:R,categories:e}}const Le={__name:"KnowledgeGraph",setup(t,{expose:l}){l(),de([ge,ye,ce,ue,pe]);const i=ie(),{t:e}=se(),b=k(!1),O=k(!1),R=k(!1),p=k(!1),D=k(!1),T=k(""),S=k(!1),W=k("graph"),M=k([]),F=k([]),j=k([]),C=k({entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}}),H=k(!1),K=k(!1),V=k(!1),x=X({name:"",type:"",tags:""}),_=X({sourceId:"",targetId:"",relationType:"",weight:1}),G=X({maxDepth:3,direction:"out"}),I=k(""),L=k(""),z=k([]),q=U(()=>[{title:e("knowledgeGraph.entityCols.id"),key:"id",width:"120px"},{title:e("knowledgeGraph.entityCols.name"),key:"name",dataIndex:"name",ellipsis:!0},{title:e("knowledgeGraph.entityCols.type"),key:"type",dataIndex:"type",width:"140px"},{title:e("knowledgeGraph.entityCols.tags"),key:"tags",width:"200px"},{title:e("knowledgeGraph.entityCols.action"),key:"action",width:"160px"}]),Q=U(()=>[{title:e("knowledgeGraph.relationCols.source"),key:"source",width:"120px"},{title:"",key:"arrow",width:"40px"},{title:e("knowledgeGraph.relationCols.target"),key:"target",width:"120px"},{title:e("knowledgeGraph.relationCols.relationType"),key:"relationType",width:"160px"},{title:e("knowledgeGraph.relationCols.weight"),key:"weight",width:"100px"}]),Y={Person:"magenta",Organization:"blue",Project:"cyan",Technology:"geekblue",Document:"gold",Concept:"purple",Event:"volcano"};function $(r){return Y[r]||"default"}const n=U(()=>{const r=new Map;for(const u of M.value)r.set(u.id,u.name||u.id.slice(0,8));return r});function w(r){return n.value.get(r)||r.slice(0,12)}function P(r,u){return String(u?.children?.[0]?.children||"").toLowerCase().includes(String(r).toLowerCase())}const we=U(()=>{const r=C.value.typeDistribution||{},u=Object.values(r).reduce((g,h)=>g+h,0)||1;return Object.entries(r).map(([g,h])=>({type:g,count:h,percent:Math.round(h/u*100)})).sort((g,h)=>h.count-g.count)}),Ge=U(()=>{const r=C.value.relationTypeDistribution||{},u=Object.values(r).reduce((g,h)=>g+h,0)||1;return Object.entries(r).map(([g,h])=>({type:g,count:h,percent:Math.round(h/u*100)})).sort((g,h)=>h.count-g.count)}),Re=U(()=>{const{nodes:r,links:u,categories:g}=be(M.value,F.value);return{tooltip:{show:!0},legend:[{data:g.map(h=>h.name),textStyle:{color:"#aaa"},bottom:0}],series:[{type:"graph",layout:"force",data:r,links:u,categories:g,roam:!0,label:{show:!0,position:"right",color:"#ddd",fontSize:11},lineStyle:{color:"source",curveness:.1,opacity:.6},emphasis:{focus:"adjacency",lineStyle:{width:4}},force:{repulsion:180,edgeLength:[60,140],gravity:.05}}]}});async function J(){O.value=!0;try{await Promise.all([te(),ae(),ne()])}finally{O.value=!1}}async function te(){try{const{output:r}=await i.execute("kg list --limit 500 --json",15e3);M.value=fe(r)}catch(r){v.error(e("knowledgeGraph.msg.loadEntitiesFailed")+": "+r.message),M.value=[]}}async function ae(){try{const{output:r}=await i.execute("kg relations --limit 1000 --json",15e3);F.value=he(r)}catch(r){v.error(e("knowledgeGraph.msg.loadRelationsFailed")+": "+r.message),F.value=[]}}async function ne(){try{const{output:r}=await i.execute("kg stats --json",1e4);C.value=ke(r)}catch(r){v.error(e("knowledgeGraph.msg.loadStatsFailed")+": "+r.message)}}async function oe(){if(!(j.value.length>0)){R.value=!0;try{const{output:r}=await i.execute("kg entity-types --json",1e4);j.value=_e(r)}catch(r){v.error(e("knowledgeGraph.msg.loadEntityTypesFailed")+": "+r.message)}finally{R.value=!1}}}async function Ce(){if(!x.name.trim()||!x.type){v.warning(e("knowledgeGraph.msg.addEntityEmpty"));return}p.value=!0;try{let u=`kg add "${x.name.trim().replace(/"/g,'\\"')}" ${x.type} --json`;x.tags.trim()&&(u+=` --tags "${x.tags.trim().replace(/"/g,'\\"')}"`);const{output:g,exitCode:h}=await i.execute(u,15e3);h!==0||/error|失败/i.test(g)?v.error(e("knowledgeGraph.msg.addEntityFailed")+": "+g.slice(0,120)):(v.success(e("knowledgeGraph.msg.addEntitySuccess")),H.value=!1,x.name="",x.type="",x.tags="",await J())}catch(r){v.error(e("knowledgeGraph.msg.addEntityFailed")+": "+r.message)}finally{p.value=!1}}async function xe(){if(!_.sourceId||!_.targetId||!_.relationType.trim()){v.warning(e("knowledgeGraph.msg.addRelationEmpty"));return}if(_.sourceId===_.targetId){v.warning(e("knowledgeGraph.msg.addRelationSelfLoop"));return}D.value=!0;try{const r=_.relationType.trim().replace(/"/g,'\\"'),u=`kg add-relation ${_.sourceId} ${_.targetId} "${r}" --weight ${_.weight} --json`,{output:g,exitCode:h}=await i.execute(u,15e3);h!==0||/error|失败/i.test(g)?v.error(e("knowledgeGraph.msg.addRelationFailed")+": "+g.slice(0,120)):(v.success(e("knowledgeGraph.msg.addRelationSuccess")),K.value=!1,_.sourceId="",_.targetId="",_.relationType="",_.weight=1,await J())}catch(r){v.error(e("knowledgeGraph.msg.addRelationFailed")+": "+r.message)}finally{D.value=!1}}async function Te(r){T.value=r.id;try{const{output:u,exitCode:g}=await i.execute(`kg remove ${r.id}`,15e3);g!==0||/error|失败/i.test(u)?v.error(e("knowledgeGraph.msg.deleteFailed")+": "+u.slice(0,120)):(v.success(e("knowledgeGraph.msg.deleteSuccess")),await J())}catch(u){v.error(e("knowledgeGraph.msg.deleteFailed")+": "+u.message)}finally{T.value=""}}function Ee(r){I.value=r.id,L.value=r.name,z.value=[],V.value=!0}async function Oe(){S.value=!0;try{const r=`kg reason ${I.value} --max-depth ${G.maxDepth} --direction ${G.direction} --json`,{output:u}=await i.execute(r,15e3);z.value=ve(u),z.value.length===0&&v.info(e("knowledgeGraph.msg.reasonEmpty"))}catch(r){v.error(e("knowledgeGraph.msg.reasonFailed")+": "+r.message)}finally{S.value=!1}}re(()=>{J(),oe()});const le={ws:i,t:e,hasDesktopFeatures:b,loading:O,loadingTypes:R,addingEntity:p,addingRelation:D,removing:T,reasoning:S,activeTab:W,entities:M,relations:F,entityTypes:j,stats:C,showAddEntityModal:H,showAddRelationModal:K,showReasonModal:V,newEntity:x,newRelation:_,reasonOptions:G,reasonStartId:I,reasonStartName:L,reasonResults:z,entityColumns:q,relationColumns:Q,TYPE_COLORS:Y,entityTypeColor:$,entityNameMap:n,entityNameOrId:w,entityFilter:P,entityTypeRows:we,relationTypeRows:Ge,graphOption:Re,loadAll:J,loadEntities:te,loadRelations:ae,loadStats:ne,loadEntityTypes:oe,addEntity:Ce,addRelation:xe,removeEntity:Te,openReason:Ee,runReason:Oe,ref:k,reactive:X,computed:U,onMounted:re,get ReloadOutlined(){return Me},get PlusOutlined(){return ze},get LinkOutlined(){return je},get DeploymentUnitOutlined(){return Fe},get ShareAltOutlined(){return De},get BarChartOutlined(){return Ae},get message(){return v},get useI18n(){return se},get VChart(){return Ie},get use(){return de},get CanvasRenderer(){return ge},get GraphChart(){return ye},get TooltipComponent(){return ce},get LegendComponent(){return ue},get TitleComponent(){return pe},get useWsStore(){return ie},get parseEntities(){return fe},get parseRelations(){return he},get parseStats(){return ke},get parseReason(){return ve},get parseEntityTypes(){return _e},get buildGraphData(){return be}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Ue={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Be={class:"page-title"},Pe={class:"page-sub"},Ne={key:0,style:{padding:"60px","text-align":"center"}},Ke={key:1,style:{height:"540px"}},Ve={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},qe={key:1,style:{color:"var(--text-primary)"}},Je={key:0,style:{color:"var(--text-muted)"}},Ze={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},We={key:1,style:{color:"var(--text-muted)"}},He={key:2,style:{color:"#888","font-family":"monospace","font-size":"11px"}},Qe={key:4,style:{color:"var(--text-secondary)","font-family":"monospace"}},Ye={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},Xe={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},$e={style:{color:"var(--text-secondary)","font-family":"monospace"}},et={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},tt={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},at={style:{color:"var(--text-secondary)","font-family":"monospace"}},nt={style:{color:"var(--text-muted)","font-size":"11px"}},ot={key:0,style:{padding:"30px","text-align":"center",color:"var(--text-muted)"}},lt={style:{"margin-left":"12px",color:"var(--text-primary)"}},rt={style:{"margin-left":"8px",color:"#888","font-family":"monospace","font-size":"11px"}};function it(t,l,i,e,b,O){const R=c("a-button"),p=c("a-space"),D=c("a-statistic"),T=c("a-card"),S=c("a-col"),W=c("a-row"),M=c("a-alert"),F=c("a-empty"),j=c("a-tab-pane"),C=c("a-tag"),H=c("a-popconfirm"),K=c("a-table"),V=c("a-progress"),x=c("a-tabs"),_=c("a-input"),G=c("a-form-item"),I=c("a-select-option"),L=c("a-select"),z=c("a-form"),q=c("a-modal"),Q=c("a-input-number"),Y=c("a-list-item"),$=c("a-list");return d(),m("div",null,[E("div",Ue,[E("div",null,[E("h2",Be,s(t.$t("knowledgeGraph.title")),1),E("p",Pe,s(t.$t("knowledgeGraph.subtitle")),1)]),a(p,null,{default:o(()=>[a(R,{loading:e.loading,onClick:e.loadAll},{icon:o(()=>[a(e.ReloadOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.refresh")),1)]),_:1},8,["loading"]),a(R,{type:"primary",onClick:l[0]||(l[0]=n=>e.showAddEntityModal=!0)},{icon:o(()=>[a(e.PlusOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.addEntity")),1)]),_:1}),a(R,{onClick:l[1]||(l[1]=n=>e.showAddRelationModal=!0),disabled:e.entities.length<2},{icon:o(()=>[a(e.LinkOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.addRelation")),1)]),_:1},8,["disabled"])]),_:1})]),a(W,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.entityCount"),value:e.stats.entityCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(e.DeploymentUnitOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.relationCount"),value:e.stats.relationCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(e.LinkOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.avgDegree"),value:e.stats.avgDegree,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.density"),value:e.stats.density,precision:4,"value-style":{color:"#722ed1",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),e.hasDesktopFeatures?f("v-if",!0):(d(),A(M,{key:0,message:t.$t("knowledgeGraph.webOnly.message"),description:t.$t("knowledgeGraph.webOnly.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"])),a(x,{activeKey:e.activeTab,"onUpdate:activeKey":l[2]||(l[2]=n=>e.activeTab=n),type:"card"},{default:o(()=>[f(" Tab 1: graph viz "),a(j,{key:"graph"},{tab:o(()=>[a(e.ShareAltOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.graph")),1)]),default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.entities.length===0?(d(),m("div",Ne,[a(F,{description:t.$t("knowledgeGraph.table.emptyGraph")},null,8,["description"])])):(d(),m("div",Ke,[a(e.VChart,{option:e.graphOption,autoresize:""},null,8,["option"])]))]),_:1})]),_:1}),f(" Tab 2: entities "),a(j,{key:"entities"},{tab:o(()=>[a(e.DeploymentUnitOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.entities",{n:e.entities.length})),1)]),default:o(()=>[a(K,{columns:e.entityColumns,"data-source":e.entities,pagination:{pageSize:20,showTotal:n=>t.$t("knowledgeGraph.table.totalSuffix",{n})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:o(({column:n,record:w})=>[n.key==="id"?(d(),m("span",Ve,s(w.id.slice(0,12)),1)):f("v-if",!0),n.key==="name"?(d(),m("span",qe,s(w.name),1)):f("v-if",!0),n.key==="type"?(d(),A(C,{key:2,color:e.entityTypeColor(w.type)},{default:o(()=>[y(s(w.type),1)]),_:2},1032,["color"])):f("v-if",!0),n.key==="tags"?(d(),m(B,{key:3},[(d(!0),m(B,null,N(w.tags,P=>(d(),A(C,{key:P,color:"default"},{default:o(()=>[y(s(P),1)]),_:2},1024))),128)),w.tags.length===0?(d(),m("span",Je,"-")):f("v-if",!0)],64)):f("v-if",!0),n.key==="action"?(d(),A(p,{key:4,size:"small"},{default:o(()=>[a(R,{size:"small",type:"link",onClick:P=>e.openReason(w)},{default:o(()=>[y(s(t.$t("knowledgeGraph.actions.reason")),1)]),_:1},8,["onClick"]),a(H,{title:t.$t("knowledgeGraph.deleteConfirm.title"),"ok-text":t.$t("knowledgeGraph.deleteConfirm.ok"),"ok-type":"danger","cancel-text":t.$t("knowledgeGraph.deleteConfirm.cancel"),onConfirm:P=>e.removeEntity(w)},{default:o(()=>[a(R,{size:"small",type:"link",danger:"",loading:e.removing===w.id},{default:o(()=>[y(s(t.$t("knowledgeGraph.actions.delete")),1)]),_:1},8,["loading"])]),_:2},1032,["title","ok-text","cancel-text","onConfirm"])]),_:2},1024)):f("v-if",!0)]),emptyText:o(()=>[a(F,{description:t.$t("knowledgeGraph.table.emptyEntities")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),f(" Tab 3: relations "),a(j,{key:"relations"},{tab:o(()=>[a(e.LinkOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.relations",{n:e.relations.length})),1)]),default:o(()=>[a(K,{columns:e.relationColumns,"data-source":e.relations,pagination:{pageSize:20,showTotal:n=>t.$t("knowledgeGraph.table.totalSuffix",{n})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:o(({column:n,record:w})=>[n.key==="source"?(d(),m("span",Ze,s(e.entityNameOrId(w.sourceId)),1)):f("v-if",!0),n.key==="arrow"?(d(),m("span",We,"→")):f("v-if",!0),n.key==="target"?(d(),m("span",He,s(e.entityNameOrId(w.targetId)),1)):f("v-if",!0),n.key==="relationType"?(d(),A(C,{key:3,color:"cyan"},{default:o(()=>[y(s(w.relationType),1)]),_:2},1024)):f("v-if",!0),n.key==="weight"?(d(),m("span",Qe,s(w.weight.toFixed(2)),1)):f("v-if",!0)]),emptyText:o(()=>[a(F,{description:t.$t("knowledgeGraph.table.emptyRelations")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),f(" Tab 4: type breakdown "),a(j,{key:"distribution"},{tab:o(()=>[a(e.BarChartOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.distribution")),1)]),default:o(()=>[a(W,{gutter:[24,24]},{default:o(()=>[a(S,{xs:24,md:12},{default:o(()=>[a(T,{title:t.$t("knowledgeGraph.distribution.entityTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.entityTypeRows.length===0?(d(),m("div",Ye,s(t.$t("knowledgeGraph.table.emptyData")),1)):f("v-if",!0),(d(!0),m(B,null,N(e.entityTypeRows,n=>(d(),m("div",{key:n.type,style:{"margin-bottom":"8px"}},[E("div",Xe,[a(C,{color:e.entityTypeColor(n.type)},{default:o(()=>[y(s(n.type),1)]),_:2},1032,["color"]),E("span",$e,s(n.count),1)]),a(V,{percent:n.percent,"show-info":!1,"stroke-color":"#1677ff"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1}),a(S,{xs:24,md:12},{default:o(()=>[a(T,{title:t.$t("knowledgeGraph.distribution.relationTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.relationTypeRows.length===0?(d(),m("div",et,s(t.$t("knowledgeGraph.table.emptyData")),1)):f("v-if",!0),(d(!0),m(B,null,N(e.relationTypeRows,n=>(d(),m("div",{key:n.type,style:{"margin-bottom":"8px"}},[E("div",tt,[a(C,{color:"cyan"},{default:o(()=>[y(s(n.type),1)]),_:2},1024),E("span",at,s(n.count),1)]),a(V,{percent:n.percent,"show-info":!1,"stroke-color":"#52c41a"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1})]),_:1},8,["activeKey"]),f(" Add Entity Modal "),a(q,{open:e.showAddEntityModal,"onUpdate:open":l[6]||(l[6]=n=>e.showAddEntityModal=n),title:t.$t("knowledgeGraph.addEntity_modal.title"),"confirm-loading":e.addingEntity,onOk:e.addEntity,"ok-text":t.$t("knowledgeGraph.addEntity_modal.ok"),"cancel-text":t.$t("knowledgeGraph.addEntity_modal.cancel")},{default:o(()=>[a(z,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.addEntity_modal.nameLabel"),required:""},{default:o(()=>[a(_,{value:e.newEntity.name,"onUpdate:value":l[3]||(l[3]=n=>e.newEntity.name=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addEntity_modal.typeLabel"),required:""},{default:o(()=>[a(L,{value:e.newEntity.type,"onUpdate:value":l[4]||(l[4]=n=>e.newEntity.type=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.typePlaceholder"),loading:e.loadingTypes},{default:o(()=>[(d(!0),m(B,null,N(e.entityTypes,n=>(d(),A(I,{key:n.name,value:n.name},{default:o(()=>[y(s(n.name)+" ",1),E("span",nt,"— "+s(n.description),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder","loading"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addEntity_modal.tagsLabel")},{default:o(()=>[a(_,{value:e.newEntity.tags,"onUpdate:value":l[5]||(l[5]=n=>e.newEntity.tags=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.tagsPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" Add Relation Modal "),a(q,{open:e.showAddRelationModal,"onUpdate:open":l[11]||(l[11]=n=>e.showAddRelationModal=n),title:t.$t("knowledgeGraph.addRelation_modal.title"),"confirm-loading":e.addingRelation,onOk:e.addRelation,"ok-text":t.$t("knowledgeGraph.addRelation_modal.ok"),"cancel-text":t.$t("knowledgeGraph.addRelation_modal.cancel")},{default:o(()=>[a(z,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.addRelation_modal.sourceLabel"),required:""},{default:o(()=>[a(L,{value:e.newRelation.sourceId,"onUpdate:value":l[7]||(l[7]=n=>e.newRelation.sourceId=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.sourcePlaceholder"),"show-search":"","filter-option":e.entityFilter},{default:o(()=>[(d(!0),m(B,null,N(e.entities,n=>(d(),A(I,{key:n.id,value:n.id},{default:o(()=>[y(s(n.name)+" ("+s(n.type)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.targetLabel"),required:""},{default:o(()=>[a(L,{value:e.newRelation.targetId,"onUpdate:value":l[8]||(l[8]=n=>e.newRelation.targetId=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.targetPlaceholder"),"show-search":"","filter-option":e.entityFilter},{default:o(()=>[(d(!0),m(B,null,N(e.entities,n=>(d(),A(I,{key:n.id,value:n.id,disabled:n.id===e.newRelation.sourceId},{default:o(()=>[y(s(n.name)+" ("+s(n.type)+") ",1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.relationTypeLabel"),required:""},{default:o(()=>[a(_,{value:e.newRelation.relationType,"onUpdate:value":l[9]||(l[9]=n=>e.newRelation.relationType=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.relationTypePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.weightLabel")},{default:o(()=>[a(Q,{value:e.newRelation.weight,"onUpdate:value":l[10]||(l[10]=n=>e.newRelation.weight=n),min:.1,max:10,step:.1,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" Reason Modal (BFS) "),a(q,{open:e.showReasonModal,"onUpdate:open":l[14]||(l[14]=n=>e.showReasonModal=n),title:t.$t("knowledgeGraph.reason_modal.title",{name:e.reasonStartName}),width:640,footer:null},{default:o(()=>[a(z,{layout:"inline",style:{"margin-bottom":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.reason_modal.maxDepth")},{default:o(()=>[a(Q,{value:e.reasonOptions.maxDepth,"onUpdate:value":l[12]||(l[12]=n=>e.reasonOptions.maxDepth=n),min:1,max:10},null,8,["value"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.reason_modal.direction")},{default:o(()=>[a(L,{value:e.reasonOptions.direction,"onUpdate:value":l[13]||(l[13]=n=>e.reasonOptions.direction=n),style:{width:"100px"}},{default:o(()=>[a(I,{value:"out"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionOut")),1)]),_:1}),a(I,{value:"in"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionIn")),1)]),_:1}),a(I,{value:"both"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionBoth")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),a(G,null,{default:o(()=>[a(R,{type:"primary",loading:e.reasoning,onClick:e.runReason},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.run")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),e.reasonResults.length===0&&!e.reasoning?(d(),m("div",ot,s(t.$t("knowledgeGraph.reason_modal.hint")),1)):(d(),A($,{key:1,"data-source":e.reasonResults,size:"small"},{renderItem:o(({item:n})=>[a(Y,null,{default:o(()=>[a(C,{color:"purple"},{default:o(()=>[y("depth="+s(n.depth),1)]),_:2},1024),a(C,{color:e.entityTypeColor(n.entity.type),style:{"margin-left":"8px"}},{default:o(()=>[y(s(n.entity.type),1)]),_:2},1032,["color"]),E("span",lt,s(n.entity.name),1),E("span",rt,s(n.entity.id.slice(0,12)),1)]),_:2},1024)]),_:1},8,["data-source"]))]),_:1},8,["open","title"])])}const ct=Se(Le,[["render",it],["__scopeId","data-v-ce227b16"],["__file","/tmp/cc-web-panel-Fa41ZI/repo/packages/web-panel/src/views/KnowledgeGraph.vue"]]);export{ct as default};
|
|
1
|
+
import{I as c,J as m,U as E,R as s,c as a,K as o,S as A,V as f,o as re,b as U,a as X,r as k,P as d,Q as y,F as B,Z as N}from"./vendor-BvqAck49.js";import{_ as Se,u as ie,b as se,d as v}from"./index-C2qPPvCv.js";import{u as de,i as pe,a as ue,b as ce,c as ye,d as ge,E as Ie}from"./echarts-jxgIOFUZ.js";import{H as Ae,x as De,p as je,aB as ze,as as Fe,R as Me}from"./icons-DP3uiYxy.js";function Z(t){if(!t)return null;const l=t.trim();try{return JSON.parse(l)}catch{const i=l.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(!i)return null;try{return JSON.parse(i[1])}catch{return null}}}function ee(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||t.entity_id||"";if(!i)return null;const e=Array.isArray(t.tags)?t.tags:typeof t.tags=="string"&&t.tags.length>0?t.tags.split(",").map(b=>b.trim()).filter(Boolean):[];return{key:i,id:i,name:t.name||"",type:t.type||"",tags:e,properties:t.properties&&typeof t.properties=="object"?t.properties:null,createdAt:t.created_at||t.createdAt||"",updatedAt:t.updated_at||t.updatedAt||"",_idx:l}}function me(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||t.relation_id||"";if(!i)return null;const e=t.sourceId||t.source_id||"",b=t.targetId||t.target_id||"";if(!e||!b)return null;const O=typeof t.weight=="number"?t.weight:typeof t.weight=="string"?parseFloat(t.weight):1;return{key:i,id:i,sourceId:e,targetId:b,relationType:t.relationType||t.relation_type||"",weight:Number.isFinite(O)?O:1,properties:t.properties&&typeof t.properties=="object"?t.properties:null,createdAt:t.created_at||t.createdAt||"",_idx:l}}function fe(t){const l=Z(t);return Array.isArray(l)?l.map(ee).filter(Boolean):l&&Array.isArray(l.entities)?l.entities.map(ee).filter(Boolean):[]}function he(t){const l=Z(t);return Array.isArray(l)?l.map(me).filter(Boolean):l&&Array.isArray(l.relations)?l.relations.map(me).filter(Boolean):[]}function ke(t){const l=Z(t);if(!l||typeof l!="object"||Array.isArray(l))return{entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}};const i=e=>{const b=typeof e=="number"?e:parseFloat(e);return Number.isFinite(b)?b:0};return{entityCount:i(l.entityCount??l.entity_count),relationCount:i(l.relationCount??l.relation_count),avgDegree:i(l.avgDegree??l.avg_degree),density:i(l.density),typeDistribution:l.typeDistribution||l.type_distribution||{},relationTypeDistribution:l.relationTypeDistribution||l.relation_type_distribution||{}}}function ve(t){const l=Z(t);return Array.isArray(l)?l.map((i,e)=>{if(!i||typeof i!="object"||!i.entity)return null;const b=ee(i.entity,e);return b?{key:`${b.id}-${e}`,depth:typeof i.depth=="number"?i.depth:0,entity:b}:null}).filter(Boolean):[]}function _e(t){const l=Z(t);return Array.isArray(l)?l.map(i=>!i||typeof i!="object"||!i.name?null:{name:String(i.name),description:String(i.description||"")}).filter(Boolean):[]}function be(t,l){const i=new Map,e=[];for(const p of t)i.has(p.type)||(i.set(p.type,e.length),e.push({name:p.type||"unknown"}));const b=t.map(p=>({id:p.id,name:p.name||p.id.slice(0,8),category:i.get(p.type)??0,value:1,symbolSize:24})),O=new Set(t.map(p=>p.id)),R=[];for(const p of l)!O.has(p.sourceId)||!O.has(p.targetId)||R.push({source:p.sourceId,target:p.targetId,value:p.relationType,lineStyle:{width:Math.max(1,Math.min(6,p.weight*2))}});return{nodes:b,links:R,categories:e}}const Le={__name:"KnowledgeGraph",setup(t,{expose:l}){l(),de([ge,ye,ce,ue,pe]);const i=ie(),{t:e}=se(),b=k(!1),O=k(!1),R=k(!1),p=k(!1),D=k(!1),T=k(""),S=k(!1),W=k("graph"),M=k([]),j=k([]),z=k([]),C=k({entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}}),H=k(!1),K=k(!1),V=k(!1),x=X({name:"",type:"",tags:""}),_=X({sourceId:"",targetId:"",relationType:"",weight:1}),G=X({maxDepth:3,direction:"out"}),I=k(""),L=k(""),F=k([]),q=U(()=>[{title:e("knowledgeGraph.entityCols.id"),key:"id",width:"120px"},{title:e("knowledgeGraph.entityCols.name"),key:"name",dataIndex:"name",ellipsis:!0},{title:e("knowledgeGraph.entityCols.type"),key:"type",dataIndex:"type",width:"140px"},{title:e("knowledgeGraph.entityCols.tags"),key:"tags",width:"200px"},{title:e("knowledgeGraph.entityCols.action"),key:"action",width:"160px"}]),Q=U(()=>[{title:e("knowledgeGraph.relationCols.source"),key:"source",width:"120px"},{title:"",key:"arrow",width:"40px"},{title:e("knowledgeGraph.relationCols.target"),key:"target",width:"120px"},{title:e("knowledgeGraph.relationCols.relationType"),key:"relationType",width:"160px"},{title:e("knowledgeGraph.relationCols.weight"),key:"weight",width:"100px"}]),Y={Person:"magenta",Organization:"blue",Project:"cyan",Technology:"geekblue",Document:"gold",Concept:"purple",Event:"volcano"};function $(r){return Y[r]||"default"}const n=U(()=>{const r=new Map;for(const u of M.value)r.set(u.id,u.name||u.id.slice(0,8));return r});function w(r){return n.value.get(r)||r.slice(0,12)}function P(r,u){return String(u?.children?.[0]?.children||"").toLowerCase().includes(String(r).toLowerCase())}const we=U(()=>{const r=C.value.typeDistribution||{},u=Object.values(r).reduce((g,h)=>g+h,0)||1;return Object.entries(r).map(([g,h])=>({type:g,count:h,percent:Math.round(h/u*100)})).sort((g,h)=>h.count-g.count)}),Ge=U(()=>{const r=C.value.relationTypeDistribution||{},u=Object.values(r).reduce((g,h)=>g+h,0)||1;return Object.entries(r).map(([g,h])=>({type:g,count:h,percent:Math.round(h/u*100)})).sort((g,h)=>h.count-g.count)}),Re=U(()=>{const{nodes:r,links:u,categories:g}=be(M.value,j.value);return{tooltip:{show:!0},legend:[{data:g.map(h=>h.name),textStyle:{color:"#aaa"},bottom:0}],series:[{type:"graph",layout:"force",data:r,links:u,categories:g,roam:!0,label:{show:!0,position:"right",color:"#ddd",fontSize:11},lineStyle:{color:"source",curveness:.1,opacity:.6},emphasis:{focus:"adjacency",lineStyle:{width:4}},force:{repulsion:180,edgeLength:[60,140],gravity:.05}}]}});async function J(){O.value=!0;try{await Promise.all([te(),ae(),ne()])}finally{O.value=!1}}async function te(){try{const{output:r}=await i.execute("kg list --limit 500 --json",15e3);M.value=fe(r)}catch(r){v.error(e("knowledgeGraph.msg.loadEntitiesFailed")+": "+r.message),M.value=[]}}async function ae(){try{const{output:r}=await i.execute("kg relations --limit 1000 --json",15e3);j.value=he(r)}catch(r){v.error(e("knowledgeGraph.msg.loadRelationsFailed")+": "+r.message),j.value=[]}}async function ne(){try{const{output:r}=await i.execute("kg stats --json",1e4);C.value=ke(r)}catch(r){v.error(e("knowledgeGraph.msg.loadStatsFailed")+": "+r.message)}}async function oe(){if(!(z.value.length>0)){R.value=!0;try{const{output:r}=await i.execute("kg entity-types --json",1e4);z.value=_e(r)}catch(r){v.error(e("knowledgeGraph.msg.loadEntityTypesFailed")+": "+r.message)}finally{R.value=!1}}}async function Ce(){if(!x.name.trim()||!x.type){v.warning(e("knowledgeGraph.msg.addEntityEmpty"));return}p.value=!0;try{let u=`kg add "${x.name.trim().replace(/"/g,'\\"')}" ${x.type} --json`;x.tags.trim()&&(u+=` --tags "${x.tags.trim().replace(/"/g,'\\"')}"`);const{output:g,exitCode:h}=await i.execute(u,15e3);h!==0||/error|失败/i.test(g)?v.error(e("knowledgeGraph.msg.addEntityFailed")+": "+g.slice(0,120)):(v.success(e("knowledgeGraph.msg.addEntitySuccess")),H.value=!1,x.name="",x.type="",x.tags="",await J())}catch(r){v.error(e("knowledgeGraph.msg.addEntityFailed")+": "+r.message)}finally{p.value=!1}}async function xe(){if(!_.sourceId||!_.targetId||!_.relationType.trim()){v.warning(e("knowledgeGraph.msg.addRelationEmpty"));return}if(_.sourceId===_.targetId){v.warning(e("knowledgeGraph.msg.addRelationSelfLoop"));return}D.value=!0;try{const r=_.relationType.trim().replace(/"/g,'\\"'),u=`kg add-relation ${_.sourceId} ${_.targetId} "${r}" --weight ${_.weight} --json`,{output:g,exitCode:h}=await i.execute(u,15e3);h!==0||/error|失败/i.test(g)?v.error(e("knowledgeGraph.msg.addRelationFailed")+": "+g.slice(0,120)):(v.success(e("knowledgeGraph.msg.addRelationSuccess")),K.value=!1,_.sourceId="",_.targetId="",_.relationType="",_.weight=1,await J())}catch(r){v.error(e("knowledgeGraph.msg.addRelationFailed")+": "+r.message)}finally{D.value=!1}}async function Te(r){T.value=r.id;try{const{output:u,exitCode:g}=await i.execute(`kg remove ${r.id}`,15e3);g!==0||/error|失败/i.test(u)?v.error(e("knowledgeGraph.msg.deleteFailed")+": "+u.slice(0,120)):(v.success(e("knowledgeGraph.msg.deleteSuccess")),await J())}catch(u){v.error(e("knowledgeGraph.msg.deleteFailed")+": "+u.message)}finally{T.value=""}}function Ee(r){I.value=r.id,L.value=r.name,F.value=[],V.value=!0}async function Oe(){S.value=!0;try{const r=`kg reason ${I.value} --max-depth ${G.maxDepth} --direction ${G.direction} --json`,{output:u}=await i.execute(r,15e3);F.value=ve(u),F.value.length===0&&v.info(e("knowledgeGraph.msg.reasonEmpty"))}catch(r){v.error(e("knowledgeGraph.msg.reasonFailed")+": "+r.message)}finally{S.value=!1}}re(()=>{J(),oe()});const le={ws:i,t:e,hasDesktopFeatures:b,loading:O,loadingTypes:R,addingEntity:p,addingRelation:D,removing:T,reasoning:S,activeTab:W,entities:M,relations:j,entityTypes:z,stats:C,showAddEntityModal:H,showAddRelationModal:K,showReasonModal:V,newEntity:x,newRelation:_,reasonOptions:G,reasonStartId:I,reasonStartName:L,reasonResults:F,entityColumns:q,relationColumns:Q,TYPE_COLORS:Y,entityTypeColor:$,entityNameMap:n,entityNameOrId:w,entityFilter:P,entityTypeRows:we,relationTypeRows:Ge,graphOption:Re,loadAll:J,loadEntities:te,loadRelations:ae,loadStats:ne,loadEntityTypes:oe,addEntity:Ce,addRelation:xe,removeEntity:Te,openReason:Ee,runReason:Oe,ref:k,reactive:X,computed:U,onMounted:re,get ReloadOutlined(){return Me},get PlusOutlined(){return Fe},get LinkOutlined(){return ze},get DeploymentUnitOutlined(){return je},get ShareAltOutlined(){return De},get BarChartOutlined(){return Ae},get message(){return v},get useI18n(){return se},get VChart(){return Ie},get use(){return de},get CanvasRenderer(){return ge},get GraphChart(){return ye},get TooltipComponent(){return ce},get LegendComponent(){return ue},get TitleComponent(){return pe},get useWsStore(){return ie},get parseEntities(){return fe},get parseRelations(){return he},get parseStats(){return ke},get parseReason(){return ve},get parseEntityTypes(){return _e},get buildGraphData(){return be}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Ue={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Be={class:"page-title"},Pe={class:"page-sub"},Ne={key:0,style:{padding:"60px","text-align":"center"}},Ke={key:1,style:{height:"540px"}},Ve={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},qe={key:1,style:{color:"var(--text-primary)"}},Je={key:0,style:{color:"var(--text-muted)"}},Ze={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},We={key:1,style:{color:"var(--text-muted)"}},He={key:2,style:{color:"#888","font-family":"monospace","font-size":"11px"}},Qe={key:4,style:{color:"var(--text-secondary)","font-family":"monospace"}},Ye={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},Xe={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},$e={style:{color:"var(--text-secondary)","font-family":"monospace"}},et={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},tt={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},at={style:{color:"var(--text-secondary)","font-family":"monospace"}},nt={style:{color:"var(--text-muted)","font-size":"11px"}},ot={key:0,style:{padding:"30px","text-align":"center",color:"var(--text-muted)"}},lt={style:{"margin-left":"12px",color:"var(--text-primary)"}},rt={style:{"margin-left":"8px",color:"#888","font-family":"monospace","font-size":"11px"}};function it(t,l,i,e,b,O){const R=c("a-button"),p=c("a-space"),D=c("a-statistic"),T=c("a-card"),S=c("a-col"),W=c("a-row"),M=c("a-alert"),j=c("a-empty"),z=c("a-tab-pane"),C=c("a-tag"),H=c("a-popconfirm"),K=c("a-table"),V=c("a-progress"),x=c("a-tabs"),_=c("a-input"),G=c("a-form-item"),I=c("a-select-option"),L=c("a-select"),F=c("a-form"),q=c("a-modal"),Q=c("a-input-number"),Y=c("a-list-item"),$=c("a-list");return d(),m("div",null,[E("div",Ue,[E("div",null,[E("h2",Be,s(t.$t("knowledgeGraph.title")),1),E("p",Pe,s(t.$t("knowledgeGraph.subtitle")),1)]),a(p,null,{default:o(()=>[a(R,{loading:e.loading,onClick:e.loadAll},{icon:o(()=>[a(e.ReloadOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.refresh")),1)]),_:1},8,["loading"]),a(R,{type:"primary",onClick:l[0]||(l[0]=n=>e.showAddEntityModal=!0)},{icon:o(()=>[a(e.PlusOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.addEntity")),1)]),_:1}),a(R,{onClick:l[1]||(l[1]=n=>e.showAddRelationModal=!0),disabled:e.entities.length<2},{icon:o(()=>[a(e.LinkOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.addRelation")),1)]),_:1},8,["disabled"])]),_:1})]),a(W,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.entityCount"),value:e.stats.entityCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(e.DeploymentUnitOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.relationCount"),value:e.stats.relationCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(e.LinkOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.avgDegree"),value:e.stats.avgDegree,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.density"),value:e.stats.density,precision:4,"value-style":{color:"#722ed1",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),e.hasDesktopFeatures?f("v-if",!0):(d(),A(M,{key:0,message:t.$t("knowledgeGraph.webOnly.message"),description:t.$t("knowledgeGraph.webOnly.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"])),a(x,{activeKey:e.activeTab,"onUpdate:activeKey":l[2]||(l[2]=n=>e.activeTab=n),type:"card"},{default:o(()=>[f(" Tab 1: graph viz "),a(z,{key:"graph"},{tab:o(()=>[a(e.ShareAltOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.graph")),1)]),default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.entities.length===0?(d(),m("div",Ne,[a(j,{description:t.$t("knowledgeGraph.table.emptyGraph")},null,8,["description"])])):(d(),m("div",Ke,[a(e.VChart,{option:e.graphOption,autoresize:""},null,8,["option"])]))]),_:1})]),_:1}),f(" Tab 2: entities "),a(z,{key:"entities"},{tab:o(()=>[a(e.DeploymentUnitOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.entities",{n:e.entities.length})),1)]),default:o(()=>[a(K,{columns:e.entityColumns,"data-source":e.entities,pagination:{pageSize:20,showTotal:n=>t.$t("knowledgeGraph.table.totalSuffix",{n})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:o(({column:n,record:w})=>[n.key==="id"?(d(),m("span",Ve,s(w.id.slice(0,12)),1)):f("v-if",!0),n.key==="name"?(d(),m("span",qe,s(w.name),1)):f("v-if",!0),n.key==="type"?(d(),A(C,{key:2,color:e.entityTypeColor(w.type)},{default:o(()=>[y(s(w.type),1)]),_:2},1032,["color"])):f("v-if",!0),n.key==="tags"?(d(),m(B,{key:3},[(d(!0),m(B,null,N(w.tags,P=>(d(),A(C,{key:P,color:"default"},{default:o(()=>[y(s(P),1)]),_:2},1024))),128)),w.tags.length===0?(d(),m("span",Je,"-")):f("v-if",!0)],64)):f("v-if",!0),n.key==="action"?(d(),A(p,{key:4,size:"small"},{default:o(()=>[a(R,{size:"small",type:"link",onClick:P=>e.openReason(w)},{default:o(()=>[y(s(t.$t("knowledgeGraph.actions.reason")),1)]),_:1},8,["onClick"]),a(H,{title:t.$t("knowledgeGraph.deleteConfirm.title"),"ok-text":t.$t("knowledgeGraph.deleteConfirm.ok"),"ok-type":"danger","cancel-text":t.$t("knowledgeGraph.deleteConfirm.cancel"),onConfirm:P=>e.removeEntity(w)},{default:o(()=>[a(R,{size:"small",type:"link",danger:"",loading:e.removing===w.id},{default:o(()=>[y(s(t.$t("knowledgeGraph.actions.delete")),1)]),_:1},8,["loading"])]),_:2},1032,["title","ok-text","cancel-text","onConfirm"])]),_:2},1024)):f("v-if",!0)]),emptyText:o(()=>[a(j,{description:t.$t("knowledgeGraph.table.emptyEntities")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),f(" Tab 3: relations "),a(z,{key:"relations"},{tab:o(()=>[a(e.LinkOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.relations",{n:e.relations.length})),1)]),default:o(()=>[a(K,{columns:e.relationColumns,"data-source":e.relations,pagination:{pageSize:20,showTotal:n=>t.$t("knowledgeGraph.table.totalSuffix",{n})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:o(({column:n,record:w})=>[n.key==="source"?(d(),m("span",Ze,s(e.entityNameOrId(w.sourceId)),1)):f("v-if",!0),n.key==="arrow"?(d(),m("span",We,"→")):f("v-if",!0),n.key==="target"?(d(),m("span",He,s(e.entityNameOrId(w.targetId)),1)):f("v-if",!0),n.key==="relationType"?(d(),A(C,{key:3,color:"cyan"},{default:o(()=>[y(s(w.relationType),1)]),_:2},1024)):f("v-if",!0),n.key==="weight"?(d(),m("span",Qe,s(w.weight.toFixed(2)),1)):f("v-if",!0)]),emptyText:o(()=>[a(j,{description:t.$t("knowledgeGraph.table.emptyRelations")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),f(" Tab 4: type breakdown "),a(z,{key:"distribution"},{tab:o(()=>[a(e.BarChartOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.distribution")),1)]),default:o(()=>[a(W,{gutter:[24,24]},{default:o(()=>[a(S,{xs:24,md:12},{default:o(()=>[a(T,{title:t.$t("knowledgeGraph.distribution.entityTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.entityTypeRows.length===0?(d(),m("div",Ye,s(t.$t("knowledgeGraph.table.emptyData")),1)):f("v-if",!0),(d(!0),m(B,null,N(e.entityTypeRows,n=>(d(),m("div",{key:n.type,style:{"margin-bottom":"8px"}},[E("div",Xe,[a(C,{color:e.entityTypeColor(n.type)},{default:o(()=>[y(s(n.type),1)]),_:2},1032,["color"]),E("span",$e,s(n.count),1)]),a(V,{percent:n.percent,"show-info":!1,"stroke-color":"#1677ff"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1}),a(S,{xs:24,md:12},{default:o(()=>[a(T,{title:t.$t("knowledgeGraph.distribution.relationTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.relationTypeRows.length===0?(d(),m("div",et,s(t.$t("knowledgeGraph.table.emptyData")),1)):f("v-if",!0),(d(!0),m(B,null,N(e.relationTypeRows,n=>(d(),m("div",{key:n.type,style:{"margin-bottom":"8px"}},[E("div",tt,[a(C,{color:"cyan"},{default:o(()=>[y(s(n.type),1)]),_:2},1024),E("span",at,s(n.count),1)]),a(V,{percent:n.percent,"show-info":!1,"stroke-color":"#52c41a"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1})]),_:1},8,["activeKey"]),f(" Add Entity Modal "),a(q,{open:e.showAddEntityModal,"onUpdate:open":l[6]||(l[6]=n=>e.showAddEntityModal=n),title:t.$t("knowledgeGraph.addEntity_modal.title"),"confirm-loading":e.addingEntity,onOk:e.addEntity,"ok-text":t.$t("knowledgeGraph.addEntity_modal.ok"),"cancel-text":t.$t("knowledgeGraph.addEntity_modal.cancel")},{default:o(()=>[a(F,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.addEntity_modal.nameLabel"),required:""},{default:o(()=>[a(_,{value:e.newEntity.name,"onUpdate:value":l[3]||(l[3]=n=>e.newEntity.name=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addEntity_modal.typeLabel"),required:""},{default:o(()=>[a(L,{value:e.newEntity.type,"onUpdate:value":l[4]||(l[4]=n=>e.newEntity.type=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.typePlaceholder"),loading:e.loadingTypes},{default:o(()=>[(d(!0),m(B,null,N(e.entityTypes,n=>(d(),A(I,{key:n.name,value:n.name},{default:o(()=>[y(s(n.name)+" ",1),E("span",nt,"— "+s(n.description),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder","loading"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addEntity_modal.tagsLabel")},{default:o(()=>[a(_,{value:e.newEntity.tags,"onUpdate:value":l[5]||(l[5]=n=>e.newEntity.tags=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.tagsPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" Add Relation Modal "),a(q,{open:e.showAddRelationModal,"onUpdate:open":l[11]||(l[11]=n=>e.showAddRelationModal=n),title:t.$t("knowledgeGraph.addRelation_modal.title"),"confirm-loading":e.addingRelation,onOk:e.addRelation,"ok-text":t.$t("knowledgeGraph.addRelation_modal.ok"),"cancel-text":t.$t("knowledgeGraph.addRelation_modal.cancel")},{default:o(()=>[a(F,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.addRelation_modal.sourceLabel"),required:""},{default:o(()=>[a(L,{value:e.newRelation.sourceId,"onUpdate:value":l[7]||(l[7]=n=>e.newRelation.sourceId=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.sourcePlaceholder"),"show-search":"","filter-option":e.entityFilter},{default:o(()=>[(d(!0),m(B,null,N(e.entities,n=>(d(),A(I,{key:n.id,value:n.id},{default:o(()=>[y(s(n.name)+" ("+s(n.type)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.targetLabel"),required:""},{default:o(()=>[a(L,{value:e.newRelation.targetId,"onUpdate:value":l[8]||(l[8]=n=>e.newRelation.targetId=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.targetPlaceholder"),"show-search":"","filter-option":e.entityFilter},{default:o(()=>[(d(!0),m(B,null,N(e.entities,n=>(d(),A(I,{key:n.id,value:n.id,disabled:n.id===e.newRelation.sourceId},{default:o(()=>[y(s(n.name)+" ("+s(n.type)+") ",1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.relationTypeLabel"),required:""},{default:o(()=>[a(_,{value:e.newRelation.relationType,"onUpdate:value":l[9]||(l[9]=n=>e.newRelation.relationType=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.relationTypePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.weightLabel")},{default:o(()=>[a(Q,{value:e.newRelation.weight,"onUpdate:value":l[10]||(l[10]=n=>e.newRelation.weight=n),min:.1,max:10,step:.1,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" Reason Modal (BFS) "),a(q,{open:e.showReasonModal,"onUpdate:open":l[14]||(l[14]=n=>e.showReasonModal=n),title:t.$t("knowledgeGraph.reason_modal.title",{name:e.reasonStartName}),width:640,footer:null},{default:o(()=>[a(F,{layout:"inline",style:{"margin-bottom":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.reason_modal.maxDepth")},{default:o(()=>[a(Q,{value:e.reasonOptions.maxDepth,"onUpdate:value":l[12]||(l[12]=n=>e.reasonOptions.maxDepth=n),min:1,max:10},null,8,["value"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.reason_modal.direction")},{default:o(()=>[a(L,{value:e.reasonOptions.direction,"onUpdate:value":l[13]||(l[13]=n=>e.reasonOptions.direction=n),style:{width:"100px"}},{default:o(()=>[a(I,{value:"out"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionOut")),1)]),_:1}),a(I,{value:"in"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionIn")),1)]),_:1}),a(I,{value:"both"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionBoth")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),a(G,null,{default:o(()=>[a(R,{type:"primary",loading:e.reasoning,onClick:e.runReason},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.run")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),e.reasonResults.length===0&&!e.reasoning?(d(),m("div",ot,s(t.$t("knowledgeGraph.reason_modal.hint")),1)):(d(),A($,{key:1,"data-source":e.reasonResults,size:"small"},{renderItem:o(({item:n})=>[a(Y,null,{default:o(()=>[a(C,{color:"purple"},{default:o(()=>[y("depth="+s(n.depth),1)]),_:2},1024),a(C,{color:e.entityTypeColor(n.entity.type),style:{"margin-left":"8px"}},{default:o(()=>[y(s(n.entity.type),1)]),_:2},1032,["color"]),E("span",lt,s(n.entity.name),1),E("span",rt,s(n.entity.id.slice(0,12)),1)]),_:2},1024)]),_:1},8,["data-source"]))]),_:1},8,["open","title"])])}const ct=Se(Le,[["render",it],["__scopeId","data-v-ce227b16"],["__file","/tmp/cc-web-panel-nNRGJZ/repo/packages/web-panel/src/views/KnowledgeGraph.vue"]]);export{ct as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{I as s,J as g,U as d,c as o,K as _,V as k,S as W,R as S,F as K,Z as Q,w as H,n as C,o as M,b as T,r,P as p,Q as O,_ as U}from"./vendor-BvqAck49.js";import{_ as E,u as N}from"./index-C2qPPvCv.js";import{R as j}from"./icons-DP3uiYxy.js";const q={__name:"Logs",setup(V,{expose:a}){a();const x=N(),e=r("status"),y=r(!1),v=r(""),i=r(""),c=r(""),f=r(!0),n=r(null),h={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},m=T(()=>i.value.split(`
|
|
2
|
+
`)),b=T(()=>{if(!c.value)return m.value;const t=c.value.toLowerCase();return m.value.filter(u=>u.toLowerCase().includes(t))});function L(t){return t.includes("✖")||t.includes("error")||t.includes("Error")||t.includes("failed")?"line-error":t.includes("✔")||t.includes("✓")||t.includes("success")||t.includes("running")?"line-success":t.includes("warn")||t.includes("Warn")||t.includes("○")?"line-warn":t.startsWith(" ")||t.startsWith(" ")?"line-indent":""}function l(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function w(t){if(!c.value)return t;const u=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp(`(${u})`,"gi"),"<mark>$1</mark>")}async function R(){y.value=!0,v.value="",i.value="";const t=h[e.value]||"status";try{const{output:u}=await x.execute(t,3e4);i.value=u,f.value&&(await C(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}catch(u){v.value=`执行失败: ${u.message}`,i.value=v.value}finally{y.value=!1}}H(b,async()=>{f.value&&(await C(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}),M(R);const B={ws:x,activeTab:e,loading:y,error:v,rawOutput:i,searchQuery:c,autoScroll:f,logContainer:n,TAB_COMMANDS:h,allLines:m,filteredLines:b,lineClass:L,escapeHtml:l,highlightSearch:w,loadLog:R,ref:r,computed:T,watch:H,nextTick:C,onMounted:M,get ReloadOutlined(){return j},get useWsStore(){return N}};return Object.defineProperty(B,"__isScriptSetup",{enumerable:!1,value:!0}),B}},z={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},A={style:{display:"flex",gap:"10px",margin:"12px 0"}},D={ref:"logContainer",class:"log-box"},F={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},I={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},J={key:2},P=["innerHTML"];function Z(V,a,x,e,y,v){const i=s("a-checkbox"),c=s("a-button"),f=s("a-space"),n=s("a-tab-pane"),h=s("a-tabs"),m=s("a-input-search"),b=s("a-tag"),L=s("a-spin");return p(),g("div",null,[d("div",z,[a[5]||(a[5]=d("div",null,[d("h2",{class:"page-title"},"日志查看"),d("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),o(f,null,{default:_(()=>[o(i,{checked:e.autoScroll,"onUpdate:checked":a[0]||(a[0]=l=>e.autoScroll=l)},{default:_(()=>[...a[3]||(a[3]=[O("自动滚动",-1)])]),_:1},8,["checked"]),o(c,{type:"primary",ghost:"",loading:e.loading,onClick:e.loadLog},{icon:_(()=>[o(e.ReloadOutlined)]),default:_(()=>[a[4]||(a[4]=O(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),k(" Tab Selector "),o(h,{activeKey:e.activeTab,"onUpdate:activeKey":a[1]||(a[1]=l=>e.activeTab=l),onChange:e.loadLog,style:{"margin-bottom":"0"}},{default:_(()=>[o(n,{key:"status",tab:"系统状态"}),o(n,{key:"doctor",tab:"环境诊断"}),o(n,{key:"skill-sources",tab:"技能来源"}),o(n,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),k(" Search Bar "),d("div",A,[o(m,{value:e.searchQuery,"onUpdate:value":a[2]||(a[2]=l=>e.searchQuery=l),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),e.filteredLines.length!==e.allLines.length?(p(),W(b,{key:0,color:"blue"},{default:_(()=>[O(S(e.filteredLines.length)+" / "+S(e.allLines.length)+" 行 ",1)]),_:1})):k("v-if",!0)]),k(" Log Output "),d("div",D,[e.loading?(p(),g("div",F,[o(L,{size:"large"}),a[6]||(a[6]=d("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):e.filteredLines.length?(p(),g("div",J,[(p(!0),g(K,null,Q(e.filteredLines,(l,w)=>(p(),g("div",{key:w,class:U(["log-line",e.lineClass(l)]),innerHTML:e.highlightSearch(e.escapeHtml(l))},null,10,P))),128))])):(p(),g("div",I,S(e.error||"暂无日志内容,点击刷新加载"),1))],512)])}const $=E(q,[["render",Z],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-nNRGJZ/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ as default};
|