chainlesschain 0.162.84 → 0.162.86

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.
Files changed (151) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-CUPGM_Kx.js → AIOps-BsWi0a9a.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-Gpo_8hNk.js → ActionButton-CgU09_bk.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-gUz2I_9P.js → Analytics-EAT1K7a2.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-8S6XH1S0.js → AppLayout-scmKwxG-.js} +5 -5
  6. package/src/assets/web-panel/assets/{Audit-DspRXpoj.js → Audit-BjUhZorx.js} +1 -1
  7. package/src/assets/web-panel/assets/{Backup-CrO4UCdI.js → Backup-UZynrFEB.js} +1 -1
  8. package/src/assets/web-panel/assets/{BaseInput-BkEVF4o4.js → BaseInput-Dw7VRL38.js} +1 -1
  9. package/src/assets/web-panel/assets/{Chat-B9EvII6G.js → Chat-jFpknfRR.js} +6 -6
  10. package/src/assets/web-panel/assets/{ChatBubbleRenderer-BfXGm9lb.js → ChatBubbleRenderer-V8GFgU1l.js} +1 -1
  11. package/src/assets/web-panel/assets/{Checkbox-BrDQRcU4.js → Checkbox-A6QNjulp.js} +1 -1
  12. package/src/assets/web-panel/assets/{Codegen-CqBoplXd.js → Codegen-plIAoFPy.js} +1 -1
  13. package/src/assets/web-panel/assets/{Col-CbQa3Dci.js → Col-p8jds0fN.js} +1 -1
  14. package/src/assets/web-panel/assets/{Community-C03LI8ue.js → Community-CjdSyAYH.js} +1 -1
  15. package/src/assets/web-panel/assets/{Compact-D_XPXg9d.js → Compact-D_pwxcOz.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compliance-B5sBpZMO.js → Compliance-lKVtLubh.js} +1 -1
  17. package/src/assets/web-panel/assets/{Cowork-WnDWZ2l6.js → Cowork-C1N1klDH.js} +3 -3
  18. package/src/assets/web-panel/assets/{Cron-CMIJXLkp.js → Cron-De82luS5.js} +2 -2
  19. package/src/assets/web-panel/assets/{Crosschain-DLptM6-5.js → Crosschain-Ye0orjca.js} +1 -1
  20. package/src/assets/web-panel/assets/{DID-svP2FmRz.js → DID-Ci2zdZFM.js} +2 -2
  21. package/src/assets/web-panel/assets/{Dashboard-CO5hKuwh.js → Dashboard-8ttZ4QQ9.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dropdown-CQIK5Gf6.js → Dropdown-BON5tdO8.js} +1 -1
  23. package/src/assets/web-panel/assets/{EmailListRenderer-CBBq-Mwz.js → EmailListRenderer-iPlELXWj.js} +1 -1
  24. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DgcxYtqz.js → FamilyGuardDashboard-BNBYL3FW.js} +1 -1
  25. package/src/assets/web-panel/assets/{Federation-Di9NPJ6Y.js → Federation-Bur4PRzE.js} +1 -1
  26. package/src/assets/web-panel/assets/{FormItemContext-CwjF4P1N.js → FormItemContext-BlOvhD7K.js} +1 -1
  27. package/src/assets/web-panel/assets/{GenericCardRenderer-BZRv0AD7.js → GenericCardRenderer-BoVvb2xa.js} +1 -1
  28. package/src/assets/web-panel/assets/{Git-BUpxPamc.js → Git-B__nMbw1.js} +2 -2
  29. package/src/assets/web-panel/assets/{Governance-D-RKals0.js → Governance-DK0Zgh2N.js} +1 -1
  30. package/src/assets/web-panel/assets/{Inference-CEoHP1e3.js → Inference-BddQ7oih.js} +1 -1
  31. package/src/assets/web-panel/assets/{KnowledgeGraph-Bzb02Le2.js → KnowledgeGraph-CvFX71Ed.js} +1 -1
  32. package/src/assets/web-panel/assets/{Logs-C80J5aHm.js → Logs-L2sBQLYZ.js} +2 -2
  33. package/src/assets/web-panel/assets/{Marketplace-CLeqc86x.js → Marketplace-BCWe7HDC.js} +1 -1
  34. package/src/assets/web-panel/assets/{McpTools-C6_3jvji.js → McpTools-DqKH9JPl.js} +5 -5
  35. package/src/assets/web-panel/assets/{Memory-CB1VmvbL.js → Memory-DWWABKsb.js} +2 -2
  36. package/src/assets/web-panel/assets/{MobileBridge-PPO8M2EY.js → MobileBridge-B2eLD-PB.js} +2 -2
  37. package/src/assets/web-panel/assets/{MobileProjects-Bu-ul-bk.js → MobileProjects-cieCNE_S.js} +1 -1
  38. package/src/assets/web-panel/assets/{Mtc-CY0506vU.js → Mtc-Y-5_ueBj.js} +4 -4
  39. package/src/assets/web-panel/assets/{MtcAudit-BV-IqDNO.js → MtcAudit-D00-m4zy.js} +2 -2
  40. package/src/assets/web-panel/assets/{Multisig-8YiHk7pd.js → Multisig-2YOBtc_K.js} +3 -3
  41. package/src/assets/web-panel/assets/{NLProgramming-DCFi8iuv.js → NLProgramming-kRWZBnaz.js} +1 -1
  42. package/src/assets/web-panel/assets/{Notes-pcK3qdfo.js → Notes-DPRHkyl5.js} +3 -3
  43. package/src/assets/web-panel/assets/{NotificationSettings-DrU6Ac_p.js → NotificationSettings-vJOg9C4W.js} +1 -1
  44. package/src/assets/web-panel/assets/{OrderTableRenderer-tCu7jh7L.js → OrderTableRenderer-B0Y6J6Nc.js} +1 -1
  45. package/src/assets/web-panel/assets/{Organization-r7rkShQ7.js → Organization-BuISwIXd.js} +3 -3
  46. package/src/assets/web-panel/assets/{Overflow-DGOBthyf.js → Overflow-BNGHwMDw.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-DalC-NnK.js → P2P-DHBBs29l.js} +2 -2
  48. package/src/assets/web-panel/assets/{PdhVaultBrowser-4xxODAFn.js → PdhVaultBrowser-D9zGzba7.js} +3 -3
  49. package/src/assets/web-panel/assets/{Permissions-C15WSlI2.js → Permissions-QLkdu-G_.js} +4 -4
  50. package/src/assets/web-panel/assets/{PersonalDataHub-DAGK05sL.js → PersonalDataHub-BuQlObqk.js} +4 -4
  51. package/src/assets/web-panel/assets/{Pipeline-NAji3Ktw.js → Pipeline-D_ycs0g9.js} +1 -1
  52. package/src/assets/web-panel/assets/{Privacy-CCRUEGFK.js → Privacy-oN6XDVGm.js} +1 -1
  53. package/src/assets/web-panel/assets/{ProjectInit-DVmQTOeF.js → ProjectInit-BGThFxbb.js} +2 -2
  54. package/src/assets/web-panel/assets/{ProjectSettings-1NVdULNr.js → ProjectSettings-BxWieeHC.js} +2 -2
  55. package/src/assets/web-panel/assets/Projects-DOd58I-_.js +1 -0
  56. package/src/assets/web-panel/assets/{Providers-Bsi5PeyG.js → Providers-kREzYT7U.js} +1 -1
  57. package/src/assets/web-panel/assets/{QuickAsk-Teh85bAz.js → QuickAsk-Cw11_JEa.js} +1 -1
  58. package/src/assets/web-panel/assets/{Recommend-CnBrDiNE.js → Recommend-CDWYEzDP.js} +1 -1
  59. package/src/assets/web-panel/assets/{Reputation-BRuy4vvz.js → Reputation-BuDEzBoL.js} +1 -1
  60. package/src/assets/web-panel/assets/{Row-AknoXYnV.js → Row-Bxxu4Xtz.js} +1 -1
  61. package/src/assets/web-panel/assets/{RssFeed-BYhR3Mr1.js → RssFeed-BpEsZmwI.js} +3 -3
  62. package/src/assets/web-panel/assets/{Search-CCVNTHhz.js → Search-BKDmySFl.js} +1 -1
  63. package/src/assets/web-panel/assets/{Security-DtxuRS8f.js → Security-gJvuDQw2.js} +3 -3
  64. package/src/assets/web-panel/assets/{Services-CH9pcUuR.js → Services-XmNshc8J.js} +2 -2
  65. package/src/assets/web-panel/assets/{Skeleton-BVCIpTSu.js → Skeleton-sGp0pOss.js} +1 -1
  66. package/src/assets/web-panel/assets/{Skills-Bh0_27fL.js → Skills-O-23QIht.js} +1 -1
  67. package/src/assets/web-panel/assets/{Sla-Dt2ZjTIC.js → Sla-DVxzPFWL.js} +1 -1
  68. package/src/assets/web-panel/assets/{SpeechSettings-3oB4vztB.js → SpeechSettings-CdZV4JqV.js} +1 -1
  69. package/src/assets/web-panel/assets/{SyncSettings-3EakfvY5.js → SyncSettings-CzKwdZHi.js} +2 -2
  70. package/src/assets/web-panel/assets/Tasks-2QWjs9uX.js +1 -0
  71. package/src/assets/web-panel/assets/{Templates-bJMb7OuJ.js → Templates-dKai3F-y.js} +1 -1
  72. package/src/assets/web-panel/assets/{Tenant-9T-oGFha.js → Tenant-DGtGH0wG.js} +1 -1
  73. package/src/assets/web-panel/assets/Terminal-DK2OhsAg.js +3 -0
  74. package/src/assets/web-panel/assets/{TimelineRenderer-C6IcefQF.js → TimelineRenderer-Dq4yqkky.js} +1 -1
  75. package/src/assets/web-panel/assets/{Tokens-DRBbMZ6n.js → Tokens-C2qbIdlP.js} +1 -1
  76. package/src/assets/web-panel/assets/{Trigger-CfBK_gR2.js → Trigger-Cqee0r__.js} +1 -1
  77. package/src/assets/web-panel/assets/{Trust-Csi86O_m.js → Trust-D2qJ8aQY.js} +1 -1
  78. package/src/assets/web-panel/assets/{UkeySign-Dh0RMWm3.js → UkeySign-DVvv_9zC.js} +1 -1
  79. package/src/assets/web-panel/assets/{VideoEditing-CGVRp-xp.js → VideoEditing-B-34cGbd.js} +1 -1
  80. package/src/assets/web-panel/assets/{Wallet-ul6ZpClL.js → Wallet-ChvGDsZH.js} +4 -4
  81. package/src/assets/web-panel/assets/{WebAuthn-B96-wm1H.js → WebAuthn-h7kqS8ou.js} +3 -3
  82. package/src/assets/web-panel/assets/{WorkflowEditor-CHvvdMYl.js → WorkflowEditor-AUqprf8Y.js} +1 -1
  83. package/src/assets/web-panel/assets/{chat-CrmxJLgQ.js → chat-i7hUCh_C.js} +1 -1
  84. package/src/assets/web-panel/assets/{colors-iw0H0UBl.js → colors-DjtDsEu7.js} +1 -1
  85. package/src/assets/web-panel/assets/{compact-item-BoP3ciR6.js → compact-item-CyoTiRay.js} +1 -1
  86. package/src/assets/web-panel/assets/{createContext-CerRGWSU.js → createContext-byecyZks.js} +1 -1
  87. package/src/assets/web-panel/assets/devWarning-D3_gOwpU.js +1 -0
  88. package/src/assets/web-panel/assets/{hasIn-DsatQYJx.js → hasIn-CJVaIlUw.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-CWjQpi8r.js → index-1SXdlEmZ.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-8jD5bKYd.js → index-B4gYSyri.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-Cxc0hflR.js → index-BD3pqRA9.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-DnQ7-JQY.js → index-BLaQNt_7.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-Boik4lkC.js → index-BRWjzWaM.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-CSbZKYQE.js → index-BscEBCR0.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-CDkkLejB.js → index-BxkXcXNs.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-BWZD_xU3.js → index-C2I6a-RA.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-CSNbpxSb.js → index-C3mMDCOE.js} +1 -1
  98. package/src/assets/web-panel/assets/index-C4MOtXdA.js +1 -0
  99. package/src/assets/web-panel/assets/{index-BMbuAe5D.js → index-C8beUhKO.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-7l1rmyaN.js → index-CDf8t-mU.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DAGrtlTV.js → index-COs_6PQ5.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-BuhW7RGq.js → index-Cme6n3eY.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DDrhbD6H.js → index-CnjxYq-t.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BcyvEERG.js → index-Cr42QNqy.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DKuaBG68.js → index-CtdcStbl.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-C5r1VXhR.js → index-D3JKjMEY.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-D9Sygqi9.js → index-DH7suqAN.js} +3 -3
  108. package/src/assets/web-panel/assets/{index-BP_JGTE7.js → index-DKeNd7yb.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-D0IzrHb1.js → index-DLIQMCBQ.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-BXvqWNro.js → index-DXgZwbRe.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Dx4n5tpI.js → index-Dc8QTolS.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DvQd5rvA.js → index-DoAiXnUJ.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-C1GAAh9I.js → index-DwI-ZhZq.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-D97QUify.js → index-DwV8P00A.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CIKm0ljX.js → index-DznVBVpM.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Dbpu7Y9S.js → index-EZd5K5UE.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BgHjBX0-.js → index-K1wX1vnH.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-KTJ86cMc.js → index-KIqcaJ6Q.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-4IhKBZK7.js → index-Qesr-8RD.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-B19YcZYT.js → index-RYkcxXFq.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-b43zAH3v.js → index-XGSqce94.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-C1Ve7k2T.js → index-a6qb2NLc.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-0GW7IL2K.js → index-gWPWksKr.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-QwRb8Iww.js → index-jAdTCN4U.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-ykZB3IUq.js → index-kOZvf-u5.js} +1 -1
  126. package/src/assets/web-panel/assets/index-nH2eOdD9.js +1 -0
  127. package/src/assets/web-panel/assets/{index-BbSrbGp1.js → index-sUJ2fbT9.js} +1 -1
  128. package/src/assets/web-panel/assets/{initDefaultProps-C_C9YePV.js → initDefaultProps-C9XZl-TO.js} +1 -1
  129. package/src/assets/web-panel/assets/{motion-DsRTNcag.js → motion-DTSNqE6t.js} +1 -1
  130. package/src/assets/web-panel/assets/{move-CNQpgGaU.js → move-DTmo8xnK.js} +1 -1
  131. package/src/assets/web-panel/assets/{omit-B_C8ne12.js → omit-Dd9VzuaV.js} +1 -1
  132. package/src/assets/web-panel/assets/{pickAttrs-D95no1kz.js → pickAttrs-CRTbePD_.js} +1 -1
  133. package/src/assets/web-panel/assets/{placementArrow-CqoJQLBC.js → placementArrow-cPPZNiDG.js} +1 -1
  134. package/src/assets/web-panel/assets/{responsiveObserve-BvxPjVzY.js → responsiveObserve-CWSLBUlY.js} +1 -1
  135. package/src/assets/web-panel/assets/{slide-C1PZ8gjQ.js → slide-Bu6wM4Vm.js} +1 -1
  136. package/src/assets/web-panel/assets/{statusUtils-CXlmu_Qa.js → statusUtils-BQSVPEW6.js} +1 -1
  137. package/src/assets/web-panel/assets/{styleChecker-Yeh5dWMi.js → styleChecker-CIH0NQmx.js} +1 -1
  138. package/src/assets/web-panel/assets/{useFlexGapSupport-BA1uUeeV.js → useFlexGapSupport-Cw2z1E4v.js} +1 -1
  139. package/src/assets/web-panel/assets/{useFs-TCL7sk7I.js → useFs-CEf8lFD8.js} +1 -1
  140. package/src/assets/web-panel/assets/{usePersonalDataHub-DD0yPkw9.js → usePersonalDataHub-C-xuLSv-.js} +1 -1
  141. package/src/assets/web-panel/assets/{vnode-Cxw9uvFj.js → vnode-D6QpJFSY.js} +1 -1
  142. package/src/assets/web-panel/assets/{zoom-DPRJdorO.js → zoom-DccRPdcN.js} +1 -1
  143. package/src/assets/web-panel/index.html +1 -1
  144. package/src/lib/image-input.js +60 -11
  145. package/src/runtime/headless-stream.js +40 -2
  146. package/src/assets/web-panel/assets/Projects-ws0_zzCP.js +0 -1
  147. package/src/assets/web-panel/assets/Tasks-DrkWRRuK.js +0 -1
  148. package/src/assets/web-panel/assets/Terminal-CPZGmFF2.js +0 -3
  149. package/src/assets/web-panel/assets/devWarning-Cjez93XF.js +0 -1
  150. package/src/assets/web-panel/assets/index-CN5J59xo.js +0 -1
  151. package/src/assets/web-panel/assets/index-RnzfY85C.js +0 -1
@@ -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-D9Sygqi9.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(H()),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 U(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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}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=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:U,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 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"},Ue={class:"score-block"},He={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"),U=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",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(U,{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",Ue,[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",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(U,{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-YdUQlr/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 B,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-DH7suqAN.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}),j=v(""),w=v(U()),K=v("results"),S=v(""),N=v(""),E=v(!1),M=v(null),V=B(()=>_e(z.value)),Y=B(()=>h.value.length?Math.max(...h.value.map(l=>l.score)):0),W=B(()=>[{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=B(()=>{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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}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,j.value=l;return}h.value=fe(y),j.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:j,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:B,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"}},je={class:"page-title"},Be={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"),j=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",je,c(e.t("search.title")),1),m("p",Be,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(j,{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-GijCQY/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 J,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-D9Sygqi9.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 Z()}finally{V.value=!1}}function G(s){s==="did"&&L.value.length===0&&k(),s==="audit"&&q.value.length===0&&Z()}const T=c(!1),h=c(!1),I=c(!1),L=c([]),z=c(!1),x=c(""),w=c(""),Q=J(()=>[{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=S(s)}catch(s){b.error(r("security.messages.loadDidsFailed",{err:s.message}))}finally{T.value=!1}}function S(s){const n=[],B=s.split(`
2
- `);for(const D of B){const o=D.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 Y=c(!1),q=c([]),H=c([]),oe=J(()=>[{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 Z(){Y.value=!0;try{const[s,n]=await Promise.all([e.execute("audit log",15e3),e.execute("audit stats",15e3)]);q.value=X(s.output),H.value=$(n.output)}catch(s){b.error(r("security.messages.loadAuditFailed",{err:s.message}))}finally{Y.value=!1}}function X(s){const n=[],B=s.split(`
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 J,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-DH7suqAN.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 Z()}finally{V.value=!1}}function q(s){s==="did"&&L.value.length===0&&k(),s==="audit"&&G.value.length===0&&Z()}const T=c(!1),h=c(!1),I=c(!1),L=c([]),z=c(!1),x=c(""),w=c(""),Q=J(()=>[{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=S(s)}catch(s){b.error(r("security.messages.loadDidsFailed",{err:s.message}))}finally{T.value=!1}}function S(s){const n=[],B=s.split(`
2
+ `);for(const D of B){const o=D.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 Y=c(!1),G=c([]),H=c([]),oe=J(()=>[{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 Z(){Y.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{Y.value=!1}}function X(s){const n=[],B=s.split(`
3
3
  `);for(const D of B){const o=D.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
- `),D=["#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:D[o%D.length]}),o++}}return n.length===0&&n.push({label:r("security.audit.totalEvents"),value:q.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:G,didLoading:T,creating:h,signing:I,didList:L,showSignModal:z,signText:x,signResult:w,didColumns:Q,loadDIDList:k,parseDIDList:S,createDID:M,signMessage:j,encryptPath:W,decryptPath:F,encrypting:i,decrypting:u,encryptResult:N,decryptResult:E,doEncrypt:le,doDecrypt:ne,auditLoading:Y,auditEvents:q,auditStats:H,auditColumns:oe,levelColor:ce,loadAudit:Z,parseAuditLog:X,parseAuditStats:$,ref:c,computed:J,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"}},Se={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)"}},De={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"),G=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"),S=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(G,{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(S,{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",Se,l(e.encryptResult.output),1)])):p("v-if",!0)]),_:1},8,["title"])]),_:1}),t(M,{xs:24,md:12},{default:a(()=>[t(S,{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",De,[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(S,{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-YdUQlr/repo/packages/web-panel/src/views/Security.vue"]]);export{Ue as default};
4
+ `),D=["#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:D[o%D.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:S,createDID:M,signMessage:j,encryptPath:W,decryptPath:F,encrypting:i,decrypting:u,encryptResult:N,decryptResult:E,doEncrypt:le,doDecrypt:ne,auditLoading:Y,auditEvents:G,auditStats:H,auditColumns:oe,levelColor:ce,loadAudit:Z,parseAuditLog:X,parseAuditStats:$,ref:c,computed:J,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"}},Se={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)"}},De={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"),S=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(S,{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",Se,l(e.encryptResult.output),1)])):p("v-if",!0)]),_:1},8,["title"])]),_:1}),t(M,{xs:24,md:12},{default:a(()=>[t(S,{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",De,[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(S,{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-GijCQY/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 v,S as W}from"./vendor-BvqAck49.js";import{_ as E,u as F}from"./index-D9Sygqi9.js";import{a4 as U,ar as G,f as H,af as J,a8 as K,h as Y,R as q}from"./icons-DP3uiYxy.js";const X={__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 q},get DesktopOutlined(){return Y},get ApiOutlined(){return K},get RobotOutlined(){return J},get CheckCircleOutlined(){return H},get MedicineBoxOutlined(){return G},get FileTextOutlined(){return U},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(X,[["render",ie],["__scopeId","data-v-83a35225"],["__file","/tmp/cc-web-panel-YdUQlr/repo/packages/web-panel/src/views/Services.vue"]]);export{pe as default};
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-DH7suqAN.js";import{a4 as G,ar as H,f as J,af as K,a8 as U,h as Y,R as q}from"./icons-DP3uiYxy.js";const X={__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 Q=a.split(`
2
+ `).filter(m=>m.match(/[○●]\s+\w+:\s+\d+/));M.value=Q.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 j(){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:j,ref:l,computed:V,onMounted:T,get ReloadOutlined(){return q},get DesktopOutlined(){return Y},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(X,[["render",ie],["__scopeId","data-v-83a35225"],["__file","/tmp/cc-web-panel-GijCQY/repo/packages/web-panel/src/views/Services.vue"]]);export{pe as default};
@@ -1,4 +1,4 @@
1
- import{i as C,l as N,m as D,h as o,K as G,q as W}from"./index-D9Sygqi9.js";import{d as I,c}from"./vendor-BvqAck49.js";import{i as j}from"./initDefaultProps-C_C9YePV.js";const z=()=>({prefixCls:String,width:{type:[Number,String]}}),O=I({compatConfig:{MODE:3},name:"SkeletonTitle",props:z(),setup(e){return()=>{const{prefixCls:t,width:n}=e,r=typeof n=="number"?`${n}px`:n;return c("h3",{class:t,style:{width:r}},null)}}}),X=()=>({prefixCls:String,width:{type:[Number,String,Array]},rows:Number}),q=I({compatConfig:{MODE:3},name:"SkeletonParagraph",props:X(),setup(e){const t=n=>{const{width:r,rows:l=2}=e;if(Array.isArray(r))return r[n];if(l-1===n)return r};return()=>{const{prefixCls:n,rows:r}=e,l=[...Array(r)].map((i,a)=>{const d=t(a);return c("li",{key:a,style:{width:typeof d=="number"?`${d}px`:d}},null)});return c("ul",{class:n},[l])}}}),ie=()=>({prefixCls:String,size:[String,Number],shape:String,active:{type:Boolean,default:void 0}}),L=e=>{const{prefixCls:t,size:n,shape:r}=e,l=C({[`${t}-lg`]:n==="large",[`${t}-sm`]:n==="small"}),i=C({[`${t}-circle`]:r==="circle",[`${t}-square`]:r==="square",[`${t}-round`]:r==="round"}),a=typeof n=="number"?{width:`${n}px`,height:`${n}px`,lineHeight:`${n}px`}:{};return c("span",{class:C(t,l,i),style:a},null)};L.displayName="SkeletonElement";const F=new G("ant-skeleton-loading",{"0%":{transform:"translateX(-37.5%)"},"100%":{transform:"translateX(37.5%)"}}),v=e=>({height:e,lineHeight:`${e}px`}),m=e=>o({width:e},v(e)),_=e=>({position:"relative",zIndex:0,overflow:"hidden",background:"transparent","&::after":{position:"absolute",top:0,insetInlineEnd:"-150%",bottom:0,insetInlineStart:"-150%",background:e.skeletonLoadingBackground,animationName:F,animationDuration:e.skeletonLoadingMotionDuration,animationTimingFunction:"ease",animationIterationCount:"infinite",content:'""'}}),P=e=>o({width:e*5,minWidth:e*5},v(e)),K=e=>{const{skeletonAvatarCls:t,color:n,controlHeight:r,controlHeightLG:l,controlHeightSM:i}=e;return{[`${t}`]:o({display:"inline-block",verticalAlign:"top",background:n},m(r)),[`${t}${t}-circle`]:{borderRadius:"50%"},[`${t}${t}-lg`]:o({},m(l)),[`${t}${t}-sm`]:o({},m(i))}},V=e=>{const{controlHeight:t,borderRadiusSM:n,skeletonInputCls:r,controlHeightLG:l,controlHeightSM:i,color:a}=e;return{[`${r}`]:o({display:"inline-block",verticalAlign:"top",background:a,borderRadius:n},P(t)),[`${r}-lg`]:o({},P(l)),[`${r}-sm`]:o({},P(i))}},M=e=>o({width:e},v(e)),J=e=>{const{skeletonImageCls:t,imageSizeBase:n,color:r,borderRadiusSM:l}=e;return{[`${t}`]:o(o({display:"flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",background:r,borderRadius:l},M(n*2)),{[`${t}-path`]:{fill:"#bfbfbf"},[`${t}-svg`]:o(o({},M(n)),{maxWidth:n*4,maxHeight:n*4}),[`${t}-svg${t}-svg-circle`]:{borderRadius:"50%"}}),[`${t}${t}-circle`]:{borderRadius:"50%"}}},x=(e,t,n)=>{const{skeletonButtonCls:r}=e;return{[`${n}${r}-circle`]:{width:t,minWidth:t,borderRadius:"50%"},[`${n}${r}-round`]:{borderRadius:t}}},E=e=>o({width:e*2,minWidth:e*2},v(e)),Q=e=>{const{borderRadiusSM:t,skeletonButtonCls:n,controlHeight:r,controlHeightLG:l,controlHeightSM:i,color:a}=e;return o(o(o(o(o({[`${n}`]:o({display:"inline-block",verticalAlign:"top",background:a,borderRadius:t,width:r*2,minWidth:r*2},E(r))},x(e,r,n)),{[`${n}-lg`]:o({},E(l))}),x(e,l,`${n}-lg`)),{[`${n}-sm`]:o({},E(i))}),x(e,i,`${n}-sm`))},U=e=>{const{componentCls:t,skeletonAvatarCls:n,skeletonTitleCls:r,skeletonParagraphCls:l,skeletonButtonCls:i,skeletonInputCls:a,skeletonImageCls:d,controlHeight:y,controlHeightLG:f,controlHeightSM:p,color:g,padding:w,marginSM:B,borderRadius:s,skeletonTitleHeight:h,skeletonBlockRadius:u,skeletonParagraphLineHeight:$,controlHeightXS:k,skeletonParagraphMarginTop:S}=e;return{[`${t}`]:{display:"table",width:"100%",[`${t}-header`]:{display:"table-cell",paddingInlineEnd:w,verticalAlign:"top",[`${n}`]:o({display:"inline-block",verticalAlign:"top",background:g},m(y)),[`${n}-circle`]:{borderRadius:"50%"},[`${n}-lg`]:o({},m(f)),[`${n}-sm`]:o({},m(p))},[`${t}-content`]:{display:"table-cell",width:"100%",verticalAlign:"top",[`${r}`]:{width:"100%",height:h,background:g,borderRadius:u,[`+ ${l}`]:{marginBlockStart:p}},[`${l}`]:{padding:0,"> li":{width:"100%",height:$,listStyle:"none",background:g,borderRadius:u,"+ li":{marginBlockStart:k}}},[`${l}> li:last-child:not(:first-child):not(:nth-child(2))`]:{width:"61%"}},[`&-round ${t}-content`]:{[`${r}, ${l} > li`]:{borderRadius:s}}},[`${t}-with-avatar ${t}-content`]:{[`${r}`]:{marginBlockStart:B,[`+ ${l}`]:{marginBlockStart:S}}},[`${t}${t}-element`]:o(o(o(o({display:"inline-block",width:"auto"},Q(e)),K(e)),V(e)),J(e)),[`${t}${t}-block`]:{width:"100%",[`${i}`]:{width:"100%"},[`${a}`]:{width:"100%"}},[`${t}${t}-active`]:{[`
1
+ import{i as C,l as N,m as D,h as o,K as G,q as W}from"./index-DH7suqAN.js";import{d as I,c}from"./vendor-BvqAck49.js";import{i as j}from"./initDefaultProps-C9XZl-TO.js";const z=()=>({prefixCls:String,width:{type:[Number,String]}}),O=I({compatConfig:{MODE:3},name:"SkeletonTitle",props:z(),setup(e){return()=>{const{prefixCls:t,width:n}=e,r=typeof n=="number"?`${n}px`:n;return c("h3",{class:t,style:{width:r}},null)}}}),X=()=>({prefixCls:String,width:{type:[Number,String,Array]},rows:Number}),q=I({compatConfig:{MODE:3},name:"SkeletonParagraph",props:X(),setup(e){const t=n=>{const{width:r,rows:l=2}=e;if(Array.isArray(r))return r[n];if(l-1===n)return r};return()=>{const{prefixCls:n,rows:r}=e,l=[...Array(r)].map((i,a)=>{const d=t(a);return c("li",{key:a,style:{width:typeof d=="number"?`${d}px`:d}},null)});return c("ul",{class:n},[l])}}}),ie=()=>({prefixCls:String,size:[String,Number],shape:String,active:{type:Boolean,default:void 0}}),L=e=>{const{prefixCls:t,size:n,shape:r}=e,l=C({[`${t}-lg`]:n==="large",[`${t}-sm`]:n==="small"}),i=C({[`${t}-circle`]:r==="circle",[`${t}-square`]:r==="square",[`${t}-round`]:r==="round"}),a=typeof n=="number"?{width:`${n}px`,height:`${n}px`,lineHeight:`${n}px`}:{};return c("span",{class:C(t,l,i),style:a},null)};L.displayName="SkeletonElement";const F=new G("ant-skeleton-loading",{"0%":{transform:"translateX(-37.5%)"},"100%":{transform:"translateX(37.5%)"}}),v=e=>({height:e,lineHeight:`${e}px`}),m=e=>o({width:e},v(e)),_=e=>({position:"relative",zIndex:0,overflow:"hidden",background:"transparent","&::after":{position:"absolute",top:0,insetInlineEnd:"-150%",bottom:0,insetInlineStart:"-150%",background:e.skeletonLoadingBackground,animationName:F,animationDuration:e.skeletonLoadingMotionDuration,animationTimingFunction:"ease",animationIterationCount:"infinite",content:'""'}}),P=e=>o({width:e*5,minWidth:e*5},v(e)),K=e=>{const{skeletonAvatarCls:t,color:n,controlHeight:r,controlHeightLG:l,controlHeightSM:i}=e;return{[`${t}`]:o({display:"inline-block",verticalAlign:"top",background:n},m(r)),[`${t}${t}-circle`]:{borderRadius:"50%"},[`${t}${t}-lg`]:o({},m(l)),[`${t}${t}-sm`]:o({},m(i))}},V=e=>{const{controlHeight:t,borderRadiusSM:n,skeletonInputCls:r,controlHeightLG:l,controlHeightSM:i,color:a}=e;return{[`${r}`]:o({display:"inline-block",verticalAlign:"top",background:a,borderRadius:n},P(t)),[`${r}-lg`]:o({},P(l)),[`${r}-sm`]:o({},P(i))}},M=e=>o({width:e},v(e)),J=e=>{const{skeletonImageCls:t,imageSizeBase:n,color:r,borderRadiusSM:l}=e;return{[`${t}`]:o(o({display:"flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",background:r,borderRadius:l},M(n*2)),{[`${t}-path`]:{fill:"#bfbfbf"},[`${t}-svg`]:o(o({},M(n)),{maxWidth:n*4,maxHeight:n*4}),[`${t}-svg${t}-svg-circle`]:{borderRadius:"50%"}}),[`${t}${t}-circle`]:{borderRadius:"50%"}}},x=(e,t,n)=>{const{skeletonButtonCls:r}=e;return{[`${n}${r}-circle`]:{width:t,minWidth:t,borderRadius:"50%"},[`${n}${r}-round`]:{borderRadius:t}}},E=e=>o({width:e*2,minWidth:e*2},v(e)),Q=e=>{const{borderRadiusSM:t,skeletonButtonCls:n,controlHeight:r,controlHeightLG:l,controlHeightSM:i,color:a}=e;return o(o(o(o(o({[`${n}`]:o({display:"inline-block",verticalAlign:"top",background:a,borderRadius:t,width:r*2,minWidth:r*2},E(r))},x(e,r,n)),{[`${n}-lg`]:o({},E(l))}),x(e,l,`${n}-lg`)),{[`${n}-sm`]:o({},E(i))}),x(e,i,`${n}-sm`))},U=e=>{const{componentCls:t,skeletonAvatarCls:n,skeletonTitleCls:r,skeletonParagraphCls:l,skeletonButtonCls:i,skeletonInputCls:a,skeletonImageCls:d,controlHeight:y,controlHeightLG:f,controlHeightSM:p,color:g,padding:w,marginSM:B,borderRadius:s,skeletonTitleHeight:h,skeletonBlockRadius:u,skeletonParagraphLineHeight:$,controlHeightXS:k,skeletonParagraphMarginTop:S}=e;return{[`${t}`]:{display:"table",width:"100%",[`${t}-header`]:{display:"table-cell",paddingInlineEnd:w,verticalAlign:"top",[`${n}`]:o({display:"inline-block",verticalAlign:"top",background:g},m(y)),[`${n}-circle`]:{borderRadius:"50%"},[`${n}-lg`]:o({},m(f)),[`${n}-sm`]:o({},m(p))},[`${t}-content`]:{display:"table-cell",width:"100%",verticalAlign:"top",[`${r}`]:{width:"100%",height:h,background:g,borderRadius:u,[`+ ${l}`]:{marginBlockStart:p}},[`${l}`]:{padding:0,"> li":{width:"100%",height:$,listStyle:"none",background:g,borderRadius:u,"+ li":{marginBlockStart:k}}},[`${l}> li:last-child:not(:first-child):not(:nth-child(2))`]:{width:"61%"}},[`&-round ${t}-content`]:{[`${r}, ${l} > li`]:{borderRadius:s}}},[`${t}-with-avatar ${t}-content`]:{[`${r}`]:{marginBlockStart:B,[`+ ${l}`]:{marginBlockStart:S}}},[`${t}${t}-element`]:o(o(o(o({display:"inline-block",width:"auto"},Q(e)),K(e)),V(e)),J(e)),[`${t}${t}-block`]:{width:"100%",[`${i}`]:{width:"100%"},[`${a}`]:{width:"100%"}},[`${t}${t}-active`]:{[`
2
2
  ${r},
3
3
  ${l} > li,
4
4
  ${n},
@@ -1 +1 @@
1
- import{E as I,b as w,r as b,I as m,J as y,U as a,R as g,c as i,K as u,V as h,F as C,Z as L,N as O,o as M,P as p,Q as S,S as R}from"./vendor-BvqAck49.js";import{u as E,_ as N}from"./index-D9Sygqi9.js";import{u as P}from"./useShellMode-CgR0wCYM.js";import{p as Q}from"./parsers-UEvh_ShA.js";import{u as z}from"./chat-CrmxJLgQ.js";import{a9 as V,ap as j,R as q}from"./icons-DP3uiYxy.js";const A=I("skills",()=>{const _=b(!1),t=b([]),n=b(""),e=b("all"),k=w(()=>{const o=new Set(["all"]);return t.value.forEach(l=>{l.category&&o.add(l.category),l.executionMode&&o.add(l.executionMode)}),[...o]}),v=w(()=>{let o=t.value;if(e.value!=="all"&&(o=o.filter(l=>l.category===e.value||l.executionMode===e.value)),n.value){const l=n.value.toLowerCase();o=o.filter(d=>d.name?.toLowerCase().includes(l)||d.description?.toLowerCase().includes(l)||d.title?.toLowerCase().includes(l))}return o});async function f(){const o=E();_.value=!0;try{if(P().isEmbedded){const c=await o.sendRaw({type:"skill.list"},2e4);c?.ok&&Array.isArray(c.result?.skills)?t.value=c.result.skills:(console.error("skill.list custom topic failed:",c?.error),t.value=[]);return}const{output:l}=await o.execute("skill list",2e4),d=Q(l);t.value=d}catch(l){console.error("Failed to load skills:",l)}finally{_.value=!1}}return{loading:_,allSkills:t,searchQuery:n,selectedCategory:e,categories:k,filteredSkills:v,loadSkills:f}}),B={__name:"Skills",setup(_,{expose:t}){t();const n=A(),e=z(),k=O(),v=w(()=>n.categories.filter(r=>r!=="all").slice(0,6));function f(r){return{"built-in":"内置","cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合",workspace:"工作区",marketplace:"市场"}[r]||r}function o(r){return{"cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合","built-in":"内置"}[r]||r||"未知"}function l(r){return{"cli-direct":"cyan",agent:"purple","llm-query":"blue",hybrid:"orange","built-in":"green"}[r]||"default"}async function d(r){await e.createSession("agent"),k.push("/chat"),setTimeout(()=>{e.currentSessionId&&e.sendMessage(e.currentSessionId,`/skill run ${r}`)},300)}M(()=>{n.allSkills.length||n.loadSkills()});const c={skillsStore:n,chatStore:e,router:k,displayCategories:v,catLabel:f,modeLabel:o,modeColor:l,runSkill:d,computed:w,onMounted:M,get useRouter(){return O},get ReloadOutlined(){return q},get PlayCircleOutlined(){return j},get AppstoreOutlined(){return V},get useSkillsStore(){return A},get useChatStore(){return z}};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}},F={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},U={class:"page-sub"},T={style:{display:"flex",gap:"12px","margin-bottom":"20px","flex-wrap":"wrap"}},D={key:0,style:{"text-align":"center",padding:"60px"}},G={class:"skills-grid"},J={style:{display:"flex","justify-content":"space-between","align-items":"flex-start"}},K={style:{flex:"1","min-width":"0"}},W={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px","font-family":"monospace"}},Y={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Z={style:{"margin-left":"12px","flex-shrink":"0"}},H={style:{"margin-top":"10px",display:"flex","justify-content":"flex-end"}},X={style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}};function $(_,t,n,e,k,v){const f=m("a-button"),o=m("a-input-search"),l=m("a-radio-button"),d=m("a-radio-group"),c=m("a-spin"),r=m("a-tag"),x=m("a-card");return p(),y("div",null,[a("div",F,[a("div",null,[t[3]||(t[3]=a("h2",{class:"page-title"},"技能管理",-1)),a("p",U,g(e.skillsStore.allSkills.length)+" 个可用技能",1)]),i(f,{type:"primary",ghost:"",loading:e.skillsStore.loading,onClick:t[0]||(t[0]=s=>e.skillsStore.loadSkills())},{icon:u(()=>[i(e.ReloadOutlined)]),default:u(()=>[t[4]||(t[4]=S(" 刷新 ",-1))]),_:1},8,["loading"])]),h(" Search & Filter "),a("div",T,[i(o,{value:e.skillsStore.searchQuery,"onUpdate:value":t[1]||(t[1]=s=>e.skillsStore.searchQuery=s),placeholder:"搜索技能名称或描述...",style:{width:"300px"},"allow-clear":""},null,8,["value"]),i(d,{value:e.skillsStore.selectedCategory,"onUpdate:value":t[2]||(t[2]=s=>e.skillsStore.selectedCategory=s),"button-style":"solid"},{default:u(()=>[i(l,{value:"all"},{default:u(()=>[...t[5]||(t[5]=[S("全部",-1)])]),_:1}),(p(!0),y(C,null,L(e.displayCategories,s=>(p(),R(l,{key:s,value:s},{default:u(()=>[S(g(e.catLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),h(" Loading State "),e.skillsStore.loading?(p(),y("div",D,[i(c,{size:"large"}),t[6]||(t[6]=a("div",{style:{color:"var(--text-muted)","margin-top":"12px"}},"加载技能中...",-1))])):e.skillsStore.filteredSkills.length?(p(),y(C,{key:1},[h(" Skills Grid "),a("div",G,[(p(!0),y(C,null,L(e.skillsStore.filteredSkills,s=>(p(),R(x,{key:s.name,class:"skill-card",size:"small",hoverable:"",style:{background:"var(--bg-card)","border-color":"var(--border-color)",cursor:"default"}},{default:u(()=>[a("div",J,[a("div",K,[a("div",W,g(s.name),1),a("div",Y,g(s.description||"暂无描述"),1)]),a("div",Z,[i(r,{color:e.modeColor(s.executionMode),style:{"font-size":"10px"}},{default:u(()=>[S(g(e.modeLabel(s.executionMode)),1)]),_:2},1032,["color"])])]),a("div",H,[i(f,{size:"small",type:"primary",ghost:"",onClick:ee=>e.runSkill(s.name)},{icon:u(()=>[i(e.PlayCircleOutlined)]),default:u(()=>[t[7]||(t[7]=S(" 运行 ",-1))]),_:1},8,["onClick"])])]),_:2},1024))),128))])],2112)):(p(),y(C,{key:2},[h(" Empty State "),a("div",X,[i(e.AppstoreOutlined,{style:{"font-size":"48px","margin-bottom":"16px",display:"block"}}),a("div",null,g(e.skillsStore.allSkills.length?"没有匹配的技能":"点击刷新加载技能列表"),1)])],2112))])}const ie=N(B,[["render",$],["__scopeId","data-v-d64d43f5"],["__file","/tmp/cc-web-panel-YdUQlr/repo/packages/web-panel/src/views/Skills.vue"]]);export{ie as default};
1
+ import{E as I,b as w,r as b,I as m,J as y,U as a,R as g,c as i,K as u,V as h,F as C,Z as L,N as O,o as M,P as p,Q as S,S as R}from"./vendor-BvqAck49.js";import{u as j,_ as E}from"./index-DH7suqAN.js";import{u as N}from"./useShellMode-CgR0wCYM.js";import{p as P}from"./parsers-UEvh_ShA.js";import{u as z}from"./chat-i7hUCh_C.js";import{a9 as Q,ap as V,R as q}from"./icons-DP3uiYxy.js";const A=I("skills",()=>{const _=b(!1),t=b([]),n=b(""),e=b("all"),k=w(()=>{const o=new Set(["all"]);return t.value.forEach(l=>{l.category&&o.add(l.category),l.executionMode&&o.add(l.executionMode)}),[...o]}),v=w(()=>{let o=t.value;if(e.value!=="all"&&(o=o.filter(l=>l.category===e.value||l.executionMode===e.value)),n.value){const l=n.value.toLowerCase();o=o.filter(d=>d.name?.toLowerCase().includes(l)||d.description?.toLowerCase().includes(l)||d.title?.toLowerCase().includes(l))}return o});async function f(){const o=j();_.value=!0;try{if(N().isEmbedded){const c=await o.sendRaw({type:"skill.list"},2e4);c?.ok&&Array.isArray(c.result?.skills)?t.value=c.result.skills:(console.error("skill.list custom topic failed:",c?.error),t.value=[]);return}const{output:l}=await o.execute("skill list",2e4),d=P(l);t.value=d}catch(l){console.error("Failed to load skills:",l)}finally{_.value=!1}}return{loading:_,allSkills:t,searchQuery:n,selectedCategory:e,categories:k,filteredSkills:v,loadSkills:f}}),B={__name:"Skills",setup(_,{expose:t}){t();const n=A(),e=z(),k=O(),v=w(()=>n.categories.filter(r=>r!=="all").slice(0,6));function f(r){return{"built-in":"内置","cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合",workspace:"工作区",marketplace:"市场"}[r]||r}function o(r){return{"cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合","built-in":"内置"}[r]||r||"未知"}function l(r){return{"cli-direct":"cyan",agent:"purple","llm-query":"blue",hybrid:"orange","built-in":"green"}[r]||"default"}async function d(r){await e.createSession("agent"),k.push("/chat"),setTimeout(()=>{e.currentSessionId&&e.sendMessage(e.currentSessionId,`/skill run ${r}`)},300)}M(()=>{n.allSkills.length||n.loadSkills()});const c={skillsStore:n,chatStore:e,router:k,displayCategories:v,catLabel:f,modeLabel:o,modeColor:l,runSkill:d,computed:w,onMounted:M,get useRouter(){return O},get ReloadOutlined(){return q},get PlayCircleOutlined(){return V},get AppstoreOutlined(){return Q},get useSkillsStore(){return A},get useChatStore(){return z}};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}},F={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},U={class:"page-sub"},G={style:{display:"flex",gap:"12px","margin-bottom":"20px","flex-wrap":"wrap"}},T={key:0,style:{"text-align":"center",padding:"60px"}},D={class:"skills-grid"},J={style:{display:"flex","justify-content":"space-between","align-items":"flex-start"}},K={style:{flex:"1","min-width":"0"}},W={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px","font-family":"monospace"}},Y={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Z={style:{"margin-left":"12px","flex-shrink":"0"}},H={style:{"margin-top":"10px",display:"flex","justify-content":"flex-end"}},X={style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}};function $(_,t,n,e,k,v){const f=m("a-button"),o=m("a-input-search"),l=m("a-radio-button"),d=m("a-radio-group"),c=m("a-spin"),r=m("a-tag"),x=m("a-card");return p(),y("div",null,[a("div",F,[a("div",null,[t[3]||(t[3]=a("h2",{class:"page-title"},"技能管理",-1)),a("p",U,g(e.skillsStore.allSkills.length)+" 个可用技能",1)]),i(f,{type:"primary",ghost:"",loading:e.skillsStore.loading,onClick:t[0]||(t[0]=s=>e.skillsStore.loadSkills())},{icon:u(()=>[i(e.ReloadOutlined)]),default:u(()=>[t[4]||(t[4]=S(" 刷新 ",-1))]),_:1},8,["loading"])]),h(" Search & Filter "),a("div",G,[i(o,{value:e.skillsStore.searchQuery,"onUpdate:value":t[1]||(t[1]=s=>e.skillsStore.searchQuery=s),placeholder:"搜索技能名称或描述...",style:{width:"300px"},"allow-clear":""},null,8,["value"]),i(d,{value:e.skillsStore.selectedCategory,"onUpdate:value":t[2]||(t[2]=s=>e.skillsStore.selectedCategory=s),"button-style":"solid"},{default:u(()=>[i(l,{value:"all"},{default:u(()=>[...t[5]||(t[5]=[S("全部",-1)])]),_:1}),(p(!0),y(C,null,L(e.displayCategories,s=>(p(),R(l,{key:s,value:s},{default:u(()=>[S(g(e.catLabel(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),h(" Loading State "),e.skillsStore.loading?(p(),y("div",T,[i(c,{size:"large"}),t[6]||(t[6]=a("div",{style:{color:"var(--text-muted)","margin-top":"12px"}},"加载技能中...",-1))])):e.skillsStore.filteredSkills.length?(p(),y(C,{key:1},[h(" Skills Grid "),a("div",D,[(p(!0),y(C,null,L(e.skillsStore.filteredSkills,s=>(p(),R(x,{key:s.name,class:"skill-card",size:"small",hoverable:"",style:{background:"var(--bg-card)","border-color":"var(--border-color)",cursor:"default"}},{default:u(()=>[a("div",J,[a("div",K,[a("div",W,g(s.name),1),a("div",Y,g(s.description||"暂无描述"),1)]),a("div",Z,[i(r,{color:e.modeColor(s.executionMode),style:{"font-size":"10px"}},{default:u(()=>[S(g(e.modeLabel(s.executionMode)),1)]),_:2},1032,["color"])])]),a("div",H,[i(f,{size:"small",type:"primary",ghost:"",onClick:ee=>e.runSkill(s.name)},{icon:u(()=>[i(e.PlayCircleOutlined)]),default:u(()=>[t[7]||(t[7]=S(" 运行 ",-1))]),_:1},8,["onClick"])])]),_:2},1024))),128))])],2112)):(p(),y(C,{key:2},[h(" Empty State "),a("div",X,[i(e.AppstoreOutlined,{style:{"font-size":"48px","margin-bottom":"16px",display:"block"}}),a("div",null,g(e.skillsStore.allSkills.length?"没有匹配的技能":"点击刷新加载技能列表"),1)])],2112))])}const ie=E(B,[["render",$],["__scopeId","data-v-d64d43f5"],["__file","/tmp/cc-web-panel-GijCQY/repo/packages/web-panel/src/views/Skills.vue"]]);export{ie as default};
@@ -1 +1 @@
1
- import{I as p,J as f,U as b,R as c,c as l,K as r,V as m,S as h,o as ve,a as ce,b as B,r as g,P as d,Q as y,F as O,Z as M,$ as at}from"./vendor-BvqAck49.js";import{_ as ot,u as pe,b as be,E as ge,d as k}from"./index-D9Sygqi9.js";import{s as Fe}from"./community-parser-CO25nZFt.js";import{aC as lt,am as rt,J as nt,f as it,aX as st,aY as ct,as as dt,R as ut}from"./icons-DP3uiYxy.js";function N(t){const o=Fe(t);if(!o)return null;try{return JSON.parse(o)}catch{}const i=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const Oe=Object.freeze(["gold","silver","bronze"]),Re=Object.freeze(["active","expired","terminated"]),de=Object.freeze(["availability","response_time","throughput","error_rate"]),ue=Object.freeze(["minor","moderate","major","critical"]),mt=Object.freeze(["open","acknowledged","resolved","waived"]);function v(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function K(t){if(!t)return{noDb:!1,error:""};const o=Fe(t),i=/Database not available/i.test(o);return{noDb:i,error:i?"Database not available":""}}function ft(t,o=0){if(!t||typeof t!="object")return null;const i=t.name||"";return i?{key:i,name:i,availability:v(t.availability,0),maxResponseTime:v(t.maxResponseTime,0),minThroughput:v(t.minThroughput,0),maxErrorRate:v(t.maxErrorRate,0),compensationRate:v(t.compensationRate,0),_idx:o}:null}function _e(t){const o=N(t);return Array.isArray(o)?o.map(ft).filter(Boolean):[]}function yt(t){const o={availability:0,maxResponseTime:0,minThroughput:0,maxErrorRate:0,compensationRate:0};return!t||typeof t!="object"||Array.isArray(t)?o:{availability:v(t.availability,0),maxResponseTime:v(t.maxResponseTime,0),minThroughput:v(t.minThroughput,0),maxErrorRate:v(t.maxErrorRate,0),compensationRate:v(t.compensationRate,0)}}function we(t,o=0){if(!t||typeof t!="object")return null;const i=t.slaId||t.sla_id||"";return i?{key:i,slaId:i,orgId:String(t.orgId??t.org_id??""),tier:String(t.tier||"").toLowerCase(),terms:yt(t.terms),monthlyFee:v(t.monthlyFee??t.monthly_fee,0),startDate:t.startDate??t.start_date??null,endDate:t.endDate??t.end_date??null,status:String(t.status||"active").toLowerCase(),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:o}:null}function ke(t){const o=N(t);return Array.isArray(o)?o.map(we).filter(Boolean):[]}function Ce(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?null:we(o,0)}function ze(t){return!t||typeof t!="object"?null:{count:v(t.count,0),mean:v(t.mean,0),min:v(t.min,0),max:v(t.max,0),p95:v(t.p95,0)}}function he(t){const o=N(t);if(!o||typeof o!="object"||Array.isArray(o))return{slaId:"",totalSamples:0,byTerm:{}};const i={};if(o.byTerm&&typeof o.byTerm=="object")for(const[e,_]of Object.entries(o.byTerm)){const T=ze(_);T&&(i[e]=T)}return{slaId:String(o.slaId||""),totalSamples:v(o.totalSamples,0),byTerm:i}}function Le(t,o=0){if(!t||typeof t!="object")return null;const i=t.violationId||t.violation_id||"";return i?{key:i,violationId:i,slaId:String(t.slaId??t.sla_id??""),term:String(t.term||"").toLowerCase(),severity:String(t.severity||"minor").toLowerCase(),expectedValue:v(t.expectedValue??t.expected_value,0),actualValue:v(t.actualValue??t.actual_value,0),deviationPercent:v(t.deviationPercent??t.deviation_percent,0),compensationAmount:typeof t.compensationAmount=="number"?t.compensationAmount:typeof t.compensation_amount=="number"?t.compensation_amount:null,occurredAt:t.occurredAt??t.occurred_at??null,resolvedAt:t.resolvedAt??t.resolved_at??null,v2Status:t.v2Status?String(t.v2Status).toLowerCase():"open",v2Note:t.v2Note??"",_idx:o}:null}function Se(t){const o=N(t);return Array.isArray(o)?o.map(Le).filter(Boolean):[]}function xe(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?{slaId:"",checkedAt:null,totalViolations:0,violations:[]}:{slaId:String(o.slaId||""),checkedAt:o.checkedAt??null,totalViolations:v(o.totalViolations,0),violations:Array.isArray(o.violations)?o.violations.map(Le).filter(Boolean):[]}}function Te(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?null:{violationId:String(o.violationId||""),slaId:String(o.slaId||""),severity:String(o.severity||""),base:v(o.base,0),multiplier:v(o.multiplier,0),amount:v(o.amount,0)}}const vt={slaId:"",tier:"",compliance:0,startDate:null,endDate:null,metricsByTerm:{},violations:{total:0,byTerm:{},bySeverity:{},totalCompensation:0}};function Ie(t){const o=JSON.parse(JSON.stringify(vt));for(const e of de)o.violations.byTerm[e]=0;for(const e of ue)o.violations.bySeverity[e]=0;const i=N(t);if(!i||typeof i!="object"||Array.isArray(i))return o;if(o.slaId=String(i.slaId||""),o.tier=String(i.tier||"").toLowerCase(),o.compliance=v(i.compliance,0),o.startDate=i.startDate??null,o.endDate=i.endDate??null,i.metricsByTerm&&typeof i.metricsByTerm=="object")for(const[e,_]of Object.entries(i.metricsByTerm)){const T=ze(_);T&&(o.metricsByTerm[e]=T)}if(i.violations&&typeof i.violations=="object"){if(o.violations.total=v(i.violations.total,0),o.violations.totalCompensation=v(i.violations.totalCompensation,0),i.violations.byTerm&&typeof i.violations.byTerm=="object")for(const[e,_]of Object.entries(i.violations.byTerm))typeof _=="number"&&Number.isFinite(_)&&(o.violations.byTerm[e]=_);if(i.violations.bySeverity&&typeof i.violations.bySeverity=="object")for(const[e,_]of Object.entries(i.violations.bySeverity))typeof _=="number"&&Number.isFinite(_)&&(o.violations.bySeverity[e]=_)}return o}const pt={totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}};function Ae(t){const o=JSON.parse(JSON.stringify(pt));for(const e of Re)o.byStatus[e]=0;for(const e of Oe)o.byTier[e]=0;for(const e of de)o.violations.byTerm[e]=0;for(const e of ue)o.violations.bySeverity[e]=0;for(const e of mt)o.violations.byStatus[e]=0;const i=N(t);if(!i||typeof i!="object"||Array.isArray(i))return o;if(o.totalContracts=v(i.totalContracts,0),o.activeContracts=v(i.activeContracts,0),o.activeOrgs=v(i.activeOrgs,0),o.maxActiveSlasPerOrg=v(i.maxActiveSlasPerOrg,0),i.byStatus&&typeof i.byStatus=="object")for(const[e,_]of Object.entries(i.byStatus))typeof _=="number"&&Number.isFinite(_)&&(o.byStatus[e]=_);if(i.byTier&&typeof i.byTier=="object")for(const[e,_]of Object.entries(i.byTier))typeof _=="number"&&Number.isFinite(_)&&(o.byTier[e]=_);if(i.violations&&typeof i.violations=="object"){o.violations.total=v(i.violations.total,0),o.violations.totalCompensation=v(i.violations.totalCompensation,0);for(const e of["byTerm","bySeverity","byStatus"])if(i.violations[e]&&typeof i.violations[e]=="object")for(const[_,T]of Object.entries(i.violations[e]))typeof T=="number"&&Number.isFinite(T)&&(o.violations[e][_]=T)}return o}function bt(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const gt={__name:"Sla",setup(t,{expose:o}){o();const i=pe(),{t:e}=be(),_=ge.PRESENTED_IMAGE_SIMPLE,T=g(!1),R=g(!1),X=g(!1),ee=g([]),z=g([]),I=g([]),A=g({totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}}),U=g({noDb:!1,error:""}),S=g("contracts"),j=g(""),P=g(""),Z=g(""),J=g(!1),Y=g(!1),D=g(!1),te=g(!1),ae=g(!1),E=g(!1),w=ce({orgId:"",tier:"silver",monthlyFee:1e3,durationDays:30}),F=ce({slaId:null,term:"availability",value:null}),L=g(null),q=g({slaId:"",totalSamples:0,byTerm:{}}),V=g(null),x=g(null),G=g(null),H=g(null),oe=B(()=>[{title:e("sla.contractCols.slaId"),key:"slaId",width:"120px"},{title:e("sla.contractCols.orgId"),key:"orgId",width:"160px"},{title:e("sla.contractCols.tier"),key:"tier",width:"90px"},{title:e("sla.contractCols.status"),key:"status",width:"100px"},{title:e("sla.contractCols.monthlyFee"),key:"monthlyFee",width:"110px"},{title:e("sla.contractCols.endDate"),key:"endDate",width:"160px"},{title:e("sla.contractCols.action"),key:"action",width:"260px"}]),le=B(()=>[{title:e("sla.violationCols.id"),key:"violationId",width:"120px"},{title:e("sla.violationCols.term"),key:"term",width:"140px"},{title:e("sla.violationCols.severity"),key:"severity",width:"100px"},{title:e("sla.violationCols.deviation"),key:"deviation",width:"180px"},{title:e("sla.violationCols.expected"),key:"expected",width:"110px"},{title:e("sla.violationCols.actual"),key:"actual",width:"110px"},{title:e("sla.violationCols.compensation"),key:"compensation",width:"110px"},{title:e("sla.violationCols.occurredAt"),key:"occurredAt",width:"160px"},{title:e("sla.violationCols.action"),key:"action",width:"120px"}]),re=B(()=>[{title:e("sla.aggCols.term"),key:"term",width:"140px"},{title:e("sla.aggCols.expected"),key:"expected",width:"110px"},{title:e("sla.aggCols.mean"),key:"mean",width:"110px"},{title:e("sla.aggCols.p95"),key:"p95",width:"110px"},{title:e("sla.aggCols.min"),key:"min",width:"110px"},{title:e("sla.aggCols.max"),key:"max",width:"110px"},{title:e("sla.aggCols.count"),key:"count",width:"90px"}]),a=B(()=>{let n=z.value;return j.value&&(n=n.filter(s=>s.tier===j.value)),P.value&&(n=n.filter(s=>s.status===P.value)),n}),u=B(()=>{let n=I.value;return Z.value&&(n=n.filter(s=>s.severity===Z.value)),n}),W=B(()=>L.value?Object.entries(q.value.byTerm).map(([n,s])=>({key:n,term:n,expected:ne(L.value.terms,n),...s})):[]),Ee=B(()=>!x.value||!L.value?[]:Object.entries(x.value.metricsByTerm).map(([n,s])=>({key:n,term:n,expected:ne(L.value.terms,n),...s})));function ne(n,s){if(!n)return 0;switch(s){case"availability":return n.availability;case"response_time":return n.maxResponseTime;case"throughput":return n.minThroughput;case"error_rate":return n.maxErrorRate;default:return 0}}function Ve(n){return{gold:"gold",silver:"default",bronze:"orange"}[n]||"default"}function Me(n){return{gold:"#faad14",silver:"#8c8c8c",bronze:"#d4a373"}[n]||"#888"}function je(n){const s=`sla.statusLabels.${n}`,C=e(s);return C===s?n:C}function De(n){return{active:"green",expired:"default",terminated:"red"}[n]||"default"}function Ne(n){return{active:"#52c41a",expired:"#888",terminated:"#ff4d4f"}[n]||"#888"}function Ue(n){const s=`sla.termLabels.${n}`,C=e(s);return C===s?n:C}function Be(n){if(!n)return"";const s=`sla.termHints.${n}`,C=e(s);return C===s?"":C}function Pe(n,s){return typeof s!="number"||!Number.isFinite(s)?"—":n==="availability"||n==="error_rate"?(s*100).toFixed(3)+"%":n==="response_time"?s.toFixed(1)+"ms":n==="throughput"?s.toFixed(0)+" rps":s.toFixed(4)}function Je(n){const s=`sla.severityLabels.${n}`,C=e(s);return C===s?n:C}function qe(n){return{minor:"default",moderate:"gold",major:"orange",critical:"red"}[n]||"default"}function He(n){return{minor:"#888",moderate:"#faad14",major:"#fa8c16",critical:"#ff4d4f"}[n]||"#888"}function We(n){return n>=.99?"#52c41a":n>=.9?"#1677ff":n>=.7?"#faad14":"#ff4d4f"}function Ke(n,s){return s?Math.round(n/s*100):0}async function Q(){T.value=!0,U.value={noDb:!1,error:""};try{const[n,s,C,ie]=await Promise.all([i.execute("sla tiers --json",8e3).catch(()=>({output:""})),i.execute("sla list --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("sla violations --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("sla stats-v2",8e3).catch(()=>({output:""}))]),$=[s,C,ie].map(se=>K(se.output)).find(se=>se.noDb);$&&(U.value=$),ee.value=_e(n.output),z.value=ke(s.output),I.value=Se(C.output),A.value=Ae(ie.output)}catch(n){k.error(e("sla.msg.loadFailed")+": "+(n?.message||n))}finally{T.value=!1}}async function Ye(){if(!w.orgId.trim()){k.warning(e("sla.msg.orgEmpty"));return}R.value=!0;try{const n=w.durationDays*24*60*60*1e3,s=[`sla create "${w.orgId.trim().replace(/"/g,'\\"')}"`,`-t ${w.tier}`,`-d ${n}`,`-f ${w.monthlyFee||0}`,"--json"],{output:C}=await i.execute(s.join(" "),1e4);if(K(C).noDb){k.error(e("sla.msg.needCcInit"));return}const $=Ce(C);if(!$){k.error(e("sla.msg.createFailed")+": "+C.slice(0,120));return}k.success(e("sla.msg.createSuccess",{id:$.slaId.slice(0,8)})),J.value=!1,me(),await Q()}catch(n){k.error(e("sla.msg.createFailed")+": "+(n?.message||n))}finally{R.value=!1}}async function Ge(){if(!F.slaId){k.warning(e("sla.msg.slaEmpty"));return}if(F.value===null||F.value===void 0){k.warning(e("sla.msg.valueEmpty"));return}X.value=!0;try{const{output:n}=await i.execute(`sla record ${F.slaId} ${F.term} ${F.value} --json`,8e3);if(K(n).noDb){k.error(e("sla.msg.needCcInit"));return}if(!/"metricId"|"term"/.test(n)){k.error(e("sla.msg.recordFailed")+": "+n.slice(0,120));return}k.success(e("sla.msg.recordSuccess")),Y.value=!1,fe()}catch(n){k.error(e("sla.msg.recordFailed")+": "+(n?.message||n))}finally{X.value=!1}}async function Qe(n){try{const{output:s}=await i.execute(`sla terminate ${n.slaId}`,8e3);if(K(s).noDb){k.error(e("sla.msg.needCcInit"));return}if(/Failed/i.test(s)&&!/terminated/i.test(s)){k.error(e("sla.msg.terminateFailed")+": "+s.slice(0,120));return}k.success(e("sla.msg.terminateSuccess")),await Q()}catch(s){k.error(e("sla.msg.terminateFailed")+": "+(s?.message||s))}}async function Xe(n){L.value=n,q.value={slaId:"",totalSamples:0,byTerm:{}},D.value=!0;try{const{output:s}=await i.execute(`sla metrics ${n.slaId} --json`,8e3);q.value=he(s)}catch(s){k.error(e("sla.msg.loadMetricsFailed")+": "+(s?.message||s))}}async function Ze(n){L.value=n,V.value=null,te.value=!0;try{const{output:s}=await i.execute(`sla check ${n.slaId} --json`,1e4);if(K(s).noDb){k.error(e("sla.msg.needCcInit"));return}V.value=xe(s),V.value.totalViolations>0&&await Q()}catch(s){k.error(e("sla.msg.checkFailed")+": "+(s?.message||s))}}async function $e(n){L.value=n,x.value=null,ae.value=!0;try{const{output:s}=await i.execute(`sla report ${n.slaId} --json`,1e4);x.value=Ie(s)}catch(s){k.error(e("sla.msg.loadReportFailed")+": "+(s?.message||s))}}async function et(n){G.value=n,H.value=null;try{const{output:s}=await i.execute(`sla compensate ${n.violationId} --json`,8e3);if(K(s).noDb){k.error(e("sla.msg.needCcInit"));return}if(H.value=Te(s),!H.value){k.error(e("sla.msg.compFailed")+": "+s.slice(0,120));return}E.value=!0,await Q()}catch(s){k.error(e("sla.msg.compFailed")+": "+(s?.message||s))}}function tt(n){G.value=n,H.value={violationId:n.violationId,slaId:n.slaId,severity:n.severity,base:0,multiplier:0,amount:n.compensationAmount||0},E.value=!0}function me(){w.orgId="",w.tier="silver",w.monthlyFee=1e3,w.durationDays=30}function fe(){F.slaId=null,F.term="availability",F.value=null}ve(Q);const ye={ws:i,t:e,EMPTY_IMG:_,loading:T,creating:R,recording:X,tiers:ee,contracts:z,violations:I,stats:A,errorState:U,activeTab:S,tierFilter:j,statusFilter:P,severityFilter:Z,showCreateModal:J,showRecordModal:Y,showMetricsModal:D,showCheckModal:te,showReportModal:ae,showCompensationModal:E,createForm:w,recordForm:F,currentContract:L,currentMetrics:q,currentCheck:V,currentReport:x,currentViolation:G,currentCompensation:H,contractColumns:oe,violationColumns:le,aggColumns:re,filteredContracts:a,filteredViolations:u,aggDataSource:W,reportAggDataSource:Ee,expectedFor:ne,tierColor:Ve,tierBarColor:Me,statusLabel:je,statusColor:De,statusBarColor:Ne,termLabel:Ue,termHint:Be,formatTermValue:Pe,severityLabel:Je,severityColor:qe,severityBarColor:He,complianceColor:We,pctOfTotal:Ke,loadAll:Q,submitCreate:Ye,submitRecord:Ge,terminateContract:Qe,viewMetrics:Xe,checkContract:Ze,viewReport:$e,computeCompensation:et,viewCompensation:tt,resetCreateForm:me,resetRecordForm:fe,ref:g,computed:B,onMounted:ve,reactive:ce,get ReloadOutlined(){return ut},get PlusOutlined(){return dt},get LineChartOutlined(){return ct},get FileProtectOutlined(){return st},get CheckCircleOutlined(){return it},get TeamOutlined(){return nt},get WarningOutlined(){return rt},get DollarOutlined(){return lt},get message(){return k},get Empty(){return ge},get useI18n(){return be},get useWsStore(){return pe},get parseTiers(){return _e},get parseContracts(){return ke},get parseMetrics(){return he},get parseViolations(){return Se},get parseCheckResult(){return xe},get parseCompensation(){return Te},get parseReport(){return Ie},get parseStatsV2(){return Ae},get parseContract(){return Ce},get detectSlaError(){return K},get formatSlaTime(){return bt},get SLA_TIER_NAMES(){return Oe},get SLA_STATUSES(){return Re},get SLA_TERMS_LIST(){return de},get VIOLATION_SEVERITIES(){return ue}};return Object.defineProperty(ye,"__isScriptSetup",{enumerable:!1,value:!0}),ye}},_t={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},kt={class:"page-title"},Ct={class:"page-sub"},ht={class:"tier-head"},St={class:"tier-comp"},xt={class:"tier-terms"},Tt={class:"tier-term"},It={class:"tier-term"},At={class:"tier-term"},Ft={class:"tier-term"},Ot={class:"filter-bar"},Rt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},wt={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},zt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Lt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Et={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Vt={class:"filter-bar"},Mt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},jt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Dt={key:5,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Nt={key:0,style:{color:"#faad14","font-weight":"500"}},Ut={key:1,style:{color:"var(--text-muted)"}},Bt={key:7,style:{color:"var(--text-secondary)","font-size":"11px"}},Pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Jt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},qt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},Ht={key:0,style:{"padding-top":"8px"}},Wt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 10px"}},Kt={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Yt={key:2,style:{"font-family":"monospace","font-size":"12px"}},Gt={key:0,style:{"padding-top":"8px"}},Qt={style:{"margin-left":"8px","font-family":"monospace","font-size":"12px"}},Xt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Zt={style:{"margin-left":"auto",color:"#ff4d4f","font-weight":"500"}},$t={key:0,style:{"padding-top":"8px"}},ea={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},ta={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},aa={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},oa={key:2,style:{"font-family":"monospace","font-size":"12px"}},la={key:0,style:{"padding-top":"8px"}},ra={style:{"font-family":"monospace","font-size":"12px"}},na={style:{"font-family":"monospace"}},ia={style:{"font-family":"monospace"}},sa={style:{color:"#faad14","font-weight":"600","font-family":"monospace","font-size":"14px"}};function ca(t,o,i,e,_,T){const R=p("a-button"),X=p("a-space"),ee=p("a-alert"),z=p("a-statistic"),I=p("a-card"),A=p("a-col"),U=p("a-row"),S=p("a-tag"),j=p("a-radio-button"),P=p("a-radio-group"),Z=p("a-popconfirm"),J=p("a-table"),Y=p("a-tab-pane"),D=p("a-progress"),te=p("a-tabs"),ae=p("a-input"),E=p("a-form-item"),w=p("a-select-option"),F=p("a-select"),L=p("a-input-number"),q=p("a-form"),V=p("a-modal"),x=p("a-descriptions-item"),G=p("a-descriptions"),H=p("a-empty"),oe=p("a-result"),le=p("a-list-item"),re=p("a-list");return d(),f("div",null,[b("div",_t,[b("div",null,[b("h2",kt,c(t.$t("sla.title")),1),b("p",Ct,c(t.$t("sla.subtitle")),1)]),l(X,null,{default:r(()=>[l(R,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[l(e.ReloadOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.refresh")),1)]),_:1},8,["loading"]),l(R,{onClick:o[0]||(o[0]=a=>e.showRecordModal=!0)},{icon:r(()=>[l(e.LineChartOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.recordMetric")),1)]),_:1}),l(R,{type:"primary",onClick:o[1]||(o[1]=a=>e.showCreateModal=!0)},{icon:r(()=>[l(e.PlusOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.create")),1)]),_:1})]),_:1})]),m(" noDb banner "),e.errorState.noDb?(d(),h(ee,{key:0,type:"info","show-icon":"",message:t.$t("sla.noDb.message"),description:t.$t("sla.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):m("v-if",!0),m(" Stat cards "),l(U,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.totalContracts"),value:e.stats.totalContracts,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[l(e.FileProtectOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.active"),value:e.stats.activeContracts,"value-style":{color:e.stats.activeContracts>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:r(()=>[l(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.orgs"),value:e.stats.activeOrgs,"value-style":{color:"#722ed1",fontSize:"20px"},suffix:e.stats.maxActiveSlasPerOrg?`· cap=${e.stats.maxActiveSlasPerOrg}`:""},{prefix:r(()=>[l(e.TeamOutlined)]),_:1},8,["title","value","suffix"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.violations"),value:e.stats.violations.total,"value-style":{color:e.stats.violations.total>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:r(()=>[l(e.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:24,sm:8,lg:4},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.compensation"),value:e.stats.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.DollarOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),m(" Tier catalogue "),l(I,{title:t.$t("sla.tierCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:r(()=>[l(U,{gutter:[12,12]},{default:r(()=>[(d(!0),f(O,null,M(e.tiers,a=>(d(),h(A,{key:a.name,xs:24,sm:8},{default:r(()=>[b("div",{class:"tier-pill",style:at({borderLeftColor:e.tierBarColor(a.name)})},[b("div",ht,[l(S,{color:e.tierColor(a.name),style:{"font-family":"monospace","font-size":"13px"}},{default:r(()=>[y(c(a.name.toUpperCase()),1)]),_:2},1032,["color"]),b("span",St,c(t.$t("sla.tierCompRate",{pct:(a.compensationRate*100).toFixed(1)})),1)]),b("div",xt,[b("span",Tt,c(t.$t("sla.tierTerms.availability",{pct:(a.availability*100).toFixed(2)})),1),b("span",It,c(t.$t("sla.tierTerms.p95",{ms:a.maxResponseTime})),1),b("span",At,c(t.$t("sla.tierTerms.rps",{n:a.minThroughput})),1),b("span",Ft,c(t.$t("sla.tierTerms.errorRate",{pct:(a.maxErrorRate*100).toFixed(2)})),1)])],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),m(" Tabs "),l(te,{activeKey:e.activeTab,"onUpdate:activeKey":o[5]||(o[5]=a=>e.activeTab=a),class:"sla-tabs"},{default:r(()=>[m(" ── Contracts tab ────────────────────────────────────── "),l(Y,{key:"contracts",tab:t.$t("sla.tabs.contracts")},{default:r(()=>[b("div",Ot,[l(P,{value:e.tierFilter,"onUpdate:value":o[2]||(o[2]=a=>e.tierFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(j,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allTiers")),1)]),_:1}),(d(!0),f(O,null,M(e.SLA_TIER_NAMES,a=>(d(),h(j,{key:a,value:a},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(P,{value:e.statusFilter,"onUpdate:value":o[3]||(o[3]=a=>e.statusFilter=a),size:"small"},{default:r(()=>[l(j,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allStatuses")),1)]),_:1}),(d(!0),f(O,null,M(e.SLA_STATUSES,a=>(d(),h(j,{key:a,value:a},{default:r(()=>[y(c(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(J,{columns:e.contractColumns,"data-source":e.filteredContracts,pagination:{pageSize:20,showTotal:a=>t.$t("sla.table.contractsSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="slaId"?(d(),f("span",Rt,c(u.slaId.slice(0,12)),1)):m("v-if",!0),a.key==="orgId"?(d(),f("span",wt,c(u.orgId),1)):m("v-if",!0),a.key==="tier"?(d(),h(S,{key:2,color:e.tierColor(u.tier),style:{"font-family":"monospace"}},{default:r(()=>[y(c(u.tier.toUpperCase()),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="status"?(d(),h(S,{key:3,color:e.statusColor(u.status)},{default:r(()=>[y(c(e.statusLabel(u.status)),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="monthlyFee"?(d(),f("span",zt,c(u.monthlyFee.toFixed(2)),1)):m("v-if",!0),a.key==="endDate"?(d(),f("span",Lt,c(e.formatSlaTime(u.endDate)),1)):m("v-if",!0),a.key==="action"?(d(),f(O,{key:6},[l(R,{size:"small",type:"link",onClick:W=>e.viewMetrics(u)},{default:r(()=>[y(c(t.$t("sla.table.actionMetrics")),1)]),_:1},8,["onClick"]),l(R,{size:"small",type:"link",onClick:W=>e.checkContract(u)},{default:r(()=>[y(c(t.$t("sla.table.actionCheck")),1)]),_:1},8,["onClick"]),l(R,{size:"small",type:"link",onClick:W=>e.viewReport(u)},{default:r(()=>[y(c(t.$t("sla.table.actionReport")),1)]),_:1},8,["onClick"]),u.status==="active"?(d(),h(Z,{key:0,title:t.$t("sla.terminateConfirm.title"),"ok-text":t.$t("sla.terminateConfirm.ok"),"cancel-text":t.$t("sla.terminateConfirm.cancel"),onConfirm:W=>e.terminateContract(u)},{default:r(()=>[l(R,{size:"small",type:"link",danger:""},{default:r(()=>[y(c(t.$t("sla.terminateConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):m("v-if",!0)],64)):m("v-if",!0)]),emptyText:r(()=>[b("div",Et,[l(e.FileProtectOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+c(e.tierFilter||e.statusFilter?t.$t("sla.table.emptyContractsFiltered"):t.$t("sla.table.emptyContracts")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── Violations tab ───────────────────────────────────── "),l(Y,{key:"violations",tab:t.$t("sla.tabs.violations")},{default:r(()=>[b("div",Vt,[l(P,{value:e.severityFilter,"onUpdate:value":o[4]||(o[4]=a=>e.severityFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(j,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allSeverities")),1)]),_:1}),(d(!0),f(O,null,M(e.VIOLATION_SEVERITIES,a=>(d(),h(j,{key:a,value:a},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(J,{columns:e.violationColumns,"data-source":e.filteredViolations,pagination:{pageSize:20,showTotal:a=>t.$t("sla.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="violationId"?(d(),f("span",Mt,c(u.violationId.slice(0,12)),1)):m("v-if",!0),a.key==="term"?(d(),h(S,{key:1,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="severity"?(d(),h(S,{key:2,color:e.severityColor(u.severity)},{default:r(()=>[y(c(e.severityLabel(u.severity)),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="deviation"?(d(),h(D,{key:3,percent:Math.min(100,Math.round(u.deviationPercent)),"stroke-color":e.severityBarColor(u.severity),size:"small",format:()=>`${u.deviationPercent.toFixed(1)}%`},null,8,["percent","stroke-color","format"])):m("v-if",!0),a.key==="expected"?(d(),f("span",jt,c(e.formatTermValue(u.term,u.expectedValue)),1)):m("v-if",!0),a.key==="actual"?(d(),f("span",Dt,c(e.formatTermValue(u.term,u.actualValue)),1)):m("v-if",!0),a.key==="compensation"?(d(),f(O,{key:6},[u.compensationAmount!==null?(d(),f("span",Nt,c(u.compensationAmount.toFixed(2)),1)):(d(),f("span",Ut,c(t.$t("sla.table.uncomputed")),1))],64)):m("v-if",!0),a.key==="occurredAt"?(d(),f("span",Bt,c(e.formatSlaTime(u.occurredAt)),1)):m("v-if",!0),a.key==="action"?(d(),f(O,{key:8},[u.compensationAmount===null?(d(),h(R,{key:0,size:"small",type:"link",onClick:W=>e.computeCompensation(u)},{default:r(()=>[y(c(t.$t("sla.table.actionComputeComp")),1)]),_:1},8,["onClick"])):(d(),h(R,{key:1,size:"small",type:"link",onClick:W=>e.viewCompensation(u)},{default:r(()=>[y(c(t.$t("sla.table.actionView")),1)]),_:1},8,["onClick"]))],64)):m("v-if",!0)]),emptyText:r(()=>[b("div",Pt,[l(e.CheckCircleOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block",color:"#52c41a"}}),y(" "+c(e.severityFilter?t.$t("sla.table.emptyViolationsFiltered"):t.$t("sla.table.emptyViolations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── Breakdown tab ────────────────────────────────────── "),l(Y,{key:"breakdown",tab:t.$t("sla.tabs.breakdown")},{default:r(()=>[l(U,{gutter:[16,16]},{default:r(()=>[l(A,{xs:24,lg:12},{default:r(()=>[l(I,{title:t.$t("sla.breakdown.contractsByStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_STATUSES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.statusColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.statusLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.byStatus[a]||0,e.stats.totalContracts),"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"]),l(I,{title:t.$t("sla.breakdown.contractsByTier"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TIER_NAMES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.tierColor(a),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.byTier[a]||0,e.stats.totalContracts),"stroke-color":e.tierBarColor(a),format:()=>`${e.stats.byTier[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),l(A,{xs:24,lg:12},{default:r(()=>[l(I,{title:t.$t("sla.breakdown.violationsBySeverity"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:r(()=>[(d(!0),f(O,null,M(e.VIOLATION_SEVERITIES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.severityColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.violations.bySeverity[a]||0,e.stats.violations.total),"stroke-color":e.severityBarColor(a),format:()=>`${e.stats.violations.bySeverity[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"]),l(I,{title:t.$t("sla.breakdown.violationsByTerm"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TERMS_LIST,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:"default",style:{"min-width":"110px","text-align":"center","font-family":"monospace","font-size":"11px"}},{default:r(()=>[y(c(e.termLabel(a)),1)]),_:2},1024),l(D,{percent:e.pctOfTotal(e.stats.violations.byTerm[a]||0,e.stats.violations.total),"stroke-color":"#fa8c16",format:()=>`${e.stats.violations.byTerm[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),m(" ── Create contract modal ──────────────────────────────── "),l(V,{open:e.showCreateModal,"onUpdate:open":o[10]||(o[10]=a=>e.showCreateModal=a),title:t.$t("sla.create_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("sla.create_modal.ok"),"cancel-text":t.$t("sla.create_modal.cancel"),onOk:e.submitCreate,onCancel:e.resetCreateForm},{default:r(()=>[l(q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(E,{label:t.$t("sla.create_modal.orgLabel"),required:""},{default:r(()=>[l(ae,{value:e.createForm.orgId,"onUpdate:value":o[6]||(o[6]=a=>e.createForm.orgId=a),placeholder:t.$t("sla.create_modal.orgPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.tierLabel"),required:""},{default:r(()=>[l(F,{value:e.createForm.tier,"onUpdate:value":o[7]||(o[7]=a=>e.createForm.tier=a)},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TIER_NAMES,a=>(d(),h(w,{key:a,value:a},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.feeLabel")},{default:r(()=>[l(L,{value:e.createForm.monthlyFee,"onUpdate:value":o[8]||(o[8]=a=>e.createForm.monthlyFee=a),min:0,step:100,style:{width:"160px"}},null,8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.durationLabel")},{default:r(()=>[l(L,{value:e.createForm.durationDays,"onUpdate:value":o[9]||(o[9]=a=>e.createForm.durationDays=a),min:1,step:30,style:{width:"160px"}},null,8,["value"]),b("span",Jt,c(t.$t("sla.create_modal.durationHint")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Record metric modal ────────────────────────────────── "),l(V,{open:e.showRecordModal,"onUpdate:open":o[14]||(o[14]=a=>e.showRecordModal=a),title:t.$t("sla.record_modal.title"),"confirm-loading":e.recording,width:540,"ok-text":t.$t("sla.record_modal.ok"),"cancel-text":t.$t("sla.record_modal.cancel"),onOk:e.submitRecord,onCancel:e.resetRecordForm},{default:r(()=>[l(q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(E,{label:t.$t("sla.record_modal.slaLabel"),required:""},{default:r(()=>[l(F,{value:e.recordForm.slaId,"onUpdate:value":o[11]||(o[11]=a=>e.recordForm.slaId=a),placeholder:t.$t("sla.record_modal.slaPlaceholder"),options:e.contracts.map(a=>({value:a.slaId,label:`${a.slaId.slice(0,8)} · ${a.orgId} [${a.tier}]`})),"show-search":""},null,8,["value","placeholder","options"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.record_modal.termLabel"),required:""},{default:r(()=>[l(F,{value:e.recordForm.term,"onUpdate:value":o[12]||(o[12]=a=>e.recordForm.term=a)},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TERMS_LIST,a=>(d(),h(w,{key:a,value:a},{default:r(()=>[y(c(e.termLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.record_modal.valueLabel"),required:""},{default:r(()=>[l(L,{value:e.recordForm.value,"onUpdate:value":o[13]||(o[13]=a=>e.recordForm.value=a),step:.01,style:{width:"200px"}},null,8,["value"]),b("div",qt,c(e.termHint(e.recordForm.term)),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Metrics modal ──────────────────────────────────────── "),l(V,{open:e.showMetricsModal,"onUpdate:open":o[15]||(o[15]=a=>e.showMetricsModal=a),title:t.$t("sla.metrics_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:r(()=>[e.currentContract?(d(),f("div",Ht,[l(G,{column:2,size:"small",bordered:""},{default:r(()=>[l(x,{label:t.$t("sla.metrics_modal.org")},{default:r(()=>[y(c(e.currentContract.orgId),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.tier")},{default:r(()=>[l(S,{color:e.tierColor(e.currentContract.tier)},{default:r(()=>[y(c(e.currentContract.tier.toUpperCase()),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.samples")},{default:r(()=>[y(c(e.currentMetrics.totalSamples),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.monthlyFee")},{default:r(()=>[y(c(e.currentContract.monthlyFee.toFixed(2)),1)]),_:1},8,["label"])]),_:1}),b("h4",Wt,c(t.$t("sla.metrics_modal.byTerm")),1),Object.keys(e.currentMetrics.byTerm).length?(d(),h(J,{key:1,columns:e.aggColumns,"data-source":e.aggDataSource,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="term"?(d(),h(S,{key:0,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="expected"?(d(),f("span",Kt,c(e.formatTermValue(u.term,u.expected)),1)):["mean","p95","min","max"].includes(a.key)?(d(),f("span",Yt,c(e.formatTermValue(u.term,u[a.key])),1)):m("v-if",!0)]),_:1},8,["columns","data-source"])):(d(),h(H,{key:0,description:t.$t("sla.metrics_modal.empty"),image:e.EMPTY_IMG},null,8,["description","image"]))])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Check result modal ─────────────────────────────────── "),l(V,{open:e.showCheckModal,"onUpdate:open":o[16]||(o[16]=a=>e.showCheckModal=a),title:t.$t("sla.check_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:r(()=>[e.currentCheck?(d(),f("div",Gt,[l(oe,{status:e.currentCheck.totalViolations===0?"success":"warning",title:e.currentCheck.totalViolations===0?t.$t("sla.check_modal.noViolations"):t.$t("sla.check_modal.withViolations",{n:e.currentCheck.totalViolations}),"sub-title":t.$t("sla.check_modal.checkedAt",{time:e.formatSlaTime(e.currentCheck.checkedAt)})},null,8,["status","title","sub-title"]),e.currentCheck.totalViolations>0?(d(),h(re,{key:0,size:"small","data-source":e.currentCheck.violations},{renderItem:r(({item:a})=>[l(le,null,{default:r(()=>[l(S,{color:e.severityColor(a.severity),style:{"min-width":"50px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a.severity)),1)]),_:2},1032,["color"]),b("span",Qt,c(e.termLabel(a.term)),1),b("span",Xt,c(t.$t("sla.check_modal.expectedActual",{expected:e.formatTermValue(a.term,a.expectedValue),actual:e.formatTermValue(a.term,a.actualValue)})),1),b("span",Zt,c(a.deviationPercent.toFixed(2))+"%",1)]),_:2},1024)]),_:1},8,["data-source"])):m("v-if",!0)])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Report modal ───────────────────────────────────────── "),l(V,{open:e.showReportModal,"onUpdate:open":o[17]||(o[17]=a=>e.showReportModal=a),title:t.$t("sla.report_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:720,footer:null},{default:r(()=>[e.currentReport?(d(),f("div",$t,[l(U,{gutter:12,style:{"margin-bottom":"16px"}},{default:r(()=>[l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.compliance"),value:e.currentReport.compliance*100,suffix:"%",precision:2,"value-style":{color:e.complianceColor(e.currentReport.compliance),fontSize:"20px"}},null,8,["title","value","value-style"])]),_:1}),l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.violations"),value:e.currentReport.violations.total,"value-style":{color:"#ff4d4f",fontSize:"20px"}},null,8,["title","value"])]),_:1}),l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.compensation"),value:e.currentReport.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),b("h4",ea,c(t.$t("sla.breakdown.violationsBySeverityHeader")),1),(d(!0),f(O,null,M(e.VIOLATION_SEVERITIES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.severityColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.currentReport.violations.bySeverity[a]||0,e.currentReport.violations.total),"stroke-color":e.severityBarColor(a),format:()=>`${e.currentReport.violations.bySeverity[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),Object.keys(e.currentReport.metricsByTerm).length?(d(),f("h4",ta,c(t.$t("sla.breakdown.metricsAggregation")),1)):m("v-if",!0),Object.keys(e.currentReport.metricsByTerm).length?(d(),h(J,{key:1,columns:e.aggColumns,"data-source":e.reportAggDataSource,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="term"?(d(),h(S,{key:0,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="expected"?(d(),f("span",aa,c(e.formatTermValue(u.term,u.expected)),1)):["mean","p95","min","max"].includes(a.key)?(d(),f("span",oa,c(e.formatTermValue(u.term,u[a.key])),1)):m("v-if",!0)]),_:1},8,["columns","data-source"])):m("v-if",!0)])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Compensation modal ─────────────────────────────────── "),l(V,{open:e.showCompensationModal,"onUpdate:open":o[18]||(o[18]=a=>e.showCompensationModal=a),title:t.$t("sla.compensation_modal.title",{id:e.currentViolation?.violationId?.slice(0,12)||""}),width:540,footer:null},{default:r(()=>[e.currentCompensation?(d(),f("div",la,[l(G,{column:2,size:"small",bordered:""},{default:r(()=>[l(x,{label:t.$t("sla.compensation_modal.violationId"),span:2},{default:r(()=>[b("span",ra,c(e.currentCompensation.violationId),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.severity")},{default:r(()=>[l(S,{color:e.severityColor(e.currentCompensation.severity)},{default:r(()=>[y(c(e.severityLabel(e.currentCompensation.severity)),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.base")},{default:r(()=>[b("span",na,c(e.currentCompensation.base.toFixed(4)),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.multiplier")},{default:r(()=>[b("span",ia,"×"+c(e.currentCompensation.multiplier.toFixed(2)),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.amount")},{default:r(()=>[b("span",sa,c(e.currentCompensation.amount.toFixed(2)),1)]),_:1},8,["label"])]),_:1})])):m("v-if",!0)]),_:1},8,["open","title"])])}const ya=ot(gt,[["render",ca],["__scopeId","data-v-76f93f7e"],["__file","/tmp/cc-web-panel-YdUQlr/repo/packages/web-panel/src/views/Sla.vue"]]);export{ya as default};
1
+ import{I as p,J as f,U as b,R as c,c as l,K as r,V as m,S as h,o as ve,a as ce,b as U,r as g,P as d,Q as y,F as O,Z as j,$ as at}from"./vendor-BvqAck49.js";import{_ as ot,u as pe,b as be,E as ge,d as k}from"./index-DH7suqAN.js";import{s as Fe}from"./community-parser-CO25nZFt.js";import{aC as lt,am as rt,J as nt,f as it,aX as st,aY as ct,as as dt,R as ut}from"./icons-DP3uiYxy.js";function N(t){const o=Fe(t);if(!o)return null;try{return JSON.parse(o)}catch{}const i=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const Oe=Object.freeze(["gold","silver","bronze"]),Re=Object.freeze(["active","expired","terminated"]),de=Object.freeze(["availability","response_time","throughput","error_rate"]),ue=Object.freeze(["minor","moderate","major","critical"]),mt=Object.freeze(["open","acknowledged","resolved","waived"]);function v(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function G(t){if(!t)return{noDb:!1,error:""};const o=Fe(t),i=/Database not available/i.test(o);return{noDb:i,error:i?"Database not available":""}}function ft(t,o=0){if(!t||typeof t!="object")return null;const i=t.name||"";return i?{key:i,name:i,availability:v(t.availability,0),maxResponseTime:v(t.maxResponseTime,0),minThroughput:v(t.minThroughput,0),maxErrorRate:v(t.maxErrorRate,0),compensationRate:v(t.compensationRate,0),_idx:o}:null}function _e(t){const o=N(t);return Array.isArray(o)?o.map(ft).filter(Boolean):[]}function yt(t){const o={availability:0,maxResponseTime:0,minThroughput:0,maxErrorRate:0,compensationRate:0};return!t||typeof t!="object"||Array.isArray(t)?o:{availability:v(t.availability,0),maxResponseTime:v(t.maxResponseTime,0),minThroughput:v(t.minThroughput,0),maxErrorRate:v(t.maxErrorRate,0),compensationRate:v(t.compensationRate,0)}}function we(t,o=0){if(!t||typeof t!="object")return null;const i=t.slaId||t.sla_id||"";return i?{key:i,slaId:i,orgId:String(t.orgId??t.org_id??""),tier:String(t.tier||"").toLowerCase(),terms:yt(t.terms),monthlyFee:v(t.monthlyFee??t.monthly_fee,0),startDate:t.startDate??t.start_date??null,endDate:t.endDate??t.end_date??null,status:String(t.status||"active").toLowerCase(),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:o}:null}function ke(t){const o=N(t);return Array.isArray(o)?o.map(we).filter(Boolean):[]}function Ce(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?null:we(o,0)}function ze(t){return!t||typeof t!="object"?null:{count:v(t.count,0),mean:v(t.mean,0),min:v(t.min,0),max:v(t.max,0),p95:v(t.p95,0)}}function he(t){const o=N(t);if(!o||typeof o!="object"||Array.isArray(o))return{slaId:"",totalSamples:0,byTerm:{}};const i={};if(o.byTerm&&typeof o.byTerm=="object")for(const[e,_]of Object.entries(o.byTerm)){const T=ze(_);T&&(i[e]=T)}return{slaId:String(o.slaId||""),totalSamples:v(o.totalSamples,0),byTerm:i}}function Le(t,o=0){if(!t||typeof t!="object")return null;const i=t.violationId||t.violation_id||"";return i?{key:i,violationId:i,slaId:String(t.slaId??t.sla_id??""),term:String(t.term||"").toLowerCase(),severity:String(t.severity||"minor").toLowerCase(),expectedValue:v(t.expectedValue??t.expected_value,0),actualValue:v(t.actualValue??t.actual_value,0),deviationPercent:v(t.deviationPercent??t.deviation_percent,0),compensationAmount:typeof t.compensationAmount=="number"?t.compensationAmount:typeof t.compensation_amount=="number"?t.compensation_amount:null,occurredAt:t.occurredAt??t.occurred_at??null,resolvedAt:t.resolvedAt??t.resolved_at??null,v2Status:t.v2Status?String(t.v2Status).toLowerCase():"open",v2Note:t.v2Note??"",_idx:o}:null}function Se(t){const o=N(t);return Array.isArray(o)?o.map(Le).filter(Boolean):[]}function xe(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?{slaId:"",checkedAt:null,totalViolations:0,violations:[]}:{slaId:String(o.slaId||""),checkedAt:o.checkedAt??null,totalViolations:v(o.totalViolations,0),violations:Array.isArray(o.violations)?o.violations.map(Le).filter(Boolean):[]}}function Te(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?null:{violationId:String(o.violationId||""),slaId:String(o.slaId||""),severity:String(o.severity||""),base:v(o.base,0),multiplier:v(o.multiplier,0),amount:v(o.amount,0)}}const vt={slaId:"",tier:"",compliance:0,startDate:null,endDate:null,metricsByTerm:{},violations:{total:0,byTerm:{},bySeverity:{},totalCompensation:0}};function Ie(t){const o=JSON.parse(JSON.stringify(vt));for(const e of de)o.violations.byTerm[e]=0;for(const e of ue)o.violations.bySeverity[e]=0;const i=N(t);if(!i||typeof i!="object"||Array.isArray(i))return o;if(o.slaId=String(i.slaId||""),o.tier=String(i.tier||"").toLowerCase(),o.compliance=v(i.compliance,0),o.startDate=i.startDate??null,o.endDate=i.endDate??null,i.metricsByTerm&&typeof i.metricsByTerm=="object")for(const[e,_]of Object.entries(i.metricsByTerm)){const T=ze(_);T&&(o.metricsByTerm[e]=T)}if(i.violations&&typeof i.violations=="object"){if(o.violations.total=v(i.violations.total,0),o.violations.totalCompensation=v(i.violations.totalCompensation,0),i.violations.byTerm&&typeof i.violations.byTerm=="object")for(const[e,_]of Object.entries(i.violations.byTerm))typeof _=="number"&&Number.isFinite(_)&&(o.violations.byTerm[e]=_);if(i.violations.bySeverity&&typeof i.violations.bySeverity=="object")for(const[e,_]of Object.entries(i.violations.bySeverity))typeof _=="number"&&Number.isFinite(_)&&(o.violations.bySeverity[e]=_)}return o}const pt={totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}};function Ae(t){const o=JSON.parse(JSON.stringify(pt));for(const e of Re)o.byStatus[e]=0;for(const e of Oe)o.byTier[e]=0;for(const e of de)o.violations.byTerm[e]=0;for(const e of ue)o.violations.bySeverity[e]=0;for(const e of mt)o.violations.byStatus[e]=0;const i=N(t);if(!i||typeof i!="object"||Array.isArray(i))return o;if(o.totalContracts=v(i.totalContracts,0),o.activeContracts=v(i.activeContracts,0),o.activeOrgs=v(i.activeOrgs,0),o.maxActiveSlasPerOrg=v(i.maxActiveSlasPerOrg,0),i.byStatus&&typeof i.byStatus=="object")for(const[e,_]of Object.entries(i.byStatus))typeof _=="number"&&Number.isFinite(_)&&(o.byStatus[e]=_);if(i.byTier&&typeof i.byTier=="object")for(const[e,_]of Object.entries(i.byTier))typeof _=="number"&&Number.isFinite(_)&&(o.byTier[e]=_);if(i.violations&&typeof i.violations=="object"){o.violations.total=v(i.violations.total,0),o.violations.totalCompensation=v(i.violations.totalCompensation,0);for(const e of["byTerm","bySeverity","byStatus"])if(i.violations[e]&&typeof i.violations[e]=="object")for(const[_,T]of Object.entries(i.violations[e]))typeof T=="number"&&Number.isFinite(T)&&(o.violations[e][_]=T)}return o}function bt(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const gt={__name:"Sla",setup(t,{expose:o}){o();const i=pe(),{t:e}=be(),_=ge.PRESENTED_IMAGE_SIMPLE,T=g(!1),R=g(!1),X=g(!1),ee=g([]),z=g([]),I=g([]),A=g({totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}}),B=g({noDb:!1,error:""}),S=g("contracts"),M=g(""),P=g(""),Z=g(""),J=g(!1),K=g(!1),D=g(!1),te=g(!1),ae=g(!1),E=g(!1),w=ce({orgId:"",tier:"silver",monthlyFee:1e3,durationDays:30}),F=ce({slaId:null,term:"availability",value:null}),L=g(null),q=g({slaId:"",totalSamples:0,byTerm:{}}),V=g(null),x=g(null),Y=g(null),H=g(null),oe=U(()=>[{title:e("sla.contractCols.slaId"),key:"slaId",width:"120px"},{title:e("sla.contractCols.orgId"),key:"orgId",width:"160px"},{title:e("sla.contractCols.tier"),key:"tier",width:"90px"},{title:e("sla.contractCols.status"),key:"status",width:"100px"},{title:e("sla.contractCols.monthlyFee"),key:"monthlyFee",width:"110px"},{title:e("sla.contractCols.endDate"),key:"endDate",width:"160px"},{title:e("sla.contractCols.action"),key:"action",width:"260px"}]),le=U(()=>[{title:e("sla.violationCols.id"),key:"violationId",width:"120px"},{title:e("sla.violationCols.term"),key:"term",width:"140px"},{title:e("sla.violationCols.severity"),key:"severity",width:"100px"},{title:e("sla.violationCols.deviation"),key:"deviation",width:"180px"},{title:e("sla.violationCols.expected"),key:"expected",width:"110px"},{title:e("sla.violationCols.actual"),key:"actual",width:"110px"},{title:e("sla.violationCols.compensation"),key:"compensation",width:"110px"},{title:e("sla.violationCols.occurredAt"),key:"occurredAt",width:"160px"},{title:e("sla.violationCols.action"),key:"action",width:"120px"}]),re=U(()=>[{title:e("sla.aggCols.term"),key:"term",width:"140px"},{title:e("sla.aggCols.expected"),key:"expected",width:"110px"},{title:e("sla.aggCols.mean"),key:"mean",width:"110px"},{title:e("sla.aggCols.p95"),key:"p95",width:"110px"},{title:e("sla.aggCols.min"),key:"min",width:"110px"},{title:e("sla.aggCols.max"),key:"max",width:"110px"},{title:e("sla.aggCols.count"),key:"count",width:"90px"}]),a=U(()=>{let n=z.value;return M.value&&(n=n.filter(s=>s.tier===M.value)),P.value&&(n=n.filter(s=>s.status===P.value)),n}),u=U(()=>{let n=I.value;return Z.value&&(n=n.filter(s=>s.severity===Z.value)),n}),W=U(()=>L.value?Object.entries(q.value.byTerm).map(([n,s])=>({key:n,term:n,expected:ne(L.value.terms,n),...s})):[]),Ee=U(()=>!x.value||!L.value?[]:Object.entries(x.value.metricsByTerm).map(([n,s])=>({key:n,term:n,expected:ne(L.value.terms,n),...s})));function ne(n,s){if(!n)return 0;switch(s){case"availability":return n.availability;case"response_time":return n.maxResponseTime;case"throughput":return n.minThroughput;case"error_rate":return n.maxErrorRate;default:return 0}}function Ve(n){return{gold:"gold",silver:"default",bronze:"orange"}[n]||"default"}function je(n){return{gold:"#faad14",silver:"#8c8c8c",bronze:"#d4a373"}[n]||"#888"}function Me(n){const s=`sla.statusLabels.${n}`,C=e(s);return C===s?n:C}function De(n){return{active:"green",expired:"default",terminated:"red"}[n]||"default"}function Ne(n){return{active:"#52c41a",expired:"#888",terminated:"#ff4d4f"}[n]||"#888"}function Be(n){const s=`sla.termLabels.${n}`,C=e(s);return C===s?n:C}function Ue(n){if(!n)return"";const s=`sla.termHints.${n}`,C=e(s);return C===s?"":C}function Pe(n,s){return typeof s!="number"||!Number.isFinite(s)?"—":n==="availability"||n==="error_rate"?(s*100).toFixed(3)+"%":n==="response_time"?s.toFixed(1)+"ms":n==="throughput"?s.toFixed(0)+" rps":s.toFixed(4)}function Je(n){const s=`sla.severityLabels.${n}`,C=e(s);return C===s?n:C}function qe(n){return{minor:"default",moderate:"gold",major:"orange",critical:"red"}[n]||"default"}function He(n){return{minor:"#888",moderate:"#faad14",major:"#fa8c16",critical:"#ff4d4f"}[n]||"#888"}function We(n){return n>=.99?"#52c41a":n>=.9?"#1677ff":n>=.7?"#faad14":"#ff4d4f"}function Ge(n,s){return s?Math.round(n/s*100):0}async function Q(){T.value=!0,B.value={noDb:!1,error:""};try{const[n,s,C,ie]=await Promise.all([i.execute("sla tiers --json",8e3).catch(()=>({output:""})),i.execute("sla list --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("sla violations --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("sla stats-v2",8e3).catch(()=>({output:""}))]),$=[s,C,ie].map(se=>G(se.output)).find(se=>se.noDb);$&&(B.value=$),ee.value=_e(n.output),z.value=ke(s.output),I.value=Se(C.output),A.value=Ae(ie.output)}catch(n){k.error(e("sla.msg.loadFailed")+": "+(n?.message||n))}finally{T.value=!1}}async function Ke(){if(!w.orgId.trim()){k.warning(e("sla.msg.orgEmpty"));return}R.value=!0;try{const n=w.durationDays*24*60*60*1e3,s=[`sla create "${w.orgId.trim().replace(/"/g,'\\"')}"`,`-t ${w.tier}`,`-d ${n}`,`-f ${w.monthlyFee||0}`,"--json"],{output:C}=await i.execute(s.join(" "),1e4);if(G(C).noDb){k.error(e("sla.msg.needCcInit"));return}const $=Ce(C);if(!$){k.error(e("sla.msg.createFailed")+": "+C.slice(0,120));return}k.success(e("sla.msg.createSuccess",{id:$.slaId.slice(0,8)})),J.value=!1,me(),await Q()}catch(n){k.error(e("sla.msg.createFailed")+": "+(n?.message||n))}finally{R.value=!1}}async function Ye(){if(!F.slaId){k.warning(e("sla.msg.slaEmpty"));return}if(F.value===null||F.value===void 0){k.warning(e("sla.msg.valueEmpty"));return}X.value=!0;try{const{output:n}=await i.execute(`sla record ${F.slaId} ${F.term} ${F.value} --json`,8e3);if(G(n).noDb){k.error(e("sla.msg.needCcInit"));return}if(!/"metricId"|"term"/.test(n)){k.error(e("sla.msg.recordFailed")+": "+n.slice(0,120));return}k.success(e("sla.msg.recordSuccess")),K.value=!1,fe()}catch(n){k.error(e("sla.msg.recordFailed")+": "+(n?.message||n))}finally{X.value=!1}}async function Qe(n){try{const{output:s}=await i.execute(`sla terminate ${n.slaId}`,8e3);if(G(s).noDb){k.error(e("sla.msg.needCcInit"));return}if(/Failed/i.test(s)&&!/terminated/i.test(s)){k.error(e("sla.msg.terminateFailed")+": "+s.slice(0,120));return}k.success(e("sla.msg.terminateSuccess")),await Q()}catch(s){k.error(e("sla.msg.terminateFailed")+": "+(s?.message||s))}}async function Xe(n){L.value=n,q.value={slaId:"",totalSamples:0,byTerm:{}},D.value=!0;try{const{output:s}=await i.execute(`sla metrics ${n.slaId} --json`,8e3);q.value=he(s)}catch(s){k.error(e("sla.msg.loadMetricsFailed")+": "+(s?.message||s))}}async function Ze(n){L.value=n,V.value=null,te.value=!0;try{const{output:s}=await i.execute(`sla check ${n.slaId} --json`,1e4);if(G(s).noDb){k.error(e("sla.msg.needCcInit"));return}V.value=xe(s),V.value.totalViolations>0&&await Q()}catch(s){k.error(e("sla.msg.checkFailed")+": "+(s?.message||s))}}async function $e(n){L.value=n,x.value=null,ae.value=!0;try{const{output:s}=await i.execute(`sla report ${n.slaId} --json`,1e4);x.value=Ie(s)}catch(s){k.error(e("sla.msg.loadReportFailed")+": "+(s?.message||s))}}async function et(n){Y.value=n,H.value=null;try{const{output:s}=await i.execute(`sla compensate ${n.violationId} --json`,8e3);if(G(s).noDb){k.error(e("sla.msg.needCcInit"));return}if(H.value=Te(s),!H.value){k.error(e("sla.msg.compFailed")+": "+s.slice(0,120));return}E.value=!0,await Q()}catch(s){k.error(e("sla.msg.compFailed")+": "+(s?.message||s))}}function tt(n){Y.value=n,H.value={violationId:n.violationId,slaId:n.slaId,severity:n.severity,base:0,multiplier:0,amount:n.compensationAmount||0},E.value=!0}function me(){w.orgId="",w.tier="silver",w.monthlyFee=1e3,w.durationDays=30}function fe(){F.slaId=null,F.term="availability",F.value=null}ve(Q);const ye={ws:i,t:e,EMPTY_IMG:_,loading:T,creating:R,recording:X,tiers:ee,contracts:z,violations:I,stats:A,errorState:B,activeTab:S,tierFilter:M,statusFilter:P,severityFilter:Z,showCreateModal:J,showRecordModal:K,showMetricsModal:D,showCheckModal:te,showReportModal:ae,showCompensationModal:E,createForm:w,recordForm:F,currentContract:L,currentMetrics:q,currentCheck:V,currentReport:x,currentViolation:Y,currentCompensation:H,contractColumns:oe,violationColumns:le,aggColumns:re,filteredContracts:a,filteredViolations:u,aggDataSource:W,reportAggDataSource:Ee,expectedFor:ne,tierColor:Ve,tierBarColor:je,statusLabel:Me,statusColor:De,statusBarColor:Ne,termLabel:Be,termHint:Ue,formatTermValue:Pe,severityLabel:Je,severityColor:qe,severityBarColor:He,complianceColor:We,pctOfTotal:Ge,loadAll:Q,submitCreate:Ke,submitRecord:Ye,terminateContract:Qe,viewMetrics:Xe,checkContract:Ze,viewReport:$e,computeCompensation:et,viewCompensation:tt,resetCreateForm:me,resetRecordForm:fe,ref:g,computed:U,onMounted:ve,reactive:ce,get ReloadOutlined(){return ut},get PlusOutlined(){return dt},get LineChartOutlined(){return ct},get FileProtectOutlined(){return st},get CheckCircleOutlined(){return it},get TeamOutlined(){return nt},get WarningOutlined(){return rt},get DollarOutlined(){return lt},get message(){return k},get Empty(){return ge},get useI18n(){return be},get useWsStore(){return pe},get parseTiers(){return _e},get parseContracts(){return ke},get parseMetrics(){return he},get parseViolations(){return Se},get parseCheckResult(){return xe},get parseCompensation(){return Te},get parseReport(){return Ie},get parseStatsV2(){return Ae},get parseContract(){return Ce},get detectSlaError(){return G},get formatSlaTime(){return bt},get SLA_TIER_NAMES(){return Oe},get SLA_STATUSES(){return Re},get SLA_TERMS_LIST(){return de},get VIOLATION_SEVERITIES(){return ue}};return Object.defineProperty(ye,"__isScriptSetup",{enumerable:!1,value:!0}),ye}},_t={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},kt={class:"page-title"},Ct={class:"page-sub"},ht={class:"tier-head"},St={class:"tier-comp"},xt={class:"tier-terms"},Tt={class:"tier-term"},It={class:"tier-term"},At={class:"tier-term"},Ft={class:"tier-term"},Ot={class:"filter-bar"},Rt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},wt={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},zt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Lt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Et={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Vt={class:"filter-bar"},jt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Mt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Dt={key:5,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Nt={key:0,style:{color:"#faad14","font-weight":"500"}},Bt={key:1,style:{color:"var(--text-muted)"}},Ut={key:7,style:{color:"var(--text-secondary)","font-size":"11px"}},Pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Jt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},qt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},Ht={key:0,style:{"padding-top":"8px"}},Wt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 10px"}},Gt={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Kt={key:2,style:{"font-family":"monospace","font-size":"12px"}},Yt={key:0,style:{"padding-top":"8px"}},Qt={style:{"margin-left":"8px","font-family":"monospace","font-size":"12px"}},Xt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Zt={style:{"margin-left":"auto",color:"#ff4d4f","font-weight":"500"}},$t={key:0,style:{"padding-top":"8px"}},ea={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},ta={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},aa={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},oa={key:2,style:{"font-family":"monospace","font-size":"12px"}},la={key:0,style:{"padding-top":"8px"}},ra={style:{"font-family":"monospace","font-size":"12px"}},na={style:{"font-family":"monospace"}},ia={style:{"font-family":"monospace"}},sa={style:{color:"#faad14","font-weight":"600","font-family":"monospace","font-size":"14px"}};function ca(t,o,i,e,_,T){const R=p("a-button"),X=p("a-space"),ee=p("a-alert"),z=p("a-statistic"),I=p("a-card"),A=p("a-col"),B=p("a-row"),S=p("a-tag"),M=p("a-radio-button"),P=p("a-radio-group"),Z=p("a-popconfirm"),J=p("a-table"),K=p("a-tab-pane"),D=p("a-progress"),te=p("a-tabs"),ae=p("a-input"),E=p("a-form-item"),w=p("a-select-option"),F=p("a-select"),L=p("a-input-number"),q=p("a-form"),V=p("a-modal"),x=p("a-descriptions-item"),Y=p("a-descriptions"),H=p("a-empty"),oe=p("a-result"),le=p("a-list-item"),re=p("a-list");return d(),f("div",null,[b("div",_t,[b("div",null,[b("h2",kt,c(t.$t("sla.title")),1),b("p",Ct,c(t.$t("sla.subtitle")),1)]),l(X,null,{default:r(()=>[l(R,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[l(e.ReloadOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.refresh")),1)]),_:1},8,["loading"]),l(R,{onClick:o[0]||(o[0]=a=>e.showRecordModal=!0)},{icon:r(()=>[l(e.LineChartOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.recordMetric")),1)]),_:1}),l(R,{type:"primary",onClick:o[1]||(o[1]=a=>e.showCreateModal=!0)},{icon:r(()=>[l(e.PlusOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.create")),1)]),_:1})]),_:1})]),m(" noDb banner "),e.errorState.noDb?(d(),h(ee,{key:0,type:"info","show-icon":"",message:t.$t("sla.noDb.message"),description:t.$t("sla.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):m("v-if",!0),m(" Stat cards "),l(B,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.totalContracts"),value:e.stats.totalContracts,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[l(e.FileProtectOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.active"),value:e.stats.activeContracts,"value-style":{color:e.stats.activeContracts>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:r(()=>[l(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.orgs"),value:e.stats.activeOrgs,"value-style":{color:"#722ed1",fontSize:"20px"},suffix:e.stats.maxActiveSlasPerOrg?`· cap=${e.stats.maxActiveSlasPerOrg}`:""},{prefix:r(()=>[l(e.TeamOutlined)]),_:1},8,["title","value","suffix"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.violations"),value:e.stats.violations.total,"value-style":{color:e.stats.violations.total>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:r(()=>[l(e.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:24,sm:8,lg:4},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.compensation"),value:e.stats.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.DollarOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),m(" Tier catalogue "),l(I,{title:t.$t("sla.tierCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:r(()=>[l(B,{gutter:[12,12]},{default:r(()=>[(d(!0),f(O,null,j(e.tiers,a=>(d(),h(A,{key:a.name,xs:24,sm:8},{default:r(()=>[b("div",{class:"tier-pill",style:at({borderLeftColor:e.tierBarColor(a.name)})},[b("div",ht,[l(S,{color:e.tierColor(a.name),style:{"font-family":"monospace","font-size":"13px"}},{default:r(()=>[y(c(a.name.toUpperCase()),1)]),_:2},1032,["color"]),b("span",St,c(t.$t("sla.tierCompRate",{pct:(a.compensationRate*100).toFixed(1)})),1)]),b("div",xt,[b("span",Tt,c(t.$t("sla.tierTerms.availability",{pct:(a.availability*100).toFixed(2)})),1),b("span",It,c(t.$t("sla.tierTerms.p95",{ms:a.maxResponseTime})),1),b("span",At,c(t.$t("sla.tierTerms.rps",{n:a.minThroughput})),1),b("span",Ft,c(t.$t("sla.tierTerms.errorRate",{pct:(a.maxErrorRate*100).toFixed(2)})),1)])],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),m(" Tabs "),l(te,{activeKey:e.activeTab,"onUpdate:activeKey":o[5]||(o[5]=a=>e.activeTab=a),class:"sla-tabs"},{default:r(()=>[m(" ── Contracts tab ────────────────────────────────────── "),l(K,{key:"contracts",tab:t.$t("sla.tabs.contracts")},{default:r(()=>[b("div",Ot,[l(P,{value:e.tierFilter,"onUpdate:value":o[2]||(o[2]=a=>e.tierFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(M,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allTiers")),1)]),_:1}),(d(!0),f(O,null,j(e.SLA_TIER_NAMES,a=>(d(),h(M,{key:a,value:a},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(P,{value:e.statusFilter,"onUpdate:value":o[3]||(o[3]=a=>e.statusFilter=a),size:"small"},{default:r(()=>[l(M,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allStatuses")),1)]),_:1}),(d(!0),f(O,null,j(e.SLA_STATUSES,a=>(d(),h(M,{key:a,value:a},{default:r(()=>[y(c(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(J,{columns:e.contractColumns,"data-source":e.filteredContracts,pagination:{pageSize:20,showTotal:a=>t.$t("sla.table.contractsSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="slaId"?(d(),f("span",Rt,c(u.slaId.slice(0,12)),1)):m("v-if",!0),a.key==="orgId"?(d(),f("span",wt,c(u.orgId),1)):m("v-if",!0),a.key==="tier"?(d(),h(S,{key:2,color:e.tierColor(u.tier),style:{"font-family":"monospace"}},{default:r(()=>[y(c(u.tier.toUpperCase()),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="status"?(d(),h(S,{key:3,color:e.statusColor(u.status)},{default:r(()=>[y(c(e.statusLabel(u.status)),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="monthlyFee"?(d(),f("span",zt,c(u.monthlyFee.toFixed(2)),1)):m("v-if",!0),a.key==="endDate"?(d(),f("span",Lt,c(e.formatSlaTime(u.endDate)),1)):m("v-if",!0),a.key==="action"?(d(),f(O,{key:6},[l(R,{size:"small",type:"link",onClick:W=>e.viewMetrics(u)},{default:r(()=>[y(c(t.$t("sla.table.actionMetrics")),1)]),_:1},8,["onClick"]),l(R,{size:"small",type:"link",onClick:W=>e.checkContract(u)},{default:r(()=>[y(c(t.$t("sla.table.actionCheck")),1)]),_:1},8,["onClick"]),l(R,{size:"small",type:"link",onClick:W=>e.viewReport(u)},{default:r(()=>[y(c(t.$t("sla.table.actionReport")),1)]),_:1},8,["onClick"]),u.status==="active"?(d(),h(Z,{key:0,title:t.$t("sla.terminateConfirm.title"),"ok-text":t.$t("sla.terminateConfirm.ok"),"cancel-text":t.$t("sla.terminateConfirm.cancel"),onConfirm:W=>e.terminateContract(u)},{default:r(()=>[l(R,{size:"small",type:"link",danger:""},{default:r(()=>[y(c(t.$t("sla.terminateConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):m("v-if",!0)],64)):m("v-if",!0)]),emptyText:r(()=>[b("div",Et,[l(e.FileProtectOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+c(e.tierFilter||e.statusFilter?t.$t("sla.table.emptyContractsFiltered"):t.$t("sla.table.emptyContracts")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── Violations tab ───────────────────────────────────── "),l(K,{key:"violations",tab:t.$t("sla.tabs.violations")},{default:r(()=>[b("div",Vt,[l(P,{value:e.severityFilter,"onUpdate:value":o[4]||(o[4]=a=>e.severityFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(M,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allSeverities")),1)]),_:1}),(d(!0),f(O,null,j(e.VIOLATION_SEVERITIES,a=>(d(),h(M,{key:a,value:a},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(J,{columns:e.violationColumns,"data-source":e.filteredViolations,pagination:{pageSize:20,showTotal:a=>t.$t("sla.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="violationId"?(d(),f("span",jt,c(u.violationId.slice(0,12)),1)):m("v-if",!0),a.key==="term"?(d(),h(S,{key:1,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="severity"?(d(),h(S,{key:2,color:e.severityColor(u.severity)},{default:r(()=>[y(c(e.severityLabel(u.severity)),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="deviation"?(d(),h(D,{key:3,percent:Math.min(100,Math.round(u.deviationPercent)),"stroke-color":e.severityBarColor(u.severity),size:"small",format:()=>`${u.deviationPercent.toFixed(1)}%`},null,8,["percent","stroke-color","format"])):m("v-if",!0),a.key==="expected"?(d(),f("span",Mt,c(e.formatTermValue(u.term,u.expectedValue)),1)):m("v-if",!0),a.key==="actual"?(d(),f("span",Dt,c(e.formatTermValue(u.term,u.actualValue)),1)):m("v-if",!0),a.key==="compensation"?(d(),f(O,{key:6},[u.compensationAmount!==null?(d(),f("span",Nt,c(u.compensationAmount.toFixed(2)),1)):(d(),f("span",Bt,c(t.$t("sla.table.uncomputed")),1))],64)):m("v-if",!0),a.key==="occurredAt"?(d(),f("span",Ut,c(e.formatSlaTime(u.occurredAt)),1)):m("v-if",!0),a.key==="action"?(d(),f(O,{key:8},[u.compensationAmount===null?(d(),h(R,{key:0,size:"small",type:"link",onClick:W=>e.computeCompensation(u)},{default:r(()=>[y(c(t.$t("sla.table.actionComputeComp")),1)]),_:1},8,["onClick"])):(d(),h(R,{key:1,size:"small",type:"link",onClick:W=>e.viewCompensation(u)},{default:r(()=>[y(c(t.$t("sla.table.actionView")),1)]),_:1},8,["onClick"]))],64)):m("v-if",!0)]),emptyText:r(()=>[b("div",Pt,[l(e.CheckCircleOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block",color:"#52c41a"}}),y(" "+c(e.severityFilter?t.$t("sla.table.emptyViolationsFiltered"):t.$t("sla.table.emptyViolations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── Breakdown tab ────────────────────────────────────── "),l(K,{key:"breakdown",tab:t.$t("sla.tabs.breakdown")},{default:r(()=>[l(B,{gutter:[16,16]},{default:r(()=>[l(A,{xs:24,lg:12},{default:r(()=>[l(I,{title:t.$t("sla.breakdown.contractsByStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:r(()=>[(d(!0),f(O,null,j(e.SLA_STATUSES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.statusColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.statusLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.byStatus[a]||0,e.stats.totalContracts),"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"]),l(I,{title:t.$t("sla.breakdown.contractsByTier"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[(d(!0),f(O,null,j(e.SLA_TIER_NAMES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.tierColor(a),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.byTier[a]||0,e.stats.totalContracts),"stroke-color":e.tierBarColor(a),format:()=>`${e.stats.byTier[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),l(A,{xs:24,lg:12},{default:r(()=>[l(I,{title:t.$t("sla.breakdown.violationsBySeverity"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:r(()=>[(d(!0),f(O,null,j(e.VIOLATION_SEVERITIES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.severityColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.violations.bySeverity[a]||0,e.stats.violations.total),"stroke-color":e.severityBarColor(a),format:()=>`${e.stats.violations.bySeverity[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"]),l(I,{title:t.$t("sla.breakdown.violationsByTerm"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[(d(!0),f(O,null,j(e.SLA_TERMS_LIST,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:"default",style:{"min-width":"110px","text-align":"center","font-family":"monospace","font-size":"11px"}},{default:r(()=>[y(c(e.termLabel(a)),1)]),_:2},1024),l(D,{percent:e.pctOfTotal(e.stats.violations.byTerm[a]||0,e.stats.violations.total),"stroke-color":"#fa8c16",format:()=>`${e.stats.violations.byTerm[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),m(" ── Create contract modal ──────────────────────────────── "),l(V,{open:e.showCreateModal,"onUpdate:open":o[10]||(o[10]=a=>e.showCreateModal=a),title:t.$t("sla.create_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("sla.create_modal.ok"),"cancel-text":t.$t("sla.create_modal.cancel"),onOk:e.submitCreate,onCancel:e.resetCreateForm},{default:r(()=>[l(q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(E,{label:t.$t("sla.create_modal.orgLabel"),required:""},{default:r(()=>[l(ae,{value:e.createForm.orgId,"onUpdate:value":o[6]||(o[6]=a=>e.createForm.orgId=a),placeholder:t.$t("sla.create_modal.orgPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.tierLabel"),required:""},{default:r(()=>[l(F,{value:e.createForm.tier,"onUpdate:value":o[7]||(o[7]=a=>e.createForm.tier=a)},{default:r(()=>[(d(!0),f(O,null,j(e.SLA_TIER_NAMES,a=>(d(),h(w,{key:a,value:a},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.feeLabel")},{default:r(()=>[l(L,{value:e.createForm.monthlyFee,"onUpdate:value":o[8]||(o[8]=a=>e.createForm.monthlyFee=a),min:0,step:100,style:{width:"160px"}},null,8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.durationLabel")},{default:r(()=>[l(L,{value:e.createForm.durationDays,"onUpdate:value":o[9]||(o[9]=a=>e.createForm.durationDays=a),min:1,step:30,style:{width:"160px"}},null,8,["value"]),b("span",Jt,c(t.$t("sla.create_modal.durationHint")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Record metric modal ────────────────────────────────── "),l(V,{open:e.showRecordModal,"onUpdate:open":o[14]||(o[14]=a=>e.showRecordModal=a),title:t.$t("sla.record_modal.title"),"confirm-loading":e.recording,width:540,"ok-text":t.$t("sla.record_modal.ok"),"cancel-text":t.$t("sla.record_modal.cancel"),onOk:e.submitRecord,onCancel:e.resetRecordForm},{default:r(()=>[l(q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(E,{label:t.$t("sla.record_modal.slaLabel"),required:""},{default:r(()=>[l(F,{value:e.recordForm.slaId,"onUpdate:value":o[11]||(o[11]=a=>e.recordForm.slaId=a),placeholder:t.$t("sla.record_modal.slaPlaceholder"),options:e.contracts.map(a=>({value:a.slaId,label:`${a.slaId.slice(0,8)} · ${a.orgId} [${a.tier}]`})),"show-search":""},null,8,["value","placeholder","options"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.record_modal.termLabel"),required:""},{default:r(()=>[l(F,{value:e.recordForm.term,"onUpdate:value":o[12]||(o[12]=a=>e.recordForm.term=a)},{default:r(()=>[(d(!0),f(O,null,j(e.SLA_TERMS_LIST,a=>(d(),h(w,{key:a,value:a},{default:r(()=>[y(c(e.termLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.record_modal.valueLabel"),required:""},{default:r(()=>[l(L,{value:e.recordForm.value,"onUpdate:value":o[13]||(o[13]=a=>e.recordForm.value=a),step:.01,style:{width:"200px"}},null,8,["value"]),b("div",qt,c(e.termHint(e.recordForm.term)),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Metrics modal ──────────────────────────────────────── "),l(V,{open:e.showMetricsModal,"onUpdate:open":o[15]||(o[15]=a=>e.showMetricsModal=a),title:t.$t("sla.metrics_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:r(()=>[e.currentContract?(d(),f("div",Ht,[l(Y,{column:2,size:"small",bordered:""},{default:r(()=>[l(x,{label:t.$t("sla.metrics_modal.org")},{default:r(()=>[y(c(e.currentContract.orgId),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.tier")},{default:r(()=>[l(S,{color:e.tierColor(e.currentContract.tier)},{default:r(()=>[y(c(e.currentContract.tier.toUpperCase()),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.samples")},{default:r(()=>[y(c(e.currentMetrics.totalSamples),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.monthlyFee")},{default:r(()=>[y(c(e.currentContract.monthlyFee.toFixed(2)),1)]),_:1},8,["label"])]),_:1}),b("h4",Wt,c(t.$t("sla.metrics_modal.byTerm")),1),Object.keys(e.currentMetrics.byTerm).length?(d(),h(J,{key:1,columns:e.aggColumns,"data-source":e.aggDataSource,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="term"?(d(),h(S,{key:0,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="expected"?(d(),f("span",Gt,c(e.formatTermValue(u.term,u.expected)),1)):["mean","p95","min","max"].includes(a.key)?(d(),f("span",Kt,c(e.formatTermValue(u.term,u[a.key])),1)):m("v-if",!0)]),_:1},8,["columns","data-source"])):(d(),h(H,{key:0,description:t.$t("sla.metrics_modal.empty"),image:e.EMPTY_IMG},null,8,["description","image"]))])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Check result modal ─────────────────────────────────── "),l(V,{open:e.showCheckModal,"onUpdate:open":o[16]||(o[16]=a=>e.showCheckModal=a),title:t.$t("sla.check_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:r(()=>[e.currentCheck?(d(),f("div",Yt,[l(oe,{status:e.currentCheck.totalViolations===0?"success":"warning",title:e.currentCheck.totalViolations===0?t.$t("sla.check_modal.noViolations"):t.$t("sla.check_modal.withViolations",{n:e.currentCheck.totalViolations}),"sub-title":t.$t("sla.check_modal.checkedAt",{time:e.formatSlaTime(e.currentCheck.checkedAt)})},null,8,["status","title","sub-title"]),e.currentCheck.totalViolations>0?(d(),h(re,{key:0,size:"small","data-source":e.currentCheck.violations},{renderItem:r(({item:a})=>[l(le,null,{default:r(()=>[l(S,{color:e.severityColor(a.severity),style:{"min-width":"50px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a.severity)),1)]),_:2},1032,["color"]),b("span",Qt,c(e.termLabel(a.term)),1),b("span",Xt,c(t.$t("sla.check_modal.expectedActual",{expected:e.formatTermValue(a.term,a.expectedValue),actual:e.formatTermValue(a.term,a.actualValue)})),1),b("span",Zt,c(a.deviationPercent.toFixed(2))+"%",1)]),_:2},1024)]),_:1},8,["data-source"])):m("v-if",!0)])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Report modal ───────────────────────────────────────── "),l(V,{open:e.showReportModal,"onUpdate:open":o[17]||(o[17]=a=>e.showReportModal=a),title:t.$t("sla.report_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:720,footer:null},{default:r(()=>[e.currentReport?(d(),f("div",$t,[l(B,{gutter:12,style:{"margin-bottom":"16px"}},{default:r(()=>[l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.compliance"),value:e.currentReport.compliance*100,suffix:"%",precision:2,"value-style":{color:e.complianceColor(e.currentReport.compliance),fontSize:"20px"}},null,8,["title","value","value-style"])]),_:1}),l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.violations"),value:e.currentReport.violations.total,"value-style":{color:"#ff4d4f",fontSize:"20px"}},null,8,["title","value"])]),_:1}),l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.compensation"),value:e.currentReport.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),b("h4",ea,c(t.$t("sla.breakdown.violationsBySeverityHeader")),1),(d(!0),f(O,null,j(e.VIOLATION_SEVERITIES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.severityColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.currentReport.violations.bySeverity[a]||0,e.currentReport.violations.total),"stroke-color":e.severityBarColor(a),format:()=>`${e.currentReport.violations.bySeverity[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),Object.keys(e.currentReport.metricsByTerm).length?(d(),f("h4",ta,c(t.$t("sla.breakdown.metricsAggregation")),1)):m("v-if",!0),Object.keys(e.currentReport.metricsByTerm).length?(d(),h(J,{key:1,columns:e.aggColumns,"data-source":e.reportAggDataSource,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="term"?(d(),h(S,{key:0,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="expected"?(d(),f("span",aa,c(e.formatTermValue(u.term,u.expected)),1)):["mean","p95","min","max"].includes(a.key)?(d(),f("span",oa,c(e.formatTermValue(u.term,u[a.key])),1)):m("v-if",!0)]),_:1},8,["columns","data-source"])):m("v-if",!0)])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Compensation modal ─────────────────────────────────── "),l(V,{open:e.showCompensationModal,"onUpdate:open":o[18]||(o[18]=a=>e.showCompensationModal=a),title:t.$t("sla.compensation_modal.title",{id:e.currentViolation?.violationId?.slice(0,12)||""}),width:540,footer:null},{default:r(()=>[e.currentCompensation?(d(),f("div",la,[l(Y,{column:2,size:"small",bordered:""},{default:r(()=>[l(x,{label:t.$t("sla.compensation_modal.violationId"),span:2},{default:r(()=>[b("span",ra,c(e.currentCompensation.violationId),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.severity")},{default:r(()=>[l(S,{color:e.severityColor(e.currentCompensation.severity)},{default:r(()=>[y(c(e.severityLabel(e.currentCompensation.severity)),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.base")},{default:r(()=>[b("span",na,c(e.currentCompensation.base.toFixed(4)),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.multiplier")},{default:r(()=>[b("span",ia,"×"+c(e.currentCompensation.multiplier.toFixed(2)),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.amount")},{default:r(()=>[b("span",sa,c(e.currentCompensation.amount.toFixed(2)),1)]),_:1},8,["label"])]),_:1})])):m("v-if",!0)]),_:1},8,["open","title"])])}const ya=ot(gt,[["render",ca],["__scopeId","data-v-76f93f7e"],["__file","/tmp/cc-web-panel-GijCQY/repo/packages/web-panel/src/views/Sla.vue"]]);export{ya as default};