chainlesschain 0.161.3 → 0.161.4
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 +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-FON6GZIt.js → AIOps-K85peDCg.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-Byb_P_P9.js → ActionButton-DoRABhmk.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-CDG1OwOr.js → Analytics-B7p7X_lS.js} +2 -2
- package/src/assets/web-panel/assets/AppLayout-BQb9-BUE.js +1 -0
- package/src/assets/web-panel/assets/AppLayout-P7jhSfLy.css +1 -0
- package/src/assets/web-panel/assets/{Audit-p4krng5l.js → Audit-CHj8w38X.js} +1 -1
- package/src/assets/web-panel/assets/Backup-BsgPajcJ.js +1 -0
- package/src/assets/web-panel/assets/BaseInput-kGeksnCj.js +1 -0
- package/src/assets/web-panel/assets/Chat-2e3EGiwk.js +7 -0
- package/src/assets/web-panel/assets/Chat-D4oAhi11.css +1 -0
- package/src/assets/web-panel/assets/{Checkbox-CfDbHGdU.js → Checkbox-DirndeMM.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-D1mQ03ap.js → Codegen-UQuEF6rH.js} +1 -1
- package/src/assets/web-panel/assets/{Col-C0wS_dvU.js → Col-myVf7h0M.js} +1 -1
- package/src/assets/web-panel/assets/Community-C3Gt4JNP.js +1 -0
- package/src/assets/web-panel/assets/{Compact-CuVvz3Zf.js → Compact-B4TJcIuz.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-D6bnHyjs.js → Compliance-DKye9lMe.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Dh3yt9pL.js → Cowork-bD9Z8K9J.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-DiuKXbnA.js → Cron-BrQZ3zwQ.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BFgMa5sQ.js → Crosschain-C7m4dIrR.js} +1 -1
- package/src/assets/web-panel/assets/{DID-Dx7CFjrq.js → DID-CGniRypj.js} +2 -2
- package/src/assets/web-panel/assets/Dashboard-BqQfrJLe.js +3 -0
- package/src/assets/web-panel/assets/{Dropdown-sMGnnzUo.js → Dropdown-Csici42Z.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-CGt7CYhN.js → Federation-D2boc2WU.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DuVk39z3.js → FormItemContext-BpXHcM06.js} +1 -1
- package/src/assets/web-panel/assets/{Git-glb99UzZ.js → Git-C7QHt3Hy.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CQXGee_r.js → Governance-DPBJNo9u.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Czm-Q3w3.js → Inference-Ca8VokDu.js} +1 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-CrFGz4u2.js +1 -0
- package/src/assets/web-panel/assets/{Logs-ChGXdo0Q.js → Logs-DMhNTvH6.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-DW6P2uIY.js → Marketplace-DB0lVRRk.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-ChOwY-wy.js → McpTools-BmFQp5wQ.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-vIbbUTel.js → Memory-DDooyF2l.js} +2 -2
- package/src/assets/web-panel/assets/Mtc-Ci6BDiRi.js +6 -0
- package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +1 -0
- package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +1 -0
- package/src/assets/web-panel/assets/MtcAudit-J-DgVOwR.js +19 -0
- package/src/assets/web-panel/assets/{NLProgramming-fRrjhjpW.js → NLProgramming-Uv0jicWQ.js} +1 -1
- package/src/assets/web-panel/assets/Notes-BHauapxR.css +1 -0
- package/src/assets/web-panel/assets/Notes-SGtdMwfH.js +7 -0
- package/src/assets/web-panel/assets/NotificationSettings-Cg4yXikq.js +1 -0
- package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +1 -0
- package/src/assets/web-panel/assets/{Organization-Bebfm6lF.js → Organization-Bij8W2mU.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-D8ZjaRpc.js → Overflow-DNGM4vCD.js} +1 -1
- package/src/assets/web-panel/assets/{OverrideContext-Nubhv68k.js → OverrideContext-DSwW21YS.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BjgamPxI.js → P2P-9DlPC_rr.js} +2 -2
- package/src/assets/web-panel/assets/{Permissions-uwoi4HnY.js → Permissions-BVJwnBDW.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-C2aHcq6n.js → Pipeline-lWCcdQ9k.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-lU34k_c5.js → Privacy-BN60IEMG.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectSettings-Dy-Iie9L.js → ProjectSettings-GJoyBlLy.js} +1 -1
- package/src/assets/web-panel/assets/{Projects-B4Vt0iiH.js → Projects-Dvs_UqGv.js} +2 -2
- package/src/assets/web-panel/assets/{Providers-Cu9uRsVk.js → Providers-A5KukRrJ.js} +2 -2
- package/src/assets/web-panel/assets/QuickAsk-D4K2pIHJ.js +1 -0
- package/src/assets/web-panel/assets/{Recommend-DJ9nU8HM.js → Recommend-DQKR520B.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-ThffxFwr.js → Reputation-BVntfhQV.js} +1 -1
- package/src/assets/web-panel/assets/Row-Do4ULXpm.js +1 -0
- package/src/assets/web-panel/assets/{RssFeed-DaxFEUe6.js → RssFeed-FAHzJo-E.js} +3 -3
- package/src/assets/web-panel/assets/{Search-4zVFnx_Y.js → Search-DsOTkKd1.js} +1 -1
- package/src/assets/web-panel/assets/{Security-BEfSoaTM.js → Security-hglxmoVZ.js} +3 -3
- package/src/assets/web-panel/assets/{Services-DTAaoYJC.js → Services-C6Rv4i8z.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-CIZErmoY.js → Skeleton-D-dXFspp.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CacIwBCt.js → Skills-D6sVDuOT.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-Si0g7a0u.js → Sla-8O-JYjQq.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-H19DqdAG.js → SpeechSettings-DSOYsk6R.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-bsC4-4rU.js → SyncSettings-C5nhT_6b.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-Bxlj8OVW.js → Tasks-NrpJCUFD.js} +1 -1
- package/src/assets/web-panel/assets/Templates-Ca2HO-Ff.js +1 -0
- package/src/assets/web-panel/assets/Tenant-BWXC1pLX.js +1 -0
- package/src/assets/web-panel/assets/{Tokens-B2wJjOdI.js → Tokens-DUtMwWxZ.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DU9-3gN9.js → Trigger-TyynxipZ.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-_yan18qg.js → Trust-b4KDouFb.js} +1 -1
- package/src/assets/web-panel/assets/UkeySign-CJpVhu8c.js +1 -0
- package/src/assets/web-panel/assets/{VideoEditing-CUgere5i.js → VideoEditing-Bpn0V8T2.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DSnzYVqY.js → Wallet-CzBLjCnl.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-De4aHZ87.js → WebAuthn-HnRCEu5Q.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-C-QNGwia.js → WorkflowEditor-CMWDod4n.js} +1 -1
- package/src/assets/web-panel/assets/{_getTag-CWA3v-Ds.js → _getTag-BVc6NQ_K.js} +1 -1
- package/src/assets/web-panel/assets/chat-D7QE42qx.js +1 -0
- package/src/assets/web-panel/assets/{collapseMotion-BIjDVXtT.js → collapseMotion-6-_FbiKl.js} +1 -1
- package/src/assets/web-panel/assets/{colors-CHuBSydj.js → colors-BO5nQJrH.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DtCmGKIm.js → compact-item-By0t_ZDX.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-Cetup5Fb.js → createContext-CHZw2WQy.js} +1 -1
- package/src/assets/web-panel/assets/{debounce-Q0BOJsYd.js → debounce-D9xTw4Sx.js} +1 -1
- package/src/assets/web-panel/assets/{echarts-DmBLM6YO.js → echarts-BrEnqXDv.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-Q509tIlQ.js → hasIn-CHScXGSD.js} +1 -1
- package/src/assets/web-panel/assets/icons-B2G69bhT.js +57 -0
- package/src/assets/web-panel/assets/{index-Bjz1Y3Gs.js → index-B-VML4Pz.js} +1 -1
- package/src/assets/web-panel/assets/index-B6FaCH6K.js +55 -0
- package/src/assets/web-panel/assets/{index-DKWvx42k.js → index-BCoEssNV.js} +1 -1
- package/src/assets/web-panel/assets/index-BFMpMM1y.js +21 -0
- package/src/assets/web-panel/assets/index-BIoymtmG.js +1 -0
- package/src/assets/web-panel/assets/{index-C2y5MxfU.js → index-BVL4FbJ3.js} +2 -2
- package/src/assets/web-panel/assets/{index-BmHsGJ8F.js → index-BXXqtwrw.js} +1 -1
- package/src/assets/web-panel/assets/index-BY-BnqWj.js +12 -0
- package/src/assets/web-panel/assets/{index-BvAwpPN9.js → index-Bbf4Smm-.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ctdt2gEP.js → index-BdOG1g8i.js} +1 -1
- package/src/assets/web-panel/assets/{index-R5D_-l07.js → index-BgAPyeU5.js} +1 -1
- package/src/assets/web-panel/assets/{index-B2f4ltyM.js → index-Bn_0bupT.js} +19 -15
- package/src/assets/web-panel/assets/index-BnaKc6VJ.js +1 -0
- package/src/assets/web-panel/assets/index-BqMhh2pY.js +1 -0
- package/src/assets/web-panel/assets/{index-B5d7Dkyp.js → index-BuzilAPw.js} +2 -2
- package/src/assets/web-panel/assets/{index-Dq6E-pj8.js → index-By3TOq5w.js} +1 -1
- package/src/assets/web-panel/assets/index-C1ssAFdz.js +1 -0
- package/src/assets/web-panel/assets/{index-CeXoNBLu.js → index-CAPiTJT4.js} +2 -2
- package/src/assets/web-panel/assets/{index-nfLO3XrF.js → index-CCOGrBpN.js} +1 -1
- package/src/assets/web-panel/assets/index-COVlQxSz.js +7 -0
- package/src/assets/web-panel/assets/{index-DVQSXYwb.js → index-CYCwDDoS.js} +1 -1
- package/src/assets/web-panel/assets/{index-C8agLSzC.js → index-C_EIwaP7.js} +3 -3
- package/src/assets/web-panel/assets/{index-7kdZ5ox5.js → index-CfZqQ0JR.js} +3 -3
- package/src/assets/web-panel/assets/{index-C7baQwUM.js → index-CpHzrw8g.js} +1 -1
- package/src/assets/web-panel/assets/index-CszhN_r3.js +1 -0
- package/src/assets/web-panel/assets/{index-CRZ8WjUK.js → index-Czk89HQF.js} +1 -1
- package/src/assets/web-panel/assets/{index-DaMTgJkE.js → index-D3WrGn-J.js} +2 -2
- package/src/assets/web-panel/assets/index-DS0o68gc.js +3 -0
- package/src/assets/web-panel/assets/{index-SR2lFA_W.js → index-DZ4t_1f-.js} +2 -2
- package/src/assets/web-panel/assets/{index-hSpRlh93.js → index-D_QlAaj5.js} +1 -1
- package/src/assets/web-panel/assets/index-DgWJBqLh.js +13 -0
- package/src/assets/web-panel/assets/{index-HqJ94PSG.js → index-DiHryOr_.js} +2 -2
- package/src/assets/web-panel/assets/index-DqPwMq7i.js +1 -0
- package/src/assets/web-panel/assets/{index-BTwIwesN.js → index-Qm6Kn3iq.js} +1 -1
- package/src/assets/web-panel/assets/index-U1O0AXXH.js +1 -0
- package/src/assets/web-panel/assets/index-jRQNL6Yj.js +12 -0
- package/src/assets/web-panel/assets/index-sgVQrC2c.js +1 -0
- package/src/assets/web-panel/assets/{index-C61WQXE3.js → index-yLdzB8i-.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-D7iOaKOY.js → initDefaultProps-CMFUJGsa.js} +1 -1
- package/src/assets/web-panel/assets/{isPlainObject-DSTnI585.js → isPlainObject-_gz-soRW.js} +1 -1
- package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +1 -0
- package/src/assets/web-panel/assets/{motion-CvCFk7sy.js → motion-CTtMugIF.js} +2 -2
- package/src/assets/web-panel/assets/{move-BVj5YZrV.js → move-DHjaLqhq.js} +1 -1
- package/src/assets/web-panel/assets/mtc-parser-Cc3pB9Xm.js +1 -0
- package/src/assets/web-panel/assets/{omit-N_JDguMt.js → omit-COm0v71g.js} +1 -1
- package/src/assets/web-panel/assets/operationUnit-vCu2co3e.js +1 -0
- package/src/assets/web-panel/assets/{pickAttrs-BWcuLN5j.js → pickAttrs-C3Ftf-sl.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow--1l0FzZx.js → placementArrow-IJhTwCmF.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CGX6EYRt.js → responsiveObserve-Cmu2mrKT.js} +1 -1
- package/src/assets/web-panel/assets/{slide-B3hJzlWm.js → slide-CnWCDeu_.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-BJuExZuw.js → statusUtils-CSOJeZ-L.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-pshnIK0r.js → styleChecker-94VBD7Xs.js} +1 -1
- package/src/assets/web-panel/assets/useFlexGapSupport-CBjbWuc9.js +1 -0
- package/src/assets/web-panel/assets/{useFs-BW1piLQM.js → useFs-DfXp51Mk.js} +1 -1
- package/src/assets/web-panel/assets/{useMergedState-TP9VIF2K.js → useMergedState-n0f81Aew.js} +1 -1
- package/src/assets/web-panel/assets/{useRefs-BhIz_lC3.js → useRefs-CTh0C9xI.js} +1 -1
- package/src/assets/web-panel/assets/{useState-CpKsyozn.js → useState-4T1Ntfpx.js} +1 -1
- package/src/assets/web-panel/assets/{vendor-B6ToihkA.js → vendor-Ci2pTZ_t.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-D98L6HI1.js → vnode-CGY3YRLi.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DnmMtXgZ.js → zoom-CZllDiMO.js} +1 -1
- package/src/assets/web-panel/index.html +3 -3
- package/src/commands/mtc.js +2 -0
- package/src/gateways/ws/chat-intent-protocol.js +192 -0
- package/src/gateways/ws/message-dispatcher.js +6 -0
- package/src/gateways/ws/ws-server.js +20 -0
- package/src/lib/chat-intent-service.js +530 -0
- package/src/assets/web-panel/assets/AppLayout-CtGprHSx.css +0 -1
- package/src/assets/web-panel/assets/AppLayout-lM1Y2Wgo.js +0 -1
- package/src/assets/web-panel/assets/Backup-G6AQe6k8.js +0 -1
- package/src/assets/web-panel/assets/BaseInput-tUASXi57.js +0 -1
- package/src/assets/web-panel/assets/Chat-B46MHHAs.js +0 -2
- package/src/assets/web-panel/assets/Chat-ByiYUboW.css +0 -1
- package/src/assets/web-panel/assets/Community-CB4KQIpB.js +0 -1
- package/src/assets/web-panel/assets/Dashboard-D3QHFHex.js +0 -3
- package/src/assets/web-panel/assets/KnowledgeGraph-DFrr-B78.js +0 -1
- package/src/assets/web-panel/assets/Mtc-60jSuMAz.js +0 -6
- package/src/assets/web-panel/assets/Mtc-Cc8OJxe_.css +0 -1
- package/src/assets/web-panel/assets/Notes-C0zhC6_B.js +0 -7
- package/src/assets/web-panel/assets/Notes-DKkPfXlY.css +0 -1
- package/src/assets/web-panel/assets/QuickAsk-BE29MB0d.js +0 -1
- package/src/assets/web-panel/assets/Row-CqBtO8lC.js +0 -1
- package/src/assets/web-panel/assets/Templates-B9YsJQcb.js +0 -1
- package/src/assets/web-panel/assets/Tenant-D4YncKb7.js +0 -1
- package/src/assets/web-panel/assets/UkeySign-CZ7Xrq96.js +0 -1
- package/src/assets/web-panel/assets/chat-DFt6UJUS.js +0 -1
- package/src/assets/web-panel/assets/icons-zXb7lDZs.js +0 -57
- package/src/assets/web-panel/assets/index-0KFwdHZg.js +0 -1
- package/src/assets/web-panel/assets/index-BDK2Fkgd.js +0 -13
- package/src/assets/web-panel/assets/index-BJFH7IlV.js +0 -21
- package/src/assets/web-panel/assets/index-BlPG_vWg.js +0 -55
- package/src/assets/web-panel/assets/index-CJjwnpac.js +0 -1
- package/src/assets/web-panel/assets/index-CX7WO0g5.js +0 -12
- package/src/assets/web-panel/assets/index-CbQ3AZcJ.js +0 -3
- package/src/assets/web-panel/assets/index-Cxk-8scO.js +0 -1
- package/src/assets/web-panel/assets/index-D0oJF6nX.js +0 -7
- package/src/assets/web-panel/assets/index-D7Smgwky.js +0 -1
- package/src/assets/web-panel/assets/index-DGAGIqDR.js +0 -1
- package/src/assets/web-panel/assets/index-Dd68wDHG.js +0 -12
- package/src/assets/web-panel/assets/index-Dem-mhfD.js +0 -1
- package/src/assets/web-panel/assets/index-DuQfQVBe.js +0 -1
- package/src/assets/web-panel/assets/index-jfzI94IT.js +0 -1
- package/src/assets/web-panel/assets/isSymbol-CsP9Ob42.js +0 -1
- package/src/assets/web-panel/assets/mtc-parser-pGMSt10g.js +0 -1
- package/src/assets/web-panel/assets/useFlexGapSupport-3FQZdpBd.js +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{L as t,M as n,R as s,Q as x,u as r,P as l,S as _,Y as j,f as g,w as K,o as V,c,N as y,F as M,_ as z,a0 as G,a1 as H,K as N,r as P,O as $,a as J,n as U}from"./vendor-B6ToihkA.js";import{_ as L,b as Y}from"./index-B2f4ltyM.js";import{u as W}from"./chat-DFt6UJUS.js";import{a as X,L as Z,u as ee,ab as te,ac as oe,F as ne,G as se,M as ae,a8 as le,ad as ie}from"./icons-zXb7lDZs.js";import{r as re}from"./markdown-vYH_ziAO.js";import"./markdown-xjUYbPSW.js";const de=["data-testid"],ce={class:"cb-action__icon"},ue={class:"cb-action__label"},pe={key:0,class:"cb-action__detail"},ve={key:1,class:"cb-action__caret"},ye={__name:"ToolInvocationCard",props:{item:{type:Object,required:!0},expandable:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1}},emits:["toggle"],setup(d,{emit:v}){const f=d,C=v;function i(){f.expandable&&C("toggle")}return(m,b)=>(t(),n("div",{class:j(["cb-action",[`cb-action--${d.item.status}`,{"cb-action--expandable":d.expandable,"cb-action--open":d.expanded}]]),"data-testid":`tool-card-${d.item.id}`,onClick:i},[s("span",ce,[d.item.status==="done"?(t(),x(r(X),{key:0})):d.item.status==="running"?(t(),x(r(Z),{key:1})):(t(),x(r(ee),{key:2}))]),s("span",ue,l(d.item.label),1),d.item.detail?(t(),n("span",pe,l(d.item.detail),1)):_("",!0),d.expandable?(t(),n("span",ve,[d.expanded?(t(),x(r(te),{key:0})):(t(),x(r(oe),{key:1}))])):_("",!0)],10,de))}},_e=L(ye,[["__scopeId","data-v-cf5a0925"]]),fe=["innerHTML"],he={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(d){const v=d,f=g(()=>re(v.content||""));return(C,i)=>(t(),n("div",{class:"markdown-content",innerHTML:f.value},null,8,fe))}},Q=L(he,[["__scopeId","data-v-693ca57e"]]),ge={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},xe={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},be={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},me=["title"],ke={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},we={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},$e={style:{flex:"1","overflow-y":"auto",padding:"8px"}},Ce=["onClick"],Se={class:"session-icon"},Oe={class:"session-info"},Te={class:"session-title"},Ie={class:"session-meta"},Me={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},ze={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},Ne={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},je={style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},Le={style:{"font-size":"13px",color:"var(--text-muted)"}},Re={style:{"margin-top":"24px",display:"flex",gap:"12px"}},Be={key:0,class:"tool-msg"},Fe={key:0,class:"tool-detail"},Pe={class:"tool-detail__pre tool-detail__pre--input"},Qe={key:0,class:"tool-detail__result"},qe={class:"tool-detail__pre tool-detail__pre--result"},Ae={key:1,class:"user-msg"},De={class:"bubble user"},Ee={key:2,class:"assistant-msg"},Ke={key:0,class:"assistant-msg"},Ve={key:1,class:"question-card"},Ge={class:"question-text"},He={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Je={key:2,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},Ue={style:{display:"flex",gap:"8px","align-items":"flex-end"}},Ye={__name:"Chat",setup(d){const{t:v}=Y(),f=window.__CC_CONFIG__||{},C=g(()=>f.mode==="project"),i=W(),m=P(null),b=P(""),u=g(()=>i.currentSessionId),R=g(()=>u.value?i.getMessages(u.value):[]),I=g(()=>{const e=i.streaming[u.value];return e?.active?e.content:null}),S=g(()=>i.pendingQuestion[u.value]),O=g(()=>i.getIsLoading(u.value)),k=J(new Set);function q(e){k.has(e)?k.delete(e):k.add(e)}function A(e,a){return{id:`tool-${a}`,label:e.tool||v("chat.tool.unknownTool"),detail:D(e),status:e.status==="done"?"done":"running"}}function D(e){if(e.status==="running"){const w=e.input&&typeof e.input=="object"?Object.keys(e.input):[];return w.length?v("chat.tool.argsPreview",{n:w.length,key:w[0]}):v("chat.tool.running")}if(e.result==null)return v("chat.tool.done");const p=(typeof e.result=="string"?e.result:JSON.stringify(e.result)).split(`
|
|
2
|
-
`)[0]||"";return p.length>48?`${p.slice(0,48)}…`:p||v("chat.tool.done")}async function T(e){await i.createSession(e)}async function B(){if(!b.value.trim()||O.value||!u.value)return;const e=b.value;b.value="",await i.sendMessage(u.value,e)}function F(e){i.answerQuestion(u.value,e)}return K([R,I],()=>{U(()=>{m.value&&(m.value.scrollTop=m.value.scrollHeight)})},{deep:!0}),V(()=>{i.loadSessions()}),(e,a)=>{const p=N("a-button"),w=N("a-input-search"),E=N("a-textarea");return t(),n("div",ge,[s("div",xe,[C.value?(t(),n("div",be,[c(r(ne)),s("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:r(f).projectRoot},l(r(f).projectName||e.$t("chat.scope.fallbackProjectName")),9,me)])):(t(),n("div",ke,[c(r(se)),s("span",null,l(e.$t("chat.scope.globalSessions")),1)])),s("div",we,[c(p,{type:"primary",size:"small",style:{flex:"1"},onClick:a[0]||(a[0]=o=>T("chat"))},{icon:y(()=>[c(r(ae))]),default:y(()=>[$(" "+l(e.$t("chat.newChat")),1)]),_:1}),c(p,{size:"small",style:{flex:"1"},onClick:a[1]||(a[1]=o=>T("agent"))},{icon:y(()=>[c(r(le))]),default:y(()=>[$(" "+l(e.$t("chat.newAgent")),1)]),_:1})]),s("div",$e,[(t(!0),n(M,null,z(r(i).sessions,o=>(t(),n("div",{key:o.id,class:j(["session-item",{active:o.id===r(i).currentSessionId}]),onClick:h=>r(i).switchSession(o.id)},[s("span",Se,l(o.type==="agent"?"🤖":"💬"),1),s("div",Oe,[s("div",Te,l(o.title||e.$t("chat.session.untitled")),1),s("div",Ie,l(e.$t("chat.session.messageCountSuffix",{n:o.messageCount||0})),1)])],10,Ce))),128)),r(i).sessions.length?_("",!0):(t(),n("div",Me,l(e.$t("chat.sidebarEmpty")),1))])]),s("div",ze,[u.value?(t(),n("div",{key:1,style:{flex:"1","overflow-y":"auto",padding:"20px"},ref_key:"messagesEl",ref:m},[(t(!0),n(M,null,z(R.value,(o,h)=>(t(),n("div",{key:h,class:j(["message-row",o.role])},[o.role==="tool"?(t(),n("div",Be,[c(_e,{item:A(o,h),expandable:"",expanded:k.has(h),onToggle:We=>q(h)},null,8,["item","expanded","onToggle"]),k.has(h)?(t(),n("div",Fe,[s("pre",Pe,l(JSON.stringify(o.input,null,2)),1),o.result?(t(),n("div",Qe,[s("pre",qe,l(typeof o.result=="string"?o.result:JSON.stringify(o.result,null,2)),1)])):_("",!0)])):_("",!0)])):o.role==="user"?(t(),n("div",Ae,[s("div",De,l(o.content),1)])):(t(),n("div",Ee,[a[6]||(a[6]=s("div",{class:"avatar"},"AI",-1)),c(Q,{class:"bubble assistant",content:o.content},null,8,["content"])]))],2))),128)),I.value?(t(),n("div",Ke,[a[7]||(a[7]=s("div",{class:"avatar"},"AI",-1)),c(Q,{class:"bubble assistant streaming",content:I.value},null,8,["content"])])):_("",!0),S.value?(t(),n("div",Ve,[s("div",Ge,l(S.value.question),1),S.value.choices?.length?(t(),n("div",He,[(t(!0),n(M,null,z(S.value.choices,o=>(t(),x(p,{key:o,size:"small",onClick:h=>F(o)},{default:y(()=>[$(l(o),1)]),_:2},1032,["onClick"]))),128))])):(t(),x(w,{key:1,placeholder:e.$t("chat.input.answerPlaceholder"),"enter-button":e.$t("chat.input.send"),style:{"margin-top":"10px"},onSearch:F},null,8,["placeholder","enter-button"]))])):_("",!0)],512)):(t(),n("div",Ne,[a[5]||(a[5]=s("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),s("div",je,l(e.$t("chat.empty.title")),1),s("div",Le,l(e.$t("chat.empty.subtitle")),1),s("div",Re,[c(p,{type:"primary",onClick:a[2]||(a[2]=o=>T("chat"))},{default:y(()=>[$(l(e.$t("chat.empty.newChat")),1)]),_:1}),c(p,{style:{},onClick:a[3]||(a[3]=o=>T("agent"))},{default:y(()=>[$(l(e.$t("chat.empty.newAgent")),1)]),_:1})])])),u.value?(t(),n("div",Je,[s("div",Ue,[c(E,{value:b.value,"onUpdate:value":a[4]||(a[4]=o=>b.value=o),placeholder:O.value?e.$t("chat.input.loading"):e.$t("chat.input.placeholder"),"auto-size":{minRows:1,maxRows:6},disabled:O.value,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:G(H(B,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),c(p,{type:"primary",loading:O.value,onClick:B,style:{height:"40px"}},{icon:y(()=>[c(r(ie))]),_:1},8,["loading"])])])):_("",!0)])])}}},st=L(Ye,[["__scopeId","data-v-d80d2edb"]]);export{st as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.cb-action[data-v-cf5a0925]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;background:var(--bg-card-hover);border:1px solid var(--border-color);color:var(--text-secondary);-webkit-user-select:none;user-select:none}.cb-action--expandable[data-v-cf5a0925]{cursor:pointer;transition:border-color .15s ease}.cb-action--expandable[data-v-cf5a0925]:hover{border-color:#1677ff40}.cb-action--open[data-v-cf5a0925]{border-color:#1677ff60}.cb-action__icon[data-v-cf5a0925]{display:inline-flex;align-items:center;justify-content:center;color:#52c41a;font-size:14px}.cb-action--running .cb-action__icon[data-v-cf5a0925]{color:#1677ff}.cb-action--pending .cb-action__icon[data-v-cf5a0925]{color:var(--text-muted)}.cb-action__label[data-v-cf5a0925]{font-weight:600;color:var(--text-primary);font-size:13px}.cb-action__detail[data-v-cf5a0925]{margin-left:auto;font-size:12px;color:var(--text-secondary);max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cb-action__caret[data-v-cf5a0925]{margin-left:6px;color:var(--text-muted);font-size:10px}.cb-action--open .cb-action__caret[data-v-cf5a0925]{color:#1677ff}.markdown-content[data-v-693ca57e] pre{background:var(--bg-base);border-radius:6px;padding:12px;overflow-x:auto;font-size:12px}.markdown-content[data-v-693ca57e] code:not(pre code){background:var(--bg-card-hover);padding:1px 5px;border-radius:3px;font-size:12px;color:#f0a500}.markdown-content[data-v-693ca57e] p{margin:0 0 8px}.markdown-content[data-v-693ca57e] p:last-child{margin:0}.markdown-content[data-v-693ca57e] table{border-collapse:collapse;width:100%;font-size:13px}.markdown-content[data-v-693ca57e] th,.markdown-content[data-v-693ca57e] td{border:1px solid #333;padding:6px 12px}.markdown-content[data-v-693ca57e] th{background:var(--bg-card-hover)}.session-item[data-v-d80d2edb]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer;transition:background .15s;margin-bottom:4px}.session-item[data-v-d80d2edb]:hover{background:var(--bg-card-hover)}.session-item.active[data-v-d80d2edb]{background:#1677ff20;border:1px solid #1677ff40}.session-icon[data-v-d80d2edb]{font-size:16px}.session-info[data-v-d80d2edb]{flex:1;min-width:0}.session-title[data-v-d80d2edb]{color:#ccc;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-meta[data-v-d80d2edb]{color:var(--text-muted);font-size:11px;margin-top:2px}.message-row[data-v-d80d2edb]{margin-bottom:16px}.user-msg[data-v-d80d2edb]{display:flex;justify-content:flex-end}.assistant-msg[data-v-d80d2edb]{display:flex;gap:10px;align-items:flex-start}.avatar[data-v-d80d2edb]{width:32px;height:32px;border-radius:50%;background:#1677ff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--text-primary);flex-shrink:0}.bubble[data-v-d80d2edb]{padding:10px 14px;border-radius:12px;max-width:80%;line-height:1.6;font-size:14px}.bubble.user[data-v-d80d2edb]{background:#1677ff;color:var(--text-primary);border-bottom-right-radius:4px}.bubble.assistant[data-v-d80d2edb]{background:var(--bg-card-hover);color:var(--text-primary);border-bottom-left-radius:4px}.bubble.streaming[data-v-d80d2edb]:after{content:"▋";animation:blink-d80d2edb .7s step-start infinite;color:#1677ff}@keyframes blink-d80d2edb{50%{opacity:0}}.tool-msg[data-v-d80d2edb]{margin:8px 0}.tool-detail[data-v-d80d2edb]{margin-top:6px;padding:10px 12px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-base)}.tool-detail__result[data-v-d80d2edb]{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-color)}.tool-detail__pre[data-v-d80d2edb]{margin:0;font-size:11px;white-space:pre-wrap;word-break:break-all}.tool-detail__pre--input[data-v-d80d2edb]{color:#aaa}.tool-detail__pre--result[data-v-d80d2edb]{color:#52c41a}.question-card[data-v-d80d2edb]{background:var(--bg-card-hover);border:1px solid #1677ff40;border-radius:10px;padding:14px 16px;margin-top:8px}.question-text[data-v-d80d2edb]{color:#aaa;font-size:13px}[data-v-d80d2edb] .bubble.assistant pre{background:var(--bg-base);border-radius:6px;padding:12px;overflow-x:auto;font-size:12px}[data-v-d80d2edb] .bubble.assistant code:not(pre code){background:var(--bg-card-hover);padding:1px 5px;border-radius:3px;font-size:12px;color:#f0a500}[data-v-d80d2edb] .bubble.assistant p{margin:0 0 8px}[data-v-d80d2edb] .bubble.assistant p:last-child{margin:0}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as Ct,b as wt,u as Ft,d}from"./index-B2f4ltyM.js";import{S as zt,p as Ot,a as Rt,b as St,c as Tt}from"./community-parser-CO25nZFt.js";import{R as $t,aC as At,aw as It,Z as Y,aD as tt,k as et,M as Ut,aE as Lt,aF as Nt}from"./icons-zXb7lDZs.js";import{r as g,o as Pt,M as y,R as v,P as i,u as o,c as a,N as n,K as p,L as r,O as f,F as S,_ as qt,Q as T,$ as Bt,S as k,f as L,a as at}from"./vendor-B6ToihkA.js";const jt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Mt={class:"page-title"},Dt={class:"page-sub"},Et={key:0,style:{"text-align":"center",padding:"60px"}},Kt={key:1,style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}},Vt={key:2,class:"post-feed"},Ht={class:"post-head"},Qt={class:"post-meta"},Wt={class:"post-author"},Zt={class:"post-time"},Gt={class:"post-body"},Jt={style:{color:"var(--text-primary)","font-weight":"500"}},Xt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Yt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},te={key:0,style:{color:"var(--text-primary)","font-weight":"500"}},ee={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},ae={key:1,style:{color:"var(--text-muted)"}},oe={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},ne={key:1,style:{color:"var(--text-muted)"}},se={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},le={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ce={__name:"Community",setup(ie){const{t,locale:ot}=wt(),x=Ft(),z=g(!1),N=g(!1),P=g(!1),q=g(""),F=g({...zt}),B=g([]),j=g([]),$=g([]),M=g("posts"),A=g(!1),I=g(!1),h=at({author:"",content:""}),u=at({name:"",did:"",email:"",notes:""}),nt=L(()=>[{title:t("community.contactColumns.name"),key:"name",dataIndex:"name",width:"160px"},{title:t("community.contactColumns.did"),key:"did",dataIndex:"did"},{title:t("community.contactColumns.email"),key:"email",dataIndex:"email",width:"200px"},{title:t("community.contactColumns.createdAt"),key:"createdAt",dataIndex:"createdAt",width:"160px"},{title:t("community.contactColumns.action"),key:"action",width:"180px"}]),st=L(()=>[{title:t("community.friendColumns.contact"),key:"contact"},{title:t("community.friendColumns.status"),key:"status",width:"120px"},{title:t("community.friendColumns.createdAt"),key:"createdAt",dataIndex:"createdAt",width:"160px"},{title:t("community.friendColumns.action"),key:"action",width:"100px"}]),lt=L(()=>j.value.map(s=>{const e=B.value.find(c=>c.id===s.contactId);return{...s,contactName:e?e.name:""}})),ct=L(()=>new Set(j.value.map(s=>s.contactId)));function it(s){return ct.value.has(s)}function rt(s){const e=["#1677ff","#52c41a","#722ed1","#faad14","#ff4d4f","#13c2c2","#eb2f96"];let c=0;for(let b=0;b<s.length;b++)c=c*31+s.charCodeAt(b)>>>0;return e[c%e.length]}function ut(s){return s?s.length>28?s.slice(0,16)+"..."+s.slice(-8):s:""}function E(s){if(!s)return"—";if(typeof s!="string")return String(s);const e=new Date(s);if(isNaN(e.getTime()))return s;const c=ot.value==="zh-CN"?"zh-CN":"en-US";return e.toLocaleString(c,{hour12:!1})}function mt(s){return{accepted:"green",pending:"orange",blocked:"red"}[s]||"default"}function dt(s){const e=`community.status.${s}`,c=t(e);return c===e?s:c}async function C(){z.value=!0;try{const[s,e,c,b]=await Promise.all([x.execute("social stats --json",1e4).catch(()=>({output:""})),x.execute("social contact list --json",1e4).catch(()=>({output:""})),x.execute("social friend list --json",1e4).catch(()=>({output:""})),x.execute("social post list --json",1e4).catch(()=>({output:""}))]);F.value=Ot(s.output),B.value=Rt(e.output),j.value=St(c.output),$.value=Tt(b.output).sort((_,w)=>(w.createdAt||"").localeCompare(_.createdAt||""))}catch(s){d.error(t("community.messages.loadFailed",{err:s?.message||s}))}finally{z.value=!1}}async function pt(){const s=h.content.trim();if(!s){d.warning(t("community.messages.contentRequired"));return}N.value=!0;try{const e=s.replace(/"/g,'\\"'),c=h.author.trim(),b=c?`social post publish "${e}" --author "${c.replace(/"/g,'\\"')}"`:`social post publish "${e}"`,{output:_}=await x.execute(b,15e3);if(/error|失败/i.test(_)&&!/"id"/.test(_)){d.error(t("community.messages.publishFailed",{err:_.slice(0,120)}));return}d.success(t("community.messages.publishOk")),A.value=!1,K(),await C()}catch(e){d.error(t("community.messages.publishFailed",{err:e?.message||e}))}finally{N.value=!1}}async function yt(){const s=u.name.trim();if(!s){d.warning(t("community.messages.nameRequired"));return}P.value=!0;try{const e=[`social contact add "${s.replace(/"/g,'\\"')}"`];u.did.trim()&&e.push(`--did "${u.did.trim().replace(/"/g,'\\"')}"`),u.email.trim()&&e.push(`--email "${u.email.trim().replace(/"/g,'\\"')}"`),u.notes.trim()&&e.push(`--notes "${u.notes.trim().replace(/"/g,'\\"')}"`);const{output:c}=await x.execute(e.join(" "),15e3);if(/error|失败/i.test(c)&&!/"id"/.test(c)){d.error(t("community.messages.addFailed",{err:c.slice(0,120)}));return}d.success(t("community.messages.addOk")),I.value=!1,V(),await C()}catch(e){d.error(t("community.messages.addFailed",{err:e?.message||e}))}finally{P.value=!1}}async function ft(s){try{const{output:e}=await x.execute(`social contact delete ${s.id}`,1e4);if(/error|失败/i.test(e)){d.error(t("community.messages.deleteFailed",{err:e.slice(0,120)}));return}d.success(t("community.messages.deleteOk")),await C()}catch(e){d.error(t("community.messages.deleteFailed",{err:e?.message||e}))}}async function vt(s){q.value=s.id;try{const{output:e}=await x.execute(`social friend add ${s.id}`,1e4);if(/error|失败/i.test(e)&&!/"id"/.test(e)){d.error(t("community.messages.friendRequestFailed",{err:e.slice(0,120)}));return}d.success(t("community.messages.friendRequestOk")),await C(),M.value="friends"}catch(e){d.error(t("community.messages.friendRequestFailed",{err:e?.message||e}))}finally{q.value=""}}async function _t(s){try{const{output:e}=await x.execute(`social friend remove ${s.contactId}`,1e4);if(/error|失败/i.test(e)){d.error(t("community.messages.removeFailed",{err:e.slice(0,120)}));return}d.success(t("community.messages.removeOk")),await C()}catch(e){d.error(t("community.messages.removeFailed",{err:e?.message||e}))}}async function gt(s){try{await x.execute(`social post like ${s.id}`,1e4),s.likes++,C()}catch(e){d.error(t("community.messages.likeFailed",{err:e?.message||e}))}}function K(){h.author="",h.content=""}function V(){u.name="",u.did="",u.email="",u.notes=""}return Pt(C),(s,e)=>{const c=p("a-button"),b=p("a-space"),_=p("a-statistic"),w=p("a-card"),R=p("a-col"),xt=p("a-row"),bt=p("a-spin"),kt=p("a-avatar"),D=p("a-tab-pane"),H=p("a-tag"),Q=p("a-popconfirm"),W=p("a-table"),ht=p("a-tabs"),U=p("a-input"),O=p("a-form-item"),Z=p("a-textarea"),G=p("a-form"),J=p("a-modal");return r(),y("div",null,[v("div",jt,[v("div",null,[v("h2",Mt,i(o(t)("community.title")),1),v("p",Dt,i(o(t)("community.subtitle")),1)]),a(b,null,{default:n(()=>[a(c,{loading:z.value,onClick:C},{icon:n(()=>[a(o($t))]),default:n(()=>[f(" "+i(o(t)("community.refresh")),1)]),_:1},8,["loading"]),a(c,{type:"primary",onClick:e[0]||(e[0]=l=>A.value=!0)},{icon:n(()=>[a(o(At))]),default:n(()=>[f(" "+i(o(t)("community.publishButton")),1)]),_:1}),a(c,{onClick:e[1]||(e[1]=l=>I.value=!0)},{icon:n(()=>[a(o(It))]),default:n(()=>[f(" "+i(o(t)("community.addContactButton")),1)]),_:1})]),_:1})]),a(xt,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[a(R,{xs:12,sm:8,lg:5},{default:n(()=>[a(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(_,{title:o(t)("community.stats.contacts"),value:F.value.contacts,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[a(o(Y))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(R,{xs:12,sm:8,lg:5},{default:n(()=>[a(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(_,{title:o(t)("community.stats.friends"),value:F.value.friends,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[a(o(tt))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(R,{xs:12,sm:8,lg:5},{default:n(()=>[a(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(_,{title:o(t)("community.stats.posts"),value:F.value.posts,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[a(o(et))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(R,{xs:12,sm:8,lg:5},{default:n(()=>[a(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(_,{title:o(t)("community.stats.messages"),value:F.value.messages,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:n(()=>[a(o(Ut))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(R,{xs:24,sm:8,lg:4},{default:n(()=>[a(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(_,{title:o(t)("community.stats.pendingRequests"),value:F.value.pendingRequests,"value-style":{color:F.value.pendingRequests>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:n(()=>[a(o(Lt))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),a(ht,{activeKey:M.value,"onUpdate:activeKey":e[2]||(e[2]=l=>M.value=l),class:"community-tabs"},{default:n(()=>[a(D,{key:"posts",tab:o(t)("community.tabs.posts")},{default:n(()=>[z.value&&!$.value.length?(r(),y("div",Et,[a(bt,{size:"large"})])):$.value.length?(r(),y("div",Vt,[(r(!0),y(S,null,qt($.value,l=>(r(),T(w,{key:l.key,class:"post-card","body-style":{padding:"16px"}},{default:n(()=>[v("div",Ht,[a(kt,{style:Bt({backgroundColor:rt(l.author)})},{default:n(()=>[f(i(l.author.slice(0,1).toUpperCase()),1)]),_:2},1032,["style"]),v("div",Qt,[v("div",Wt,i(l.author),1),v("div",Zt,i(E(l.createdAt)),1)]),a(c,{size:"small",type:"text",onClick:m=>gt(l)},{icon:n(()=>[a(o(Nt))]),default:n(()=>[f(" "+i(l.likes),1)]),_:2},1032,["onClick"])]),v("div",Gt,i(l.content),1)]),_:2},1024))),128))])):(r(),y("div",Kt,[a(o(et),{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),f(" "+i(o(t)("community.posts.emptyText")),1)]))]),_:1},8,["tab"]),a(D,{key:"friends",tab:o(t)("community.tabs.friends")},{default:n(()=>[a(W,{columns:st.value,"data-source":lt.value,pagination:{pageSize:20,showTotal:l=>o(t)("community.totals.rows",{count:l})},size:"small",loading:z.value,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:l,record:m})=>[l.key==="contact"?(r(),y(S,{key:0},[v("span",Jt,i(m.contactName||m.contactId),1),m.contactName?(r(),y("div",Xt,i(m.contactId),1)):k("",!0)],64)):k("",!0),l.key==="status"?(r(),T(H,{key:1,color:mt(m.status)},{default:n(()=>[f(i(dt(m.status)),1)]),_:2},1032,["color"])):k("",!0),l.key==="action"?(r(),T(Q,{key:2,title:o(t)("community.friends.removeConfirm"),"ok-text":o(t)("community.friends.removeOk"),"cancel-text":o(t)("common.cancel"),onConfirm:X=>_t(m)},{default:n(()=>[a(c,{size:"small",type:"link",danger:""},{default:n(()=>[f(i(o(t)("community.friends.remove")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):k("",!0)]),emptyText:n(()=>[v("div",Yt,[a(o(tt),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+i(o(t)("community.friends.emptyText")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(D,{key:"contacts",tab:o(t)("community.tabs.contacts")},{default:n(()=>[a(W,{columns:nt.value,"data-source":B.value,pagination:{pageSize:20,showTotal:l=>o(t)("community.totals.rows",{count:l})},size:"small",loading:z.value,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:l,record:m})=>[l.key==="name"?(r(),y("span",te,i(m.name),1)):k("",!0),l.key==="did"?(r(),y(S,{key:1},[m.did?(r(),y("span",ee,i(ut(m.did)),1)):(r(),y("span",ae,"—"))],64)):k("",!0),l.key==="email"?(r(),y(S,{key:2},[m.email?(r(),y("span",oe,i(m.email),1)):(r(),y("span",ne,"—"))],64)):k("",!0),l.key==="createdAt"?(r(),y("span",se,i(E(m.createdAt)),1)):k("",!0),l.key==="action"?(r(),y(S,{key:4},[it(m.id)?(r(),T(H,{key:1,color:"green",style:{"font-size":"11px"}},{default:n(()=>[f(i(o(t)("community.contacts.alreadyFriend")),1)]),_:1})):(r(),T(c,{key:0,size:"small",type:"link",loading:q.value===m.id,onClick:X=>vt(m)},{default:n(()=>[f(i(o(t)("community.contacts.addFriend")),1)]),_:1},8,["loading","onClick"])),a(Q,{title:o(t)("community.contacts.deleteConfirm"),"ok-text":o(t)("community.contacts.deleteOk"),"cancel-text":o(t)("common.cancel"),onConfirm:X=>ft(m)},{default:n(()=>[a(c,{size:"small",type:"link",danger:"",style:{"margin-left":"4px"}},{default:n(()=>[f(i(o(t)("community.contacts.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):k("",!0)]),emptyText:n(()=>[v("div",le,[a(o(Y),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+i(o(t)("community.contacts.emptyText")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(J,{open:A.value,"onUpdate:open":e[5]||(e[5]=l=>A.value=l),title:o(t)("community.posts.publishTitle"),"confirm-loading":N.value,"ok-text":o(t)("community.posts.publishOk"),"cancel-text":o(t)("common.cancel"),onOk:pt,onCancel:K},{default:n(()=>[a(G,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:n(()=>[a(O,{label:o(t)("community.posts.authorLabel")},{default:n(()=>[a(U,{value:h.author,"onUpdate:value":e[3]||(e[3]=l=>h.author=l),placeholder:o(t)("community.posts.authorPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(O,{label:o(t)("community.posts.contentLabel"),required:""},{default:n(()=>[a(Z,{value:h.content,"onUpdate:value":e[4]||(e[4]=l=>h.content=l),placeholder:o(t)("community.posts.contentPlaceholder"),"auto-size":{minRows:4,maxRows:10},maxlength:2e3,"show-count":""},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(J,{open:I.value,"onUpdate:open":e[10]||(e[10]=l=>I.value=l),title:o(t)("community.contacts.addTitle"),"confirm-loading":P.value,"ok-text":o(t)("community.contacts.addOk"),"cancel-text":o(t)("common.cancel"),onOk:yt,onCancel:V},{default:n(()=>[a(G,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[a(O,{label:o(t)("community.contacts.nameLabel"),required:""},{default:n(()=>[a(U,{value:u.name,"onUpdate:value":e[6]||(e[6]=l=>u.name=l),placeholder:o(t)("community.contacts.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(O,{label:o(t)("community.contacts.didLabel")},{default:n(()=>[a(U,{value:u.did,"onUpdate:value":e[7]||(e[7]=l=>u.did=l),placeholder:o(t)("community.contacts.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(O,{label:o(t)("community.contacts.emailLabel")},{default:n(()=>[a(U,{value:u.email,"onUpdate:value":e[8]||(e[8]=l=>u.email=l),placeholder:o(t)("community.contacts.emailPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(O,{label:o(t)("community.contacts.notesLabel")},{default:n(()=>[a(Z,{value:u.notes,"onUpdate:value":e[9]||(e[9]=l=>u.notes=l),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}}},pe=Ct(ce,[["__scopeId","data-v-a3181cb0"]]);export{pe as default};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{E as ae,r as O,o as oe,x as le,M as p,R as o,P as a,u as d,c as t,N as s,Q as B,S as K,f as C,K as w,I as re,L as i,O as h,$ as Q,F as E,_ as M}from"./vendor-B6ToihkA.js";import{u as V,_ as ne}from"./index-B2f4ltyM.js";import{u as de}from"./chat-DFt6UJUS.js";import{R as ie,F as ue,a8 as J,l as X,M as Y,a7 as ce,a9 as ve,k as Z,aa as me,m as pe}from"./icons-zXb7lDZs.js";function he(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const be=ae("dashboard",()=>{const H=O(!1),N=O(!1),c=O({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),F=O(""),f=O(he()),v=O({windowPreset:"all",provider:"",model:""});let y=null;function q(r=V()){y||(y=r.onRuntimeEvent(m=>{m.type==="compression:summary"?L(m.payload?.summary||{}):m.type==="session:start"?c.value.sessionCount=(c.value.sessionCount||0)+1:m.type==="session:end"&&(c.value.sessionCount=Math.max(0,(c.value.sessionCount||0)-1))}))}function A(){y&&(y(),y=null)}function L(r){f.value={...f.value,...r||{}}}function U(r){return r==="1h"?3600*1e3:r==="24h"?1440*60*1e3:r==="7d"?10080*60*1e3:null}function R(r){c.value.appRunning=r.includes("Desktop app running"),c.value.setupDone=r.includes("Setup completed");const m=r.match(/Edition:\s+(\S+)/i);m&&(c.value.edition=m[1]);const g=r.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(g)c.value.activeLlm=g[1],c.value.activeModel=g[2];else{const $=r.match(/LLM:\s+(\S+)/i);$&&(c.value.activeLlm=$[1])}}async function b(){const r=V();q(r),N.value=!0;const m={type:"compression-stats",windowMs:U(v.value.windowPreset)};v.value.provider&&(m.provider=v.value.provider),v.value.model&&(m.model=v.value.model);try{const g=await r.sendRaw(m,1e4);L(g.summary||{})}catch{}finally{N.value=!1}}async function _(){const r=V();q(r),H.value=!0,c.value.wsStatus=r.status,F.value="";try{const[m,g]=await Promise.allSettled([r.execute("status",15e3),r.listSessions()]);if(m.status==="fulfilled"){const $=m.value.output;F.value=$.split(`
|
|
2
|
-
`).slice(0,20).join(`
|
|
3
|
-
`),R($)}g.status==="fulfilled"&&(c.value.sessionCount=g.value.length),Promise.allSettled([r.execute("skill sources",15e3),r.execute("llm providers",15e3)]).then(([$,D])=>{if($.status==="fulfilled"){const z=$.value.output.match(/(\d+)\s*(?:skills|技能)/i);z&&(c.value.skillCount=parseInt(z[1],10))}if(D.status==="fulfilled"){const I=D.value.output.match(/active[:\s]+(\S+)/i);I&&!c.value.activeLlm&&(c.value.activeLlm=I[1])}}),r.execute("mcp servers",1e4).then(({output:$})=>{const D=($.match(/^[a-z]/gm)||[]).length;c.value.mcpCount=D}).catch(()=>{c.value.mcpCount=0}),await b()}catch{}finally{H.value=!1}}return{loading:H,compressionLoading:N,stats:c,statusLog:F,compression:f,telemetryFilters:v,ensureRuntimeSubscription:q,stopRuntimeSubscription:A,refresh:_,refreshCompression:b,applyCompressionSummary:L,toWindowMs:U}}),fe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"20px"}},ye={class:"page-title"},_e={class:"page-sub"},ge={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},$e={style:{color:"#91caff","font-weight":"600"}},ke={style:{color:"#4a6fa5","font-size":"11px","font-family":"monospace"}},we={class:"stat-header"},Ce={class:"stat-label"},Se={class:"stat-sub"},Re={class:"stat-header"},De={class:"stat-label"},ze={class:"stat-value",style:{color:"#91caff","font-size":"15px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},Pe={class:"stat-sub",style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},je={class:"stat-header"},Le={class:"stat-label"},Te={class:"stat-value",style:{color:"#1677ff"}},Oe={class:"stat-sub"},Ee={class:"stat-header"},Me={class:"stat-label"},Ne={class:"stat-value",style:{color:"#c084fc"}},Fe={class:"stat-sub"},qe={class:"stat-header"},Ae={class:"stat-label"},Be={class:"stat-sub"},He={class:"stat-header"},Ue={class:"stat-label"},Ie={class:"stat-value",style:{color:"#13c2c2"}},Ve={class:"stat-sub"},Ge={class:"stat-header"},We={class:"stat-label"},Ke={class:"stat-value",style:{color:"#faad14"}},Qe={class:"stat-sub"},Je={class:"status-log"},Xe={class:"telemetry-filter"},Ye={class:"telemetry-filter-label"},Ze={class:"telemetry-filter"},xe={class:"telemetry-filter-label"},et={class:"telemetry-filter"},tt={class:"telemetry-filter-label"},st={class:"telemetry-card"},at={class:"telemetry-label"},ot={class:"telemetry-value"},lt={class:"telemetry-sub"},rt={class:"telemetry-card"},nt={class:"telemetry-label"},dt={class:"telemetry-value"},it={class:"telemetry-sub"},ut={class:"telemetry-card"},ct={class:"telemetry-label"},vt={class:"telemetry-value"},mt={class:"telemetry-sub"},pt={class:"telemetry-section"},ht={class:"telemetry-section-title"},bt={key:0,class:"telemetry-empty"},ft={key:1,class:"telemetry-list"},yt={class:"telemetry-section"},_t={class:"telemetry-section-title"},gt={key:0,class:"telemetry-empty"},$t={key:1,class:"telemetry-list"},kt={class:"telemetry-section"},wt={class:"telemetry-section-title"},Ct={key:0,class:"telemetry-empty"},St={key:1,class:"telemetry-list"},Rt={class:"telemetry-section"},Dt={class:"telemetry-section-title"},zt={key:0,class:"telemetry-empty"},Pt={key:1,class:"telemetry-list"},jt={style:{color:"#91caff"}},Lt={style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},Tt={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Ot={style:{color:"var(--text-muted)"}},Et={__name:"Dashboard",setup(H){const N=re(),c=V(),F=de(),f=be(),v=window.__CC_CONFIG__||{},y=C(()=>v.mode==="project"),q="v5.0.3.37",A=C(()=>c.status),L=C(()=>f.loading),U=C(()=>f.statusLog),R=C(()=>f.telemetryFilters),b=C(()=>f.compression),_=C(()=>f.stats),r=C(()=>Object.entries(b.value.variantDistribution||{})),m=C(()=>b.value.providerDistribution||[]),g=C(()=>b.value.modelDistribution||[]);async function $(){await f.refresh()}async function D(){await f.refreshCompression()}function z(e){return`${((e||0)*100).toFixed(1)}%`}async function I(){await F.createSession("agent"),N.push("/chat")}return oe(()=>{f.ensureRuntimeSubscription(c),setTimeout($,300)}),le(()=>{f.stopRuntimeSubscription()}),(e,n)=>{const P=w("a-button"),G=w("a-tag"),k=w("a-card"),x=w("a-badge"),u=w("a-col"),S=w("a-row"),ee=w("a-space"),j=w("a-select-option"),W=w("a-select"),T=w("a-descriptions-item"),te=w("a-descriptions");return i(),p("div",null,[o("div",fe,[o("div",null,[o("h2",ye,a(e.$t("dashboard.title")),1),o("p",_e,a(y.value?e.$t("dashboard.subProject",{name:d(v).projectName||e.$t("dashboard.unnamedProject")}):e.$t("dashboard.subGlobal")),1)]),t(P,{type:"primary",ghost:"",loading:L.value,onClick:$},{icon:s(()=>[t(d(ie))]),default:s(()=>[h(" "+a(e.$t("dashboard.refresh")),1)]),_:1},8,["loading"])]),y.value?(i(),B(k,{key:0,style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.25)","margin-bottom":"16px"},size:"small"},{default:s(()=>[o("div",ge,[t(d(ue),{style:{color:"#1677ff","font-size":"18px"}}),o("div",null,[o("div",$e,a(d(v).projectName||e.$t("dashboard.projectBanner.fallbackName")),1),o("div",ke,a(d(v).projectRoot),1)]),t(G,{color:"blue",style:{"margin-left":"auto"}},{default:s(()=>[h(a(e.$t("dashboard.projectBanner.tag")),1)]),_:1})])]),_:1})):K("",!0),t(S,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(k,{class:"stat-card gateway-card",size:"small"},{default:s(()=>[o("div",we,[o("span",Ce,a(e.$t("dashboard.stats.wsGateway")),1),t(x,{status:A.value==="connected"?"success":"error"},null,8,["status"])]),o("div",{class:"stat-value",style:Q({color:A.value==="connected"?"#52c41a":"#888"})},a(A.value==="connected"?e.$t("dashboard.stats.wsRunning"):e.$t("dashboard.stats.wsDisconnected")),5),o("div",Se,a(e.$t("dashboard.stats.wsPortLine",{port:d(v).wsPort||18800,host:d(v).wsHost||"127.0.0.1"})),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(k,{class:"stat-card",size:"small"},{default:s(()=>[o("div",Re,[o("span",De,a(e.$t("dashboard.stats.currentLlm")),1),t(d(J),{style:{color:"#1677ff"}})]),o("div",ze,a(_.value.activeLlm||e.$t("dashboard.stats.llmUnconfigured")),1),o("div",Pe,a(_.value.activeModel||"—"),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(k,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[0]||(n[0]=l=>e.$router.push("/skills"))},{default:s(()=>[o("div",je,[o("span",Le,a(e.$t("dashboard.stats.skills")),1),t(d(X),{style:{color:"#1677ff"}})]),o("div",Te,a(_.value.skillCount||"—"),1),o("div",Oe,a(e.$t("dashboard.stats.skillsHint")),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(k,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[1]||(n[1]=l=>e.$router.push("/chat"))},{default:s(()=>[o("div",Ee,[o("span",Me,a(e.$t("dashboard.stats.sessions")),1),t(d(Y),{style:{color:"#722ed1"}})]),o("div",Ne,a(_.value.sessionCount),1),o("div",Fe,a(e.$t("dashboard.stats.sessionsHint")),1)]),_:1})]),_:1})]),_:1}),t(S,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[t(k,{class:"stat-card",size:"small"},{default:s(()=>[o("div",qe,[o("span",Ae,a(e.$t("dashboard.stats.appStatus")),1),t(d(ce),{style:Q({color:_.value.appRunning?"#52c41a":"#888"})},null,8,["style"])]),o("div",{class:"stat-value",style:Q({color:_.value.appRunning?"#52c41a":"#888",fontSize:"15px"})},a(_.value.appRunning?e.$t("dashboard.stats.appRunning"):_.value.setupDone?e.$t("dashboard.stats.appReady"):e.$t("dashboard.stats.appNotStarted")),5),o("div",Be,a(e.$t("dashboard.stats.edition",{name:_.value.edition||"Community"})),1)]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(k,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[2]||(n[2]=l=>e.$router.push("/mcp"))},{default:s(()=>[o("div",He,[o("span",Ue,a(e.$t("dashboard.stats.mcp")),1),t(d(ve),{style:{color:"#13c2c2"}})]),o("div",Ie,a(_.value.mcpCount??"—"),1),o("div",Ve,a(e.$t("dashboard.stats.mcpHint")),1)]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(k,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[3]||(n[3]=l=>e.$router.push("/notes"))},{default:s(()=>[o("div",Ge,[o("span",We,a(e.$t("dashboard.stats.notes")),1),t(d(Z),{style:{color:"#faad14"}})]),o("div",Ke,a(_.value.noteCount??"—"),1),o("div",Qe,a(e.$t("dashboard.stats.notesHint")),1)]),_:1})]),_:1})]),_:1}),t(S,{gutter:[16,16]},{default:s(()=>[t(u,{xs:24,lg:10},{default:s(()=>[t(k,{title:e.$t("dashboard.quick.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)",height:"100%"}},{default:s(()=>[t(ee,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:s(()=>[t(P,{type:"primary",block:"",onClick:n[4]||(n[4]=l=>e.$router.push("/chat"))},{icon:s(()=>[t(d(Y))]),default:s(()=>[h(" "+a(y.value?e.$t("dashboard.quick.enterProjectChat"):e.$t("dashboard.quick.newAiChat")),1)]),_:1}),t(P,{block:"",onClick:I,style:{background:"rgba(114,46,209,.12)","border-color":"#722ed1",color:"#722ed1"}},{icon:s(()=>[t(d(J))]),default:s(()=>[h(" "+a(e.$t("dashboard.quick.startAgent")),1)]),_:1}),t(S,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(P,{block:"",onClick:n[5]||(n[5]=l=>e.$router.push("/services")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(d(me))]),default:s(()=>[h(" "+a(e.$t("dashboard.quick.services")),1)]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(P,{block:"",onClick:n[6]||(n[6]=l=>e.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(d(Z))]),default:s(()=>[h(" "+a(e.$t("dashboard.quick.logs")),1)]),_:1})]),_:1})]),_:1}),t(S,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(P,{block:"",onClick:n[7]||(n[7]=l=>e.$router.push("/skills")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(d(X))]),default:s(()=>[h(" "+a(e.$t("dashboard.quick.skills")),1)]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(P,{block:"",onClick:n[8]||(n[8]=l=>e.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(d(pe))]),default:s(()=>[h(" "+a(e.$t("dashboard.quick.providers")),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["title"])]),_:1}),t(u,{xs:24,lg:14},{default:s(()=>[t(k,{title:e.$t("dashboard.status.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"},loading:L.value},{extra:s(()=>[t(P,{type:"link",size:"small",onClick:n[9]||(n[9]=l=>e.$router.push("/logs"))},{default:s(()=>[h(a(e.$t("dashboard.status.more")),1)]),_:1})]),default:s(()=>[o("pre",Je,a(U.value||e.$t("dashboard.status.placeholder")),1)]),_:1},8,["title","loading"])]),_:1})]),_:1}),t(k,{title:e.$t("dashboard.telemetry.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"},loading:L.value},{default:s(()=>[t(S,{gutter:[12,12],style:{"margin-bottom":"12px"}},{default:s(()=>[t(u,{xs:24,md:8},{default:s(()=>[o("div",Xe,[o("div",Ye,a(e.$t("dashboard.telemetry.filterWindow")),1),t(W,{value:R.value.windowPreset,"onUpdate:value":n[10]||(n[10]=l=>R.value.windowPreset=l),style:{width:"100%"},onChange:D},{default:s(()=>[t(j,{value:"all"},{default:s(()=>[h(a(e.$t("dashboard.telemetry.windowAll")),1)]),_:1}),t(j,{value:"1h"},{default:s(()=>[h(a(e.$t("dashboard.telemetry.window1h")),1)]),_:1}),t(j,{value:"24h"},{default:s(()=>[h(a(e.$t("dashboard.telemetry.window24h")),1)]),_:1}),t(j,{value:"7d"},{default:s(()=>[h(a(e.$t("dashboard.telemetry.window7d")),1)]),_:1})]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[o("div",Ze,[o("div",xe,a(e.$t("dashboard.telemetry.filterProvider")),1),t(W,{value:R.value.provider,"onUpdate:value":n[11]||(n[11]=l=>R.value.provider=l),style:{width:"100%"},onChange:D},{default:s(()=>[t(j,{value:""},{default:s(()=>[h(a(e.$t("dashboard.telemetry.providerAll")),1)]),_:1}),(i(!0),p(E,null,M(m.value,l=>(i(),B(j,{key:l.key,value:l.key},{default:s(()=>[h(a(l.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[o("div",et,[o("div",tt,a(e.$t("dashboard.telemetry.filterModel")),1),t(W,{value:R.value.model,"onUpdate:value":n[12]||(n[12]=l=>R.value.model=l),style:{width:"100%"},onChange:D},{default:s(()=>[t(j,{value:""},{default:s(()=>[h(a(e.$t("dashboard.telemetry.modelAll")),1)]),_:1}),(i(!0),p(E,null,M(g.value,l=>(i(),B(j,{key:l.key,value:l.key},{default:s(()=>[h(a(l.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1})]),_:1}),t(S,{gutter:[12,12]},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[o("div",st,[o("div",at,a(e.$t("dashboard.telemetry.hitRate")),1),o("div",ot,a(z(b.value.hitRate)),1),o("div",lt,a(e.$t("dashboard.telemetry.hitRateSub",{compressed:b.value.compressedSamples,total:b.value.samples})),1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[o("div",rt,[o("div",nt,a(e.$t("dashboard.telemetry.savedTokens")),1),o("div",dt,a(b.value.totalSavedTokens),1),o("div",it,a(e.$t("dashboard.telemetry.savedTokensSub",{avg:b.value.averageSavedTokens})),1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[o("div",ut,[o("div",ct,a(e.$t("dashboard.telemetry.netSavingsRate")),1),o("div",vt,a(z(b.value.netSavingsRate)),1),o("div",mt,a(e.$t("dashboard.telemetry.netSavingsRateSub",{original:b.value.totalOriginalTokens,compressed:b.value.totalCompressedTokens})),1)])]),_:1})]),_:1}),t(S,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[o("div",pt,[o("div",ht,a(e.$t("dashboard.telemetry.strategyDistribution")),1),b.value.strategyDistribution.length===0?(i(),p("div",bt,a(e.$t("dashboard.telemetry.strategyEmpty")),1)):(i(),p("div",ft,[(i(!0),p(E,null,M(b.value.strategyDistribution.slice(0,6),l=>(i(),p("div",{key:l.strategy,class:"telemetry-row"},[o("span",null,a(l.strategy),1),o("span",null,a(e.$t("dashboard.telemetry.strategyRow",{hits:l.hits,rate:z(l.hitRate)})),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[o("div",yt,[o("div",_t,a(e.$t("dashboard.telemetry.variantDistribution")),1),r.value.length===0?(i(),p("div",gt,a(e.$t("dashboard.telemetry.variantEmpty")),1)):(i(),p("div",$t,[(i(!0),p(E,null,M(r.value,([l,se])=>(i(),p("div",{key:l,class:"telemetry-row"},[o("span",null,a(l),1),o("span",null,a(e.$t("dashboard.telemetry.variantRow",{count:se})),1)]))),128))]))])]),_:1})]),_:1}),t(S,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[o("div",kt,[o("div",wt,a(e.$t("dashboard.telemetry.providerSlice")),1),m.value.length===0?(i(),p("div",Ct,a(e.$t("dashboard.telemetry.providerEmpty")),1)):(i(),p("div",St,[(i(!0),p(E,null,M(m.value.slice(0,6),l=>(i(),p("div",{key:l.key,class:"telemetry-row"},[o("span",null,a(l.key),1),o("span",null,a(e.$t("dashboard.telemetry.providerRow",{samples:l.samples,rate:z(l.hitRate)})),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[o("div",Rt,[o("div",Dt,a(e.$t("dashboard.telemetry.modelSlice")),1),g.value.length===0?(i(),p("div",zt,a(e.$t("dashboard.telemetry.modelEmpty")),1)):(i(),p("div",Pt,[(i(!0),p(E,null,M(g.value.slice(0,6),l=>(i(),p("div",{key:l.key,class:"telemetry-row"},[o("span",null,a(l.key),1),o("span",null,a(e.$t("dashboard.telemetry.modelRow",{samples:l.samples,saved:l.savedTokens})),1)]))),128))]))])]),_:1})]),_:1})]),_:1},8,["title","loading"]),t(k,{title:e.$t("dashboard.info.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{default:s(()=>[t(te,{column:{xs:1,sm:2,lg:3},size:"small"},{default:s(()=>[t(T,{label:e.$t("dashboard.info.panelMode")},{default:s(()=>[t(G,{color:y.value?"blue":"purple"},{default:s(()=>[h(a(y.value?e.$t("dashboard.info.modeProject"):e.$t("dashboard.info.modeGlobal")),1)]),_:1},8,["color"])]),_:1},8,["label"]),y.value?(i(),B(T,{key:0,label:e.$t("dashboard.info.projectName")},{default:s(()=>[o("span",jt,a(d(v).projectName||"—"),1)]),_:1},8,["label"])):K("",!0),y.value?(i(),B(T,{key:1,label:e.$t("dashboard.info.projectPath")},{default:s(()=>[o("span",Lt,a(d(v).projectRoot),1)]),_:1},8,["label"])):K("",!0),t(T,{label:e.$t("dashboard.info.websocket")},{default:s(()=>[o("span",Tt," ws://"+a(d(v).wsHost||"127.0.0.1")+":"+a(d(v).wsPort||18800),1)]),_:1},8,["label"]),t(T,{label:e.$t("dashboard.info.auth")},{default:s(()=>[t(G,{color:d(v).wsToken?"green":"default",style:{"font-size":"11px"}},{default:s(()=>[h(a(d(v).wsToken?e.$t("dashboard.info.authEnabled"):e.$t("dashboard.info.authDisabled")),1)]),_:1},8,["color"])]),_:1},8,["label"]),t(T,{label:e.$t("dashboard.info.version")},{default:s(()=>[o("span",Ot,a(d(q)),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["title"])])}}},At=ne(Et,[["__scopeId","data-v-bf6b8d82"]]);export{At as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as Be,u as Pe,b as Me,d as h}from"./index-B2f4ltyM.js";import{u as Ne,i as Ke,a as qe,b as Ve,c as Je,d as Qe,E as We}from"./echarts-DmBLM6YO.js";import{R as Ye,al as Ze,ar as le,V as ke,s as He,$ as Xe}from"./icons-zXb7lDZs.js";import{o as et,M as m,R as $,P as s,c as t,N as a,Q as R,S as G,K as p,r as v,L as d,O as c,u as S,F as A,_ as L,f as U,a as re}from"./vendor-B6ToihkA.js";function N(l){if(!l)return null;const i=l.trim();try{return JSON.parse(i)}catch{const n=i.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(!n)return null;try{return JSON.parse(n[1])}catch{return null}}}function ie(l,i=0){if(!l||typeof l!="object")return null;const n=l.id||l.entity_id||"";if(!n)return null;const k=Array.isArray(l.tags)?l.tags:typeof l.tags=="string"&&l.tags.length>0?l.tags.split(",").map(_=>_.trim()).filter(Boolean):[];return{key:n,id:n,name:l.name||"",type:l.type||"",tags:k,properties:l.properties&&typeof l.properties=="object"?l.properties:null,createdAt:l.created_at||l.createdAt||"",updatedAt:l.updated_at||l.updatedAt||"",_idx:i}}function _e(l,i=0){if(!l||typeof l!="object")return null;const n=l.id||l.relation_id||"";if(!n)return null;const k=l.sourceId||l.source_id||"",_=l.targetId||l.target_id||"";if(!k||!_)return null;const T=typeof l.weight=="number"?l.weight:typeof l.weight=="string"?parseFloat(l.weight):1;return{key:n,id:n,sourceId:k,targetId:_,relationType:l.relationType||l.relation_type||"",weight:Number.isFinite(T)?T:1,properties:l.properties&&typeof l.properties=="object"?l.properties:null,createdAt:l.created_at||l.createdAt||"",_idx:i}}function tt(l){const i=N(l);return Array.isArray(i)?i.map(ie).filter(Boolean):i&&Array.isArray(i.entities)?i.entities.map(ie).filter(Boolean):[]}function at(l){const i=N(l);return Array.isArray(i)?i.map(_e).filter(Boolean):i&&Array.isArray(i.relations)?i.relations.map(_e).filter(Boolean):[]}function ot(l){const i=N(l);if(!i||typeof i!="object"||Array.isArray(i))return{entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}};const n=k=>{const _=typeof k=="number"?k:parseFloat(k);return Number.isFinite(_)?_:0};return{entityCount:n(i.entityCount??i.entity_count),relationCount:n(i.relationCount??i.relation_count),avgDegree:n(i.avgDegree??i.avg_degree),density:n(i.density),typeDistribution:i.typeDistribution||i.type_distribution||{},relationTypeDistribution:i.relationTypeDistribution||i.relation_type_distribution||{}}}function nt(l){const i=N(l);return Array.isArray(i)?i.map((n,k)=>{if(!n||typeof n!="object"||!n.entity)return null;const _=ie(n.entity,k);return _?{key:`${_.id}-${k}`,depth:typeof n.depth=="number"?n.depth:0,entity:_}:null}).filter(Boolean):[]}function lt(l){const i=N(l);return Array.isArray(i)?i.map(n=>!n||typeof n!="object"||!n.name?null:{name:String(n.name),description:String(n.description||"")}).filter(Boolean):[]}function rt(l,i){const n=new Map,k=[];for(const f of l)n.has(f.type)||(n.set(f.type,k.length),k.push({name:f.type||"unknown"}));const _=l.map(f=>({id:f.id,name:f.name||f.id.slice(0,8),category:n.get(f.type)??0,value:1,symbolSize:24})),T=new Set(l.map(f=>f.id)),O=[];for(const f of i)!T.has(f.sourceId)||!T.has(f.targetId)||O.push({source:f.sourceId,target:f.targetId,value:f.relationType,lineStyle:{width:Math.max(1,Math.min(6,f.weight*2))}});return{nodes:_,links:O,categories:k}}const it={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},st={class:"page-title"},dt={class:"page-sub"},ut={key:0,style:{padding:"60px","text-align":"center"}},pt={key:1,style:{height:"540px"}},ct={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},yt={key:1,style:{color:"var(--text-primary)"}},gt={key:0,style:{color:"var(--text-muted)"}},mt={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},ft={key:1,style:{color:"var(--text-muted)"}},ht={key:2,style:{color:"#888","font-family":"monospace","font-size":"11px"}},vt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace"}},kt={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},_t={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},bt={style:{color:"var(--text-secondary)","font-family":"monospace"}},wt={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},Gt={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},$t={style:{color:"var(--text-secondary)","font-family":"monospace"}},xt={style:{color:"var(--text-muted)","font-size":"11px"}},Ct={key:0,style:{padding:"30px","text-align":"center",color:"var(--text-muted)"}},St={style:{"margin-left":"12px",color:"var(--text-primary)"}},Tt={style:{"margin-left":"8px",color:"#888","font-family":"monospace","font-size":"11px"}},Rt={__name:"KnowledgeGraph",setup(l){Ne([Ke,qe,Ve,Je,Qe]);const i=Pe(),{t:n}=Me(),k=v(!1),_=v(!1),T=v(!1),O=v(!1),f=v(!1),Z=v(""),K=v(!1),se=v("graph"),x=v([]),B=v([]),H=v([]),E=v({entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}}),q=v(!1),V=v(!1),X=v(!1),b=re({name:"",type:"",tags:""}),y=re({sourceId:"",targetId:"",relationType:"",weight:1}),j=re({maxDepth:3,direction:"out"}),de=v(""),ue=v(""),P=v([]),be=U(()=>[{title:n("knowledgeGraph.entityCols.id"),key:"id",width:"120px"},{title:n("knowledgeGraph.entityCols.name"),key:"name",dataIndex:"name",ellipsis:!0},{title:n("knowledgeGraph.entityCols.type"),key:"type",dataIndex:"type",width:"140px"},{title:n("knowledgeGraph.entityCols.tags"),key:"tags",width:"200px"},{title:n("knowledgeGraph.entityCols.action"),key:"action",width:"160px"}]),we=U(()=>[{title:n("knowledgeGraph.relationCols.source"),key:"source",width:"120px"},{title:"",key:"arrow",width:"40px"},{title:n("knowledgeGraph.relationCols.target"),key:"target",width:"120px"},{title:n("knowledgeGraph.relationCols.relationType"),key:"relationType",width:"160px"},{title:n("knowledgeGraph.relationCols.weight"),key:"weight",width:"100px"}]),Ge={Person:"magenta",Organization:"blue",Project:"cyan",Technology:"geekblue",Document:"gold",Concept:"purple",Event:"volcano"};function ee(e){return Ge[e]||"default"}const $e=U(()=>{const e=new Map;for(const r of x.value)e.set(r.id,r.name||r.id.slice(0,8));return e});function pe(e){return $e.value.get(e)||e.slice(0,12)}function ce(e,r){return String(r?.children?.[0]?.children||"").toLowerCase().includes(String(e).toLowerCase())}const ye=U(()=>{const e=E.value.typeDistribution||{},r=Object.values(e).reduce((u,g)=>u+g,0)||1;return Object.entries(e).map(([u,g])=>({type:u,count:g,percent:Math.round(g/r*100)})).sort((u,g)=>g.count-u.count)}),ge=U(()=>{const e=E.value.relationTypeDistribution||{},r=Object.values(e).reduce((u,g)=>u+g,0)||1;return Object.entries(e).map(([u,g])=>({type:u,count:g,percent:Math.round(g/r*100)})).sort((u,g)=>g.count-u.count)}),xe=U(()=>{const{nodes:e,links:r,categories:u}=rt(x.value,B.value);return{tooltip:{show:!0},legend:[{data:u.map(g=>g.name),textStyle:{color:"#aaa"},bottom:0}],series:[{type:"graph",layout:"force",data:e,links:r,categories:u,roam:!0,label:{show:!0,position:"right",color:"#ddd",fontSize:11},lineStyle:{color:"source",curveness:.1,opacity:.6},emphasis:{focus:"adjacency",lineStyle:{width:4}},force:{repulsion:180,edgeLength:[60,140],gravity:.05}}]}});async function M(){_.value=!0;try{await Promise.all([Ce(),Se(),Te()])}finally{_.value=!1}}async function Ce(){try{const{output:e}=await i.execute("kg list --limit 500 --json",15e3);x.value=tt(e)}catch(e){h.error(n("knowledgeGraph.msg.loadEntitiesFailed")+": "+e.message),x.value=[]}}async function Se(){try{const{output:e}=await i.execute("kg relations --limit 1000 --json",15e3);B.value=at(e)}catch(e){h.error(n("knowledgeGraph.msg.loadRelationsFailed")+": "+e.message),B.value=[]}}async function Te(){try{const{output:e}=await i.execute("kg stats --json",1e4);E.value=ot(e)}catch(e){h.error(n("knowledgeGraph.msg.loadStatsFailed")+": "+e.message)}}async function Re(){if(!(H.value.length>0)){T.value=!0;try{const{output:e}=await i.execute("kg entity-types --json",1e4);H.value=lt(e)}catch(e){h.error(n("knowledgeGraph.msg.loadEntityTypesFailed")+": "+e.message)}finally{T.value=!1}}}async function Ee(){if(!b.name.trim()||!b.type){h.warning(n("knowledgeGraph.msg.addEntityEmpty"));return}O.value=!0;try{let r=`kg add "${b.name.trim().replace(/"/g,'\\"')}" ${b.type} --json`;b.tags.trim()&&(r+=` --tags "${b.tags.trim().replace(/"/g,'\\"')}"`);const{output:u,exitCode:g}=await i.execute(r,15e3);g!==0||/error|失败/i.test(u)?h.error(n("knowledgeGraph.msg.addEntityFailed")+": "+u.slice(0,120)):(h.success(n("knowledgeGraph.msg.addEntitySuccess")),q.value=!1,b.name="",b.type="",b.tags="",await M())}catch(e){h.error(n("knowledgeGraph.msg.addEntityFailed")+": "+e.message)}finally{O.value=!1}}async function Ie(){if(!y.sourceId||!y.targetId||!y.relationType.trim()){h.warning(n("knowledgeGraph.msg.addRelationEmpty"));return}if(y.sourceId===y.targetId){h.warning(n("knowledgeGraph.msg.addRelationSelfLoop"));return}f.value=!0;try{const e=y.relationType.trim().replace(/"/g,'\\"'),r=`kg add-relation ${y.sourceId} ${y.targetId} "${e}" --weight ${y.weight} --json`,{output:u,exitCode:g}=await i.execute(r,15e3);g!==0||/error|失败/i.test(u)?h.error(n("knowledgeGraph.msg.addRelationFailed")+": "+u.slice(0,120)):(h.success(n("knowledgeGraph.msg.addRelationSuccess")),V.value=!1,y.sourceId="",y.targetId="",y.relationType="",y.weight=1,await M())}catch(e){h.error(n("knowledgeGraph.msg.addRelationFailed")+": "+e.message)}finally{f.value=!1}}async function De(e){Z.value=e.id;try{const{output:r,exitCode:u}=await i.execute(`kg remove ${e.id}`,15e3);u!==0||/error|失败/i.test(r)?h.error(n("knowledgeGraph.msg.deleteFailed")+": "+r.slice(0,120)):(h.success(n("knowledgeGraph.msg.deleteSuccess")),await M())}catch(r){h.error(n("knowledgeGraph.msg.deleteFailed")+": "+r.message)}finally{Z.value=""}}function Ae(e){de.value=e.id,ue.value=e.name,P.value=[],X.value=!0}async function Oe(){K.value=!0;try{const e=`kg reason ${de.value} --max-depth ${j.maxDepth} --direction ${j.direction} --json`,{output:r}=await i.execute(e,15e3);P.value=nt(r),P.value.length===0&&h.info(n("knowledgeGraph.msg.reasonEmpty"))}catch(e){h.error(n("knowledgeGraph.msg.reasonFailed")+": "+e.message)}finally{K.value=!1}}return et(()=>{M(),Re()}),(e,r)=>{const u=p("a-button"),g=p("a-space"),J=p("a-statistic"),I=p("a-card"),z=p("a-col"),me=p("a-row"),je=p("a-alert"),te=p("a-empty"),Q=p("a-tab-pane"),D=p("a-tag"),ze=p("a-popconfirm"),fe=p("a-table"),he=p("a-progress"),Fe=p("a-tabs"),ae=p("a-input"),C=p("a-form-item"),F=p("a-select-option"),W=p("a-select"),oe=p("a-form"),ne=p("a-modal"),ve=p("a-input-number"),Le=p("a-list-item"),Ue=p("a-list");return d(),m("div",null,[$("div",it,[$("div",null,[$("h2",st,s(e.$t("knowledgeGraph.title")),1),$("p",dt,s(e.$t("knowledgeGraph.subtitle")),1)]),t(g,null,{default:a(()=>[t(u,{loading:_.value,onClick:M},{icon:a(()=>[t(S(Ye))]),default:a(()=>[c(" "+s(e.$t("knowledgeGraph.refresh")),1)]),_:1},8,["loading"]),t(u,{type:"primary",onClick:r[0]||(r[0]=o=>q.value=!0)},{icon:a(()=>[t(S(Ze))]),default:a(()=>[c(" "+s(e.$t("knowledgeGraph.addEntity")),1)]),_:1}),t(u,{onClick:r[1]||(r[1]=o=>V.value=!0),disabled:x.value.length<2},{icon:a(()=>[t(S(le))]),default:a(()=>[c(" "+s(e.$t("knowledgeGraph.addRelation")),1)]),_:1},8,["disabled"])]),_:1})]),t(me,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(z,{xs:24,sm:12,lg:6},{default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(J,{title:e.$t("knowledgeGraph.stats.entityCount"),value:E.value.entityCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(S(ke))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(z,{xs:24,sm:12,lg:6},{default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(J,{title:e.$t("knowledgeGraph.stats.relationCount"),value:E.value.relationCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:a(()=>[t(S(le))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(z,{xs:24,sm:12,lg:6},{default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(J,{title:e.$t("knowledgeGraph.stats.avgDegree"),value:E.value.avgDegree,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),t(z,{xs:24,sm:12,lg:6},{default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(J,{title:e.$t("knowledgeGraph.stats.density"),value:E.value.density,precision:4,"value-style":{color:"#722ed1",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),k.value?G("",!0):(d(),R(je,{key:0,message:e.$t("knowledgeGraph.webOnly.message"),description:e.$t("knowledgeGraph.webOnly.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"])),t(Fe,{activeKey:se.value,"onUpdate:activeKey":r[2]||(r[2]=o=>se.value=o),type:"card"},{default:a(()=>[t(Q,{key:"graph"},{tab:a(()=>[t(S(He)),c(" "+s(e.$t("knowledgeGraph.tabs.graph")),1)]),default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[x.value.length===0?(d(),m("div",ut,[t(te,{description:e.$t("knowledgeGraph.table.emptyGraph")},null,8,["description"])])):(d(),m("div",pt,[t(S(We),{option:xe.value,autoresize:""},null,8,["option"])]))]),_:1})]),_:1}),t(Q,{key:"entities"},{tab:a(()=>[t(S(ke)),c(" "+s(e.$t("knowledgeGraph.tabs.entities",{n:x.value.length})),1)]),default:a(()=>[t(fe,{columns:be.value,"data-source":x.value,pagination:{pageSize:20,showTotal:o=>e.$t("knowledgeGraph.table.totalSuffix",{n:o})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:a(({column:o,record:w})=>[o.key==="id"?(d(),m("span",ct,s(w.id.slice(0,12)),1)):G("",!0),o.key==="name"?(d(),m("span",yt,s(w.name),1)):G("",!0),o.key==="type"?(d(),R(D,{key:2,color:ee(w.type)},{default:a(()=>[c(s(w.type),1)]),_:2},1032,["color"])):G("",!0),o.key==="tags"?(d(),m(A,{key:3},[(d(!0),m(A,null,L(w.tags,Y=>(d(),R(D,{key:Y,color:"default"},{default:a(()=>[c(s(Y),1)]),_:2},1024))),128)),w.tags.length===0?(d(),m("span",gt,"-")):G("",!0)],64)):G("",!0),o.key==="action"?(d(),R(g,{key:4,size:"small"},{default:a(()=>[t(u,{size:"small",type:"link",onClick:Y=>Ae(w)},{default:a(()=>[c(s(e.$t("knowledgeGraph.actions.reason")),1)]),_:1},8,["onClick"]),t(ze,{title:e.$t("knowledgeGraph.deleteConfirm.title"),"ok-text":e.$t("knowledgeGraph.deleteConfirm.ok"),"ok-type":"danger","cancel-text":e.$t("knowledgeGraph.deleteConfirm.cancel"),onConfirm:Y=>De(w)},{default:a(()=>[t(u,{size:"small",type:"link",danger:"",loading:Z.value===w.id},{default:a(()=>[c(s(e.$t("knowledgeGraph.actions.delete")),1)]),_:1},8,["loading"])]),_:2},1032,["title","ok-text","cancel-text","onConfirm"])]),_:2},1024)):G("",!0)]),emptyText:a(()=>[t(te,{description:e.$t("knowledgeGraph.table.emptyEntities")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),t(Q,{key:"relations"},{tab:a(()=>[t(S(le)),c(" "+s(e.$t("knowledgeGraph.tabs.relations",{n:B.value.length})),1)]),default:a(()=>[t(fe,{columns:we.value,"data-source":B.value,pagination:{pageSize:20,showTotal:o=>e.$t("knowledgeGraph.table.totalSuffix",{n:o})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:a(({column:o,record:w})=>[o.key==="source"?(d(),m("span",mt,s(pe(w.sourceId)),1)):G("",!0),o.key==="arrow"?(d(),m("span",ft,"→")):G("",!0),o.key==="target"?(d(),m("span",ht,s(pe(w.targetId)),1)):G("",!0),o.key==="relationType"?(d(),R(D,{key:3,color:"cyan"},{default:a(()=>[c(s(w.relationType),1)]),_:2},1024)):G("",!0),o.key==="weight"?(d(),m("span",vt,s(w.weight.toFixed(2)),1)):G("",!0)]),emptyText:a(()=>[t(te,{description:e.$t("knowledgeGraph.table.emptyRelations")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),t(Q,{key:"distribution"},{tab:a(()=>[t(S(Xe)),c(" "+s(e.$t("knowledgeGraph.tabs.distribution")),1)]),default:a(()=>[t(me,{gutter:[24,24]},{default:a(()=>[t(z,{xs:24,md:12},{default:a(()=>[t(I,{title:e.$t("knowledgeGraph.distribution.entityTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[ye.value.length===0?(d(),m("div",kt,s(e.$t("knowledgeGraph.table.emptyData")),1)):G("",!0),(d(!0),m(A,null,L(ye.value,o=>(d(),m("div",{key:o.type,style:{"margin-bottom":"8px"}},[$("div",_t,[t(D,{color:ee(o.type)},{default:a(()=>[c(s(o.type),1)]),_:2},1032,["color"]),$("span",bt,s(o.count),1)]),t(he,{percent:o.percent,"show-info":!1,"stroke-color":"#1677ff"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1}),t(z,{xs:24,md:12},{default:a(()=>[t(I,{title:e.$t("knowledgeGraph.distribution.relationTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[ge.value.length===0?(d(),m("div",wt,s(e.$t("knowledgeGraph.table.emptyData")),1)):G("",!0),(d(!0),m(A,null,L(ge.value,o=>(d(),m("div",{key:o.type,style:{"margin-bottom":"8px"}},[$("div",Gt,[t(D,{color:"cyan"},{default:a(()=>[c(s(o.type),1)]),_:2},1024),$("span",$t,s(o.count),1)]),t(he,{percent:o.percent,"show-info":!1,"stroke-color":"#52c41a"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1})]),_:1},8,["activeKey"]),t(ne,{open:q.value,"onUpdate:open":r[6]||(r[6]=o=>q.value=o),title:e.$t("knowledgeGraph.addEntity_modal.title"),"confirm-loading":O.value,onOk:Ee,"ok-text":e.$t("knowledgeGraph.addEntity_modal.ok"),"cancel-text":e.$t("knowledgeGraph.addEntity_modal.cancel")},{default:a(()=>[t(oe,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:a(()=>[t(C,{label:e.$t("knowledgeGraph.addEntity_modal.nameLabel"),required:""},{default:a(()=>[t(ae,{value:b.name,"onUpdate:value":r[3]||(r[3]=o=>b.name=o),placeholder:e.$t("knowledgeGraph.addEntity_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addEntity_modal.typeLabel"),required:""},{default:a(()=>[t(W,{value:b.type,"onUpdate:value":r[4]||(r[4]=o=>b.type=o),placeholder:e.$t("knowledgeGraph.addEntity_modal.typePlaceholder"),loading:T.value},{default:a(()=>[(d(!0),m(A,null,L(H.value,o=>(d(),R(F,{key:o.name,value:o.name},{default:a(()=>[c(s(o.name)+" ",1),$("span",xt,"— "+s(o.description),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder","loading"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addEntity_modal.tagsLabel")},{default:a(()=>[t(ae,{value:b.tags,"onUpdate:value":r[5]||(r[5]=o=>b.tags=o),placeholder:e.$t("knowledgeGraph.addEntity_modal.tagsPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),t(ne,{open:V.value,"onUpdate:open":r[11]||(r[11]=o=>V.value=o),title:e.$t("knowledgeGraph.addRelation_modal.title"),"confirm-loading":f.value,onOk:Ie,"ok-text":e.$t("knowledgeGraph.addRelation_modal.ok"),"cancel-text":e.$t("knowledgeGraph.addRelation_modal.cancel")},{default:a(()=>[t(oe,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:a(()=>[t(C,{label:e.$t("knowledgeGraph.addRelation_modal.sourceLabel"),required:""},{default:a(()=>[t(W,{value:y.sourceId,"onUpdate:value":r[7]||(r[7]=o=>y.sourceId=o),placeholder:e.$t("knowledgeGraph.addRelation_modal.sourcePlaceholder"),"show-search":"","filter-option":ce},{default:a(()=>[(d(!0),m(A,null,L(x.value,o=>(d(),R(F,{key:o.id,value:o.id},{default:a(()=>[c(s(o.name)+" ("+s(o.type)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addRelation_modal.targetLabel"),required:""},{default:a(()=>[t(W,{value:y.targetId,"onUpdate:value":r[8]||(r[8]=o=>y.targetId=o),placeholder:e.$t("knowledgeGraph.addRelation_modal.targetPlaceholder"),"show-search":"","filter-option":ce},{default:a(()=>[(d(!0),m(A,null,L(x.value,o=>(d(),R(F,{key:o.id,value:o.id,disabled:o.id===y.sourceId},{default:a(()=>[c(s(o.name)+" ("+s(o.type)+") ",1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addRelation_modal.relationTypeLabel"),required:""},{default:a(()=>[t(ae,{value:y.relationType,"onUpdate:value":r[9]||(r[9]=o=>y.relationType=o),placeholder:e.$t("knowledgeGraph.addRelation_modal.relationTypePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addRelation_modal.weightLabel")},{default:a(()=>[t(ve,{value:y.weight,"onUpdate:value":r[10]||(r[10]=o=>y.weight=o),min:.1,max:10,step:.1,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),t(ne,{open:X.value,"onUpdate:open":r[14]||(r[14]=o=>X.value=o),title:e.$t("knowledgeGraph.reason_modal.title",{name:ue.value}),width:640,footer:null},{default:a(()=>[t(oe,{layout:"inline",style:{"margin-bottom":"16px"}},{default:a(()=>[t(C,{label:e.$t("knowledgeGraph.reason_modal.maxDepth")},{default:a(()=>[t(ve,{value:j.maxDepth,"onUpdate:value":r[12]||(r[12]=o=>j.maxDepth=o),min:1,max:10},null,8,["value"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.reason_modal.direction")},{default:a(()=>[t(W,{value:j.direction,"onUpdate:value":r[13]||(r[13]=o=>j.direction=o),style:{width:"100px"}},{default:a(()=>[t(F,{value:"out"},{default:a(()=>[c(s(e.$t("knowledgeGraph.reason_modal.directionOut")),1)]),_:1}),t(F,{value:"in"},{default:a(()=>[c(s(e.$t("knowledgeGraph.reason_modal.directionIn")),1)]),_:1}),t(F,{value:"both"},{default:a(()=>[c(s(e.$t("knowledgeGraph.reason_modal.directionBoth")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),t(C,null,{default:a(()=>[t(u,{type:"primary",loading:K.value,onClick:Oe},{default:a(()=>[c(s(e.$t("knowledgeGraph.reason_modal.run")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),P.value.length===0&&!K.value?(d(),m("div",Ct,s(e.$t("knowledgeGraph.reason_modal.hint")),1)):(d(),R(Ue,{key:1,"data-source":P.value,size:"small"},{renderItem:a(({item:o})=>[t(Le,null,{default:a(()=>[t(D,{color:"purple"},{default:a(()=>[c("depth="+s(o.depth),1)]),_:2},1024),t(D,{color:ee(o.entity.type),style:{"margin-left":"8px"}},{default:a(()=>[c(s(o.entity.type),1)]),_:2},1032,["color"]),$("span",St,s(o.entity.name),1),$("span",Tt,s(o.entity.id.slice(0,12)),1)]),_:2},1024)]),_:1},8,["data-source"]))]),_:1},8,["open","title"])])}}},Ot=Be(Rt,[["__scopeId","data-v-d675e73f"]]);export{Ot as default};
|
|
@@ -1,6 +0,0 @@
|
|
|
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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.page-title[data-v-327f30f4]{margin:0;font-size:22px;color:var(--text-primary)}.page-sub[data-v-327f30f4]{margin:4px 0 0;font-size:13px;color:var(--text-secondary)}.mtc-tabs[data-v-327f30f4] .ant-tabs-tab{font-size:13px}.raw-pre[data-v-327f30f4]{margin:0;padding:8px 12px;background:var(--bg-hover);border-radius:4px;font-family:monospace;font-size:11px;line-height:1.5;max-height:320px;overflow:auto}
|
|
@@ -1,7 +0,0 @@
|
|
|
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
|
-
|
|
4
|
-
`:"",p=`# ${t.title}
|
|
5
|
-
|
|
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 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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[data-v-b654ddde] .note-row:hover td{background:var(--bg-card-hover)!important;cursor:pointer}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{M as f,R as _,P as l,c as m,N as d,Q as A,S as v,K as b,r as w,L as o,a0 as M,a1 as N,O as q,u as x}from"./vendor-B6ToihkA.js";import{u as E}from"./index-B2f4ltyM.js";import{b as K,ad as P,ae as T,f as V}from"./icons-zXb7lDZs.js";function L(){const h=[];let s=null,c=!1,t=null;return{push(e){if(h.push(e),s){const a=s;s=null,a()}},finish(e){if(c=!0,t=e||null,s){const a=s;s=null,a()}},async*iterate(){for(;;){for(;h.length>0;)yield h.shift();if(c){if(t)throw t;return}await new Promise(e=>{s=e})}}}}function Q(){const h=E();function s(t){if(!t||!Array.isArray(t.messages))throw new Error("messages array is required");const e=L(),a=new AbortController;t.signal&&(t.signal.aborted?a.abort(t.signal.reason):t.signal.addEventListener("abort",()=>a.abort(t.signal.reason),{once:!0}));const i=h.sendStream({type:"llm.chat",messages:t.messages,options:t.options||{}},{onChunk:u=>e.push(u),idleMs:t.idleMs??6e4,signal:a.signal}).then(u=>(e.finish(null),u),u=>{throw e.finish(u),u});function r(){a.signal.aborted||a.abort(new Error("aborted"))}return{stream:e.iterate(),result:i,cancel:r}}async function c(t){const e=typeof t.onDelta=="function"?t.onDelta:()=>{},{stream:a,result:i}=s(t);try{for await(const r of a)e(r)}catch{}return i}return{chat:s,chatTo:c}}const U={style:{"margin-bottom":"24px"}},j={class:"page-title"},F={class:"page-sub"},R={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-top":"12px"}},W={style:{display:"flex",gap:"8px","align-items":"center",color:"var(--text-muted)","font-size":"11px"}},G={key:0},H={key:1},I={key:2},J={key:0,style:{color:"#1677ff","font-size":"11px"}},X={key:1,style:{color:"#52c41a","font-size":"11px"}},Y={key:0,style:{margin:"0","white-space":"pre-wrap","font-family":"var(--font-body, system-ui)","font-size":"13px"}},Z={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px","margin-top":"8px"}},ee={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}},le={__name:"QuickAsk",setup(h){const s=Q(),c=w(""),t=w(""),e=w(""),a=w(!1),i=w(""),r=w(null);let u=null;async function $(){if(!(a.value||!c.value.trim())){a.value=!0,e.value="",i.value="",r.value=null;try{const n=[{role:"user",content:c.value}],k={},C=t.value.trim();C&&(k.model=C);const g=s.chat({messages:n,options:k});u=g;try{for await(const y of g.stream)y?.content?e.value=y.content:y?.delta&&(e.value+=y.delta)}catch{}const p=await g.result;r.value={model:p?.model||null,tokens:p?.tokens??null},!e.value&&p?.message?.content&&(e.value=p.message.content)}catch(n){i.value=n?.message||String(n)}finally{a.value=!1,u=null}}}function O(){u?.cancel&&u.cancel()}function B(){e.value="",i.value="",r.value=null}return(n,k)=>{const C=b("a-textarea"),g=b("a-input"),p=b("a-button"),y=b("a-space"),z=b("a-card"),D=b("a-empty");return o(),f("div",null,[_("div",U,[_("h2",j,l(n.$t("quickAsk.title")),1),_("p",F,l(n.$t("quickAsk.subtitle")),1)]),m(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:d(()=>[m(C,{value:c.value,"onUpdate:value":k[0]||(k[0]=S=>c.value=S),rows:4,placeholder:n.$t("quickAsk.promptPlaceholder"),disabled:a.value,onKeydown:[M(N($,["ctrl","prevent"]),["enter"]),M(N($,["meta","prevent"]),["enter"])]},null,8,["value","placeholder","disabled","onKeydown"]),_("div",R,[_("div",W,[m(g,{value:t.value,"onUpdate:value":k[1]||(k[1]=S=>t.value=S),placeholder:n.$t("quickAsk.modelPlaceholder"),size:"small",style:{width:"200px"},disabled:a.value,"allow-clear":""},null,8,["value","placeholder","disabled"]),e.value?(o(),f("span",G,l(e.value.length)+" "+l(n.$t("quickAsk.charsSuffix")),1)):v("",!0),r.value?(o(),f("span",H,"· "+l(r.value.tokens??0)+" "+l(n.$t("quickAsk.tokensSuffix")),1)):v("",!0),r.value?.model?(o(),f("span",I,"· "+l(r.value.model),1)):v("",!0)]),m(y,null,{default:d(()=>[e.value||i.value?(o(),A(p,{key:0,disabled:a.value,onClick:B},{default:d(()=>[q(l(n.$t("quickAsk.clear")),1)]),_:1},8,["disabled"])):v("",!0),a.value?(o(),A(p,{key:1,danger:"",onClick:O},{icon:d(()=>[m(x(K))]),default:d(()=>[q(" "+l(n.$t("quickAsk.cancel")),1)]),_:1})):(o(),A(p,{key:2,type:"primary",disabled:!c.value.trim(),onClick:$},{icon:d(()=>[m(x(P))]),default:d(()=>[q(" "+l(n.$t("quickAsk.send")),1)]),_:1},8,["disabled"]))]),_:1})])]),_:1}),e.value||a.value||i.value?(o(),A(z,{key:0,title:n.$t("quickAsk.answerCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:d(()=>[a.value?(o(),f("span",J,[m(x(T),{spin:!0}),q(" "+l(n.$t("quickAsk.streaming")),1)])):r.value?(o(),f("span",X,[m(x(V)),q(" "+l(n.$t("quickAsk.done")),1)])):v("",!0)]),default:d(()=>[e.value?(o(),f("pre",Y,l(e.value),1)):a.value?(o(),A(D,{key:1,description:n.$t("quickAsk.waitingFirstToken")},null,8,["description"])):v("",!0),i.value?(o(),f("div",Z,[_("pre",ee,l(i.value),1)])):v("",!0)]),_:1},8,["title"])):v("",!0)])}}};export{le as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{p as z,e as S,f as h,h as N,a1 as f}from"./index-B2f4ltyM.js";import{u as _,r as u}from"./responsiveObserve-CGX6EYRt.js";import{u as E}from"./useFlexGapSupport-3FQZdpBd.js";import{b as F,c as I}from"./index-C61WQXE3.js";import{d as M,o as T,e as V,c as D,r as $,f as o}from"./vendor-B6ToihkA.js";const J=()=>({align:f([String,Object]),justify:f([String,Object]),prefixCls:String,gutter:f([Number,Array,Object],0),wrap:{type:Boolean,default:void 0}}),P=M({compatConfig:{MODE:3},name:"ARow",inheritAttrs:!1,props:J(),setup(s,G){let{slots:d,attrs:l}=G;const{prefixCls:a,direction:R}=z("row",s),[O,C]=F(a);let m;const v=_(),p=$({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),y=$({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),g=e=>o(()=>{if(typeof s[e]=="string")return s[e];if(typeof s[e]!="object")return"";for(let t=0;t<u.length;t++){const n=u[t];if(!y.value[n])continue;const r=s[e][n];if(r!==void 0)return r}return""}),b=g("align"),x=g("justify"),w=E();T(()=>{m=v.value.subscribe(e=>{y.value=e;const t=s.gutter||0;(!Array.isArray(t)&&typeof t=="object"||Array.isArray(t)&&(typeof t[0]=="object"||typeof t[1]=="object"))&&(p.value=e)})}),V(()=>{v.value.unsubscribe(m)});const A=o(()=>{const e=[void 0,void 0],{gutter:t=0}=s;return(Array.isArray(t)?t:[t,void 0]).forEach((r,j)=>{if(typeof r=="object")for(let i=0;i<u.length;i++){const c=u[i];if(p.value[c]&&r[c]!==void 0){e[j]=r[c];break}}else e[j]=r}),e});I({gutter:A,supportFlexGap:w,wrap:o(()=>s.wrap)});const k=o(()=>N(a.value,{[`${a.value}-no-wrap`]:s.wrap===!1,[`${a.value}-${x.value}`]:x.value,[`${a.value}-${b.value}`]:b.value,[`${a.value}-rtl`]:R.value==="rtl"},l.class,C.value)),B=o(()=>{const e=A.value,t={},n=e[0]!=null&&e[0]>0?`${e[0]/-2}px`:void 0,r=e[1]!=null&&e[1]>0?`${e[1]/-2}px`:void 0;return n&&(t.marginLeft=n,t.marginRight=n),w.value?t.rowGap=`${e[1]}px`:r&&(t.marginTop=r,t.marginBottom=r),t});return()=>{var e;return O(D("div",S(S({},l),{},{class:k.value,style:h(h({},B.value),l.style)}),[(e=d.default)===null||e===void 0?void 0:e.call(d)]))}}});export{P as A};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as ke,b as we,u as Ce,d as y}from"./index-B2f4ltyM.js";import{o as Oe,M as k,R as i,P as r,u as t,c as s,N as o,r as g,K as c,a as je,I as ze,L as d,F as D,_ as J,Q as x,O as p,S as R,f as Pe}from"./vendor-B6ToihkA.js";import{u as Te}from"./useFs-BW1piLQM.js";import{i as W,aj as Y,l as Se,$ as X,al as Ae,av as Fe,au as $e,k as Z,aA as Be,az as Ie}from"./icons-zXb7lDZs.js";import"./useShellMode-CgR0wCYM.js";const Ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={class:"page-title"},Le={class:"page-sub"},De={style:{display:"flex","align-items":"flex-start",gap:"10px"}},Je={style:{flex:"1","min-width":"0"}},Re={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","font-family":"monospace","margin-bottom":"4px"}},Ue={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ke={style:{"margin-top":"12px","text-align":"right"}},Me={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},Ve={key:0,style:{"text-align":"center",padding:"40px"}},qe={style:{color:"var(--text-muted)","margin-top":"8px"}},He={style:{display:"flex","align-items":"flex-start",gap:"10px"}},Ge={style:{flex:"1","min-width":"0"}},Qe={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px"}},We={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ye={key:0,style:{"margin-top":"4px"}},Xe={style:{"margin-top":"12px","text-align":"right"}},Ze={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},et={style:{"margin-bottom":"16px",display:"flex",gap:"8px"}},tt={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},at={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px",flex:"1",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ot={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5","max-height":"60px",overflow:"hidden","text-overflow":"ellipsis","white-space":"pre-wrap"}},st={style:{"margin-top":"12px",display:"flex",gap:"8px","justify-content":"flex-end"}},lt={style:{color:"var(--text-muted)","font-size":"12px"}},ee="cc_prompt_templates",nt={__name:"Templates",setup(rt){const{t:e}=we(),P=Ce(),te=ze(),U=Te(),T=g(!1),S=g(!1),K=g("project"),A=g(""),b=g(null),w=g(!1),F=g(""),ae=["code-project","data-science","devops","medical-triage","agriculture-expert","general-assistant","ai-media-creator","ai-doc-creator","empty"],oe=Pe(()=>ae.map(l=>({name:l,description:e(`templates.project.items.${l}`)})));function se(l){F.value=l,w.value=!0}async function le(){w.value=!1;const l=F.value;if(l){A.value=l,b.value=null;try{const a=`init --template ${l} --yes`,{output:u,exitCode:_}=await P.execute(a,3e4);b.value={success:_===0,output:u}}catch(a){b.value={success:!1,output:e("templates.messages.initFailed",{err:a.message})}}finally{A.value=""}}}const $=g(!1),C=g([]),B=g(""),h=g(null);async function ne(){$.value=!0;try{const{output:l}=await P.execute("bi templates --json",15e3),a=JSON.parse(l);C.value=Array.isArray(a)?a:a.templates||[]}catch{C.value=[]}finally{$.value=!1}}async function re(l){B.value=l,h.value=null;try{const a=`bi dashboard create --template ${l} --json`,{output:u,exitCode:_}=await P.execute(a,3e4);h.value={success:_===0,output:u}}catch(a){h.value={success:!1,output:e("templates.messages.createFailed",{err:a.message})}}finally{B.value=""}}const v=g([]),O=g(!1),m=je({name:"",category:"general",content:""});function ie(){try{const l=localStorage.getItem(ee);v.value=l?JSON.parse(l):[]}catch{v.value=[]}}function I(){localStorage.setItem(ee,JSON.stringify(v.value))}function pe(){!m.name||!m.content||(v.value.push({name:m.name,category:m.category,content:m.content}),I(),M(),y.success(e("templates.messages.promptSaved")))}function M(){O.value=!1,m.name="",m.category="general",m.content=""}async function ce(){if(v.value.length){T.value=!0;try{const l=await U.saveJson({schema:1,prompts:v.value},{defaultPath:`prompt-templates-${new Date().toISOString().slice(0,10)}.json`});if(l.canceled)return;y.success(l.path?e("templates.messages.exportOk",{count:v.value.length,path:l.path}):e("templates.messages.exportOkDefault"))}catch(l){y.error(e("templates.messages.exportFailed",{err:l.message||l}))}finally{T.value=!1}}}async function me(){S.value=!0;try{const l=await U.pickFileText({title:e("templates.prompts.filePickerTitle"),filters:[{name:"JSON",extensions:["json"]}]});if(!l||l.canceled)return;if(l.reason==="too_large"){y.error(e("templates.messages.fileTooLarge"));return}let a;try{a=JSON.parse(l.content||"")}catch(f){y.error(e("templates.messages.jsonParseFailed",{err:f.message}));return}const u=Array.isArray(a)?a:Array.isArray(a?.prompts)?a.prompts:null;if(!u){y.error(e("templates.messages.fileShapeUnknown",{expected:"prompts: [...]"}));return}let _=0;for(const f of u)!f||typeof f!="object"||typeof f.name!="string"||typeof f.content!="string"||(v.value.push({name:f.name,category:typeof f.category=="string"?f.category:"general",content:f.content}),_++);_?(I(),y.success(e("templates.messages.importedCount",{count:_}))):y.warning(e("templates.messages.importEmpty"))}catch(l){y.error(e("templates.messages.importFailed",{err:l.message||l}))}finally{S.value=!1}}function ue(l){v.value.splice(l,1),I(),y.success(e("templates.messages.promptDeleted"))}function de(l){navigator.clipboard.writeText(l.content).then(()=>{y.success(e("templates.messages.copiedClipboard"))}).catch(()=>{y.error(e("templates.messages.copyFailed"))})}function fe(l){te.push({path:"/chat",query:{prompt:l.content}})}function ge(l){return{general:"blue",code:"green",writing:"orange",analysis:"purple"}[l]||"default"}return Oe(()=>{ie(),ne()}),(l,a)=>{const u=c("a-button"),_=c("a-card"),f=c("a-col"),N=c("a-row"),V=c("a-alert"),E=c("a-tab-pane"),ve=c("a-spin"),q=c("a-empty"),H=c("a-tag"),ye=c("a-tabs"),G=c("a-modal"),_e=c("a-input"),L=c("a-form-item"),j=c("a-select-option"),xe=c("a-select"),be=c("a-textarea"),he=c("a-form");return d(),k("div",null,[i("div",Ne,[i("div",null,[i("h2",Ee,r(t(e)("templates.title")),1),i("p",Le,r(t(e)("templates.subtitle")),1)])]),s(ye,{activeKey:K.value,"onUpdate:activeKey":a[3]||(a[3]=n=>K.value=n),type:"card"},{default:o(()=>[s(E,{key:"project"},{tab:o(()=>[s(t(Se)),p(" "+r(t(e)("templates.tabs.project")),1)]),default:o(()=>[s(N,{gutter:[16,16]},{default:o(()=>[(d(!0),k(D,null,J(oe.value,n=>(d(),x(f,{key:n.name,xs:24,sm:12,lg:8},{default:o(()=>[s(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[i("div",De,[s(t(W),{style:{"font-size":"24px",color:"#1677ff","flex-shrink":"0","margin-top":"2px"}}),i("div",Je,[i("div",Re,r(n.name),1),i("div",Ue,r(n.description),1)])]),i("div",Ke,[s(u,{type:"primary",size:"small",loading:A.value===n.name,onClick:z=>se(n.name)},{icon:o(()=>[s(t(Y))]),default:o(()=>[p(" "+r(t(e)("templates.project.initButton")),1)]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1}),b.value?(d(),x(V,{key:0,message:b.value.success?t(e)("templates.project.initSuccessAlert"):t(e)("templates.project.initFailureAlert"),type:b.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:a[0]||(a[0]=n=>b.value=null)},{description:o(()=>[i("pre",Me,r(b.value.output),1)]),_:1},8,["message","type"])):R("",!0)]),_:1}),s(E,{key:"bi"},{tab:o(()=>[s(t(X)),p(" "+r(t(e)("templates.tabs.bi")),1)]),default:o(()=>[$.value?(d(),k("div",Ve,[s(ve),i("div",qe,r(t(e)("templates.bi.loadingHint")),1)])):C.value.length?(d(),x(N,{key:2,gutter:[16,16]},{default:o(()=>[(d(!0),k(D,null,J(C.value,n=>(d(),x(f,{key:n.id,xs:24,sm:12,lg:8},{default:o(()=>[s(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[i("div",He,[s(t(X),{style:{"font-size":"24px",color:"#722ed1","flex-shrink":"0","margin-top":"2px"}}),i("div",Ge,[i("div",Qe,r(n.name),1),i("div",We,r(n.description||t(e)("templates.bi.noDescription")),1),n.id?(d(),k("div",Ye,[s(H,{size:"small",color:"purple"},{default:o(()=>[p(r(n.id),1)]),_:2},1024)])):R("",!0)])]),i("div",Xe,[s(u,{type:"primary",size:"small",loading:B.value===n.id,onClick:z=>re(n.id)},{icon:o(()=>[s(t(Y))]),default:o(()=>[p(" "+r(t(e)("templates.bi.createButton")),1)]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(d(),x(q,{key:1,description:t(e)("templates.bi.emptyText")},null,8,["description"])),h.value?(d(),x(V,{key:3,message:h.value.success?t(e)("templates.bi.createSuccessAlert"):t(e)("templates.bi.createFailureAlert"),type:h.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:a[1]||(a[1]=n=>h.value=null)},{description:o(()=>[i("pre",Ze,r(h.value.output),1)]),_:1},8,["message","type"])):R("",!0)]),_:1}),s(E,{key:"prompts"},{tab:o(()=>[s(t(Z)),p(" "+r(t(e)("templates.tabs.prompts")),1)]),default:o(()=>[i("div",et,[s(u,{type:"primary",onClick:a[2]||(a[2]=n=>O.value=!0)},{icon:o(()=>[s(t(Ae))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.newButton")),1)]),_:1}),s(u,{disabled:!v.value.length,loading:T.value,onClick:ce},{icon:o(()=>[s(t(Fe))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.exportAll")),1)]),_:1},8,["disabled","loading"]),s(u,{loading:S.value,onClick:me},{icon:o(()=>[s(t($e))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.import")),1)]),_:1},8,["loading"])]),v.value.length?(d(),x(N,{key:1,gutter:[16,16]},{default:o(()=>[(d(!0),k(D,null,J(v.value,(n,z)=>(d(),x(f,{key:z,xs:24,sm:12,lg:8},{default:o(()=>[s(_,{size:"small",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[i("div",tt,[s(t(Z),{style:{"font-size":"18px",color:"#52c41a"}}),i("span",at,r(n.name),1),s(H,{color:ge(n.category),size:"small"},{default:o(()=>[p(r(n.category),1)]),_:2},1032,["color"])]),i("div",ot,r(n.content.length>120?n.content.slice(0,120)+"...":n.content),1),i("div",st,[s(u,{size:"small",onClick:Q=>fe(n)},{icon:o(()=>[s(t(W))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.useButton")),1)]),_:1},8,["onClick"]),s(u,{size:"small",onClick:Q=>de(n)},{icon:o(()=>[s(t(Be))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.copyButton")),1)]),_:1},8,["onClick"]),s(u,{size:"small",danger:"",onClick:Q=>ue(z)},{icon:o(()=>[s(t(Ie))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.deleteButton")),1)]),_:1},8,["onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(d(),x(q,{key:0,description:t(e)("templates.prompts.emptyText")},null,8,["description"]))]),_:1})]),_:1},8,["activeKey"]),s(G,{open:w.value,"onUpdate:open":a[4]||(a[4]=n=>w.value=n),title:t(e)("templates.project.confirmTitle"),onOk:le,onCancel:a[5]||(a[5]=n=>w.value=!1),"ok-text":t(e)("templates.project.confirmOk"),"cancel-text":t(e)("common.cancel")},{default:o(()=>[i("p",null,[p(r(t(e)("templates.project.confirmIntro"))+" ",1),i("strong",null,r(F.value),1),p(" "+r(t(e)("templates.project.confirmIntroSuffix")),1)]),i("p",lt,r(t(e)("templates.project.confirmHint")),1)]),_:1},8,["open","title","ok-text","cancel-text"]),s(G,{open:O.value,"onUpdate:open":a[9]||(a[9]=n=>O.value=n),title:t(e)("templates.prompts.modalTitle"),onOk:pe,onCancel:M,"ok-text":t(e)("templates.prompts.modalOk"),"cancel-text":t(e)("common.cancel"),"ok-button-props":{disabled:!m.name||!m.content}},{default:o(()=>[s(he,{layout:"vertical"},{default:o(()=>[s(L,{label:t(e)("templates.prompts.nameLabel"),required:""},{default:o(()=>[s(_e,{value:m.name,"onUpdate:value":a[6]||(a[6]=n=>m.name=n),placeholder:t(e)("templates.prompts.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),s(L,{label:t(e)("templates.prompts.categoryLabel")},{default:o(()=>[s(xe,{value:m.category,"onUpdate:value":a[7]||(a[7]=n=>m.category=n),style:{width:"100%"}},{default:o(()=>[s(j,{value:"general"},{default:o(()=>[...a[10]||(a[10]=[p("general",-1)])]),_:1}),s(j,{value:"code"},{default:o(()=>[...a[11]||(a[11]=[p("code",-1)])]),_:1}),s(j,{value:"writing"},{default:o(()=>[...a[12]||(a[12]=[p("writing",-1)])]),_:1}),s(j,{value:"analysis"},{default:o(()=>[...a[13]||(a[13]=[p("analysis",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),s(L,{label:t(e)("templates.prompts.contentLabel"),required:""},{default:o(()=>[s(be,{value:m.content,"onUpdate:value":a[8]||(a[8]=n=>m.content=n),rows:6,placeholder:t(e)("templates.prompts.contentPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","ok-text","cancel-text","ok-button-props"])])}}},dt=ke(nt,[["__scopeId","data-v-d59b8b0a"]]);export{dt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as et,u as tt,b as at,d as m}from"./index-B2f4ltyM.js";import{s as nt}from"./community-parser-CO25nZFt.js";import{R as lt,al as ot,_ as me,D as st,aK as rt,aU as Ue,m as ut}from"./icons-zXb7lDZs.js";import{o as it,M as f,R as v,P as u,c as l,N as a,Q as b,S as h,K as y,r as S,L as i,O as p,u as g,F as C,_ as z,a as ne,f as le}from"./vendor-B6ToihkA.js";function D(s){const r=nt(s);if(!r)return null;try{return JSON.parse(r)}catch{}const o=r.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!o)return null;try{return JSON.parse(o[0])}catch{return null}}const Y=Object.freeze(["free","starter","pro","enterprise"]),dt=Object.freeze(["active","suspended","deleted"]),je=Object.freeze(["api_calls","storage_bytes","ai_requests"]);function F(s,r=0){return typeof s=="number"&&Number.isFinite(s)?s:r}function ct(s,r=0){if(!s||typeof s!="object")return null;const o=s.id||"";if(!o)return null;const w=s.quotas&&typeof s.quotas=="object"?{...s.quotas}:{};return{key:o,id:o,name:String(s.name||o),monthlyFee:s.monthlyFee==null?null:F(s.monthlyFee,null),quotas:w,features:Array.isArray(s.features)?s.features.filter(K=>typeof K=="string"):[],_idx:r}}function pt(s){const r=D(s);return Array.isArray(r)?r.map(ct).filter(Boolean):[]}function ft(s,r=0){if(!s||typeof s!="object")return null;const o=s.id||"";return o?{key:o,id:o,name:String(s.name||o),unit:String(s.unit||""),_idx:r}:null}function mt(s){const r=D(s);return Array.isArray(r)?r.map(ft).filter(Boolean):[]}function vt(s,r=0){if(!s||typeof s!="object")return null;const o=s.id||"";return o?{key:o,id:o,name:String(s.name||""),slug:String(s.slug||""),config:s.config??null,status:String(s.status||"active").toLowerCase(),plan:String(s.plan||"free").toLowerCase(),dbPath:s.dbPath||null,ownerId:s.ownerId||"",createdAt:s.createdAt??null,updatedAt:s.updatedAt??null,deletedAt:s.deletedAt??null,_idx:r}:null}function yt(s){const r=D(s);return Array.isArray(r)?r.map(vt).filter(Boolean):[]}function bt(s,r=0){if(!s||typeof s!="object")return null;const o=s.id||"";return o?{key:o,id:o,tenantId:String(s.tenantId||""),plan:String(s.plan||"free").toLowerCase(),status:String(s.status||"active").toLowerCase(),startedAt:s.startedAt??null,expiresAt:s.expiresAt??null,cancelledAt:s.cancelledAt??null,paymentMethod:s.paymentMethod||null,amount:s.amount==null?null:F(s.amount,null),createdAt:s.createdAt??null,_idx:r}:null}function gt(s){const r=D(s);return Array.isArray(r)?r.map(bt).filter(Boolean):[]}function _t(s){const r=D(s);return!r||typeof r!="object"||Array.isArray(r)?null:{tenantId:String(r.tenantId||""),plan:String(r.plan||"free").toLowerCase(),metric:String(r.metric||""),period:String(r.period||""),limit:r.limit==null?null:F(r.limit,null),used:F(r.used,0),remaining:r.remaining==null?null:F(r.remaining,null),unlimited:!!r.unlimited,exceeded:!!r.exceeded}}const kt={tenantCount:0,byStatus:{active:0,suspended:0,deleted:0},byPlan:{free:0,starter:0,pro:0,enterprise:0},subscriptionCount:0,activeSubscriptions:0,usageRecordCount:0,totalUsage:{api_calls:0,storage_bytes:0,ai_requests:0}};function $t(s){const r=JSON.parse(JSON.stringify(kt)),o=D(s);if(!o||typeof o!="object"||Array.isArray(o))return r;if(r.tenantCount=F(o.tenantCount,0),r.subscriptionCount=F(o.subscriptionCount,0),r.activeSubscriptions=F(o.activeSubscriptions,0),r.usageRecordCount=F(o.usageRecordCount,0),o.byStatus&&typeof o.byStatus=="object")for(const w of Object.keys(r.byStatus))r.byStatus[w]=F(o.byStatus[w],0);if(o.byPlan&&typeof o.byPlan=="object")for(const w of Object.keys(r.byPlan))r.byPlan[w]=F(o.byPlan[w],0);if(o.totalUsage&&typeof o.totalUsage=="object")for(const w of Object.keys(r.totalUsage))r.totalUsage[w]=F(o.totalUsage[w],0);return r}function ve(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})}function ye(s){return typeof s!="number"||!Number.isFinite(s)||s<0?"—":s===0?"0":s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:s<1024*1024*1024?`${(s/1024/1024).toFixed(1)} MB`:`${(s/1024/1024/1024).toFixed(2)} GB`}function ht(s=new Date){const r=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0");return`${r}-${o}`}const St={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ct={class:"page-title"},xt={class:"page-sub"},wt={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},At={class:"filter-bar"},zt={style:{color:"var(--text-primary)","font-weight":"500"}},qt={style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px","font-family":"monospace"}},Ft={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Lt={key:1,style:{color:"var(--text-muted)"}},Ut={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},jt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},It={style:{color:"var(--text-primary)","font-weight":"500"}},Tt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Pt={key:0,style:{color:"#722ed1","font-weight":"500"}},Nt={key:1,style:{color:"var(--text-muted)"}},Ot={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Mt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Rt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Et={class:"plan-fee"},Bt={key:0},Dt={class:"plan-fee-unit"},Kt={key:1,style:{color:"#722ed1"}},Jt={class:"plan-section"},Qt={class:"plan-section-title"},Vt={class:"plan-quota-label"},Wt={class:"plan-quota-value"},Gt={class:"plan-section"},Yt={class:"plan-section-title"},Ht={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},Xt={style:{"font-family":"monospace",color:"var(--text-primary)"}},Zt={key:0},ea={style:{"font-family":"monospace"}},ta={key:1,style:{"margin-top":"8px"}},aa={__name:"Tenant",setup(s){const r=tt(),{t:o}=at(),w=S(!1),K=S(!1),oe=S(!1),se=S(!1),re=S(!1),J=S([]),ue=S([]),be=S([]),ge=S([]),L=S({tenantCount:0,byStatus:{active:0,suspended:0,deleted:0},byPlan:{free:0,starter:0,pro:0,enterprise:0},subscriptionCount:0,activeSubscriptions:0,usageRecordCount:0,totalUsage:{api_calls:0,storage_bytes:0,ai_requests:0}}),ie=S("tenants"),Q=S(""),V=S(""),H=S(!1),X=S(!1),de=S(!1),Z=S(!1),x=ne({name:"",slug:"",plan:"free",owner:""}),$=ne({tenantId:"",plan:"pro",amount:null,duration:720*60*60*1e3}),ce=S(""),q=ne({tenantId:null,metric:"api_calls",period:""}),_=ne({tenantId:null,metric:"api_calls",value:1,period:""}),k=S(null),Ie=le(()=>[{title:o("tenant.tenantCols.name"),key:"name"},{title:o("tenant.tenantCols.plan"),key:"plan",width:"110px"},{title:o("tenant.tenantCols.status"),key:"status",width:"100px"},{title:o("tenant.tenantCols.owner"),key:"owner",width:"160px"},{title:o("tenant.tenantCols.createdAt"),key:"createdAt",width:"160px"},{title:o("tenant.tenantCols.action"),key:"action",width:"280px"}]),Te=le(()=>[{title:o("tenant.subscriptionCols.tenant"),key:"tenant"},{title:o("tenant.subscriptionCols.plan"),key:"plan",width:"110px"},{title:o("tenant.subscriptionCols.amount"),key:"amount",width:"100px"},{title:o("tenant.subscriptionCols.status"),key:"status",width:"110px"},{title:o("tenant.subscriptionCols.startedAt"),key:"startedAt",width:"160px"},{title:o("tenant.subscriptionCols.expiresAt"),key:"expiresAt",width:"160px"},{title:o("tenant.subscriptionCols.action"),key:"action",width:"120px"}]),Pe=le(()=>{let e=J.value;return Q.value&&(e=e.filter(n=>n.plan===Q.value)),V.value&&(e=e.filter(n=>n.status===V.value)),e}),Ne=le(()=>ue.value.filter(e=>e.status==="active"&&typeof e.amount=="number").reduce((e,n)=>e+n.amount,0));function I(e){const n=`tenant.planLabels.${e}`,d=o(n);return d===n?e:d}function W(e){return{free:"default",starter:"blue",pro:"purple",enterprise:"gold"}[e]||"default"}function _e(e){const n=`tenant.tenantStatusLabels.${e}`,d=o(n);return d===n?e:d}function Oe(e){return{active:"green",suspended:"orange",deleted:"default"}[e]||"default"}function Me(e){const n=`tenant.subStatusLabels.${e}`,d=o(n);return d===n?e:d}function Re(e){return{active:"green",cancelled:"default",expired:"red",past_due:"orange"}[e]||"default"}function Ee(e){const n=J.value.find(d=>d.id===e);return n?n.name:o("tenant.deletedTenant")}function ke(e,n){return e==null?"—":n==="storage_bytes"?ye(e):String(e)}function Be(e,n){return e==null?o("tenant.planCard.unlimited"):n==="storage_bytes"?ye(e):e.toLocaleString()}function De({key:e}){e==="tenant"?H.value=!0:e==="quota"?(k.value=null,de.value=!0):e==="record"&&(Z.value=!0)}async function T(){w.value=!0;try{const[e,n,d,U,ee]=await Promise.all([r.execute("tenant list --json",1e4).catch(()=>({output:""})),r.execute("tenant subscriptions --json",1e4).catch(()=>({output:""})),r.execute("tenant plans --json",8e3).catch(()=>({output:""})),r.execute("tenant metrics --json",8e3).catch(()=>({output:""})),r.execute("tenant stats --json",8e3).catch(()=>({output:""}))]);J.value=yt(e.output),ue.value=gt(n.output),be.value=pt(d.output),ge.value=mt(U.output),L.value=$t(ee.output)}catch(e){m.error(o("tenant.msg.loadFailed")+": "+(e?.message||e))}finally{w.value=!1}}async function Ke(){const e=x.name.trim(),n=x.slug.trim();if(!e||!n){m.warning(o("tenant.msg.createFieldsEmpty"));return}if(!/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/.test(n)){m.warning(o("tenant.msg.slugInvalid"));return}K.value=!0;try{const d=[`tenant create "${e.replace(/"/g,'\\"')}" "${n.replace(/"/g,'\\"')}"`];d.push(`--plan ${x.plan}`),x.owner.trim()&&d.push(`--owner "${x.owner.trim().replace(/"/g,'\\"')}"`),d.push("--json");const{output:U}=await r.execute(d.join(" "),1e4);if(/error|Error|失败/i.test(U)&&!/"id"/.test(U)){m.error(o("tenant.msg.createFailed")+": "+U.slice(0,120));return}m.success(o("tenant.msg.createSuccess")),H.value=!1,he(),await T()}catch(d){m.error(o("tenant.msg.createFailed")+": "+(d?.message||d))}finally{K.value=!1}}function Je(e){$.tenantId=e.id,$.plan=e.plan==="free"?"starter":e.plan,$.amount=null,$.duration=720*60*60*1e3,ce.value=e.name,X.value=!0}async function Qe(){oe.value=!0;try{const e=[`tenant subscribe ${$.tenantId}`];e.push(`--plan ${$.plan}`),$.amount!=null&&e.push(`--amount ${$.amount}`),$.duration&&e.push(`--duration-ms ${$.duration}`),e.push("--json");const{output:n}=await r.execute(e.join(" "),1e4);if(/error|Error|失败/i.test(n)&&!/"id"/.test(n)){m.error(o("tenant.msg.subscribeFailed")+": "+n.slice(0,120));return}m.success(o("tenant.msg.subscribeSuccess")),X.value=!1,Se(),ie.value="subscriptions",await T()}catch(e){m.error(o("tenant.msg.subscribeFailed")+": "+(e?.message||e))}finally{oe.value=!1}}async function Ve(e,n){if(n!==e.plan)try{const{output:d}=await r.execute(`tenant configure ${e.id} --plan ${n} --json`,8e3);if(/error|Error/i.test(d)&&!/"id"/.test(d)){m.error(o("tenant.msg.planChangeFailed")+": "+d.slice(0,120));return}m.success(o("tenant.msg.planChangeSuccess",{plan:I(n)})),await T()}catch(d){m.error(o("tenant.msg.planChangeFailed")+": "+(d?.message||d))}}async function $e(e,n){try{const{output:d}=await r.execute(`tenant configure ${e.id} --status ${n} --json`,8e3);if(/error|Error/i.test(d)&&!/"id"/.test(d)){m.error(o("tenant.msg.statusChangeFailed")+": "+d.slice(0,120));return}m.success(o(n==="active"?"tenant.msg.activated":"tenant.msg.suspended")),await T()}catch(d){m.error(o("tenant.msg.statusChangeFailed")+": "+(d?.message||d))}}async function We(e){try{const{output:n}=await r.execute(`tenant delete ${e.id} --json`,8e3);if(/error|Error/i.test(n)&&!/deleted|removed/.test(n)){m.error(o("tenant.msg.deleteFailed")+": "+n.slice(0,120));return}m.success(o("tenant.msg.deleteSuccess")),await T()}catch(n){m.error(o("tenant.msg.deleteFailed")+": "+(n?.message||n))}}async function Ge(e){try{const{output:n}=await r.execute(`tenant cancel ${e.tenantId}`,8e3);if(/error|Error/i.test(n)&&!/cancelled|cancel/i.test(n)){m.error(o("tenant.msg.cancelFailed")+": "+n.slice(0,120));return}m.success(o("tenant.msg.cancelSuccess")),await T()}catch(n){m.error(o("tenant.msg.cancelFailed")+": "+(n?.message||n))}}async function Ye(){if(!q.tenantId){m.warning(o("tenant.msg.tenantEmpty"));return}se.value=!0,k.value=null;try{const e=[`tenant check-quota ${q.tenantId} ${q.metric}`];q.period.trim()&&e.push(`--period ${q.period.trim()}`),e.push("--json");const{output:n}=await r.execute(e.join(" "),8e3),d=_t(n);if(!d){m.error(o("tenant.msg.checkFailed")+": "+n.slice(0,120));return}k.value=d,d.exceeded&&m.warning(o("tenant.msg.exceededWarning"))}catch(e){m.error(o("tenant.msg.checkFailed")+": "+(e?.message||e))}finally{se.value=!1}}async function He(){if(!_.tenantId){m.warning(o("tenant.msg.tenantEmpty"));return}if(_.value==null||_.value<0){m.warning(o("tenant.msg.valueInvalid"));return}re.value=!0;try{const e=[`tenant record ${_.tenantId} ${_.metric} ${_.value}`];_.period.trim()&&e.push(`--period ${_.period.trim()}`),e.push("--json");const{output:n}=await r.execute(e.join(" "),8e3);if(/error|Error/i.test(n)&&!/"id"|"tenant"/.test(n)){m.error(o("tenant.msg.recordFailed")+": "+n.slice(0,120));return}m.success(o("tenant.msg.recordSuccess")),Z.value=!1,Ce(),await T()}catch(e){m.error(o("tenant.msg.recordFailed")+": "+(e?.message||e))}finally{re.value=!1}}function he(){x.name="",x.slug="",x.plan="free",x.owner=""}function Se(){$.tenantId="",$.plan="pro",$.amount=null,$.duration=720*60*60*1e3,ce.value=""}function Ce(){_.tenantId=null,_.metric="api_calls",_.value=1,_.period=""}function xe(e){e.period||(e.period=ht())}return xe(q),xe(_),it(T),(e,n)=>{const d=y("a-button"),U=y("a-menu-item"),ee=y("a-menu"),we=y("a-dropdown"),Ae=y("a-space"),M=y("a-statistic"),P=y("a-card"),R=y("a-col"),ze=y("a-row"),N=y("a-tag"),O=y("a-radio-button"),pe=y("a-radio-group"),qe=y("a-popconfirm"),Fe=y("a-table"),fe=y("a-tab-pane"),Xe=y("a-tabs"),G=y("a-input"),A=y("a-form-item"),E=y("a-select-option"),B=y("a-select"),te=y("a-form"),ae=y("a-modal"),Le=y("a-input-number"),Ze=y("a-progress");return i(),f("div",null,[v("div",St,[v("div",null,[v("h2",Ct,u(e.$t("tenant.title")),1),v("p",xt,u(e.$t("tenant.subtitle")),1)]),l(Ae,null,{default:a(()=>[l(d,{loading:w.value,onClick:T},{icon:a(()=>[l(g(lt))]),default:a(()=>[p(" "+u(e.$t("tenant.refresh")),1)]),_:1},8,["loading"]),l(we,{trigger:["click"]},{overlay:a(()=>[l(ee,{onClick:De},{default:a(()=>[l(U,{key:"tenant"},{default:a(()=>[l(g(me)),p(" "+u(e.$t("tenant.actions.tenant")),1)]),_:1}),l(U,{key:"quota"},{default:a(()=>[l(g(st)),p(" "+u(e.$t("tenant.actions.quota")),1)]),_:1}),l(U,{key:"record"},{default:a(()=>[l(g(rt)),p(" "+u(e.$t("tenant.actions.record")),1)]),_:1})]),_:1})]),default:a(()=>[l(d,{type:"primary"},{icon:a(()=>[l(g(ot))]),default:a(()=>[p(" "+u(e.$t("tenant.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),l(ze,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[l(R,{xs:12,sm:8,lg:5},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.total"),value:L.value.tenantCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[l(g(me))]),_:1},8,["title","value"])]),_:1})]),_:1}),l(R,{xs:12,sm:8,lg:5},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.active"),value:L.value.activeSubscriptions,"value-style":{color:L.value.activeSubscriptions>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:a(()=>[l(g(Ue))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(R,{xs:12,sm:8,lg:5},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.mrr"),value:Ne.value,precision:0,prefix:"¥","value-style":{color:"#722ed1",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),l(R,{xs:12,sm:8,lg:5},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.apiCalls"),value:L.value.totalUsage.api_calls,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[l(g(ut))]),_:1},8,["title","value"])]),_:1})]),_:1}),l(R,{xs:24,sm:8,lg:4},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.storage"),value:g(ye)(L.value.totalUsage.storage_bytes),"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),L.value.tenantCount>0?(i(),b(P,{key:0,title:e.$t("tenant.plansCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:a(()=>[l(Ae,{size:[12,8],wrap:""},{default:a(()=>[(i(!0),f(C,null,z(g(Y),t=>(i(),b(N,{key:t,color:W(t)},{default:a(()=>[p(u(I(t))+": "+u(L.value.byPlan[t]||0),1)]),_:2},1032,["color"]))),128)),v("span",wt,u(e.$t("tenant.summarySuffix",{active:L.value.byStatus.active,suspended:L.value.byStatus.suspended,deleted:L.value.byStatus.deleted})),1)]),_:1})]),_:1},8,["title"])):h("",!0),l(Xe,{activeKey:ie.value,"onUpdate:activeKey":n[2]||(n[2]=t=>ie.value=t),class:"tenant-tabs"},{default:a(()=>[l(fe,{key:"tenants",tab:e.$t("tenant.tabs.tenants")},{default:a(()=>[v("div",At,[l(pe,{value:Q.value,"onUpdate:value":n[0]||(n[0]=t=>Q.value=t),size:"small"},{default:a(()=>[l(O,{value:""},{default:a(()=>[p(u(e.$t("tenant.filter.allPlans")),1)]),_:1}),(i(!0),f(C,null,z(g(Y),t=>(i(),b(O,{key:t,value:t},{default:a(()=>[p(u(I(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(pe,{value:V.value,"onUpdate:value":n[1]||(n[1]=t=>V.value=t),size:"small","button-style":"solid"},{default:a(()=>[l(O,{value:""},{default:a(()=>[p(u(e.$t("tenant.filter.allStatuses")),1)]),_:1}),(i(!0),f(C,null,z(g(dt),t=>(i(),b(O,{key:t,value:t},{default:a(()=>[p(u(_e(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(Fe,{columns:Ie.value,"data-source":Pe.value,pagination:{pageSize:20,showTotal:t=>e.$t("tenant.table.totalSuffix",{n:t})},size:"small",loading:w.value,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:t,record:c})=>[t.key==="name"?(i(),f(C,{key:0},[v("span",zt,u(c.name),1),v("div",qt,u(c.slug),1)],64)):h("",!0),t.key==="plan"?(i(),b(N,{key:1,color:W(c.plan)},{default:a(()=>[p(u(I(c.plan)),1)]),_:2},1032,["color"])):h("",!0),t.key==="status"?(i(),b(N,{key:2,color:Oe(c.status)},{default:a(()=>[p(u(_e(c.status)),1)]),_:2},1032,["color"])):h("",!0),t.key==="owner"?(i(),f(C,{key:3},[c.ownerId?(i(),f("span",Ft,u(c.ownerId),1)):(i(),f("span",Lt,"—"))],64)):h("",!0),t.key==="createdAt"?(i(),f("span",Ut,u(g(ve)(c.createdAt)),1)):h("",!0),t.key==="action"?(i(),f(C,{key:5},[l(d,{size:"small",type:"link",onClick:j=>Je(c)},{default:a(()=>[p(u(e.$t("tenant.table.actionSubscribe")),1)]),_:1},8,["onClick"]),l(we,{trigger:["click"]},{overlay:a(()=>[l(ee,{onClick:j=>Ve(c,j.key)},{default:a(()=>[(i(!0),f(C,null,z(g(Y),j=>(i(),b(U,{key:j,disabled:j===c.plan},{default:a(()=>[p(u(I(j)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:a(()=>[l(d,{size:"small",type:"link"},{default:a(()=>[p(u(e.$t("tenant.table.actionPlanDropdown")),1)]),_:1})]),_:2},1024),c.status==="active"?(i(),b(d,{key:0,size:"small",type:"link",onClick:j=>$e(c,"suspended")},{default:a(()=>[p(u(e.$t("tenant.table.actionSuspend")),1)]),_:1},8,["onClick"])):c.status==="suspended"?(i(),b(d,{key:1,size:"small",type:"link",onClick:j=>$e(c,"active")},{default:a(()=>[p(u(e.$t("tenant.table.actionActivate")),1)]),_:1},8,["onClick"])):h("",!0),c.status!=="deleted"?(i(),b(qe,{key:2,title:e.$t("tenant.deleteConfirm.title"),"ok-text":e.$t("tenant.deleteConfirm.ok"),"cancel-text":e.$t("tenant.deleteConfirm.cancel"),onConfirm:j=>We(c)},{default:a(()=>[l(d,{size:"small",type:"link",danger:""},{default:a(()=>[p(u(e.$t("tenant.deleteConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):h("",!0)],64)):h("",!0)]),emptyText:a(()=>[v("div",jt,[l(g(me),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+u(Q.value||V.value?e.$t("tenant.table.emptyTenantsFiltered"):e.$t("tenant.table.emptyTenants")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),l(fe,{key:"subscriptions",tab:e.$t("tenant.tabs.subscriptions")},{default:a(()=>[l(Fe,{columns:Te.value,"data-source":ue.value,pagination:{pageSize:20,showTotal:t=>e.$t("tenant.table.totalSuffix",{n:t})},size:"small",loading:w.value,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:t,record:c})=>[t.key==="tenant"?(i(),f(C,{key:0},[v("span",It,u(Ee(c.tenantId)),1),v("div",Tt,u(c.tenantId.slice(0,8)),1)],64)):h("",!0),t.key==="plan"?(i(),b(N,{key:1,color:W(c.plan)},{default:a(()=>[p(u(I(c.plan)),1)]),_:2},1032,["color"])):h("",!0),t.key==="amount"?(i(),f(C,{key:2},[c.amount!=null?(i(),f("span",Pt,"¥"+u(c.amount),1)):(i(),f("span",Nt,"—"))],64)):h("",!0),t.key==="status"?(i(),b(N,{key:3,color:Re(c.status)},{default:a(()=>[p(u(Me(c.status)),1)]),_:2},1032,["color"])):h("",!0),t.key==="startedAt"?(i(),f("span",Ot,u(g(ve)(c.startedAt)),1)):h("",!0),t.key==="expiresAt"?(i(),f("span",Mt,u(g(ve)(c.expiresAt)),1)):h("",!0),t.key==="action"?(i(),f(C,{key:6},[c.status==="active"?(i(),b(qe,{key:0,title:e.$t("tenant.cancelConfirm.title"),"ok-text":e.$t("tenant.cancelConfirm.ok"),"cancel-text":e.$t("tenant.cancelConfirm.cancel"),onConfirm:j=>Ge(c)},{default:a(()=>[l(d,{size:"small",type:"link",danger:""},{default:a(()=>[p(u(e.$t("tenant.cancelConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):h("",!0)],64)):h("",!0)]),emptyText:a(()=>[v("div",Rt,[l(g(Ue),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+u(e.$t("tenant.table.emptySubscriptions")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),l(fe,{key:"plans",tab:e.$t("tenant.tabs.plans")},{default:a(()=>[l(ze,{gutter:[16,16]},{default:a(()=>[(i(!0),f(C,null,z(be.value,t=>(i(),b(R,{key:t.id,xs:24,sm:12,lg:6},{default:a(()=>[l(P,{title:t.name,size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:a(()=>[l(N,{color:W(t.id)},{default:a(()=>[p(u(t.id),1)]),_:2},1032,["color"])]),default:a(()=>[v("div",Et,[t.monthlyFee!=null?(i(),f("span",Bt,[p("¥"+u(t.monthlyFee)+" ",1),v("span",Dt,u(e.$t("tenant.planCard.monthlySuffix")),1)])):(i(),f("span",Kt,u(e.$t("tenant.planCard.contactSales")),1))]),v("div",Jt,[v("div",Qt,u(e.$t("tenant.planCard.quotas")),1),(i(!0),f(C,null,z(ge.value,c=>(i(),f("div",{key:c.id,class:"plan-quota-row"},[v("span",Vt,u(c.name),1),v("span",Wt,u(Be(t.quotas?.[c.id],c.id)),1)]))),128))]),v("div",Gt,[v("div",Yt,u(e.$t("tenant.planCard.features")),1),(i(!0),f(C,null,z(t.features,c=>(i(),b(N,{key:c,style:{"font-size":"10px",margin:"1px"}},{default:a(()=>[p(u(c),1)]),_:2},1024))),128))])]),_:2},1032,["title"])]),_:2},1024))),128))]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),l(ae,{open:H.value,"onUpdate:open":n[7]||(n[7]=t=>H.value=t),title:e.$t("tenant.create_modal.title"),"confirm-loading":K.value,width:520,"ok-text":e.$t("tenant.create_modal.ok"),"cancel-text":e.$t("tenant.create_modal.cancel"),onOk:Ke,onCancel:he},{default:a(()=>[l(te,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[l(A,{label:e.$t("tenant.create_modal.nameLabel"),required:""},{default:a(()=>[l(G,{value:x.name,"onUpdate:value":n[3]||(n[3]=t=>x.name=t),placeholder:e.$t("tenant.create_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.create_modal.slugLabel"),required:""},{default:a(()=>[l(G,{value:x.slug,"onUpdate:value":n[4]||(n[4]=t=>x.slug=t),placeholder:e.$t("tenant.create_modal.slugPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.create_modal.planLabel")},{default:a(()=>[l(B,{value:x.plan,"onUpdate:value":n[5]||(n[5]=t=>x.plan=t)},{default:a(()=>[(i(!0),f(C,null,z(g(Y),t=>(i(),b(E,{key:t,value:t},{default:a(()=>[p(u(I(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.create_modal.ownerLabel")},{default:a(()=>[l(G,{value:x.owner,"onUpdate:value":n[6]||(n[6]=t=>x.owner=t),placeholder:e.$t("tenant.create_modal.ownerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),l(ae,{open:X.value,"onUpdate:open":n[11]||(n[11]=t=>X.value=t),title:e.$t("tenant.subscribe_modal.title",{name:ce.value}),"confirm-loading":oe.value,width:500,"ok-text":e.$t("tenant.subscribe_modal.ok"),"cancel-text":e.$t("tenant.subscribe_modal.cancel"),onOk:Qe,onCancel:Se},{default:a(()=>[l(te,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[l(A,{label:e.$t("tenant.subscribe_modal.planLabel"),required:""},{default:a(()=>[l(B,{value:$.plan,"onUpdate:value":n[8]||(n[8]=t=>$.plan=t)},{default:a(()=>[(i(!0),f(C,null,z(g(Y),t=>(i(),b(E,{key:t,value:t},{default:a(()=>[p(u(I(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.subscribe_modal.amountLabel")},{default:a(()=>[l(Le,{value:$.amount,"onUpdate:value":n[9]||(n[9]=t=>$.amount=t),min:0,placeholder:e.$t("tenant.subscribe_modal.amountPlaceholder"),style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.subscribe_modal.durationLabel")},{default:a(()=>[l(pe,{value:$.duration,"onUpdate:value":n[10]||(n[10]=t=>$.duration=t)},{default:a(()=>[l(O,{value:720*60*60*1e3},{default:a(()=>[p(u(e.$t("tenant.subscribe_modal.duration30")),1)]),_:1}),l(O,{value:2160*60*60*1e3},{default:a(()=>[p(u(e.$t("tenant.subscribe_modal.duration90")),1)]),_:1}),l(O,{value:365*24*60*60*1e3},{default:a(()=>[p(u(e.$t("tenant.subscribe_modal.duration365")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),l(ae,{open:de.value,"onUpdate:open":n[15]||(n[15]=t=>de.value=t),title:e.$t("tenant.quota_modal.title"),"confirm-loading":se.value,width:500,"ok-text":e.$t("tenant.quota_modal.ok"),"cancel-text":e.$t("tenant.quota_modal.cancel"),onOk:Ye},{default:a(()=>[l(te,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[l(A,{label:e.$t("tenant.quota_modal.tenantLabel"),required:""},{default:a(()=>[l(B,{value:q.tenantId,"onUpdate:value":n[12]||(n[12]=t=>q.tenantId=t),"show-search":"",placeholder:e.$t("tenant.quota_modal.tenantPlaceholder")},{default:a(()=>[(i(!0),f(C,null,z(J.value,t=>(i(),b(E,{key:t.id,value:t.id},{default:a(()=>[p(u(t.name)+" ("+u(t.slug)+")",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.quota_modal.metricLabel"),required:""},{default:a(()=>[l(B,{value:q.metric,"onUpdate:value":n[13]||(n[13]=t=>q.metric=t)},{default:a(()=>[(i(!0),f(C,null,z(g(je),t=>(i(),b(E,{key:t,value:t},{default:a(()=>[p(u(t),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.quota_modal.periodLabel")},{default:a(()=>[l(G,{value:q.period,"onUpdate:value":n[14]||(n[14]=t=>q.period=t),placeholder:e.$t("tenant.quota_modal.periodPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),k.value?(i(),b(P,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:a(()=>[l(M,{title:e.$t("tenant.quota_modal.resultTitle"),value:k.value.unlimited?e.$t("tenant.quota_modal.unlimited"):k.value.exceeded?e.$t("tenant.quota_modal.exceeded"):e.$t("tenant.quota_modal.ok_state"),"value-style":{color:k.value.exceeded?"#ff4d4f":k.value.unlimited?"#722ed1":"#52c41a"}},null,8,["title","value","value-style"]),v("div",Ht,[v("div",null,[p(u(e.$t("tenant.quota_modal.planLine"))+" ",1),l(N,{color:W(k.value.plan)},{default:a(()=>[p(u(I(k.value.plan)),1)]),_:1},8,["color"])]),v("div",null,u(e.$t("tenant.quota_modal.periodLine",{period:k.value.period})),1),v("div",null,[p(u(e.$t("tenant.quota_modal.usedLine"))+" ",1),v("span",Xt,u(ke(k.value.used,k.value.metric)),1)]),k.value.unlimited?h("",!0):(i(),f("div",Zt,[p(u(e.$t("tenant.quota_modal.limitLine"))+" ",1),v("span",ea,u(ke(k.value.limit,k.value.metric)),1)])),!k.value.unlimited&&k.value.limit>0?(i(),f("div",ta,[l(Ze,{percent:Math.min(100,Math.round(100*k.value.used/k.value.limit)),size:"small",status:k.value.exceeded?"exception":"active"},null,8,["percent","status"])])):h("",!0)])]),_:1})):h("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),l(ae,{open:Z.value,"onUpdate:open":n[20]||(n[20]=t=>Z.value=t),title:e.$t("tenant.record_modal.title"),"confirm-loading":re.value,width:500,"ok-text":e.$t("tenant.record_modal.ok"),"cancel-text":e.$t("tenant.record_modal.cancel"),onOk:He,onCancel:Ce},{default:a(()=>[l(te,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[l(A,{label:e.$t("tenant.record_modal.tenantLabel"),required:""},{default:a(()=>[l(B,{value:_.tenantId,"onUpdate:value":n[16]||(n[16]=t=>_.tenantId=t),"show-search":"",placeholder:e.$t("tenant.record_modal.tenantPlaceholder")},{default:a(()=>[(i(!0),f(C,null,z(J.value,t=>(i(),b(E,{key:t.id,value:t.id},{default:a(()=>[p(u(t.name)+" ("+u(t.slug)+")",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.record_modal.metricLabel"),required:""},{default:a(()=>[l(B,{value:_.metric,"onUpdate:value":n[17]||(n[17]=t=>_.metric=t)},{default:a(()=>[(i(!0),f(C,null,z(g(je),t=>(i(),b(E,{key:t,value:t},{default:a(()=>[p(u(t),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.record_modal.valueLabel"),required:""},{default:a(()=>[l(Le,{value:_.value,"onUpdate:value":n[18]||(n[18]=t=>_.value=t),min:0,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.record_modal.periodLabel")},{default:a(()=>[l(G,{value:_.period,"onUpdate:value":n[19]||(n[19]=t=>_.period=t),placeholder:e.$t("tenant.record_modal.periodPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}}},ra=et(aa,[["__scopeId","data-v-7210f1ac"]]);export{ra as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as F}from"./index-B2f4ltyM.js";import{u as R}from"./useShellMode-CgR0wCYM.js";import{ae as j,b as q,w as H,f as P,af as Q,d as T}from"./icons-zXb7lDZs.js";import{M as g,R as a,O as l,c as r,N as o,Q as d,S as c,K as f,f as G,r as b,L as t,P as u,u as x,F as I,_ as J}from"./vendor-B6ToihkA.js";function X(){const z=F();async function C(_,s={}){if(typeof _!="string"||_.length===0)throw new Error("data is required");const p=typeof s.onStage=="function"?s.onStage:()=>{};return z.sendStream({type:"ukey.sign",data:_},{onChunk:i=>{i&&typeof i.stage=="string"&&p(i.stage)},idleMs:s.idleMs??6e4,signal:s.signal})}return{sign:C}}const Y={style:{"margin-bottom":"24px"}},Z={class:"page-sub"},$={style:{"margin-bottom":"12px"}},ee={style:{display:"flex","justify-content":"space-between","align-items":"center"}},te={style:{display:"flex",gap:"8px","align-items":"center",color:"var(--text-muted)","font-size":"11px"}},oe={key:0},ne={key:1,style:{color:"#1677ff"}},ae={key:0},se={style:{"margin-bottom":"12px"}},le={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},re={style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","word-break":"break-all","white-space":"pre-wrap",margin:"0"}},ie={key:1},ue={style:{color:"var(--text-muted)","font-size":"12px"}},de={style:{"font-size":"11px",color:"#999","margin-top":"4px","font-family":"monospace"}},ce={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px"}},pe={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}},ve={key:3,style:{"margin-top":"16px"}},me={style:{color:"var(--text-muted)","font-size":"10px","margin-left":"4px"}},be={__name:"UkeySign",setup(z){const C=X(),_=G(()=>R().isEmbedded),s=b(""),p=b(!1),i=b(""),k=b([]),n=b(null),v=b("");let w=null;function O(m){return{pre_check:"检查驱动 / 设备状态",signing:"正在与硬件通信,等待用户确认..."}[m]||m}function B(m){return{driver_not_initialized:"驱动未初始化",device_locked:"设备已锁定",no_result:"无结果"}[m]||m||"失败"}async function M(){if(p.value||!s.value.trim())return;p.value=!0,n.value=null,v.value="",i.value="",k.value=[];const m=Date.now();w=new AbortController;try{const e=await C.sign(s.value,{onStage:y=>{i.value=y,k.value.push({stage:y,t:Date.now()-m})},signal:w.signal});n.value=e}catch(e){v.value=e?.message||String(e)}finally{p.value=!1,i.value="",w=null}}function N(){w&&w.abort(new Error("aborted"))}function U(){n.value=null,v.value="",k.value=[],i.value=""}return(m,e)=>{const y=f("a-tag"),K=f("a-alert"),L=f("a-textarea"),h=f("a-button"),V=f("a-space"),E=f("a-card"),D=f("a-timeline-item"),W=f("a-timeline");return t(),g("div",null,[a("div",Y,[e[3]||(e[3]=a("h2",{class:"page-title"},"U-Key 签名",-1)),a("p",Z,[e[2]||(e[2]=l(" 硬件签名 demo — 走 ukey.sign WS topic,仅常规签名(非高危操作)。 ",-1)),r(y,{color:"orange",style:{"margin-left":"8px","font-size":"10px"}},{default:o(()=>[...e[1]||(e[1]=[l("仅桌面 web-shell",-1)])]),_:1})])]),_.value?c("",!0):(t(),d(K,{key:0,type:"warning","show-icon":"",message:"此页面仅在桌面 web-shell 模式下可用",description:"ukey.sign 由 Electron 主进程的 UKeyManager 提供 — 浏览器模式无法访问硬件。请使用桌面应用打开。",style:{"margin-bottom":"16px"}})),r(E,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a("div",$,[e[4]||(e[4]=a("div",{style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},"待签名数据",-1)),r(L,{value:s.value,"onUpdate:value":e[0]||(e[0]=S=>s.value=S),rows:4,placeholder:"任意字符串(建议是已哈希的摘要,最多 64 KiB)",disabled:p.value||!_.value},null,8,["value","disabled"])]),a("div",ee,[a("div",te,[s.value?(t(),g("span",oe,u(s.value.length)+" 字符",1)):c("",!0),i.value?(t(),g("span",ne,[r(x(j),{spin:!0}),l(" "+u(O(i.value)),1)])):c("",!0)]),r(V,null,{default:o(()=>[n.value||v.value?(t(),d(h,{key:0,disabled:p.value,onClick:U},{default:o(()=>[...e[5]||(e[5]=[l("清空",-1)])]),_:1},8,["disabled"])):c("",!0),p.value?(t(),d(h,{key:1,danger:"",onClick:N},{icon:o(()=>[r(x(q))]),default:o(()=>[e[6]||(e[6]=l(" 取消 ",-1))]),_:1})):(t(),d(h,{key:2,type:"primary",disabled:!s.value.trim()||!_.value,onClick:M},{icon:o(()=>[r(x(H))]),default:o(()=>[e[7]||(e[7]=l(" 签名 ",-1))]),_:1},8,["disabled"]))]),_:1})])]),_:1}),n.value||v.value?(t(),d(E,{key:1,title:"结果",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:o(()=>[n.value?.success?(t(),d(y,{key:0,color:"green"},{default:o(()=>[r(x(P)),e[8]||(e[8]=l(" 签名成功 ",-1))]),_:1})):n.value&&!n.value.success?(t(),d(y,{key:1,color:"orange"},{default:o(()=>[r(x(Q)),l(" "+u(B(n.value.reason)),1)]),_:1})):v.value?(t(),d(y,{key:2,color:"red"},{default:o(()=>[r(x(T)),e[9]||(e[9]=l(" 协议错误 ",-1))]),_:1})):c("",!0)]),default:o(()=>[n.value?.success?(t(),g("div",ae,[a("div",se,[a("div",le,"签名("+u(n.value.algorithm||"unknown")+")",1),a("pre",re,u(n.value.signature),1)])])):n.value?(t(),g("div",ie,[a("div",ue,u(n.value.message||"签名未完成"),1),a("div",de," reason: "+u(n.value.reason||"unknown"),1)])):c("",!0),v.value?(t(),g("div",ce,[a("pre",pe,u(v.value),1)])):c("",!0),k.value.length?(t(),g("div",ve,[e[11]||(e[11]=a("div",{style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},"阶段时间线",-1)),r(W,null,{default:o(()=>[(t(!0),g(I,null,J(k.value,(S,A)=>(t(),d(D,{key:A},{color:o(()=>[...e[10]||(e[10]=[l("blue",-1)])]),default:o(()=>[l(" "+u(O(S.stage))+" ",1),a("span",me,u(S.t)+"ms",1)]),_:2},1024))),128))]),_:1})])):c("",!0)]),_:1})):c("",!0)])}}};export{be as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as N,r as D,a as y,f as U}from"./vendor-B6ToihkA.js";import{u as m}from"./index-B2f4ltyM.js";const T="新对话",q="新 Agent",B={"assistant.delta":"response-token","assistant.final":"response-complete","assistant.message":"response-complete","tool.call.started":"tool-executing","tool.call.completed":"tool-result","tool.call.failed":"tool-result","slot.filling":"question","approval.requested":"question",error:"error"},F=N("chat",()=>{const i=D([]),h=D(null),u=y({}),a=y({}),d=y({}),f=y({});let A=null;const E=new Set;function g(t){return u[t]||(u[t]=[]),u[t]}function C(t){return!!(t&&f[t])}function p(t,e){t&&(f[t]=!!e)}function w(t){if(!t?.id)return;const e=i.value.find(o=>o.id===t.id);if(e){Object.assign(e,t);return}i.value.unshift(t)}function S(t,e=m()){u[t]||(u[t]=[]),a[t]||(a[t]={content:"",active:!1}),f[t]==null&&(f[t]=!1),!E.has(t)&&(E.add(t),e.onSession(t,o=>L(t,o)))}function v(t=m()){A||(A=t.onRuntimeEvent(e=>{const o=e.payload||{},s=o.record||{};if(e.type==="session:start"){const n=o.sessionType||s.type||"chat";p(o.sessionId,!1),w({id:o.sessionId,type:n,provider:s.provider||null,model:s.model||null,projectRoot:s.projectRoot||null,status:s.status||"created",title:n==="chat"?T:q,createdAt:Date.now(),messageCount:s.messageCount??0})}else if(e.type==="session:resume"){const n=o.sessionId;if(!n)return;Array.isArray(o.history)&&(u[n]=o.history.map(l=>({role:l.role,content:l.content,timestamp:l.timestamp||Date.now()}))),a[n]||(a[n]={content:"",active:!1}),f[n]==null&&(f[n]=!1),w({id:n,type:s.type||null,provider:s.provider||null,model:s.model||null,projectRoot:s.projectRoot||null,status:s.status||"resumed",messageCount:s.messageCount??(Array.isArray(o.history)?o.history.length:0)})}else if(e.type==="session:end"){const n=o.sessionId;i.value=i.value.filter(l=>l.id!==n),delete f[n],h.value===n&&(h.value=i.value[0]?.id||null)}}))}async function _(){const t=m();v(t),i.value=await t.listSessions(),i.value.forEach(e=>{S(e.id,t)})}async function k(t="chat",e={}){const o=m();v(o);const s=await o.createSession(t,null,e);return w({id:s,type:t,title:t==="chat"?T:q,createdAt:Date.now(),messageCount:0}),p(s,!1),S(s,o),h.value=s,s}function L(t,e){const o=g(t),s=B[e.type]||e.type,n=e.payload||{};if(s==="response-token"){a[t]||(a[t]={content:"",active:!0});const l=e.token||n.token||n.delta||n.content||"";a[t].content+=l,a[t].active=!0,p(t,!0)}else if(s==="response-complete"){const l=e.content||n.content||a[t]?.content||"";o.push({role:"assistant",content:l,timestamp:Date.now()}),a[t]&&(a[t].content="",a[t].active=!1);const r=i.value.find(c=>c.id===t);if(r&&(r.title===T||r.title===q)){const c=o.find(x=>x.role==="user");c&&(r.title=c.content.slice(0,30))}r&&(r.messageCount=o.filter(c=>c.role!=="tool").length),p(t,!1)}else if(s==="tool-executing")o.push({role:"tool",tool:e.tool||n.tool||n.toolName||"unknown",input:e.input||n.input||n.args||null,status:"running",timestamp:Date.now()}),p(t,!0);else if(s==="tool-result"){const l=e.tool||n.tool||n.toolName||"unknown",r=[...o].reverse().find(c=>c.role==="tool"&&c.tool===l);r&&(r.result=e.result||n.result||n.output||null,r.status="done")}else if(s==="question")d[t]={requestId:e.requestId||n.requestId||e.id,question:e.question||n.question||n.message||"",choices:e.choices||n.choices||n.options||[]},p(t,!1);else if(s==="error"){const l=e.message||n.message||"Unknown error";o.push({role:"assistant",content:`Error: ${l}`,timestamp:Date.now()}),p(t,!1),a[t]&&(a[t].active=!1)}}async function R(t,e){const o=m();v(o),g(t).push({role:"user",content:e,timestamp:Date.now()}),a[t]||(a[t]={content:"",active:!1}),a[t].active=!0,p(t,!0),o.sendSessionMessage(t,e)}function j(t,e){const o=m(),s=d[t];s&&(o.answerQuestion(t,s.requestId,e),delete d[t])}async function M(t){const e=m();if(v(e),h.value=t,S(t,e),!u[t]||u[t].length===0)try{await e.resumeSession(t)}catch{}}const b=U(()=>C(h.value));return{sessions:i,currentSessionId:h,messages:u,streaming:a,pendingQuestion:d,loadingBySession:f,isLoading:b,getIsLoading:C,loadSessions:_,createSession:k,sendMessage:R,answerQuestion:j,switchSession:M,getMessages:g}});export{F as u};
|