chainlesschain 0.161.2 → 0.161.3
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/bin/chainlesschain.js +0 -0
- package/package.json +6 -6
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/AIOps-FON6GZIt.js +1 -0
- package/src/assets/web-panel/assets/{ActionButton-BvMi4awy.js → ActionButton-Byb_P_P9.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-hRk2ziup.js → Analytics-CDG1OwOr.js} +2 -2
- package/src/assets/web-panel/assets/AppLayout-lM1Y2Wgo.js +1 -0
- package/src/assets/web-panel/assets/Audit-p4krng5l.js +1 -0
- package/src/assets/web-panel/assets/Backup-G6AQe6k8.js +1 -0
- package/src/assets/web-panel/assets/{BaseInput-NAp5_OPY.js → BaseInput-tUASXi57.js} +1 -1
- package/src/assets/web-panel/assets/Chat-B46MHHAs.js +2 -0
- package/src/assets/web-panel/assets/{Checkbox-C9dkWb-7.js → Checkbox-CfDbHGdU.js} +1 -1
- package/src/assets/web-panel/assets/Codegen-D1mQ03ap.js +1 -0
- package/src/assets/web-panel/assets/{Col-JyQOivHb.js → Col-C0wS_dvU.js} +1 -1
- package/src/assets/web-panel/assets/Community-CB4KQIpB.js +1 -0
- package/src/assets/web-panel/assets/Compact-CuVvz3Zf.js +1 -0
- package/src/assets/web-panel/assets/Compliance-D6bnHyjs.js +1 -0
- package/src/assets/web-panel/assets/{Cowork-V-tDxtrt.js → Cowork-Dh3yt9pL.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-YgEeQvdV.js → Cron-DiuKXbnA.js} +2 -2
- package/src/assets/web-panel/assets/Crosschain-BFgMa5sQ.js +1 -0
- package/src/assets/web-panel/assets/{DID-swdBCdMZ.js → DID-Dx7CFjrq.js} +2 -2
- package/src/assets/web-panel/assets/Dashboard-D3QHFHex.js +3 -0
- package/src/assets/web-panel/assets/{Dropdown-mlITwb7d.js → Dropdown-sMGnnzUo.js} +1 -1
- package/src/assets/web-panel/assets/Federation-CGt7CYhN.js +1 -0
- package/src/assets/web-panel/assets/{FormItemContext-BYmWDwAT.js → FormItemContext-DuVk39z3.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Du1k1iHz.js → Git-glb99UzZ.js} +2 -2
- package/src/assets/web-panel/assets/Governance-CQXGee_r.js +1 -0
- package/src/assets/web-panel/assets/Inference-Czm-Q3w3.js +1 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-DFrr-B78.js +1 -0
- package/src/assets/web-panel/assets/{Logs-CElvIBBJ.js → Logs-ChGXdo0Q.js} +2 -2
- package/src/assets/web-panel/assets/Marketplace-DW6P2uIY.js +1 -0
- package/src/assets/web-panel/assets/{McpTools-BpHkrlka.js → McpTools-ChOwY-wy.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-DeU9ys_m.js → Memory-vIbbUTel.js} +2 -2
- package/src/assets/web-panel/assets/{Mtc-CCJZpnJo.js → Mtc-60jSuMAz.js} +6 -6
- package/src/assets/web-panel/assets/NLProgramming-fRrjhjpW.js +1 -0
- package/src/assets/web-panel/assets/{Notes-BcpuirPj.js → Notes-C0zhC6_B.js} +3 -3
- package/src/assets/web-panel/assets/{Organization-B_SHESSc.js → Organization-Bebfm6lF.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-R2SOGT0l.js → Overflow-D8ZjaRpc.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-IYYy3cEd.js → P2P-BjgamPxI.js} +2 -2
- package/src/assets/web-panel/assets/{Permissions-CR1N42yW.js → Permissions-uwoi4HnY.js} +2 -2
- package/src/assets/web-panel/assets/Pipeline-C2aHcq6n.js +1 -0
- package/src/assets/web-panel/assets/Privacy-lU34k_c5.js +1 -0
- package/src/assets/web-panel/assets/{ProjectSettings-CEDhpgbs.js → ProjectSettings-Dy-Iie9L.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-DABi6ylb.js → Projects-B4Vt0iiH.js} +2 -2
- package/src/assets/web-panel/assets/{Providers-HzrcE8ma.js → Providers-Cu9uRsVk.js} +2 -2
- package/src/assets/web-panel/assets/QuickAsk-BE29MB0d.js +1 -0
- package/src/assets/web-panel/assets/Recommend-DJ9nU8HM.js +1 -0
- package/src/assets/web-panel/assets/Reputation-ThffxFwr.js +1 -0
- package/src/assets/web-panel/assets/{Row-2akLU3YS.js → Row-CqBtO8lC.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-D6qNq6Ht.js → RssFeed-DaxFEUe6.js} +3 -3
- package/src/assets/web-panel/assets/Search-4zVFnx_Y.js +1 -0
- package/src/assets/web-panel/assets/{Security-DdW4hu_4.js → Security-BEfSoaTM.js} +2 -2
- package/src/assets/web-panel/assets/{Services-CnzEzGFN.js → Services-DTAaoYJC.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-D6RevdW2.js → Skeleton-CIZErmoY.js} +2 -2
- package/src/assets/web-panel/assets/Skills-CacIwBCt.js +1 -0
- package/src/assets/web-panel/assets/Sla-Si0g7a0u.js +1 -0
- package/src/assets/web-panel/assets/SpeechSettings-H19DqdAG.js +1 -0
- package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +1 -0
- package/src/assets/web-panel/assets/SyncSettings-bsC4-4rU.js +1 -0
- package/src/assets/web-panel/assets/Tasks-Bxlj8OVW.js +1 -0
- package/src/assets/web-panel/assets/Templates-B9YsJQcb.js +1 -0
- package/src/assets/web-panel/assets/Tenant-D4YncKb7.js +1 -0
- package/src/assets/web-panel/assets/Tokens-B2wJjOdI.js +1 -0
- package/src/assets/web-panel/assets/{Trigger-DkSZjOlY.js → Trigger-DU9-3gN9.js} +1 -1
- package/src/assets/web-panel/assets/Trust-_yan18qg.js +1 -0
- package/src/assets/web-panel/assets/UkeySign-CZ7Xrq96.js +1 -0
- package/src/assets/web-panel/assets/VideoEditing-CUgere5i.js +1 -0
- package/src/assets/web-panel/assets/{Wallet-DHbi5dHt.js → Wallet-DSnzYVqY.js} +2 -2
- package/src/assets/web-panel/assets/{WebAuthn-BkGDI33-.js → WebAuthn-De4aHZ87.js} +2 -2
- package/src/assets/web-panel/assets/WorkflowEditor-C-QNGwia.js +1 -0
- package/src/assets/web-panel/assets/chat-DFt6UJUS.js +1 -0
- package/src/assets/web-panel/assets/{colors-D2tTvuDI.js → colors-CHuBSydj.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CqCEUZiy.js → compact-item-DtCmGKIm.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-C6HFlAQP.js → createContext-Cetup5Fb.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-yp2CbhYc.js → hasIn-Q509tIlQ.js} +1 -1
- package/src/assets/web-panel/assets/icons-zXb7lDZs.js +57 -0
- package/src/assets/web-panel/assets/{index-B74gWYqD.js → index-0KFwdHZg.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXf0zL5i.js → index-7kdZ5ox5.js} +1 -1
- package/src/assets/web-panel/assets/index-B2f4ltyM.js +65 -0
- package/src/assets/web-panel/assets/{index-CucxAdwN.js → index-B5d7Dkyp.js} +2 -2
- package/src/assets/web-panel/assets/index-BDK2Fkgd.js +13 -0
- package/src/assets/web-panel/assets/index-BJFH7IlV.js +21 -0
- package/src/assets/web-panel/assets/{index-Blq49aTW.js → index-BTwIwesN.js} +1 -1
- package/src/assets/web-panel/assets/index-Bjz1Y3Gs.js +1 -0
- package/src/assets/web-panel/assets/index-BlPG_vWg.js +55 -0
- package/src/assets/web-panel/assets/{index-B0jkl2Zb.js → index-BmHsGJ8F.js} +1 -1
- package/src/assets/web-panel/assets/{index-DnehXcB-.js → index-BvAwpPN9.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2qFUwGb.js → index-C2y5MxfU.js} +2 -2
- package/src/assets/web-panel/assets/{index-CrEEL63u.js → index-C61WQXE3.js} +1 -1
- package/src/assets/web-panel/assets/{index-CcwZodUl.js → index-C7baQwUM.js} +1 -1
- package/src/assets/web-panel/assets/{index-D34iabcS.js → index-C8agLSzC.js} +8 -8
- package/src/assets/web-panel/assets/{index-Cd6m6ynF.js → index-CJjwnpac.js} +1 -1
- package/src/assets/web-panel/assets/index-CRZ8WjUK.js +1 -0
- package/src/assets/web-panel/assets/index-CX7WO0g5.js +12 -0
- package/src/assets/web-panel/assets/index-CbQ3AZcJ.js +3 -0
- package/src/assets/web-panel/assets/{index-DEKuiAPQ.js → index-CeXoNBLu.js} +2 -2
- package/src/assets/web-panel/assets/{index-w1xShUDf.js → index-Ctdt2gEP.js} +1 -1
- package/src/assets/web-panel/assets/index-Cxk-8scO.js +1 -0
- package/src/assets/web-panel/assets/index-D0oJF6nX.js +7 -0
- package/src/assets/web-panel/assets/index-D7Smgwky.js +1 -0
- package/src/assets/web-panel/assets/index-DGAGIqDR.js +1 -0
- package/src/assets/web-panel/assets/index-DKWvx42k.js +1 -0
- package/src/assets/web-panel/assets/{index-Dj4P0iWm.js → index-DVQSXYwb.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxSsO6Sm.js → index-DaMTgJkE.js} +2 -2
- package/src/assets/web-panel/assets/index-Dd68wDHG.js +12 -0
- package/src/assets/web-panel/assets/{index-KdFFI-p3.js → index-Dem-mhfD.js} +1 -1
- package/src/assets/web-panel/assets/{index-BTL2yIvT.js → index-Dq6E-pj8.js} +1 -1
- package/src/assets/web-panel/assets/{index-nzDx0JAR.js → index-DuQfQVBe.js} +1 -1
- package/src/assets/web-panel/assets/{index-CFoFkVUt.js → index-HqJ94PSG.js} +4 -4
- package/src/assets/web-panel/assets/{index-DlgMVieO.js → index-R5D_-l07.js} +1 -1
- package/src/assets/web-panel/assets/{index-NNymVAza.js → index-SR2lFA_W.js} +2 -2
- package/src/assets/web-panel/assets/{index-B8Qxu0q2.js → index-hSpRlh93.js} +1 -1
- package/src/assets/web-panel/assets/index-jfzI94IT.js +1 -0
- package/src/assets/web-panel/assets/{index-BlVnFOFL.js → index-nfLO3XrF.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DfdVxwz6.js → initDefaultProps-D7iOaKOY.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CL0bdvJg.js → motion-CvCFk7sy.js} +1 -1
- package/src/assets/web-panel/assets/{move-Bo9Fgzv7.js → move-BVj5YZrV.js} +1 -1
- package/src/assets/web-panel/assets/{omit-C-cc6wHr.js → omit-N_JDguMt.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CjLp5RN-.js → pickAttrs-BWcuLN5j.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CJa8gsqa.js → placementArrow--1l0FzZx.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CcDj3P-p.js → responsiveObserve-CGX6EYRt.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CpvbHO26.js → slide-B3hJzlWm.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BK69kP1U.js → statusUtils-BJuExZuw.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CDvBRzsG.js → styleChecker-pshnIK0r.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-CRN_hzJt.js → useFlexGapSupport-3FQZdpBd.js} +1 -1
- package/src/assets/web-panel/assets/useFs-BW1piLQM.js +1 -0
- package/src/assets/web-panel/assets/{vnode-Bzp-FsbB.js → vnode-D98L6HI1.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-BHqpWXJV.js → zoom-DnmMtXgZ.js} +1 -1
- package/src/assets/web-panel/index.html +2 -2
- package/src/lib/config-manager.js +3 -1
- package/src/lib/governance-v2-helpers.js +1 -1
- package/src/lib/sync-manager.js +119 -25
- package/src/assets/web-panel/assets/AIOps-CoZ9bIqF.js +0 -1
- package/src/assets/web-panel/assets/AppLayout-_JR3Gko8.js +0 -1
- package/src/assets/web-panel/assets/Audit-D8WmaHdX.js +0 -1
- package/src/assets/web-panel/assets/Backup-CogYVeiE.js +0 -1
- package/src/assets/web-panel/assets/Chat-DkQnhjfk.js +0 -2
- package/src/assets/web-panel/assets/Codegen-BHyJ3j-p.js +0 -1
- package/src/assets/web-panel/assets/Community-UMq5QuBA.js +0 -1
- package/src/assets/web-panel/assets/Compact-DGlwooBJ.js +0 -1
- package/src/assets/web-panel/assets/Compliance-2rWGO55k.js +0 -1
- package/src/assets/web-panel/assets/Crosschain-Cgd5cRKn.js +0 -1
- package/src/assets/web-panel/assets/Dashboard-ClnWtxsT.js +0 -3
- package/src/assets/web-panel/assets/Federation-DtUN3wQa.js +0 -1
- package/src/assets/web-panel/assets/Governance-B2TFaWsf.js +0 -1
- package/src/assets/web-panel/assets/Inference-Cm_hmXla.js +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-DLaLMo4r.js +0 -1
- package/src/assets/web-panel/assets/Marketplace-BlR3RCDV.js +0 -1
- package/src/assets/web-panel/assets/NLProgramming-B_Tie6j1.js +0 -1
- package/src/assets/web-panel/assets/Pipeline-nwFpKsU_.js +0 -1
- package/src/assets/web-panel/assets/Privacy-BGpz72PX.js +0 -1
- package/src/assets/web-panel/assets/QuickAsk-6FgX9DC6.js +0 -1
- package/src/assets/web-panel/assets/Recommend-BPhQwye7.js +0 -1
- package/src/assets/web-panel/assets/Reputation-BL6hTN1s.js +0 -1
- package/src/assets/web-panel/assets/Search-R_b-u9oL.js +0 -1
- package/src/assets/web-panel/assets/Skills-DD5ReHH7.js +0 -1
- package/src/assets/web-panel/assets/Sla-CaQOOsjD.js +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-D-pGIn9Z.js +0 -1
- package/src/assets/web-panel/assets/Tasks-BbdO_i4Q.js +0 -1
- package/src/assets/web-panel/assets/Templates-CupAugDn.js +0 -1
- package/src/assets/web-panel/assets/Tenant-rseAzHcY.js +0 -1
- package/src/assets/web-panel/assets/Tokens-DXMokNbR.js +0 -1
- package/src/assets/web-panel/assets/Trust-CKb7QDH1.js +0 -1
- package/src/assets/web-panel/assets/UkeySign-Cux8_Ib_.js +0 -1
- package/src/assets/web-panel/assets/VideoEditing-CSOjdBZg.js +0 -1
- package/src/assets/web-panel/assets/WorkflowEditor-BFZ3RYva.js +0 -1
- package/src/assets/web-panel/assets/chat-BQ-Nk2XY.js +0 -1
- package/src/assets/web-panel/assets/icons-DvZE-RKs.js +0 -57
- package/src/assets/web-panel/assets/index-4cn1LmJ9.js +0 -1
- package/src/assets/web-panel/assets/index-B9b_mz4I.js +0 -55
- package/src/assets/web-panel/assets/index-BAA1SFp1.js +0 -1
- package/src/assets/web-panel/assets/index-BJeE7n_I.js +0 -12
- package/src/assets/web-panel/assets/index-BJoK7MkB.js +0 -13
- package/src/assets/web-panel/assets/index-CA3g3EpL.js +0 -1
- package/src/assets/web-panel/assets/index-CWhXxdyo.js +0 -1
- package/src/assets/web-panel/assets/index-Cfy9l115.js +0 -1
- package/src/assets/web-panel/assets/index-CijiVpfO.js +0 -1
- package/src/assets/web-panel/assets/index-Cpfx7-LN.js +0 -12
- package/src/assets/web-panel/assets/index-CvuBD5TK.js +0 -3
- package/src/assets/web-panel/assets/index-Cw4v7ezB.js +0 -65
- package/src/assets/web-panel/assets/index-DjeNNVwu.js +0 -1
- package/src/assets/web-panel/assets/index-JszcDpsT.js +0 -7
- package/src/assets/web-panel/assets/index-aw2DwKj-.js +0 -21
- package/src/assets/web-panel/assets/useFs-BD-YRwbU.js +0 -1
- package/src/assets/web-panel/assets/ws-D_5-FRIb.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{_ as Pe,
|
|
1
|
+
import{u as be,_ as Pe,b as Ee}from"./index-B2f4ltyM.js";import{al as Ne,R as qe,n as he,a9 as Fe,f as Ie,aj as Je,am as Be}from"./icons-zXb7lDZs.js";import{K as V,L as o,M as s,F as D,_ as le,$ as We,P as a,S as k,R as y,c as v,N as f,O as M,Q as A,u as i,f as W,o as He,r as $}from"./vendor-B6ToihkA.js";function ue(t){if(t&&typeof t.ok=="boolean"&&!t.ok)throw new Error(t.error||"MCP call failed");return t?.result??t??null}function Ke(){const t=be();async function e(m){const u=await t.sendRaw(m?{type:"mcp.list_tools",serverName:m}:{type:"mcp.list_tools"},15e3);return ue(u)}async function d(m,u,j={}){if(typeof m!="string"||!m)throw new Error("serverName is required");if(typeof u!="string"||!u)throw new Error("toolName is required");const w=await t.sendRaw({type:"mcp.call_tool",serverName:m,toolName:u,params:j},6e4);return ue(w)}async function c(m){const u=await t.sendRaw(m?{type:"mcp.list_resources",serverName:m}:{type:"mcp.list_resources"},15e3);return ue(u)}async function r(m,u){if(typeof m!="string"||!m)throw new Error("serverName is required");if(typeof u!="string"||!u)throw new Error("uri is required");const j=await t.sendRaw({type:"mcp.read_resource",serverName:m,uri:u},3e4);return ue(j)}return{listTools:e,callTool:d,listResources:c,readResource:r}}function ce(t){return!t||typeof t!="object"?[]:t.type!=="object"||!t.properties||typeof t.properties!="object"?[]:pe(t,[])}function pe(t,e){const d=new Set(Array.isArray(t.required)?t.required:[]),c=[],r=t.properties||{};for(const[m,u]of Object.entries(r)){if(!u||typeof u!="object")continue;const j=[...e,m],w=d.has(m);if(de(u.type)==="object"&&u.properties&&typeof u.properties=="object"){const O=pe(u,j);O.length===0?c.push(xe(j,u,w,"raw")):c.push(...O);continue}c.push(xe(j,u,w))}return c}function xe(t,e,d,c){const r=de(e.type),m=typeof e.description=="string"?e.description:"",u=t.join("."),j=e.title||t[t.length-1],w=Array.isArray(e.enum)&&e.enum.length>0;let T="raw",O=null,U;if(c)T=c;else if(w)T="select";else if(r==="string")T=De(e,m)?"textarea":"text";else if(r==="integer"||r==="number")T="number";else if(r==="boolean")T="boolean";else if(r==="array"){const P=e.items&&typeof e.items=="object"?e.items:null,x=P?de(P.type):null;x==="string"?(T="tags",O="string"):x==="object"&&P.properties&&typeof P.properties=="object"&&(T="objectList",U=pe(P,[]),U.length===0&&(T="raw",U=void 0))}return{name:u,path:t,type:r,widget:T,label:j,description:m,required:d,default:e.default,enum:w?e.enum.slice():void 0,itemsType:O,...U?{itemFields:U}:{}}}function de(t){return typeof t=="string"?t:Array.isArray(t)&&t.find(d=>d&&d!=="null")||"any"}function De(t,e){return t.format==="long-text"||t.format==="textarea"||typeof t.maxLength=="number"&&t.maxLength>200||e.length>120}function Qe(t){const e={};for(const d of t){if(d.default!==void 0){e[d.name]=me(d.default);continue}d.widget==="boolean"?e[d.name]=!1:d.widget==="tags"?e[d.name]=[]:d.widget==="number"?e[d.name]=null:d.widget==="raw"?e[d.name]="":d.widget==="objectList"?e[d.name]=[]:e[d.name]=""}return e}function me(t){if(Array.isArray(t))return t.map(me);if(t&&typeof t=="object"){const e={};for(const[d,c]of Object.entries(t))e[d]=me(c);return e}return t}function ke(t,e){const d={},c={};for(const r of t){const m=Array.isArray(r.path)?r.path:String(r.name).split("."),u=e?.[r.name];if(Ye(u,r.widget)){r.required&&(d[r.name]="必填");continue}if(r.widget==="number"){const w=typeof u=="number"?u:Number(u);if(Number.isNaN(w)){d[r.name]="必须是数字";continue}if(r.type==="integer"&&!Number.isInteger(w)){d[r.name]="必须是整数";continue}G(c,m,w);continue}if(r.widget==="boolean"){G(c,m,!!u);continue}if(r.widget==="tags"){const w=Array.isArray(u)?u:String(u).split(/[\n,]/).map(T=>T.trim()).filter(Boolean);G(c,m,w);continue}if(r.widget==="select"){if(Array.isArray(r.enum)&&!r.enum.includes(u)){d[r.name]="值不在允许的选项内";continue}G(c,m,u);continue}if(r.widget==="raw"){try{G(c,m,JSON.parse(u))}catch(w){d[r.name]=`JSON 解析失败:${w.message}`}continue}if(r.widget==="objectList"){if(!Array.isArray(u)){d[r.name]="必须是列表";continue}if(u.length===0)continue;const w=[];let T=!1;for(let O=0;O<u.length;O++){const U=u[O];if(!U||typeof U!="object"){d[`${r.name}[${O}]`]="必须是对象",T=!0;continue}const P=ke(r.itemFields||[],U);if(!P.ok){T=!0;for(const[x,S]of Object.entries(P.errors))d[`${r.name}[${O}].${x}`]=S;continue}w.push(P.params)}T||G(c,m,w);continue}G(c,m,u)}return Object.keys(d).length>0?{ok:!1,errors:d}:{ok:!0,params:c}}function G(t,e,d){if(e.length===1){t[e[0]]=d;return}let c=t;for(let r=0;r<e.length-1;r++){const m=e[r];(c[m]===void 0||typeof c[m]!="object"||Array.isArray(c[m]))&&(c[m]={}),c=c[m]}c[e[e.length-1]]=d}function Ye(t,e){return t==null?!0:e==="boolean"?!1:e==="number"?t===""||t===null:e==="tags"?Array.isArray(t)?t.length===0:String(t).trim()==="":e==="objectList"?t==null:typeof t=="string"?t.trim()==="":!1}const Ge={key:0,style:{color:"var(--text-muted)","font-size":"12px",padding:"8px 0"}},Xe={key:1,style:{display:"flex","flex-direction":"column",gap:"14px"}},Ze={key:0,style:{color:"var(--text-muted)","font-size":"10px","font-family":"monospace","margin-bottom":"4px"}},et={style:{"margin-bottom":"4px"}},tt={style:{"font-family":"monospace","font-size":"12px"}},ot={key:0,style:{color:"#ff4d4f","margin-left":"4px"}},nt={key:1,style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},at={key:8},lt={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-bottom":"8px"}},rt={style:{color:"var(--text-muted)","font-size":"11px"}},st={style:{display:"flex","flex-direction":"column",gap:"10px"}},it={style:{"font-family":"monospace","font-size":"11px"}},ut={key:0,style:{color:"#ff4d4f","margin-left":"4px"}},ct={key:5,style:{color:"#ff4d4f","font-size":"11px"}},dt={key:10,style:{color:"#ff4d4f","font-size":"11px","margin-top":"4px"}},mt={__name:"McpToolForm",props:{schema:{type:Object,default:null},modelValue:{type:Object,default:()=>({})},errors:{type:Object,default:()=>({})}},emits:["update:modelValue"],setup(t,{expose:e,emit:d}){const c=t,r=d,m=W(()=>ce(c.schema));function u(x){const S=Math.max(0,(x.path?.length??1)-1);return S>0?`margin-left: ${S*16}px;`:""}let j=null;function w(x){const S=x.path||[x.name];if(S.length<=1)return j=null,"";const L=S.slice(0,-1).join(".");return L===j?"":(j=L,L)}function T(x,S){r("update:modelValue",{...c.modelValue,[x]:S})}function O(x,S,L,N){const H=Array.isArray(c.modelValue[x])?c.modelValue[x].slice():[];H[S]={...H[S]||{},[L]:N},r("update:modelValue",{...c.modelValue,[x]:H})}function U(x){const S=Array.isArray(c.modelValue[x.name])?c.modelValue[x.name].slice():[],L={};for(const N of x.itemFields||[])N.default!==void 0?L[N.name]=N.default:N.widget==="boolean"?L[N.name]=!1:N.widget==="number"?L[N.name]=null:L[N.name]="";S.push(L),r("update:modelValue",{...c.modelValue,[x.name]:S})}function P(x,S){const L=Array.isArray(c.modelValue[x])?c.modelValue[x].slice():[];L.splice(S,1),r("update:modelValue",{...c.modelValue,[x]:L})}return e({fields:m}),(x,S)=>{const L=V("a-tag"),N=V("a-input"),H=V("a-textarea"),X=V("a-input-number"),F=V("a-switch"),Q=V("a-select"),K=V("a-button");return m.value.length?(o(),s("div",Xe,[(o(!0),s(D,null,le(m.value,n=>(o(),s("div",{key:n.name,style:We(u(n))},[w(n)!==""?(o(),s("div",Ze,a(w(n)),1)):k("",!0),y("div",et,[y("span",tt,a(n.label),1),n.required?(o(),s("span",ot,"*")):k("",!0),v(L,{size:"small",style:{"margin-left":"8px","font-size":"10px"}},{default:f(()=>[M(a(n.type)+a(n.itemsType?`<${n.itemsType}>`:""),1)]),_:2},1024)]),n.description?(o(),s("div",nt,a(n.description),1)):k("",!0),n.widget==="text"?(o(),A(N,{key:2,value:t.modelValue[n.name]??"",placeholder:n.default!==void 0?`默认 ${n.default}`:"",size:"small","onUpdate:value":z=>T(n.name,z)},null,8,["value","placeholder","onUpdate:value"])):n.widget==="textarea"?(o(),A(H,{key:3,value:t.modelValue[n.name]??"",rows:4,placeholder:n.default!==void 0?`默认 ${n.default}`:"","onUpdate:value":z=>T(n.name,z)},null,8,["value","placeholder","onUpdate:value"])):n.widget==="number"?(o(),A(X,{key:4,value:t.modelValue[n.name],size:"small",placeholder:n.default!==void 0?`默认 ${n.default}`:"",style:{width:"100%"},"onUpdate:value":z=>T(n.name,z)},null,8,["value","placeholder","onUpdate:value"])):n.widget==="boolean"?(o(),A(F,{key:5,checked:!!t.modelValue[n.name],"onUpdate:checked":z=>T(n.name,z)},null,8,["checked","onUpdate:checked"])):n.widget==="select"?(o(),A(Q,{key:6,value:t.modelValue[n.name]??void 0,options:(n.enum||[]).map(z=>({label:String(z),value:z})),size:"small",style:{width:"100%"},placeholder:n.default!==void 0?`默认 ${n.default}`:"请选择","onUpdate:value":z=>T(n.name,z)},null,8,["value","options","placeholder","onUpdate:value"])):n.widget==="tags"?(o(),A(Q,{key:7,value:Array.isArray(t.modelValue[n.name])?t.modelValue[n.name]:[],mode:"tags",size:"small",style:{width:"100%"},placeholder:"输入后回车添加","token-separators":[",",`
|
|
2
2
|
`],"onUpdate:value":z=>T(n.name,z)},null,8,["value","onUpdate:value"])):n.widget==="objectList"?(o(),s("div",at,[(o(!0),s(D,null,le(Array.isArray(t.modelValue[n.name])?t.modelValue[n.name]:[],(z,I)=>(o(),s("div",{key:I,style:{border:"1px dashed var(--border-color)",padding:"10px","border-radius":"4px","margin-bottom":"8px",background:"var(--bg-card-hover)"}},[y("div",lt,[y("span",rt,"#"+a(I+1),1),v(K,{size:"small",type:"link",danger:"",onClick:C=>P(n.name,I)},{default:f(()=>[...S[0]||(S[0]=[M(" 删除 ",-1)])]),_:1},8,["onClick"])]),y("div",st,[(o(!0),s(D,null,le(n.itemFields||[],C=>(o(),s("div",{key:C.name,style:{display:"flex","flex-direction":"column",gap:"4px"}},[y("div",null,[y("span",it,a(C.label),1),C.required?(o(),s("span",ut,"*")):k("",!0),v(L,{size:"small",style:{"margin-left":"6px","font-size":"10px"}},{default:f(()=>[M(a(C.type),1)]),_:2},1024)]),C.widget==="text"?(o(),A(N,{key:0,value:z[C.name]??"",size:"small","onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","onUpdate:value"])):C.widget==="number"?(o(),A(X,{key:1,value:z[C.name],size:"small",style:{width:"100%"},"onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","onUpdate:value"])):C.widget==="boolean"?(o(),A(F,{key:2,checked:!!z[C.name],"onUpdate:checked":E=>O(n.name,I,C.name,E)},null,8,["checked","onUpdate:checked"])):C.widget==="select"?(o(),A(Q,{key:3,value:z[C.name]??void 0,options:(C.enum||[]).map(E=>({label:String(E),value:E})),size:"small",style:{width:"100%"},"onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","options","onUpdate:value"])):(o(),A(H,{key:4,value:typeof z[C.name]=="string"?z[C.name]:"",rows:2,placeholder:"复杂子字段 — 请用 JSON 模式",style:{"font-family":"monospace","font-size":"11px"},"onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","onUpdate:value"])),t.errors[`${n.name}[${I}].${C.name}`]?(o(),s("div",ct,a(t.errors[`${n.name}[${I}].${C.name}`]),1)):k("",!0)]))),128))])]))),128)),v(K,{size:"small",type:"dashed",block:"",onClick:z=>U(n)},{icon:f(()=>[v(i(Ne))]),default:f(()=>[S[1]||(S[1]=M(" 添加项 ",-1))]),_:1},8,["onClick"])])):(o(),A(H,{key:9,value:t.modelValue[n.name]??"",rows:3,placeholder:'复杂类型 — 请输入 JSON,如 {"key":"value"}',style:{"font-family":"monospace","font-size":"12px"},"onUpdate:value":z=>T(n.name,z)},null,8,["value","onUpdate:value"])),t.errors[n.name]?(o(),s("div",dt,a(t.errors[n.name]),1)):k("",!0)],4))),128))])):(o(),s("div",Ge," 此工具的 inputSchema 不是 type:object — 请用 JSON 模式编辑。 "))}}},pt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ft={class:"page-title"},yt={class:"page-sub"},vt={key:0,style:{"text-align":"center",padding:"30px"}},_t={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},gt={style:{background:"var(--bg-card-hover)",padding:"2px 6px","border-radius":"3px"}},ht={key:2,class:"servers-grid"},xt={style:{display:"flex","align-items":"center",gap:"10px","margin-bottom":"6px"}},bt={style:{color:"#e0e0e0","font-weight":"500","font-family":"monospace"}},kt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},wt={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"4px"}},Tt={key:0,style:{"text-align":"center",padding:"30px"}},zt={key:0,style:{color:"#91caff","font-family":"monospace","font-size":"12px"}},St={key:1,style:{color:"var(--text-muted)","font-size":"11px"}},Ct={style:{padding:"30px",color:"var(--text-muted)"}},$t={key:0,style:{"text-align":"center",padding:"30px"}},At={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},Vt={key:0,style:{color:"#87d068","font-family":"monospace","font-size":"11px","word-break":"break-all"}},jt={key:1,style:{color:"var(--text-muted)","font-size":"10px"}},Ot={style:{padding:"30px",color:"var(--text-muted)"}},Ut={key:0,style:{display:"flex","flex-direction":"column",gap:"12px"}},Lt={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},Rt={style:{"font-family":"monospace","font-size":"13px"}},Mt={style:{color:"#91caff"}},Pt={key:0},Et={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},Nt={style:{"font-size":"12px"}},qt={key:1},Ft={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},It={style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","max-height":"140px",overflow:"auto",margin:"0"}},Jt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"4px"}},Bt={style:{color:"var(--text-muted)","font-size":"11px"}},Wt={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"4px"}},Ht={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px"}},Kt={style:{color:"#ff4d4f","font-size":"11px","font-weight":"500","margin-bottom":"4px"}},Dt={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}},Qt={key:3},Yt={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},Gt={style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","max-height":"240px",overflow:"auto",margin:"0","white-space":"pre-wrap"}},Xt={key:0,style:{display:"flex","flex-direction":"column",gap:"12px"}},Zt={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},eo={style:{"font-family":"monospace","font-size":"12px","word-break":"break-all"}},to={style:{color:"#87d068"}},oo={key:0},no={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},ao={style:{"font-size":"12px"}},lo={key:1,style:{"text-align":"center",padding:"20px"}},ro={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px"}},so={style:{color:"#ff4d4f","font-size":"11px","font-weight":"500","margin-bottom":"4px"}},io={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}},uo={key:3},co={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},mo={style:{display:"flex",gap:"8px","align-items":"center","margin-bottom":"4px"}},po={key:1,style:{color:"var(--text-muted)","font-size":"10px","font-family":"monospace"}},fo={key:0,style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","max-height":"360px",overflow:"auto",margin:"0","white-space":"pre-wrap","word-break":"break-all"}},yo={key:1,style:{"font-size":"11px",color:"var(--text-muted)","font-style":"italic"}},vo={key:2,style:{"font-size":"11px",color:"var(--text-muted)","font-style":"italic"}},_o={__name:"McpTools",setup(t){const{t:e}=Ee(),d=be(),c=Ke(),r=$(!1),m=$([]),u=$([]),j=$(""),w=$(""),T=W(()=>{if(!j.value)return u.value;const p=j.value.toLowerCase();return u.value.filter(l=>l.name?.toLowerCase().includes(p)||l.description?.toLowerCase().includes(p))}),O=W(()=>[{title:e("mcpTools.toolColumns.name"),key:"name",dataIndex:"name",width:"28%"},{title:e("mcpTools.toolColumns.server"),key:"server",dataIndex:"server",width:"18%"},{title:e("mcpTools.toolColumns.description"),dataIndex:"description",ellipsis:!0},{title:e("mcpTools.toolColumns.action"),key:"action",width:110}]),U=$([]),P=$(""),x=$(!1),S=$(!1),L=W(()=>[{title:e("mcpTools.resourceColumns.uri"),key:"uri",dataIndex:"uri"},{title:e("mcpTools.resourceColumns.server"),key:"server",dataIndex:"server",width:"15%"},{title:e("mcpTools.resourceColumns.mime"),key:"mimeType",dataIndex:"mimeType",width:"15%"},{title:e("mcpTools.resourceColumns.action"),key:"action",width:90}]),N=W(()=>{if(!P.value)return U.value;const p=P.value.toLowerCase();return U.value.filter(l=>l.uri?.toLowerCase().includes(p)||l.name?.toLowerCase().includes(p)||l.description?.toLowerCase().includes(p))});async function H(){if(!x.value){x.value=!0;try{const p=await c.listResources();if(!p||!Array.isArray(p.servers)){U.value=[];return}const l=[];for(const g of p.servers)if(Array.isArray(g.resources))for(const h of g.resources)l.push({key:`${g.name}.${h.uri}`,uri:h.uri,name:h.name||"",description:h.description||"",mimeType:h.mimeType||null,server:g.name});U.value=l,S.value=!0}catch(p){console.error("listResources failed:",p),U.value=[]}finally{x.value=!1}}}const X=$(!1),F=$(null),Q=$(!1),K=$([]),n=$(""),z=W(()=>F.value?e("mcpTools.read.modalTitle",{server:F.value.server}):e("mcpTools.read.fallbackTitle"));async function I(p){F.value=p,K.value=[],n.value="",X.value=!0,Q.value=!0;try{const l=await c.readResource(p.server,p.uri);l&&Array.isArray(l.contents)?K.value=l.contents:K.value=l?[l]:[]}catch(l){n.value=l?.message||String(l)}finally{Q.value=!1}}function C(){X.value=!1}const E=$(!1),R=$(null),oe=$("form"),re=$({}),se=$({}),ie=$("{}"),ne=$(!1),Y=$(null),ae=$(""),we=W(()=>ce(R.value?.inputSchema||null).length>0),Te=W(()=>R.value?e("mcpTools.run.modalTitle",{server:R.value.server,tool:R.value.name}):e("mcpTools.run.fallbackTitle")),ze=W(()=>{if(!R.value?.inputSchema)return"";try{return JSON.stringify(R.value.inputSchema,null,2)}catch{return String(R.value.inputSchema)}}),Se=W(()=>{if(Y.value===null)return"";try{return JSON.stringify(Y.value,null,2)}catch{return String(Y.value)}}),Z=$("");function Ce(p){R.value=p,ie.value="{}",Y.value=null,ae.value="",Z.value="",se.value={};const l=ce(p?.inputSchema||null);oe.value=l.length>0?"form":"json",re.value=Qe(l),E.value=!0}function $e(){E.value=!1}async function Ae(){if(!R.value||ne.value)return;Z.value="",se.value={};let p={};if(oe.value==="form"){const l=ce(R.value.inputSchema||null),g=ke(l,re.value);if(!g.ok){se.value=g.errors;return}p=g.params}else{const l=(ie.value||"").trim();if(l){try{p=JSON.parse(l)}catch(g){Z.value=g.message||"invalid JSON";return}if(p===null||typeof p!="object"||Array.isArray(p)){Z.value=e("mcpTools.run.paramsMustBeObject");return}}}ne.value=!0,ae.value="",Y.value=null;try{const l=await c.callTool(R.value.server,R.value.name,p);Y.value=l}catch(l){ae.value=l?.message||String(l)}finally{ne.value=!1}}async function Ve(){const p=await c.listTools();if(!p||!Array.isArray(p.servers))return!1;m.value=p.servers.map(g=>({key:g.name,name:g.name,command:"",args:[],description:g.state?`state: ${g.state}`:"",error:g.error||null}));const l=[];for(const g of p.servers)if(Array.isArray(g.tools))for(const h of g.tools)l.push({key:`${g.name}.${h.name}`,name:h.name,description:h.description||"",server:g.name,inputSchema:h.inputSchema||null});return u.value=l,!0}async function fe(){r.value=!0;try{try{if(await Ve()){w.value="topic";return}}catch(g){const h=g?.message||"";h.includes("mcp_unavailable")||h.includes("no_handler")||h.includes("UNKNOWN_TYPE")||console.error("MCP topic load failed:",g)}const[p,l]=await Promise.all([d.execute("mcp servers",15e3).catch(()=>({output:""})),d.execute("mcp tools",15e3).catch(()=>({output:""}))]);m.value=je(p.output),u.value=Oe(l.output),w.value="cli"}catch(p){console.error("MCP load failed:",p)}finally{r.value=!1,w.value==="topic"?H():(U.value=[],S.value=!1)}}function je(p){const l=[],g=p.split(`
|
|
3
3
|
`);let h=null;for(const q of g){const b=q.trim();if(!b||b.startsWith("─")||b.startsWith("MCP"))continue;const J=b.match(/^[●•]?\s*([a-z][a-z0-9-_]+)\s*$/i)||b.match(/^([a-z][a-z0-9-_]+)\s*[::]/);J?(h&&l.push(h),h={key:J[1],name:J[1],command:"",args:[],description:""}):h&&(b.startsWith("command:")||b.startsWith("Command:")?h.command=b.replace(/^command:\s*/i,"").trim():b.startsWith("args:")||b.startsWith("Args:")?h.args=b.replace(/^args:\s*/i,"").split(",").map(ee=>ee.trim()):h.description||(h.description=b.slice(0,80)))}return h&&l.push(h),!l.length&&p.trim()&&!p.includes("No MCP")&&p.split(`
|
|
4
4
|
`).filter(b=>b.trim()&&!b.includes("─")).slice(0,10).forEach((b,J)=>{l.push({key:J,name:b.trim(),command:"",args:[],description:""})}),l}function Oe(p){const l=[],g=p.split(`
|
|
5
|
-
`);let h="unknown";for(const q of g){const b=q.trim();if(!b||b.startsWith("─"))continue;if(b.match(/^\[/)||b.match(/^Server:/i)){h=b.replace(/[\[\]]/g,"").replace(/^Server:\s*/i,"").trim();continue}const J=b.match(/^[●•]?\s*([a-z][a-z0-9_-]+)\s*[-–]\s*(.+)/i)||b.match(/^[●•]?\s*([a-z][a-z0-9_-]+)$/);J&&l.push({key:l.length,name:J[1],description:J[2]||"",server:h})}return l}return He(fe),(p,l)=>{const g=V("a-button"),h=V("a-statistic"),q=V("a-card"),b=V("a-col"),J=V("a-row"),ee=V("a-spin"),Ue=V("a-badge"),ye=V("a-input-search"),te=V("a-tag"),ve=V("a-table"),_e=V("a-radio-button"),Le=V("a-radio-group"),Re=V("a-textarea"),ge=V("a-modal");return o(),s("div",null,[y("div",pt,[y("div",null,[y("h2",ft,a(i(e)("mcpTools.title")),1),y("p",yt,a(i(e)("mcpTools.subtitle")),1)]),v(g,{type:"primary",ghost:"",loading:r.value,onClick:fe},{icon:f(()=>[v(i(qe))]),default:f(()=>[M(" "+a(i(e)("mcpTools.refresh")),1)]),_:1},8,["loading"])]),v(J,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:f(()=>[v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.servers"),value:m.value.length,"value-style":"color: #1677ff; font-size: 20px;"},{prefix:f(()=>[v(i(he))]),_:1},8,["title","value"])]),_:1})]),_:1}),v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.tools"),value:u.value.length,"value-style":"color: #52c41a; font-size: 20px;"},{prefix:f(()=>[v(i(Fe))]),_:1},8,["title","value"])]),_:1})]),_:1}),v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.running"),value:i(e)("mcpTools.stats.ready"),"value-style":"color: #52c41a; font-size: 20px;"},{prefix:f(()=>[v(i(Ie))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),v(q,{title:i(e)("mcpTools.servers.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:f(()=>[r.value?(o(),s("div",vt,[v(ee)])):m.value.length?(o(),s("div",ht,[(o(!0),s(D,null,le(m.value,_=>(o(),A(q,{key:_.name,size:"small",style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{default:f(()=>[y("div",xt,[v(i(he),{style:{color:"#1677ff"}}),y("span",bt,a(_.name),1),v(Ue,{status:"success"})]),_.command?(o(),s("div",kt,a(_.command)+" "+a(_.args?.join(" ")),1)):k("",!0),_.description?(o(),s("div",wt,a(_.description),1)):k("",!0)]),_:2},1024))),128))])):(o(),s("div",_t,[M(a(i(e)("mcpTools.servers.emptyHintPrefix"))+" ",1),y("code",gt,a(i(e)("mcpTools.servers.emptyHintCommand")),1),M(" "+a(i(e)("mcpTools.servers.emptyHintSuffix")),1)]))]),_:1},8,["title"]),v(q,{title:i(e)("mcpTools.tools.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:f(()=>[v(ye,{value:j.value,"onUpdate:value":l[0]||(l[0]=_=>j.value=_),placeholder:i(e)("mcpTools.tools.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value","placeholder"])]),default:f(()=>[r.value?(o(),s("div",Tt,[v(ee)])):(o(),A(ve,{key:1,columns:O.value,"data-source":T.value,pagination:{pageSize:15},size:"small"},{bodyCell:f(({column:_,record:B})=>[_.key==="name"?(o(),s("span",zt,a(B.name),1)):k("",!0),_.key==="server"?(o(),A(te,{key:1,color:"blue",style:{"font-size":"10px"}},{default:f(()=>[M(a(B.server),1)]),_:2},1024)):k("",!0),_.key==="action"?(o(),s(D,{key:2},[w.value==="topic"?(o(),A(g,{key:0,size:"small",type:"link",onClick:Me=>Ce(B)},{icon:f(()=>[v(i(Je))]),default:f(()=>[M(" "+a(i(e)("mcpTools.tools.runAction")),1)]),_:1},8,["onClick"])):(o(),s("span",St,a(i(e)("mcpTools.tools.desktopOnly")),1))],64)):k("",!0)]),emptyText:f(()=>[y("div",Ct,a(i(e)("mcpTools.tools.emptyText")),1)]),_:1},8,["columns","data-source"]))]),_:1},8,["title"]),w.value==="topic"?(o(),A(q,{key:0,title:i(e)("mcpTools.resources.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:f(()=>[v(ye,{value:P.value,"onUpdate:value":l[1]||(l[1]=_=>P.value=_),placeholder:i(e)("mcpTools.resources.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value","placeholder"])]),default:f(()=>[x.value?(o(),s("div",$t,[v(ee)])):U.value.length?(o(),A(ve,{key:2,columns:L.value,"data-source":N.value,pagination:{pageSize:15},size:"small"},{bodyCell:f(({column:_,record:B})=>[_.key==="uri"?(o(),s("span",Vt,a(B.uri),1)):k("",!0),_.key==="server"?(o(),A(te,{key:1,color:"blue",style:{"font-size":"10px"}},{default:f(()=>[M(a(B.server),1)]),_:2},1024)):k("",!0),_.key==="mimeType"?(o(),s(D,{key:2},[B.mimeType?(o(),A(te,{key:0,style:{"font-size":"10px"}},{default:f(()=>[M(a(B.mimeType),1)]),_:2},1024)):(o(),s("span",jt,"—"))],64)):k("",!0),_.key==="action"?(o(),A(g,{key:3,size:"small",type:"link",onClick:Me=>I(B)},{icon:f(()=>[v(i(Be))]),default:f(()=>[M(" "+a(i(e)("mcpTools.resources.readAction")),1)]),_:1},8,["onClick"])):k("",!0)]),emptyText:f(()=>[y("div",Ot,a(i(e)("mcpTools.resources.emptyTable")),1)]),_:1},8,["columns","data-source"])):(o(),s("div",At,a(i(e)("mcpTools.resources.emptyHint")),1))]),_:1},8,["title"])):k("",!0),v(ge,{open:E.value,title:Te.value,width:640,"confirm-loading":ne.value,"ok-text":ne.value?i(e)("mcpTools.run.okRunning"):i(e)("mcpTools.run.okIdle"),"cancel-text":i(e)("mcpTools.run.cancel"),onOk:Ae,onCancel:$e},{default:f(()=>[R.value?(o(),s("div",Ut,[y("div",null,[y("div",Lt,a(i(e)("mcpTools.run.serverLabel")),1),y("div",Rt,[v(te,{color:"blue"},{default:f(()=>[M(a(R.value.server),1)]),_:1}),y("span",Mt,a(R.value.name),1)])]),R.value.description?(o(),s("div",Pt,[y("div",Et,a(i(e)("mcpTools.run.descriptionLabel")),1),y("div",Nt,a(R.value.description),1)])):k("",!0),R.value.inputSchema?(o(),s("div",qt,[y("div",Ft,a(i(e)("mcpTools.run.schemaLabel")),1),y("pre",It,a(ze.value),1)])):k("",!0),y("div",null,[y("div",Jt,[y("span",Bt,a(i(e)("mcpTools.run.paramsLabel")),1),v(Le,{value:oe.value,"onUpdate:value":l[2]||(l[2]=_=>oe.value=_),size:"small","button-style":"solid"},{default:f(()=>[v(_e,{value:"form",disabled:!we.value},{default:f(()=>[M(a(i(e)("mcpTools.run.modeForm")),1)]),_:1},8,["disabled"]),v(_e,{value:"json"},{default:f(()=>[M(a(i(e)("mcpTools.run.modeJson")),1)]),_:1})]),_:1},8,["value"])]),oe.value==="form"?(o(),A(mt,{key:0,modelValue:re.value,"onUpdate:modelValue":l[3]||(l[3]=_=>re.value=_),schema:R.value.inputSchema,errors:se.value},null,8,["modelValue","schema","errors"])):(o(),s(D,{key:1},[v(Re,{value:ie.value,"onUpdate:value":l[4]||(l[4]=_=>ie.value=_),rows:6,placeholder:"{}",style:{"font-family":"monospace","font-size":"12px"}},null,8,["value"]),Z.value?(o(),s("div",Wt,a(i(e)("mcpTools.run.jsonParseFailed",{err:Z.value})),1)):k("",!0)],64))]),ae.value?(o(),s("div",Ht,[y("div",Kt,a(i(e)("mcpTools.run.errorTitle")),1),y("pre",Dt,a(ae.value),1)])):k("",!0),Y.value!==null?(o(),s("div",Qt,[y("div",Yt,a(i(e)("mcpTools.run.resultLabel")),1),y("pre",Gt,a(Se.value),1)])):k("",!0)])):k("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),v(ge,{open:X.value,title:z.value,width:720,footer:null,onCancel:C},{default:f(()=>[F.value?(o(),s("div",Xt,[y("div",null,[y("div",Zt,a(i(e)("mcpTools.read.serverLabel")),1),y("div",eo,[v(te,{color:"blue"},{default:f(()=>[M(a(F.value.server),1)]),_:1}),y("span",to,a(F.value.uri),1)])]),F.value.description?(o(),s("div",oo,[y("div",no,a(i(e)("mcpTools.read.descriptionLabel")),1),y("div",ao,a(F.value.description),1)])):k("",!0),Q.value?(o(),s("div",lo,[v(ee,{tip:i(e)("mcpTools.read.spinnerTip")},null,8,["tip"])])):k("",!0),n.value?(o(),s("div",ro,[y("div",so,a(i(e)("mcpTools.read.errorTitle")),1),y("pre",io,a(n.value),1)])):k("",!0),K.value.length?(o(),s("div",uo,[y("div",co,a(i(e)("mcpTools.read.contentsLabel",{count:K.value.length})),1),(o(!0),s(D,null,le(K.value,(_,B)=>(o(),s("div",{key:B,style:{"margin-bottom":"12px"}},[y("div",mo,[_.mimeType?(o(),A(te,{key:0,size:"small",style:{"font-size":"10px"}},{default:f(()=>[M(a(_.mimeType),1)]),_:2},1024)):k("",!0),_.uri&&_.uri!==F.value.uri?(o(),s("span",po,a(_.uri),1)):k("",!0)]),_.text?(o(),s("pre",fo,a(_.text),1)):_.blob?(o(),s("div",yo,a(i(e)("mcpTools.read.binaryNote",{count:_.blob.length})),1)):(o(),s("div",vo,a(i(e)("mcpTools.read.emptyContent")),1))]))),128))])):k("",!0)])):k("",!0)]),_:1},8,["open","title"])])}}},
|
|
5
|
+
`);let h="unknown";for(const q of g){const b=q.trim();if(!b||b.startsWith("─"))continue;if(b.match(/^\[/)||b.match(/^Server:/i)){h=b.replace(/[\[\]]/g,"").replace(/^Server:\s*/i,"").trim();continue}const J=b.match(/^[●•]?\s*([a-z][a-z0-9_-]+)\s*[-–]\s*(.+)/i)||b.match(/^[●•]?\s*([a-z][a-z0-9_-]+)$/);J&&l.push({key:l.length,name:J[1],description:J[2]||"",server:h})}return l}return He(fe),(p,l)=>{const g=V("a-button"),h=V("a-statistic"),q=V("a-card"),b=V("a-col"),J=V("a-row"),ee=V("a-spin"),Ue=V("a-badge"),ye=V("a-input-search"),te=V("a-tag"),ve=V("a-table"),_e=V("a-radio-button"),Le=V("a-radio-group"),Re=V("a-textarea"),ge=V("a-modal");return o(),s("div",null,[y("div",pt,[y("div",null,[y("h2",ft,a(i(e)("mcpTools.title")),1),y("p",yt,a(i(e)("mcpTools.subtitle")),1)]),v(g,{type:"primary",ghost:"",loading:r.value,onClick:fe},{icon:f(()=>[v(i(qe))]),default:f(()=>[M(" "+a(i(e)("mcpTools.refresh")),1)]),_:1},8,["loading"])]),v(J,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:f(()=>[v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.servers"),value:m.value.length,"value-style":"color: #1677ff; font-size: 20px;"},{prefix:f(()=>[v(i(he))]),_:1},8,["title","value"])]),_:1})]),_:1}),v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.tools"),value:u.value.length,"value-style":"color: #52c41a; font-size: 20px;"},{prefix:f(()=>[v(i(Fe))]),_:1},8,["title","value"])]),_:1})]),_:1}),v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.running"),value:i(e)("mcpTools.stats.ready"),"value-style":"color: #52c41a; font-size: 20px;"},{prefix:f(()=>[v(i(Ie))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),v(q,{title:i(e)("mcpTools.servers.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:f(()=>[r.value?(o(),s("div",vt,[v(ee)])):m.value.length?(o(),s("div",ht,[(o(!0),s(D,null,le(m.value,_=>(o(),A(q,{key:_.name,size:"small",style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{default:f(()=>[y("div",xt,[v(i(he),{style:{color:"#1677ff"}}),y("span",bt,a(_.name),1),v(Ue,{status:"success"})]),_.command?(o(),s("div",kt,a(_.command)+" "+a(_.args?.join(" ")),1)):k("",!0),_.description?(o(),s("div",wt,a(_.description),1)):k("",!0)]),_:2},1024))),128))])):(o(),s("div",_t,[M(a(i(e)("mcpTools.servers.emptyHintPrefix"))+" ",1),y("code",gt,a(i(e)("mcpTools.servers.emptyHintCommand")),1),M(" "+a(i(e)("mcpTools.servers.emptyHintSuffix")),1)]))]),_:1},8,["title"]),v(q,{title:i(e)("mcpTools.tools.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:f(()=>[v(ye,{value:j.value,"onUpdate:value":l[0]||(l[0]=_=>j.value=_),placeholder:i(e)("mcpTools.tools.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value","placeholder"])]),default:f(()=>[r.value?(o(),s("div",Tt,[v(ee)])):(o(),A(ve,{key:1,columns:O.value,"data-source":T.value,pagination:{pageSize:15},size:"small"},{bodyCell:f(({column:_,record:B})=>[_.key==="name"?(o(),s("span",zt,a(B.name),1)):k("",!0),_.key==="server"?(o(),A(te,{key:1,color:"blue",style:{"font-size":"10px"}},{default:f(()=>[M(a(B.server),1)]),_:2},1024)):k("",!0),_.key==="action"?(o(),s(D,{key:2},[w.value==="topic"?(o(),A(g,{key:0,size:"small",type:"link",onClick:Me=>Ce(B)},{icon:f(()=>[v(i(Je))]),default:f(()=>[M(" "+a(i(e)("mcpTools.tools.runAction")),1)]),_:1},8,["onClick"])):(o(),s("span",St,a(i(e)("mcpTools.tools.desktopOnly")),1))],64)):k("",!0)]),emptyText:f(()=>[y("div",Ct,a(i(e)("mcpTools.tools.emptyText")),1)]),_:1},8,["columns","data-source"]))]),_:1},8,["title"]),w.value==="topic"?(o(),A(q,{key:0,title:i(e)("mcpTools.resources.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:f(()=>[v(ye,{value:P.value,"onUpdate:value":l[1]||(l[1]=_=>P.value=_),placeholder:i(e)("mcpTools.resources.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value","placeholder"])]),default:f(()=>[x.value?(o(),s("div",$t,[v(ee)])):U.value.length?(o(),A(ve,{key:2,columns:L.value,"data-source":N.value,pagination:{pageSize:15},size:"small"},{bodyCell:f(({column:_,record:B})=>[_.key==="uri"?(o(),s("span",Vt,a(B.uri),1)):k("",!0),_.key==="server"?(o(),A(te,{key:1,color:"blue",style:{"font-size":"10px"}},{default:f(()=>[M(a(B.server),1)]),_:2},1024)):k("",!0),_.key==="mimeType"?(o(),s(D,{key:2},[B.mimeType?(o(),A(te,{key:0,style:{"font-size":"10px"}},{default:f(()=>[M(a(B.mimeType),1)]),_:2},1024)):(o(),s("span",jt,"—"))],64)):k("",!0),_.key==="action"?(o(),A(g,{key:3,size:"small",type:"link",onClick:Me=>I(B)},{icon:f(()=>[v(i(Be))]),default:f(()=>[M(" "+a(i(e)("mcpTools.resources.readAction")),1)]),_:1},8,["onClick"])):k("",!0)]),emptyText:f(()=>[y("div",Ot,a(i(e)("mcpTools.resources.emptyTable")),1)]),_:1},8,["columns","data-source"])):(o(),s("div",At,a(i(e)("mcpTools.resources.emptyHint")),1))]),_:1},8,["title"])):k("",!0),v(ge,{open:E.value,title:Te.value,width:640,"confirm-loading":ne.value,"ok-text":ne.value?i(e)("mcpTools.run.okRunning"):i(e)("mcpTools.run.okIdle"),"cancel-text":i(e)("mcpTools.run.cancel"),onOk:Ae,onCancel:$e},{default:f(()=>[R.value?(o(),s("div",Ut,[y("div",null,[y("div",Lt,a(i(e)("mcpTools.run.serverLabel")),1),y("div",Rt,[v(te,{color:"blue"},{default:f(()=>[M(a(R.value.server),1)]),_:1}),y("span",Mt,a(R.value.name),1)])]),R.value.description?(o(),s("div",Pt,[y("div",Et,a(i(e)("mcpTools.run.descriptionLabel")),1),y("div",Nt,a(R.value.description),1)])):k("",!0),R.value.inputSchema?(o(),s("div",qt,[y("div",Ft,a(i(e)("mcpTools.run.schemaLabel")),1),y("pre",It,a(ze.value),1)])):k("",!0),y("div",null,[y("div",Jt,[y("span",Bt,a(i(e)("mcpTools.run.paramsLabel")),1),v(Le,{value:oe.value,"onUpdate:value":l[2]||(l[2]=_=>oe.value=_),size:"small","button-style":"solid"},{default:f(()=>[v(_e,{value:"form",disabled:!we.value},{default:f(()=>[M(a(i(e)("mcpTools.run.modeForm")),1)]),_:1},8,["disabled"]),v(_e,{value:"json"},{default:f(()=>[M(a(i(e)("mcpTools.run.modeJson")),1)]),_:1})]),_:1},8,["value"])]),oe.value==="form"?(o(),A(mt,{key:0,modelValue:re.value,"onUpdate:modelValue":l[3]||(l[3]=_=>re.value=_),schema:R.value.inputSchema,errors:se.value},null,8,["modelValue","schema","errors"])):(o(),s(D,{key:1},[v(Re,{value:ie.value,"onUpdate:value":l[4]||(l[4]=_=>ie.value=_),rows:6,placeholder:"{}",style:{"font-family":"monospace","font-size":"12px"}},null,8,["value"]),Z.value?(o(),s("div",Wt,a(i(e)("mcpTools.run.jsonParseFailed",{err:Z.value})),1)):k("",!0)],64))]),ae.value?(o(),s("div",Ht,[y("div",Kt,a(i(e)("mcpTools.run.errorTitle")),1),y("pre",Dt,a(ae.value),1)])):k("",!0),Y.value!==null?(o(),s("div",Qt,[y("div",Yt,a(i(e)("mcpTools.run.resultLabel")),1),y("pre",Gt,a(Se.value),1)])):k("",!0)])):k("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),v(ge,{open:X.value,title:z.value,width:720,footer:null,onCancel:C},{default:f(()=>[F.value?(o(),s("div",Xt,[y("div",null,[y("div",Zt,a(i(e)("mcpTools.read.serverLabel")),1),y("div",eo,[v(te,{color:"blue"},{default:f(()=>[M(a(F.value.server),1)]),_:1}),y("span",to,a(F.value.uri),1)])]),F.value.description?(o(),s("div",oo,[y("div",no,a(i(e)("mcpTools.read.descriptionLabel")),1),y("div",ao,a(F.value.description),1)])):k("",!0),Q.value?(o(),s("div",lo,[v(ee,{tip:i(e)("mcpTools.read.spinnerTip")},null,8,["tip"])])):k("",!0),n.value?(o(),s("div",ro,[y("div",so,a(i(e)("mcpTools.read.errorTitle")),1),y("pre",io,a(n.value),1)])):k("",!0),K.value.length?(o(),s("div",uo,[y("div",co,a(i(e)("mcpTools.read.contentsLabel",{count:K.value.length})),1),(o(!0),s(D,null,le(K.value,(_,B)=>(o(),s("div",{key:B,style:{"margin-bottom":"12px"}},[y("div",mo,[_.mimeType?(o(),A(te,{key:0,size:"small",style:{"font-size":"10px"}},{default:f(()=>[M(a(_.mimeType),1)]),_:2},1024)):k("",!0),_.uri&&_.uri!==F.value.uri?(o(),s("span",po,a(_.uri),1)):k("",!0)]),_.text?(o(),s("pre",fo,a(_.text),1)):_.blob?(o(),s("div",yo,a(i(e)("mcpTools.read.binaryNote",{count:_.blob.length})),1)):(o(),s("div",vo,a(i(e)("mcpTools.read.emptyContent")),1))]))),128))])):k("",!0)])):k("",!0)]),_:1},8,["open","title"])])}}},bo=Pe(_o,[["__scopeId","data-v-1d115bb9"]]);export{bo as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as Y,
|
|
2
|
-
`);for(const k of u){const d=k.trim();if(!d||d.startsWith("─")||d.startsWith("Recall"))continue;const y=d.match(/^[-●•\d.]+\s+(.+)/);if(y){const w=y[1].trim();w.length>5&&e.push({id:e.length,content:w,layer:m.value,importance:"",time:""})}else d.length>10&&!d.includes(":")&&e.length<30&&e.push({id:e.length,content:d,layer:m.value,importance:"",time:""})}return e.slice(0,20)}async function H(){if(!v.value.content.trim()){C.warning(o("memory.messages.contentRequired"));return}M.value=!0;try{const r=`hmemory store "${v.value.content.replace(/"/g,'\\"')}" --importance ${v.value.importance}`,{output:e}=await T.execute(r,15e3);e.toLowerCase().includes("stored")||e.includes("✔")?(C.success(o("memory.messages.storeOk")),z.value=!1,v.value={content:"",importance:.5},await L()):(C.warning(e.slice(0,100)||o("memory.messages.storeDefault")),z.value=!1)}catch(r){C.error(o("memory.messages.storeFailed",{err:r.message}))}finally{M.value=!1}}async function W(){$.value=!0;try{await T.execute("hmemory consolidate",2e4),C.success(o("memory.messages.consolidateOk")),await L()}catch(r){C.error(o("memory.messages.consolidateFailed",{err:r.message}))}finally{$.value=!1}}return se(L),(r,e)=>{const u=c("a-button"),k=c("a-space"),d=c("a-statistic"),y=c("a-card"),w=c("a-col"),j=c("a-row"),R=c("a-radio-button"),D=c("a-radio-group"),E=c("a-input-search"),K=c("a-spin"),Q=c("a-tag"),A=c("a-textarea"),N=c("a-form-item"),G=c("a-slider"),J=c("a-form"),X=c("a-modal");return f(),_("div",null,[i("div",de,[i("div",null,[i("h2",pe,s(l(o)("memory.title")),1),i("p",ve,s(l(o)("memory.subtitle")),1)]),t(k,null,{default:a(()=>[t(u,{onClick:e[0]||(e[0]=n=>z.value=!0),type:"primary"},{icon:a(()=>[t(l(te))]),default:a(()=>[g(" "+s(l(o)("memory.storeButton")),1)]),_:1}),t(u,{ghost:"",loading:S.value,onClick:L},{icon:a(()=>[t(l(oe))]),default:a(()=>[g(" "+s(l(o)("memory.refresh")),1)]),_:1},8,["loading"])]),_:1})]),t(j,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(114,46,209,.1)","border-color":"rgba(114,46,209,.35)",cursor:"pointer"},hoverable:"",onClick:e[1]||(e[1]=n=>m.value="short-term")},{default:a(()=>[t(d,{title:l(o)("memory.stats.shortTerm"),value:x.value.shortTerm||0,"value-style":"color: #c084fc; font-size: 20px;"},{prefix:a(()=>[t(l(ae))]),_:1},8,["title","value"]),i("div",ye,s(l(o)("memory.stats.shortTermHint")),1)]),_:1})]),_:1}),t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.3)",cursor:"pointer"},hoverable:"",onClick:e[2]||(e[2]=n=>m.value="long-term")},{default:a(()=>[t(d,{title:l(o)("memory.stats.longTerm"),value:x.value.longTerm||0,"value-style":"color: #91caff; font-size: 20px;"},{prefix:a(()=>[t(l(le))]),_:1},8,["title","value"]),i("div",_e,s(l(o)("memory.stats.longTermHint")),1)]),_:1})]),_:1}),t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(41,162,112,.08)","border-color":"rgba(41,162,112,.3)",cursor:"pointer"},hoverable:"",onClick:e[3]||(e[3]=n=>m.value="core")},{default:a(()=>[t(d,{title:l(o)("memory.stats.core"),value:x.value.core||0,"value-style":"color: #69db7c; font-size: 20px;"},{prefix:a(()=>[t(l(re))]),_:1},8,["title","value"]),i("div",fe,s(l(o)("memory.stats.coreHint")),1)]),_:1})]),_:1})]),_:1}),t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:a(()=>[i("div",ge,[i("span",null,s(l(o)("memory.card.title")),1),t(D,{value:m.value,"onUpdate:value":e[4]||(e[4]=n=>m.value=n),"button-style":"solid",size:"small",onChange:B},{default:a(()=>[t(R,{value:"short-term"},{default:a(()=>[g(s(l(o)("memory.card.tabs.short")),1)]),_:1}),t(R,{value:"long-term"},{default:a(()=>[g(s(l(o)("memory.card.tabs.long")),1)]),_:1}),t(R,{value:"core"},{default:a(()=>[g(s(l(o)("memory.card.tabs.core")),1)]),_:1})]),_:1},8,["value"])])]),extra:a(()=>[t(E,{value:O.value,"onUpdate:value":e[5]||(e[5]=n=>O.value=n),placeholder:l(o)("memory.card.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"220px"},loading:h.value,onSearch:
|
|
1
|
+
import{_ as Y,b as Z,u as ee,d as C}from"./index-B2f4ltyM.js";import{al as te,R as oe,h as ae,u as le,aq as re,ae as ne}from"./icons-zXb7lDZs.js";import{o as se,M as _,R as i,P as s,u as l,c as t,N as a,K as c,r as p,L as f,O as g,F as ce,_ as ie,S as me,f as ue}from"./vendor-B6ToihkA.js";const de={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},pe={class:"page-title"},ve={class:"page-sub"},ye={style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},_e={style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},fe={style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},ge={style:{display:"flex","align-items":"center",gap:"12px"}},he={key:0,style:{"text-align":"center",padding:"30px"}},xe={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},be={key:2,class:"memory-list"},ke={style:{display:"flex","justify-content":"space-between","align-items":"flex-start","margin-bottom":"4px"}},we={style:{display:"flex",gap:"8px","align-items":"center"}},Ce={key:0,style:{color:"var(--text-secondary)","font-size":"11px"}},Te={style:{color:"var(--text-muted)","font-size":"11px"}},ze={style:{color:"#ccc","font-size":"13px","line-height":"1.6"}},Oe={__name:"Memory",setup(Le){const{t:o}=Z(),T=ee(),S=p(!1),h=p(!1),$=p(!1),M=p(!1),z=p(!1),x=p({shortTerm:0,longTerm:0,core:0}),b=p([]),m=p("short-term"),O=p(""),v=p({content:"",importance:.5}),U=ue(()=>({0:o("memory.modal.marks.low"),.5:o("memory.modal.marks.mid"),1:o("memory.modal.marks.high")}));function q(r){return{"short-term":"purple","long-term":"blue",core:"green"}[r]||"default"}function F(r){const e=`memory.layer.${r}`,u=o(e);return u===e?r:u}async function L(){S.value=!0;try{const{output:r}=await T.execute("hmemory stats",15e3);P(r)}catch(r){console.error("hmemory stats failed:",r)}finally{S.value=!1,await B()}}function P(r){const e=r.match(/short.?term[^\d]*(\d+)/i),u=r.match(/long.?term[^\d]*(\d+)/i),k=r.match(/core[^\d]*(\d+)/i);e&&(x.value.shortTerm=parseInt(e[1])),u&&(x.value.longTerm=parseInt(u[1])),k&&(x.value.core=parseInt(k[1]))}async function B(){h.value=!0;try{const r=m.value==="short-term"?"recent":m.value==="long-term"?"important":"core",{output:e}=await T.execute(`hmemory recall "${r}" --limit 20`,15e3);b.value=I(e)}catch{b.value=[]}finally{h.value=!1}}async function V(){if(!O.value.trim()){await B();return}h.value=!0;try{const{output:r}=await T.execute(`hmemory recall "${O.value}"`,15e3);b.value=I(r)}catch{b.value=[]}finally{h.value=!1}}function I(r){const e=[],u=r.split(`
|
|
2
|
+
`);for(const k of u){const d=k.trim();if(!d||d.startsWith("─")||d.startsWith("Recall"))continue;const y=d.match(/^[-●•\d.]+\s+(.+)/);if(y){const w=y[1].trim();w.length>5&&e.push({id:e.length,content:w,layer:m.value,importance:"",time:""})}else d.length>10&&!d.includes(":")&&e.length<30&&e.push({id:e.length,content:d,layer:m.value,importance:"",time:""})}return e.slice(0,20)}async function H(){if(!v.value.content.trim()){C.warning(o("memory.messages.contentRequired"));return}M.value=!0;try{const r=`hmemory store "${v.value.content.replace(/"/g,'\\"')}" --importance ${v.value.importance}`,{output:e}=await T.execute(r,15e3);e.toLowerCase().includes("stored")||e.includes("✔")?(C.success(o("memory.messages.storeOk")),z.value=!1,v.value={content:"",importance:.5},await L()):(C.warning(e.slice(0,100)||o("memory.messages.storeDefault")),z.value=!1)}catch(r){C.error(o("memory.messages.storeFailed",{err:r.message}))}finally{M.value=!1}}async function W(){$.value=!0;try{await T.execute("hmemory consolidate",2e4),C.success(o("memory.messages.consolidateOk")),await L()}catch(r){C.error(o("memory.messages.consolidateFailed",{err:r.message}))}finally{$.value=!1}}return se(L),(r,e)=>{const u=c("a-button"),k=c("a-space"),d=c("a-statistic"),y=c("a-card"),w=c("a-col"),j=c("a-row"),R=c("a-radio-button"),D=c("a-radio-group"),E=c("a-input-search"),K=c("a-spin"),Q=c("a-tag"),A=c("a-textarea"),N=c("a-form-item"),G=c("a-slider"),J=c("a-form"),X=c("a-modal");return f(),_("div",null,[i("div",de,[i("div",null,[i("h2",pe,s(l(o)("memory.title")),1),i("p",ve,s(l(o)("memory.subtitle")),1)]),t(k,null,{default:a(()=>[t(u,{onClick:e[0]||(e[0]=n=>z.value=!0),type:"primary"},{icon:a(()=>[t(l(te))]),default:a(()=>[g(" "+s(l(o)("memory.storeButton")),1)]),_:1}),t(u,{ghost:"",loading:S.value,onClick:L},{icon:a(()=>[t(l(oe))]),default:a(()=>[g(" "+s(l(o)("memory.refresh")),1)]),_:1},8,["loading"])]),_:1})]),t(j,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(114,46,209,.1)","border-color":"rgba(114,46,209,.35)",cursor:"pointer"},hoverable:"",onClick:e[1]||(e[1]=n=>m.value="short-term")},{default:a(()=>[t(d,{title:l(o)("memory.stats.shortTerm"),value:x.value.shortTerm||0,"value-style":"color: #c084fc; font-size: 20px;"},{prefix:a(()=>[t(l(ae))]),_:1},8,["title","value"]),i("div",ye,s(l(o)("memory.stats.shortTermHint")),1)]),_:1})]),_:1}),t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.3)",cursor:"pointer"},hoverable:"",onClick:e[2]||(e[2]=n=>m.value="long-term")},{default:a(()=>[t(d,{title:l(o)("memory.stats.longTerm"),value:x.value.longTerm||0,"value-style":"color: #91caff; font-size: 20px;"},{prefix:a(()=>[t(l(le))]),_:1},8,["title","value"]),i("div",_e,s(l(o)("memory.stats.longTermHint")),1)]),_:1})]),_:1}),t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(41,162,112,.08)","border-color":"rgba(41,162,112,.3)",cursor:"pointer"},hoverable:"",onClick:e[3]||(e[3]=n=>m.value="core")},{default:a(()=>[t(d,{title:l(o)("memory.stats.core"),value:x.value.core||0,"value-style":"color: #69db7c; font-size: 20px;"},{prefix:a(()=>[t(l(re))]),_:1},8,["title","value"]),i("div",fe,s(l(o)("memory.stats.coreHint")),1)]),_:1})]),_:1})]),_:1}),t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:a(()=>[i("div",ge,[i("span",null,s(l(o)("memory.card.title")),1),t(D,{value:m.value,"onUpdate:value":e[4]||(e[4]=n=>m.value=n),"button-style":"solid",size:"small",onChange:B},{default:a(()=>[t(R,{value:"short-term"},{default:a(()=>[g(s(l(o)("memory.card.tabs.short")),1)]),_:1}),t(R,{value:"long-term"},{default:a(()=>[g(s(l(o)("memory.card.tabs.long")),1)]),_:1}),t(R,{value:"core"},{default:a(()=>[g(s(l(o)("memory.card.tabs.core")),1)]),_:1})]),_:1},8,["value"])])]),extra:a(()=>[t(E,{value:O.value,"onUpdate:value":e[5]||(e[5]=n=>O.value=n),placeholder:l(o)("memory.card.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"220px"},loading:h.value,onSearch:V},null,8,["value","placeholder","loading"])]),default:a(()=>[h.value?(f(),_("div",he,[t(K)])):b.value.length?(f(),_("div",be,[(f(!0),_(ce,null,ie(b.value,n=>(f(),_("div",{key:n.id,class:"memory-item"},[i("div",ke,[i("div",we,[t(Q,{color:q(n.layer||m.value),style:{"font-size":"10px"}},{default:a(()=>[g(s(F(n.layer||m.value)),1)]),_:2},1032,["color"]),n.importance?(f(),_("span",Ce,s(l(o)("memory.card.importanceLabel",{value:n.importance})),1)):me("",!0)]),i("span",Te,s(n.time),1)]),i("div",ze,s(n.content),1)]))),128))])):(f(),_("div",xe,s(l(o)("memory.card.emptyText")),1))]),_:1}),t(u,{loading:$.value,onClick:W,style:{background:"var(--bg-card-hover)","border-color":"var(--text-muted)",width:"100%"}},{icon:a(()=>[t(l(ne))]),default:a(()=>[g(" "+s(l(o)("memory.consolidateButton")),1)]),_:1},8,["loading"]),t(X,{open:z.value,"onUpdate:open":e[8]||(e[8]=n=>z.value=n),title:l(o)("memory.modal.title"),"confirm-loading":M.value,onOk:H},{default:a(()=>[t(J,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[t(N,{label:l(o)("memory.modal.contentLabel"),required:""},{default:a(()=>[t(A,{value:v.value.content,"onUpdate:value":e[6]||(e[6]=n=>v.value.content=n),rows:4,placeholder:l(o)("memory.modal.contentPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(N,{label:l(o)("memory.modal.importanceLabel")},{default:a(()=>[t(G,{value:v.value.importance,"onUpdate:value":e[7]||(e[7]=n=>v.value.importance=n),min:0,max:1,step:.1,marks:U.value},null,8,["value","marks"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading"])])}}},Be=Y(Oe,[["__scopeId","data-v-a74b99b3"]]);export{Be as default};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{r as _,o as at,x as lt,M as D,R as h,P as s,u as o,c as e,N as t,K as
|
|
2
|
-
`));if(u&&typeof u.sla_status=="string"){
|
|
3
|
-
`));if(u&&u.config){$.value=Ue(u);return}}catch{}}catch(a){k.error("加载桥 MTC 状态失败: "+(a?.message||a))}}const J=_(""),ne=_(!1),P=_(null),
|
|
4
|
-
`));break}catch{}if(p)break}K.value=p||{raw:u},k.success("命令执行完成"),l&&await _e()}catch(i){k.error("CLI 执行失败: "+(i?.message||i)),K.value={error:i?.message||String(i)}}finally{L.value=!1}}function me(){const a=q.value;if(!a.actor||!a.candidate||!a.pubkeyId){k.warning("actor / candidate / pubkey-id 都必填");return}return O(`invite <FED> "${C(a.candidate)}" --actor "${C(a.actor)}" --candidate-pubkey-id "${C(a.pubkeyId)}"`)}function
|
|
5
|
-
`));if(p&&p.state){P.value=p,S=!0;break}}catch{}if(S)break}if(!S){k.error("未能解析 governance-log 输出");return}await
|
|
6
|
-
`));if(p&&(p.available!==void 0||p.mode!==void 0)){b.value=p.available===!1?null:p;return}}catch{}}catch{b.value=null}}return at(()=>{ce(),Te(),pe(),re=setInterval(pe,3e4)}),lt(()=>{re&&clearInterval(re)}),(a,l)=>{const i=g("a-button"),S=g("a-space"),u=g("a-statistic"),c=g("a-card"),p=g("a-col"),I=g("a-tag"),U=g("a-row"),z=g("a-descriptions-item"),ee=g("a-descriptions"),B=g("a-alert"),A=g("a-tab-pane"),F=g("a-input"),m=g("a-form-item"),R=g("a-form"),ue=g("a-table"),We=g("a-collapse-panel"),Ke=g("a-collapse"),ie=g("a-empty"),he=g("a-list-item"),ke=g("a-list"),Qe=g("a-timeline-item"),Xe=g("a-timeline"),xe=g("a-select-option"),Ye=g("a-select"),et=g("a-input-number"),tt=g("a-checkbox"),we=g("a-tabs");return d(),D("div",null,[h("div",ht,[h("div",null,[h("h2",kt,s(o(r)("mtc.title")),1),h("p",xt,s(o(r)("mtc.subtitle")),1)]),e(S,null,{default:t(()=>[e(i,{loading:X.value,onClick:ce},{icon:t(()=>[e(o(vt))]),default:t(()=>[v(" "+s(o(r)("mtc.refresh")),1)]),_:1},8,["loading"])]),_:1})]),e(we,{activeKey:de.value,"onUpdate:activeKey":l[17]||(l[17]=n=>de.value=n),class:"mtc-tabs"},{default:t(()=>[e(A,{key:"status",tab:o(r)("mtc.tabs.status")},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.status.enabledLabel"),value:x.value.config.enabled?o(r)("mtc.status.enabled"):o(r)("mtc.status.disabled"),"value-style":{color:x.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[(d(),f(ot(x.value.config.enabled?o(pt):o(ft))))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.status.intervalLabel"),value:o(Ie)(x.value.config.batch_interval_seconds),"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(Fe))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.status.stagingLabel"),value:x.value.staging.count,"value-style":{color:x.value.staging.count>0?"#faad14":"#888",fontSize:"20px"}},rt({prefix:t(()=>[e(o(mt))]),_:2},[x.value.staging.malformed>0?{name:"suffix",fn:t(()=>[e(I,{color:"red",style:{"margin-left":"8px"}},{default:t(()=>[v(s(o(r)("mtc.status.stagingMalformed",{count:x.value.staging.malformed})),1)]),_:1})]),key:"0"}:void 0]),1032,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.status.totalBatches"),value:x.value.batches.count,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(gt))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),e(c,{title:o(r)("mtc.status.configCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small"},{default:t(()=>[e(z,{label:"namespace"},{default:t(()=>[h("span",wt,s(x.value.config.namespace_prefix||"—"),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[h("span",St,s(x.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"oldest queued"},{default:t(()=>[v(s(o($e)(x.value.staging.oldest_queued_at)),1)]),_:1}),e(z,{label:"last batch"},{default:t(()=>[x.value.batches.last_batch_id?(d(),D(Se,{key:0},[e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+s(x.value.batches.last_batch_id),1)]),_:1}),h("span",zt,s(o(r)("mtc.status.lastBatchSize",{size:x.value.batches.last_tree_size,time:o(ae)(x.value.batches.last_closed_at)})),1)],64)):(d(),D("span",Ct,s(o(r)("mtc.status.noBatches")),1))]),_:1}),e(z,{label:"last tree_head_id",span:2},{default:t(()=>[x.value.batches.last_tree_head_id?(d(),D("span",It,s(x.value.batches.last_tree_head_id),1)):(d(),D("span",$t,"—"))]),_:1})]),_:1})]),_:1},8,["title"]),!x.value.ok&&!X.value?(d(),f(B,{key:0,type:"info","show-icon":"",message:o(r)("mtc.status.loadFailMessage"),description:o(r)("mtc.status.loadFailDescription")},null,8,["message","description"])):x.value.config.enabled?y("",!0):(d(),f(B,{key:1,type:"info","show-icon":"",message:o(r)("mtc.status.notEnabledMessage"),description:o(r)("mtc.status.notEnabledDescription")},null,8,["message","description"]))]),_:1},8,["tab"]),e(A,{key:"publisher",tab:o(r)("mtc.tabs.publisher")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(R,{layout:"inline",onSubmit:G(De,["prevent"])},{default:t(()=>[e(m,{label:o(r)("mtc.publisher.stateFileLabel")},{default:t(()=>[e(F,{value:Y.value,"onUpdate:value":l[0]||(l[0]=n=>Y.value=n),placeholder:o(r)("mtc.publisher.stateFilePlaceholder"),style:{"min-width":"360px"},"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(m,null,{default:t(()=>[e(i,{loading:le.value,type:"primary","html-type":"submit"},{default:t(()=>[v(s(o(r)("mtc.publisher.queryButton")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),M.value.ok&&!M.value.exists?(d(),f(B,{key:0,type:"info","show-icon":"",message:o(r)("mtc.publisher.missingMessage"),description:o(r)("mtc.publisher.missingDescription",{path:M.value.stateFile}),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("",!0),M.value.exists?(d(),f(U,{key:1,gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.publisher.lastSeq"),value:M.value.lastSeq,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(yt))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.publisher.historyEntries"),value:M.value.historyCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(bt))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.publisher.lastPublished"),value:o(ae)(M.value.lastPublishedAt),"value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:t(()=>[e(o(Fe))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})):y("",!0),M.value.exists&&M.value.history.length>0?(d(),f(ue,{key:2,"data-source":M.value.history,columns:Le.value,pagination:{pageSize:10},size:"small","row-key":"key"},{bodyCell:t(({column:n,record:Q})=>[n.key==="seq"?(d(),f(I,{key:0,color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+s(Q.seq),1)]),_:2},1024)):n.key==="treeHeadId"?(d(),D("span",Ft,s(je(Q.treeHeadId,22)),1)):n.key==="publishedAt"?(d(),D("span",{key:2,title:Q.publishedAt},s(o(ae)(Q.publishedAt)),9,Lt)):y("",!0)]),_:1},8,["data-source","columns"])):y("",!0)]),_:1},8,["tab"]),e(A,{key:"verify",tab:o(r)("mtc.tabs.verify")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(B,{type:"info","show-icon":"",message:o(r)("mtc.verify.infoMessage"),description:o(r)("mtc.verify.infoDescription"),style:{"margin-bottom":"16px"}},null,8,["message","description"]),e(R,{layout:"vertical",onSubmit:G(ve,["prevent"])},{default:t(()=>[e(m,{label:o(r)("mtc.verify.envelopeLabel")},{default:t(()=>[e(F,{value:V.value,"onUpdate:value":l[1]||(l[1]=n=>V.value=n),placeholder:o(r)("mtc.verify.envelopePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(m,{label:o(r)("mtc.verify.landmarkLabel")},{default:t(()=>[e(F,{value:W.value,"onUpdate:value":l[2]||(l[2]=n=>W.value=n),placeholder:o(r)("mtc.verify.landmarkPlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(m,null,{default:t(()=>[e(i,{loading:oe.value,type:"primary",disabled:!V.value||!W.value,onClick:ve},{icon:t(()=>[e(o(_t))]),default:t(()=>[v(" "+s(o(r)("mtc.verify.runButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),w.value?(d(),f(c,{key:0,title:w.value.ok?o(r)("mtc.verify.passTitle"):o(r)("mtc.verify.failTitle"),size:"small",style:nt({background:"var(--bg-card)",borderColor:w.value.ok?"#52c41a":"#ff4d4f"})},{default:t(()=>[e(ee,{column:1,size:"small",bordered:""},{default:t(()=>[e(z,{label:o(r)("mtc.verify.resultLabel")},{default:t(()=>[e(I,{color:w.value.ok?"green":"red"},{default:t(()=>[v(s(w.value.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1},8,["label"]),w.value.ok?y("",!0):(d(),f(z,{key:0,label:o(r)("mtc.verify.errorCodeLabel")},{default:t(()=>[h("span",jt,s(w.value.code||o(r)("mtc.verify.errorCodeNone")),1),w.value.recoverable?(d(),f(I,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:t(()=>[v(s(o(r)("mtc.verify.recoverable")),1)]),_:1})):y("",!0)]),_:1},8,["label"])),w.value.leaf?(d(),f(z,{key:1,label:o(r)("mtc.verify.subjectLabel")},{default:t(()=>[h("span",Dt,s(w.value.leaf.subject||"—"),1)]),_:1},8,["label"])):y("",!0),w.value.leaf?(d(),f(z,{key:2,label:o(r)("mtc.verify.kindLabel")},{default:t(()=>[e(I,null,{default:t(()=>[v(s(w.value.leaf.kind||"—"),1)]),_:1})]),_:1},8,["label"])):y("",!0),w.value.treeHead?(d(),f(z,{key:3,label:o(r)("mtc.verify.treeSizeLabel")},{default:t(()=>[v(s(w.value.treeHead.tree_size),1)]),_:1},8,["label"])):y("",!0),w.value.treeHead?(d(),f(z,{key:4,label:o(r)("mtc.verify.issuerLabel")},{default:t(()=>[h("span",Mt,s(w.value.treeHead.issuer||"—"),1)]),_:1},8,["label"])):y("",!0)]),_:1}),w.value.raw?(d(),f(Ke,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:t(()=>[e(We,{key:"raw",header:o(r)("mtc.verify.rawHeader")},{default:t(()=>[h("pre",Pt,s(JSON.stringify(w.value.raw,null,2)),1)]),_:1},8,["header"])]),_:1})):y("",!0)]),_:1},8,["title","style"])):y("",!0)]),_:1},8,["tab"]),e(A,{key:"bridge",tab:"跨链桥 MTC"},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"桥 MTC 集成",value:$.value.config.enabled?"已启用":"未启用","value-style":{color:$.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"互信模式",value:Me.value,"value-style":{color:"#1677ff",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"待批次关闭",value:$.value.staging.pending,"value-style":{color:$.value.staging.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})]),_:1}),e(c,{title:"配置",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small",bordered:""},{default:t(()=>[e(z,{label:"算法"},{default:t(()=>[e(I,{color:$.value.config.alg==="slh-dsa-128f"?"purple":"blue"},{default:t(()=>[v(s($.value.config.alg||"—"),1)]),_:1},8,["color"])]),_:1}),e(z,{label:"batch interval"},{default:t(()=>[v(s(o(Ie)($.value.config.batch_interval_seconds)),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[h("span",Ot,s($.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"batches 总数"},{default:t(()=>[v(s($.value.batches.total)+" ",1),$.value.batches.latest?(d(),D("span",Ut," latest: "+s($.value.batches.latest),1)):y("",!0)]),_:1})]),_:1})]),_:1}),e(c,{title:"信任锚 (Independent 模式)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[$.value.trust_anchors.total===0?(d(),f(ie,{key:0,description:"未配置信任锚"})):(d(),f(ue,{key:1,"data-source":Oe.value,columns:Pe,pagination:!1,size:"small","row-key":"key"},null,8,["data-source"])),l[18]||(l[18]=h("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 添加:"),h("code",null,"cc crosschain mtc-trust-anchor add <chain> <pubkey-id> --alg --issuer")],-1))]),_:1}),e(c,{title:"SLA / Monitoring (v0.2)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(u,{title:"SLA Status",value:E.value.sla_status||"—","value-style":{color:Ae(E.value.sla_status),fontSize:"18px"}},null,8,["value","value-style"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(u,{title:"Staged pending",value:E.value.staged_pending_count??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(u,{title:"Batches / hour",value:E.value.batches_last_hour??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(u,{title:"Last batch",value:E.value.seconds_since_last_batch!==null&&E.value.seconds_since_last_batch!==void 0?`${E.value.seconds_since_last_batch}s ago`:"—","value-style":{fontSize:"14px"}},null,8,["value"])]),_:1})]),_:1}),l[19]||(l[19]=h("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 通过 "),h("code",null,"cc crosschain mtc-sla --json"),v(" 实时刷新(30s 自动 poll)。可纳入外部 Prometheus / Grafana。 ")],-1))]),_:1}),e(B,{type:"info","show-icon":"",message:"桥 MTC 仍 opt-in",description:"启用后 cc crosschain bridge|swap|send 加 --mtc 才会写 envelope;定期 cc crosschain mtc-batch 关 staging 为批次。完整指南见 docs.chainlesschain.com/guide/mtc-merkle-tree-certs。"})]),_:1}),e(A,{key:"governance",tab:"联邦治理"},{default:t(()=>[e(R,{layout:"inline",style:{"margin-bottom":"16px"}},{default:t(()=>[e(m,{label:"联邦 ID"},{default:t(()=>[e(F,{value:J.value,"onUpdate:value":l[3]||(l[3]=n=>J.value=n),placeholder:"e.g. fed-test",style:{width:"240px"},"allow-clear":""},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:ne.value,onClick:_e},{default:t(()=>[...l[20]||(l[20]=[v(" 加载 governance.log ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),P.value?(d(),D("div",At,[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"状态",value:P.value.state.status||"—","value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"Threshold",value:P.value.state.threshold||1,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"事件总数",value:(P.value.events||[]).length,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),e(c,{title:"成员",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ue,{"data-source":P.value.state.members||[],columns:Ee,pagination:!1,size:"small","row-key":"member_id"},null,8,["data-source"])]),_:1}),(P.value.state.pending_invites||[]).length?(d(),f(c,{key:0,title:"待投票邀请",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ke,{"data-source":P.value.state.pending_invites,size:"small"},{renderItem:t(({item:n})=>[e(he,null,{default:t(()=>[h("span",Tt,s(n.member_id),1),e(I,{color:"blue"},{default:t(()=>[v("approve "+s(n.votes.approve.length)+"/"+s(n.required),1)]),_:2},1024),n.votes.reject.length?(d(),f(I,{key:0,color:"red"},{default:t(()=>[v("reject "+s(n.votes.reject.length),1)]),_:2},1024)):y("",!0)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):y("",!0),e(c,{title:"事件时间线",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(Xe,null,{default:t(()=>[(d(!0),D(Se,null,st(P.value.events||[],n=>(d(),f(Qe,{key:n.event_id},{default:t(()=>[h("span",Et,s(n.issued_at),1),e(I,{color:Ne(n.event_type),style:{"margin-left":"8px"}},{default:t(()=>[v(s(n.event_type),1)]),_:2},1032,["color"]),l[21]||(l[21]=v(" actor: ",-1)),h("span",Nt,s(n.actor_member_id),1)]),_:2},1024))),128))]),_:1})]),_:1}),se.value.length>0?(d(),f(c,{key:1,title:"待批 threshold proposals",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[se.value.length>1?(d(),f(B,{key:0,type:"warning","show-icon":"",message:"多 proposal 并发",description:"同一联邦同时存在多个待批 threshold proposal。下方每行可独立确认(CRDT-style 选择);不指定时 CLI 默认确认最新一条。",style:{"margin-bottom":"12px"}})):y("",!0),e(ke,{"data-source":se.value,size:"small"},{renderItem:t(({item:n})=>[e(he,null,{actions:t(()=>[e(i,{size:"small",type:"primary",loading:L.value,onClick:Q=>Re(n.event_id)},{default:t(()=>[...l[24]||(l[24]=[v(" 确认这个 ",-1)])]),_:1},8,["loading","onClick"])]),default:t(()=>[e(S,{wrap:""},{default:t(()=>[e(I,{color:"orange"},{default:t(()=>[v("target M = "+s(n.target),1)]),_:2},1024),l[22]||(l[22]=h("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"by",-1)),h("span",Bt,s(n.proposer||"—"),1),l[23]||(l[23]=h("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"at",-1)),h("span",Rt,s(o($e)(n.proposed_at)),1),e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v(s(qe(n.event_id)),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):y("",!0),b.value?(d(),f(c,{key:2,title:"实时同步状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(u,{title:"模式",value:b.value.mode||"—","value-style":{fontSize:"16px",color:"#1677ff"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(u,{title:"最近 tick",value:o(ae)(b.value.last_tick_at)||"—","value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(u,{title:"下次轮询",value:fe.value,"value-style":{fontSize:"14px",color:"var(--text-secondary)"}},null,8,["value"])]),_:1})]),_:1}),b.value.publish||b.value.pull||b.value.libp2p?(d(),f(ee,{key:0,column:{xs:1,sm:2},size:"small",style:{"margin-top":"12px"}},{default:t(()=>[b.value.publish?(d(),f(z,{key:0,label:"Publish"},{default:t(()=>[v(" last "+s(b.value.publish.last_published||0)+" / total "+s(b.value.publish.total_published||0),1)]),_:1})):y("",!0),b.value.pull?(d(),f(z,{key:1,label:"Pull"},{default:t(()=>[v(" last "+s(b.value.pull.last_appended||0)+" / total "+s(b.value.pull.total_appended||0)+" ",1),b.value.pull.last_invalid||b.value.pull.last_unknown?(d(),D("span",qt," · invalid "+s(b.value.pull.last_invalid||0)+" / unknown "+s(b.value.pull.last_unknown||0),1)):y("",!0)]),_:1})):y("",!0),b.value.libp2p?(d(),f(z,{key:2,label:"libp2p wire",span:2},{default:t(()=>[v(" recv "+s(b.value.libp2p.wire_received||0)+" · appended "+s(b.value.libp2p.wire_appended||0)+" ",1),b.value.libp2p.topic?(d(),D("span",Ht," ("+s(b.value.libp2p.topic)+") ",1)):y("",!0)]),_:1})):y("",!0)]),_:1})):(d(),f(ie,{key:1,description:"daemon 还没写过 tick — 启动 governance-sync-serve 或 governance-sync-libp2p 后再加载"}))]),_:1})):y("",!0),e(c,{title:"操作型治理 (签名密钥仍 CLI-only)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(B,{type:"warning","show-icon":"",message:"安全设计",description:"所有操作通过本机 CLI 子进程执行。私钥永远不进入 web 渲染进程 — 这里只是给 cc mtc federation * 命令拼参数。",style:{"margin-bottom":"12px"}}),e(we,{size:"small"},{default:t(()=>[e(A,{key:"invite",tab:"邀请"},{default:t(()=>[e(R,{layout:"inline",onSubmit:G(me,["prevent"])},{default:t(()=>[e(m,{label:"actor"},{default:t(()=>[e(F,{value:q.value.actor,"onUpdate:value":l[4]||(l[4]=n=>q.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"candidate"},{default:t(()=>[e(F,{value:q.value.candidate,"onUpdate:value":l[5]||(l[5]=n=>q.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"pubkey-id"},{default:t(()=>[e(F,{value:q.value.pubkeyId,"onUpdate:value":l[6]||(l[6]=n=>q.value.pubkeyId=n),placeholder:"sha256:...",style:{width:"200px"}},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:me},{default:t(()=>[...l[25]||(l[25]=[v("invite",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"vote",tab:"投票"},{default:t(()=>[e(R,{layout:"inline",onSubmit:G(ge,["prevent"])},{default:t(()=>[e(m,{label:"actor"},{default:t(()=>[e(F,{value:H.value.actor,"onUpdate:value":l[7]||(l[7]=n=>H.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"candidate"},{default:t(()=>[e(F,{value:H.value.candidate,"onUpdate:value":l[8]||(l[8]=n=>H.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"decision"},{default:t(()=>[e(Ye,{value:H.value.decision,"onUpdate:value":l[9]||(l[9]=n=>H.value.decision=n),style:{width:"110px"}},{default:t(()=>[e(xe,{value:"approve"},{default:t(()=>[...l[26]||(l[26]=[v("approve",-1)])]),_:1}),e(xe,{value:"reject"},{default:t(()=>[...l[27]||(l[27]=[v("reject",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:ge},{default:t(()=>[...l[28]||(l[28]=[v("vote",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"threshold",tab:"改 threshold"},{default:t(()=>[e(R,{layout:"inline",onSubmit:G(ye,["prevent"])},{default:t(()=>[e(m,{label:"actor"},{default:t(()=>[e(F,{value:Z.value.actor,"onUpdate:value":l[10]||(l[10]=n=>Z.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"新 M"},{default:t(()=>[e(et,{value:Z.value.newM,"onUpdate:value":l[11]||(l[11]=n=>Z.value.newM=n),min:1,style:{width:"90px"}},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{loading:L.value,onClick:ye},{default:t(()=>[...l[29]||(l[29]=[v("propose",-1)])]),_:1},8,["loading"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:Be},{default:t(()=>[...l[30]||(l[30]=[v("confirm",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"revoke",tab:"撤销"},{default:t(()=>[e(R,{layout:"inline",onSubmit:G(be,["prevent"])},{default:t(()=>[e(m,{label:"actor"},{default:t(()=>[e(F,{value:N.value.actor,"onUpdate:value":l[12]||(l[12]=n=>N.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"target"},{default:t(()=>[e(F,{value:N.value.target,"onUpdate:value":l[13]||(l[13]=n=>N.value.target=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"reason"},{default:t(()=>[e(F,{value:N.value.reason,"onUpdate:value":l[14]||(l[14]=n=>N.value.reason=n),placeholder:"inactive",style:{width:"160px"}},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{loading:L.value,onClick:be},{default:t(()=>[...l[31]||(l[31]=[v("propose-revoke",-1)])]),_:1},8,["loading"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:He},{default:t(()=>[...l[32]||(l[32]=[v("confirm-revoke",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"sync",tab:"跨成员同步"},{default:t(()=>[e(R,{layout:"inline"},{default:t(()=>[e(m,{label:"drop-zone"},{default:t(()=>[e(F,{value:j.value.dropZone,"onUpdate:value":l[15]||(l[15]=n=>j.value.dropZone=n),placeholder:"/path/to/shared/dir",style:{width:"220px"}},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(tt,{checked:j.value.verify,"onUpdate:checked":l[16]||(l[16]=n=>j.value.verify=n)},{default:t(()=>[...l[33]||(l[33]=[v("--verify",-1)])]),_:1},8,["checked"])]),_:1}),e(m,null,{default:t(()=>[e(i,{loading:L.value,onClick:Ze},{default:t(()=>[...l[34]||(l[34]=[v("publish",-1)])]),_:1},8,["loading"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:Je},{default:t(()=>[...l[35]||(l[35]=[v("pull",-1)])]),_:1},8,["loading"])]),_:1}),e(m,null,{default:t(()=>[e(i,{loading:L.value,onClick:Ge},{default:t(()=>[...l[36]||(l[36]=[v("sync-once",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1}),K.value?(d(),f(c,{key:0,size:"small",style:{"margin-top":"12px",background:"var(--bg-hover)"}},{default:t(()=>[h("pre",Zt,s(JSON.stringify(K.value,null,2)),1)]),_:1})):y("",!0)]),_:1})])):(d(),f(ie,{key:1,description:"输入联邦 ID 加载 governance.log"})),e(B,{style:{"margin-top":"16px"},type:"info","show-icon":"",message:"跨成员同步",description:"cc mtc federation governance-publish/pull --drop-zone 文件系统通道;governance-sync-libp2p --listen 走 libp2p gossipsub 通道;governance-sync-serve 自动 daemon 化。事件签名 + dedupe by event_id 保证幂等。"})]),_:1})]),_:1},8,["activeKey"])])}}},ea=ut(Jt,[["__scopeId","data-v-327f30f4"]]);export{ea as default};
|
|
1
|
+
import{r as _,o as at,x as lt,M as D,R as h,P as s,u as o,c as e,N as t,K as y,L as d,O as v,Q as f,Z as ot,a6 as rt,F as Se,S as b,a1 as V,$ as nt,_ as st,f as te}from"./vendor-B6ToihkA.js";import{_ as ut,b as it,u as dt,d as k}from"./index-B2f4ltyM.js";import{a as ze,b as Ce,f as Ie,c as $e,d as ae,p as ct}from"./mtc-parser-pGMSt10g.js";import{R as vt,f as pt,e as ft,u as Fe,aV as mt,ay as yt,N as bt,ah as gt,x as _t}from"./icons-zXb7lDZs.js";import"./community-parser-CO25nZFt.js";const ht={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},kt={class:"page-title"},xt={class:"page-sub"},wt={style:{"font-family":"monospace"}},St={style:{"font-family":"monospace"}},zt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Ct={key:1,style:{color:"var(--text-muted)"}},It={key:0,style:{"font-family":"monospace","font-size":"11px","word-break":"break-all"}},$t={key:1,style:{color:"var(--text-muted)"}},Ft={key:1,style:{"font-family":"monospace","font-size":"11px"}},Lt=["title"],jt={style:{"font-family":"monospace"}},Dt={style:{"font-family":"monospace","font-size":"12px"}},Mt={style:{"font-family":"monospace","font-size":"12px"}},Pt={class:"raw-pre"},Ot={style:{"font-family":"monospace"}},Ut={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-tertiary)","margin-left":"8px"}},At={key:0},Et={style:{"font-family":"monospace"}},Nt={style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"11px"}},Tt={style:{"font-family":"monospace"}},Bt={style:{"font-family":"monospace"}},Rt={style:{"font-family":"monospace","font-size":"11px"}},qt={key:0,style:{color:"#cf1322","margin-left":"8px"}},Ht={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-secondary)","margin-left":"8px"}},Zt={class:"raw-pre",style:{margin:"0"}},Jt={__name:"Mtc",setup(Vt){const{t:r}=it(),E=dt(),de=_("status"),X=_(!1),x=_(ze("")),Y=_(""),le=_(!1),M=_(Ce("")),G=_(""),W=_(""),oe=_(!1),w=_(null),Le=te(()=>[{title:r("mtc.historyColumns.seq"),key:"seq",dataIndex:"seq",width:"90px"},{title:r("mtc.historyColumns.namespace"),key:"namespace",dataIndex:"namespace"},{title:r("mtc.historyColumns.treeSize"),key:"treeSize",dataIndex:"treeSize",width:"100px"},{title:r("mtc.historyColumns.treeHeadId"),key:"treeHeadId",dataIndex:"treeHeadId",width:"180px"},{title:r("mtc.historyColumns.publishedAt"),key:"publishedAt",dataIndex:"publishedAt",width:"140px"}]);function je(a,l){return a?a.length<=l?a:a.slice(0,l)+"…":""}async function ce(){X.value=!0;try{const{output:a}=await E.execute("audit mtc status --json",8e3);x.value=ze(a)}catch(a){k.error(r("mtc.messages.loadStatusFailed",{err:a?.message||a}))}finally{X.value=!1}}async function De(){if(!Y.value.trim()){k.warning(r("mtc.messages.stateFileRequired"));return}le.value=!0;try{const a=Y.value.trim().replace(/"/g,'\\"'),{output:l}=await E.execute(`mtc publish-status "${a}" --json`,8e3);M.value=Ce(l)}catch(a){k.error(r("mtc.messages.loadPublishFailed",{err:a?.message||a}))}finally{le.value=!1}}async function ve(){if(!G.value.trim()||!W.value.trim()){k.warning(r("mtc.messages.verifyPathsRequired"));return}oe.value=!0,w.value=null;try{const a=G.value.trim().replace(/"/g,'\\"'),l=W.value.trim().replace(/"/g,'\\"'),{output:i}=await E.execute(`mtc verify "${a}" --landmark "${l}" --json`,12e3);w.value=ct(i),w.value.raw||k.error(r("mtc.messages.verifyNoJson"))}catch(a){k.error(r("mtc.messages.verifyFailed",{err:a?.message||a}))}finally{oe.value=!1}}const $=_({config:{enabled:!1,mode:"independent",alg:"ed25519",batch_interval_seconds:60,issuer:""},trust_anchors:{chain_count:0,total:0,by_chain:{}},staging:{pending:0},batches:{total:0,latest:null}}),Me=te(()=>{switch($.value.config.mode){case"federated":return"Federated";case"light-client":return"Light Client";default:return"Independent"}}),Pe=[{title:"chain",key:"chain",dataIndex:"chain",width:"120px"},{title:"锚数",key:"count",dataIndex:"count",width:"80px"}],Oe=te(()=>{const a=$.value.trust_anchors.by_chain||{};return Object.entries(a).map(([l,i])=>({key:l,chain:l,count:i}))});function Ue(a){return{config:{enabled:!1,mode:"independent",alg:"ed25519",batch_interval_seconds:60,issuer:"",...a?.config||{}},trust_anchors:{chain_count:0,total:0,by_chain:{},...a?.trust_anchors||{}},staging:{pending:0,...a?.staging||{}},batches:{total:0,latest:null,...a?.batches||{}}}}const N=_({});let re=null;function Ae(a){return a==="ok"?"#52c41a":a==="degraded"?"#faad14":a==="down"?"#ff4d4f":"#888"}async function pe(){try{const{output:a}=await E.execute("crosschain mtc-sla --json",6e3),l=a.split(/\r?\n/);for(let i=0;i<l.length;i++)if(l[i].trimStart().startsWith("{"))for(let S=l.length;S>i;S--)try{const u=JSON.parse(l.slice(i,S).join(`
|
|
2
|
+
`));if(u&&typeof u.sla_status=="string"){N.value=u;return}}catch{}}catch{}}async function Ee(){try{const{output:a}=await E.execute("crosschain mtc-status --json",8e3),l=a.split(/\r?\n/);for(let i=0;i<l.length;i++)if(l[i].trimStart().startsWith("{"))for(let S=l.length;S>i;S--)try{const u=JSON.parse(l.slice(i,S).join(`
|
|
3
|
+
`));if(u&&u.config){$.value=Ue(u);return}}catch{}}catch(a){k.error("加载桥 MTC 状态失败: "+(a?.message||a))}}const J=_(""),ne=_(!1),P=_(null),g=_(null),fe=_("随 governance-log 加载刷新"),se=te(()=>{const a=P.value?.state;return a?Array.isArray(a.pending_thresholds)&&a.pending_thresholds.length>0?a.pending_thresholds:a.pending_threshold&&Number.isInteger(a.pending_threshold.target)?[a.pending_threshold]:[]:[]}),Ne=[{title:"member_id",key:"member_id",dataIndex:"member_id"},{title:"status",key:"status",dataIndex:"status",width:"110px"},{title:"weight",key:"weight",dataIndex:"weight",width:"80px"},{title:"alg",key:"alg",dataIndex:"alg",width:"120px"}];function Te(a){switch(a){case"create":return"cyan";case"invite":case"vote":return"blue";case"leave":case"rotate-key":return"default";case"propose-revoke":case"propose-threshold":return"orange";case"confirm-revoke":case"confirm-threshold":return"gold";case"fork":case"merge":return"purple";case"dispute":case"wind-down":return"red";default:return"default"}}const L=_(!1),K=_(null),q=_({actor:"",candidate:"",pubkeyId:""}),H=_({actor:"",candidate:"",decision:"approve"}),Z=_({actor:"",newM:2}),T=_({actor:"",target:"",reason:"inactive"}),j=_({dropZone:"",verify:!1});function C(a){return String(a||"").replace(/"/g,"").replace(/[`$]/g,"")}async function O(a,l=!0){if(!J.value.trim()){k.warning("请先输入联邦 ID");return}L.value=!0,K.value=null;try{const i=C(J.value.trim()),S=`mtc federation ${a.replace("<FED>",`"${i}"`)} --json`,{output:u}=await E.execute(S,12e3),c=u.split(/\r?\n/);let p=null;for(let I=0;I<c.length;I++)if(c[I].trimStart().startsWith("{")){for(let U=c.length;U>I;U--)try{p=JSON.parse(c.slice(I,U).join(`
|
|
4
|
+
`));break}catch{}if(p)break}K.value=p||{raw:u},k.success("命令执行完成"),l&&await _e()}catch(i){k.error("CLI 执行失败: "+(i?.message||i)),K.value={error:i?.message||String(i)}}finally{L.value=!1}}function me(){const a=q.value;if(!a.actor||!a.candidate||!a.pubkeyId){k.warning("actor / candidate / pubkey-id 都必填");return}return O(`invite <FED> "${C(a.candidate)}" --actor "${C(a.actor)}" --candidate-pubkey-id "${C(a.pubkeyId)}"`)}function ye(){const a=H.value;if(!a.actor||!a.candidate){k.warning("actor / candidate 必填");return}return O(`vote <FED> "${C(a.candidate)}" --actor "${C(a.actor)}" --decision ${a.decision}`)}function be(){const a=Z.value;if(!a.actor){k.warning("actor 必填");return}return O(`propose-threshold <FED> ${parseInt(a.newM)} --actor "${C(a.actor)}"`)}function Be(){const a=Z.value;if(!a.actor){k.warning("actor 必填");return}return O(`confirm-threshold <FED> --actor "${C(a.actor)}"`)}function Re(a){const l=(Z.value.actor||"").trim();if(!l){k.warning('请先在"改 threshold"子 tab 填 actor');return}if(!a){k.warning("proposal event_id 缺失");return}return O(`confirm-threshold <FED> --actor "${C(l)}" --proposal-event-id "${C(a)}"`)}function qe(a){return a?a.length<=16?a:`${a.slice(0,8)}…${a.slice(-4)}`:"—"}function ge(){const a=T.value;if(!a.actor||!a.target){k.warning("actor / target 必填");return}return O(`propose-revoke <FED> "${C(a.target)}" --actor "${C(a.actor)}" --reason "${C(a.reason)}"`)}function He(){const a=T.value;if(!a.actor||!a.target){k.warning("actor / target 必填");return}return O(`confirm-revoke <FED> "${C(a.target)}" --actor "${C(a.actor)}"`)}function Ze(){if(!j.value.dropZone){k.warning("drop-zone 必填");return}return O(`governance-publish <FED> --drop-zone "${C(j.value.dropZone)}"`,!1)}function Je(){if(!j.value.dropZone){k.warning("drop-zone 必填");return}const a=j.value.verify?" --verify":"";return O(`governance-pull <FED> --drop-zone "${C(j.value.dropZone)}"${a}`)}function Ve(){if(!j.value.dropZone){k.warning("drop-zone 必填");return}const a=j.value.verify?" --verify":"";return O(`governance-sync-serve <FED> --drop-zone "${C(j.value.dropZone)}" --once${a}`)}async function _e(){if(!J.value.trim()){k.warning("请输入联邦 ID");return}ne.value=!0;try{const a=J.value.trim().replace(/"/g,""),{output:l}=await E.execute(`mtc federation governance-log "${a}" --json`,8e3),i=l.split(/\r?\n/);let S=!1;for(let u=0;u<i.length;u++)if(i[u].trimStart().startsWith("{")){for(let c=i.length;c>u;c--)try{const p=JSON.parse(i.slice(u,c).join(`
|
|
5
|
+
`));if(p&&p.state){P.value=p,S=!0;break}}catch{}if(S)break}if(!S){k.error("未能解析 governance-log 输出");return}await Ge(a)}catch(a){k.error("加载 governance.log 失败: "+(a?.message||a))}finally{ne.value=!1}}async function Ge(a){if(g.value=null,fe.value="随 governance-log 加载刷新",!!a)try{const l=String(a).replace(/"/g,""),{output:i}=await E.execute(`mtc federation governance-sync-stats "${l}" --json`,8e3),S=i.split(/\r?\n/);for(let u=0;u<S.length;u++)if(S[u].trimStart().startsWith("{"))for(let c=S.length;c>u;c--)try{const p=JSON.parse(S.slice(u,c).join(`
|
|
6
|
+
`));if(p&&(p.available!==void 0||p.mode!==void 0)){g.value=p.available===!1?null:p;return}}catch{}}catch{g.value=null}}return at(()=>{ce(),Ee(),pe(),re=setInterval(pe,3e4)}),lt(()=>{re&&clearInterval(re)}),(a,l)=>{const i=y("a-button"),S=y("a-space"),u=y("a-statistic"),c=y("a-card"),p=y("a-col"),I=y("a-tag"),U=y("a-row"),z=y("a-descriptions-item"),ee=y("a-descriptions"),B=y("a-alert"),A=y("a-tab-pane"),F=y("a-input"),m=y("a-form-item"),R=y("a-form"),ue=y("a-table"),We=y("a-collapse-panel"),Ke=y("a-collapse"),ie=y("a-empty"),he=y("a-list-item"),ke=y("a-list"),Qe=y("a-timeline-item"),Xe=y("a-timeline"),xe=y("a-select-option"),Ye=y("a-select"),et=y("a-input-number"),tt=y("a-checkbox"),we=y("a-tabs");return d(),D("div",null,[h("div",ht,[h("div",null,[h("h2",kt,s(o(r)("mtc.title")),1),h("p",xt,s(o(r)("mtc.subtitle")),1)]),e(S,null,{default:t(()=>[e(i,{loading:X.value,onClick:ce},{icon:t(()=>[e(o(vt))]),default:t(()=>[v(" "+s(o(r)("mtc.refresh")),1)]),_:1},8,["loading"])]),_:1})]),e(we,{activeKey:de.value,"onUpdate:activeKey":l[17]||(l[17]=n=>de.value=n),class:"mtc-tabs"},{default:t(()=>[e(A,{key:"status",tab:o(r)("mtc.tabs.status")},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.status.enabledLabel"),value:x.value.config.enabled?o(r)("mtc.status.enabled"):o(r)("mtc.status.disabled"),"value-style":{color:x.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[(d(),f(ot(x.value.config.enabled?o(pt):o(ft))))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.status.intervalLabel"),value:o(Ie)(x.value.config.batch_interval_seconds),"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(Fe))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.status.stagingLabel"),value:x.value.staging.count,"value-style":{color:x.value.staging.count>0?"#faad14":"#888",fontSize:"20px"}},rt({prefix:t(()=>[e(o(mt))]),_:2},[x.value.staging.malformed>0?{name:"suffix",fn:t(()=>[e(I,{color:"red",style:{"margin-left":"8px"}},{default:t(()=>[v(s(o(r)("mtc.status.stagingMalformed",{count:x.value.staging.malformed})),1)]),_:1})]),key:"0"}:void 0]),1032,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.status.totalBatches"),value:x.value.batches.count,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(yt))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),e(c,{title:o(r)("mtc.status.configCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small"},{default:t(()=>[e(z,{label:"namespace"},{default:t(()=>[h("span",wt,s(x.value.config.namespace_prefix||"—"),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[h("span",St,s(x.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"oldest queued"},{default:t(()=>[v(s(o($e)(x.value.staging.oldest_queued_at)),1)]),_:1}),e(z,{label:"last batch"},{default:t(()=>[x.value.batches.last_batch_id?(d(),D(Se,{key:0},[e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+s(x.value.batches.last_batch_id),1)]),_:1}),h("span",zt,s(o(r)("mtc.status.lastBatchSize",{size:x.value.batches.last_tree_size,time:o(ae)(x.value.batches.last_closed_at)})),1)],64)):(d(),D("span",Ct,s(o(r)("mtc.status.noBatches")),1))]),_:1}),e(z,{label:"last tree_head_id",span:2},{default:t(()=>[x.value.batches.last_tree_head_id?(d(),D("span",It,s(x.value.batches.last_tree_head_id),1)):(d(),D("span",$t,"—"))]),_:1})]),_:1})]),_:1},8,["title"]),!x.value.ok&&!X.value?(d(),f(B,{key:0,type:"info","show-icon":"",message:o(r)("mtc.status.loadFailMessage"),description:o(r)("mtc.status.loadFailDescription")},null,8,["message","description"])):x.value.config.enabled?b("",!0):(d(),f(B,{key:1,type:"info","show-icon":"",message:o(r)("mtc.status.notEnabledMessage"),description:o(r)("mtc.status.notEnabledDescription")},null,8,["message","description"]))]),_:1},8,["tab"]),e(A,{key:"publisher",tab:o(r)("mtc.tabs.publisher")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(R,{layout:"inline",onSubmit:V(De,["prevent"])},{default:t(()=>[e(m,{label:o(r)("mtc.publisher.stateFileLabel")},{default:t(()=>[e(F,{value:Y.value,"onUpdate:value":l[0]||(l[0]=n=>Y.value=n),placeholder:o(r)("mtc.publisher.stateFilePlaceholder"),style:{"min-width":"360px"},"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(m,null,{default:t(()=>[e(i,{loading:le.value,type:"primary","html-type":"submit"},{default:t(()=>[v(s(o(r)("mtc.publisher.queryButton")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),M.value.ok&&!M.value.exists?(d(),f(B,{key:0,type:"info","show-icon":"",message:o(r)("mtc.publisher.missingMessage"),description:o(r)("mtc.publisher.missingDescription",{path:M.value.stateFile}),style:{"margin-bottom":"16px"}},null,8,["message","description"])):b("",!0),M.value.exists?(d(),f(U,{key:1,gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.publisher.lastSeq"),value:M.value.lastSeq,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(bt))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.publisher.historyEntries"),value:M.value.historyCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(gt))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:o(r)("mtc.publisher.lastPublished"),value:o(ae)(M.value.lastPublishedAt),"value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:t(()=>[e(o(Fe))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})):b("",!0),M.value.exists&&M.value.history.length>0?(d(),f(ue,{key:2,"data-source":M.value.history,columns:Le.value,pagination:{pageSize:10},size:"small","row-key":"key"},{bodyCell:t(({column:n,record:Q})=>[n.key==="seq"?(d(),f(I,{key:0,color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+s(Q.seq),1)]),_:2},1024)):n.key==="treeHeadId"?(d(),D("span",Ft,s(je(Q.treeHeadId,22)),1)):n.key==="publishedAt"?(d(),D("span",{key:2,title:Q.publishedAt},s(o(ae)(Q.publishedAt)),9,Lt)):b("",!0)]),_:1},8,["data-source","columns"])):b("",!0)]),_:1},8,["tab"]),e(A,{key:"verify",tab:o(r)("mtc.tabs.verify")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(B,{type:"info","show-icon":"",message:o(r)("mtc.verify.infoMessage"),description:o(r)("mtc.verify.infoDescription"),style:{"margin-bottom":"16px"}},null,8,["message","description"]),e(R,{layout:"vertical",onSubmit:V(ve,["prevent"])},{default:t(()=>[e(m,{label:o(r)("mtc.verify.envelopeLabel")},{default:t(()=>[e(F,{value:G.value,"onUpdate:value":l[1]||(l[1]=n=>G.value=n),placeholder:o(r)("mtc.verify.envelopePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(m,{label:o(r)("mtc.verify.landmarkLabel")},{default:t(()=>[e(F,{value:W.value,"onUpdate:value":l[2]||(l[2]=n=>W.value=n),placeholder:o(r)("mtc.verify.landmarkPlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(m,null,{default:t(()=>[e(i,{loading:oe.value,type:"primary",disabled:!G.value||!W.value,onClick:ve},{icon:t(()=>[e(o(_t))]),default:t(()=>[v(" "+s(o(r)("mtc.verify.runButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),w.value?(d(),f(c,{key:0,title:w.value.ok?o(r)("mtc.verify.passTitle"):o(r)("mtc.verify.failTitle"),size:"small",style:nt({background:"var(--bg-card)",borderColor:w.value.ok?"#52c41a":"#ff4d4f"})},{default:t(()=>[e(ee,{column:1,size:"small",bordered:""},{default:t(()=>[e(z,{label:o(r)("mtc.verify.resultLabel")},{default:t(()=>[e(I,{color:w.value.ok?"green":"red"},{default:t(()=>[v(s(w.value.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1},8,["label"]),w.value.ok?b("",!0):(d(),f(z,{key:0,label:o(r)("mtc.verify.errorCodeLabel")},{default:t(()=>[h("span",jt,s(w.value.code||o(r)("mtc.verify.errorCodeNone")),1),w.value.recoverable?(d(),f(I,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:t(()=>[v(s(o(r)("mtc.verify.recoverable")),1)]),_:1})):b("",!0)]),_:1},8,["label"])),w.value.leaf?(d(),f(z,{key:1,label:o(r)("mtc.verify.subjectLabel")},{default:t(()=>[h("span",Dt,s(w.value.leaf.subject||"—"),1)]),_:1},8,["label"])):b("",!0),w.value.leaf?(d(),f(z,{key:2,label:o(r)("mtc.verify.kindLabel")},{default:t(()=>[e(I,null,{default:t(()=>[v(s(w.value.leaf.kind||"—"),1)]),_:1})]),_:1},8,["label"])):b("",!0),w.value.treeHead?(d(),f(z,{key:3,label:o(r)("mtc.verify.treeSizeLabel")},{default:t(()=>[v(s(w.value.treeHead.tree_size),1)]),_:1},8,["label"])):b("",!0),w.value.treeHead?(d(),f(z,{key:4,label:o(r)("mtc.verify.issuerLabel")},{default:t(()=>[h("span",Mt,s(w.value.treeHead.issuer||"—"),1)]),_:1},8,["label"])):b("",!0)]),_:1}),w.value.raw?(d(),f(Ke,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:t(()=>[e(We,{key:"raw",header:o(r)("mtc.verify.rawHeader")},{default:t(()=>[h("pre",Pt,s(JSON.stringify(w.value.raw,null,2)),1)]),_:1},8,["header"])]),_:1})):b("",!0)]),_:1},8,["title","style"])):b("",!0)]),_:1},8,["tab"]),e(A,{key:"bridge",tab:"跨链桥 MTC"},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"桥 MTC 集成",value:$.value.config.enabled?"已启用":"未启用","value-style":{color:$.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"互信模式",value:Me.value,"value-style":{color:"#1677ff",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"待批次关闭",value:$.value.staging.pending,"value-style":{color:$.value.staging.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})]),_:1}),e(c,{title:"配置",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small",bordered:""},{default:t(()=>[e(z,{label:"算法"},{default:t(()=>[e(I,{color:$.value.config.alg==="slh-dsa-128f"?"purple":"blue"},{default:t(()=>[v(s($.value.config.alg||"—"),1)]),_:1},8,["color"])]),_:1}),e(z,{label:"batch interval"},{default:t(()=>[v(s(o(Ie)($.value.config.batch_interval_seconds)),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[h("span",Ot,s($.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"batches 总数"},{default:t(()=>[v(s($.value.batches.total)+" ",1),$.value.batches.latest?(d(),D("span",Ut," latest: "+s($.value.batches.latest),1)):b("",!0)]),_:1})]),_:1})]),_:1}),e(c,{title:"信任锚 (Independent 模式)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[$.value.trust_anchors.total===0?(d(),f(ie,{key:0,description:"未配置信任锚"})):(d(),f(ue,{key:1,"data-source":Oe.value,columns:Pe,pagination:!1,size:"small","row-key":"key"},null,8,["data-source"])),l[18]||(l[18]=h("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 添加:"),h("code",null,"cc crosschain mtc-trust-anchor add <chain> <pubkey-id> --alg --issuer")],-1))]),_:1}),e(c,{title:"SLA / Monitoring (v0.2)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(u,{title:"SLA Status",value:N.value.sla_status||"—","value-style":{color:Ae(N.value.sla_status),fontSize:"18px"}},null,8,["value","value-style"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(u,{title:"Staged pending",value:N.value.staged_pending_count??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(u,{title:"Batches / hour",value:N.value.batches_last_hour??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(u,{title:"Last batch",value:N.value.seconds_since_last_batch!==null&&N.value.seconds_since_last_batch!==void 0?`${N.value.seconds_since_last_batch}s ago`:"—","value-style":{fontSize:"14px"}},null,8,["value"])]),_:1})]),_:1}),l[19]||(l[19]=h("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 通过 "),h("code",null,"cc crosschain mtc-sla --json"),v(" 实时刷新(30s 自动 poll)。可纳入外部 Prometheus / Grafana。 ")],-1))]),_:1}),e(B,{type:"info","show-icon":"",message:"桥 MTC 仍 opt-in",description:"启用后 cc crosschain bridge|swap|send 加 --mtc 才会写 envelope;定期 cc crosschain mtc-batch 关 staging 为批次。完整指南见 docs.chainlesschain.com/guide/mtc-merkle-tree-certs。"})]),_:1}),e(A,{key:"governance",tab:"联邦治理"},{default:t(()=>[e(R,{layout:"inline",style:{"margin-bottom":"16px"}},{default:t(()=>[e(m,{label:"联邦 ID"},{default:t(()=>[e(F,{value:J.value,"onUpdate:value":l[3]||(l[3]=n=>J.value=n),placeholder:"e.g. fed-test",style:{width:"240px"},"allow-clear":""},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:ne.value,onClick:_e},{default:t(()=>[...l[20]||(l[20]=[v(" 加载 governance.log ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),P.value?(d(),D("div",At,[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"状态",value:P.value.state.status||"—","value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"Threshold",value:P.value.state.threshold||1,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(u,{title:"事件总数",value:(P.value.events||[]).length,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),e(c,{title:"成员",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ue,{"data-source":P.value.state.members||[],columns:Ne,pagination:!1,size:"small","row-key":"member_id"},null,8,["data-source"])]),_:1}),(P.value.state.pending_invites||[]).length?(d(),f(c,{key:0,title:"待投票邀请",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ke,{"data-source":P.value.state.pending_invites,size:"small"},{renderItem:t(({item:n})=>[e(he,null,{default:t(()=>[h("span",Et,s(n.member_id),1),e(I,{color:"blue"},{default:t(()=>[v("approve "+s(n.votes.approve.length)+"/"+s(n.required),1)]),_:2},1024),n.votes.reject.length?(d(),f(I,{key:0,color:"red"},{default:t(()=>[v("reject "+s(n.votes.reject.length),1)]),_:2},1024)):b("",!0)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):b("",!0),e(c,{title:"事件时间线",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(Xe,null,{default:t(()=>[(d(!0),D(Se,null,st(P.value.events||[],n=>(d(),f(Qe,{key:n.event_id},{default:t(()=>[h("span",Nt,s(n.issued_at),1),e(I,{color:Te(n.event_type),style:{"margin-left":"8px"}},{default:t(()=>[v(s(n.event_type),1)]),_:2},1032,["color"]),l[21]||(l[21]=v(" actor: ",-1)),h("span",Tt,s(n.actor_member_id),1)]),_:2},1024))),128))]),_:1})]),_:1}),se.value.length>0?(d(),f(c,{key:1,title:"待批 threshold proposals",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[se.value.length>1?(d(),f(B,{key:0,type:"warning","show-icon":"",message:"多 proposal 并发",description:"同一联邦同时存在多个待批 threshold proposal。下方每行可独立确认(CRDT-style 选择);不指定时 CLI 默认确认最新一条。",style:{"margin-bottom":"12px"}})):b("",!0),e(ke,{"data-source":se.value,size:"small"},{renderItem:t(({item:n})=>[e(he,null,{actions:t(()=>[e(i,{size:"small",type:"primary",loading:L.value,onClick:Q=>Re(n.event_id)},{default:t(()=>[...l[24]||(l[24]=[v(" 确认这个 ",-1)])]),_:1},8,["loading","onClick"])]),default:t(()=>[e(S,{wrap:""},{default:t(()=>[e(I,{color:"orange"},{default:t(()=>[v("target M = "+s(n.target),1)]),_:2},1024),l[22]||(l[22]=h("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"by",-1)),h("span",Bt,s(n.proposer||"—"),1),l[23]||(l[23]=h("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"at",-1)),h("span",Rt,s(o($e)(n.proposed_at)),1),e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v(s(qe(n.event_id)),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):b("",!0),g.value?(d(),f(c,{key:2,title:"实时同步状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(u,{title:"模式",value:g.value.mode||"—","value-style":{fontSize:"16px",color:"#1677ff"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(u,{title:"最近 tick",value:o(ae)(g.value.last_tick_at)||"—","value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(u,{title:"下次轮询",value:fe.value,"value-style":{fontSize:"14px",color:"var(--text-secondary)"}},null,8,["value"])]),_:1})]),_:1}),g.value.publish||g.value.pull||g.value.libp2p?(d(),f(ee,{key:0,column:{xs:1,sm:2},size:"small",style:{"margin-top":"12px"}},{default:t(()=>[g.value.publish?(d(),f(z,{key:0,label:"Publish"},{default:t(()=>[v(" last "+s(g.value.publish.last_published||0)+" / total "+s(g.value.publish.total_published||0),1)]),_:1})):b("",!0),g.value.pull?(d(),f(z,{key:1,label:"Pull"},{default:t(()=>[v(" last "+s(g.value.pull.last_appended||0)+" / total "+s(g.value.pull.total_appended||0)+" ",1),g.value.pull.last_invalid||g.value.pull.last_unknown?(d(),D("span",qt," · invalid "+s(g.value.pull.last_invalid||0)+" / unknown "+s(g.value.pull.last_unknown||0),1)):b("",!0)]),_:1})):b("",!0),g.value.libp2p?(d(),f(z,{key:2,label:"libp2p wire",span:2},{default:t(()=>[v(" recv "+s(g.value.libp2p.wire_received||0)+" · appended "+s(g.value.libp2p.wire_appended||0)+" ",1),g.value.libp2p.topic?(d(),D("span",Ht," ("+s(g.value.libp2p.topic)+") ",1)):b("",!0)]),_:1})):b("",!0)]),_:1})):(d(),f(ie,{key:1,description:"daemon 还没写过 tick — 启动 governance-sync-serve 或 governance-sync-libp2p 后再加载"}))]),_:1})):b("",!0),e(c,{title:"操作型治理 (签名密钥仍 CLI-only)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(B,{type:"warning","show-icon":"",message:"安全设计",description:"所有操作通过本机 CLI 子进程执行。私钥永远不进入 web 渲染进程 — 这里只是给 cc mtc federation * 命令拼参数。",style:{"margin-bottom":"12px"}}),e(we,{size:"small"},{default:t(()=>[e(A,{key:"invite",tab:"邀请"},{default:t(()=>[e(R,{layout:"inline",onSubmit:V(me,["prevent"])},{default:t(()=>[e(m,{label:"actor"},{default:t(()=>[e(F,{value:q.value.actor,"onUpdate:value":l[4]||(l[4]=n=>q.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"candidate"},{default:t(()=>[e(F,{value:q.value.candidate,"onUpdate:value":l[5]||(l[5]=n=>q.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"pubkey-id"},{default:t(()=>[e(F,{value:q.value.pubkeyId,"onUpdate:value":l[6]||(l[6]=n=>q.value.pubkeyId=n),placeholder:"sha256:...",style:{width:"200px"}},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:me},{default:t(()=>[...l[25]||(l[25]=[v("invite",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"vote",tab:"投票"},{default:t(()=>[e(R,{layout:"inline",onSubmit:V(ye,["prevent"])},{default:t(()=>[e(m,{label:"actor"},{default:t(()=>[e(F,{value:H.value.actor,"onUpdate:value":l[7]||(l[7]=n=>H.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"candidate"},{default:t(()=>[e(F,{value:H.value.candidate,"onUpdate:value":l[8]||(l[8]=n=>H.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"decision"},{default:t(()=>[e(Ye,{value:H.value.decision,"onUpdate:value":l[9]||(l[9]=n=>H.value.decision=n),style:{width:"110px"}},{default:t(()=>[e(xe,{value:"approve"},{default:t(()=>[...l[26]||(l[26]=[v("approve",-1)])]),_:1}),e(xe,{value:"reject"},{default:t(()=>[...l[27]||(l[27]=[v("reject",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:ye},{default:t(()=>[...l[28]||(l[28]=[v("vote",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"threshold",tab:"改 threshold"},{default:t(()=>[e(R,{layout:"inline",onSubmit:V(be,["prevent"])},{default:t(()=>[e(m,{label:"actor"},{default:t(()=>[e(F,{value:Z.value.actor,"onUpdate:value":l[10]||(l[10]=n=>Z.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"新 M"},{default:t(()=>[e(et,{value:Z.value.newM,"onUpdate:value":l[11]||(l[11]=n=>Z.value.newM=n),min:1,style:{width:"90px"}},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{loading:L.value,onClick:be},{default:t(()=>[...l[29]||(l[29]=[v("propose",-1)])]),_:1},8,["loading"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:Be},{default:t(()=>[...l[30]||(l[30]=[v("confirm",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"revoke",tab:"撤销"},{default:t(()=>[e(R,{layout:"inline",onSubmit:V(ge,["prevent"])},{default:t(()=>[e(m,{label:"actor"},{default:t(()=>[e(F,{value:T.value.actor,"onUpdate:value":l[12]||(l[12]=n=>T.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"target"},{default:t(()=>[e(F,{value:T.value.target,"onUpdate:value":l[13]||(l[13]=n=>T.value.target=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(m,{label:"reason"},{default:t(()=>[e(F,{value:T.value.reason,"onUpdate:value":l[14]||(l[14]=n=>T.value.reason=n),placeholder:"inactive",style:{width:"160px"}},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(i,{loading:L.value,onClick:ge},{default:t(()=>[...l[31]||(l[31]=[v("propose-revoke",-1)])]),_:1},8,["loading"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:He},{default:t(()=>[...l[32]||(l[32]=[v("confirm-revoke",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"sync",tab:"跨成员同步"},{default:t(()=>[e(R,{layout:"inline"},{default:t(()=>[e(m,{label:"drop-zone"},{default:t(()=>[e(F,{value:j.value.dropZone,"onUpdate:value":l[15]||(l[15]=n=>j.value.dropZone=n),placeholder:"/path/to/shared/dir",style:{width:"220px"}},null,8,["value"])]),_:1}),e(m,null,{default:t(()=>[e(tt,{checked:j.value.verify,"onUpdate:checked":l[16]||(l[16]=n=>j.value.verify=n)},{default:t(()=>[...l[33]||(l[33]=[v("--verify",-1)])]),_:1},8,["checked"])]),_:1}),e(m,null,{default:t(()=>[e(i,{loading:L.value,onClick:Ze},{default:t(()=>[...l[34]||(l[34]=[v("publish",-1)])]),_:1},8,["loading"])]),_:1}),e(m,null,{default:t(()=>[e(i,{type:"primary",loading:L.value,onClick:Je},{default:t(()=>[...l[35]||(l[35]=[v("pull",-1)])]),_:1},8,["loading"])]),_:1}),e(m,null,{default:t(()=>[e(i,{loading:L.value,onClick:Ve},{default:t(()=>[...l[36]||(l[36]=[v("sync-once",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1}),K.value?(d(),f(c,{key:0,size:"small",style:{"margin-top":"12px",background:"var(--bg-hover)"}},{default:t(()=>[h("pre",Zt,s(JSON.stringify(K.value,null,2)),1)]),_:1})):b("",!0)]),_:1})])):(d(),f(ie,{key:1,description:"输入联邦 ID 加载 governance.log"})),e(B,{style:{"margin-top":"16px"},type:"info","show-icon":"",message:"跨成员同步",description:"cc mtc federation governance-publish/pull --drop-zone 文件系统通道;governance-sync-libp2p --listen 走 libp2p gossipsub 通道;governance-sync-serve 自动 daemon 化。事件签名 + dedupe by event_id 保证幂等。"})]),_:1})]),_:1},8,["activeKey"])])}}},Yt=ut(Jt,[["__scopeId","data-v-327f30f4"]]);export{Yt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as nt,u as at,b as ot,d as v}from"./index-B2f4ltyM.js";import{s as lt}from"./community-parser-CO25nZFt.js";import{R as rt,al as st,B as it,o as _e,k as be,aO as ut,aC as ct,f as pt}from"./icons-zXb7lDZs.js";import{o as dt,M as m,R as b,P as i,c as a,N as t,Q as h,S as _,K as d,r as x,L as u,O as p,u as y,F as C,_ as j,$ as ft,f as Y,a as ke}from"./vendor-B6ToihkA.js";function P(s){const r=lt(s);if(!r)return null;try{return JSON.parse(r)}catch{}const l=r.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!l)return null;try{return JSON.parse(l[0])}catch{return null}}const oe=Object.freeze(["create_component","add_feature","fix_bug","refactor","add_api","add_test","update_style","configure","general"]),Le=Object.freeze(["draft","complete","refined"]),xe=Object.freeze(["naming","architecture","testing","style","imports","components"]);function D(s,r=0){return typeof s=="number"&&Number.isFinite(s)?s:r}function q(s,r){if(s==null)return r;if(typeof s!="string")return s;try{return JSON.parse(s)}catch{return s}}function mt(s){const r=P(s);return!r||typeof r!="object"||Array.isArray(r)?null:{intent:String(r.intent||"general"),confidence:D(r.confidence,0)}}function gt(s){const r=P(s);if(!r||typeof r!="object"||Array.isArray(r))return null;const l=Array.isArray(r.entities)?r.entities.map(g=>g&&typeof g=="object"?{type:String(g.type||""),value:String(g.value||"")}:null).filter(Boolean):[];return{entities:l,count:D(r.count,l.length)}}function yt(s){const r=P(s);if(!r||typeof r!="object"||Array.isArray(r))return null;const l=Array.isArray(r.detected)?r.detected.filter(g=>typeof g=="string"):[];return{detected:l,primary:r.primary?String(r.primary):l[0]||null}}function vt(s,r=0){if(!s||typeof s!="object")return null;const l=s.id||"";return l?{key:l,id:l,inputText:s.inputText??s.input_text??"",intent:String(s.intent||"general"),entities:q(s.entities,[]),techStack:q(s.techStack??s.tech_stack,[]),spec:q(s.spec,null),completenessScore:D(s.completenessScore??s.completeness_score,0),ambiguities:q(s.ambiguities,[]),status:String(s.status||"draft").toLowerCase(),createdAt:s.createdAt??s.created_at??null,updatedAt:s.updatedAt??s.updated_at??null,_idx:r}:null}function _t(s){const r=P(s);return Array.isArray(r)?r.map(vt).filter(Boolean):[]}function bt(s){const r=P(s);return!r||typeof r!="object"||Array.isArray(r)||r.translationId===void 0?null:{translated:!!r.translated,translationId:r.translationId,intent:String(r.intent||""),completeness:D(r.completeness,0)}}function kt(s){if(!s)return{noDb:!1,error:""};const r=/No ChainlessChain project database/i.test(s)||/Cannot read properties of undefined \(reading ['"]prepare['"]\)/i.test(s)||/TypeError.*prepare/i.test(s),l=s.match(/Error:\s*(No ChainlessChain project database[^\r\n]*)/i);if(l)return{noDb:!0,error:l[1].trim()};const g=s.match(/TypeError:\s*(.+?)(?:\r?\n|$)/i);return{noDb:r,error:g?g[1].trim():""}}function xt(s,r=0){if(!s||typeof s!="object")return null;const l=s.id||"";return l?{key:l,id:l,category:String(s.category||""),pattern:String(s.pattern||""),examples:q(s.examples,[]),confidence:D(s.confidence,0),sourceFiles:q(s.sourceFiles??s.source_files,[]),createdAt:s.createdAt??s.created_at??null,_idx:r}:null}function ht(s){const r=P(s);return Array.isArray(r)?r.map(xt).filter(Boolean):[]}const $t={translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}};function Ct(s){const r=JSON.parse(JSON.stringify($t));for(const g of oe)r.translations.byIntent[g]=0;for(const g of xe)r.conventions.byCategory[g]=0;const l=P(s);if(!l||typeof l!="object"||Array.isArray(l))return r;if(l.translations&&typeof l.translations=="object"){if(r.translations.total=D(l.translations.total,0),r.translations.avgCompleteness=D(l.translations.avgCompleteness??l.translations.avg_completeness,0),l.translations.byIntent&&typeof l.translations.byIntent=="object")for(const[g,S]of Object.entries(l.translations.byIntent))typeof S=="number"&&Number.isFinite(S)&&(r.translations.byIntent[g]=S);if(l.translations.byStatus&&typeof l.translations.byStatus=="object")for(const g of Object.keys(r.translations.byStatus))r.translations.byStatus[g]=D(l.translations.byStatus[g],0)}if(l.conventions&&typeof l.conventions=="object"&&(r.conventions.total=D(l.conventions.total,0),l.conventions.byCategory&&typeof l.conventions.byCategory=="object"))for(const[g,S]of Object.entries(l.conventions.byCategory))typeof S=="number"&&Number.isFinite(S)&&(r.conventions.byCategory[g]=S);return r}function ae(s){if(s==null||s==="")return"—";const r=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(r.getTime())?String(s):r.toLocaleString("zh-CN",{hour12:!1})}const St={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},zt={class:"page-title"},At={class:"page-sub"},Tt={class:"filter-bar"},jt={key:0,style:{color:"var(--text-primary)"}},Ft={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},wt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Nt={class:"filter-bar"},Ot={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Lt={key:0,style:{color:"var(--text-muted)"}},Dt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Rt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Et={key:0,style:{"margin-bottom":"12px"}},It={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},Ut={style:{color:"var(--text-secondary)","font-size":"12px"}},Pt={key:1,style:{"margin-bottom":"12px"}},Jt={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},Mt={key:0,style:{color:"var(--text-muted)"}},Bt={key:2},qt={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},Kt={key:0,style:{color:"var(--text-muted)"}},Vt={key:0,style:{"padding-top":"8px"}},Wt={style:{"white-space":"pre-wrap",color:"var(--text-primary)"}},Gt={style:{"margin-top":"16px"}},Qt={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Yt={class:"json-block"},Ht={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},Xt={class:"json-block"},Zt={key:0},en={style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},tn={class:"json-block"},nn={__name:"NLProgramming",setup(s){const r=at(),{t:l}=ot(),g=x(!1),S=x(!1),le=x(!1),re=x(!1),he=x([]),se=x([]),F=x({translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}}),ie=x("translations"),K=x(""),V=x(""),H=x(""),ue=x(!1),X=x(!1),Z=x(!1),ce=x(!1),pe=ke({text:""}),w=ke({text:"",intent:null}),k=ke({category:"naming",pattern:"",examples:"",confidence:.8}),N=x(null),O=x(null),T=x(null),ee=x({noDb:!1,error:""}),$=x(null),De=Y(()=>[{title:l("nlprog.translationCols.inputText"),key:"inputText"},{title:l("nlprog.translationCols.intent"),key:"intent",width:"140px"},{title:l("nlprog.translationCols.completeness"),key:"completeness",width:"160px"},{title:l("nlprog.translationCols.status"),key:"status",width:"100px"},{title:l("nlprog.translationCols.updatedAt"),key:"updatedAt",width:"160px"},{title:l("nlprog.translationCols.action"),key:"action",width:"210px"}]),Re=Y(()=>[{title:l("nlprog.conventionCols.category"),key:"category",width:"120px"},{title:l("nlprog.conventionCols.pattern"),key:"pattern"},{title:l("nlprog.conventionCols.examples"),key:"examples",width:"220px"},{title:l("nlprog.conventionCols.confidence"),key:"confidence",width:"90px"},{title:l("nlprog.conventionCols.createdAt"),key:"createdAt",width:"160px"},{title:l("nlprog.conventionCols.action"),key:"action",width:"90px"}]),Ee=Y(()=>F.value.translations.avgCompleteness*100),Ie=Y(()=>{let e=he.value;return K.value&&(e=e.filter(n=>n.intent===K.value)),V.value&&(e=e.filter(n=>n.status===V.value)),e}),Ue=Y(()=>H.value?se.value.filter(e=>e.category===H.value):se.value);function J(e){const n=`nlprog.intentLabels.${e}`,c=l(n);return c===n?e:c}function te(e){return{create_component:"blue",add_feature:"green",fix_bug:"red",refactor:"purple",add_api:"cyan",add_test:"orange",update_style:"magenta",configure:"gold",general:"default"}[e]||"default"}function W(e){const n=`nlprog.statusLabels.${e}`,c=l(n);return c===n?e:c}function $e(e){return{draft:"default",complete:"green",refined:"cyan"}[e]||"default"}function de(e){const n=`nlprog.categoryLabels.${e}`,c=l(n);return c===n?e:c}function Pe(e){return{naming:"blue",architecture:"purple",testing:"cyan",style:"magenta",imports:"orange",components:"green"}[e]||"default"}function fe(e){return e>=.7?"#52c41a":e>=.4?"#faad14":"#ff4d4f"}function Je(e,n){return e?e.length>n?e.slice(0,n)+"...":e:""}function me(e){if(e==null)return"—";if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Me({key:e}){e==="analyze"?(N.value=null,O.value=null,T.value=null,ue.value=!0):e==="translate"?(ee.value={noDb:!1,error:""},X.value=!0):e==="convention"&&(Z.value=!0)}async function R(){g.value=!0;try{const[e,n,c]=await Promise.all([r.execute("nlprog list --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("nlprog conventions --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("nlprog stats --json",8e3).catch(()=>({output:""}))]);he.value=_t(e.output),se.value=ht(n.output),F.value=Ct(c.output)}catch(e){v.error(l("nlprog.msg.loadFailed")+": "+(e?.message||e))}finally{g.value=!1}}async function Be(){const e=pe.text.trim();if(!e){v.warning(l("nlprog.msg.textEmpty"));return}S.value=!0,N.value=null,O.value=null,T.value=null;try{const n=e.replace(/"/g,'\\"'),[c,L,E]=await Promise.all([r.execute(`nlprog classify "${n}" --json`,8e3).catch(()=>({output:""})),r.execute(`nlprog extract "${n}" --json`,8e3).catch(()=>({output:""})),r.execute(`nlprog detect-stack "${n}" --json`,8e3).catch(()=>({output:""}))]);N.value=mt(c.output),O.value=gt(L.output),T.value=yt(E.output),!N.value&&!O.value&&!T.value&&v.error(l("nlprog.msg.analyzeFailed"))}catch(n){v.error(l("nlprog.msg.analyzeFailed")+": "+(n?.message||n))}finally{S.value=!1}}async function qe(){const e=w.text.trim();if(!e){v.warning(l("nlprog.msg.translateTextEmpty"));return}le.value=!0,ee.value={noDb:!1,error:""};try{const n=[`nlprog translate "${e.replace(/"/g,'\\"')}"`];w.intent&&n.push(`--intent ${w.intent}`),n.push("--json");const{output:c}=await r.execute(n.join(" "),12e3),L=kt(c);if(L.noDb){ee.value=L;return}const E=bt(c);if(!E){v.error(l("nlprog.msg.translateFailed")+": "+c.slice(0,120));return}v.success(l("nlprog.msg.translateSuccess",{pct:(E.completeness*100).toFixed(0)})),X.value=!1,Ce(),await R()}catch(n){v.error(l("nlprog.msg.translateFailed")+": "+(n?.message||n))}finally{le.value=!1}}async function Ke(e,n){if(n!==e.status)try{const{output:c}=await r.execute(`nlprog status ${e.id} ${n} --json`,8e3);if(/error|invalid/i.test(c)&&!/"updated"/.test(c)){v.error(l("nlprog.msg.transitionFailed")+": "+c.slice(0,120));return}v.success(l("nlprog.msg.transitionSuccess",{label:W(n)})),await R()}catch(c){v.error(l("nlprog.msg.transitionFailed")+": "+(c?.message||c))}}async function Ve(e){try{const{output:n}=await r.execute(`nlprog remove ${e.id} --json`,8e3);if(/error/i.test(n)&&!/"removed"/.test(n)){v.error(l("nlprog.msg.deleteFailed")+": "+n.slice(0,120));return}v.success(l("nlprog.msg.deleteSuccess")),await R()}catch(n){v.error(l("nlprog.msg.deleteFailed")+": "+(n?.message||n))}}function We(e){$.value=e,ce.value=!0}async function Ge(){const e=k.pattern.trim();if(!e){v.warning(l("nlprog.msg.patternEmpty"));return}if(k.examples.trim())try{JSON.parse(k.examples)}catch{v.warning(l("nlprog.msg.examplesBadJson"));return}re.value=!0;try{const n=[`nlprog convention-add --category ${k.category}`];n.push(`--pattern "${e.replace(/"/g,'\\"')}"`),k.examples.trim()&&n.push(`--examples '${k.examples.trim().replace(/'/g,"'\\''")}'`),k.confidence!=null&&n.push(`--confidence ${k.confidence}`),n.push("--json");const{output:c}=await r.execute(n.join(" "),1e4);if(/error|invalid|失败/i.test(c)&&!/"added"/.test(c)){v.error(l("nlprog.msg.addFailed")+": "+c.slice(0,120));return}v.success(l("nlprog.msg.addSuccess")),Z.value=!1,Se(),ie.value="conventions",await R()}catch(n){v.error(l("nlprog.msg.addFailed")+": "+(n?.message||n))}finally{re.value=!1}}async function Qe(e){try{const{output:n}=await r.execute(`nlprog convention-remove ${e.id} --json`,8e3);if(/error/i.test(n)&&!/"removed"/.test(n)){v.error(l("nlprog.msg.deleteFailed")+": "+n.slice(0,120));return}v.success(l("nlprog.msg.deleteSuccess")),await R()}catch(n){v.error(l("nlprog.msg.deleteFailed")+": "+(n?.message||n))}}function Ce(){w.text="",w.intent=null}function Se(){k.category="naming",k.pattern="",k.examples="",k.confidence=.8}return dt(R),(e,n)=>{const c=d("a-button"),L=d("a-menu-item"),E=d("a-menu"),ze=d("a-dropdown"),Ae=d("a-space"),G=d("a-statistic"),I=d("a-card"),Q=d("a-col"),Ye=d("a-row"),z=d("a-tag"),M=d("a-radio-button"),ge=d("a-radio-group"),Te=d("a-progress"),je=d("a-popconfirm"),Fe=d("a-table"),we=d("a-tab-pane"),He=d("a-tabs"),ye=d("a-textarea"),U=d("a-form-item"),ve=d("a-form"),ne=d("a-modal"),Ne=d("a-select-option"),Oe=d("a-select"),Xe=d("a-alert"),Ze=d("a-input"),et=d("a-input-number"),B=d("a-descriptions-item"),tt=d("a-descriptions");return u(),m("div",null,[b("div",St,[b("div",null,[b("h2",zt,i(e.$t("nlprog.title")),1),b("p",At,i(e.$t("nlprog.subtitle")),1)]),a(Ae,null,{default:t(()=>[a(c,{loading:g.value,onClick:R},{icon:t(()=>[a(y(rt))]),default:t(()=>[p(" "+i(e.$t("nlprog.refresh")),1)]),_:1},8,["loading"]),a(ze,{trigger:["click"]},{overlay:t(()=>[a(E,{onClick:Me},{default:t(()=>[a(L,{key:"analyze"},{default:t(()=>[a(y(it)),p(" "+i(e.$t("nlprog.actions.analyze")),1)]),_:1}),a(L,{key:"translate"},{default:t(()=>[a(y(_e)),p(" "+i(e.$t("nlprog.actions.translate")),1)]),_:1}),a(L,{key:"convention"},{default:t(()=>[a(y(be)),p(" "+i(e.$t("nlprog.actions.convention")),1)]),_:1})]),_:1})]),default:t(()=>[a(c,{type:"primary"},{icon:t(()=>[a(y(st))]),default:t(()=>[p(" "+i(e.$t("nlprog.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),a(Ye,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(Q,{xs:12,sm:8,lg:5},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(G,{title:e.$t("nlprog.stats.translations"),value:F.value.translations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(y(_e))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(Q,{xs:12,sm:8,lg:5},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(G,{title:e.$t("nlprog.stats.avgCompleteness"),value:Ee.value,precision:1,suffix:"%","value-style":{color:F.value.translations.avgCompleteness>=.7?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:t(()=>[a(y(ut))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(Q,{xs:12,sm:8,lg:5},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(G,{title:e.$t("nlprog.stats.drafts"),value:F.value.translations.byStatus.draft,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:t(()=>[a(y(ct))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(Q,{xs:12,sm:8,lg:5},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(G,{title:e.$t("nlprog.stats.completed"),value:F.value.translations.byStatus.complete,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(y(pt))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(Q,{xs:24,sm:8,lg:4},{default:t(()=>[a(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(G,{title:e.$t("nlprog.stats.conventions"),value:F.value.conventions.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(y(be))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),F.value.translations.total>0?(u(),h(I,{key:0,title:e.$t("nlprog.intentCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(Ae,{size:[12,8],wrap:""},{default:t(()=>[(u(!0),m(C,null,j(y(oe),o=>(u(),h(z,{key:o,color:te(o)},{default:t(()=>[p(i(J(o))+": "+i(F.value.translations.byIntent[o]||0),1)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):_("",!0),a(He,{activeKey:ie.value,"onUpdate:activeKey":n[3]||(n[3]=o=>ie.value=o),class:"nlprog-tabs"},{default:t(()=>[a(we,{key:"translations",tab:e.$t("nlprog.tabs.translations")},{default:t(()=>[b("div",Tt,[a(ge,{value:K.value,"onUpdate:value":n[0]||(n[0]=o=>K.value=o),size:"small"},{default:t(()=>[a(M,{value:""},{default:t(()=>[p(i(e.$t("nlprog.filter.allIntents")),1)]),_:1}),(u(!0),m(C,null,j(y(oe),o=>(u(),h(M,{key:o,value:o},{default:t(()=>[p(i(J(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(ge,{value:V.value,"onUpdate:value":n[1]||(n[1]=o=>V.value=o),size:"small","button-style":"solid"},{default:t(()=>[a(M,{value:""},{default:t(()=>[p(i(e.$t("nlprog.filter.allStatuses")),1)]),_:1}),(u(!0),m(C,null,j(y(Le),o=>(u(),h(M,{key:o,value:o},{default:t(()=>[p(i(W(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(Fe,{columns:De.value,"data-source":Ie.value,pagination:{pageSize:20,showTotal:o=>e.$t("nlprog.table.totalSuffix",{n:o})},size:"small",loading:g.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:o,record:f})=>[o.key==="inputText"?(u(),m("span",jt,i(Je(f.inputText,80)),1)):_("",!0),o.key==="intent"?(u(),h(z,{key:1,color:te(f.intent),style:{"font-size":"11px"}},{default:t(()=>[p(i(J(f.intent)),1)]),_:2},1032,["color"])):_("",!0),o.key==="completeness"?(u(),h(Te,{key:2,percent:Math.round(f.completenessScore*100),size:"small","stroke-color":fe(f.completenessScore),format:()=>(f.completenessScore*100).toFixed(0)+"%"},null,8,["percent","stroke-color","format"])):_("",!0),o.key==="status"?(u(),h(z,{key:3,color:$e(f.status)},{default:t(()=>[p(i(W(f.status)),1)]),_:2},1032,["color"])):_("",!0),o.key==="updatedAt"?(u(),m("span",Ft,i(y(ae)(f.updatedAt)),1)):_("",!0),o.key==="action"?(u(),m(C,{key:5},[a(c,{size:"small",type:"link",onClick:A=>We(f)},{default:t(()=>[p(i(e.$t("nlprog.table.actionDetails")),1)]),_:1},8,["onClick"]),a(ze,{trigger:["click"]},{overlay:t(()=>[a(E,{onClick:A=>Ke(f,A.key)},{default:t(()=>[(u(!0),m(C,null,j(y(Le),A=>(u(),h(L,{key:A,disabled:A===f.status},{default:t(()=>[p(i(W(A)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(c,{size:"small",type:"link"},{default:t(()=>[p(i(e.$t("nlprog.table.actionStatusDropdown")),1)]),_:1})]),_:2},1024),a(je,{title:e.$t("nlprog.deleteTranslationConfirm.title"),"ok-text":e.$t("nlprog.deleteTranslationConfirm.ok"),"cancel-text":e.$t("nlprog.deleteTranslationConfirm.cancel"),onConfirm:A=>Ve(f)},{default:t(()=>[a(c,{size:"small",type:"link",danger:""},{default:t(()=>[p(i(e.$t("nlprog.deleteTranslationConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):_("",!0)]),emptyText:t(()=>[b("div",wt,[a(y(_e),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(K.value||V.value?e.$t("nlprog.table.emptyTranslationsFiltered"):e.$t("nlprog.table.emptyTranslations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(we,{key:"conventions",tab:e.$t("nlprog.tabs.conventions")},{default:t(()=>[b("div",Nt,[a(ge,{value:H.value,"onUpdate:value":n[2]||(n[2]=o=>H.value=o),size:"small","button-style":"solid"},{default:t(()=>[a(M,{value:""},{default:t(()=>[p(i(e.$t("nlprog.filter.allCategories")),1)]),_:1}),(u(!0),m(C,null,j(y(xe),o=>(u(),h(M,{key:o,value:o},{default:t(()=>[p(i(de(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(Fe,{columns:Re.value,"data-source":Ue.value,pagination:{pageSize:20,showTotal:o=>e.$t("nlprog.table.totalSuffix",{n:o})},size:"small",loading:g.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:o,record:f})=>[o.key==="category"?(u(),h(z,{key:0,color:Pe(f.category)},{default:t(()=>[p(i(de(f.category)),1)]),_:2},1032,["color"])):_("",!0),o.key==="pattern"?(u(),m("span",Ot,i(f.pattern),1)):_("",!0),o.key==="examples"?(u(),m(C,{key:2},[(u(!0),m(C,null,j(Array.isArray(f.examples)?f.examples.slice(0,3):[],A=>(u(),h(z,{key:A,color:"default",style:{"font-size":"10px","font-family":"monospace",margin:"1px"}},{default:t(()=>[p(i(A),1)]),_:2},1024))),128)),!Array.isArray(f.examples)||f.examples.length===0?(u(),m("span",Lt,"—")):_("",!0)],64)):_("",!0),o.key==="confidence"?(u(),m("span",{key:3,style:ft({color:fe(f.confidence),fontWeight:500})},i((f.confidence*100).toFixed(0))+"% ",5)):_("",!0),o.key==="createdAt"?(u(),m("span",Dt,i(y(ae)(f.createdAt)),1)):_("",!0),o.key==="action"?(u(),h(je,{key:5,title:e.$t("nlprog.deleteConventionConfirm.title"),"ok-text":e.$t("nlprog.deleteConventionConfirm.ok"),"cancel-text":e.$t("nlprog.deleteConventionConfirm.cancel"),onConfirm:A=>Qe(f)},{default:t(()=>[a(c,{size:"small",type:"link",danger:""},{default:t(()=>[p(i(e.$t("nlprog.deleteConventionConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):_("",!0)]),emptyText:t(()=>[b("div",Rt,[a(y(be),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.$t("nlprog.table.emptyConventions")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(ne,{open:ue.value,"onUpdate:open":n[5]||(n[5]=o=>ue.value=o),title:e.$t("nlprog.analyze_modal.title"),"confirm-loading":S.value,width:600,"ok-text":e.$t("nlprog.analyze_modal.ok"),"cancel-text":e.$t("nlprog.analyze_modal.cancel"),onOk:Be},{default:t(()=>[a(ve,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(U,{label:e.$t("nlprog.analyze_modal.textLabel"),required:""},{default:t(()=>[a(ye,{value:pe.text,"onUpdate:value":n[4]||(n[4]=o=>pe.text=o),placeholder:e.$t("nlprog.analyze_modal.textPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),N.value||O.value||T.value?(u(),h(I,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:t(()=>[N.value?(u(),m("div",Et,[b("div",It,i(e.$t("nlprog.analyze_modal.intent")),1),a(z,{color:te(N.value.intent),style:{"margin-right":"6px"}},{default:t(()=>[p(i(J(N.value.intent)),1)]),_:1},8,["color"]),b("span",Ut,i(e.$t("nlprog.analyze_modal.confidenceLine",{pct:(N.value.confidence*100).toFixed(0)})),1)])):_("",!0),O.value?(u(),m("div",Pt,[b("div",Jt,i(e.$t("nlprog.analyze_modal.entities",{n:O.value.count})),1),O.value.entities.length?_("",!0):(u(),m("span",Mt,i(e.$t("nlprog.analyze_modal.notDetected")),1)),(u(!0),m(C,null,j(O.value.entities,(o,f)=>(u(),h(z,{key:f,color:"purple",style:{"font-family":"monospace","font-size":"11px",margin:"1px"}},{default:t(()=>[p(" ["+i(o.type)+"] "+i(o.value),1)]),_:2},1024))),128))])):_("",!0),T.value?(u(),m("div",Bt,[b("div",qt,i(e.$t("nlprog.analyze_modal.stack")),1),T.value.detected.length?(u(),m(C,{key:1},[a(z,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[p(i(e.$t("nlprog.analyze_modal.stackPrimary",{name:T.value.primary})),1)]),_:1}),(u(!0),m(C,null,j(T.value.detected.filter(o=>o!==T.value.primary),o=>(u(),h(z,{key:o,color:"default",style:{"font-family":"monospace","font-size":"11px"}},{default:t(()=>[p(i(o),1)]),_:2},1024))),128))],64)):(u(),m("span",Kt,i(e.$t("nlprog.analyze_modal.notDetected")),1))])):_("",!0)]),_:1})):_("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ne,{open:X.value,"onUpdate:open":n[8]||(n[8]=o=>X.value=o),title:e.$t("nlprog.translate_modal.title"),"confirm-loading":le.value,width:540,"ok-text":e.$t("nlprog.translate_modal.ok"),"cancel-text":e.$t("nlprog.translate_modal.cancel"),onOk:qe,onCancel:Ce},{default:t(()=>[a(ve,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(U,{label:e.$t("nlprog.translate_modal.textLabel"),required:""},{default:t(()=>[a(ye,{value:w.text,"onUpdate:value":n[6]||(n[6]=o=>w.text=o),placeholder:e.$t("nlprog.translate_modal.textPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.translate_modal.intentLabel")},{default:t(()=>[a(Oe,{value:w.intent,"onUpdate:value":n[7]||(n[7]=o=>w.intent=o),"allow-clear":"",placeholder:e.$t("nlprog.translate_modal.intentPlaceholder")},{default:t(()=>[(u(!0),m(C,null,j(y(oe),o=>(u(),h(Ne,{key:o,value:o},{default:t(()=>[p(i(J(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),ee.value.noDb?(u(),h(Xe,{key:0,type:"warning","show-icon":"",message:e.$t("nlprog.translate_modal.noDbMessage"),description:e.$t("nlprog.translate_modal.noDbDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])):_("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ne,{open:Z.value,"onUpdate:open":n[13]||(n[13]=o=>Z.value=o),title:e.$t("nlprog.convention_modal.title"),"confirm-loading":re.value,width:540,"ok-text":e.$t("nlprog.convention_modal.ok"),"cancel-text":e.$t("nlprog.convention_modal.cancel"),onOk:Ge,onCancel:Se},{default:t(()=>[a(ve,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(U,{label:e.$t("nlprog.convention_modal.categoryLabel"),required:""},{default:t(()=>[a(Oe,{value:k.category,"onUpdate:value":n[9]||(n[9]=o=>k.category=o)},{default:t(()=>[(u(!0),m(C,null,j(y(xe),o=>(u(),h(Ne,{key:o,value:o},{default:t(()=>[p(i(de(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.convention_modal.patternLabel"),required:""},{default:t(()=>[a(Ze,{value:k.pattern,"onUpdate:value":n[10]||(n[10]=o=>k.pattern=o),placeholder:e.$t("nlprog.convention_modal.patternPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.convention_modal.examplesLabel")},{default:t(()=>[a(ye,{value:k.examples,"onUpdate:value":n[11]||(n[11]=o=>k.examples=o),placeholder:e.$t("nlprog.convention_modal.examplesPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(U,{label:e.$t("nlprog.convention_modal.confidenceLabel")},{default:t(()=>[a(et,{value:k.confidence,"onUpdate:value":n[12]||(n[12]=o=>k.confidence=o),min:0,max:1,step:.05,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ne,{open:ce.value,"onUpdate:open":n[14]||(n[14]=o=>ce.value=o),title:e.$t("nlprog.details.title",{id:$.value?.id?.slice(0,8)||""}),width:720,footer:null},{default:t(()=>[$.value?(u(),m("div",Vt,[a(tt,{column:2,size:"small",bordered:""},{default:t(()=>[a(B,{label:e.$t("nlprog.details.intent")},{default:t(()=>[a(z,{color:te($.value.intent)},{default:t(()=>[p(i(J($.value.intent)),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.status")},{default:t(()=>[a(z,{color:$e($.value.status)},{default:t(()=>[p(i(W($.value.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.completeness"),span:2},{default:t(()=>[a(Te,{percent:Math.round($.value.completenessScore*100),"stroke-color":fe($.value.completenessScore),size:"small"},null,8,["percent","stroke-color"])]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.createdAt")},{default:t(()=>[p(i(y(ae)($.value.createdAt)),1)]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.updatedAt")},{default:t(()=>[p(i(y(ae)($.value.updatedAt)),1)]),_:1},8,["label"]),a(B,{label:e.$t("nlprog.details.inputText"),span:2},{default:t(()=>[b("span",Wt,i($.value.inputText),1)]),_:1},8,["label"])]),_:1}),b("div",Gt,[b("h4",Qt,i(e.$t("nlprog.details.entities")),1),b("pre",Yt,i(me($.value.entities)),1)]),b("div",null,[b("h4",Ht,i(e.$t("nlprog.details.techStack")),1),b("pre",Xt,i(me($.value.techStack)),1)]),$.value.spec?(u(),m("div",Zt,[b("h4",en,i(e.$t("nlprog.details.spec")),1),b("pre",tn,i(me($.value.spec)),1)])):_("",!0)])):_("",!0)]),_:1},8,["open","title"])])}}},sn=nt(nn,[["__scopeId","data-v-55209f60"]]);export{sn as default};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`);for(const k of p){const n=k.trim();if(!n||n.startsWith("─")||n.startsWith("Note")||n.match(/^\d+ note/i))continue;const
|
|
1
|
+
import{_ as te,u as ae,d as x}from"./index-B2f4ltyM.js";import{u as le}from"./useFs-BW1piLQM.js";import{al as oe,R as ne,k as se,ap as ie}from"./icons-zXb7lDZs.js";import{o as ue,M as g,R as f,P as m,c as o,N as l,Q as w,S as y,r as i,K as c,f as re,L as u,O as v,u as z,F as Q,_ as q}from"./vendor-B6ToihkA.js";import"./useShellMode-CgR0wCYM.js";const ce={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},de={class:"page-sub"},pe={style:{"margin-bottom":"16px",display:"flex",gap:"10px"}},ve={key:0,style:{"text-align":"center",padding:"60px"}},fe={key:0,style:{color:"#e0e0e0","font-weight":"500"}},me={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},ge={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ye={key:0,style:{"max-height":"60vh","overflow-y":"auto"}},_e={style:{"margin-bottom":"10px"}},xe={style:{"white-space":"pre-wrap",color:"#ccc","font-family":"inherit","line-height":"1.7",background:"var(--bg-base)",padding:"16px","border-radius":"6px",border:"1px solid var(--border-color)"}},we={__name:"Notes",setup(ke){const O=ae(),A=le(),U=i(!1),h=i(!1),L=i(!1),T=i(!1),V=i(""),W=i([]),b=i([]),$=i(!1),_=i(""),N=i(!1),C=i(!1),d=i(null),s=i({title:"",content:"",tags:""}),E=re(()=>$.value?b.value:W.value),K=[{title:"标题",dataIndex:"title",key:"title",width:"30%"},{title:"预览",key:"content",ellipsis:!0},{title:"标签",key:"tags",width:"20%"},{title:"操作",key:"actions",width:"80px"}];async function B(){h.value=!0,V.value="";try{const{output:t}=await O.execute("note list",2e4);W.value=j(t)}catch(t){V.value=`加载失败: ${t.message}`}finally{h.value=!1}}function j(t){const e=[],p=t.split(`
|
|
2
|
+
`);for(const k of p){const n=k.trim();if(!n||n.startsWith("─")||n.startsWith("Note")||n.match(/^\d+ note/i))continue;const r=n.match(/^(\d+)\.\s+(.+?)(?:\s+\[([^\]]+)\])?\s*(?:-\s*(.*))?$/);r?e.push({key:r[1],id:r[1],title:r[2].trim(),tags:r[3]?r[3].split(",").map(M=>M.trim()):[],preview:(r[4]||"").trim().slice(0,100),content:""}):n.length>2&&!n.startsWith("✖")&&!n.startsWith("[")&&e.push({key:e.length,id:String(e.length),title:n,tags:[],preview:"",content:""})}return e}async function G(){if(!_.value.trim()){F();return}L.value=!0,$.value=!0;try{const{output:t}=await O.execute(`note search "${_.value}"`,15e3);b.value=j(t)}catch{b.value=[]}finally{L.value=!1}}function F(){_.value="",$.value=!1,b.value=[]}async function H(){if(!s.value.title.trim()){x.warning("请输入标题");return}T.value=!0;try{let t=`note add "${s.value.title}"`;s.value.content&&(t+=` -c "${s.value.content.replace(/"/g,'\\"')}"`),s.value.tags&&(t+=` -t "${s.value.tags}"`);const{output:e}=await O.execute(t,15e3);e.includes("✖")||e.toLowerCase().includes("error")?x.error("添加失败: "+e.slice(0,100)):(x.success("笔记已添加"),N.value=!1,s.value={title:"",content:"",tags:""},await B())}catch(t){x.error("添加失败: "+t.message)}finally{T.value=!1}}function J(t){d.value=t,C.value=!0}async function X(){if(!d.value)return;const t=d.value,e=t.tags?.length?`tags: [${t.tags.join(", ")}]
|
|
3
3
|
|
|
4
4
|
`:"",p=`# ${t.title}
|
|
5
5
|
|
|
6
6
|
${e}${t.content||t.preview||""}
|
|
7
|
-
`,k=(t.title||"note").replace(/[\\/:*?"<>|\x00-\x1f]+/g,"_").slice(0,80)||"note";U.value=!0;try{const n=await A.saveText(p,{defaultPath:`${k}.md`,filters:[{name:"Markdown",extensions:["md"]}]});if(n.canceled)return;x.success(n.path?`已导出到 ${n.path}`:"已导出")}catch(n){x.error(`导出失败: ${n.message||n}`)}finally{U.value=!1}}return
|
|
7
|
+
`,k=(t.title||"note").replace(/[\\/:*?"<>|\x00-\x1f]+/g,"_").slice(0,80)||"note";U.value=!0;try{const n=await A.saveText(p,{defaultPath:`${k}.md`,filters:[{name:"Markdown",extensions:["md"]}]});if(n.canceled)return;x.success(n.path?`已导出到 ${n.path}`:"已导出")}catch(n){x.error(`导出失败: ${n.message||n}`)}finally{U.value=!1}}return ue(B),(t,e)=>{const p=c("a-button"),k=c("a-space"),n=c("a-input-search"),r=c("a-tag"),M=c("a-spin"),Y=c("a-table"),D=c("a-input"),R=c("a-form-item"),Z=c("a-textarea"),ee=c("a-form"),I=c("a-modal");return u(),g("div",null,[f("div",ce,[f("div",null,[e[8]||(e[8]=f("h2",{class:"page-title"},"笔记管理",-1)),f("p",de,"个人知识库 · "+m(W.value.length)+" 条笔记",1)]),o(k,null,{default:l(()=>[o(p,{onClick:e[0]||(e[0]=a=>N.value=!0),type:"primary"},{icon:l(()=>[o(z(oe))]),default:l(()=>[e[9]||(e[9]=v(" 新建笔记 ",-1))]),_:1}),o(p,{ghost:"",loading:h.value,onClick:B},{icon:l(()=>[o(z(ne))]),default:l(()=>[e[10]||(e[10]=v(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),f("div",pe,[o(n,{value:_.value,"onUpdate:value":e[1]||(e[1]=a=>_.value=a),placeholder:"搜索笔记...","allow-clear":"",style:{"max-width":"400px"},loading:L.value,onSearch:G,onClear:F},null,8,["value","loading"]),$.value?(u(),w(r,{key:0,color:"blue",closable:"",onClose:F},{default:l(()=>[v(" 搜索: "+m(_.value),1)]),_:1})):y("",!0)]),h.value?(u(),g("div",ve,[o(M,{size:"large"})])):(u(),w(Y,{key:1,columns:K,"data-source":E.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"note-row"},{bodyCell:l(({column:a,record:S})=>[a.key==="title"?(u(),g("span",fe,m(S.title),1)):y("",!0),a.key==="tags"?(u(!0),g(Q,{key:1},q(S.tags,P=>(u(),w(r,{key:P,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:l(()=>[v(m(P),1)]),_:2},1024))),128)):y("",!0),a.key==="content"?(u(),g("span",me,m(S.preview),1)):y("",!0),a.key==="actions"?(u(),w(p,{key:3,size:"small",type:"link",onClick:P=>J(S)},{default:l(()=>[...e[11]||(e[11]=[v("查看",-1)])]),_:1},8,["onClick"])):y("",!0)]),emptyText:l(()=>[f("div",ge,[o(z(se),{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),v(" "+m(V.value||'暂无笔记,点击"新建笔记"添加'),1)])]),_:1},8,["data-source","pagination"])),o(I,{open:N.value,"onUpdate:open":e[5]||(e[5]=a=>N.value=a),title:"新建笔记","confirm-loading":T.value,onOk:H},{default:l(()=>[o(ee,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:l(()=>[o(R,{label:"标题",required:""},{default:l(()=>[o(D,{value:s.value.title,"onUpdate:value":e[2]||(e[2]=a=>s.value.title=a),placeholder:"笔记标题"},null,8,["value"])]),_:1}),o(R,{label:"内容"},{default:l(()=>[o(Z,{value:s.value.content,"onUpdate:value":e[3]||(e[3]=a=>s.value.content=a),rows:5,placeholder:"笔记内容..."},null,8,["value"])]),_:1}),o(R,{label:"标签"},{default:l(()=>[o(D,{value:s.value.tags,"onUpdate:value":e[4]||(e[4]=a=>s.value.tags=a),placeholder:"用逗号分隔,如: work,ideas"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),o(I,{open:C.value,"onUpdate:open":e[7]||(e[7]=a=>C.value=a),title:d.value?.title,width:"700px"},{footer:l(()=>[o(p,{onClick:e[6]||(e[6]=a=>C.value=!1)},{default:l(()=>[...e[12]||(e[12]=[v("关闭",-1)])]),_:1}),d.value?(u(),w(p,{key:0,type:"primary",loading:U.value,onClick:X},{icon:l(()=>[o(z(ie))]),default:l(()=>[e[13]||(e[13]=v(" 导出 .md ",-1))]),_:1},8,["loading"])):y("",!0)]),default:l(()=>[d.value?(u(),g("div",ye,[f("div",_e,[(u(!0),g(Q,null,q(d.value.tags,a=>(u(),w(r,{key:a,color:"blue"},{default:l(()=>[v(m(a),1)]),_:2},1024))),128))]),f("pre",xe,m(d.value.content||d.value.preview),1)])):y("",!0)]),_:1},8,["open","title"])])}}},Se=te(we,[["__scopeId","data-v-b654ddde"]]);export{Se as default};
|