chainlesschain 0.162.69 → 0.162.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/assets/web-panel/assets/{AIOps-mRHaZd6j.js → AIOps-pes7_jGr.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DKwlStrh.js → ActionButton-DiHWdeH1.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-JKNBk90h.js → Analytics-C51UX-V_.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-D_00au6T.js → AppLayout-BE6LJLw9.js} +4 -4
- package/src/assets/web-panel/assets/{Audit-COIvlSub.js → Audit-CtTkLTe2.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-DM0caJ_V.js → Backup-lmpVwPxc.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-BCcZwFqj.js → BaseInput-Dr7DR1E1.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-Mzs83VXS.js → Chat-DXph6klA.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-B3WgjkqK.js → ChatBubbleRenderer-RefrXxqp.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-BSK8NcWS.js → Checkbox-BF0aS5R9.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-CEZLn0zj.js → Codegen-B-oHWNTV.js} +1 -1
- package/src/assets/web-panel/assets/{Col-C3wDVrB5.js → Col-B6KdyRTE.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DgGS3UTp.js → Community-D5ac0KyO.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BYw2zw-v.js → Compact-Dc61O2eQ.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DkkuY155.js → Compliance-a48qvNmd.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CExycS2P.js → Cowork-CIF9lSRj.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-CIERLVft.js → Cron-C_gkf4xd.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CsHN5kXa.js → Crosschain-CJt15PzW.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BVSo2C6D.js → DID-D8I_okEj.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-DmC4cW02.js → Dashboard-O4q-qCF2.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-B73mSg7P.js → Dropdown-flRziiaw.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-B6m4si5I.js → EmailListRenderer-CnnkfGPw.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DLcJUP1r.js → FamilyGuardDashboard-CYAJpGqd.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-gzFvFfqM.js → Federation-Dm3WqzQ_.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-CR4BrjCr.js → FormItemContext-CpAIter6.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-D-vZ_Mus.js → GenericCardRenderer-ChzXcyuN.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Cy2qd9re.js → Git-DElmMsL4.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CCxHR2cK.js → Governance-EWmgn9io.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-CPGRthgg.js → Inference-VtOR_sef.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-rNtsv5PI.js → KnowledgeGraph-OMqlGkMR.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-D2uSdTps.js → Logs-CTgYDsTZ.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-fv9Y2P9i.js → Marketplace-DZIUTbn8.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BXdt1OfF.js → McpTools-DWeOErCA.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-uVwjHReb.js → Memory-DwFBp-ev.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DUekknEV.js → MobileBridge-D42xBfE3.js} +2 -2
- package/src/assets/web-panel/assets/MobileProjects-BHCHauUl.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-DU7qxB15.js → Mtc-CabnNsyS.js} +6 -6
- package/src/assets/web-panel/assets/{MtcAudit-D82jFkm-.js → MtcAudit-Ddx9Awu5.js} +6 -6
- package/src/assets/web-panel/assets/{Multisig-CbXPwmLK.js → Multisig-CJpYBZ8f.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-xinU-pAd.js → NLProgramming-BvPJskVG.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CF695fi9.js → Notes-92ELvJM2.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DqE8Uw97.js → NotificationSettings-CXz0SUzP.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-C6OcpNmv.js → OrderTableRenderer-4iWRkMr-.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-BdSbVJSd.js → Organization-DblqJPeY.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Cwd_BqS5.js → Overflow-CHfS3HwD.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-Cu9QkrOR.js → P2P-DIg0pLIG.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-B-qgBBLE.js → PdhVaultBrowser-BhD3DGjk.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-BM4iUYhq.js → Permissions-Ct7bwrz8.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BFFOGNIt.js → PersonalDataHub-DG9c1eas.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-CfgXjou1.js → Pipeline-BwQnEqG0.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-B5BKvDsX.js → Privacy-BvWaf-Ba.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-YdvJ_Keh.js → ProjectInit-BFzMHtiW.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-2WrdaB3v.js → ProjectSettings-DDpokSpH.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-DIziui4g.js → Projects-3IL8lyPl.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-B6_KBUE6.js → Providers-C6BsEzSR.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-CrNUnzCS.js → QuickAsk-Mh6690Ey.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-C776RdRO.js → Recommend-CJbZ6wgA.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-RMht4VQm.js → Reputation-GDcyl6iQ.js} +1 -1
- package/src/assets/web-panel/assets/{Row-D0WYOsJu.js → Row-6p4DKFSi.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BVPn-wVM.js → RssFeed-BLhrkoDq.js} +3 -3
- package/src/assets/web-panel/assets/{Search-5G03gU05.js → Search-Ckiyt35t.js} +1 -1
- package/src/assets/web-panel/assets/{Security-B7_HAVGp.js → Security-qhh-B5Qt.js} +4 -4
- package/src/assets/web-panel/assets/{Services-DG-gNQSw.js → Services-D7a2OwKm.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DXUXpGp2.js → Skeleton-CSMxupKd.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-D19MUfuA.js → Skills-CGpMng8w.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DZdS2c4B.js → Sla-CYtaU3Ar.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DEWyi82O.js → SpeechSettings-BTCsu1uM.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-COwILO7T.js → SyncSettings-Cnzx2L5I.js} +2 -2
- package/src/assets/web-panel/assets/Tasks-BhnGtqaZ.js +1 -0
- package/src/assets/web-panel/assets/{Templates-CouCONlo.js → Templates-Ccdx_C3w.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DJF8zjXy.js → Tenant-ZN8c86j3.js} +1 -1
- package/src/assets/web-panel/assets/Terminal-BfgM0oyN.js +3 -0
- package/src/assets/web-panel/assets/{TimelineRenderer-Hd1UCvLm.js → TimelineRenderer-CjgirE9d.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-DvR4eNpx.js → Tokens-QoRpi6Wf.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CYslzJDF.js → Trigger-CEQKJkhs.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-Bje6U7_E.js → Trust-UTuAzV1q.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Cz-GZJDg.js → UkeySign-JDs9I7fl.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Bb1UWWOc.js → VideoEditing-BACYQQSd.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-B2ZGejOh.js → Wallet-C-SKluhH.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-CKJmoHdr.js → WebAuthn-9chizTFy.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-Whk2YLrb.js → WorkflowEditor-0mF-LAUo.js} +1 -1
- package/src/assets/web-panel/assets/{chat-RoIuy9Y2.js → chat-Di7QINiP.js} +1 -1
- package/src/assets/web-panel/assets/{colors-BhEd_bKZ.js → colors-SBmhHMM9.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CidH0uK1.js → compact-item-BmbETbNj.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-C_rRS-Ds.js → createContext-C7hFnsJ7.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-gNvbyy4j.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-CmeIRIpe.js → hasIn-CFtthKDD.js} +1 -1
- package/src/assets/web-panel/assets/{index-ys4rkmSl.js → index-B4etIqbf.js} +1 -1
- package/src/assets/web-panel/assets/{index-dMw41BZp.js → index-BCcCs7LJ.js} +1 -1
- package/src/assets/web-panel/assets/index-BNXpMnIY.js +1 -0
- package/src/assets/web-panel/assets/{index-DLQQetVM.js → index-BT2uOwmA.js} +1 -1
- package/src/assets/web-panel/assets/{index-CcXsvVqO.js → index-BcRTX_WO.js} +1 -1
- package/src/assets/web-panel/assets/{index-Luxberfg.js → index-BcawAm_i.js} +1 -1
- package/src/assets/web-panel/assets/{index-_dSvONj9.js → index-Bpo7UVJe.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNIuqDnx.js → index-C07kpleB.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ds3Cg0Ae.js → index-C2CN7coN.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ruva8uPi.js → index-C2fhXmhW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CWd-l-yG.js → index-C6tZzsb9.js} +1 -1
- package/src/assets/web-panel/assets/{index-CoGpLFSs.js → index-CNpb8m5a.js} +1 -1
- package/src/assets/web-panel/assets/{index-DT1y-Y3f.js → index-CSnTUPQx.js} +3 -3
- package/src/assets/web-panel/assets/{index-qksnYfTn.js → index-CWDk3nDZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CX3pUViM.js → index-CcBhsVYn.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjMeZpai.js → index-CgXQwqXr.js} +1 -1
- package/src/assets/web-panel/assets/{index-DPvldj2b.js → index-Cib-RTws.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBkcH93B.js → index-ClIp4Vin.js} +1 -1
- package/src/assets/web-panel/assets/{index-DoZHyQzC.js → index-CovTrPpI.js} +1 -1
- package/src/assets/web-panel/assets/{index-CrfbYvUn.js → index-D0yO3vWh.js} +1 -1
- package/src/assets/web-panel/assets/{index-C6k3kLEx.js → index-D134XFWR.js} +1 -1
- package/src/assets/web-panel/assets/{index-r7fl2fJ5.js → index-D6vNUp6c.js} +1 -1
- package/src/assets/web-panel/assets/{index-D-_Hp7sk.js → index-D8CeUlN0.js} +1 -1
- package/src/assets/web-panel/assets/{index-CEQ-hwZR.js → index-DEYnWiq1.js} +1 -1
- package/src/assets/web-panel/assets/{index-B1mwMvn4.js → index-DI2xH1fU.js} +1 -1
- package/src/assets/web-panel/assets/{index-CONjSq4V.js → index-DRBc1Ewn.js} +1 -1
- package/src/assets/web-panel/assets/{index-Np_V608u.js → index-DWfObC0n.js} +1 -1
- package/src/assets/web-panel/assets/{index-CZHr43Om.js → index-Dk4ez5rf.js} +1 -1
- package/src/assets/web-panel/assets/{index-GjeCpE-O.js → index-Dps9xdE8.js} +1 -1
- package/src/assets/web-panel/assets/{index-BzUwFZ_8.js → index-Dww6gCzI.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5PRk4sg.js → index-NxxQTlPJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNr2Jahq.js → index-PN02VlUB.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6m1mhdz.js → index-WjZVyLn7.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bx_Je5Dv.js → index-_a2NG3iP.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cb96fe_j.js → index-_hO8-EnW.js} +1 -1
- package/src/assets/web-panel/assets/index-gfHxqT1Q.js +1 -0
- package/src/assets/web-panel/assets/{index-j5F0sAV-.js → index-lRVjtXeH.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqGJIS-s.js → index-sA4vr5WV.js} +1 -1
- package/src/assets/web-panel/assets/{index-IGkFXvXp.js → index-sz0w-D-C.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DkSV8vgw.js → initDefaultProps-B1zCwkvT.js} +1 -1
- package/src/assets/web-panel/assets/{motion-Cp8NKUFr.js → motion-BDGIV9KA.js} +1 -1
- package/src/assets/web-panel/assets/{move-CLyMNWcC.js → move-BITqgluK.js} +1 -1
- package/src/assets/web-panel/assets/{omit-8eo0vufF.js → omit-uD97QKBF.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DezDJBf9.js → pickAttrs-CZpXhSIE.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-MzOUG99n.js → placementArrow-ByUvT_08.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BIM3OijT.js → responsiveObserve-BQG9LlBs.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BboGfin4.js → slide-Bx9TyeEE.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-B2H0FDx9.js → statusUtils-XWaMqYM8.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BEkY7TC8.js → styleChecker-BZ-nMyDB.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BsmYDsvA.js → useFlexGapSupport-D_iwA3vx.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CO3oipa2.js → useFs-DuvW_aRX.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-C-yb9KXG.js → usePersonalDataHub-BO7orS0d.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-2w5Ks8oo.js → vnode-Cc_fqAL4.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-BbwfKB6m.js → zoom-BGkBp90M.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/agent.js +4 -0
- package/src/lib/agent-core.js +1 -0
- package/src/lib/cowork-workflow.js +344 -30
- package/src/lib/hook-manager.js +3 -2
- package/src/lib/workflow-state-reader.js +10 -1
- package/src/runtime/headless-stream.js +14 -2
- package/src/assets/web-panel/assets/MobileProjects-Dl8xYWOU.js +0 -1
- package/src/assets/web-panel/assets/Tasks-D-O2-bZx.js +0 -1
- package/src/assets/web-panel/assets/Terminal-BTXj0cal.js +0 -3
- package/src/assets/web-panel/assets/devWarning-CahsJx-O.js +0 -1
- package/src/assets/web-panel/assets/index-BpAHKzLk.js +0 -1
- package/src/assets/web-panel/assets/index-D-uS5svS.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as m,J as p,U as v,R as s,c as o,K as n,V as d,S as x,o as me,b as se,a as te,r as _,P as u,Q as f,F,Z as L,_ as Pe,$ as pe}from"./vendor-BvqAck49.js";import{_ as Be,b as fe,u as ye,E as be,d as g}from"./index-DT1y-Y3f.js";import{s as he}from"./community-parser-CO25nZFt.js";import ve from"./index-Ruva8uPi.js";import{aU as Ve,l as Je,L as Ye,q as We,at as qe,ak as Ke,$ as Ze,am as He,as as Ge,R as Qe}from"./icons-DP3uiYxy.js";import"./KeyCode-D63Tfrq7.js";import"./omit-8eo0vufF.js";import"./pickAttrs-DezDJBf9.js";import"./initDefaultProps-DkSV8vgw.js";import"./motion-Cp8NKUFr.js";import"./raf-Deuc0E8-.js";import"./index-B1mwMvn4.js";import"./index-CcXsvVqO.js";import"./isVisible-C7tPsqfj.js";import"./useState-BK4hy8Ma.js";import"./devWarning-CahsJx-O.js";import"./compact-item-CidH0uK1.js";import"./createContext-C_rRS-Ds.js";import"./Compact-BYw2zw-v.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-BEkY7TC8.js";import"./zoom-BbwfKB6m.js";import"./ActionButton-DKwlStrh.js";import"./vnode-2w5Ks8oo.js";function q(l){const t=he(l);if(!t)return null;try{return JSON.parse(t)}catch{}const r=t.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const Oe=Object.freeze(["accuracy","fairness","resilience","convergence_speed"]),Xe=Object.freeze(["none","exponential","linear","step"]),$e=Object.freeze(["z_score","iqr"]),ze=Object.freeze(["running","complete","applied","failed","cancelled"]),et=Object.freeze(["generic","task","review","vote"]);function k(l,t=0){return typeof l=="number"&&Number.isFinite(l)?l:t}function N(l){if(!l)return{noDb:!1,error:""};const t=he(l),r=/Database not available/i.test(t);return{noDb:r,error:r?"Database not available":""}}function tt(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:r,did:r,score:k(l.score,0),observations:k(l.observations,0),decay:String(l.decay||"none"),weightTotal:k(l.weightTotal,0),_idx:t}:null}function ce(l){const t=q(l);return Array.isArray(t)?t.map(tt).filter(Boolean):[]}function Ae(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:`${r}-${t}`,did:r,score:k(l.score,0),reason:String(l.reason||""),zScore:typeof l.zScore=="number"?l.zScore:null,lower:typeof l.lower=="number"?l.lower:null,upper:typeof l.upper=="number"?l.upper:null}:null}function _e(l){const t=q(l);if(!t||typeof t!="object"||Array.isArray(t))return{method:"",threshold:0,totalSamples:0,anomalies:[],summary:"",message:""};const r=Array.isArray(t.anomalies)?t.anomalies.map(Ae).filter(Boolean):[];return{method:String(t.method||""),threshold:k(t.threshold,0),totalSamples:k(t.totalSamples,0),anomalies:r,summary:t.summary?String(t.summary):"",message:t.message?String(t.message):""}}function Re(l,t=0){if(!l||typeof l!="object")return null;const r=l.runId||"";return r?{key:r,runId:r,objective:String(l.objective||""),iterations:k(l.iterations,0),paramSpace:l.paramSpace??null,bestParams:l.bestParams??null,bestScore:k(l.bestScore,0),status:String(l.status||"complete").toLowerCase(),createdAt:l.createdAt??null,completedAt:l.completedAt??null,analytics:l.analytics??null,errorMessage:l.errorMessage??"",_idx:t}:null}function ge(l){const t=q(l);return Array.isArray(t)?t.map(Re).filter(Boolean):[]}function xe(l){const t=q(l);return!t||typeof t!="object"||Array.isArray(t)?null:Re(t,0)}function ke(l){const t=q(l);if(!t||typeof t!="object"||Array.isArray(t))return null;const r=t.reputationDistribution||{};return{analyticsId:String(t.analyticsId||""),runId:String(t.runId||""),reputationDistribution:{buckets:Array.isArray(r.buckets)?r.buckets.filter(e=>e&&typeof e=="object").map(e=>({label:String(e.label||""),count:k(e.count,0),min:typeof e.min=="number"?e.min:null,max:typeof e.max=="number"?e.max:null})):[],mean:typeof r.mean=="number"?r.mean:null,stdDev:typeof r.stdDev=="number"?r.stdDev:null},anomalies:t.anomalies&&typeof t.anomalies=="object"?{method:String(t.anomalies.method||""),totalSamples:k(t.anomalies.totalSamples,0),anomalies:Array.isArray(t.anomalies.anomalies)?t.anomalies.anomalies.map(Ae).filter(Boolean):[],summary:t.anomalies.summary?String(t.anomalies.summary):"",message:t.anomalies.message?String(t.anomalies.message):""}:{method:"",totalSamples:0,anomalies:[],summary:"",message:""},recommendations:Array.isArray(t.recommendations)?t.recommendations.filter(e=>typeof e=="string"):[]}}const ot={totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0};function Se(l){const t=JSON.parse(JSON.stringify(ot));for(const e of ze)t.byStatus[e]=0;for(const e of Oe)t.byObjective[e]=0;const r=q(l);if(!r||typeof r!="object"||Array.isArray(r))return t;if(t.totalRuns=k(r.totalRuns,0),t.activeRuns=k(r.activeRuns,0),t.maxConcurrentOptimizations=k(r.maxConcurrentOptimizations,0),t.bestScoreEver=k(r.bestScoreEver,0),r.byStatus&&typeof r.byStatus=="object")for(const[e,w]of Object.entries(r.byStatus))typeof w=="number"&&Number.isFinite(w)&&(t.byStatus[e]=w);if(r.byObjective&&typeof r.byObjective=="object")for(const[e,w]of Object.entries(r.byObjective))typeof w=="number"&&Number.isFinite(w)&&(t.byObjective[e]=w);return r.observations&&typeof r.observations=="object"&&(t.observations.totalObservations=k(r.observations.totalObservations,0),t.observations.totalDids=k(r.observations.totalDids,0)),t}function at(l){if(l==null||l==="")return"—";const t=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(t.getTime())?String(l):t.toLocaleString("zh-CN",{hour12:!1})}const nt={__name:"Reputation",setup(l,{expose:t}){t();const{t:r}=fe(),e=ye(),w=be.PRESENTED_IMAGE_SIMPLE,Q=_(!1),R=_(!1),K=_(!1),U=_(!1),A=_(!1),O=_([]),z=_([]),V=_({totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0}),P=_({noDb:!1,error:""}),X=_("scores"),E=_("none"),Z=_(!1),J=_(!1),j=_(!1),H=_(!1),S=te({did:"",score:.8,kind:"generic",weight:1}),h=te({objective:"accuracy",iterations:50}),T=te({method:"z_score",threshold:2.5,decay:"none"}),D=_(null),I=_(null),B=_(null),Y=se(()=>[{title:r("reputation.scoreColumns.rank"),key:"rank",width:"60px"},{title:r("reputation.scoreColumns.did"),key:"did"},{title:r("reputation.scoreColumns.score"),key:"score",width:"220px"},{title:r("reputation.scoreColumns.observations"),key:"observations",width:"100px"},{title:r("reputation.scoreColumns.weightTotal"),key:"weightTotal",width:"100px"}]),oe=se(()=>[{title:r("reputation.runColumns.runId"),key:"runId",width:"140px"},{title:r("reputation.runColumns.objective"),key:"objective",width:"140px"},{title:r("reputation.runColumns.iterations"),key:"iterations",width:"80px"},{title:r("reputation.runColumns.bestScore"),key:"bestScore",width:"110px"},{title:r("reputation.runColumns.status"),key:"status",width:"100px"},{title:r("reputation.runColumns.createdAt"),key:"createdAt",width:"160px"},{title:r("reputation.runColumns.action"),key:"action",width:"160px"}]);function ae(i){const c=`reputation.decay.${i}`,y=r(c);return y===c?i:y}function $(i){const c=`reputation.kind.${i}`,y=r(c);return y===c?i:y}function ee(i){const c=`reputation.objective.${i}`,y=r(c);return y===c?i:y}function C(i){return{accuracy:"blue",fairness:"green",resilience:"purple",convergence_speed:"orange"}[i]||"default"}function ne(i){return{accuracy:"#1677ff",fairness:"#52c41a",resilience:"#722ed1",convergence_speed:"#fa8c16"}[i]||"#888"}function re(i){const c=`reputation.objectiveDesc.${i}`,y=r(c);return y===c?"":y}function a(i){const c=`reputation.status.${i}`,y=r(c);return y===c?i:y}function b(i){return{running:"processing",complete:"blue",applied:"green",failed:"red",cancelled:"default"}[i]||"default"}function W(i){return{running:"#1677ff",complete:"#13c2c2",applied:"#52c41a",failed:"#ff4d4f",cancelled:"#888"}[i]||"#888"}function we(i){return i===0?"gold":i===1?"silver":i===2?"bronze":""}function je(i){return i>=.8?"#52c41a":i>=.5?"#1677ff":i>=.3?"#faad14":"#ff4d4f"}function Ce(i,c){return c?Math.round(i/c*100):0}function Te(i){const c=I.value?.reputationDistribution.buckets.reduce((y,M)=>y+M.count,0)||0;return c?Math.round(i.count/c*100):0}function De(i){if(typeof i=="string")return i;try{return JSON.stringify(i,null,2)}catch{return String(i)}}async function G(){Q.value=!0,P.value={noDb:!1,error:""};try{const[i,c,y]=await Promise.all([e.execute(`reputation list --decay ${E.value} --json`,1e4).catch(()=>({output:""})),e.execute("reputation runs --limit 50 --json",1e4).catch(()=>({output:""})),e.execute("reputation stats-v2 --json",8e3).catch(()=>({output:""}))]),M=[i,c,y].map(le=>N(le.output)).find(le=>le.noDb);M&&(P.value=M),O.value=ce(i.output),z.value=ge(c.output),V.value=Se(y.output)}catch(i){g.error(r("reputation.messages.loadFailed",{err:i?.message||i}))}finally{Q.value=!1}}async function Fe(){try{const{output:i}=await e.execute(`reputation list --decay ${E.value} --json`,1e4),c=N(i);if(c.noDb){P.value=c;return}O.value=ce(i)}catch(i){g.error(r("reputation.messages.loadScoresFailed",{err:i?.message||i}))}}async function Ee(){if(!S.did.trim()){g.warning(r("reputation.messages.didRequired"));return}if(S.score<0||S.score>1){g.warning(r("reputation.messages.scoreRange"));return}R.value=!0;try{const i=[`reputation observe "${S.did.trim().replace(/"/g,'\\"')}"`,String(S.score),`-k ${S.kind}`,`-w ${S.weight}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(!/"did"/.test(c)){g.error(r("reputation.messages.observeFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.observeOk")),Z.value=!1,ue(),await G()}catch(i){g.error(r("reputation.messages.observeFailed",{err:i?.message||i}))}finally{R.value=!1}}async function Ie(){K.value=!0;try{const i=["reputation optimize",`-o ${h.objective}`,`-i ${h.iterations}`,"--json"],{output:c}=await e.execute(i.join(" "),6e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}const M=xe(c);if(!M){g.error(r("reputation.messages.optimizeFailed",{err:c.slice(0,120)}));return}J.value=!1,g.success(r("reputation.messages.optimizeOk",{score:M.bestScore.toFixed(4)})),await G(),D.value=M,H.value=!0,await ie()}catch(i){g.error(r("reputation.messages.optimizeFailed",{err:i?.message||i}))}finally{K.value=!1}}async function Me(i){ve.confirm({title:r("reputation.applyConfirm.title"),content:r("reputation.applyConfirm.content",{runId:i.runId.slice(0,12)}),okText:r("reputation.applyConfirm.ok"),cancelText:r("reputation.applyConfirm.cancel"),onOk:async()=>{try{const{output:c}=await e.execute(`reputation apply ${i.runId}`,8e3);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(/Failed|Error/i.test(c)&&!/Applied/i.test(c)){g.error(r("reputation.messages.applyFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.applyOk")),await G()}catch(c){g.error(r("reputation.messages.applyFailed",{err:c?.message||c}))}}})}async function Le(i){D.value=i,I.value=null,H.value=!0,await ie()}async function ie(){if(D.value){A.value=!0;try{const{output:i}=await e.execute(`reputation analytics ${D.value.runId} --json`,8e3);if(N(i).noDb)return;I.value=ke(i)}catch{}finally{A.value=!1}}}function Ne(){B.value=null,j.value=!0}async function Ue(){U.value=!0;try{const i=["reputation anomalies",`-m ${T.method}`,`-t ${T.threshold}`,`-d ${T.decay}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}B.value=_e(c)}catch(i){g.error(r("reputation.messages.detectFailed",{err:i?.message||i}))}finally{U.value=!1}}function ue(){S.did="",S.score=.8,S.kind="generic",S.weight=1}me(G);const de={t:r,ws:e,EMPTY_IMG:w,loading:Q,observing:R,optimizing:K,detectingAnomalies:U,loadingAnalytics:A,scores:O,runs:z,stats:V,errorState:P,activeTab:X,decayFilter:E,showObserveModal:Z,showOptimizeModal:J,showAnomaliesModal:j,showAnalyticsModal:H,observeForm:S,optimizeForm:h,anomalyForm:T,currentRun:D,currentAnalytics:I,anomalyResult:B,scoreColumns:Y,runColumns:oe,decayLabel:ae,kindLabel:$,objectiveLabel:ee,objectiveColor:C,objectiveBarColor:ne,objectiveDesc:re,statusLabel:a,statusColor:b,statusBarColor:W,rankClass:we,scoreColor:je,pctOfTotal:Ce,bucketPct:Te,formatParams:De,loadAll:G,loadScores:Fe,submitObservation:Ee,submitOptimization:Ie,applyRun:Me,viewRunAnalytics:Le,loadAnalyticsForCurrentRun:ie,openAnomaliesModal:Ne,runAnomalyDetection:Ue,resetObserveForm:ue,ref:_,onMounted:me,reactive:te,computed:se,get useI18n(){return fe},get ReloadOutlined(){return Qe},get PlusOutlined(){return Ge},get WarningOutlined(){return He},get ThunderboltOutlined(){return Ze},get UserOutlined(){return Ke},get EyeOutlined(){return qe},get ExperimentOutlined(){return We},get LoadingOutlined(){return Ye},get TrophyOutlined(){return Je},get ArrowRightOutlined(){return Ve},get message(){return g},get Modal(){return ve},get Empty(){return be},get useWsStore(){return ye},get parseScores(){return ce},get parseAnomalies(){return _e},get parseRun(){return xe},get parseRuns(){return ge},get parseAnalytics(){return ke},get parseStatsV2(){return Se},get detectReputationError(){return N},get formatReputationTime(){return at},get OPTIMIZATION_OBJECTIVES(){return Oe},get DECAY_MODELS(){return Xe},get ANOMALY_METHODS(){return $e},get RUN_STATUSES(){return ze},get OBSERVATION_KINDS(){return et}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},rt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},it={class:"page-title"},lt={class:"page-sub"},st={class:"filter-bar"},ct={style:{color:"var(--text-secondary)","font-size":"12px"}},ut={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},dt={key:3,style:{color:"var(--text-secondary)"}},mt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ft={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},yt={key:2,style:{color:"var(--text-secondary)"}},bt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},vt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},_t={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},gt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},xt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},kt={style:{"padding-top":"8px"}},St={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},ht={key:1},Ot={style:{"font-family":"monospace","font-size":"12px",color:"var(--text-primary)"}},zt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},At={key:0,style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},Rt={key:0,style:{"padding-top":"8px"}},wt={class:"params-pre"},jt={style:{color:"#ff4d4f"}},Ct={key:0,style:{"margin-top":"16px"}},Tt={style:{color:"var(--text-primary)","font-size":"13px",margin:"0 0 10px"}},Dt={class:"bucket-label"},Ft={key:0,style:{"margin-top":"8px",color:"var(--text-secondary)","font-size":"12px"}},Et={key:0,style:{"margin-left":"12px"}};function It(l,t,r,e,w,Q){const R=m("a-button"),K=m("a-space"),U=m("a-alert"),A=m("a-statistic"),O=m("a-card"),z=m("a-col"),V=m("a-row"),P=m("a-radio-button"),X=m("a-radio-group"),E=m("a-progress"),Z=m("a-table"),J=m("a-tab-pane"),j=m("a-tag"),H=m("a-tabs"),S=m("a-input"),h=m("a-form-item"),T=m("a-input-number"),D=m("a-select-option"),I=m("a-select"),B=m("a-form"),Y=m("a-modal"),oe=m("a-divider"),ae=m("a-empty"),$=m("a-list-item"),ee=m("a-list"),C=m("a-descriptions-item"),ne=m("a-descriptions"),re=m("a-spin");return u(),p("div",null,[v("div",rt,[v("div",null,[v("h2",it,s(e.t("reputation.title")),1),v("p",lt,s(e.t("reputation.subtitle")),1)]),o(K,null,{default:n(()=>[o(R,{loading:e.loading,onClick:e.loadAll},{icon:n(()=>[o(e.ReloadOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.refresh")),1)]),_:1},8,["loading"]),o(R,{onClick:e.openAnomaliesModal},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.anomalies")),1)]),_:1}),o(R,{type:"primary",onClick:t[0]||(t[0]=a=>e.showOptimizeModal=!0)},{icon:n(()=>[o(e.ThunderboltOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.optimize")),1)]),_:1})]),_:1})]),d(" noDb banner "),e.errorState.noDb?(u(),x(U,{key:0,type:"info","show-icon":"",message:e.t("reputation.noDb.message"),description:e.t("reputation.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):d("v-if",!0),d(" Stat cards "),o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.trackedDids"),value:e.stats.observations.totalDids,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[o(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.totalObservations"),value:e.stats.observations.totalObservations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[o(e.EyeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.optimizationRuns"),value:e.stats.totalRuns,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[o(e.ExperimentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.active"),value:e.stats.activeRuns,"value-style":{color:e.stats.activeRuns>0?"#1677ff":"#888",fontSize:"20px"},suffix:`/ ${e.stats.maxConcurrentOptimizations}`},{prefix:n(()=>[o(e.LoadingOutlined)]),_:1},8,["title","value","value-style","suffix"])]),_:1})]),_:1}),o(z,{xs:24,sm:8,lg:4},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.bestEver"),value:e.stats.bestScoreEver,precision:3,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[o(e.TrophyOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),d(" Tabs "),o(H,{activeKey:e.activeTab,"onUpdate:activeKey":t[3]||(t[3]=a=>e.activeTab=a),class:"reputation-tabs"},{default:n(()=>[d(" ── Scores tab ──────────────────────────────────────────── "),o(J,{key:"scores",tab:e.t("reputation.tabs.scores")},{default:n(()=>[v("div",st,[v("span",ct,s(e.t("reputation.filter.decayLabel")),1),o(X,{value:e.decayFilter,"onUpdate:value":t[1]||(t[1]=a=>e.decayFilter=a),size:"small","button-style":"solid",onChange:e.loadScores},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(R,{size:"small",onClick:t[2]||(t[2]=a=>e.showObserveModal=!0)},{icon:n(()=>[o(e.PlusOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.filter.addObservation")),1)]),_:1})]),o(Z,{columns:e.scoreColumns,"data-source":e.scores,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.dids",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b,index:W})=>[a.key==="rank"?(u(),p("span",{key:0,class:Pe(["rank-pill",e.rankClass(W)])},s(W+1),3)):d("v-if",!0),a.key==="did"?(u(),p("span",ut,s(b.did),1)):d("v-if",!0),a.key==="score"?(u(),x(E,{key:2,percent:Math.round(b.score*100),"stroke-color":e.scoreColor(b.score),size:"small",format:()=>b.score.toFixed(4)},null,8,["percent","stroke-color","format"])):d("v-if",!0),a.key==="observations"?(u(),p("span",dt,s(b.observations),1)):d("v-if",!0),a.key==="weightTotal"?(u(),p("span",mt,s(b.weightTotal.toFixed(2)),1)):d("v-if",!0)]),emptyText:n(()=>[v("div",pt,[o(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.scores")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Runs tab ────────────────────────────────────────────── "),o(J,{key:"runs",tab:e.t("reputation.tabs.runs")},{default:n(()=>[o(Z,{columns:e.runColumns,"data-source":e.runs,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.rows",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b})=>[a.key==="runId"?(u(),p("span",ft,s(b.runId.slice(0,12)),1)):d("v-if",!0),a.key==="objective"?(u(),x(j,{key:1,color:e.objectiveColor(b.objective),style:{"font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(b.objective)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="iterations"?(u(),p("span",yt,s(b.iterations),1)):d("v-if",!0),a.key==="bestScore"?(u(),p("span",{key:3,style:pe({color:e.scoreColor(b.bestScore),fontWeight:500,fontFamily:"monospace"})},s(b.bestScore.toFixed(4)),5)):d("v-if",!0),a.key==="status"?(u(),x(j,{key:4,color:e.statusColor(b.status)},{default:n(()=>[f(s(e.statusLabel(b.status)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="createdAt"?(u(),p("span",bt,s(e.formatReputationTime(b.createdAt)),1)):d("v-if",!0),a.key==="action"?(u(),p(F,{key:6},[o(R,{size:"small",type:"link",onClick:W=>e.viewRunAnalytics(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.analyze")),1)]),_:1},8,["onClick"]),b.status==="complete"?(u(),x(R,{key:0,size:"small",type:"link",style:{color:"#52c41a"},onClick:W=>e.applyRun(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.apply")),1)]),_:1},8,["onClick"])):d("v-if",!0)],64)):d("v-if",!0)]),emptyText:n(()=>[v("div",vt,[o(e.ExperimentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.runs")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Breakdown tab ───────────────────────────────────────── "),o(J,{key:"breakdown",tab:e.t("reputation.tabs.breakdown")},{default:n(()=>[o(V,{gutter:[16,16]},{default:n(()=>[o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.RUN_STATUSES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.statusColor(a),style:{"min-width":"80px","text-align":"center"}},{default:n(()=>[f(s(e.statusLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byStatus[a]||0,e.stats.totalRuns),"stroke-color":e.statusBarColor(a),format:()=>`${e.stats.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byObjective"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.objectiveColor(a),style:{"min-width":"100px","text-align":"center","font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byObjective[a]||0,e.stats.totalRuns),"stroke-color":e.objectiveBarColor(a),format:()=>`${e.stats.byObjective[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),d(" ── Add observation modal ──────────────────────────────── "),o(Y,{open:e.showObserveModal,"onUpdate:open":t[8]||(t[8]=a=>e.showObserveModal=a),title:e.t("reputation.observe.title"),"confirm-loading":e.observing,width:540,"ok-text":e.t("reputation.observe.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitObservation,onCancel:e.resetObserveForm},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(h,{label:e.t("reputation.observe.didLabel"),required:""},{default:n(()=>[o(S,{value:e.observeForm.did,"onUpdate:value":t[4]||(t[4]=a=>e.observeForm.did=a),placeholder:e.t("reputation.observe.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(h,{label:e.t("reputation.observe.scoreLabel"),required:""},{default:n(()=>[o(T,{value:e.observeForm.score,"onUpdate:value":t[5]||(t[5]=a=>e.observeForm.score=a),min:0,max:1,step:.05,style:{width:"160px"}},null,8,["value"]),v("span",_t,s(e.t("reputation.observe.scoreRange")),1)]),_:1},8,["label"]),o(h,{label:e.t("reputation.observe.kindLabel")},{default:n(()=>[o(I,{value:e.observeForm.kind,"onUpdate:value":t[6]||(t[6]=a=>e.observeForm.kind=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OBSERVATION_KINDS,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.kindLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:e.t("reputation.observe.weightLabel")},{default:n(()=>[o(T,{value:e.observeForm.weight,"onUpdate:value":t[7]||(t[7]=a=>e.observeForm.weight=a),min:.1,step:.1,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Optimize modal ─────────────────────────────────────── "),o(Y,{open:e.showOptimizeModal,"onUpdate:open":t[11]||(t[11]=a=>e.showOptimizeModal=a),title:e.t("reputation.optimize.title"),"confirm-loading":e.optimizing,width:540,"ok-text":e.t("reputation.optimize.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitOptimization},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(h,{label:e.t("reputation.optimize.objectiveLabel"),required:""},{default:n(()=>[o(I,{value:e.optimizeForm.objective,"onUpdate:value":t[9]||(t[9]=a=>e.optimizeForm.objective=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),v("div",gt,s(e.objectiveDesc(e.optimizeForm.objective)),1)]),_:1},8,["label"]),o(h,{label:e.t("reputation.optimize.iterationsLabel")},{default:n(()=>[o(T,{value:e.optimizeForm.iterations,"onUpdate:value":t[10]||(t[10]=a=>e.optimizeForm.iterations=a),min:1,max:1e3,step:10,style:{width:"160px"}},null,8,["value"]),v("span",xt,s(e.t("reputation.optimize.iterationsRange")),1)]),_:1},8,["label"])]),_:1}),o(U,{type:"info","show-icon":"",message:e.t("reputation.optimize.syncMessage"),description:e.t("reputation.optimize.syncDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Anomaly detection modal ────────────────────────────── "),o(Y,{open:e.showAnomaliesModal,"onUpdate:open":t[15]||(t[15]=a=>e.showAnomaliesModal=a),title:e.t("reputation.anomaly.title"),width:640,footer:null},{default:n(()=>[v("div",kt,[o(B,{"label-col":{span:5},"wrapper-col":{span:19}},{default:n(()=>[o(h,{label:e.t("reputation.anomaly.methodLabel")},{default:n(()=>[o(X,{value:e.anomalyForm.method,"onUpdate:value":t[12]||(t[12]=a=>e.anomalyForm.method=a),"button-style":"solid"},{default:n(()=>[(u(!0),p(F,null,L(e.ANOMALY_METHODS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(a==="z_score"?e.t("reputation.anomaly.zScoreLabel"):e.t("reputation.anomaly.iqrLabel")),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:e.t("reputation.anomaly.thresholdLabel")},{default:n(()=>[o(T,{value:e.anomalyForm.threshold,"onUpdate:value":t[13]||(t[13]=a=>e.anomalyForm.threshold=a),min:.5,step:.1,style:{width:"120px"}},null,8,["value"]),v("span",St,s(e.t("reputation.anomaly.thresholdHint")),1)]),_:1},8,["label"]),o(h,{label:e.t("reputation.anomaly.decayLabel")},{default:n(()=>[o(I,{value:e.anomalyForm.decay,"onUpdate:value":t[14]||(t[14]=a=>e.anomalyForm.decay=a),style:{width:"200px"}},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{"wrapper-col":{offset:5,span:19}},{default:n(()=>[o(R,{type:"primary",loading:e.detectingAnomalies,onClick:e.runAnomalyDetection},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.anomaly.start")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(oe),e.anomalyResult?(u(),p("div",ht,[o(V,{gutter:12,style:{"margin-bottom":"12px"}},{default:n(()=>[o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.totalSamples"),value:e.anomalyResult.totalSamples,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.threshold"),value:e.anomalyResult.threshold,precision:2,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.anomalies"),value:e.anomalyResult.anomalies.length,"value-style":{color:e.anomalyResult.anomalies.length>0?"#ff4d4f":"#52c41a",fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1})]),_:1}),e.anomalyResult.message?(u(),x(U,{key:0,message:e.anomalyResult.message,type:"warning","show-icon":"",style:{"margin-bottom":"12px"}},null,8,["message"])):d("v-if",!0),e.anomalyResult.anomalies.length?(u(),x(ee,{key:1,size:"small","data-source":e.anomalyResult.anomalies},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[v("span",Ot,s(a.did),1),o(j,{color:"red",style:{"margin-left":"8px"}},{default:n(()=>[f(s(e.t("reputation.anomaly.scoreTag",{score:a.score.toFixed(4)})),1)]),_:2},1024),v("span",zt,s(a.reason),1),a.zScore!==null?(u(),p("span",At,s(e.t("reputation.anomaly.zNote",{value:a.zScore.toFixed(2)})),1)):d("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):d("v-if",!0)])):(u(),x(ae,{key:0,description:e.t("reputation.anomaly.notDetected"),image:e.EMPTY_IMG},null,8,["description","image"]))])]),_:1},8,["open","title"]),d(" ── Run analytics / details modal ──────────────────────── "),o(Y,{open:e.showAnalyticsModal,"onUpdate:open":t[16]||(t[16]=a=>e.showAnalyticsModal=a),title:e.t("reputation.analytics.title",{runId:e.currentRun?.runId?.slice(0,12)||""}),width:780,footer:null},{default:n(()=>[e.currentRun?(u(),p("div",Rt,[o(ne,{column:2,size:"small",bordered:""},{default:n(()=>[o(C,{label:e.t("reputation.analytics.objective")},{default:n(()=>[o(j,{color:e.objectiveColor(e.currentRun.objective)},{default:n(()=>[f(s(e.objectiveLabel(e.currentRun.objective)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.status")},{default:n(()=>[o(j,{color:e.statusColor(e.currentRun.status)},{default:n(()=>[f(s(e.statusLabel(e.currentRun.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.iterations")},{default:n(()=>[f(s(e.currentRun.iterations),1)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.bestScore")},{default:n(()=>[v("span",{style:pe({color:e.scoreColor(e.currentRun.bestScore),fontWeight:500,fontFamily:"monospace"})},s(e.currentRun.bestScore.toFixed(4)),5)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.createdAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.createdAt)),1)]),_:1},8,["label"]),e.currentRun.completedAt?(u(),x(C,{key:0,label:e.t("reputation.analytics.completedAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.completedAt)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.bestParams?(u(),x(C,{key:1,label:e.t("reputation.analytics.bestParams"),span:2},{default:n(()=>[v("pre",wt,s(e.formatParams(e.currentRun.bestParams)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.errorMessage?(u(),x(C,{key:2,label:e.t("reputation.analytics.errorMessage"),span:2},{default:n(()=>[v("span",jt,s(e.currentRun.errorMessage),1)]),_:1},8,["label"])):d("v-if",!0)]),_:1}),o(re,{spinning:e.loadingAnalytics},{default:n(()=>[e.currentAnalytics?(u(),p("div",Ct,[v("h4",Tt,s(e.t("reputation.analytics.distributionTitle")),1),o(O,{size:"small",style:{"margin-bottom":"12px"}},{default:n(()=>[(u(!0),p(F,null,L(e.currentAnalytics.reputationDistribution.buckets,a=>(u(),p("div",{key:a.label,class:"bucket-row"},[v("span",Dt,s(a.label),1),o(E,{percent:e.bucketPct(a),"stroke-color":a.count>0?"#1677ff":"#d9d9d9",format:()=>`${a.count}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentAnalytics.reputationDistribution.mean!==null?(u(),p("div",Ft,[f(s(e.t("reputation.analytics.mean",{value:e.currentAnalytics.reputationDistribution.mean.toFixed(4)}))+" ",1),e.currentAnalytics.reputationDistribution.stdDev!==null?(u(),p("span",Et,s(e.t("reputation.analytics.stdDev",{value:e.currentAnalytics.reputationDistribution.stdDev.toFixed(4)})),1)):d("v-if",!0)])):d("v-if",!0)]),_:1}),e.currentAnalytics.recommendations.length?(u(),x(O,{key:0,title:e.t("reputation.analytics.recommendations"),size:"small"},{default:n(()=>[o(ee,{size:"small","data-source":e.currentAnalytics.recommendations},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[o(e.ArrowRightOutlined,{style:{color:"#faad14","margin-right":"8px"}}),f(" "+s(a),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):d("v-if",!0)])):d("v-if",!0)]),_:1},8,["spinning"])])):d("v-if",!0)]),_:1},8,["open","title"])])}const io=Be(nt,[["render",It],["__scopeId","data-v-c4829a4e"],["__file","/tmp/cc-web-panel-YJBpJd/repo/packages/web-panel/src/views/Reputation.vue"]]);export{io as default};
|
|
1
|
+
import{I as m,J as p,U as v,R as s,c as o,K as n,V as d,S as x,o as me,b as se,a as te,r as _,P as u,Q as f,F,Z as L,_ as Pe,$ as pe}from"./vendor-BvqAck49.js";import{_ as Be,b as fe,u as ye,E as be,d as g}from"./index-CSnTUPQx.js";import{s as he}from"./community-parser-CO25nZFt.js";import ve from"./index-C2fhXmhW.js";import{aU as Ve,l as Je,L as Ye,q as We,at as qe,ak as Ke,$ as Ze,am as Ge,as as He,R as Qe}from"./icons-DP3uiYxy.js";import"./KeyCode-D63Tfrq7.js";import"./omit-uD97QKBF.js";import"./pickAttrs-CZpXhSIE.js";import"./initDefaultProps-B1zCwkvT.js";import"./motion-BDGIV9KA.js";import"./raf-Deuc0E8-.js";import"./index-DI2xH1fU.js";import"./index-BcRTX_WO.js";import"./isVisible-C7tPsqfj.js";import"./useState-BK4hy8Ma.js";import"./devWarning-gNvbyy4j.js";import"./compact-item-BmbETbNj.js";import"./createContext-C7hFnsJ7.js";import"./Compact-Dc61O2eQ.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-BZ-nMyDB.js";import"./zoom-BGkBp90M.js";import"./ActionButton-DiHWdeH1.js";import"./vnode-Cc_fqAL4.js";function q(l){const t=he(l);if(!t)return null;try{return JSON.parse(t)}catch{}const r=t.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const Oe=Object.freeze(["accuracy","fairness","resilience","convergence_speed"]),Xe=Object.freeze(["none","exponential","linear","step"]),$e=Object.freeze(["z_score","iqr"]),ze=Object.freeze(["running","complete","applied","failed","cancelled"]),et=Object.freeze(["generic","task","review","vote"]);function k(l,t=0){return typeof l=="number"&&Number.isFinite(l)?l:t}function N(l){if(!l)return{noDb:!1,error:""};const t=he(l),r=/Database not available/i.test(t);return{noDb:r,error:r?"Database not available":""}}function tt(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:r,did:r,score:k(l.score,0),observations:k(l.observations,0),decay:String(l.decay||"none"),weightTotal:k(l.weightTotal,0),_idx:t}:null}function ce(l){const t=q(l);return Array.isArray(t)?t.map(tt).filter(Boolean):[]}function Ae(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:`${r}-${t}`,did:r,score:k(l.score,0),reason:String(l.reason||""),zScore:typeof l.zScore=="number"?l.zScore:null,lower:typeof l.lower=="number"?l.lower:null,upper:typeof l.upper=="number"?l.upper:null}:null}function _e(l){const t=q(l);if(!t||typeof t!="object"||Array.isArray(t))return{method:"",threshold:0,totalSamples:0,anomalies:[],summary:"",message:""};const r=Array.isArray(t.anomalies)?t.anomalies.map(Ae).filter(Boolean):[];return{method:String(t.method||""),threshold:k(t.threshold,0),totalSamples:k(t.totalSamples,0),anomalies:r,summary:t.summary?String(t.summary):"",message:t.message?String(t.message):""}}function Re(l,t=0){if(!l||typeof l!="object")return null;const r=l.runId||"";return r?{key:r,runId:r,objective:String(l.objective||""),iterations:k(l.iterations,0),paramSpace:l.paramSpace??null,bestParams:l.bestParams??null,bestScore:k(l.bestScore,0),status:String(l.status||"complete").toLowerCase(),createdAt:l.createdAt??null,completedAt:l.completedAt??null,analytics:l.analytics??null,errorMessage:l.errorMessage??"",_idx:t}:null}function ge(l){const t=q(l);return Array.isArray(t)?t.map(Re).filter(Boolean):[]}function xe(l){const t=q(l);return!t||typeof t!="object"||Array.isArray(t)?null:Re(t,0)}function ke(l){const t=q(l);if(!t||typeof t!="object"||Array.isArray(t))return null;const r=t.reputationDistribution||{};return{analyticsId:String(t.analyticsId||""),runId:String(t.runId||""),reputationDistribution:{buckets:Array.isArray(r.buckets)?r.buckets.filter(e=>e&&typeof e=="object").map(e=>({label:String(e.label||""),count:k(e.count,0),min:typeof e.min=="number"?e.min:null,max:typeof e.max=="number"?e.max:null})):[],mean:typeof r.mean=="number"?r.mean:null,stdDev:typeof r.stdDev=="number"?r.stdDev:null},anomalies:t.anomalies&&typeof t.anomalies=="object"?{method:String(t.anomalies.method||""),totalSamples:k(t.anomalies.totalSamples,0),anomalies:Array.isArray(t.anomalies.anomalies)?t.anomalies.anomalies.map(Ae).filter(Boolean):[],summary:t.anomalies.summary?String(t.anomalies.summary):"",message:t.anomalies.message?String(t.anomalies.message):""}:{method:"",totalSamples:0,anomalies:[],summary:"",message:""},recommendations:Array.isArray(t.recommendations)?t.recommendations.filter(e=>typeof e=="string"):[]}}const ot={totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0};function Se(l){const t=JSON.parse(JSON.stringify(ot));for(const e of ze)t.byStatus[e]=0;for(const e of Oe)t.byObjective[e]=0;const r=q(l);if(!r||typeof r!="object"||Array.isArray(r))return t;if(t.totalRuns=k(r.totalRuns,0),t.activeRuns=k(r.activeRuns,0),t.maxConcurrentOptimizations=k(r.maxConcurrentOptimizations,0),t.bestScoreEver=k(r.bestScoreEver,0),r.byStatus&&typeof r.byStatus=="object")for(const[e,w]of Object.entries(r.byStatus))typeof w=="number"&&Number.isFinite(w)&&(t.byStatus[e]=w);if(r.byObjective&&typeof r.byObjective=="object")for(const[e,w]of Object.entries(r.byObjective))typeof w=="number"&&Number.isFinite(w)&&(t.byObjective[e]=w);return r.observations&&typeof r.observations=="object"&&(t.observations.totalObservations=k(r.observations.totalObservations,0),t.observations.totalDids=k(r.observations.totalDids,0)),t}function at(l){if(l==null||l==="")return"—";const t=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(t.getTime())?String(l):t.toLocaleString("zh-CN",{hour12:!1})}const nt={__name:"Reputation",setup(l,{expose:t}){t();const{t:r}=fe(),e=ye(),w=be.PRESENTED_IMAGE_SIMPLE,Q=_(!1),R=_(!1),K=_(!1),U=_(!1),A=_(!1),O=_([]),z=_([]),V=_({totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0}),P=_({noDb:!1,error:""}),X=_("scores"),E=_("none"),Z=_(!1),J=_(!1),j=_(!1),G=_(!1),S=te({did:"",score:.8,kind:"generic",weight:1}),h=te({objective:"accuracy",iterations:50}),D=te({method:"z_score",threshold:2.5,decay:"none"}),T=_(null),I=_(null),B=_(null),Y=se(()=>[{title:r("reputation.scoreColumns.rank"),key:"rank",width:"60px"},{title:r("reputation.scoreColumns.did"),key:"did"},{title:r("reputation.scoreColumns.score"),key:"score",width:"220px"},{title:r("reputation.scoreColumns.observations"),key:"observations",width:"100px"},{title:r("reputation.scoreColumns.weightTotal"),key:"weightTotal",width:"100px"}]),oe=se(()=>[{title:r("reputation.runColumns.runId"),key:"runId",width:"140px"},{title:r("reputation.runColumns.objective"),key:"objective",width:"140px"},{title:r("reputation.runColumns.iterations"),key:"iterations",width:"80px"},{title:r("reputation.runColumns.bestScore"),key:"bestScore",width:"110px"},{title:r("reputation.runColumns.status"),key:"status",width:"100px"},{title:r("reputation.runColumns.createdAt"),key:"createdAt",width:"160px"},{title:r("reputation.runColumns.action"),key:"action",width:"160px"}]);function ae(i){const c=`reputation.decay.${i}`,y=r(c);return y===c?i:y}function $(i){const c=`reputation.kind.${i}`,y=r(c);return y===c?i:y}function ee(i){const c=`reputation.objective.${i}`,y=r(c);return y===c?i:y}function C(i){return{accuracy:"blue",fairness:"green",resilience:"purple",convergence_speed:"orange"}[i]||"default"}function ne(i){return{accuracy:"#1677ff",fairness:"#52c41a",resilience:"#722ed1",convergence_speed:"#fa8c16"}[i]||"#888"}function re(i){const c=`reputation.objectiveDesc.${i}`,y=r(c);return y===c?"":y}function a(i){const c=`reputation.status.${i}`,y=r(c);return y===c?i:y}function b(i){return{running:"processing",complete:"blue",applied:"green",failed:"red",cancelled:"default"}[i]||"default"}function W(i){return{running:"#1677ff",complete:"#13c2c2",applied:"#52c41a",failed:"#ff4d4f",cancelled:"#888"}[i]||"#888"}function we(i){return i===0?"gold":i===1?"silver":i===2?"bronze":""}function je(i){return i>=.8?"#52c41a":i>=.5?"#1677ff":i>=.3?"#faad14":"#ff4d4f"}function Ce(i,c){return c?Math.round(i/c*100):0}function De(i){const c=I.value?.reputationDistribution.buckets.reduce((y,M)=>y+M.count,0)||0;return c?Math.round(i.count/c*100):0}function Te(i){if(typeof i=="string")return i;try{return JSON.stringify(i,null,2)}catch{return String(i)}}async function H(){Q.value=!0,P.value={noDb:!1,error:""};try{const[i,c,y]=await Promise.all([e.execute(`reputation list --decay ${E.value} --json`,1e4).catch(()=>({output:""})),e.execute("reputation runs --limit 50 --json",1e4).catch(()=>({output:""})),e.execute("reputation stats-v2 --json",8e3).catch(()=>({output:""}))]),M=[i,c,y].map(le=>N(le.output)).find(le=>le.noDb);M&&(P.value=M),O.value=ce(i.output),z.value=ge(c.output),V.value=Se(y.output)}catch(i){g.error(r("reputation.messages.loadFailed",{err:i?.message||i}))}finally{Q.value=!1}}async function Fe(){try{const{output:i}=await e.execute(`reputation list --decay ${E.value} --json`,1e4),c=N(i);if(c.noDb){P.value=c;return}O.value=ce(i)}catch(i){g.error(r("reputation.messages.loadScoresFailed",{err:i?.message||i}))}}async function Ee(){if(!S.did.trim()){g.warning(r("reputation.messages.didRequired"));return}if(S.score<0||S.score>1){g.warning(r("reputation.messages.scoreRange"));return}R.value=!0;try{const i=[`reputation observe "${S.did.trim().replace(/"/g,'\\"')}"`,String(S.score),`-k ${S.kind}`,`-w ${S.weight}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(!/"did"/.test(c)){g.error(r("reputation.messages.observeFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.observeOk")),Z.value=!1,ue(),await H()}catch(i){g.error(r("reputation.messages.observeFailed",{err:i?.message||i}))}finally{R.value=!1}}async function Ie(){K.value=!0;try{const i=["reputation optimize",`-o ${h.objective}`,`-i ${h.iterations}`,"--json"],{output:c}=await e.execute(i.join(" "),6e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}const M=xe(c);if(!M){g.error(r("reputation.messages.optimizeFailed",{err:c.slice(0,120)}));return}J.value=!1,g.success(r("reputation.messages.optimizeOk",{score:M.bestScore.toFixed(4)})),await H(),T.value=M,G.value=!0,await ie()}catch(i){g.error(r("reputation.messages.optimizeFailed",{err:i?.message||i}))}finally{K.value=!1}}async function Me(i){ve.confirm({title:r("reputation.applyConfirm.title"),content:r("reputation.applyConfirm.content",{runId:i.runId.slice(0,12)}),okText:r("reputation.applyConfirm.ok"),cancelText:r("reputation.applyConfirm.cancel"),onOk:async()=>{try{const{output:c}=await e.execute(`reputation apply ${i.runId}`,8e3);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(/Failed|Error/i.test(c)&&!/Applied/i.test(c)){g.error(r("reputation.messages.applyFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.applyOk")),await H()}catch(c){g.error(r("reputation.messages.applyFailed",{err:c?.message||c}))}}})}async function Le(i){T.value=i,I.value=null,G.value=!0,await ie()}async function ie(){if(T.value){A.value=!0;try{const{output:i}=await e.execute(`reputation analytics ${T.value.runId} --json`,8e3);if(N(i).noDb)return;I.value=ke(i)}catch{}finally{A.value=!1}}}function Ne(){B.value=null,j.value=!0}async function Ue(){U.value=!0;try{const i=["reputation anomalies",`-m ${D.method}`,`-t ${D.threshold}`,`-d ${D.decay}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}B.value=_e(c)}catch(i){g.error(r("reputation.messages.detectFailed",{err:i?.message||i}))}finally{U.value=!1}}function ue(){S.did="",S.score=.8,S.kind="generic",S.weight=1}me(H);const de={t:r,ws:e,EMPTY_IMG:w,loading:Q,observing:R,optimizing:K,detectingAnomalies:U,loadingAnalytics:A,scores:O,runs:z,stats:V,errorState:P,activeTab:X,decayFilter:E,showObserveModal:Z,showOptimizeModal:J,showAnomaliesModal:j,showAnalyticsModal:G,observeForm:S,optimizeForm:h,anomalyForm:D,currentRun:T,currentAnalytics:I,anomalyResult:B,scoreColumns:Y,runColumns:oe,decayLabel:ae,kindLabel:$,objectiveLabel:ee,objectiveColor:C,objectiveBarColor:ne,objectiveDesc:re,statusLabel:a,statusColor:b,statusBarColor:W,rankClass:we,scoreColor:je,pctOfTotal:Ce,bucketPct:De,formatParams:Te,loadAll:H,loadScores:Fe,submitObservation:Ee,submitOptimization:Ie,applyRun:Me,viewRunAnalytics:Le,loadAnalyticsForCurrentRun:ie,openAnomaliesModal:Ne,runAnomalyDetection:Ue,resetObserveForm:ue,ref:_,onMounted:me,reactive:te,computed:se,get useI18n(){return fe},get ReloadOutlined(){return Qe},get PlusOutlined(){return He},get WarningOutlined(){return Ge},get ThunderboltOutlined(){return Ze},get UserOutlined(){return Ke},get EyeOutlined(){return qe},get ExperimentOutlined(){return We},get LoadingOutlined(){return Ye},get TrophyOutlined(){return Je},get ArrowRightOutlined(){return Ve},get message(){return g},get Modal(){return ve},get Empty(){return be},get useWsStore(){return ye},get parseScores(){return ce},get parseAnomalies(){return _e},get parseRun(){return xe},get parseRuns(){return ge},get parseAnalytics(){return ke},get parseStatsV2(){return Se},get detectReputationError(){return N},get formatReputationTime(){return at},get OPTIMIZATION_OBJECTIVES(){return Oe},get DECAY_MODELS(){return Xe},get ANOMALY_METHODS(){return $e},get RUN_STATUSES(){return ze},get OBSERVATION_KINDS(){return et}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},rt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},it={class:"page-title"},lt={class:"page-sub"},st={class:"filter-bar"},ct={style:{color:"var(--text-secondary)","font-size":"12px"}},ut={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},dt={key:3,style:{color:"var(--text-secondary)"}},mt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ft={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},yt={key:2,style:{color:"var(--text-secondary)"}},bt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},vt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},_t={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},gt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},xt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},kt={style:{"padding-top":"8px"}},St={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},ht={key:1},Ot={style:{"font-family":"monospace","font-size":"12px",color:"var(--text-primary)"}},zt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},At={key:0,style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},Rt={key:0,style:{"padding-top":"8px"}},wt={class:"params-pre"},jt={style:{color:"#ff4d4f"}},Ct={key:0,style:{"margin-top":"16px"}},Dt={style:{color:"var(--text-primary)","font-size":"13px",margin:"0 0 10px"}},Tt={class:"bucket-label"},Ft={key:0,style:{"margin-top":"8px",color:"var(--text-secondary)","font-size":"12px"}},Et={key:0,style:{"margin-left":"12px"}};function It(l,t,r,e,w,Q){const R=m("a-button"),K=m("a-space"),U=m("a-alert"),A=m("a-statistic"),O=m("a-card"),z=m("a-col"),V=m("a-row"),P=m("a-radio-button"),X=m("a-radio-group"),E=m("a-progress"),Z=m("a-table"),J=m("a-tab-pane"),j=m("a-tag"),G=m("a-tabs"),S=m("a-input"),h=m("a-form-item"),D=m("a-input-number"),T=m("a-select-option"),I=m("a-select"),B=m("a-form"),Y=m("a-modal"),oe=m("a-divider"),ae=m("a-empty"),$=m("a-list-item"),ee=m("a-list"),C=m("a-descriptions-item"),ne=m("a-descriptions"),re=m("a-spin");return u(),p("div",null,[v("div",rt,[v("div",null,[v("h2",it,s(e.t("reputation.title")),1),v("p",lt,s(e.t("reputation.subtitle")),1)]),o(K,null,{default:n(()=>[o(R,{loading:e.loading,onClick:e.loadAll},{icon:n(()=>[o(e.ReloadOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.refresh")),1)]),_:1},8,["loading"]),o(R,{onClick:e.openAnomaliesModal},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.anomalies")),1)]),_:1}),o(R,{type:"primary",onClick:t[0]||(t[0]=a=>e.showOptimizeModal=!0)},{icon:n(()=>[o(e.ThunderboltOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.optimize")),1)]),_:1})]),_:1})]),d(" noDb banner "),e.errorState.noDb?(u(),x(U,{key:0,type:"info","show-icon":"",message:e.t("reputation.noDb.message"),description:e.t("reputation.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):d("v-if",!0),d(" Stat cards "),o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.trackedDids"),value:e.stats.observations.totalDids,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[o(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.totalObservations"),value:e.stats.observations.totalObservations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[o(e.EyeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.optimizationRuns"),value:e.stats.totalRuns,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[o(e.ExperimentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.active"),value:e.stats.activeRuns,"value-style":{color:e.stats.activeRuns>0?"#1677ff":"#888",fontSize:"20px"},suffix:`/ ${e.stats.maxConcurrentOptimizations}`},{prefix:n(()=>[o(e.LoadingOutlined)]),_:1},8,["title","value","value-style","suffix"])]),_:1})]),_:1}),o(z,{xs:24,sm:8,lg:4},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.bestEver"),value:e.stats.bestScoreEver,precision:3,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[o(e.TrophyOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),d(" Tabs "),o(G,{activeKey:e.activeTab,"onUpdate:activeKey":t[3]||(t[3]=a=>e.activeTab=a),class:"reputation-tabs"},{default:n(()=>[d(" ── Scores tab ──────────────────────────────────────────── "),o(J,{key:"scores",tab:e.t("reputation.tabs.scores")},{default:n(()=>[v("div",st,[v("span",ct,s(e.t("reputation.filter.decayLabel")),1),o(X,{value:e.decayFilter,"onUpdate:value":t[1]||(t[1]=a=>e.decayFilter=a),size:"small","button-style":"solid",onChange:e.loadScores},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(R,{size:"small",onClick:t[2]||(t[2]=a=>e.showObserveModal=!0)},{icon:n(()=>[o(e.PlusOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.filter.addObservation")),1)]),_:1})]),o(Z,{columns:e.scoreColumns,"data-source":e.scores,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.dids",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b,index:W})=>[a.key==="rank"?(u(),p("span",{key:0,class:Pe(["rank-pill",e.rankClass(W)])},s(W+1),3)):d("v-if",!0),a.key==="did"?(u(),p("span",ut,s(b.did),1)):d("v-if",!0),a.key==="score"?(u(),x(E,{key:2,percent:Math.round(b.score*100),"stroke-color":e.scoreColor(b.score),size:"small",format:()=>b.score.toFixed(4)},null,8,["percent","stroke-color","format"])):d("v-if",!0),a.key==="observations"?(u(),p("span",dt,s(b.observations),1)):d("v-if",!0),a.key==="weightTotal"?(u(),p("span",mt,s(b.weightTotal.toFixed(2)),1)):d("v-if",!0)]),emptyText:n(()=>[v("div",pt,[o(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.scores")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Runs tab ────────────────────────────────────────────── "),o(J,{key:"runs",tab:e.t("reputation.tabs.runs")},{default:n(()=>[o(Z,{columns:e.runColumns,"data-source":e.runs,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.rows",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b})=>[a.key==="runId"?(u(),p("span",ft,s(b.runId.slice(0,12)),1)):d("v-if",!0),a.key==="objective"?(u(),x(j,{key:1,color:e.objectiveColor(b.objective),style:{"font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(b.objective)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="iterations"?(u(),p("span",yt,s(b.iterations),1)):d("v-if",!0),a.key==="bestScore"?(u(),p("span",{key:3,style:pe({color:e.scoreColor(b.bestScore),fontWeight:500,fontFamily:"monospace"})},s(b.bestScore.toFixed(4)),5)):d("v-if",!0),a.key==="status"?(u(),x(j,{key:4,color:e.statusColor(b.status)},{default:n(()=>[f(s(e.statusLabel(b.status)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="createdAt"?(u(),p("span",bt,s(e.formatReputationTime(b.createdAt)),1)):d("v-if",!0),a.key==="action"?(u(),p(F,{key:6},[o(R,{size:"small",type:"link",onClick:W=>e.viewRunAnalytics(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.analyze")),1)]),_:1},8,["onClick"]),b.status==="complete"?(u(),x(R,{key:0,size:"small",type:"link",style:{color:"#52c41a"},onClick:W=>e.applyRun(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.apply")),1)]),_:1},8,["onClick"])):d("v-if",!0)],64)):d("v-if",!0)]),emptyText:n(()=>[v("div",vt,[o(e.ExperimentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.runs")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Breakdown tab ───────────────────────────────────────── "),o(J,{key:"breakdown",tab:e.t("reputation.tabs.breakdown")},{default:n(()=>[o(V,{gutter:[16,16]},{default:n(()=>[o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.RUN_STATUSES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.statusColor(a),style:{"min-width":"80px","text-align":"center"}},{default:n(()=>[f(s(e.statusLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byStatus[a]||0,e.stats.totalRuns),"stroke-color":e.statusBarColor(a),format:()=>`${e.stats.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byObjective"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.objectiveColor(a),style:{"min-width":"100px","text-align":"center","font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byObjective[a]||0,e.stats.totalRuns),"stroke-color":e.objectiveBarColor(a),format:()=>`${e.stats.byObjective[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),d(" ── Add observation modal ──────────────────────────────── "),o(Y,{open:e.showObserveModal,"onUpdate:open":t[8]||(t[8]=a=>e.showObserveModal=a),title:e.t("reputation.observe.title"),"confirm-loading":e.observing,width:540,"ok-text":e.t("reputation.observe.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitObservation,onCancel:e.resetObserveForm},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(h,{label:e.t("reputation.observe.didLabel"),required:""},{default:n(()=>[o(S,{value:e.observeForm.did,"onUpdate:value":t[4]||(t[4]=a=>e.observeForm.did=a),placeholder:e.t("reputation.observe.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(h,{label:e.t("reputation.observe.scoreLabel"),required:""},{default:n(()=>[o(D,{value:e.observeForm.score,"onUpdate:value":t[5]||(t[5]=a=>e.observeForm.score=a),min:0,max:1,step:.05,style:{width:"160px"}},null,8,["value"]),v("span",_t,s(e.t("reputation.observe.scoreRange")),1)]),_:1},8,["label"]),o(h,{label:e.t("reputation.observe.kindLabel")},{default:n(()=>[o(I,{value:e.observeForm.kind,"onUpdate:value":t[6]||(t[6]=a=>e.observeForm.kind=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OBSERVATION_KINDS,a=>(u(),x(T,{key:a,value:a},{default:n(()=>[f(s(e.kindLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:e.t("reputation.observe.weightLabel")},{default:n(()=>[o(D,{value:e.observeForm.weight,"onUpdate:value":t[7]||(t[7]=a=>e.observeForm.weight=a),min:.1,step:.1,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Optimize modal ─────────────────────────────────────── "),o(Y,{open:e.showOptimizeModal,"onUpdate:open":t[11]||(t[11]=a=>e.showOptimizeModal=a),title:e.t("reputation.optimize.title"),"confirm-loading":e.optimizing,width:540,"ok-text":e.t("reputation.optimize.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitOptimization},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(h,{label:e.t("reputation.optimize.objectiveLabel"),required:""},{default:n(()=>[o(I,{value:e.optimizeForm.objective,"onUpdate:value":t[9]||(t[9]=a=>e.optimizeForm.objective=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),x(T,{key:a,value:a},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),v("div",gt,s(e.objectiveDesc(e.optimizeForm.objective)),1)]),_:1},8,["label"]),o(h,{label:e.t("reputation.optimize.iterationsLabel")},{default:n(()=>[o(D,{value:e.optimizeForm.iterations,"onUpdate:value":t[10]||(t[10]=a=>e.optimizeForm.iterations=a),min:1,max:1e3,step:10,style:{width:"160px"}},null,8,["value"]),v("span",xt,s(e.t("reputation.optimize.iterationsRange")),1)]),_:1},8,["label"])]),_:1}),o(U,{type:"info","show-icon":"",message:e.t("reputation.optimize.syncMessage"),description:e.t("reputation.optimize.syncDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Anomaly detection modal ────────────────────────────── "),o(Y,{open:e.showAnomaliesModal,"onUpdate:open":t[15]||(t[15]=a=>e.showAnomaliesModal=a),title:e.t("reputation.anomaly.title"),width:640,footer:null},{default:n(()=>[v("div",kt,[o(B,{"label-col":{span:5},"wrapper-col":{span:19}},{default:n(()=>[o(h,{label:e.t("reputation.anomaly.methodLabel")},{default:n(()=>[o(X,{value:e.anomalyForm.method,"onUpdate:value":t[12]||(t[12]=a=>e.anomalyForm.method=a),"button-style":"solid"},{default:n(()=>[(u(!0),p(F,null,L(e.ANOMALY_METHODS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(a==="z_score"?e.t("reputation.anomaly.zScoreLabel"):e.t("reputation.anomaly.iqrLabel")),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:e.t("reputation.anomaly.thresholdLabel")},{default:n(()=>[o(D,{value:e.anomalyForm.threshold,"onUpdate:value":t[13]||(t[13]=a=>e.anomalyForm.threshold=a),min:.5,step:.1,style:{width:"120px"}},null,8,["value"]),v("span",St,s(e.t("reputation.anomaly.thresholdHint")),1)]),_:1},8,["label"]),o(h,{label:e.t("reputation.anomaly.decayLabel")},{default:n(()=>[o(I,{value:e.anomalyForm.decay,"onUpdate:value":t[14]||(t[14]=a=>e.anomalyForm.decay=a),style:{width:"200px"}},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(T,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{"wrapper-col":{offset:5,span:19}},{default:n(()=>[o(R,{type:"primary",loading:e.detectingAnomalies,onClick:e.runAnomalyDetection},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.anomaly.start")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(oe),e.anomalyResult?(u(),p("div",ht,[o(V,{gutter:12,style:{"margin-bottom":"12px"}},{default:n(()=>[o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.totalSamples"),value:e.anomalyResult.totalSamples,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.threshold"),value:e.anomalyResult.threshold,precision:2,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.anomalies"),value:e.anomalyResult.anomalies.length,"value-style":{color:e.anomalyResult.anomalies.length>0?"#ff4d4f":"#52c41a",fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1})]),_:1}),e.anomalyResult.message?(u(),x(U,{key:0,message:e.anomalyResult.message,type:"warning","show-icon":"",style:{"margin-bottom":"12px"}},null,8,["message"])):d("v-if",!0),e.anomalyResult.anomalies.length?(u(),x(ee,{key:1,size:"small","data-source":e.anomalyResult.anomalies},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[v("span",Ot,s(a.did),1),o(j,{color:"red",style:{"margin-left":"8px"}},{default:n(()=>[f(s(e.t("reputation.anomaly.scoreTag",{score:a.score.toFixed(4)})),1)]),_:2},1024),v("span",zt,s(a.reason),1),a.zScore!==null?(u(),p("span",At,s(e.t("reputation.anomaly.zNote",{value:a.zScore.toFixed(2)})),1)):d("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):d("v-if",!0)])):(u(),x(ae,{key:0,description:e.t("reputation.anomaly.notDetected"),image:e.EMPTY_IMG},null,8,["description","image"]))])]),_:1},8,["open","title"]),d(" ── Run analytics / details modal ──────────────────────── "),o(Y,{open:e.showAnalyticsModal,"onUpdate:open":t[16]||(t[16]=a=>e.showAnalyticsModal=a),title:e.t("reputation.analytics.title",{runId:e.currentRun?.runId?.slice(0,12)||""}),width:780,footer:null},{default:n(()=>[e.currentRun?(u(),p("div",Rt,[o(ne,{column:2,size:"small",bordered:""},{default:n(()=>[o(C,{label:e.t("reputation.analytics.objective")},{default:n(()=>[o(j,{color:e.objectiveColor(e.currentRun.objective)},{default:n(()=>[f(s(e.objectiveLabel(e.currentRun.objective)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.status")},{default:n(()=>[o(j,{color:e.statusColor(e.currentRun.status)},{default:n(()=>[f(s(e.statusLabel(e.currentRun.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.iterations")},{default:n(()=>[f(s(e.currentRun.iterations),1)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.bestScore")},{default:n(()=>[v("span",{style:pe({color:e.scoreColor(e.currentRun.bestScore),fontWeight:500,fontFamily:"monospace"})},s(e.currentRun.bestScore.toFixed(4)),5)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.createdAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.createdAt)),1)]),_:1},8,["label"]),e.currentRun.completedAt?(u(),x(C,{key:0,label:e.t("reputation.analytics.completedAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.completedAt)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.bestParams?(u(),x(C,{key:1,label:e.t("reputation.analytics.bestParams"),span:2},{default:n(()=>[v("pre",wt,s(e.formatParams(e.currentRun.bestParams)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.errorMessage?(u(),x(C,{key:2,label:e.t("reputation.analytics.errorMessage"),span:2},{default:n(()=>[v("span",jt,s(e.currentRun.errorMessage),1)]),_:1},8,["label"])):d("v-if",!0)]),_:1}),o(re,{spinning:e.loadingAnalytics},{default:n(()=>[e.currentAnalytics?(u(),p("div",Ct,[v("h4",Dt,s(e.t("reputation.analytics.distributionTitle")),1),o(O,{size:"small",style:{"margin-bottom":"12px"}},{default:n(()=>[(u(!0),p(F,null,L(e.currentAnalytics.reputationDistribution.buckets,a=>(u(),p("div",{key:a.label,class:"bucket-row"},[v("span",Tt,s(a.label),1),o(E,{percent:e.bucketPct(a),"stroke-color":a.count>0?"#1677ff":"#d9d9d9",format:()=>`${a.count}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentAnalytics.reputationDistribution.mean!==null?(u(),p("div",Ft,[f(s(e.t("reputation.analytics.mean",{value:e.currentAnalytics.reputationDistribution.mean.toFixed(4)}))+" ",1),e.currentAnalytics.reputationDistribution.stdDev!==null?(u(),p("span",Et,s(e.t("reputation.analytics.stdDev",{value:e.currentAnalytics.reputationDistribution.stdDev.toFixed(4)})),1)):d("v-if",!0)])):d("v-if",!0)]),_:1}),e.currentAnalytics.recommendations.length?(u(),x(O,{key:0,title:e.t("reputation.analytics.recommendations"),size:"small"},{default:n(()=>[o(ee,{size:"small","data-source":e.currentAnalytics.recommendations},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[o(e.ArrowRightOutlined,{style:{color:"#faad14","margin-right":"8px"}}),f(" "+s(a),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):d("v-if",!0)])):d("v-if",!0)]),_:1},8,["spinning"])])):d("v-if",!0)]),_:1},8,["open","title"])])}const io=Be(nt,[["render",It],["__scopeId","data-v-c4829a4e"],["__file","/tmp/cc-web-panel-wQGCAD/repo/packages/web-panel/src/views/Reputation.vue"]]);export{io as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{q as z,f as S,h as $,$ as f,i as N}from"./index-
|
|
1
|
+
import{q as z,f as S,h as $,$ as f,i as N}from"./index-CSnTUPQx.js";import{d as _,o as E,f as F,b as o,c as I,r as h}from"./vendor-BvqAck49.js";import{u as M,r as u}from"./responsiveObserve-BQG9LlBs.js";import{u as T}from"./useFlexGapSupport-D_iwA3vx.js";import{b as V,c as q}from"./index-C2CN7coN.js";const D=()=>({align:f([String,Object]),justify:f([String,Object]),prefixCls:String,gutter:f([Number,Array,Object],0),wrap:{type:Boolean,default:void 0}}),P=_({compatConfig:{MODE:3},name:"ARow",inheritAttrs:!1,props:D(),setup(s,G){let{slots:d,attrs:l}=G;const{prefixCls:a,direction:R}=z("row",s),[O,C]=V(a);let m;const v=M(),p=h({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),y=h({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=T();E(()=>{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)})}),F(()=>{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});q({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(I("div",S(S({},l),{},{class:k.value,style:$($({},B.value),l.style)}),[(e=d.default)===null||e===void 0?void 0:e.call(d)]))}}});export{P as A};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{I as m,J as y,U as f,c as s,K as o,V as v,S as
|
|
2
|
-
`);for(const r of d){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ feed/i)||c.startsWith("RSS")||c.startsWith("No "))continue;const p=c.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);p?n.push({key:p[1],id:p[1],title:p[2].trim(),url:(p[3]||"").trim(),itemCount:0,lastUpdated:""}):c.length>5&&n.push({key:String(n.length),id:String(n.length),title:c.slice(0,80),url:"",itemCount:0,lastUpdated:""})}return n}async function F(){M.value=!0,z.value=[];try{let l="rss articles --limit 30 --json";
|
|
3
|
-
`);for(const r of d){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ article/i)||c.startsWith("No "))continue;const p=c.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);p&&n.push({key:p[1],id:p[1],title:p[2].trim(),link:"",source:(p[3]||"").trim(),publishedAt:"",read:!1,summary:"",content:""})}return n}async function
|
|
1
|
+
import{I as m,J as y,U as f,c as s,K as o,V as v,S as C,Q as g,o as H,b as q,r as x,P as i,F as N,Z as K,R as k,a2 as Y}from"./vendor-BvqAck49.js";import{_ as $,u as G,d as u}from"./index-CSnTUPQx.js";import{aB as ee,aQ as te,R as ne,as as le,y as ae}from"./icons-DP3uiYxy.js";const oe={__name:"RssFeed",setup(Z,{expose:a}){a();const h=G(),e=x(!1),M=x(!1),D=x(!1),w=x(!1),b=x([]),R=x([]),S=x(""),L=x(!1),O=x(""),z=x([]),j=q(()=>{const l=b.value.length,n=R.value.length,d=R.value.filter(p=>!p.read).length,r=b.value.filter(p=>p.lastUpdated).sort((p,X)=>new Date(X.lastUpdated)-new Date(p.lastUpdated))[0],c=r?I(r.lastUpdated):"-";return[{label:"订阅源数",value:l,color:"#1677ff"},{label:"文章总数",value:n,color:"#52c41a"},{label:"未读文章",value:d,color:"#faad14"},{label:"最近刷新",value:c,color:"#13c2c2"}]}),P=[{title:"标题",key:"title",dataIndex:"title",ellipsis:!0},{title:"来源",key:"source",dataIndex:"source",width:"140px"},{title:"发布时间",key:"publishedAt",dataIndex:"publishedAt",width:"160px"},{title:"状态",key:"status",width:"80px"},{title:"操作",key:"actions",width:"100px"}];function I(l){if(!l)return"-";try{const n=new Date(l);return isNaN(n.getTime())?l:n.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return l}}function U(l){try{const n=l.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(n)return JSON.parse(n[1])}catch{}return null}async function A(){e.value=!0;try{const{output:l}=await h.execute("rss list --json",2e4),n=U(l);Array.isArray(n)?b.value=n.map((d,r)=>({key:d.id||d.url||r,id:d.id||String(r),title:d.title||d.name||"",url:d.url||d.feedUrl||"",itemCount:d.itemCount??d.articleCount??d.count??0,lastUpdated:d.lastUpdated||d.updatedAt||d.lastRefresh||""})):b.value=T(l)}catch(l){u.error("加载订阅源失败: "+l.message)}finally{e.value=!1}}function T(l){const n=[],d=l.split(`
|
|
2
|
+
`);for(const r of d){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ feed/i)||c.startsWith("RSS")||c.startsWith("No "))continue;const p=c.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);p?n.push({key:p[1],id:p[1],title:p[2].trim(),url:(p[3]||"").trim(),itemCount:0,lastUpdated:""}):c.length>5&&n.push({key:String(n.length),id:String(n.length),title:c.slice(0,80),url:"",itemCount:0,lastUpdated:""})}return n}async function F(){M.value=!0,z.value=[];try{let l="rss articles --limit 30 --json";S.value&&(l=`rss articles --feed ${S.value} --limit 30 --json`);const{output:n}=await h.execute(l,2e4),d=U(n);Array.isArray(d)?R.value=d.map((r,c)=>({key:r.id||String(c),id:r.id||String(c),title:r.title||"无标题",link:r.link||r.url||"",source:r.source||r.feedTitle||r.feedName||"",publishedAt:r.publishedAt||r.pubDate||r.date||"",read:!!r.read,summary:r.summary||r.description||"",content:r.content||""})):R.value=W(n)}catch(l){u.error("加载文章失败: "+l.message)}finally{M.value=!1}}function W(l){const n=[],d=l.split(`
|
|
3
|
+
`);for(const r of d){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ article/i)||c.startsWith("No "))continue;const p=c.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);p&&n.push({key:p[1],id:p[1],title:p[2].trim(),link:"",source:(p[3]||"").trim(),publishedAt:"",read:!1,summary:"",content:""})}return n}async function B(){const l=O.value.trim();if(!l){u.warning("请输入订阅源地址");return}w.value=!0;try{const{output:n}=await h.execute(`rss add "${l}"`,3e4);n.includes("error")||n.includes("失败")||n.includes("Error")?u.error("添加失败: "+n.slice(0,120)):(u.success("订阅源已添加"),L.value=!1,O.value="",await A(),await F())}catch(n){u.error("添加失败: "+n.message)}finally{w.value=!1}}async function E(l){try{u.loading({content:`正在刷新 ${l.title||l.id}...`,key:"refreshFeed"}),await h.execute(`rss refresh ${l.id}`,3e4),u.success({content:"刷新完成",key:"refreshFeed"}),await A(),await F()}catch(n){u.error({content:"刷新失败: "+n.message,key:"refreshFeed"})}}async function V(l){try{u.loading({content:`正在删除 ${l.title||l.id}...`,key:"removeFeed"});const{output:n}=await h.execute(`rss remove ${l.id}`,2e4);n.includes("error")||n.includes("失败")?u.error({content:"删除失败: "+n.slice(0,120),key:"removeFeed"}):(u.success({content:"已删除订阅源",key:"removeFeed"}),await A(),await F())}catch(n){u.error({content:"删除失败: "+n.message,key:"removeFeed"})}}async function t(){D.value=!0;try{u.loading({content:"正在刷新所有订阅源...",key:"refreshAll"}),await h.execute("rss refresh-all",6e4),u.success({content:"全部刷新完成",key:"refreshAll"}),await A(),await F()}catch(l){u.error({content:"刷新失败: "+l.message,key:"refreshAll"})}finally{D.value=!1}}async function _(l){try{await h.execute(`rss mark-read ${l.id}`,1e4),l.read=!0,u.success("已标记已读")}catch(n){u.error("操作失败: "+n.message)}}function J(l,n){z.value=l?[n.key]:[]}H(async()=>{await A(),await F()});const Q={ws:h,feedsLoading:e,articlesLoading:M,refreshingAll:D,adding:w,feeds:b,articles:R,selectedFeedId:S,showAddModal:L,newFeedUrl:O,expandedKeys:z,statsCards:j,articleColumns:P,formatTime:I,safeParseJson:U,loadFeeds:A,parseFeedListText:T,loadArticles:F,parseArticlesText:W,addFeed:B,refreshFeed:E,removeFeed:V,refreshAllFeeds:t,markRead:_,onExpandArticle:J,ref:x,computed:q,onMounted:H,get ReadOutlined(){return ae},get PlusOutlined(){return le},get ReloadOutlined(){return ne},get DeleteOutlined(){return te},get LinkOutlined(){return ee},get message(){return u},get useWsStore(){return G}};return Object.defineProperty(Q,"__isScriptSetup",{enumerable:!1,value:!0}),Q}},se={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},re={key:0,style:{"text-align":"center",padding:"60px"}},ie={style:{display:"flex","align-items":"center",gap:"6px",overflow:"hidden"}},de={style:{color:"#e0e0e0","font-size":"13px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ce={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"6px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ue={style:{display:"flex","justify-content":"space-between",color:"var(--text-secondary)","font-size":"12px"}},me={key:2,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)","margin-bottom":"24px"}},pe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},ye={key:3,style:{"text-align":"center",padding:"60px"}},fe=["href"],ge={key:1,style:{color:"#e0e0e0","font-weight":"500"}},_e={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},ve={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},xe={style:{padding:"8px 16px",color:"var(--text-secondary)","font-size":"13px","line-height":"1.8","max-height":"300px","overflow-y":"auto"}},ke={key:0,style:{"margin-bottom":"8px"}},he=["innerHTML"],we={key:2,style:{color:"var(--text-muted)"}},be={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function Ae(Z,a,h,e,M,D){const w=m("a-button"),b=m("a-space"),R=m("a-statistic"),S=m("a-card"),L=m("a-col"),O=m("a-row"),z=m("a-spin"),j=m("a-menu-item"),P=m("a-menu"),I=m("a-dropdown"),U=m("a-select-option"),A=m("a-select"),T=m("a-tag"),F=m("a-table"),W=m("a-input"),B=m("a-form-item"),E=m("a-form"),V=m("a-modal");return i(),y("div",null,[f("div",se,[a[6]||(a[6]=f("div",null,[f("h2",{class:"page-title"},"RSS 订阅"),f("p",{class:"page-sub"},"订阅源 / 文章阅读")],-1)),s(b,null,{default:o(()=>[s(w,{type:"primary",onClick:a[0]||(a[0]=t=>e.showAddModal=!0)},{icon:o(()=>[s(e.PlusOutlined)]),default:o(()=>[a[4]||(a[4]=g(" 添加订阅 ",-1))]),_:1}),s(w,{ghost:"",loading:e.refreshingAll,onClick:e.refreshAllFeeds},{icon:o(()=>[s(e.ReloadOutlined)]),default:o(()=>[a[5]||(a[5]=g(" 全部刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),v(" Stats Cards "),s(O,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[(i(!0),y(N,null,K(e.statsCards,t=>(i(),C(L,{xs:12,sm:6,key:t.label},{default:o(()=>[s(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:o(()=>[s(R,{title:t.label,value:t.value,"value-style":{color:t.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),v(" Section 1: Feed Sources "),a[16]||(a[16]=f("h3",{style:{color:"var(--text-primary)","margin-bottom":"12px"}},"订阅源管理",-1)),e.feedsLoading?(i(),y("div",re,[s(z,{size:"large"})])):e.feeds.length>0?(i(),C(O,{key:1,gutter:[16,16],style:{"margin-bottom":"24px"}},{default:o(()=>[(i(!0),y(N,null,K(e.feeds,t=>(i(),C(L,{xs:24,sm:12,md:8,lg:6,key:t.id||t.url},{default:o(()=>[s(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small",hoverable:!0},{title:o(()=>[f("div",ie,[s(e.ReadOutlined,{style:{color:"#1677ff","flex-shrink":"0"}}),f("span",de,k(t.title||"未命名订阅"),1)])]),extra:o(()=>[s(I,null,{overlay:o(()=>[s(P,null,{default:o(()=>[s(j,{onClick:_=>e.refreshFeed(t)},{default:o(()=>[s(e.ReloadOutlined),a[8]||(a[8]=g(" 刷新 ",-1))]),_:1},8,["onClick"]),s(j,{onClick:_=>e.removeFeed(t),danger:""},{default:o(()=>[s(e.DeleteOutlined),a[9]||(a[9]=g(" 删除 ",-1))]),_:1},8,["onClick"])]),_:2},1024)]),default:o(()=>[s(w,{size:"small",type:"text",style:{color:"var(--text-muted)"}},{default:o(()=>[...a[7]||(a[7]=[g("...",-1)])]),_:1})]),_:2},1024)]),default:o(()=>[f("p",ce,[s(e.LinkOutlined),g(" "+k(t.url||"-"),1)]),f("div",ue,[f("span",null,k(t.itemCount??"-")+" 篇文章",1),f("span",null,k(e.formatTime(t.lastUpdated)),1)])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(i(),y("div",me,[s(e.ReadOutlined,{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),a[10]||(a[10]=g(' 暂无订阅源,点击"添加订阅"开始 ',-1))])),v(" Section 2: Articles "),f("div",pe,[a[12]||(a[12]=f("h3",{style:{color:"var(--text-primary)",margin:"0"}},"文章列表",-1)),s(b,null,{default:o(()=>[s(A,{value:e.selectedFeedId,"onUpdate:value":a[1]||(a[1]=t=>e.selectedFeedId=t),style:{"min-width":"180px"},placeholder:"筛选订阅源","allow-clear":"",onChange:e.loadArticles},{default:o(()=>[s(U,{value:""},{default:o(()=>[...a[11]||(a[11]=[g("全部订阅",-1)])]),_:1}),(i(!0),y(N,null,K(e.feeds,t=>(i(),C(U,{key:t.id,value:t.id},{default:o(()=>[g(k(t.title||t.url),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),s(w,{loading:e.articlesLoading,onClick:e.loadArticles},{icon:o(()=>[s(e.ReloadOutlined)]),_:1},8,["loading"])]),_:1})]),e.articlesLoading?(i(),y("div",ye,[s(z,{size:"large"})])):(i(),C(F,{key:4,columns:e.articleColumns,"data-source":e.articles,pagination:{pageSize:20,showTotal:t=>`共 ${t} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"rss-row",expandable:{expandedRowKeys:e.expandedKeys,onExpand:e.onExpandArticle}},{bodyCell:o(({column:t,record:_})=>[t.key==="title"?(i(),y(N,{key:0},[_.link?(i(),y("a",{key:0,href:_.link,target:"_blank",rel:"noopener noreferrer",style:{color:"#1677ff","font-weight":"500"}},[s(e.LinkOutlined,{style:{"margin-right":"4px"}}),g(k(_.title),1)],8,fe)):(i(),y("span",ge,k(_.title),1))],64)):v("v-if",!0),t.key==="source"?(i(),C(T,{key:1,color:"blue",style:{"font-size":"10px"}},{default:o(()=>[g(k(_.source||"-"),1)]),_:2},1024)):v("v-if",!0),t.key==="publishedAt"?(i(),y("span",_e,k(e.formatTime(_.publishedAt)),1)):v("v-if",!0),t.key==="status"?(i(),C(T,{key:3,color:_.read?"default":"green"},{default:o(()=>[g(k(_.read?"已读":"未读"),1)]),_:2},1032,["color"])):v("v-if",!0),t.key==="actions"?(i(),y(N,{key:4},[_.read?(i(),y("span",ve,"--")):(i(),C(w,{key:0,size:"small",type:"link",onClick:Y(J=>e.markRead(_),["stop"])},{default:o(()=>[...a[13]||(a[13]=[g(" 标记已读 ",-1)])]),_:1},8,["onClick"]))],64)):v("v-if",!0)]),expandedRowRender:o(({record:t})=>[f("div",xe,[t.summary?(i(),y("div",ke,[a[14]||(a[14]=f("strong",{style:{color:"var(--text-primary)"}},"摘要: ",-1)),g(k(t.summary),1)])):v("v-if",!0),t.content?(i(),y("div",{key:1,innerHTML:t.content,style:{color:"var(--text-secondary)"}},null,8,he)):v("v-if",!0),!t.summary&&!t.content?(i(),y("div",we,"暂无内容预览")):v("v-if",!0)])]),emptyText:o(()=>[f("div",be,[s(e.ReadOutlined,{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),a[15]||(a[15]=g(" 暂无文章 ",-1))])]),_:1},8,["data-source","pagination","expandable"])),v(" Add Feed Modal "),s(V,{open:e.showAddModal,"onUpdate:open":a[3]||(a[3]=t=>e.showAddModal=t),title:"添加订阅源","confirm-loading":e.adding,onOk:e.addFeed,"ok-text":"添加","cancel-text":"取消"},{default:o(()=>[s(E,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:o(()=>[s(B,{label:"URL",required:""},{default:o(()=>[s(W,{value:e.newFeedUrl,"onUpdate:value":a[2]||(a[2]=t=>e.newFeedUrl=t),placeholder:"输入 RSS 订阅源地址,如 https://example.com/feed.xml"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}const Se=$(oe,[["render",Ae],["__scopeId","data-v-59e72a50"],["__file","/tmp/cc-web-panel-wQGCAD/repo/packages/web-panel/src/views/RssFeed.vue"]]);export{Se as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as u,J as g,U as m,R as c,c as r,K as t,V as f,S as k,r as v,o as se,a as ie,b as j,P as d,Q as _,a2 as ke,F as O,Z as L}from"./vendor-BvqAck49.js";import{_ as Se,b as ce,u as de,E as ue,d as F}from"./index-DT1y-Y3f.js";import{s as ye}from"./community-parser-CO25nZFt.js";import{at as Ce,l as Te,a4 as Ne,a_ as Ae,a9 as Oe,a2 as ze,$ as we,k as Ee,R as Me}from"./icons-DP3uiYxy.js";function ae(n){const o=ye(n);if(!o)return null;try{return JSON.parse(o)}catch{}const s=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!s)return null;try{return JSON.parse(s[0])}catch{return null}}const Ie=Object.freeze(["bm25","vector","hybrid"]);function Fe(n,o=0){return typeof n=="number"&&Number.isFinite(n)?n:o}function Re(n){if(Array.isArray(n))return n.filter(o=>typeof o=="string");if(typeof n!="string")return[];try{const o=JSON.parse(n);if(Array.isArray(o))return o.filter(s=>typeof s=="string")}catch{}return[]}function U(n){if(!n)return{noDb:!1,error:""};const o=ye(n),s=/Database not available/i.test(o);return{noDb:s,error:s?"Database not available":""}}function De(n,o=0){if(!n||typeof n!="object")return null;const s=n.id||"";return s?{key:s,id:s,score:Fe(n.score,0),title:String(n.title||""),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",snippet:String(n.snippet||""),_idx:o}:null}function fe(n){const o=ae(n);return Array.isArray(o)?o.map(De).filter(Boolean):[]}function he(n,o=0){if(!n||typeof n!="object")return null;const s=n.id||"";return s?{key:s,id:s,title:String(n.title||""),content:n.content??"",tags:Re(n.tags),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",updatedAt:n.updated_at??n.updatedAt??"",_idx:o}:null}function ge(n){const o=ae(n);return Array.isArray(o)?o.map(he).filter(Boolean):[]}function me(n){const o=ae(n);return!o||typeof o!="object"||Array.isArray(o)?null:he(o,0)}function _e(n){if(!Array.isArray(n)||n.length===0)return{total:0,categories:[],tags:[]};const o=new Map,s=new Map;for(const e of n){o.set(e.category,(o.get(e.category)||0)+1);for(const x of e.tags)s.set(x,(s.get(x)||0)+1)}return{total:n.length,categories:[...o.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count),tags:[...s.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count)}}function Le(n){if(n==null||n==="")return"—";const o=String(n),s=o.includes(" ")&&!o.includes("T")?o.replace(" ","T")+"Z":o,e=new Date(s);return isNaN(e.getTime())?o:e.toLocaleString("zh-CN",{hour12:!1})}const G="cc.web-panel.search.recent",re=8,Pe={__name:"Search",setup(n,{expose:o}){o();const{t:s}=ce(),e=de(),x=ue.PRESENTED_IMAGE_SIMPLE,q=v(!1),C=v(!1),P=v(!1),B=v(!1),z=v([]),h=v([]),A=v({noDb:!1,error:""}),T=ie({query:"",mode:"hybrid",topK:10}),Q=v(""),w=v(H()),J=v("results"),S=v(""),N=v(""),E=v(!1),M=v(null),V=j(()=>_e(z.value)),Y=j(()=>h.value.length?Math.max(...h.value.map(l=>l.score)):0),W=j(()=>[{title:s("search.noteColumns.title"),key:"title"},{title:s("search.noteColumns.category"),key:"category",width:"120px"},{title:s("search.noteColumns.tags"),key:"tags",width:"240px"},{title:s("search.noteColumns.createdAt"),key:"createdAt",width:"180px"},{title:s("search.noteColumns.action"),key:"action",width:"180px"}]),Z=j(()=>{let l=z.value;if(S.value&&(l=l.filter(i=>i.category===S.value)),N.value.trim()){const i=N.value.trim().toLowerCase();l=l.filter(y=>y.tags.some(b=>b.toLowerCase().includes(i)))}return l});function K(l){const i=`search.mode.${l}`,y=s(i);return y===i?l:y}function X(l){const i=["blue","green","purple","orange","cyan","magenta","gold","volcano"];let y=0;for(let b=0;b<(l||"").length;b++)y=y*31+l.charCodeAt(b)>>>0;return i[y%i.length]}function $(l){return l>=.7?"#52c41a":l>=.5?"#1677ff":l>=.3?"#faad14":"#ff4d4f"}function R(l){return String(l).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function I(l,i){if(!i||!l)return R(l);const y=i.split(/\s+/).filter(Boolean);let b=R(l);for(const be of y){const xe=new RegExp(`(${be.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");b=b.replace(xe,"<mark>$1</mark>")}return b}function ee(l,i){return i?I(l,i):R(l)}function H(){try{const l=localStorage.getItem(G);if(l){const i=JSON.parse(l);if(Array.isArray(i))return i.filter(y=>typeof y=="string").slice(0,re)}}catch{}return[]}function a(l){const i=l.trim();if(!i)return;const y=[i,...w.value.filter(b=>b!==i)];w.value=y.slice(0,re);try{localStorage.setItem(G,JSON.stringify(w.value))}catch{}}function p(){w.value=[];try{localStorage.removeItem(G)}catch{}}function D(l){T.query=l,te()}async function oe(){q.value=!0,A.value={noDb:!1,error:""};try{const{output:l}=await e.execute("note list -n 500 --json",12e3).catch(()=>({output:""})),i=U(l);if(i.noDb){A.value=i,z.value=[];return}z.value=ge(l)}catch(l){F.error(s("search.messages.loadIndexFailed",{err:l?.message||l}))}finally{q.value=!1}}async function te(){const l=T.query.trim();if(!l){F.warning(s("search.messages.queryRequired"));return}P.value=!0,A.value={noDb:!1,error:""};try{const i=[`search ${ne(l)}`,`--mode ${T.mode}`,`--top-k ${T.topK||10}`,"--json"],{output:y}=await e.execute(i.join(" "),15e3),b=U(y);if(b.noDb){A.value=b,h.value=[],B.value=!0,Q.value=l;return}h.value=fe(y),Q.value=l,B.value=!0,a(l),J.value="results"}catch(i){F.error(s("search.messages.searchFailed",{err:i?.message||i}))}finally{P.value=!1}}function ne(l){return`"${String(l).replace(/"/g,'\\"')}"`}function pe(l){T.query=l.title,T.mode="vector",te()}async function ve(l){E.value=!0,C.value=!0,M.value=null;try{const{output:i}=await e.execute(`note show ${l} --json`,8e3);if(U(i).noDb){F.error(s("search.messages.needInit"));return}M.value=me(i),M.value||F.error(s("search.messages.noteLoadFailed"))}catch(i){F.error(s("search.messages.loadFailed",{err:i?.message||i}))}finally{C.value=!1}}se(oe);const le={t:s,ws:e,EMPTY_IMG:x,RECENT_LS:G,RECENT_MAX:re,loadingIndex:q,loadingNote:C,searching:P,searched:B,notes:z,results:h,errorState:A,form:T,currentQuery:Q,recentQueries:w,activeTab:J,indexCategoryFilter:S,indexTagFilter:N,showNoteModal:E,currentNote:M,indexSummary:V,topScore:Y,noteColumns:W,filteredNotes:Z,modeLabel:K,categoryColor:X,scoreColor:$,escapeHtml:R,highlightSnippet:I,highlightContent:ee,loadRecent:H,pushRecent:a,clearRecent:p,rerunQuery:D,loadIndex:oe,runSearch:te,shellQuote:ne,searchSimilar:pe,viewNote:ve,ref:v,computed:j,onMounted:se,reactive:ie,get useI18n(){return ce},get ReloadOutlined(){return Me},get SearchOutlined(){return Ee},get ThunderboltOutlined(){return we},get BookOutlined(){return ze},get AppstoreOutlined(){return Oe},get TagsOutlined(){return Ae},get FileTextOutlined(){return Ne},get TrophyOutlined(){return Te},get EyeOutlined(){return Ce},get message(){return F},get Empty(){return ue},get useWsStore(){return de},get parseSearchResults(){return fe},get parseNotes(){return ge},get parseNote(){return me},get buildIndexSummary(){return _e},get detectSearchError(){return U},get formatSearchTime(){return Le},get SEARCH_MODES(){return Ie}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Be={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Qe={class:"page-title"},je={class:"page-sub"},qe={key:0,class:"recent-row"},Je={class:"recent-label"},Ke={class:"score-block"},He={class:"result-title"},Ue={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Ge={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"11px"}},Ve={key:0,class:"result-snippet"},Ye=["innerHTML"],We={class:"filter-bar"},Ze={key:0,class:"tag-row"},Xe={class:"tag-row-label"},$e={class:"tag-count"},et={style:{color:"var(--text-primary)","font-weight":"500"}},tt={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},rt={key:0,style:{color:"var(--text-muted)","font-size":"11px"}},at={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},ot={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},nt={key:0,style:{padding:"40px","text-align":"center"}},lt={key:1,style:{"padding-top":"8px"}},st={style:{"font-family":"monospace","font-size":"12px"}},it={key:0,style:{color:"var(--text-muted)"}},ct={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},dt={key:0,class:"note-content"},ut=["innerHTML"];function ft(n,o,s,e,x,q){const C=u("a-button"),P=u("a-space"),B=u("a-alert"),z=u("a-input"),h=u("a-col"),A=u("a-radio-button"),T=u("a-radio-group"),Q=u("a-input-number"),w=u("a-row"),J=u("a-form"),S=u("a-tag"),N=u("a-card"),E=u("a-statistic"),M=u("a-empty"),V=u("a-progress"),Y=u("a-list-item-meta"),W=u("a-list-item"),Z=u("a-list"),K=u("a-tab-pane"),X=u("a-table"),$=u("a-tabs"),R=u("a-spin"),I=u("a-descriptions-item"),ee=u("a-descriptions"),H=u("a-modal");return d(),g("div",null,[m("div",Be,[m("div",null,[m("h2",Qe,c(e.t("search.title")),1),m("p",je,c(e.t("search.subtitle")),1)]),r(P,null,{default:t(()=>[r(C,{loading:e.loadingIndex,onClick:e.loadIndex},{icon:t(()=>[r(e.ReloadOutlined)]),default:t(()=>[_(" "+c(e.t("search.refreshIndex")),1)]),_:1},8,["loading"])]),_:1})]),f(" noDb banner "),e.errorState.noDb?(d(),k(B,{key:0,type:"info","show-icon":"",message:e.t("search.noDb.message"),description:e.t("search.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):f("v-if",!0),f(" Search bar "),r(N,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"14px 16px"}},{default:t(()=>[r(J,{layout:"vertical",model:e.form,onSubmit:ke(e.runSearch,["prevent"])},{default:t(()=>[r(w,{gutter:12},{default:t(()=>[r(h,{span:14},{default:t(()=>[r(z,{value:e.form.query,"onUpdate:value":o[0]||(o[0]=a=>e.form.query=a),size:"large",placeholder:e.t("search.form.queryPlaceholder"),"allow-clear":"",onPressEnter:e.runSearch},{prefix:t(()=>[r(e.SearchOutlined)]),_:1},8,["value","placeholder"])]),_:1}),r(h,{span:4},{default:t(()=>[r(T,{value:e.form.mode,"onUpdate:value":o[1]||(o[1]=a=>e.form.mode=a),size:"large","button-style":"solid"},{default:t(()=>[(d(!0),g(O,null,L(e.SEARCH_MODES,a=>(d(),k(A,{key:a,value:a},{default:t(()=>[_(c(e.modeLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),r(h,{span:3},{default:t(()=>[r(Q,{value:e.form.topK,"onUpdate:value":o[2]||(o[2]=a=>e.form.topK=a),min:1,max:50,placeholder:e.t("search.form.topKPlaceholder"),size:"large",style:{width:"100%"}},null,8,["value","placeholder"])]),_:1}),r(h,{span:3},{default:t(()=>[r(C,{type:"primary",size:"large",loading:e.searching,block:"",onClick:e.runSearch},{icon:t(()=>[r(e.ThunderboltOutlined)]),default:t(()=>[_(" "+c(e.t("search.form.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model"]),f(" Recent queries chips "),e.recentQueries.length?(d(),g("div",qe,[m("span",Je,c(e.t("search.recent.label")),1),(d(!0),g(O,null,L(e.recentQueries,a=>(d(),k(S,{key:a,color:"blue",class:"recent-chip",onClick:p=>e.rerunQuery(a)},{default:t(()=>[_(c(a),1)]),_:2},1032,["onClick"]))),128)),r(C,{size:"small",type:"link",danger:"",onClick:e.clearRecent},{default:t(()=>[_(c(e.t("search.recent.clear")),1)]),_:1})])):f("v-if",!0)]),_:1}),f(" Stat cards "),r(w,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.indexedNotes"),value:e.indexSummary.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[r(e.BookOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.categories"),value:e.indexSummary.categories.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[r(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.tags"),value:e.indexSummary.tags.length,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[r(e.TagsOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.results"),value:e.results.length,"value-style":{color:e.results.length>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[r(e.FileTextOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),r(h,{xs:24,sm:8,lg:4},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.topScore"),value:e.topScore,precision:3,"value-style":{color:e.scoreColor(e.topScore),fontSize:"20px"}},{prefix:t(()=>[r(e.TrophyOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),f(" Tabs "),r($,{activeKey:e.activeTab,"onUpdate:activeKey":o[5]||(o[5]=a=>e.activeTab=a),class:"search-tabs"},{default:t(()=>[f(" ── Results tab ───────────────────────────────────────── "),r(K,{key:"results",tab:e.t("search.tabs.results")},{default:t(()=>[e.searched?e.results.length?(d(),k(Z,{key:2,"data-source":e.results,"item-layout":"vertical",size:"large"},{renderItem:t(({item:a})=>[r(W,{class:"result-row"},{actions:t(()=>[r(C,{type:"link",size:"small",onClick:p=>e.viewNote(a.id)},{icon:t(()=>[r(e.EyeOutlined)]),default:t(()=>[_(" "+c(e.t("search.results.viewFull")),1)]),_:1},8,["onClick"])]),extra:t(()=>[m("div",Ke,[r(V,{type:"circle",percent:Math.round(Math.min(1,a.score)*100),"stroke-color":e.scoreColor(a.score),format:()=>a.score.toFixed(3),width:60},null,8,["percent","stroke-color","format"])])]),default:t(()=>[r(Y,null,{title:t(()=>[m("span",He,c(a.title||e.t("search.results.noTitle")),1),r(S,{color:e.categoryColor(a.category),style:{"margin-left":"8px"}},{default:t(()=>[_(c(a.category),1)]),_:2},1032,["color"])]),description:t(()=>[m("span",Ue,c(a.id.slice(0,16)),1),m("span",Ge,c(e.formatSearchTime(a.createdAt)),1)]),_:2},1024),a.snippet?(d(),g("div",Ve,[m("span",{innerHTML:e.highlightSnippet(a.snippet,e.currentQuery)},null,8,Ye)])):f("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(M,{key:1,description:e.t("search.results.noMatch",{query:e.currentQuery}),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"])):(d(),k(M,{key:0,description:e.t("search.results.promptEmpty"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),f(" ── Index browser tab ────────────────────────────────── "),r(K,{key:"index",tab:e.t("search.tabs.index")},{default:t(()=>[m("div",We,[r(T,{value:e.indexCategoryFilter,"onUpdate:value":o[3]||(o[3]=a=>e.indexCategoryFilter=a),size:"small","button-style":"solid"},{default:t(()=>[r(A,{value:""},{default:t(()=>[_(c(e.t("search.index.allCategories")),1)]),_:1}),(d(!0),g(O,null,L(e.indexSummary.categories.slice(0,6),a=>(d(),k(A,{key:a.name,value:a.name},{default:t(()=>[_(c(a.name)+" ("+c(a.count)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),r(z,{value:e.indexTagFilter,"onUpdate:value":o[4]||(o[4]=a=>e.indexTagFilter=a),placeholder:e.t("search.index.tagFilterPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),f(" Top tags chips "),e.indexSummary.tags.length?(d(),g("div",Ze,[m("span",Xe,c(e.t("search.index.topTagsLabel")),1),(d(!0),g(O,null,L(e.indexSummary.tags.slice(0,12),a=>(d(),k(S,{key:a.name,color:e.indexTagFilter===a.name?"blue":"default",class:"tag-chip",onClick:p=>e.indexTagFilter=e.indexTagFilter===a.name?"":a.name},{default:t(()=>[_(c(a.name)+" ",1),m("span",$e,c(a.count),1)]),_:2},1032,["color","onClick"]))),128))])):f("v-if",!0),r(X,{columns:e.noteColumns,"data-source":e.filteredNotes,pagination:{pageSize:20,showTotal:a=>e.t("search.totals.rows",{count:a})},size:"small",loading:e.loadingIndex,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:a,record:p})=>[a.key==="title"?(d(),g(O,{key:0},[m("span",et,c(p.title||e.t("search.results.noTitle")),1),m("div",tt,c(p.id.slice(0,16)),1)],64)):f("v-if",!0),a.key==="category"?(d(),k(S,{key:1,color:e.categoryColor(p.category)},{default:t(()=>[_(c(p.category),1)]),_:2},1032,["color"])):f("v-if",!0),a.key==="tags"?(d(),g(O,{key:2},[(d(!0),g(O,null,L(p.tags.slice(0,4),D=>(d(),k(S,{key:D,color:"default",style:{"font-size":"11px"}},{default:t(()=>[_(c(D),1)]),_:2},1024))),128)),p.tags.length>4?(d(),g("span",rt,"+"+c(p.tags.length-4),1)):f("v-if",!0)],64)):f("v-if",!0),a.key==="createdAt"?(d(),g("span",at,c(e.formatSearchTime(p.createdAt)),1)):f("v-if",!0),a.key==="action"?(d(),g(O,{key:4},[r(C,{size:"small",type:"link",onClick:D=>e.viewNote(p.id)},{default:t(()=>[_(c(e.t("search.index.rowAction.view")),1)]),_:1},8,["onClick"]),r(C,{size:"small",type:"link",onClick:D=>e.searchSimilar(p)},{default:t(()=>[_(c(e.t("search.index.rowAction.similar")),1)]),_:1},8,["onClick"])],64)):f("v-if",!0)]),emptyText:t(()=>[m("div",ot,[r(e.BookOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+c(e.indexCategoryFilter||e.indexTagFilter?e.t("search.empty.filtered"):e.t("search.empty.noNotes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Note detail modal ─────────────────────────────────── "),r(H,{open:e.showNoteModal,"onUpdate:open":o[6]||(o[6]=a=>e.showNoteModal=a),title:e.t("search.note.title",{title:e.currentNote?.title||""}),width:780,footer:null},{default:t(()=>[e.loadingNote?(d(),g("div",nt,[r(R)])):e.currentNote?(d(),g("div",lt,[r(ee,{column:2,size:"small",bordered:""},{default:t(()=>[r(I,{label:e.t("search.note.id"),span:2},{default:t(()=>[m("span",st,c(e.currentNote.id),1)]),_:1},8,["label"]),r(I,{label:e.t("search.note.category")},{default:t(()=>[r(S,{color:e.categoryColor(e.currentNote.category)},{default:t(()=>[_(c(e.currentNote.category),1)]),_:1},8,["color"])]),_:1},8,["label"]),r(I,{label:e.t("search.note.tags")},{default:t(()=>[(d(!0),g(O,null,L(e.currentNote.tags,a=>(d(),k(S,{key:a,color:"default"},{default:t(()=>[_(c(a),1)]),_:2},1024))),128)),e.currentNote.tags.length?f("v-if",!0):(d(),g("span",it,"—"))]),_:1},8,["label"]),r(I,{label:e.t("search.note.createdAt")},{default:t(()=>[_(c(e.formatSearchTime(e.currentNote.createdAt)),1)]),_:1},8,["label"]),r(I,{label:e.t("search.note.updatedAt")},{default:t(()=>[_(c(e.formatSearchTime(e.currentNote.updatedAt)),1)]),_:1},8,["label"])]),_:1}),m("h4",ct,c(e.t("search.note.content")),1),e.currentNote.content?(d(),g("div",dt,[m("span",{innerHTML:e.highlightContent(e.currentNote.content,e.currentQuery)},null,8,ut)])):(d(),k(M,{key:1,description:e.t("search.note.emptyContent"),image:e.EMPTY_IMG},null,8,["description","image"]))])):f("v-if",!0)]),_:1},8,["open","title"])])}const ht=Se(Pe,[["render",ft],["__scopeId","data-v-d2b94ce3"],["__file","/tmp/cc-web-panel-YJBpJd/repo/packages/web-panel/src/views/Search.vue"]]);export{ht as default};
|
|
1
|
+
import{I as u,J as g,U as m,R as c,c as r,K as t,V as f,S as k,r as v,o as se,a as ie,b as j,P as d,Q as _,a2 as ke,F as O,Z as L}from"./vendor-BvqAck49.js";import{_ as Se,b as ce,u as de,E as ue,d as F}from"./index-CSnTUPQx.js";import{s as ye}from"./community-parser-CO25nZFt.js";import{at as Ce,l as Te,a4 as Ne,a_ as Ae,a9 as Oe,a2 as ze,$ as we,k as Ee,R as Me}from"./icons-DP3uiYxy.js";function ae(n){const o=ye(n);if(!o)return null;try{return JSON.parse(o)}catch{}const s=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!s)return null;try{return JSON.parse(s[0])}catch{return null}}const Ie=Object.freeze(["bm25","vector","hybrid"]);function Fe(n,o=0){return typeof n=="number"&&Number.isFinite(n)?n:o}function Re(n){if(Array.isArray(n))return n.filter(o=>typeof o=="string");if(typeof n!="string")return[];try{const o=JSON.parse(n);if(Array.isArray(o))return o.filter(s=>typeof s=="string")}catch{}return[]}function J(n){if(!n)return{noDb:!1,error:""};const o=ye(n),s=/Database not available/i.test(o);return{noDb:s,error:s?"Database not available":""}}function De(n,o=0){if(!n||typeof n!="object")return null;const s=n.id||"";return s?{key:s,id:s,score:Fe(n.score,0),title:String(n.title||""),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",snippet:String(n.snippet||""),_idx:o}:null}function fe(n){const o=ae(n);return Array.isArray(o)?o.map(De).filter(Boolean):[]}function he(n,o=0){if(!n||typeof n!="object")return null;const s=n.id||"";return s?{key:s,id:s,title:String(n.title||""),content:n.content??"",tags:Re(n.tags),category:String(n.category||"general"),createdAt:n.created_at??n.createdAt??"",updatedAt:n.updated_at??n.updatedAt??"",_idx:o}:null}function ge(n){const o=ae(n);return Array.isArray(o)?o.map(he).filter(Boolean):[]}function me(n){const o=ae(n);return!o||typeof o!="object"||Array.isArray(o)?null:he(o,0)}function _e(n){if(!Array.isArray(n)||n.length===0)return{total:0,categories:[],tags:[]};const o=new Map,s=new Map;for(const e of n){o.set(e.category,(o.get(e.category)||0)+1);for(const x of e.tags)s.set(x,(s.get(x)||0)+1)}return{total:n.length,categories:[...o.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count),tags:[...s.entries()].map(([e,x])=>({name:e,count:x})).sort((e,x)=>x.count-e.count)}}function Le(n){if(n==null||n==="")return"—";const o=String(n),s=o.includes(" ")&&!o.includes("T")?o.replace(" ","T")+"Z":o,e=new Date(s);return isNaN(e.getTime())?o:e.toLocaleString("zh-CN",{hour12:!1})}const G="cc.web-panel.search.recent",re=8,Pe={__name:"Search",setup(n,{expose:o}){o();const{t:s}=ce(),e=de(),x=ue.PRESENTED_IMAGE_SIMPLE,q=v(!1),C=v(!1),P=v(!1),Q=v(!1),z=v([]),h=v([]),A=v({noDb:!1,error:""}),T=ie({query:"",mode:"hybrid",topK:10}),B=v(""),w=v(U()),K=v("results"),S=v(""),N=v(""),E=v(!1),M=v(null),V=j(()=>_e(z.value)),Y=j(()=>h.value.length?Math.max(...h.value.map(l=>l.score)):0),W=j(()=>[{title:s("search.noteColumns.title"),key:"title"},{title:s("search.noteColumns.category"),key:"category",width:"120px"},{title:s("search.noteColumns.tags"),key:"tags",width:"240px"},{title:s("search.noteColumns.createdAt"),key:"createdAt",width:"180px"},{title:s("search.noteColumns.action"),key:"action",width:"180px"}]),Z=j(()=>{let l=z.value;if(S.value&&(l=l.filter(i=>i.category===S.value)),N.value.trim()){const i=N.value.trim().toLowerCase();l=l.filter(y=>y.tags.some(b=>b.toLowerCase().includes(i)))}return l});function H(l){const i=`search.mode.${l}`,y=s(i);return y===i?l:y}function X(l){const i=["blue","green","purple","orange","cyan","magenta","gold","volcano"];let y=0;for(let b=0;b<(l||"").length;b++)y=y*31+l.charCodeAt(b)>>>0;return i[y%i.length]}function $(l){return l>=.7?"#52c41a":l>=.5?"#1677ff":l>=.3?"#faad14":"#ff4d4f"}function R(l){return String(l).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function I(l,i){if(!i||!l)return R(l);const y=i.split(/\s+/).filter(Boolean);let b=R(l);for(const be of y){const xe=new RegExp(`(${be.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");b=b.replace(xe,"<mark>$1</mark>")}return b}function ee(l,i){return i?I(l,i):R(l)}function U(){try{const l=localStorage.getItem(G);if(l){const i=JSON.parse(l);if(Array.isArray(i))return i.filter(y=>typeof y=="string").slice(0,re)}}catch{}return[]}function a(l){const i=l.trim();if(!i)return;const y=[i,...w.value.filter(b=>b!==i)];w.value=y.slice(0,re);try{localStorage.setItem(G,JSON.stringify(w.value))}catch{}}function p(){w.value=[];try{localStorage.removeItem(G)}catch{}}function D(l){T.query=l,te()}async function oe(){q.value=!0,A.value={noDb:!1,error:""};try{const{output:l}=await e.execute("note list -n 500 --json",12e3).catch(()=>({output:""})),i=J(l);if(i.noDb){A.value=i,z.value=[];return}z.value=ge(l)}catch(l){F.error(s("search.messages.loadIndexFailed",{err:l?.message||l}))}finally{q.value=!1}}async function te(){const l=T.query.trim();if(!l){F.warning(s("search.messages.queryRequired"));return}P.value=!0,A.value={noDb:!1,error:""};try{const i=[`search ${ne(l)}`,`--mode ${T.mode}`,`--top-k ${T.topK||10}`,"--json"],{output:y}=await e.execute(i.join(" "),15e3),b=J(y);if(b.noDb){A.value=b,h.value=[],Q.value=!0,B.value=l;return}h.value=fe(y),B.value=l,Q.value=!0,a(l),K.value="results"}catch(i){F.error(s("search.messages.searchFailed",{err:i?.message||i}))}finally{P.value=!1}}function ne(l){return`"${String(l).replace(/"/g,'\\"')}"`}function pe(l){T.query=l.title,T.mode="vector",te()}async function ve(l){E.value=!0,C.value=!0,M.value=null;try{const{output:i}=await e.execute(`note show ${l} --json`,8e3);if(J(i).noDb){F.error(s("search.messages.needInit"));return}M.value=me(i),M.value||F.error(s("search.messages.noteLoadFailed"))}catch(i){F.error(s("search.messages.loadFailed",{err:i?.message||i}))}finally{C.value=!1}}se(oe);const le={t:s,ws:e,EMPTY_IMG:x,RECENT_LS:G,RECENT_MAX:re,loadingIndex:q,loadingNote:C,searching:P,searched:Q,notes:z,results:h,errorState:A,form:T,currentQuery:B,recentQueries:w,activeTab:K,indexCategoryFilter:S,indexTagFilter:N,showNoteModal:E,currentNote:M,indexSummary:V,topScore:Y,noteColumns:W,filteredNotes:Z,modeLabel:H,categoryColor:X,scoreColor:$,escapeHtml:R,highlightSnippet:I,highlightContent:ee,loadRecent:U,pushRecent:a,clearRecent:p,rerunQuery:D,loadIndex:oe,runSearch:te,shellQuote:ne,searchSimilar:pe,viewNote:ve,ref:v,computed:j,onMounted:se,reactive:ie,get useI18n(){return ce},get ReloadOutlined(){return Me},get SearchOutlined(){return Ee},get ThunderboltOutlined(){return we},get BookOutlined(){return ze},get AppstoreOutlined(){return Oe},get TagsOutlined(){return Ae},get FileTextOutlined(){return Ne},get TrophyOutlined(){return Te},get EyeOutlined(){return Ce},get message(){return F},get Empty(){return ue},get useWsStore(){return de},get parseSearchResults(){return fe},get parseNotes(){return ge},get parseNote(){return me},get buildIndexSummary(){return _e},get detectSearchError(){return J},get formatSearchTime(){return Le},get SEARCH_MODES(){return Ie}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Be={class:"page-title"},je={class:"page-sub"},qe={key:0,class:"recent-row"},Ke={class:"recent-label"},He={class:"score-block"},Ue={class:"result-title"},Je={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Ge={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"11px"}},Ve={key:0,class:"result-snippet"},Ye=["innerHTML"],We={class:"filter-bar"},Ze={key:0,class:"tag-row"},Xe={class:"tag-row-label"},$e={class:"tag-count"},et={style:{color:"var(--text-primary)","font-weight":"500"}},tt={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},rt={key:0,style:{color:"var(--text-muted)","font-size":"11px"}},at={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},ot={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},nt={key:0,style:{padding:"40px","text-align":"center"}},lt={key:1,style:{"padding-top":"8px"}},st={style:{"font-family":"monospace","font-size":"12px"}},it={key:0,style:{color:"var(--text-muted)"}},ct={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},dt={key:0,class:"note-content"},ut=["innerHTML"];function ft(n,o,s,e,x,q){const C=u("a-button"),P=u("a-space"),Q=u("a-alert"),z=u("a-input"),h=u("a-col"),A=u("a-radio-button"),T=u("a-radio-group"),B=u("a-input-number"),w=u("a-row"),K=u("a-form"),S=u("a-tag"),N=u("a-card"),E=u("a-statistic"),M=u("a-empty"),V=u("a-progress"),Y=u("a-list-item-meta"),W=u("a-list-item"),Z=u("a-list"),H=u("a-tab-pane"),X=u("a-table"),$=u("a-tabs"),R=u("a-spin"),I=u("a-descriptions-item"),ee=u("a-descriptions"),U=u("a-modal");return d(),g("div",null,[m("div",Qe,[m("div",null,[m("h2",Be,c(e.t("search.title")),1),m("p",je,c(e.t("search.subtitle")),1)]),r(P,null,{default:t(()=>[r(C,{loading:e.loadingIndex,onClick:e.loadIndex},{icon:t(()=>[r(e.ReloadOutlined)]),default:t(()=>[_(" "+c(e.t("search.refreshIndex")),1)]),_:1},8,["loading"])]),_:1})]),f(" noDb banner "),e.errorState.noDb?(d(),k(Q,{key:0,type:"info","show-icon":"",message:e.t("search.noDb.message"),description:e.t("search.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):f("v-if",!0),f(" Search bar "),r(N,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"14px 16px"}},{default:t(()=>[r(K,{layout:"vertical",model:e.form,onSubmit:ke(e.runSearch,["prevent"])},{default:t(()=>[r(w,{gutter:12},{default:t(()=>[r(h,{span:14},{default:t(()=>[r(z,{value:e.form.query,"onUpdate:value":o[0]||(o[0]=a=>e.form.query=a),size:"large",placeholder:e.t("search.form.queryPlaceholder"),"allow-clear":"",onPressEnter:e.runSearch},{prefix:t(()=>[r(e.SearchOutlined)]),_:1},8,["value","placeholder"])]),_:1}),r(h,{span:4},{default:t(()=>[r(T,{value:e.form.mode,"onUpdate:value":o[1]||(o[1]=a=>e.form.mode=a),size:"large","button-style":"solid"},{default:t(()=>[(d(!0),g(O,null,L(e.SEARCH_MODES,a=>(d(),k(A,{key:a,value:a},{default:t(()=>[_(c(e.modeLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),r(h,{span:3},{default:t(()=>[r(B,{value:e.form.topK,"onUpdate:value":o[2]||(o[2]=a=>e.form.topK=a),min:1,max:50,placeholder:e.t("search.form.topKPlaceholder"),size:"large",style:{width:"100%"}},null,8,["value","placeholder"])]),_:1}),r(h,{span:3},{default:t(()=>[r(C,{type:"primary",size:"large",loading:e.searching,block:"",onClick:e.runSearch},{icon:t(()=>[r(e.ThunderboltOutlined)]),default:t(()=>[_(" "+c(e.t("search.form.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model"]),f(" Recent queries chips "),e.recentQueries.length?(d(),g("div",qe,[m("span",Ke,c(e.t("search.recent.label")),1),(d(!0),g(O,null,L(e.recentQueries,a=>(d(),k(S,{key:a,color:"blue",class:"recent-chip",onClick:p=>e.rerunQuery(a)},{default:t(()=>[_(c(a),1)]),_:2},1032,["onClick"]))),128)),r(C,{size:"small",type:"link",danger:"",onClick:e.clearRecent},{default:t(()=>[_(c(e.t("search.recent.clear")),1)]),_:1})])):f("v-if",!0)]),_:1}),f(" Stat cards "),r(w,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.indexedNotes"),value:e.indexSummary.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[r(e.BookOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.categories"),value:e.indexSummary.categories.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[r(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.tags"),value:e.indexSummary.tags.length,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[r(e.TagsOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),r(h,{xs:12,sm:8,lg:5},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.results"),value:e.results.length,"value-style":{color:e.results.length>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[r(e.FileTextOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),r(h,{xs:24,sm:8,lg:4},{default:t(()=>[r(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[r(E,{title:e.t("search.stats.topScore"),value:e.topScore,precision:3,"value-style":{color:e.scoreColor(e.topScore),fontSize:"20px"}},{prefix:t(()=>[r(e.TrophyOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),f(" Tabs "),r($,{activeKey:e.activeTab,"onUpdate:activeKey":o[5]||(o[5]=a=>e.activeTab=a),class:"search-tabs"},{default:t(()=>[f(" ── Results tab ───────────────────────────────────────── "),r(H,{key:"results",tab:e.t("search.tabs.results")},{default:t(()=>[e.searched?e.results.length?(d(),k(Z,{key:2,"data-source":e.results,"item-layout":"vertical",size:"large"},{renderItem:t(({item:a})=>[r(W,{class:"result-row"},{actions:t(()=>[r(C,{type:"link",size:"small",onClick:p=>e.viewNote(a.id)},{icon:t(()=>[r(e.EyeOutlined)]),default:t(()=>[_(" "+c(e.t("search.results.viewFull")),1)]),_:1},8,["onClick"])]),extra:t(()=>[m("div",He,[r(V,{type:"circle",percent:Math.round(Math.min(1,a.score)*100),"stroke-color":e.scoreColor(a.score),format:()=>a.score.toFixed(3),width:60},null,8,["percent","stroke-color","format"])])]),default:t(()=>[r(Y,null,{title:t(()=>[m("span",Ue,c(a.title||e.t("search.results.noTitle")),1),r(S,{color:e.categoryColor(a.category),style:{"margin-left":"8px"}},{default:t(()=>[_(c(a.category),1)]),_:2},1032,["color"])]),description:t(()=>[m("span",Je,c(a.id.slice(0,16)),1),m("span",Ge,c(e.formatSearchTime(a.createdAt)),1)]),_:2},1024),a.snippet?(d(),g("div",Ve,[m("span",{innerHTML:e.highlightSnippet(a.snippet,e.currentQuery)},null,8,Ye)])):f("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(M,{key:1,description:e.t("search.results.noMatch",{query:e.currentQuery}),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"])):(d(),k(M,{key:0,description:e.t("search.results.promptEmpty"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),f(" ── Index browser tab ────────────────────────────────── "),r(H,{key:"index",tab:e.t("search.tabs.index")},{default:t(()=>[m("div",We,[r(T,{value:e.indexCategoryFilter,"onUpdate:value":o[3]||(o[3]=a=>e.indexCategoryFilter=a),size:"small","button-style":"solid"},{default:t(()=>[r(A,{value:""},{default:t(()=>[_(c(e.t("search.index.allCategories")),1)]),_:1}),(d(!0),g(O,null,L(e.indexSummary.categories.slice(0,6),a=>(d(),k(A,{key:a.name,value:a.name},{default:t(()=>[_(c(a.name)+" ("+c(a.count)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),r(z,{value:e.indexTagFilter,"onUpdate:value":o[4]||(o[4]=a=>e.indexTagFilter=a),placeholder:e.t("search.index.tagFilterPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),f(" Top tags chips "),e.indexSummary.tags.length?(d(),g("div",Ze,[m("span",Xe,c(e.t("search.index.topTagsLabel")),1),(d(!0),g(O,null,L(e.indexSummary.tags.slice(0,12),a=>(d(),k(S,{key:a.name,color:e.indexTagFilter===a.name?"blue":"default",class:"tag-chip",onClick:p=>e.indexTagFilter=e.indexTagFilter===a.name?"":a.name},{default:t(()=>[_(c(a.name)+" ",1),m("span",$e,c(a.count),1)]),_:2},1032,["color","onClick"]))),128))])):f("v-if",!0),r(X,{columns:e.noteColumns,"data-source":e.filteredNotes,pagination:{pageSize:20,showTotal:a=>e.t("search.totals.rows",{count:a})},size:"small",loading:e.loadingIndex,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:a,record:p})=>[a.key==="title"?(d(),g(O,{key:0},[m("span",et,c(p.title||e.t("search.results.noTitle")),1),m("div",tt,c(p.id.slice(0,16)),1)],64)):f("v-if",!0),a.key==="category"?(d(),k(S,{key:1,color:e.categoryColor(p.category)},{default:t(()=>[_(c(p.category),1)]),_:2},1032,["color"])):f("v-if",!0),a.key==="tags"?(d(),g(O,{key:2},[(d(!0),g(O,null,L(p.tags.slice(0,4),D=>(d(),k(S,{key:D,color:"default",style:{"font-size":"11px"}},{default:t(()=>[_(c(D),1)]),_:2},1024))),128)),p.tags.length>4?(d(),g("span",rt,"+"+c(p.tags.length-4),1)):f("v-if",!0)],64)):f("v-if",!0),a.key==="createdAt"?(d(),g("span",at,c(e.formatSearchTime(p.createdAt)),1)):f("v-if",!0),a.key==="action"?(d(),g(O,{key:4},[r(C,{size:"small",type:"link",onClick:D=>e.viewNote(p.id)},{default:t(()=>[_(c(e.t("search.index.rowAction.view")),1)]),_:1},8,["onClick"]),r(C,{size:"small",type:"link",onClick:D=>e.searchSimilar(p)},{default:t(()=>[_(c(e.t("search.index.rowAction.similar")),1)]),_:1},8,["onClick"])],64)):f("v-if",!0)]),emptyText:t(()=>[m("div",ot,[r(e.BookOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+c(e.indexCategoryFilter||e.indexTagFilter?e.t("search.empty.filtered"):e.t("search.empty.noNotes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Note detail modal ─────────────────────────────────── "),r(U,{open:e.showNoteModal,"onUpdate:open":o[6]||(o[6]=a=>e.showNoteModal=a),title:e.t("search.note.title",{title:e.currentNote?.title||""}),width:780,footer:null},{default:t(()=>[e.loadingNote?(d(),g("div",nt,[r(R)])):e.currentNote?(d(),g("div",lt,[r(ee,{column:2,size:"small",bordered:""},{default:t(()=>[r(I,{label:e.t("search.note.id"),span:2},{default:t(()=>[m("span",st,c(e.currentNote.id),1)]),_:1},8,["label"]),r(I,{label:e.t("search.note.category")},{default:t(()=>[r(S,{color:e.categoryColor(e.currentNote.category)},{default:t(()=>[_(c(e.currentNote.category),1)]),_:1},8,["color"])]),_:1},8,["label"]),r(I,{label:e.t("search.note.tags")},{default:t(()=>[(d(!0),g(O,null,L(e.currentNote.tags,a=>(d(),k(S,{key:a,color:"default"},{default:t(()=>[_(c(a),1)]),_:2},1024))),128)),e.currentNote.tags.length?f("v-if",!0):(d(),g("span",it,"—"))]),_:1},8,["label"]),r(I,{label:e.t("search.note.createdAt")},{default:t(()=>[_(c(e.formatSearchTime(e.currentNote.createdAt)),1)]),_:1},8,["label"]),r(I,{label:e.t("search.note.updatedAt")},{default:t(()=>[_(c(e.formatSearchTime(e.currentNote.updatedAt)),1)]),_:1},8,["label"])]),_:1}),m("h4",ct,c(e.t("search.note.content")),1),e.currentNote.content?(d(),g("div",dt,[m("span",{innerHTML:e.highlightContent(e.currentNote.content,e.currentQuery)},null,8,ut)])):(d(),k(M,{key:1,description:e.t("search.note.emptyContent"),image:e.EMPTY_IMG},null,8,["description","image"]))])):f("v-if",!0)]),_:1},8,["open","title"])])}const ht=Se(Pe,[["render",ft],["__scopeId","data-v-d2b94ce3"],["__file","/tmp/cc-web-panel-wQGCAD/repo/packages/web-panel/src/views/Search.vue"]]);export{ht as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{I as y,J as g,U as R,R as l,c as t,K as a,o as ae,b as
|
|
2
|
-
`);for(const
|
|
3
|
-
`);for(const
|
|
4
|
-
`),
|
|
1
|
+
import{I as y,J as g,U as R,R as l,c as t,K as a,o as ae,b as Y,r as c,P as d,Q as m,V as p,S as P,F as de,Z as ue}from"./vendor-BvqAck49.js";import{_ as ye,b as se,u as ie,d as b}from"./index-CSnTUPQx.js";import{K as pe,R as fe,as as ge,A as me,Y as ve,Z as _e}from"./icons-DP3uiYxy.js";const be={__name:"Security",setup(re,{expose:f}){f();const{t:r}=se(),e=ie(),U=c("did"),V=c(!1);async function O(){V.value=!0;try{U.value==="did"?await k():U.value==="audit"&&await J()}finally{V.value=!1}}function q(s){s==="did"&&L.value.length===0&&k(),s==="audit"&&G.value.length===0&&J()}const T=c(!1),h=c(!1),I=c(!1),L=c([]),z=c(!1),x=c(""),w=c(""),Q=Y(()=>[{title:r("security.didColumns.did"),key:"did",dataIndex:"did",ellipsis:!0},{title:r("security.didColumns.method"),key:"method",dataIndex:"method",width:"100px"},{title:r("security.didColumns.created"),key:"created",dataIndex:"created",width:"180px"},{title:r("security.didColumns.status"),key:"status",width:"80px"}]);async function k(){T.value=!0;try{const{output:s}=await e.execute("did list",15e3);L.value=D(s)}catch(s){b.error(r("security.messages.loadDidsFailed",{err:s.message}))}finally{T.value=!1}}function D(s){const n=[],B=s.split(`
|
|
2
|
+
`);for(const S of B){const o=S.trim();if(!o||o.startsWith("─")||o.startsWith("DID")||o.match(/^\d+ identit/i))continue;const _=o.match(/(did:\w+:\w+)/);if(_){const v=_[1],C=v.split(":")[1]||"key",A=/default|默认|\*/.test(o),K=o.match(/(\d{4}-\d{2}-\d{2}[\sT]?\d{2}:\d{2}(?::\d{2})?)/);n.push({key:v,did:v,method:C,created:K?K[1]:"-",isDefault:A})}}return n}async function M(){h.value=!0;try{const{output:s}=await e.execute("did create",2e4);s.includes("error")||s.includes("失败")?b.error(r("security.messages.didCreateFailed",{err:s.slice(0,120)})):(b.success(r("security.messages.didCreateOk")),await k())}catch(s){b.error(r("security.messages.didCreateFailed",{err:s.message}))}finally{h.value=!1}}async function j(){if(!x.value.trim()){b.warning(r("security.messages.messageRequired"));return}I.value=!0,w.value="";try{const{output:s}=await e.execute(`did sign "${x.value.replace(/"/g,'\\"')}"`,15e3);w.value=s,!s.includes("error")&&!s.includes("失败")&&b.success(r("security.messages.signOk"))}catch(s){w.value=r("security.messages.signFailed",{err:s.message})}finally{I.value=!1}}const W=c(""),F=c(""),i=c(!1),u=c(!1),N=c(null),E=c(null);async function le(){if(W.value.trim()){i.value=!0,N.value=null;try{const{output:s,exitCode:n}=await e.execute(`encrypt file "${W.value.trim()}"`,3e4);N.value={success:n===0&&!s.includes("error")&&!s.includes("失败"),output:s||r("security.encrypt.encryptDefault")},N.value.success&&b.success(r("security.messages.encryptOk"))}catch(s){N.value={success:!1,output:r("security.messages.encryptFailed",{err:s.message})}}finally{i.value=!1}}}async function ne(){if(F.value.trim()){u.value=!0,E.value=null;try{const{output:s,exitCode:n}=await e.execute(`decrypt file "${F.value.trim()}"`,3e4);E.value={success:n===0&&!s.includes("error")&&!s.includes("失败"),output:s||r("security.encrypt.decryptDefault")},E.value.success&&b.success(r("security.messages.decryptOk"))}catch(s){E.value={success:!1,output:r("security.messages.decryptFailed",{err:s.message})}}finally{u.value=!1}}}const Z=c(!1),G=c([]),H=c([]),oe=Y(()=>[{title:r("security.auditColumns.time"),key:"time",dataIndex:"time",width:"180px"},{title:r("security.auditColumns.event"),key:"event",dataIndex:"event",width:"200px"},{title:r("security.auditColumns.user"),key:"user",dataIndex:"user",width:"120px"},{title:r("security.auditColumns.level"),key:"level",dataIndex:"level",width:"80px"},{title:r("security.auditColumns.detail"),key:"detail",dataIndex:"detail",ellipsis:!0}]);function ce(s){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(s||"").toLowerCase()]||"default"}async function J(){Z.value=!0;try{const[s,n]=await Promise.all([e.execute("audit log",15e3),e.execute("audit stats",15e3)]);G.value=X(s.output),H.value=$(n.output)}catch(s){b.error(r("security.messages.loadAuditFailed",{err:s.message}))}finally{Z.value=!1}}function X(s){const n=[],B=s.split(`
|
|
3
|
+
`);for(const S of B){const o=S.trim();if(!o||o.startsWith("─")||o.startsWith("Audit")||o.startsWith("Recent"))continue;const _=o.split(/\s*[|│]\s*/);if(_.length>=3){n.push({key:n.length,time:_[0]||"-",event:_[1]||"-",user:_[2]||"-",level:_[3]||"info",detail:_.slice(4).join(" ")||""});continue}const v=o.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(v){const C=v[2],A=C.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);n.push({key:n.length,time:v[1],event:C.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:A?A[1].toLowerCase():"info",detail:""})}else o.length>3&&!o.match(/^\d+ event/i)&&n.push({key:n.length,time:"-",event:o.slice(0,80),user:"-",level:"info",detail:""})}return n}function $(s){const n=[],B=s.split(`
|
|
4
|
+
`),S=["#1677ff","#52c41a","#faad14","#ff4d4f"];let o=0;for(const _ of B){const v=_.trim();if(!v||v.startsWith("─")||v.startsWith("Audit"))continue;const C=v.match(/^(.+?)\s*[:=:]\s*(.+)$/);if(C){const A=C[1].trim(),K=C[2].trim(),te=K.match(/^(\d+)/);n.push({label:A,value:te?parseInt(te[1],10):K,color:S[o%S.length]}),o++}}return n.length===0&&n.push({label:r("security.audit.totalEvents"),value:G.value.length,color:"#1677ff"},{label:r("security.audit.statusLabel"),value:r("security.audit.ready"),color:"#52c41a"}),n}ae(()=>{k()});const ee={t:r,ws:e,activeTab:U,refreshing:V,refreshCurrentTab:O,onTabChange:q,didLoading:T,creating:h,signing:I,didList:L,showSignModal:z,signText:x,signResult:w,didColumns:Q,loadDIDList:k,parseDIDList:D,createDID:M,signMessage:j,encryptPath:W,decryptPath:F,encrypting:i,decrypting:u,encryptResult:N,decryptResult:E,doEncrypt:le,doDecrypt:ne,auditLoading:Z,auditEvents:G,auditStats:H,auditColumns:oe,levelColor:ce,loadAudit:J,parseAuditLog:X,parseAuditStats:$,ref:c,computed:Y,onMounted:ae,get useI18n(){return se},get SafetyCertificateOutlined(){return _e},get LockOutlined(){return ve},get AuditOutlined(){return me},get PlusOutlined(){return ge},get ReloadOutlined(){return fe},get KeyOutlined(){return pe},get message(){return b},get useWsStore(){return ie}};return Object.defineProperty(ee,"__isScriptSetup",{enumerable:!1,value:!0}),ee}},he={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},xe={class:"page-title"},ke={class:"page-sub"},we={key:0,style:{"text-align":"center",padding:"60px"}},Ce={key:0,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Re={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Oe={key:0,style:{"margin-top":"12px"}},Te={style:{color:"var(--text-secondary)","margin-bottom":"6px"}},Ie={style:{"white-space":"pre-wrap","word-break":"break-all",color:"#52c41a","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)"}},Le={key:0,style:{"margin-top":"8px"}},De={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px","margin-top":"8px",background:"var(--bg-base)",padding:"10px","border-radius":"6px",border:"1px solid var(--border-color)"}},Se={key:0,style:{"margin-top":"8px"}},Ae={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px","margin-top":"8px",background:"var(--bg-base)",padding:"10px","border-radius":"6px",border:"1px solid var(--border-color)"}},Pe={key:0,style:{"text-align":"center",padding:"60px"}},ze={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Me={key:1,style:{color:"#e0e0e0"}},We={key:2,style:{color:"var(--text-secondary)"}},Fe={key:4,style:{color:"var(--text-muted)","font-size":"12px"}};function Ne(re,f,r,e,U,V){const O=y("a-button"),q=y("a-space"),T=y("a-spin"),h=y("a-tag"),I=y("a-empty"),L=y("a-table"),z=y("a-input"),x=y("a-form-item"),w=y("a-form"),Q=y("a-modal"),k=y("a-tab-pane"),D=y("a-card"),M=y("a-col"),j=y("a-row"),W=y("a-statistic"),F=y("a-tabs");return d(),g("div",null,[R("div",he,[R("div",null,[R("h2",xe,l(e.t("security.title")),1),R("p",ke,l(e.t("security.subtitle")),1)]),t(O,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshCurrentTab},{icon:a(()=>[t(e.ReloadOutlined)]),default:a(()=>[m(" "+l(e.t("security.refresh")),1)]),_:1},8,["loading"])]),t(F,{activeKey:e.activeTab,"onUpdate:activeKey":f[5]||(f[5]=i=>e.activeTab=i),onChange:e.onTabChange},{default:a(()=>[p(" Tab 1: DID Identity "),t(k,{key:"did"},{tab:a(()=>[t(e.SafetyCertificateOutlined),m(" "+l(e.t("security.tabs.did")),1)]),default:a(()=>[t(q,{style:{"margin-bottom":"16px"}},{default:a(()=>[t(O,{type:"primary",loading:e.creating,onClick:e.createDID},{icon:a(()=>[t(e.PlusOutlined)]),default:a(()=>[m(" "+l(e.t("security.did.createButton")),1)]),_:1},8,["loading"]),t(O,{onClick:f[0]||(f[0]=i=>e.showSignModal=!0)},{icon:a(()=>[t(e.KeyOutlined)]),default:a(()=>[m(" "+l(e.t("security.did.signButton")),1)]),_:1})]),_:1}),e.didLoading?(d(),g("div",we,[t(T,{size:"large"})])):(d(),P(L,{key:1,columns:e.didColumns,"data-source":e.didList,pagination:{pageSize:20,showTotal:i=>e.t("security.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"sec-row"},{bodyCell:a(({column:i,record:u})=>[i.key==="did"?(d(),g("span",Ce,l(u.did),1)):p("v-if",!0),i.key==="method"?(d(),P(h,{key:1,color:"blue"},{default:a(()=>[m(l(u.method),1)]),_:2},1024)):p("v-if",!0),i.key==="created"?(d(),g("span",Re,l(u.created),1)):p("v-if",!0),i.key==="status"?(d(),P(h,{key:3,color:u.isDefault?"green":"default"},{default:a(()=>[m(l(u.isDefault?e.t("security.did.default"):e.t("security.did.available")),1)]),_:2},1032,["color"])):p("v-if",!0)]),emptyText:a(()=>[t(I,{description:e.t("security.did.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),t(Q,{open:e.showSignModal,"onUpdate:open":f[2]||(f[2]=i=>e.showSignModal=i),title:e.t("security.did.signTitle"),"confirm-loading":e.signing,onOk:e.signMessage,"ok-text":e.t("security.did.signOk"),"cancel-text":e.t("common.cancel")},{default:a(()=>[t(w,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[t(x,{label:e.t("security.did.messageLabel"),required:""},{default:a(()=>[t(z,{value:e.signText,"onUpdate:value":f[1]||(f[1]=i=>e.signText=i),placeholder:e.t("security.did.messagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),e.signResult?(d(),g("div",Oe,[R("p",Te,l(e.t("security.did.signResultLabel")),1),R("pre",Ie,l(e.signResult),1)])):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),p(" Tab 2: File Encryption "),t(k,{key:"encrypt"},{tab:a(()=>[t(e.LockOutlined),m(" "+l(e.t("security.tabs.encrypt")),1)]),default:a(()=>[t(j,{gutter:[24,24]},{default:a(()=>[t(M,{xs:24,md:12},{default:a(()=>[t(D,{title:e.t("security.encrypt.encryptCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(w,{"label-col":{span:6},"wrapper-col":{span:18}},{default:a(()=>[t(x,{label:e.t("security.encrypt.pathLabel")},{default:a(()=>[t(z,{value:e.encryptPath,"onUpdate:value":f[3]||(f[3]=i=>e.encryptPath=i),placeholder:e.t("security.encrypt.encryptPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(x,{"wrapper-col":{offset:6,span:18}},{default:a(()=>[t(O,{type:"primary",loading:e.encrypting,disabled:!e.encryptPath.trim(),onClick:e.doEncrypt},{icon:a(()=>[t(e.LockOutlined)]),default:a(()=>[m(" "+l(e.t("security.encrypt.encryptButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),e.encryptResult?(d(),g("div",Le,[t(h,{color:e.encryptResult.success?"green":"red"},{default:a(()=>[m(l(e.encryptResult.success?e.t("security.encrypt.successTag"):e.t("security.encrypt.failureTag")),1)]),_:1},8,["color"]),R("pre",De,l(e.encryptResult.output),1)])):p("v-if",!0)]),_:1},8,["title"])]),_:1}),t(M,{xs:24,md:12},{default:a(()=>[t(D,{title:e.t("security.encrypt.decryptCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(w,{"label-col":{span:6},"wrapper-col":{span:18}},{default:a(()=>[t(x,{label:e.t("security.encrypt.pathLabel")},{default:a(()=>[t(z,{value:e.decryptPath,"onUpdate:value":f[4]||(f[4]=i=>e.decryptPath=i),placeholder:e.t("security.encrypt.decryptPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(x,{"wrapper-col":{offset:6,span:18}},{default:a(()=>[t(O,{type:"primary",loading:e.decrypting,disabled:!e.decryptPath.trim(),onClick:e.doDecrypt},{icon:a(()=>[t(e.LockOutlined)]),default:a(()=>[m(" "+l(e.t("security.encrypt.decryptButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),e.decryptResult?(d(),g("div",Se,[t(h,{color:e.decryptResult.success?"green":"red"},{default:a(()=>[m(l(e.decryptResult.success?e.t("security.encrypt.successTag"):e.t("security.encrypt.failureTag")),1)]),_:1},8,["color"]),R("pre",Ae,l(e.decryptResult.output),1)])):p("v-if",!0)]),_:1},8,["title"])]),_:1})]),_:1})]),_:1}),p(" Tab 3: Audit Logs "),t(k,{key:"audit"},{tab:a(()=>[t(e.AuditOutlined),m(" "+l(e.t("security.tabs.audit")),1)]),default:a(()=>[t(j,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[(d(!0),g(de,null,ue(e.auditStats,i=>(d(),P(M,{xs:12,sm:6,key:i.label},{default:a(()=>[t(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[t(W,{title:i.label,value:i.value,"value-style":{color:i.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),e.auditLoading?(d(),g("div",Pe,[t(T,{size:"large"})])):(d(),P(L,{key:1,columns:e.auditColumns,"data-source":e.auditEvents,pagination:{pageSize:20,showTotal:i=>e.t("security.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"sec-row"},{bodyCell:a(({column:i,record:u})=>[i.key==="time"?(d(),g("span",ze,l(u.time),1)):p("v-if",!0),i.key==="event"?(d(),g("span",Me,l(u.event),1)):p("v-if",!0),i.key==="user"?(d(),g("span",We,l(u.user),1)):p("v-if",!0),i.key==="level"?(d(),P(h,{key:3,color:e.levelColor(u.level)},{default:a(()=>[m(l(u.level),1)]),_:2},1032,["color"])):p("v-if",!0),i.key==="detail"?(d(),g("span",Fe,l(u.detail),1)):p("v-if",!0)]),emptyText:a(()=>[t(I,{description:e.t("security.audit.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}const Ue=ye(be,[["render",Ne],["__scopeId","data-v-d5de013d"],["__file","/tmp/cc-web-panel-wQGCAD/repo/packages/web-panel/src/views/Security.vue"]]);export{Ue as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{I as i,J as u,U as g,c as t,K as o,V as n,o as T,b as V,r as l,P as s,Q as h,R as
|
|
2
|
-
`).filter(m=>m.match(/[○●]\s+\w+:\s+\d+/));M.value=j.map(m=>{const w=m.match(/([○●])\s+(\w+):\s+(\d+)/);return w?{key:w[2],name:w[2],port:parseInt(w[3]),active:w[1]==="●"}:null}).filter(Boolean)}async function
|
|
1
|
+
import{I as i,J as u,U as g,c as t,K as o,V as n,o as T,b as V,r as l,P as s,Q as h,R as v,S as W}from"./vendor-BvqAck49.js";import{_ as E,u as F}from"./index-CSnTUPQx.js";import{a4 as G,ar as H,f as J,af as K,a8 as U,h as q,R as X}from"./icons-DP3uiYxy.js";const Y={__name:"Services",setup(z,{expose:r}){r();const b=F(),e=window.__CC_CONFIG__||{},O=l(!1),C=l(!1),d=l(""),f=l(""),c=l(!1),_=l(""),y=l(""),D=l(""),L=l(!1),x=l(""),k=l(""),M=l([]),p=V(()=>b.status==="connected"),S=[{title:"服务",dataIndex:"name",key:"name"},{title:"端口",dataIndex:"port",key:"port"},{title:"状态",key:"status"}];async function B(){O.value=!0;try{const{output:a}=await b.execute("status",15e3);f.value=a,A(a)}catch(a){console.error("status failed:",a)}finally{O.value=!1}}function A(a){c.value=a.includes("Desktop app running")||a.includes("Running");const N=a.match(/Edition:\s+(\S+)/i);N&&(_.value=N[1]);const R=a.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(R)y.value=R[1],D.value=R[2];else{const m=a.match(/LLM:\s+(\S+)/i);m&&(y.value=m[1])}L.value=a.includes("Setup completed");const P=a.match(/Setup completed \(([^)]+)\)/i);if(P)try{x.value=new Date(P[1]).toLocaleDateString("zh-CN")}catch{x.value=""}a.includes("docker-compose.yml not found")?k.value="未找到 docker-compose.yml":a.includes("Docker Services")&&(k.value="已检测到 Docker 配置");const j=a.split(`
|
|
2
|
+
`).filter(m=>m.match(/[○●]\s+\w+:\s+\d+/));M.value=j.map(m=>{const w=m.match(/([○●])\s+(\w+):\s+(\d+)/);return w?{key:w[2],name:w[2],port:parseInt(w[3]),active:w[1]==="●"}:null}).filter(Boolean)}async function Q(){C.value=!0,d.value="";try{const{output:a}=await b.execute("doctor",3e4);d.value=a}catch(a){d.value=`诊断失败: ${a.message}`}finally{C.value=!1}}T(B);const I={ws:b,cfg:e,loading:O,doctorLoading:C,doctorOutput:d,rawStatus:f,appRunning:c,edition:_,activeLlm:y,activeModel:D,setupDone:L,setupDate:x,dockerStatus:k,ports:M,wsConnected:p,portColumns:S,refresh:B,parseStatus:A,runDoctor:Q,ref:l,computed:V,onMounted:T,get ReloadOutlined(){return X},get DesktopOutlined(){return q},get ApiOutlined(){return U},get RobotOutlined(){return K},get CheckCircleOutlined(){return J},get MedicineBoxOutlined(){return H},get FileTextOutlined(){return G},get useWsStore(){return F}};return Object.defineProperty(I,"__isScriptSetup",{enumerable:!1,value:!0}),I}},Z={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},$={key:0,style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px"}},ee={style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px"}},te={key:0,style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},oe={key:0,style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px"}},ae={key:0,style:{"text-align":"center",padding:"30px"}},re={key:1,style:{"font-family":"monospace",color:"#ccc"}},ne={key:0,style:{color:"var(--text-secondary)","font-size":"13px",padding:"8px 0"}},le={key:1,style:{color:"var(--text-muted)","font-size":"13px",padding:"8px 0"}},se={key:0,style:{"margin-top":"16px"}},ce={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"300px","overflow-y":"auto","white-space":"pre-wrap"}};function ie(z,r,b,e,O,C){const d=i("a-button"),f=i("a-statistic"),c=i("a-card"),_=i("a-col"),y=i("a-row"),D=i("a-tag"),L=i("a-spin"),x=i("a-badge"),k=i("a-table"),M=i("a-space");return s(),u("div",null,[g("div",Z,[r[3]||(r[3]=g("div",null,[g("h2",{class:"page-title"},"服务管理"),g("p",{class:"page-sub"},"ChainlessChain 运行状态与服务控制")],-1)),t(d,{type:"primary",ghost:"",loading:e.loading,onClick:e.refresh},{icon:o(()=>[t(e.ReloadOutlined)]),default:o(()=>[r[2]||(r[2]=h(" 刷新 ",-1))]),_:1},8,["loading"])]),n(" Status Cards Row "),t(y,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[n(" App Status "),t(_,{xs:24,sm:12,lg:6},{default:o(()=>[t(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t(f,{title:"应用状态",value:e.appRunning?"运行中":"未运行","value-style":{color:e.appRunning?"#52c41a":"#888",fontSize:"16px"}},{prefix:o(()=>[t(e.DesktopOutlined)]),_:1},8,["value","value-style"]),e.edition?(s(),u("div",$,"版本: "+v(e.edition),1)):n("v-if",!0)]),_:1})]),_:1}),n(" WebSocket Server "),t(_,{xs:24,sm:12,lg:6},{default:o(()=>[t(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t(f,{title:"WebSocket 服务",value:"运行中","value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:o(()=>[t(e.ApiOutlined)]),_:1}),g("div",ee," 端口: "+v(e.cfg.wsPort||18800)+" · "+v(e.cfg.wsHost||"127.0.0.1"),1)]),_:1})]),_:1}),n(" LLM Provider "),t(_,{xs:24,sm:12,lg:6},{default:o(()=>[t(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t(f,{title:"LLM 提供商",value:e.activeLlm||"未配置","value-style":{color:e.activeLlm?"#1677ff":"#888",fontSize:"16px"}},{prefix:o(()=>[t(e.RobotOutlined)]),_:1},8,["value","value-style"]),e.activeModel?(s(),u("div",te,v(e.activeModel),1)):n("v-if",!0)]),_:1})]),_:1}),n(" Setup Status "),t(_,{xs:24,sm:12,lg:6},{default:o(()=>[t(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t(f,{title:"初始化",value:e.setupDone?"已完成":"未完成","value-style":{color:e.setupDone?"#52c41a":"#faad14",fontSize:"16px"}},{prefix:o(()=>[t(e.CheckCircleOutlined)]),_:1},8,["value","value-style"]),e.setupDate?(s(),u("div",oe,v(e.setupDate),1)):n("v-if",!0)]),_:1})]),_:1})]),_:1}),n(" Port Status Table "),t(c,{title:"端口状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[t(D,{color:e.wsConnected?"green":"red"},{default:o(()=>[h(" WS "+v(e.wsConnected?"已连接":"断开"),1)]),_:1},8,["color"])]),default:o(()=>[e.loading?(s(),u("div",ae,[t(L)])):(s(),W(k,{key:1,columns:e.portColumns,"data-source":e.ports,pagination:!1,size:"small","row-class-name":p=>p.active?"port-active":""},{bodyCell:o(({column:p,record:S})=>[p.key==="status"?(s(),W(x,{key:0,status:S.active?"success":"default",text:S.active?"运行中":"未运行"},null,8,["status","text"])):n("v-if",!0),p.key==="port"?(s(),u("span",re,v(S.port),1)):n("v-if",!0)]),_:1},8,["data-source","row-class-name"]))]),_:1}),n(" Docker Services "),t(c,{title:"Docker 服务",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{default:o(()=>[e.dockerStatus?(s(),u("div",ne,v(e.dockerStatus),1)):(s(),u("div",le,"未检测到 Docker 服务"))]),_:1}),n(" Quick Actions "),t(c,{title:"快速操作",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t(M,{wrap:""},{default:o(()=>[t(d,{loading:e.doctorLoading,onClick:e.runDoctor,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[t(e.MedicineBoxOutlined)]),default:o(()=>[r[4]||(r[4]=h(" 环境诊断 ",-1))]),_:1},8,["loading"]),t(d,{onClick:r[0]||(r[0]=p=>z.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[t(e.FileTextOutlined)]),default:o(()=>[r[5]||(r[5]=h(" 查看日志 ",-1))]),_:1}),t(d,{onClick:r[1]||(r[1]=p=>z.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[t(e.ApiOutlined)]),default:o(()=>[r[6]||(r[6]=h(" LLM 配置 ",-1))]),_:1})]),_:1}),n(" Doctor Output "),e.doctorOutput?(s(),u("div",se,[r[7]||(r[7]=g("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},"诊断结果",-1)),g("pre",ce,v(e.doctorOutput),1)])):n("v-if",!0)]),_:1})])}const pe=E(Y,[["render",ie],["__scopeId","data-v-83a35225"],["__file","/tmp/cc-web-panel-wQGCAD/repo/packages/web-panel/src/views/Services.vue"]]);export{pe as default};
|