chainlesschain 0.162.121 → 0.162.123

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 (188) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/AIOps-C5CSd8pY.js +1 -0
  4. package/src/assets/web-panel/assets/{ActionButton-B0guX-Pk.js → ActionButton-BugJtiJc.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-pvYAYaTD.js → Analytics-CzxpcV9E.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-_GgOKQ2t.js → AppLayout-Cb0eHetM.js} +5 -5
  7. package/src/assets/web-panel/assets/Audit-qjq04wh8.js +1 -0
  8. package/src/assets/web-panel/assets/{Backup-DzC81Yn0.js → Backup-C2Y_XNBA.js} +1 -1
  9. package/src/assets/web-panel/assets/{BaseInput-BsJKfb1P.js → BaseInput-CZ0c7QHk.js} +1 -1
  10. package/src/assets/web-panel/assets/{Chat-WsUPq3Wj.js → Chat-CaKDT3wV.js} +6 -6
  11. package/src/assets/web-panel/assets/ChatBubbleRenderer-TeKnMwPj.js +1 -0
  12. package/src/assets/web-panel/assets/{Checkbox-C3yuwxvq.js → Checkbox-C6-Iu3bG.js} +1 -1
  13. package/src/assets/web-panel/assets/Codegen-TGLFk6P1.js +1 -0
  14. package/src/assets/web-panel/assets/{Col-DH6v5BCo.js → Col-DVBrO7AN.js} +1 -1
  15. package/src/assets/web-panel/assets/{Community-DPm78h9b.js → Community-tg6-Rik1.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compact-t_O2D6_A.js → Compact-DM4ZgFSE.js} +1 -1
  17. package/src/assets/web-panel/assets/Compliance-DFeWryxt.js +1 -0
  18. package/src/assets/web-panel/assets/{Cowork-BAfAK8X3.js → Cowork-CJwiWkUY.js} +2 -2
  19. package/src/assets/web-panel/assets/{Cron-BeG0RFLN.js → Cron-dsdXHvrO.js} +2 -2
  20. package/src/assets/web-panel/assets/Crosschain-p7_5Gq-7.js +1 -0
  21. package/src/assets/web-panel/assets/{DID-DnknPYMQ.js → DID-BB_LBLYT.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dashboard-CCChnAaV.js → Dashboard-Bh_HkNSD.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dropdown-DrnkbWTA.js → Dropdown-dTFtVnKk.js} +1 -1
  24. package/src/assets/web-panel/assets/{EmailListRenderer-yvHFL0rf.js → EmailListRenderer-yqdttzXV.js} +1 -1
  25. package/src/assets/web-panel/assets/{FamilyGuardDashboard-CkGkMoL4.js → FamilyGuardDashboard-DfX3YpUU.js} +1 -1
  26. package/src/assets/web-panel/assets/Federation-BJApfPV4.js +1 -0
  27. package/src/assets/web-panel/assets/{FormItemContext-CHniFKJL.js → FormItemContext-DNMwIh7X.js} +1 -1
  28. package/src/assets/web-panel/assets/{GenericCardRenderer-DUWt7emA.js → GenericCardRenderer-C-T8UQf0.js} +1 -1
  29. package/src/assets/web-panel/assets/{Git-BCkiDXHW.js → Git-SURFhkLi.js} +2 -2
  30. package/src/assets/web-panel/assets/Governance-B4u_KsfE.js +1 -0
  31. package/src/assets/web-panel/assets/Inference-2kr_rKQd.js +1 -0
  32. package/src/assets/web-panel/assets/{KnowledgeGraph-CcaaJRB6.js → KnowledgeGraph-h-nL7J6x.js} +1 -1
  33. package/src/assets/web-panel/assets/{Logs-CgrnKQgi.js → Logs-DjuWREBJ.js} +2 -2
  34. package/src/assets/web-panel/assets/Marketplace-W9Iz8b2m.js +1 -0
  35. package/src/assets/web-panel/assets/{McpTools-_C4-YpAK.js → McpTools-D0waMomb.js} +5 -5
  36. package/src/assets/web-panel/assets/{Memory-XGQtG2x2.js → Memory-Ci768GQ3.js} +2 -2
  37. package/src/assets/web-panel/assets/{MobileBridge-D4tGRMBu.js → MobileBridge-4jAehfcz.js} +2 -2
  38. package/src/assets/web-panel/assets/{MobileProjects-CSMoOsbj.js → MobileProjects-RpFuAiNz.js} +1 -1
  39. package/src/assets/web-panel/assets/{Mtc-BkOT98e8.js → Mtc-DJdw8btT.js} +4 -4
  40. package/src/assets/web-panel/assets/{MtcAudit-R3Bc7QS3.js → MtcAudit-Dc596XgH.js} +2 -2
  41. package/src/assets/web-panel/assets/{Multisig-DtPhN_Vp.js → Multisig--Qs7eGsH.js} +3 -3
  42. package/src/assets/web-panel/assets/NLProgramming-D3y71FDX.js +1 -0
  43. package/src/assets/web-panel/assets/{Notes-DQAs8WXS.js → Notes-uMxjj66_.js} +3 -3
  44. package/src/assets/web-panel/assets/{NotificationSettings-CU5inrwZ.js → NotificationSettings-C4ikBOsm.js} +1 -1
  45. package/src/assets/web-panel/assets/{OrderTableRenderer-CuOAigzP.js → OrderTableRenderer-BpmdunAz.js} +1 -1
  46. package/src/assets/web-panel/assets/{Organization-BBYSlNS4.js → Organization-BBEmFNGM.js} +4 -4
  47. package/src/assets/web-panel/assets/{Overflow-D4LFJ0F8.js → Overflow-B-4_IpbB.js} +1 -1
  48. package/src/assets/web-panel/assets/{P2P-Cb9wWcwI.js → P2P-DdOf9BZs.js} +2 -2
  49. package/src/assets/web-panel/assets/{PdhVaultBrowser-CbrWEB55.js → PdhVaultBrowser-DDU2Zc9Q.js} +3 -3
  50. package/src/assets/web-panel/assets/{Permissions-B6IgqOCw.js → Permissions-B1ebgevF.js} +4 -4
  51. package/src/assets/web-panel/assets/{PersonalDataHub-Bjr4sBQJ.js → PersonalDataHub-B3WcvKni.js} +2 -2
  52. package/src/assets/web-panel/assets/Pipeline-DASuPDc3.js +1 -0
  53. package/src/assets/web-panel/assets/Privacy-DnixwmhJ.js +1 -0
  54. package/src/assets/web-panel/assets/{ProjectInit-D_Ooa-_1.js → ProjectInit-BQjMDkML.js} +2 -2
  55. package/src/assets/web-panel/assets/{ProjectSettings-BcxJj9D5.js → ProjectSettings-dHyZ3SxW.js} +2 -2
  56. package/src/assets/web-panel/assets/Projects-BGWEJIVT.js +1 -0
  57. package/src/assets/web-panel/assets/Providers-Bl0dw6cI.js +1 -0
  58. package/src/assets/web-panel/assets/{QuickAsk-BwmHGadq.js → QuickAsk-BDrk7l3t.js} +1 -1
  59. package/src/assets/web-panel/assets/Recommend-BPKof_CA.js +1 -0
  60. package/src/assets/web-panel/assets/Reputation-6MNJLklK.js +1 -0
  61. package/src/assets/web-panel/assets/{Row-P2QvD32s.js → Row-DmGJwpfd.js} +1 -1
  62. package/src/assets/web-panel/assets/{RssFeed-Cbhe_ZuG.js → RssFeed-9-Fxh3_w.js} +2 -2
  63. package/src/assets/web-panel/assets/Search-CCHjey_D.js +1 -0
  64. package/src/assets/web-panel/assets/{Security-BHcX3oNC.js → Security-D6CySV7r.js} +4 -4
  65. package/src/assets/web-panel/assets/{Services-MyS-8Lbb.js → Services-Co8Mk8qE.js} +2 -2
  66. package/src/assets/web-panel/assets/{Skeleton-QZIW_jXl.js → Skeleton-BdON8M-1.js} +1 -1
  67. package/src/assets/web-panel/assets/Skills-CEJE1Go1.js +1 -0
  68. package/src/assets/web-panel/assets/Sla-BSxFvFX9.js +1 -0
  69. package/src/assets/web-panel/assets/{SpeechSettings-Bo1H5Wn6.js → SpeechSettings-C3rShYlV.js} +1 -1
  70. package/src/assets/web-panel/assets/{SyncSettings-Bsz0-gn1.js → SyncSettings-52NXsfyj.js} +2 -2
  71. package/src/assets/web-panel/assets/Tasks-He7CweW6.js +1 -0
  72. package/src/assets/web-panel/assets/{Templates-BougCISz.js → Templates-UtjBlJIO.js} +1 -1
  73. package/src/assets/web-panel/assets/Tenant-Dd5XNbYF.js +1 -0
  74. package/src/assets/web-panel/assets/Terminal-pFyh42cu.js +3 -0
  75. package/src/assets/web-panel/assets/{TimelineRenderer-DIvfcwcy.js → TimelineRenderer-BdfqBQmM.js} +1 -1
  76. package/src/assets/web-panel/assets/Tokens-CsgNsrdQ.js +1 -0
  77. package/src/assets/web-panel/assets/{Trigger-Di7RbOTg.js → Trigger-Dt_N_rvo.js} +1 -1
  78. package/src/assets/web-panel/assets/Trust-B1lJzsPn.js +1 -0
  79. package/src/assets/web-panel/assets/{UkeySign-D6K4VEkr.js → UkeySign-CW8YdFxg.js} +1 -1
  80. package/src/assets/web-panel/assets/{VideoEditing-DncGaI3n.js → VideoEditing-CU6o7qvp.js} +1 -1
  81. package/src/assets/web-panel/assets/{Wallet-C6dwNmEv.js → Wallet-DPxjEhbN.js} +4 -4
  82. package/src/assets/web-panel/assets/{WebAuthn-DECzmHdt.js → WebAuthn-CuJ29YAF.js} +4 -4
  83. package/src/assets/web-panel/assets/{WorkflowEditor-7Oui1r4s.js → WorkflowEditor-BcCA2U8H.js} +1 -1
  84. package/src/assets/web-panel/assets/{chat-D7cr3pGX.js → chat-Cxl5DGsc.js} +1 -1
  85. package/src/assets/web-panel/assets/{colors-DVBzBfcl.js → colors-FS_7Xggs.js} +1 -1
  86. package/src/assets/web-panel/assets/community-parser-Cuyslaku.js +3 -0
  87. package/src/assets/web-panel/assets/{compact-item-BbB5VBbN.js → compact-item-BzXjd3wJ.js} +1 -1
  88. package/src/assets/web-panel/assets/{createContext-DZIhmdMW.js → createContext-DhF9bi_u.js} +1 -1
  89. package/src/assets/web-panel/assets/devWarning-B1j78JeH.js +1 -0
  90. package/src/assets/web-panel/assets/{hasIn-o6cAbkdF.js → hasIn-Y1a0aV9N.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-DDlaS-eI.js → index--fcP34eT.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-D9ImwlR4.js → index-1iacQgo5.js} +3 -3
  93. package/src/assets/web-panel/assets/{index-BjFOIfCN.js → index-1khPb4ZS.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-C3zE2Zb3.js → index-B48PZ-xM.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-CRwhnqeq.js → index-BBtULjKY.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-yuTbNtNs.js → index-BNmWkPqm.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-B46pBbZO.js → index-BTltEtoG.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-Cw4L9i5q.js → index-B_Z0PHC0.js} +1 -1
  99. package/src/assets/web-panel/assets/index-BaN6wKWx.js +1 -0
  100. package/src/assets/web-panel/assets/{index-Cv57ZM9B.js → index-BepInmSi.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-zKIib2ju.js → index-BllceSdr.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-Uu0xnJjT.js → index-BnvaUocg.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-PrARM-sN.js → index-Bt_0ygjA.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BE27hqn2.js → index-BzQkdgQW.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-B7wUz-Ms.js → index-C2S8McM1.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-bVBYhd7K.js → index-CELVZPNt.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-C7E1YSkg.js → index-CETvk0NN.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-DZ3tksOn.js → index-CRSkKj9M.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Cqjc-kry.js → index-Cgo1J_Kf.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-D8x9OXYZ.js → index-Ci7PSoQn.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DTk9u72E.js → index-Cn9lbqaS.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-B-ZE4Sb_.js → index-CuTKOay7.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-CMBJfBO0.js → index-CxYHV8nb.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-KRt3wlmg.js → index-CzlCP4jP.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BCmv_7S_.js → index-D3IVAG9l.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DClnoV1K.js → index-DLyIxnjc.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CBU-k7oT.js → index-DUcVF8e6.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BHUQ725h.js → index-DVTex5M8.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CzqSSSPT.js → index-DZJMsVI1.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-WVuFehZH.js → index-DfaSKEVD.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-wTvVuzRE.js → index-DgHWZVjv.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BpBK2OXI.js → index-Dmjxpu0L.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-D9kIcXZC.js → index-DxGVbuqr.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DAH13RZu.js → index-GCd5hs58.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-l0044mtE.js → index-JUukFpxi.js} +1 -1
  126. package/src/assets/web-panel/assets/index-N7JKRLCC.js +1 -0
  127. package/src/assets/web-panel/assets/{index-M33z1syq.js → index-Na733kBa.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DKepNJYO.js → index-Sl-sLj3T.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CsMviqrA.js → index-uLoKviUT.js} +1 -1
  130. package/src/assets/web-panel/assets/{initDefaultProps-BserruiV.js → initDefaultProps-D6QmlnQ-.js} +1 -1
  131. package/src/assets/web-panel/assets/{motion-C_f04bi5.js → motion-BHrTGY1_.js} +1 -1
  132. package/src/assets/web-panel/assets/{move-BexrY4Hu.js → move-Bpph6B_N.js} +1 -1
  133. package/src/assets/web-panel/assets/mtc-parser-CEQffxds.js +1 -0
  134. package/src/assets/web-panel/assets/{omit-CIZJousS.js → omit-Dx0YMbWn.js} +1 -1
  135. package/src/assets/web-panel/assets/{pickAttrs-BkLOyxvO.js → pickAttrs-D-a8Fm6C.js} +1 -1
  136. package/src/assets/web-panel/assets/{placementArrow-C3ddcrAy.js → placementArrow-DXFSVgxv.js} +1 -1
  137. package/src/assets/web-panel/assets/{responsiveObserve-D7hnwzkh.js → responsiveObserve-CxhQ1EaK.js} +1 -1
  138. package/src/assets/web-panel/assets/{slide-CF7E-K6h.js → slide-IlBI0XU8.js} +1 -1
  139. package/src/assets/web-panel/assets/{statusUtils-B6OJYlGm.js → statusUtils-COoXVzje.js} +1 -1
  140. package/src/assets/web-panel/assets/{styleChecker-bFHBq4VZ.js → styleChecker-DCuq89M_.js} +1 -1
  141. package/src/assets/web-panel/assets/{useFlexGapSupport-C4oscNMu.js → useFlexGapSupport-tfNE1ALO.js} +1 -1
  142. package/src/assets/web-panel/assets/{useFs-C4qeTm22.js → useFs-DD4bzBkU.js} +1 -1
  143. package/src/assets/web-panel/assets/{usePersonalDataHub-BREWau9k.js → usePersonalDataHub-DVkH1hbT.js} +1 -1
  144. package/src/assets/web-panel/assets/{vnode-D_FePgCk.js → vnode-D1ZmXyxM.js} +1 -1
  145. package/src/assets/web-panel/assets/{zoom-CrTvlO1G.js → zoom-DblBUHfi.js} +1 -1
  146. package/src/assets/web-panel/index.html +1 -1
  147. package/src/harness/mcp-client.js +67 -6
  148. package/src/lib/credential-guard.js +284 -0
  149. package/src/lib/ensure-utf8.js +6 -1
  150. package/src/lib/hook-manager.js +15 -6
  151. package/src/lib/llm-config-defaults.js +20 -0
  152. package/src/lib/mcp-client.js +1 -0
  153. package/src/lib/mcp-oauth.js +35 -4
  154. package/src/lib/repl-rewind.js +58 -0
  155. package/src/lib/repl-vim.js +13 -1
  156. package/src/lib/settings-hooks.cjs +12 -3
  157. package/src/repl/agent-repl.js +52 -2
  158. package/src/runtime/agent-core.js +76 -0
  159. package/src/assets/web-panel/assets/AIOps-Bv7Ucinc.js +0 -1
  160. package/src/assets/web-panel/assets/Audit-CFS769nz.js +0 -1
  161. package/src/assets/web-panel/assets/ChatBubbleRenderer-DvtzQM9S.js +0 -1
  162. package/src/assets/web-panel/assets/Codegen-QIFxk_hy.js +0 -1
  163. package/src/assets/web-panel/assets/Compliance-CLKqB8ca.js +0 -1
  164. package/src/assets/web-panel/assets/Crosschain-CaWGF4pH.js +0 -1
  165. package/src/assets/web-panel/assets/Federation-1njD_iZv.js +0 -1
  166. package/src/assets/web-panel/assets/Governance-CvYe_1r7.js +0 -1
  167. package/src/assets/web-panel/assets/Inference-DLMzzPHV.js +0 -1
  168. package/src/assets/web-panel/assets/Marketplace-ANMynfeO.js +0 -1
  169. package/src/assets/web-panel/assets/NLProgramming-BedLm2U-.js +0 -1
  170. package/src/assets/web-panel/assets/Pipeline-Dh5Jusv2.js +0 -1
  171. package/src/assets/web-panel/assets/Privacy-Dyrhjpr4.js +0 -1
  172. package/src/assets/web-panel/assets/Projects-D2iHs0Go.js +0 -1
  173. package/src/assets/web-panel/assets/Providers-D0-FNfIu.js +0 -1
  174. package/src/assets/web-panel/assets/Recommend-Cn6UbQuv.js +0 -1
  175. package/src/assets/web-panel/assets/Reputation-jSYCTpEv.js +0 -1
  176. package/src/assets/web-panel/assets/Search-7aQqsu6b.js +0 -1
  177. package/src/assets/web-panel/assets/Skills-BiGNAz9O.js +0 -1
  178. package/src/assets/web-panel/assets/Sla-C62HvLJq.js +0 -1
  179. package/src/assets/web-panel/assets/Tasks-bwGsNuzp.js +0 -1
  180. package/src/assets/web-panel/assets/Tenant-CuZVHTEg.js +0 -1
  181. package/src/assets/web-panel/assets/Terminal-Cuf5GwW1.js +0 -3
  182. package/src/assets/web-panel/assets/Tokens-BiS_SqlJ.js +0 -1
  183. package/src/assets/web-panel/assets/Trust-DJfddmdL.js +0 -1
  184. package/src/assets/web-panel/assets/community-parser-CO25nZFt.js +0 -3
  185. package/src/assets/web-panel/assets/devWarning-roRmJB_V.js +0 -1
  186. package/src/assets/web-panel/assets/index-C24iCbrD.js +0 -1
  187. package/src/assets/web-panel/assets/index-DjgW9EJK.js +0 -1
  188. package/src/assets/web-panel/assets/mtc-parser-BbAbUB-9.js +0 -1
@@ -1 +0,0 @@
1
- import{I as m,J as f,U as v,R as s,c as o,K as l,V as c,o as me,a as te,b as B,r as w,P as d,Q as g,F as A,Z as Q,S as k,$ as ve}from"./vendor-BvqAck49.js";import{_ as Ge,u as pe,b as ye,E as _e,d as R}from"./index-D9ImwlR4.js";import{s as je}from"./community-parser-CO25nZFt.js";import{a6 as Ee,aZ as Le,f as Pe,am as Me,A as Ne,Q as De,r as Ue,as as Je,R as Be}from"./icons-DP3uiYxy.js";function V(t){const a=je(t);if(!a)return null;try{return JSON.parse(a)}catch{}const i=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const Fe=Object.freeze(["react","vue","express","fastapi","spring_boot"]),ue=Object.freeze(["critical","high","medium","low","info"]);function x(t,a=0){return typeof t=="number"&&Number.isFinite(t)?t:a}function be(t,a=null){if(t==null)return a;if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return a}}function Ve(t,a=0){if(!t||typeof t!="object")return null;const i=t.id||"";return i?{key:i,id:i,prompt:String(t.prompt||""),language:t.language??"",framework:t.framework??"",generatedCode:t.generated_code??t.generatedCode??"",fileCount:x(t.file_count??t.fileCount,0),tokenCount:x(t.token_count??t.tokenCount,0),metadata:t.metadata??null,createdAt:t.created_at??t.createdAt??null,_idx:a}:null}function we(t){const a=V(t);return Array.isArray(a)?a.map(Ve).filter(Boolean):[]}function qe(t,a=0){return!t||typeof t!="object"?null:{key:a,rule:String(t.rule||""),severity:String(t.severity||"info").toLowerCase(),match:String(t.match||""),pattern:String(t.pattern||"")}}function We(t,a=0){if(!t||typeof t!="object")return null;const i=t.id||"";if(!i)return null;const e=be(t.severity_summary??t.severitySummary,null)??t.severity_summary??t.severitySummary,z={};for(const L of ue)z[L]=0;if(e&&typeof e=="object"&&!Array.isArray(e))for(const[L,P]of Object.entries(e))typeof P=="number"&&Number.isFinite(P)&&(z[L]=P);const G=be(t.issues_detail??t.issuesDetail,null)??t.issues_detail??t.issuesDetail,S=Array.isArray(G)?G.map(qe).filter(Boolean):[];return{key:i,id:i,generationId:t.generation_id??t.generationId??"",codeHash:String(t.code_hash??t.codeHash??""),language:t.language??"",issuesFound:x(t.issues_found??t.issuesFound,0),securityIssues:x(t.security_issues??t.securityIssues,0),severitySummary:z,issuesDetail:S,reviewedAt:t.reviewed_at??t.reviewedAt??null,_idx:a}}function ke(t){const a=V(t);return Array.isArray(a)?a.map(We).filter(Boolean):[]}function he(t){const a={};for(const G of ue)a[G]=0;const i=V(t);if(!i||typeof i!="object"||Array.isArray(i))return{ok:!1,reviewId:null,reason:"",issuesFound:0,securityIssues:0,severitySummary:a};const e=!!i.reviewId,z={...a};if(i.severitySummary&&typeof i.severitySummary=="object"&&!Array.isArray(i.severitySummary))for(const[G,S]of Object.entries(i.severitySummary))typeof S=="number"&&Number.isFinite(S)&&(z[G]=S);return{ok:e,reviewId:i.reviewId?String(i.reviewId):null,reason:i.reason?String(i.reason):"",issuesFound:x(i.issuesFound,0),securityIssues:x(i.securityIssues,0),severitySummary:z}}function He(t,a=0){if(!t||typeof t!="object")return null;const i=t.id||"";return i?{key:i,id:i,template:String(t.template||""),projectName:t.project_name??t.projectName??"",options:t.options??null,filesGenerated:x(t.files_generated??t.filesGenerated,0),outputPath:t.output_path??t.outputPath??"",createdAt:t.created_at??t.createdAt??null,_idx:a}:null}function Se(t){const a=V(t);return Array.isArray(a)?a.map(He).filter(Boolean):[]}const Ke={generations:{total:0,totalTokens:0,totalFiles:0,uniqueLanguages:0},reviews:{total:0,totalIssues:0,totalSecurityIssues:0,avgIssuesPerReview:0},scaffolds:{total:0,byTemplate:{}}};function Ce(t){const a=JSON.parse(JSON.stringify(Ke));for(const e of Fe)a.scaffolds.byTemplate[e]=0;const i=V(t);if(!i||typeof i!="object"||Array.isArray(i))return a;if(i.generations&&typeof i.generations=="object"&&(a.generations.total=x(i.generations.total,0),a.generations.totalTokens=x(i.generations.totalTokens,0),a.generations.totalFiles=x(i.generations.totalFiles,0),a.generations.uniqueLanguages=x(i.generations.uniqueLanguages,0)),i.reviews&&typeof i.reviews=="object"&&(a.reviews.total=x(i.reviews.total,0),a.reviews.totalIssues=x(i.reviews.totalIssues,0),a.reviews.totalSecurityIssues=x(i.reviews.totalSecurityIssues,0),a.reviews.avgIssuesPerReview=x(i.reviews.avgIssuesPerReview,0)),i.scaffolds&&typeof i.scaffolds=="object"&&(a.scaffolds.total=x(i.scaffolds.total,0),i.scaffolds.byTemplate&&typeof i.scaffolds.byTemplate=="object"))for(const[e,z]of Object.entries(i.scaffolds.byTemplate))typeof z=="number"&&Number.isFinite(z)&&(a.scaffolds.byTemplate[e]=z);return a}function de(t){const a=V(t);if(!a||typeof a!="object"||Array.isArray(a))return{ok:!1,id:null,reason:""};const i=a.generationId||a.scaffoldId||a.reviewId||null;return{ok:!!i,id:i?String(i):null,reason:a.reason?String(a.reason):""}}function Qe(t){if(t==null||t==="")return"—";const a=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(a.getTime())?String(t):a.toLocaleString("zh-CN",{hour12:!1})}const Ye={__name:"Codegen",setup(t,{expose:a}){a();const i=pe(),{t:e}=ye(),z=_e.PRESENTED_IMAGE_SIMPLE,G=w(!1),S=w(!1),L=w(!1),P=w(!1),q=w([]),W=w([]),T=w([]),M=w({generations:{total:0,totalTokens:0,totalFiles:0,uniqueLanguages:0},reviews:{total:0,totalIssues:0,totalSecurityIssues:0,avgIssuesPerReview:0},scaffolds:{total:0,byTemplate:{}}}),j=w("generations"),D=w(""),h=w(""),O=w(""),U=w(!1),J=w(!1),H=w(!1),Y=w(!1),Z=w(!1),y=te({prompt:"",language:"",framework:"",code:"",files:0,tokens:0}),p=te({generationId:"",language:"",code:""}),b=te({template:"react",projectName:"",optionsJson:"",files:0,outputPath:""}),I=w(null),N=w(null),X=w(null),oe=B(()=>[{title:e("codegen.generationCols.prompt"),key:"prompt"},{title:e("codegen.generationCols.language"),key:"language",width:"110px"},{title:e("codegen.generationCols.framework"),key:"framework",width:"110px"},{title:e("codegen.generationCols.fileCount"),key:"fileCount",width:"70px"},{title:e("codegen.generationCols.tokenCount"),key:"tokenCount",width:"110px"},{title:e("codegen.generationCols.createdAt"),key:"createdAt",width:"160px"},{title:e("codegen.generationCols.action"),key:"action",width:"140px"}]),ae=B(()=>[{title:e("codegen.reviewCols.codeHash"),key:"codeHash",width:"180px"},{title:e("codegen.reviewCols.language"),key:"language",width:"110px"},{title:e("codegen.reviewCols.issuesFound"),key:"issuesFound",width:"90px"},{title:e("codegen.reviewCols.securityIssues"),key:"securityIssues",width:"90px"},{title:e("codegen.reviewCols.severityBreak"),key:"severityBreak"},{title:e("codegen.reviewCols.reviewedAt"),key:"reviewedAt",width:"160px"},{title:e("codegen.reviewCols.action"),key:"action",width:"90px"}]),le=B(()=>[{title:e("codegen.scaffoldCols.projectName"),key:"projectName"},{title:e("codegen.scaffoldCols.template"),key:"template",width:"120px"},{title:e("codegen.scaffoldCols.filesGenerated"),key:"filesGenerated",width:"90px"},{title:e("codegen.scaffoldCols.outputPath"),key:"outputPath",width:"300px"},{title:e("codegen.scaffoldCols.createdAt"),key:"createdAt",width:"160px"}]),ne=B(()=>{let r=q.value;if(D.value.trim()){const _=D.value.trim().toLowerCase();r=r.filter(F=>(F.language||"").toLowerCase().includes(_))}if(h.value.trim()){const _=h.value.trim().toLowerCase();r=r.filter(F=>(F.framework||"").toLowerCase().includes(_))}return r}),C=B(()=>O.value?T.value.filter(r=>r.template===O.value):T.value);function $(r){return{react:"cyan",vue:"green",express:"gold",fastapi:"magenta",spring_boot:"red"}[r]||"default"}function re(r){return{react:"#13c2c2",vue:"#52c41a",express:"#faad14",fastapi:"#eb2f96",spring_boot:"#ff4d4f"}[r]||"#888"}function se(r){const _=`codegen.severityLabels.${r}`,F=e(_);return F===_?r:F}function ie(r){return{critical:"red",high:"orange",medium:"gold",low:"default",info:"blue"}[r]||"default"}function n(r){return{critical:"#ff4d4f",high:"#fa8c16",medium:"#faad14",low:"#888",info:"#1677ff"}[r]||"#888"}function u(r,_){return _?Math.round(r/_*100):0}function ee(r,_){return r?r.length<=_?r:r.slice(0,_)+"…":""}function E(r){return`"${String(r).replace(/"/g,'\\"')}"`}async function K(){G.value=!0;try{const[r,_,F,Oe]=await Promise.all([i.execute("codegen list --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("codegen reviews --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("codegen scaffolds --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("codegen stats --json",8e3).catch(()=>({output:""}))]);q.value=we(r.output),W.value=ke(_.output),T.value=Se(F.output),M.value=Ce(Oe.output)}catch(r){R.error(e("codegen.msg.loadFailed")+": "+(r?.message||r))}finally{G.value=!1}}async function Re(){if(!y.prompt.trim()){R.warning(e("codegen.msg.promptEmpty"));return}S.value=!0;try{const r=[`codegen generate -p ${E(y.prompt.trim())}`];y.language.trim()&&r.push(`-l ${E(y.language.trim())}`),y.framework.trim()&&r.push(`-f ${E(y.framework.trim())}`),y.code.trim()&&r.push(`--code ${E(y.code.trim())}`),y.files>0&&r.push(`--files ${y.files}`),y.tokens>0&&r.push(`--tokens ${y.tokens}`),r.push("--json");const{output:_}=await i.execute(r.join(" "),1e4),F=de(_);if(!F.ok){R.error(e("codegen.msg.generateFailed")+": "+(F.reason||_.slice(0,120)));return}R.success(e("codegen.msg.generateSuccess",{id:F.id?.slice(0,8)})),U.value=!1,ce(),await K()}catch(r){R.error(e("codegen.msg.generateFailed")+": "+(r?.message||r))}finally{S.value=!1}}async function xe(){if(!p.code.trim()){R.warning(e("codegen.msg.codeEmpty"));return}L.value=!0,I.value=null;try{const r=[`codegen review -c ${E(p.code)}`];p.language.trim()&&r.push(`-l ${E(p.language.trim())}`),p.generationId.trim()&&r.push(`-g ${E(p.generationId.trim())}`),r.push("--json");const{output:_}=await i.execute(r.join(" "),1e4);I.value=he(_),!I.value.ok&&I.value.reason?R.error(e("codegen.msg.reviewFailed")+": "+I.value.reason):I.value.ok?(R.success(e("codegen.msg.reviewSuccess",{n:I.value.issuesFound,sec:I.value.securityIssues})),await K()):R.error(e("codegen.msg.reviewFailed")+": "+_.slice(0,120))}catch(r){R.error(e("codegen.msg.reviewFailed")+": "+(r?.message||r))}finally{L.value=!1}}async function Ie(r){p.generationId=r.id,p.language=r.language||"",p.code=r.generatedCode||"",I.value=null,J.value=!0}async function Ae(){if(!b.projectName.trim()){R.warning(e("codegen.msg.projectEmpty"));return}if(b.optionsJson.trim())try{JSON.parse(b.optionsJson)}catch{R.warning(e("codegen.msg.optionsBadJson"));return}P.value=!0;try{const r=[`codegen scaffold -t ${b.template}`,`-n ${E(b.projectName.trim())}`];b.optionsJson.trim()&&r.push(`-o ${E(b.optionsJson.trim())}`),b.files>0&&r.push(`--files ${b.files}`),b.outputPath.trim()&&r.push(`--output ${E(b.outputPath.trim())}`),r.push("--json");const{output:_}=await i.execute(r.join(" "),1e4),F=de(_);if(!F.ok){R.error(e("codegen.msg.scaffoldFailed")+": "+(F.reason||_.slice(0,120)));return}R.success(e("codegen.msg.scaffoldSuccess",{id:F.id?.slice(0,8)})),H.value=!1,fe(),await K()}catch(r){R.error(e("codegen.msg.scaffoldFailed")+": "+(r?.message||r))}finally{P.value=!1}}function ze(r){N.value=r,Y.value=!0}function Te(r){X.value=r,Z.value=!0}function ce(){y.prompt="",y.language="",y.framework="",y.code="",y.files=0,y.tokens=0}function fe(){b.template="react",b.projectName="",b.optionsJson="",b.files=0,b.outputPath=""}me(K);const ge={ws:i,t:e,EMPTY_IMG:z,loading:G,generating:S,reviewing:L,scaffolding:P,generations:q,reviews:W,scaffolds:T,stats:M,activeTab:j,languageFilter:D,frameworkFilter:h,templateFilter:O,showGenerateModal:U,showReviewModal:J,showScaffoldModal:H,showGenDetailsModal:Y,showReviewDetailsModal:Z,generateForm:y,reviewForm:p,scaffoldForm:b,reviewResult:I,currentGen:N,currentReview:X,generationColumns:oe,reviewColumns:ae,scaffoldColumns:le,filteredGenerations:ne,filteredScaffolds:C,tmplColor:$,tmplBarColor:re,severityLabel:se,severityColor:ie,severityBarColor:n,pctOfTotal:u,truncate:ee,shellQuote:E,loadAll:K,submitGenerate:Re,submitReview:xe,reviewGeneration:Ie,submitScaffold:Ae,viewGenerationDetails:ze,viewReviewDetails:Te,resetGenerateForm:ce,resetScaffoldForm:fe,ref:w,computed:B,onMounted:me,reactive:te,get ReloadOutlined(){return Be},get PlusOutlined(){return Je},get SafetyOutlined(){return Ue},get CodeOutlined(){return De},get AuditOutlined(){return Ne},get WarningOutlined(){return Me},get CheckCircleOutlined(){return Pe},get AppstoreAddOutlined(){return Le},get GlobalOutlined(){return Ee},get message(){return R},get Empty(){return _e},get useI18n(){return ye},get useWsStore(){return pe},get parseGenerations(){return we},get parseReviews(){return ke},get parseReviewResult(){return he},get parseScaffolds(){return Se},get parseStats(){return Ce},get parseActionResult(){return de},get formatCodegenTime(){return Qe},get SCAFFOLD_TEMPLATES(){return Fe},get REVIEW_SEVERITIES(){return ue}};return Object.defineProperty(ge,"__isScriptSetup",{enumerable:!1,value:!0}),ge}},Ze={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Xe={class:"page-title"},$e={class:"page-sub"},et={class:"tmpl-count"},tt={class:"filter-bar"},ot={style:{color:"var(--text-primary)","font-weight":"500"}},at={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},lt={key:1,style:{color:"var(--text-muted)"}},nt={key:1,style:{color:"var(--text-muted)"}},rt={key:3,style:{color:"var(--text-secondary)"}},st={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},it={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},dt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ut={style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},ct={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},ft={key:1,style:{color:"var(--text-muted)"}},gt={key:4,class:"sev-mini"},mt={key:0,style:{color:"#ff4d4f"}},vt={key:1,style:{color:"#fa8c16"}},pt={key:2,style:{color:"#faad14"}},yt={key:3,style:{color:"#888"}},_t={key:4,style:{color:"#1677ff"}},bt={key:5,style:{color:"#52c41a"}},wt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},kt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ht={class:"filter-bar"},St={style:{color:"var(--text-primary)","font-weight":"500"}},Ct={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},Ft={key:2,style:{color:"var(--text-secondary)"}},Rt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},xt={key:1,style:{color:"var(--text-muted)"}},It={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},At={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},zt={style:{"padding-top":"8px"}},Tt={key:1},Ot={style:{color:"var(--text-primary)","font-size":"12px",margin:"12px 0 6px"}},Gt={key:0,style:{"padding-top":"8px"}},jt={style:{"font-family":"monospace","font-size":"12px"}},Et={key:1,style:{color:"var(--text-muted)"}},Lt={key:1,style:{color:"var(--text-muted)"}},Pt={class:"code-pre"},Mt={class:"code-pre"},Nt={key:0,style:{"padding-top":"8px"}},Dt={style:{"font-family":"monospace","font-size":"12px"}},Ut={style:{"font-family":"monospace","font-size":"12px"}},Jt={style:{"font-family":"monospace","font-size":"12px"}},Bt={key:1,style:{color:"var(--text-muted)"}},Vt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},qt={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Wt={style:{"margin-left":"8px","font-family":"monospace","font-size":"12px"}},Ht={style:{"margin-left":"8px",padding:"1px 6px",background:"var(--bg-base)","border-radius":"3px","font-size":"11px"}};function Kt(t,a,i,e,z,G){const S=m("a-button"),L=m("a-menu-item"),P=m("a-menu"),q=m("a-dropdown"),W=m("a-space"),T=m("a-statistic"),M=m("a-card"),j=m("a-col"),D=m("a-row"),h=m("a-tag"),O=m("a-input"),U=m("a-table"),J=m("a-tab-pane"),H=m("a-radio-button"),Y=m("a-radio-group"),Z=m("a-tabs"),y=m("a-textarea"),p=m("a-form-item"),b=m("a-input-number"),I=m("a-form"),N=m("a-modal"),X=m("a-divider"),oe=m("a-empty"),ae=m("a-alert"),le=m("a-select-option"),ne=m("a-select"),C=m("a-descriptions-item"),$=m("a-descriptions"),re=m("a-progress"),se=m("a-list-item"),ie=m("a-list");return d(),f("div",null,[v("div",Ze,[v("div",null,[v("h2",Xe,s(t.$t("codegen.title")),1),v("p",$e,s(t.$t("codegen.subtitle")),1)]),o(W,null,{default:l(()=>[o(S,{loading:e.loading,onClick:e.loadAll},{icon:l(()=>[o(e.ReloadOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.refresh")),1)]),_:1},8,["loading"]),o(S,{onClick:a[0]||(a[0]=n=>e.showReviewModal=!0)},{icon:l(()=>[o(e.SafetyOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.review")),1)]),_:1}),o(q,null,{overlay:l(()=>[o(P,null,{default:l(()=>[o(L,{key:"generate",onClick:a[1]||(a[1]=n=>e.showGenerateModal=!0)},{default:l(()=>[g(s(t.$t("codegen.actions.generate")),1)]),_:1}),o(L,{key:"scaffold",onClick:a[2]||(a[2]=n=>e.showScaffoldModal=!0)},{default:l(()=>[g(s(t.$t("codegen.actions.scaffold")),1)]),_:1})]),_:1})]),default:l(()=>[o(S,{type:"primary"},{icon:l(()=>[o(e.PlusOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),c(" Stat cards "),o(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.generations"),value:e.stats.generations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[o(e.CodeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.reviews"),value:e.stats.reviews.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:l(()=>[o(e.AuditOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.securityIssues"),value:e.stats.reviews.totalSecurityIssues,"value-style":{color:e.stats.reviews.totalSecurityIssues>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:l(()=>[o(e.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.scaffolds"),value:e.stats.scaffolds.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[o(e.AppstoreAddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:24,sm:8,lg:4},{default:l(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(T,{title:t.$t("codegen.stats.languages"),value:e.stats.generations.uniqueLanguages,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:l(()=>[o(e.GlobalOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),c(" Template catalogue "),o(M,{title:t.$t("codegen.templatesCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:l(()=>[o(D,{gutter:[12,12]},{default:l(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,n=>(d(),k(j,{key:n,xs:12,sm:8,lg:4},{default:l(()=>[v("div",{class:"tmpl-pill",style:ve({borderLeftColor:e.tmplBarColor(n)})},[o(h,{color:e.tmplColor(n),style:{"font-family":"monospace"}},{default:l(()=>[g(s(n),1)]),_:2},1032,["color"]),v("span",et,s(e.stats.scaffolds.byTemplate[n]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),c(" Tabs "),o(Z,{activeKey:e.activeTab,"onUpdate:activeKey":a[6]||(a[6]=n=>e.activeTab=n),class:"codegen-tabs"},{default:l(()=>[c(" ── Generations tab ────────────────────────────────────── "),o(J,{key:"generations",tab:t.$t("codegen.tabs.generations")},{default:l(()=>[v("div",tt,[o(O,{value:e.languageFilter,"onUpdate:value":a[3]||(a[3]=n=>e.languageFilter=n),placeholder:t.$t("codegen.filter.languagePlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"]),o(O,{value:e.frameworkFilter,"onUpdate:value":a[4]||(a[4]=n=>e.frameworkFilter=n),placeholder:t.$t("codegen.filter.frameworkPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),o(U,{columns:e.generationColumns,"data-source":e.filteredGenerations,pagination:{pageSize:20,showTotal:n=>t.$t("codegen.table.totalSuffix",{n})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:u})=>[n.key==="prompt"?(d(),f(A,{key:0},[v("span",ot,s(e.truncate(u.prompt,60)),1),v("div",at,s(u.id.slice(0,16)),1)],64)):c("v-if",!0),n.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.language),1)]),_:2},1024)):(d(),f("span",lt,"—"))],64)):c("v-if",!0),n.key==="framework"?(d(),f(A,{key:2},[u.framework?(d(),k(h,{key:0,color:"purple",style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.framework),1)]),_:2},1024)):(d(),f("span",nt,"—"))],64)):c("v-if",!0),n.key==="fileCount"?(d(),f("span",rt,s(u.fileCount),1)):c("v-if",!0),n.key==="tokenCount"?(d(),f("span",st,s(u.tokenCount),1)):c("v-if",!0),n.key==="createdAt"?(d(),f("span",it,s(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0),n.key==="action"?(d(),f(A,{key:6},[o(S,{size:"small",type:"link",onClick:ee=>e.viewGenerationDetails(u)},{default:l(()=>[g(s(t.$t("codegen.table.actionDetails")),1)]),_:1},8,["onClick"]),u.generatedCode?(d(),k(S,{key:0,size:"small",type:"link",onClick:ee=>e.reviewGeneration(u)},{default:l(()=>[g(s(t.$t("codegen.table.actionReview")),1)]),_:1},8,["onClick"])):c("v-if",!0)],64)):c("v-if",!0)]),emptyText:l(()=>[v("div",dt,[o(e.CodeOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+s(e.languageFilter||e.frameworkFilter?t.$t("codegen.table.emptyGenerationsFiltered"):t.$t("codegen.table.emptyGenerations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),c(" ── Reviews tab ───────────────────────────────────────── "),o(J,{key:"reviews",tab:t.$t("codegen.tabs.reviews")},{default:l(()=>[o(U,{columns:e.reviewColumns,"data-source":e.reviews,pagination:{pageSize:20,showTotal:n=>t.$t("codegen.table.totalSuffix",{n})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:u})=>[n.key==="codeHash"?(d(),f(A,{key:0},[v("span",ut,s(u.codeHash),1),v("div",ct,s(u.id.slice(0,16)),1)],64)):c("v-if",!0),n.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.language),1)]),_:2},1024)):(d(),f("span",ft,"—"))],64)):c("v-if",!0),n.key==="issuesFound"?(d(),k(h,{key:2,color:u.issuesFound===0?"green":u.issuesFound>5?"red":"orange"},{default:l(()=>[g(s(t.$t("codegen.table.issuesSuffix",{n:u.issuesFound})),1)]),_:2},1032,["color"])):c("v-if",!0),n.key==="securityIssues"?(d(),f(A,{key:3},[u.securityIssues>0?(d(),k(h,{key:0,color:"red"},{default:l(()=>[o(e.WarningOutlined),g(" "+s(u.securityIssues),1)]),_:2},1024)):(d(),k(h,{key:1,color:"green"},{default:l(()=>[o(e.CheckCircleOutlined),a[26]||(a[26]=g(" 0 ",-1))]),_:1}))],64)):c("v-if",!0),n.key==="severityBreak"?(d(),f("span",gt,[u.severitySummary.critical>0?(d(),f("span",mt,"C:"+s(u.severitySummary.critical),1)):c("v-if",!0),u.severitySummary.high>0?(d(),f("span",vt,"H:"+s(u.severitySummary.high),1)):c("v-if",!0),u.severitySummary.medium>0?(d(),f("span",pt,"M:"+s(u.severitySummary.medium),1)):c("v-if",!0),u.severitySummary.low>0?(d(),f("span",yt,"L:"+s(u.severitySummary.low),1)):c("v-if",!0),u.severitySummary.info>0?(d(),f("span",_t,"I:"+s(u.severitySummary.info),1)):c("v-if",!0),u.issuesFound===0?(d(),f("span",bt,s(t.$t("codegen.table.noIssues")),1)):c("v-if",!0)])):c("v-if",!0),n.key==="reviewedAt"?(d(),f("span",wt,s(e.formatCodegenTime(u.reviewedAt)),1)):c("v-if",!0),n.key==="action"?(d(),k(S,{key:6,size:"small",type:"link",onClick:ee=>e.viewReviewDetails(u)},{default:l(()=>[g(s(t.$t("codegen.table.actionDetails")),1)]),_:1},8,["onClick"])):c("v-if",!0)]),emptyText:l(()=>[v("div",kt,[o(e.SafetyOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+s(t.$t("codegen.table.emptyReviews")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),c(" ── Scaffolds tab ─────────────────────────────────────── "),o(J,{key:"scaffolds",tab:t.$t("codegen.tabs.scaffolds")},{default:l(()=>[v("div",ht,[o(Y,{value:e.templateFilter,"onUpdate:value":a[5]||(a[5]=n=>e.templateFilter=n),size:"small","button-style":"solid"},{default:l(()=>[o(H,{value:""},{default:l(()=>[g(s(t.$t("codegen.filter.allTemplates")),1)]),_:1}),(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,n=>(d(),k(H,{key:n,value:n},{default:l(()=>[g(s(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(U,{columns:e.scaffoldColumns,"data-source":e.filteredScaffolds,pagination:{pageSize:20,showTotal:n=>t.$t("codegen.table.totalSuffix",{n})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:u})=>[n.key==="projectName"?(d(),f(A,{key:0},[v("span",St,s(u.projectName||t.$t("codegen.table.unnamed")),1),v("div",Ct,s(u.id.slice(0,16)),1)],64)):c("v-if",!0),n.key==="template"?(d(),k(h,{key:1,color:e.tmplColor(u.template),style:{"font-family":"monospace"}},{default:l(()=>[g(s(u.template),1)]),_:2},1032,["color"])):c("v-if",!0),n.key==="filesGenerated"?(d(),f("span",Ft,s(u.filesGenerated),1)):c("v-if",!0),n.key==="outputPath"?(d(),f(A,{key:3},[u.outputPath?(d(),f("span",Rt,s(e.truncate(u.outputPath,40)),1)):(d(),f("span",xt,"—"))],64)):c("v-if",!0),n.key==="createdAt"?(d(),f("span",It,s(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0)]),emptyText:l(()=>[v("div",At,[o(e.AppstoreAddOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+s(e.templateFilter?t.$t("codegen.table.emptyScaffoldsFiltered"):t.$t("codegen.table.emptyScaffolds")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),c(" ── Generate modal ──────────────────────────────────────── "),o(N,{open:e.showGenerateModal,"onUpdate:open":a[13]||(a[13]=n=>e.showGenerateModal=n),title:t.$t("codegen.generate_modal.title"),"confirm-loading":e.generating,width:560,"ok-text":t.$t("codegen.generate_modal.ok"),"cancel-text":t.$t("codegen.generate_modal.cancel"),onOk:e.submitGenerate,onCancel:e.resetGenerateForm},{default:l(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(p,{label:t.$t("codegen.generate_modal.promptLabel"),required:""},{default:l(()=>[o(y,{value:e.generateForm.prompt,"onUpdate:value":a[7]||(a[7]=n=>e.generateForm.prompt=n),placeholder:t.$t("codegen.generate_modal.promptPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.languageLabel")},{default:l(()=>[o(O,{value:e.generateForm.language,"onUpdate:value":a[8]||(a[8]=n=>e.generateForm.language=n),placeholder:t.$t("codegen.generate_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.frameworkLabel")},{default:l(()=>[o(O,{value:e.generateForm.framework,"onUpdate:value":a[9]||(a[9]=n=>e.generateForm.framework=n),placeholder:t.$t("codegen.generate_modal.frameworkPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.codeLabel")},{default:l(()=>[o(y,{value:e.generateForm.code,"onUpdate:value":a[10]||(a[10]=n=>e.generateForm.code=n),placeholder:t.$t("codegen.generate_modal.codePlaceholder"),"auto-size":{minRows:3,maxRows:10}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.filesLabel")},{default:l(()=>[o(b,{value:e.generateForm.files,"onUpdate:value":a[11]||(a[11]=n=>e.generateForm.files=n),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.tokensLabel")},{default:l(()=>[o(b,{value:e.generateForm.tokens,"onUpdate:value":a[12]||(a[12]=n=>e.generateForm.tokens=n),min:0,style:{width:"160px"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),c(" ── Review modal ────────────────────────────────────────── "),o(N,{open:e.showReviewModal,"onUpdate:open":a[17]||(a[17]=n=>e.showReviewModal=n),title:t.$t("codegen.review_modal.title"),width:720,footer:null},{default:l(()=>[v("div",zt,[o(I,{"label-col":{span:5},"wrapper-col":{span:19}},{default:l(()=>[o(p,{label:t.$t("codegen.review_modal.languageLabel")},{default:l(()=>[o(O,{value:e.reviewForm.language,"onUpdate:value":a[14]||(a[14]=n=>e.reviewForm.language=n),placeholder:t.$t("codegen.review_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.review_modal.generationIdLabel")},{default:l(()=>[o(O,{value:e.reviewForm.generationId,"onUpdate:value":a[15]||(a[15]=n=>e.reviewForm.generationId=n),placeholder:t.$t("codegen.review_modal.generationIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.review_modal.codeLabel"),required:""},{default:l(()=>[o(y,{value:e.reviewForm.code,"onUpdate:value":a[16]||(a[16]=n=>e.reviewForm.code=n),placeholder:t.$t("codegen.review_modal.codePlaceholder"),"auto-size":{minRows:6,maxRows:16}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{"wrapper-col":{offset:5,span:19}},{default:l(()=>[o(S,{type:"primary",loading:e.reviewing,onClick:e.submitReview},{icon:l(()=>[o(e.SafetyOutlined)]),default:l(()=>[g(" "+s(t.$t("codegen.review_modal.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(X),e.reviewResult?(d(),f("div",Tt,[o(D,{gutter:12,style:{"margin-bottom":"12px"}},{default:l(()=>[o(j,{span:8},{default:l(()=>[o(T,{title:t.$t("codegen.review_modal.issuesStat"),value:e.reviewResult.issuesFound,"value-style":{color:e.reviewResult.issuesFound>0?"#fa8c16":"#52c41a",fontSize:"18px"}},null,8,["title","value","value-style"])]),_:1}),o(j,{span:8},{default:l(()=>[o(T,{title:t.$t("codegen.review_modal.securityStat"),value:e.reviewResult.securityIssues,"value-style":{color:e.reviewResult.securityIssues>0?"#ff4d4f":"#52c41a",fontSize:"18px"}},null,8,["title","value","value-style"])]),_:1}),o(j,{span:8},{default:l(()=>[o(T,{title:t.$t("codegen.review_modal.reviewIdStat"),value:e.reviewResult.reviewId?e.reviewResult.reviewId.slice(0,8):"—","value-style":{fontSize:"14px",fontFamily:"monospace"}},null,8,["title","value"])]),_:1})]),_:1}),v("h5",Ot,s(t.$t("codegen.review_modal.bySeverity")),1),o(W,null,{default:l(()=>[(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,n=>(d(),k(h,{key:n,color:e.severityColor(n)},{default:l(()=>[g(s(e.severityLabel(n))+": "+s(e.reviewResult.severitySummary[n]||0),1)]),_:2},1032,["color"]))),128))]),_:1}),e.reviewResult.reason?(d(),k(ae,{key:0,type:"warning","show-icon":"",message:t.$t("codegen.review_modal.failedReason",{reason:e.reviewResult.reason}),style:{"margin-top":"12px"}},null,8,["message"])):c("v-if",!0)])):(d(),k(oe,{key:0,description:t.$t("codegen.review_modal.notReviewed"),image:e.EMPTY_IMG},null,8,["description","image"]))])]),_:1},8,["open","title"]),c(" ── Scaffold modal ──────────────────────────────────────── "),o(N,{open:e.showScaffoldModal,"onUpdate:open":a[23]||(a[23]=n=>e.showScaffoldModal=n),title:t.$t("codegen.scaffold_modal.title"),"confirm-loading":e.scaffolding,width:560,"ok-text":t.$t("codegen.scaffold_modal.ok"),"cancel-text":t.$t("codegen.scaffold_modal.cancel"),onOk:e.submitScaffold,onCancel:e.resetScaffoldForm},{default:l(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(p,{label:t.$t("codegen.scaffold_modal.templateLabel"),required:""},{default:l(()=>[o(ne,{value:e.scaffoldForm.template,"onUpdate:value":a[18]||(a[18]=n=>e.scaffoldForm.template=n)},{default:l(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,n=>(d(),k(le,{key:n,value:n},{default:l(()=>[g(s(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.projectLabel"),required:""},{default:l(()=>[o(O,{value:e.scaffoldForm.projectName,"onUpdate:value":a[19]||(a[19]=n=>e.scaffoldForm.projectName=n),placeholder:t.$t("codegen.scaffold_modal.projectPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.optionsLabel")},{default:l(()=>[o(y,{value:e.scaffoldForm.optionsJson,"onUpdate:value":a[20]||(a[20]=n=>e.scaffoldForm.optionsJson=n),placeholder:t.$t("codegen.scaffold_modal.optionsPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.filesLabel")},{default:l(()=>[o(b,{value:e.scaffoldForm.files,"onUpdate:value":a[21]||(a[21]=n=>e.scaffoldForm.files=n),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.outputLabel")},{default:l(()=>[o(O,{value:e.scaffoldForm.outputPath,"onUpdate:value":a[22]||(a[22]=n=>e.scaffoldForm.outputPath=n),placeholder:t.$t("codegen.scaffold_modal.outputPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),c(" ── Generation details modal ───────────────────────────── "),o(N,{open:e.showGenDetailsModal,"onUpdate:open":a[24]||(a[24]=n=>e.showGenDetailsModal=n),title:t.$t("codegen.gen_details.title",{id:e.currentGen?.id?.slice(0,12)||""}),width:780,footer:null},{default:l(()=>[e.currentGen?(d(),f("div",Gt,[o($,{column:2,size:"small",bordered:""},{default:l(()=>[o(C,{label:t.$t("codegen.gen_details.id"),span:2},{default:l(()=>[v("span",jt,s(e.currentGen.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.language")},{default:l(()=>[e.currentGen.language?(d(),k(h,{key:0,color:"blue"},{default:l(()=>[g(s(e.currentGen.language),1)]),_:1})):(d(),f("span",Et,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.framework")},{default:l(()=>[e.currentGen.framework?(d(),k(h,{key:0,color:"purple"},{default:l(()=>[g(s(e.currentGen.framework),1)]),_:1})):(d(),f("span",Lt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.fileCount")},{default:l(()=>[g(s(e.currentGen.fileCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.tokenCount")},{default:l(()=>[g(s(e.currentGen.tokenCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.createdAt"),span:2},{default:l(()=>[g(s(e.formatCodegenTime(e.currentGen.createdAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.prompt"),span:2},{default:l(()=>[v("pre",Pt,s(e.currentGen.prompt),1)]),_:1},8,["label"]),e.currentGen.generatedCode?(d(),k(C,{key:0,label:t.$t("codegen.gen_details.code"),span:2},{default:l(()=>[v("pre",Mt,s(e.truncate(e.currentGen.generatedCode,2e3)),1)]),_:1},8,["label"])):c("v-if",!0)]),_:1})])):c("v-if",!0)]),_:1},8,["open","title"]),c(" ── Review details modal ──────────────────────────────── "),o(N,{open:e.showReviewDetailsModal,"onUpdate:open":a[25]||(a[25]=n=>e.showReviewDetailsModal=n),title:t.$t("codegen.review_details.title",{id:e.currentReview?.id?.slice(0,12)||""}),width:720,footer:null},{default:l(()=>[e.currentReview?(d(),f("div",Nt,[o($,{column:2,size:"small",bordered:""},{default:l(()=>[o(C,{label:t.$t("codegen.review_details.id"),span:2},{default:l(()=>[v("span",Dt,s(e.currentReview.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.codeHash"),span:2},{default:l(()=>[v("span",Ut,s(e.currentReview.codeHash),1)]),_:1},8,["label"]),e.currentReview.generationId?(d(),k(C,{key:0,label:t.$t("codegen.review_details.generationId"),span:2},{default:l(()=>[v("span",Jt,s(e.currentReview.generationId),1)]),_:1},8,["label"])):c("v-if",!0),o(C,{label:t.$t("codegen.review_details.language")},{default:l(()=>[e.currentReview.language?(d(),k(h,{key:0,color:"blue"},{default:l(()=>[g(s(e.currentReview.language),1)]),_:1})):(d(),f("span",Bt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.reviewedAt")},{default:l(()=>[g(s(e.formatCodegenTime(e.currentReview.reviewedAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.issuesFound")},{default:l(()=>[g(s(e.currentReview.issuesFound),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.securityIssues")},{default:l(()=>[v("span",{style:ve({color:e.currentReview.securityIssues>0?"#ff4d4f":"#52c41a"})},s(e.currentReview.securityIssues),5)]),_:1},8,["label"])]),_:1}),v("h4",Vt,s(t.$t("codegen.review_details.bySeverity")),1),(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,n=>(d(),f("div",{key:n,class:"bd-row"},[o(h,{color:e.severityColor(n),style:{"min-width":"70px","text-align":"center"}},{default:l(()=>[g(s(e.severityLabel(n)),1)]),_:2},1032,["color"]),o(re,{percent:e.pctOfTotal(e.currentReview.severitySummary[n]||0,e.currentReview.issuesFound),"stroke-color":e.severityBarColor(n),format:()=>`${e.currentReview.severitySummary[n]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentReview.issuesDetail.length?(d(),f("h4",qt,s(t.$t("codegen.review_details.issues")),1)):c("v-if",!0),e.currentReview.issuesDetail.length?(d(),k(ie,{key:1,size:"small","data-source":e.currentReview.issuesDetail,pagination:{pageSize:8}},{renderItem:l(({item:n})=>[o(se,null,{default:l(()=>[o(h,{color:e.severityColor(n.severity),style:{"min-width":"60px","text-align":"center"}},{default:l(()=>[g(s(e.severityLabel(n.severity)),1)]),_:2},1032,["color"]),v("span",Wt,s(n.rule),1),v("code",Ht,s(e.truncate(n.match,60)),1)]),_:2},1024)]),_:1},8,["data-source"])):c("v-if",!0)])):c("v-if",!0)]),_:1},8,["open","title"])])}const $t=Ge(Ye,[["render",Kt],["__scopeId","data-v-b0047198"],["__file","/tmp/cc-web-panel-DNn50E/repo/packages/web-panel/src/views/Codegen.vue"]]);export{$t as default};
@@ -1 +0,0 @@
1
- import{I as p,J as m,U as g,R as r,c as a,K as l,V as c,S as _,o as ne,a as X,b as E,r as h,P as s,Q as b,F as R,Z as Y,$ as ie}from"./vendor-BvqAck49.js";import{_ as he,u as re,b as se,d as v}from"./index-D9ImwlR4.js";import{s as _e}from"./community-parser-CO25nZFt.js";import{s as ke,am as xe,ak as ze,G as Se,Z as Ae,b2 as Te,D as Ce,b3 as Oe,as as Fe,R as Re}from"./icons-DP3uiYxy.js";function Z(e){const o=_e(e);if(!o)return null;try{return JSON.parse(o)}catch{}const u=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!u)return null;try{return JSON.parse(u[0])}catch{return null}}const we=Object.freeze(["file-md5","file-sha1","file-sha256","file-sha512","ipv4","ipv6","domain","url","email"]);function T(e,o=0){return typeof e=="number"&&Number.isFinite(e)?e:o}function ye(e,o=0){if(!e||typeof e!="object")return null;const u=e.id||"";if(!u)return null;const t=Array.isArray(e.labels)?e.labels:[];return{key:u,id:u,type:String(e.type||""),value:String(e.value||""),labels:t,confidence:e.confidence!=null?T(e.confidence,null):null,sourceId:e.sourceId??e.source_id??null,sourceName:e.sourceName??e.source_name??null,validFrom:e.validFrom??e.valid_from??null,validUntil:e.validUntil??e.valid_until??null,firstSeenAt:e.firstSeenAt??e.first_seen_at??null,lastSeenAt:e.lastSeenAt??e.last_seen_at??null,_idx:o}}function ce(e){const o=Z(e);return Array.isArray(o)?o.map(ye).filter(Boolean):[]}function ue(e){const o=Z(e);return!o||typeof o!="object"||Array.isArray(o)?null:{matched:!!o.matched,type:String(o.type||"unknown"),indicator:o.indicator?ye(o.indicator):null}}function de(e){const o={total:0,byType:{}},u=Z(e);if(!u||typeof u!="object"||Array.isArray(u))return o;if(o.total=T(u.total,0),u.byType&&typeof u.byType=="object")for(const[t,C]of Object.entries(u.byType))typeof C=="number"&&Number.isFinite(C)&&(o.byType[t]=C);return o}function Ue(e,o=0){if(!e||typeof e!="object")return null;const u=e.entity||"";return u?{key:u,entity:u,eventCount:T(e.eventCount??e.event_count,0),failureRate:T(e.failureRate??e.failure_rate,0),uniqueResources:T(e.uniqueResources??e.unique_resources,0),uniqueActions:T(e.uniqueActions??e.unique_actions,0),burstiness:T(e.burstiness,0),riskScore:T(e.riskScore??e.risk_score,0),_idx:o}:null}function me(e){const o=Z(e);return Array.isArray(o)?o.map(Ue).filter(Boolean):[]}function je(e,o=0){return!e||typeof e!="object"?null:{key:o,score:T(e.score,0),reasons:Array.isArray(e.reasons)?e.reasons:[],event:e.event&&typeof e.event=="object"?e.event:null,_idx:o}}function pe(e){const o=Z(e);return Array.isArray(o)?o.map(je).filter(Boolean):[]}function $(e){if(!e)return{noAuditLog:!1,error:""};const o=/no such table:\s*audit_log/i.test(e),u=e.match(/Failed:\s*(.+?)(?:\r?\n|$)/i);return{noAuditLog:o,error:u?u[1].trim():""}}function Be(e){if(e==null||e==="")return"—";const o=typeof e=="number"?new Date(e):new Date(String(e));return isNaN(o.getTime())?String(e):o.toLocaleString("zh-CN",{hour12:!1})}const Ee={__name:"Compliance",setup(e,{expose:o}){o();const u=re(),{t}=se(),C=h(!1),G=h(!1),w=h(!1),U=h(!1),I=h([]),M=h({total:0,byType:{}}),N=h([]),z=h([]),k=h({noAuditLog:!1,error:""}),A=h("threat"),D=h(""),x=h(!1),j=h(!1),L=h(!1),H=X({observable:""}),B=h(null),O=X({entity:"",days:30}),S=X({entity:"",threshold:.7,days:1}),ee=E(()=>[{title:t("compliance.cols.type"),key:"type",width:"120px"},{title:t("compliance.cols.value"),key:"value"},{title:t("compliance.cols.labels"),key:"labels",width:"160px"},{title:t("compliance.cols.confidence"),key:"confidence",width:"90px"},{title:t("compliance.cols.source"),key:"source",width:"160px"},{title:t("compliance.cols.lastSeen"),key:"lastSeen",width:"160px"},{title:t("compliance.cols.action"),key:"action",width:"90px"}]),te=E(()=>[{title:t("compliance.cols.entity"),key:"entity",width:"180px"},{title:t("compliance.cols.riskScore"),key:"riskScore"},{title:t("compliance.cols.eventCount"),key:"eventCount",width:"90px"},{title:t("compliance.cols.failureRate"),key:"failureRate",width:"90px"},{title:t("compliance.cols.uniqueResources"),key:"uniqueResources",width:"90px"},{title:t("compliance.cols.burstiness"),key:"burstiness",width:"90px"}]),ae=E(()=>D.value?I.value.filter(i=>i.type===D.value):I.value),oe=E(()=>Object.keys(M.value.byType).length),W=E(()=>Object.entries(M.value.byType).sort((i,y)=>y[1]-i[1])),F=E(()=>N.value.filter(i=>i.riskScore>=70).length),P={ipv4:"blue",ipv6:"cyan",domain:"purple",url:"magenta",email:"gold","file-md5":"orange","file-sha1":"orange","file-sha256":"red","file-sha512":"red",unknown:"default"};function V(i){return P[i]||"default"}function J(i){return i>=80?"#ff4d4f":i>=50?"#faad14":"#52c41a"}function n(i){return i>=70?"#ff4d4f":i>=40?"#faad14":"#52c41a"}function d(i,y){return i?i.length>y?i.slice(0,y)+"...":i:""}function K({key:i}){i==="match"?(B.value=null,x.value=!0):i==="ueba-build"?j.value=!0:i==="ueba-analyze"&&(L.value=!0)}async function Q(){C.value=!0;try{const[i,y,f]=await Promise.all([u.execute("compliance threat-intel list --limit 200 --json",1e4).catch(()=>({output:""})),u.execute("compliance threat-intel stats --json",8e3).catch(()=>({output:""})),u.execute("compliance ueba top --top-k 20 --json",1e4).catch(()=>({output:""}))]);I.value=ce(i.output),M.value=de(y.output),k.value=$(f.output),N.value=k.value.noAuditLog?[]:me(f.output)}catch(i){v.error(t("compliance.msg.loadFailed")+": "+(i?.message||i))}finally{C.value=!1}}async function fe(){const i=H.observable.trim();if(!i){v.warning(t("compliance.msg.matchEmpty"));return}G.value=!0,B.value=null;try{const y=`compliance threat-intel match "${i.replace(/"/g,'\\"')}" --json`,{output:f}=await u.execute(y,8e3),q=ue(f);if(!q){v.error(t("compliance.msg.matchFailed")+": "+f.slice(0,120));return}B.value=q,q.matched?v.warning(t("compliance.msg.matchHit",{type:q.type})):q.type==="unknown"?v.info(t("compliance.msg.matchUnknownType")):v.success(t("compliance.msg.matchMiss",{type:q.type}))}catch(y){v.error(t("compliance.msg.matchFailed")+": "+(y?.message||y))}finally{G.value=!1}}async function be(i){try{const y=`compliance threat-intel remove ${i.type} "${i.value.replace(/"/g,'\\"')}" --json`,{output:f}=await u.execute(y,8e3);if(/error|失败/i.test(f)&&!/"removed"/.test(f)){v.error(t("compliance.msg.deleteFailed")+": "+f.slice(0,120));return}v.success(t("compliance.msg.deleteSuccess")),await Q()}catch(y){v.error(t("compliance.msg.deleteFailed")+": "+(y?.message||y))}}async function ve(){w.value=!0;try{const i=["compliance ueba baseline"];O.entity.trim()&&i.push(`--entity "${O.entity.trim().replace(/"/g,'\\"')}"`),O.days!=null&&i.push(`--days ${O.days}`),i.push("--json");const{output:y}=await u.execute(i.join(" "),3e4),f=$(y);if(f.noAuditLog){k.value=f,v.warning(t("compliance.msg.auditEmptyBuild")),j.value=!1;return}if(f.error){v.error(t("compliance.msg.buildFailed")+": "+f.error);return}v.success(t("compliance.msg.buildSuccess")),j.value=!1,A.value="ueba",await Q()}catch(i){v.error(t("compliance.msg.buildFailed")+": "+(i?.message||i))}finally{w.value=!1}}async function ge(){U.value=!0;try{const i=["compliance ueba analyze"];S.entity.trim()&&i.push(`--entity "${S.entity.trim().replace(/"/g,'\\"')}"`),S.threshold!=null&&i.push(`--threshold ${S.threshold}`),S.days!=null&&i.push(`--days ${S.days}`),i.push("--json");const{output:y}=await u.execute(i.join(" "),3e4),f=$(y);if(f.noAuditLog){k.value=f,v.warning(t("compliance.msg.auditEmptyAnalyze")),L.value=!1;return}if(f.error&&!y.includes("[")){v.error(t("compliance.msg.analyzeFailed")+": "+f.error);return}z.value=pe(y),v.success(t("compliance.msg.analyzeSuccess",{n:z.value.length})),L.value=!1,A.value="ueba"}catch(i){v.error(t("compliance.msg.analyzeFailed")+": "+(i?.message||i))}finally{U.value=!1}}ne(Q);const le={ws:u,t,loading:C,matching:G,building:w,analyzing:U,indicators:I,threatStats:M,uebaTop:N,anomalies:z,uebaError:k,activeTab:A,iocTypeFilter:D,showMatchModal:x,showBuildModal:j,showAnalyzeModal:L,matchForm:H,matchResult:B,buildForm:O,analyzeForm:S,indicatorColumns:ee,uebaColumns:te,filteredIndicators:ae,threatTypeCount:oe,typeBreakdown:W,highRiskCount:F,IOC_TYPE_COLORS:P,iocTypeColor:V,confidenceColor:J,riskColor:n,truncate:d,handleNewClick:K,loadAll:Q,matchObservable:fe,removeIndicator:be,buildBaseline:ve,runAnalyze:ge,ref:h,computed:E,onMounted:ne,reactive:X,get ReloadOutlined(){return Re},get PlusOutlined(){return Fe},get AimOutlined(){return Oe},get DatabaseOutlined(){return Ce},get FundOutlined(){return Te},get SafetyCertificateOutlined(){return Ae},get BlockOutlined(){return Se},get UserOutlined(){return ze},get WarningOutlined(){return xe},get AlertOutlined(){return ke},get message(){return v},get useI18n(){return se},get useWsStore(){return re},get parseIndicators(){return ce},get parseMatchResult(){return ue},get parseThreatIntelStats(){return de},get parseUebaTop(){return me},get parseAnomalies(){return pe},get detectUebaError(){return $},get formatComplianceTime(){return Be},get IOC_TYPES(){return we}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Ie={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Me={class:"page-title"},Ne={class:"page-sub"},Le={class:"filter-bar"},Pe={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px","word-break":"break-all"}},qe={key:0,style:{color:"var(--text-muted)"}},De={key:1,style:{color:"var(--text-muted)"}},We={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Ve={key:1,style:{color:"var(--text-muted)"}},Je={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Ke={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ye={style:{color:"var(--text-primary)",margin:"16px 0 8px","font-size":"14px"}},Ze={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ge={key:2,style:{color:"var(--text-secondary)"}},He={key:5,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Qe={style:{padding:"30px",color:"var(--text-muted)","text-align":"center"}},Xe={key:2,style:{color:"var(--text-primary)",margin:"24px 0 8px","font-size":"14px"}},$e={style:{flex:"1"}},et={style:{display:"flex",gap:"8px","align-items":"center"}},tt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},at={key:1,style:{color:"var(--text-secondary)","font-size":"11px"}},ot={key:0,style:{"margin-top":"4px"}},lt={style:{"margin-top":"8px","font-size":"12px",color:"var(--text-secondary)"}},nt={key:0,style:{"margin-top":"12px","font-size":"12px"}},it={style:{color:"var(--text-secondary)"}},rt={style:{color:"var(--text-secondary)"}},st={key:0,style:{"margin-top":"4px"}},ct={style:{color:"var(--text-secondary)","font-size":"12px",margin:"0"}},ut={style:{color:"var(--text-secondary)","font-size":"12px",margin:"0"}};function dt(e,o,u,t,C,G){const w=p("a-button"),U=p("a-menu-item"),I=p("a-menu"),M=p("a-dropdown"),N=p("a-space"),z=p("a-statistic"),k=p("a-card"),A=p("a-col"),D=p("a-row"),x=p("a-tag"),j=p("a-radio-button"),L=p("a-radio-group"),H=p("a-popconfirm"),B=p("a-table"),O=p("a-tab-pane"),S=p("a-alert"),ee=p("a-progress"),te=p("a-list-item"),ae=p("a-list"),oe=p("a-tabs"),W=p("a-input"),F=p("a-form-item"),P=p("a-form"),V=p("a-modal"),J=p("a-input-number");return s(),m("div",null,[g("div",Ie,[g("div",null,[g("h2",Me,r(e.$t("compliance.title")),1),g("p",Ne,r(e.$t("compliance.subtitle")),1)]),a(N,null,{default:l(()=>[a(w,{loading:t.loading,onClick:t.loadAll},{icon:l(()=>[a(t.ReloadOutlined)]),default:l(()=>[b(" "+r(e.$t("compliance.refresh")),1)]),_:1},8,["loading"]),a(M,{trigger:["click"]},{overlay:l(()=>[a(I,{onClick:t.handleNewClick},{default:l(()=>[a(U,{key:"match"},{default:l(()=>[a(t.AimOutlined),b(" "+r(e.$t("compliance.actions.match")),1)]),_:1}),a(U,{key:"ueba-build"},{default:l(()=>[a(t.DatabaseOutlined),b(" "+r(e.$t("compliance.actions.uebaBuild")),1)]),_:1}),a(U,{key:"ueba-analyze"},{default:l(()=>[a(t.FundOutlined),b(" "+r(e.$t("compliance.actions.uebaAnalyze")),1)]),_:1})]),_:1})]),default:l(()=>[a(w,{type:"primary"},{icon:l(()=>[a(t.PlusOutlined)]),default:l(()=>[b(" "+r(e.$t("compliance.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),c(" Stats overview "),a(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[a(A,{xs:12,sm:8,lg:5},{default:l(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(z,{title:e.$t("compliance.stats.iocTotal"),value:t.threatStats.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[a(t.SafetyCertificateOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(A,{xs:12,sm:8,lg:5},{default:l(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(z,{title:e.$t("compliance.stats.iocTypes"),value:t.threatTypeCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:l(()=>[a(t.BlockOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(A,{xs:12,sm:8,lg:5},{default:l(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(z,{title:e.$t("compliance.stats.riskEntities"),value:t.uebaTop.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[a(t.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(A,{xs:12,sm:8,lg:5},{default:l(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(z,{title:e.$t("compliance.stats.highRisk"),value:t.highRiskCount,"value-style":{color:t.highRiskCount>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:l(()=>[a(t.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(A,{xs:24,sm:8,lg:4},{default:l(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(z,{title:e.$t("compliance.stats.recentAnomalies"),value:t.anomalies.length,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:l(()=>[a(t.AlertOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),c(" Type breakdown "),t.threatStats.total>0?(s(),_(k,{key:0,title:e.$t("compliance.typeBreakdown"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:l(()=>[a(N,{size:[12,8],wrap:""},{default:l(()=>[(s(!0),m(R,null,Y(t.typeBreakdown,([n,d])=>(s(),_(x,{key:n,color:t.iocTypeColor(n)},{default:l(()=>[b(r(n)+": "+r(d),1)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):c("v-if",!0),c(" Tabs "),a(oe,{activeKey:t.activeTab,"onUpdate:activeKey":o[1]||(o[1]=n=>t.activeTab=n),class:"compliance-tabs"},{default:l(()=>[c(" ── Threat Intel tab ──────────────────────────────────────── "),a(O,{key:"threat",tab:e.$t("compliance.tabs.threat")},{default:l(()=>[g("div",Le,[a(L,{value:t.iocTypeFilter,"onUpdate:value":o[0]||(o[0]=n=>t.iocTypeFilter=n),size:"small"},{default:l(()=>[a(j,{value:""},{default:l(()=>[b(r(e.$t("compliance.filter.all")),1)]),_:1}),(s(!0),m(R,null,Y(t.IOC_TYPES,n=>(s(),_(j,{key:n,value:n},{default:l(()=>[b(r(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(B,{columns:t.indicatorColumns,"data-source":t.filteredIndicators,pagination:{pageSize:20,showTotal:n=>e.$t("compliance.table.totalSuffix",{n})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:d})=>[n.key==="type"?(s(),_(x,{key:0,color:t.iocTypeColor(d.type),style:{"font-family":"monospace"}},{default:l(()=>[b(r(d.type),1)]),_:2},1032,["color"])):c("v-if",!0),n.key==="value"?(s(),m("span",Pe,r(t.truncate(d.value,64)),1)):c("v-if",!0),n.key==="labels"?(s(),m(R,{key:2},[(s(!0),m(R,null,Y(d.labels,K=>(s(),_(x,{key:K,color:"orange",style:{"font-size":"10px",margin:"1px"}},{default:l(()=>[b(r(K),1)]),_:2},1024))),128)),d.labels.length?c("v-if",!0):(s(),m("span",qe,"—"))],64)):c("v-if",!0),n.key==="confidence"?(s(),m(R,{key:3},[d.confidence!=null?(s(),m("span",{key:0,style:ie({color:t.confidenceColor(d.confidence),fontWeight:500})},r(d.confidence),5)):(s(),m("span",De,"—"))],64)):c("v-if",!0),n.key==="source"?(s(),m(R,{key:4},[d.sourceName?(s(),m("span",We,r(d.sourceName),1)):(s(),m("span",Ve,"—"))],64)):c("v-if",!0),n.key==="lastSeen"?(s(),m("span",Je,r(t.formatComplianceTime(d.lastSeenAt)),1)):c("v-if",!0),n.key==="action"?(s(),_(H,{key:6,title:e.$t("compliance.table.deleteConfirm"),"ok-text":e.$t("compliance.table.deleteOk"),"cancel-text":e.$t("compliance.table.cancel"),onConfirm:K=>t.removeIndicator(d)},{default:l(()=>[a(w,{size:"small",type:"link",danger:""},{default:l(()=>[b(r(e.$t("compliance.table.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):c("v-if",!0)]),emptyText:l(()=>[g("div",Ke,[a(t.SafetyCertificateOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+r(e.$t("compliance.table.emptyThreatsLine1"))+" ",1),o[11]||(o[11]=g("code",{style:{"font-size":"11px"}},"cc compliance threat-intel import <file.json>",-1))])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),c(" ── UEBA tab ──────────────────────────────────────────────── "),a(O,{key:"ueba",tab:e.$t("compliance.tabs.ueba")},{default:l(()=>[t.uebaError.noAuditLog?(s(),_(S,{key:0,type:"info","show-icon":"",message:e.$t("compliance.ueba.noAuditLog"),description:e.$t("compliance.ueba.noAuditLogDesc"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):t.uebaError.error?(s(),_(S,{key:1,type:"error","show-icon":"",message:e.$t("compliance.ueba.errorMessage",{err:t.uebaError.error}),style:{"margin-bottom":"16px"}},null,8,["message"])):c("v-if",!0),g("h3",Ye,r(e.$t("compliance.ueba.topRiskTitle",{count:t.uebaTop.length})),1),a(B,{columns:t.uebaColumns,"data-source":t.uebaTop,pagination:!1,size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:n,record:d})=>[n.key==="entity"?(s(),m("span",Ze,r(d.entity),1)):c("v-if",!0),n.key==="riskScore"?(s(),_(ee,{key:1,percent:Math.min(d.riskScore,100),"stroke-color":t.riskColor(d.riskScore),size:"small",format:()=>d.riskScore.toFixed(1)},null,8,["percent","stroke-color","format"])):c("v-if",!0),n.key==="eventCount"?(s(),m("span",Ge,r(d.eventCount),1)):c("v-if",!0),n.key==="failureRate"?(s(),m("span",{key:3,style:ie({color:d.failureRate>.3?"#ff4d4f":"var(--text-secondary)",fontFamily:"monospace"})},r((d.failureRate*100).toFixed(1))+"% ",5)):c("v-if",!0),n.key==="uniqueResources"?(s(),_(x,{key:4,color:"cyan",style:{"font-size":"11px"}},{default:l(()=>[b(r(d.uniqueResources),1)]),_:2},1024)):c("v-if",!0),n.key==="burstiness"?(s(),m("span",He,r((d.burstiness*100).toFixed(0))+"% ",1)):c("v-if",!0)]),emptyText:l(()=>[g("div",Qe,[a(t.UserOutlined,{style:{"font-size":"32px","margin-bottom":"8px",display:"block"}}),b(" "+r(t.uebaError.noAuditLog?e.$t("compliance.table.emptyAuditEntities"):e.$t("compliance.table.emptyRiskEntities")),1)])]),_:1},8,["columns","data-source","loading"]),t.anomalies.length?(s(),m("h3",Xe,r(e.$t("compliance.ueba.anomalyTitle",{count:t.anomalies.length})),1)):c("v-if",!0),t.anomalies.length?(s(),_(ae,{key:3,size:"small","data-source":t.anomalies,locale:{emptyText:e.$t("compliance.table.noAnomalies")}},{renderItem:l(({item:n})=>[a(te,{style:{background:"var(--bg-card)",padding:"10px 16px"}},{default:l(()=>[g("div",$e,[g("div",et,[a(x,{color:t.riskColor(n.score*100)},{default:l(()=>[b("score "+r(n.score.toFixed(2)),1)]),_:2},1032,["color"]),n.event?.entity?(s(),m("span",tt,r(n.event.entity),1)):c("v-if",!0),n.event?.action?(s(),m("span",at," → "+r(n.event.action),1)):c("v-if",!0)]),n.reasons.length?(s(),m("div",ot,[(s(!0),m(R,null,Y(n.reasons,d=>(s(),_(x,{key:d,color:"volcano",style:{"font-size":"10px",margin:"1px"}},{default:l(()=>[b(r(d),1)]),_:2},1024))),128))])):c("v-if",!0)])]),_:2},1024)]),_:1},8,["data-source","locale"])):c("v-if",!0)]),_:1},8,["tab"])]),_:1},8,["activeKey"]),c(" ── Match modal ───────────────────────────────────────────── "),a(V,{open:t.showMatchModal,"onUpdate:open":o[3]||(o[3]=n=>t.showMatchModal=n),title:e.$t("compliance.match.modalTitle"),"confirm-loading":t.matching,width:500,"ok-text":e.$t("compliance.match.ok"),"cancel-text":e.$t("compliance.match.close"),onOk:t.matchObservable},{default:l(()=>[a(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[a(F,{label:e.$t("compliance.match.label"),required:""},{default:l(()=>[a(W,{value:t.matchForm.observable,"onUpdate:value":o[2]||(o[2]=n=>t.matchForm.observable=n),placeholder:e.$t("compliance.match.placeholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),t.matchResult?(s(),_(k,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:l(()=>[a(z,{title:e.$t("compliance.match.result"),value:t.matchResult.matched?e.$t("compliance.match.hit"):e.$t("compliance.match.miss"),"value-style":{color:t.matchResult.matched?"#ff4d4f":"#52c41a"}},null,8,["title","value","value-style"]),g("div",lt,[b(r(e.$t("compliance.match.detectType"))+" ",1),a(x,{color:t.iocTypeColor(t.matchResult.type)},{default:l(()=>[b(r(t.matchResult.type),1)]),_:1},8,["color"])]),t.matchResult.indicator?(s(),m("div",nt,[g("div",it,r(e.$t("compliance.match.sourcePrefix"))+" "+r(t.matchResult.indicator.sourceName||"—"),1),g("div",rt,r(e.$t("compliance.match.confidencePrefix"))+" "+r(t.matchResult.indicator.confidence??"—"),1),t.matchResult.indicator.labels.length?(s(),m("div",st,[(s(!0),m(R,null,Y(t.matchResult.indicator.labels,n=>(s(),_(x,{key:n,color:"orange",style:{"font-size":"10px"}},{default:l(()=>[b(r(n),1)]),_:2},1024))),128))])):c("v-if",!0)])):c("v-if",!0)]),_:1})):c("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),c(" ── UEBA build baseline modal ─────────────────────────────── "),a(V,{open:t.showBuildModal,"onUpdate:open":o[6]||(o[6]=n=>t.showBuildModal=n),title:e.$t("compliance.build.modalTitle"),"confirm-loading":t.building,width:480,"ok-text":e.$t("compliance.build.ok"),"cancel-text":e.$t("compliance.build.cancel"),onOk:t.buildBaseline},{default:l(()=>[a(P,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(F,{label:e.$t("compliance.build.entityLabel")},{default:l(()=>[a(W,{value:t.buildForm.entity,"onUpdate:value":o[4]||(o[4]=n=>t.buildForm.entity=n),placeholder:e.$t("compliance.build.entityPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(F,{label:e.$t("compliance.build.daysLabel")},{default:l(()=>[a(J,{value:t.buildForm.days,"onUpdate:value":o[5]||(o[5]=n=>t.buildForm.days=n),min:1,max:365,placeholder:e.$t("compliance.build.daysPlaceholder"),style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),g("p",ct,r(e.$t("compliance.build.footnote")),1)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),c(" ── UEBA analyze modal ────────────────────────────────────── "),a(V,{open:t.showAnalyzeModal,"onUpdate:open":o[10]||(o[10]=n=>t.showAnalyzeModal=n),title:e.$t("compliance.analyze.modalTitle"),"confirm-loading":t.analyzing,width:480,"ok-text":e.$t("compliance.analyze.ok"),"cancel-text":e.$t("compliance.analyze.cancel"),onOk:t.runAnalyze},{default:l(()=>[a(P,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(F,{label:e.$t("compliance.analyze.entityLabel")},{default:l(()=>[a(W,{value:t.analyzeForm.entity,"onUpdate:value":o[7]||(o[7]=n=>t.analyzeForm.entity=n),placeholder:e.$t("compliance.analyze.entityPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(F,{label:e.$t("compliance.analyze.thresholdLabel")},{default:l(()=>[a(J,{value:t.analyzeForm.threshold,"onUpdate:value":o[8]||(o[8]=n=>t.analyzeForm.threshold=n),min:0,max:1,step:.05,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(F,{label:e.$t("compliance.analyze.daysLabel")},{default:l(()=>[a(J,{value:t.analyzeForm.days,"onUpdate:value":o[9]||(o[9]=n=>t.analyzeForm.days=n),min:1,max:30,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1}),g("p",ut,r(e.$t("compliance.analyze.footnote")),1)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const bt=he(Ee,[["render",dt],["__scopeId","data-v-d3ffc3f8"],["__file","/tmp/cc-web-panel-DNn50E/repo/packages/web-panel/src/views/Compliance.vue"]]);export{bt as default};
@@ -1 +0,0 @@
1
- import{I as v,J as p,U as y,R as i,c as o,K as n,V as h,S as k,o as te,a as X,b as G,r as C,P as d,Q as b,F as w,Z as T}from"./vendor-BvqAck49.js";import{_ as xe,u as se,b as oe,d as _}from"./index-D9ImwlR4.js";import{s as Fe}from"./community-parser-CO25nZFt.js";import{aU as Se,aC as Ae,aB as Oe,b0 as Me,aG as ze,b1 as Te,t as Ue,as as Re,R as je}from"./icons-DP3uiYxy.js";function H(e){const s=Fe(e);if(!s)return null;try{return JSON.parse(s)}catch{}const l=s.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!l)return null;try{return JSON.parse(l[0])}catch{return null}}function x(e,s=0){return typeof e=="number"&&Number.isFinite(e)?e:s}function Ne(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,name:String(e.name||l),symbol:String(e.symbol||""),chainId:x(e.chainId??e.chain_id,0),_idx:s}:null}function ne(e){const s=H(e);return Array.isArray(s)?s.map(Ne).filter(Boolean):[]}function Be(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,fromChain:e.fromChain??e.from_chain??"",toChain:e.toChain??e.to_chain??"",asset:String(e.asset||"native"),amount:x(e.amount,0),senderAddress:e.senderAddress??e.sender_address??"",recipientAddress:e.recipientAddress??e.recipient_address??"",lockTxHash:e.lockTxHash??e.lock_tx_hash??"",mintTxHash:e.mintTxHash??e.mint_tx_hash??"",status:String(e.status||"pending").toLowerCase(),feeAmount:x(e.feeAmount??e.fee_amount,0),feeChain:e.feeChain??e.fee_chain??"",errorMessage:e.errorMessage??e.error_message??"",createdAt:e.createdAt??e.created_at??null,completedAt:e.completedAt??e.completed_at??null,_idx:s}:null}function re(e){const s=H(e);return Array.isArray(s)?s.map(Be).filter(Boolean):[]}function Le(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,fromChain:e.fromChain??e.from_chain??"",toChain:e.toChain??e.to_chain??"",fromAsset:e.fromAsset??e.from_asset??"native",toAsset:e.toAsset??e.to_asset??"native",amount:x(e.amount,0),counterpartyAddress:e.counterpartyAddress??e.counterparty_address??"",hashLock:e.hashLock??e.hash_lock??"",expiresAt:e.expiresAt??e.expires_at??null,status:String(e.status||"initiated").toLowerCase(),claimTxHash:e.claimTxHash??e.claim_tx_hash??"",refundTxHash:e.refundTxHash??e.refund_tx_hash??"",createdAt:e.createdAt??e.created_at??null,_idx:s}:null}function le(e){const s=H(e);return Array.isArray(s)?s.map(Le).filter(Boolean):[]}function Pe(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,fromChain:e.fromChain??e.from_chain??"",toChain:e.toChain??e.to_chain??"",payload:String(e.payload||""),targetContract:e.targetContract??e.target_contract??"",sourceTxHash:e.sourceTxHash??e.source_tx_hash??"",destinationTxHash:e.destinationTxHash??e.destination_tx_hash??"",status:String(e.status||"pending").toLowerCase(),retries:x(e.retries,0),createdAt:e.createdAt??e.created_at??null,deliveredAt:e.deliveredAt??e.delivered_at??null,_idx:s}:null}function ie(e){const s=H(e);return Array.isArray(s)?s.map(Pe).filter(Boolean):[]}const Ie={bridges:{total:0,byStatus:{},totalVolume:0,totalFees:0},swaps:{total:0,byStatus:{}},messages:{total:0,byStatus:{}}};function de(e){const s=JSON.parse(JSON.stringify(Ie)),l=H(e);return!l||typeof l!="object"||Array.isArray(l)||(l.bridges&&typeof l.bridges=="object"&&(s.bridges.total=x(l.bridges.total,0),s.bridges.totalVolume=x(l.bridges.totalVolume??l.bridges.total_volume,0),s.bridges.totalFees=x(l.bridges.totalFees??l.bridges.total_fees,0),l.bridges.byStatus&&typeof l.bridges.byStatus=="object"&&(s.bridges.byStatus={...l.bridges.byStatus})),l.swaps&&typeof l.swaps=="object"&&(s.swaps.total=x(l.swaps.total,0),l.swaps.byStatus&&typeof l.swaps.byStatus=="object"&&(s.swaps.byStatus={...l.swaps.byStatus})),l.messages&&typeof l.messages=="object"&&(s.messages.total=x(l.messages.total,0),l.messages.byStatus&&typeof l.messages.byStatus=="object"&&(s.messages.byStatus={...l.messages.byStatus}))),s}function ce(e){const s=H(e);return!s||typeof s!="object"||Array.isArray(s)?null:{fee:x(s.fee,0),breakdown:{sourceFee:x(s?.breakdown?.sourceFee??s?.breakdown?.source_fee,0),destFee:x(s?.breakdown?.destFee??s?.breakdown?.dest_fee,0),bridgeFee:x(s?.breakdown?.bridgeFee??s?.breakdown?.bridge_fee,0)},currency:String(s.currency||"USD")}}function He(e){if(e==null||e==="")return"—";const s=typeof e=="number"?new Date(e):new Date(String(e));return isNaN(s.getTime())?String(e):s.toLocaleString("zh-CN",{hour12:!1})}const qe={__name:"Crosschain",setup(e,{expose:s}){s();const l=se(),{t:a}=oe(),K=C(!1),W=C(!1),R=C(!1),j=C(!1),q=C(!1),D=C([]),V=C([]),O=C([]),A=C([]),U=C({bridges:{total:0,byStatus:{},totalVolume:0,totalFees:0},swaps:{total:0,byStatus:{}},messages:{total:0,byStatus:{}}}),L=C("bridges"),M=C(!1),N=C(!1),B=C(!1),Q=C(!1),f=X({fromChain:"",toChain:"",amount:null,asset:"",sender:"",recipient:""}),u=X({fromChain:"",toChain:"",amount:null,fromAsset:"",toAsset:"",counterparty:"",timeoutMs:null}),c=X({fromChain:"",toChain:"",payload:"",contract:""}),F=X({fromChain:"",toChain:"",amount:null}),S=C(null),P=G(()=>[{title:a("crosschain.bridgeCols.route"),key:"route"},{title:a("crosschain.bridgeCols.amount"),key:"amount",width:"160px"},{title:a("crosschain.bridgeCols.fee"),key:"fee",width:"100px"},{title:a("crosschain.bridgeCols.status"),key:"status",width:"110px"},{title:a("crosschain.bridgeCols.createdAt"),key:"createdAt",width:"160px"}]),I=G(()=>[{title:a("crosschain.swapCols.route"),key:"route"},{title:a("crosschain.swapCols.amount"),key:"amount",width:"110px"},{title:a("crosschain.swapCols.hashLock"),key:"hashLock",width:"160px"},{title:a("crosschain.swapCols.status"),key:"status",width:"120px"},{title:a("crosschain.swapCols.expiresAt"),key:"expiresAt",width:"160px"}]),Z=G(()=>[{title:a("crosschain.messageCols.route"),key:"route",width:"220px"},{title:a("crosschain.messageCols.payload"),key:"payload"},{title:a("crosschain.messageCols.retries"),key:"retries",width:"80px"},{title:a("crosschain.messageCols.status"),key:"status",width:"110px"},{title:a("crosschain.messageCols.createdAt"),key:"createdAt",width:"160px"}]),t={ethereum:"blue",polygon:"purple",bsc:"gold",arbitrum:"cyan",solana:"magenta"};function m(r){return t[r]||"default"}function ue(r){const g=D.value.find(z=>z.id===r);return g?g.name:r||"—"}function me(r){const g=`crosschain.statusLabels.${r}`,z=a(g);return z===g?r:z}function fe(r){return{pending:"default",locked:"processing",minted:"cyan",completed:"green",refunded:"orange",failed:"red"}[r]||"default"}function he(r){return{initiated:"default",hash_locked:"processing",claimed:"green",refunded:"orange",expired:"red"}[r]||"default"}function pe(r){return{pending:"default",sent:"processing",delivered:"green",failed:"red"}[r]||"default"}function ge(r,g){return r?r.length>g?r.slice(0,g)+"...":r:""}function ye({key:r}){r==="bridge"?M.value=!0:r==="swap"?N.value=!0:r==="message"&&(B.value=!0)}async function E(){K.value=!0;try{const[r,g,z,ke,we]=await Promise.all([l.execute("crosschain chains --json",8e3).catch(()=>({output:""})),l.execute("crosschain bridges --limit 200 --json",1e4).catch(()=>({output:""})),l.execute("crosschain swaps --limit 200 --json",1e4).catch(()=>({output:""})),l.execute("crosschain messages --limit 200 --json",1e4).catch(()=>({output:""})),l.execute("crosschain stats --json",8e3).catch(()=>({output:""}))]);D.value=ne(r.output),V.value=re(g.output),O.value=le(z.output),A.value=ie(ke.output),U.value=de(we.output)}catch(r){_.error(a("crosschain.msg.loadFailed")+": "+(r?.message||r))}finally{K.value=!1}}function J(r){return!r.fromChain||!r.toChain?(_.warning(a("crosschain.msg.pairEmpty")),!1):r.fromChain===r.toChain?(_.warning(a("crosschain.msg.pairSame")),!1):!0}async function be(){if(J(f)){if(!f.amount||f.amount<=0){_.warning(a("crosschain.msg.amountInvalid"));return}W.value=!0;try{const r=[`crosschain bridge ${f.fromChain} ${f.toChain} ${f.amount}`];f.asset.trim()&&r.push(`--asset "${f.asset.trim().replace(/"/g,'\\"')}"`),f.sender.trim()&&r.push(`--sender "${f.sender.trim().replace(/"/g,'\\"')}"`),f.recipient.trim()&&r.push(`--recipient "${f.recipient.trim().replace(/"/g,'\\"')}"`),r.push("--json");const{output:g}=await l.execute(r.join(" "),15e3);if(/error|failed|失败|unsupported/i.test(g)&&!/"bridgeId"/.test(g)){_.error(a("crosschain.msg.bridgeFailed")+": "+g.slice(0,120));return}_.success(a("crosschain.msg.bridgeSuccess")),M.value=!1,Y(),L.value="bridges",await E()}catch(r){_.error(a("crosschain.msg.bridgeFailed")+": "+(r?.message||r))}finally{W.value=!1}}}async function ve(){if(J(u)){if(!u.amount||u.amount<=0){_.warning(a("crosschain.msg.amountInvalid"));return}R.value=!0;try{const r=[`crosschain swap ${u.fromChain} ${u.toChain} ${u.amount}`];u.fromAsset.trim()&&r.push(`--from-asset "${u.fromAsset.trim().replace(/"/g,'\\"')}"`),u.toAsset.trim()&&r.push(`--to-asset "${u.toAsset.trim().replace(/"/g,'\\"')}"`),u.counterparty.trim()&&r.push(`--counterparty "${u.counterparty.trim().replace(/"/g,'\\"')}"`),u.timeoutMs!=null&&r.push(`--timeout ${u.timeoutMs}`),r.push("--json");const{output:g}=await l.execute(r.join(" "),15e3);if(/error|failed|失败|unsupported/i.test(g)&&!/"swapId"/.test(g)){_.error(a("crosschain.msg.swapFailed")+": "+g.slice(0,120));return}_.success(a("crosschain.msg.swapSuccess")),N.value=!1,$(),L.value="swaps",await E()}catch(r){_.error(a("crosschain.msg.swapFailed")+": "+(r?.message||r))}finally{R.value=!1}}}async function _e(){if(J(c)){j.value=!0;try{const r=[`crosschain send ${c.fromChain} ${c.toChain}`];c.payload.trim()&&r.push(`--payload "${c.payload.trim().replace(/"/g,'\\"')}"`),c.contract.trim()&&r.push(`--contract "${c.contract.trim().replace(/"/g,'\\"')}"`),r.push("--json");const{output:g}=await l.execute(r.join(" "),12e3);if(/error|failed|失败|unsupported/i.test(g)&&!/"messageId"/.test(g)){_.error(a("crosschain.msg.sendFailed")+": "+g.slice(0,120));return}_.success(a("crosschain.msg.sendSuccess")),B.value=!1,ee(),L.value="messages",await E()}catch(r){_.error(a("crosschain.msg.sendFailed")+": "+(r?.message||r))}finally{j.value=!1}}}async function Ce(){if(J(F)){if(!F.amount||F.amount<=0){_.warning(a("crosschain.msg.amountInvalid"));return}q.value=!0,S.value=null;try{const r=`crosschain estimate-fee ${F.fromChain} ${F.toChain} ${F.amount} --json`,{output:g}=await l.execute(r,8e3),z=ce(g);if(!z){_.error(a("crosschain.msg.feeFailed")+": "+g.slice(0,120));return}S.value=z}catch(r){_.error(a("crosschain.msg.feeFailed")+": "+(r?.message||r))}finally{q.value=!1}}}function Y(){f.fromChain="",f.toChain="",f.amount=null,f.asset="",f.sender="",f.recipient=""}function $(){u.fromChain="",u.toChain="",u.amount=null,u.fromAsset="",u.toAsset="",u.counterparty="",u.timeoutMs=null}function ee(){c.fromChain="",c.toChain="",c.payload="",c.contract=""}te(E);const ae={ws:l,t:a,loading:K,bridging:W,swapping:R,sending:j,estimating:q,chains:D,bridges:V,swaps:O,messages:A,stats:U,activeTab:L,showBridgeModal:M,showSwapModal:N,showMessageModal:B,showFeeModal:Q,bridgeForm:f,swapForm:u,messageForm:c,feeForm:F,feeResult:S,bridgeColumns:P,swapColumns:I,messageColumns:Z,CHAIN_COLORS:t,chainColor:m,chainName:ue,statusLabel:me,bridgeStatusColor:fe,swapStatusColor:he,messageStatusColor:pe,truncate:ge,handleNewClick:ye,loadAll:E,validatePair:J,initiateBridge:be,initiateSwap:ve,sendMessage:_e,estimateFee:Ce,resetBridgeForm:Y,resetSwapForm:$,resetMessageForm:ee,ref:C,computed:G,onMounted:te,reactive:X,get ReloadOutlined(){return je},get PlusOutlined(){return Re},get SwapOutlined(){return Ue},get InteractionOutlined(){return Te},get MailOutlined(){return ze},get CalculatorOutlined(){return Me},get LinkOutlined(){return Oe},get DollarOutlined(){return Ae},get ArrowRightOutlined(){return Se},get message(){return _},get useI18n(){return oe},get useWsStore(){return se},get parseChains(){return ne},get parseBridges(){return re},get parseSwaps(){return le},get parseMessages(){return ie},get parseStats(){return de},get parseFeeEstimate(){return ce},get formatXChainTime(){return He}};return Object.defineProperty(ae,"__isScriptSetup",{enumerable:!1,value:!0}),ae}},De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ve={class:"page-title"},Ee={class:"page-sub"},Je={style:{opacity:"0.7"}},Xe={key:0,style:{opacity:"0.55","font-size":"10px","margin-left":"4px"}},Ke={style:{color:"var(--text-primary)"}},We={style:{color:"var(--text-primary)"}},Ge={style:{color:"#722ed1","font-weight":"500"}},Qe={style:{color:"var(--text-secondary)","margin-left":"4px","font-size":"11px"}},Ze={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ye={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},$e={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ea={style:{color:"var(--text-primary)"}},aa={style:{color:"var(--text-secondary)","font-size":"11px",margin:"0 4px"}},ta={style:{color:"var(--text-primary)"}},sa={style:{color:"var(--text-secondary)","font-size":"11px","margin-left":"4px"}},oa={key:1,style:{color:"#722ed1","font-weight":"500"}},na={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},ra={key:1,style:{color:"var(--text-muted)"}},la={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ia={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},da={style:{color:"var(--text-primary)"}},ca={style:{color:"var(--text-primary)"}},ua={key:1,style:{color:"var(--text-secondary)","font-size":"12px"}},ma={key:1,style:{color:"var(--text-muted)"}},fa={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ha={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},pa={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}};function ga(e,s,l,a,K,W){const R=v("a-button"),j=v("a-menu-item"),q=v("a-menu"),D=v("a-dropdown"),V=v("a-space"),O=v("a-statistic"),A=v("a-card"),U=v("a-col"),L=v("a-row"),M=v("a-tag"),N=v("a-table"),B=v("a-tab-pane"),Q=v("a-tabs"),f=v("a-select-option"),u=v("a-select"),c=v("a-form-item"),F=v("a-input-number"),S=v("a-input"),P=v("a-form"),I=v("a-modal"),Z=v("a-textarea");return d(),p("div",null,[y("div",De,[y("div",null,[y("h2",Ve,i(e.$t("crosschain.title")),1),y("p",Ee,i(e.$t("crosschain.subtitle")),1)]),o(V,null,{default:n(()=>[o(R,{loading:a.loading,onClick:a.loadAll},{icon:n(()=>[o(a.ReloadOutlined)]),default:n(()=>[b(" "+i(e.$t("crosschain.refresh")),1)]),_:1},8,["loading"]),o(D,{trigger:["click"]},{overlay:n(()=>[o(q,{onClick:a.handleNewClick},{default:n(()=>[o(j,{key:"bridge"},{default:n(()=>[o(a.SwapOutlined),b(" "+i(e.$t("crosschain.actions.bridge")),1)]),_:1}),o(j,{key:"swap"},{default:n(()=>[o(a.InteractionOutlined),b(" "+i(e.$t("crosschain.actions.swap")),1)]),_:1}),o(j,{key:"message"},{default:n(()=>[o(a.MailOutlined),b(" "+i(e.$t("crosschain.actions.message")),1)]),_:1})]),_:1})]),default:n(()=>[o(R,{type:"primary"},{icon:n(()=>[o(a.PlusOutlined)]),default:n(()=>[b(" "+i(e.$t("crosschain.newDropdown")),1)]),_:1})]),_:1}),o(R,{onClick:s[0]||(s[0]=t=>a.showFeeModal=!0)},{icon:n(()=>[o(a.CalculatorOutlined)]),default:n(()=>[b(" "+i(e.$t("crosschain.feeEstimate")),1)]),_:1})]),_:1})]),h(" Stats overview "),o(L,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.chains"),value:a.chains.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[o(a.LinkOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.bridges"),value:a.stats.bridges.total,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[o(a.SwapOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.swaps"),value:a.stats.swaps.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[o(a.InteractionOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.messages"),value:a.stats.messages.total,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:n(()=>[o(a.MailOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:24,sm:8,lg:4},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.volume"),value:a.stats.bridges.totalVolume,precision:2,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[o(a.DollarOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),h(" Chain catalogue "),a.chains.length?(d(),k(A,{key:0,title:e.$t("crosschain.chainsCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:n(()=>[o(V,{size:[12,8],wrap:""},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(M,{key:t.id,color:a.chainColor(t.id)},{default:n(()=>[b(i(t.name)+" ",1),y("span",Je,"("+i(t.symbol)+")",1),t.chainId>0?(d(),p("span",Xe,"#"+i(t.chainId),1)):h("v-if",!0)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):h("v-if",!0),h(" Tabs "),o(Q,{activeKey:a.activeTab,"onUpdate:activeKey":s[1]||(s[1]=t=>a.activeTab=t),class:"xchain-tabs"},{default:n(()=>[h(" ── Bridges tab ───────────────────────────────────────────── "),o(B,{key:"bridges",tab:e.$t("crosschain.tabs.bridges")},{default:n(()=>[o(N,{columns:a.bridgeColumns,"data-source":a.bridges,pagination:{pageSize:20,showTotal:t=>e.$t("crosschain.table.totalSuffix",{n:t})},size:"small",loading:a.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:t,record:m})=>[t.key==="route"?(d(),p(w,{key:0},[y("span",Ke,i(a.chainName(m.fromChain)),1),o(a.ArrowRightOutlined,{style:{margin:"0 6px",color:"var(--text-secondary)","font-size":"11px"}}),y("span",We,i(a.chainName(m.toChain)),1)],64)):h("v-if",!0),t.key==="amount"?(d(),p(w,{key:1},[y("span",Ge,i(m.amount),1),y("span",Qe,i(m.asset),1)],64)):h("v-if",!0),t.key==="fee"?(d(),p("span",Ze,i(m.feeAmount),1)):h("v-if",!0),t.key==="status"?(d(),k(M,{key:3,color:a.bridgeStatusColor(m.status)},{default:n(()=>[b(i(a.statusLabel(m.status)),1)]),_:2},1032,["color"])):h("v-if",!0),t.key==="createdAt"?(d(),p("span",Ye,i(a.formatXChainTime(m.createdAt)),1)):h("v-if",!0)]),emptyText:n(()=>[y("div",$e,[o(a.SwapOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+i(e.$t("crosschain.table.emptyBridges")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),h(" ── Swaps tab ─────────────────────────────────────────────── "),o(B,{key:"swaps",tab:e.$t("crosschain.tabs.swaps")},{default:n(()=>[o(N,{columns:a.swapColumns,"data-source":a.swaps,pagination:{pageSize:20,showTotal:t=>e.$t("crosschain.table.totalSuffix",{n:t})},size:"small",loading:a.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:t,record:m})=>[t.key==="route"?(d(),p(w,{key:0},[y("span",ea,i(a.chainName(m.fromChain)),1),y("span",aa,"("+i(m.fromAsset)+")",1),o(a.ArrowRightOutlined,{style:{margin:"0 4px",color:"var(--text-secondary)","font-size":"11px"}}),y("span",ta,i(a.chainName(m.toChain)),1),y("span",sa,"("+i(m.toAsset)+")",1)],64)):h("v-if",!0),t.key==="amount"?(d(),p("span",oa,i(m.amount),1)):h("v-if",!0),t.key==="hashLock"?(d(),p(w,{key:2},[m.hashLock?(d(),p("span",na,i(m.hashLock.slice(0,14))+"... ",1)):(d(),p("span",ra,"—"))],64)):h("v-if",!0),t.key==="status"?(d(),k(M,{key:3,color:a.swapStatusColor(m.status)},{default:n(()=>[b(i(a.statusLabel(m.status)),1)]),_:2},1032,["color"])):h("v-if",!0),t.key==="expiresAt"?(d(),p("span",la,i(a.formatXChainTime(m.expiresAt)),1)):h("v-if",!0)]),emptyText:n(()=>[y("div",ia,[o(a.InteractionOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+i(e.$t("crosschain.table.emptySwaps")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),h(" ── Messages tab ──────────────────────────────────────────── "),o(B,{key:"messages",tab:e.$t("crosschain.tabs.messages")},{default:n(()=>[o(N,{columns:a.messageColumns,"data-source":a.messages,pagination:{pageSize:20,showTotal:t=>e.$t("crosschain.table.totalSuffix",{n:t})},size:"small",loading:a.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:t,record:m})=>[t.key==="route"?(d(),p(w,{key:0},[y("span",da,i(a.chainName(m.fromChain)),1),o(a.ArrowRightOutlined,{style:{margin:"0 6px",color:"var(--text-secondary)","font-size":"11px"}}),y("span",ca,i(a.chainName(m.toChain)),1)],64)):h("v-if",!0),t.key==="payload"?(d(),p("span",ua,i(a.truncate(m.payload,60)||"—"),1)):h("v-if",!0),t.key==="retries"?(d(),p(w,{key:2},[m.retries>0?(d(),k(M,{key:0,color:"orange",style:{"font-size":"11px"}},{default:n(()=>[b(i(e.$t("crosschain.table.retrySuffix",{n:m.retries})),1)]),_:2},1024)):(d(),p("span",ma,"—"))],64)):h("v-if",!0),t.key==="status"?(d(),k(M,{key:3,color:a.messageStatusColor(m.status)},{default:n(()=>[b(i(a.statusLabel(m.status)),1)]),_:2},1032,["color"])):h("v-if",!0),t.key==="createdAt"?(d(),p("span",fa,i(a.formatXChainTime(m.createdAt)),1)):h("v-if",!0)]),emptyText:n(()=>[y("div",ha,[o(a.MailOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+i(e.$t("crosschain.table.emptyMessages")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),h(" ── Bridge modal ──────────────────────────────────────────── "),o(I,{open:a.showBridgeModal,"onUpdate:open":s[8]||(s[8]=t=>a.showBridgeModal=t),title:e.$t("crosschain.bridge_modal.title"),"confirm-loading":a.bridging,width:540,"ok-text":e.$t("crosschain.bridge_modal.ok"),"cancel-text":e.$t("crosschain.bridge_modal.cancel"),onOk:a.initiateBridge,onCancel:a.resetBridgeForm},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.bridge_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.bridgeForm.fromChain,"onUpdate:value":s[2]||(s[2]=t=>a.bridgeForm.fromChain=t),placeholder:e.$t("crosschain.bridge_modal.fromChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.bridgeForm.toChain,"onUpdate:value":s[3]||(s[3]=t=>a.bridgeForm.toChain=t),placeholder:e.$t("crosschain.bridge_modal.toChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.bridgeForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.amount"),required:""},{default:n(()=>[o(F,{value:a.bridgeForm.amount,"onUpdate:value":s[4]||(s[4]=t=>a.bridgeForm.amount=t),min:0,precision:6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.asset")},{default:n(()=>[o(S,{value:a.bridgeForm.asset,"onUpdate:value":s[5]||(s[5]=t=>a.bridgeForm.asset=t),placeholder:e.$t("crosschain.bridge_modal.assetPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.sender")},{default:n(()=>[o(S,{value:a.bridgeForm.sender,"onUpdate:value":s[6]||(s[6]=t=>a.bridgeForm.sender=t),placeholder:e.$t("crosschain.bridge_modal.senderPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.recipient")},{default:n(()=>[o(S,{value:a.bridgeForm.recipient,"onUpdate:value":s[7]||(s[7]=t=>a.bridgeForm.recipient=t),placeholder:e.$t("crosschain.bridge_modal.recipientPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),h(" ── Swap modal ────────────────────────────────────────────── "),o(I,{open:a.showSwapModal,"onUpdate:open":s[16]||(s[16]=t=>a.showSwapModal=t),title:e.$t("crosschain.swap_modal.title"),"confirm-loading":a.swapping,width:540,"ok-text":e.$t("crosschain.swap_modal.ok"),"cancel-text":e.$t("crosschain.swap_modal.cancel"),onOk:a.initiateSwap,onCancel:a.resetSwapForm},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.swap_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.swapForm.fromChain,"onUpdate:value":s[9]||(s[9]=t=>a.swapForm.fromChain=t),placeholder:e.$t("crosschain.swap_modal.fromChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.swapForm.toChain,"onUpdate:value":s[10]||(s[10]=t=>a.swapForm.toChain=t),placeholder:e.$t("crosschain.swap_modal.toChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.swapForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.amount"),required:""},{default:n(()=>[o(F,{value:a.swapForm.amount,"onUpdate:value":s[11]||(s[11]=t=>a.swapForm.amount=t),min:0,precision:6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.fromAsset")},{default:n(()=>[o(S,{value:a.swapForm.fromAsset,"onUpdate:value":s[12]||(s[12]=t=>a.swapForm.fromAsset=t),placeholder:e.$t("crosschain.swap_modal.assetPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.toAsset")},{default:n(()=>[o(S,{value:a.swapForm.toAsset,"onUpdate:value":s[13]||(s[13]=t=>a.swapForm.toAsset=t),placeholder:e.$t("crosschain.swap_modal.assetPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.counterparty")},{default:n(()=>[o(S,{value:a.swapForm.counterparty,"onUpdate:value":s[14]||(s[14]=t=>a.swapForm.counterparty=t),placeholder:e.$t("crosschain.swap_modal.counterpartyPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.timeoutMs")},{default:n(()=>[o(F,{value:a.swapForm.timeoutMs,"onUpdate:value":s[15]||(s[15]=t=>a.swapForm.timeoutMs=t),min:0,placeholder:e.$t("crosschain.swap_modal.timeoutPlaceholder"),style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),h(" ── Message modal ─────────────────────────────────────────── "),o(I,{open:a.showMessageModal,"onUpdate:open":s[21]||(s[21]=t=>a.showMessageModal=t),title:e.$t("crosschain.message_modal.title"),"confirm-loading":a.sending,width:520,"ok-text":e.$t("crosschain.message_modal.ok"),"cancel-text":e.$t("crosschain.message_modal.cancel"),onOk:a.sendMessage,onCancel:a.resetMessageForm},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.message_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.messageForm.fromChain,"onUpdate:value":s[17]||(s[17]=t=>a.messageForm.fromChain=t),placeholder:e.$t("crosschain.message_modal.fromChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.message_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.messageForm.toChain,"onUpdate:value":s[18]||(s[18]=t=>a.messageForm.toChain=t),placeholder:e.$t("crosschain.message_modal.toChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.messageForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.message_modal.payload")},{default:n(()=>[o(Z,{value:a.messageForm.payload,"onUpdate:value":s[19]||(s[19]=t=>a.messageForm.payload=t),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.message_modal.contract")},{default:n(()=>[o(S,{value:a.messageForm.contract,"onUpdate:value":s[20]||(s[20]=t=>a.messageForm.contract=t),placeholder:e.$t("crosschain.message_modal.contractPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),h(" ── Fee estimate modal ────────────────────────────────────── "),o(I,{open:a.showFeeModal,"onUpdate:open":s[25]||(s[25]=t=>a.showFeeModal=t),title:e.$t("crosschain.fee_modal.title"),"confirm-loading":a.estimating,width:480,"ok-text":e.$t("crosschain.fee_modal.ok"),"cancel-text":e.$t("crosschain.fee_modal.cancel"),onOk:a.estimateFee},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.fee_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.feeForm.fromChain,"onUpdate:value":s[22]||(s[22]=t=>a.feeForm.fromChain=t)},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.fee_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.feeForm.toChain,"onUpdate:value":s[23]||(s[23]=t=>a.feeForm.toChain=t)},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.feeForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.fee_modal.amount"),required:""},{default:n(()=>[o(F,{value:a.feeForm.amount,"onUpdate:value":s[24]||(s[24]=t=>a.feeForm.amount=t),min:0,precision:6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1}),a.feeResult?(d(),k(A,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:n(()=>[o(O,{title:e.$t("crosschain.fee_modal.resultTitle"),value:a.feeResult.fee,precision:4,suffix:a.feeResult.currency,"value-style":{color:"#1677ff"}},null,8,["title","value","suffix"]),y("div",pa,[y("div",null,i(e.$t("crosschain.fee_modal.sourceFee",{fee:a.feeResult.breakdown.sourceFee,currency:a.feeResult.currency})),1),y("div",null,i(e.$t("crosschain.fee_modal.destFee",{fee:a.feeResult.breakdown.destFee,currency:a.feeResult.currency})),1),y("div",null,i(e.$t("crosschain.fee_modal.bridgeFee",{fee:a.feeResult.breakdown.bridgeFee,currency:a.feeResult.currency})),1)])]),_:1})):h("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Ca=xe(qe,[["render",ga],["__scopeId","data-v-00c68d45"],["__file","/tmp/cc-web-panel-DNn50E/repo/packages/web-panel/src/views/Crosschain.vue"]]);export{Ca as default};
@@ -1 +0,0 @@
1
- import{I as h,J as A,U as w,R as s,c as a,K as n,V as I,o as me,b as O,a as re,r as v,P as f,Q as m,F as ee,Z as te,S as T}from"./vendor-BvqAck49.js";import{_ as je,b as he,u as ke,E as ye,d as k}from"./index-D9ImwlR4.js";import{s as Ue}from"./community-parser-CO25nZFt.js";import{k as Be,f as qe,am as Ne,a8 as De,aE as Ge,j as Je,as as Ke,R as Ve}from"./icons-DP3uiYxy.js";function E(l){const t=Ue(l);if(!t)return null;try{return JSON.parse(t)}catch{}const o=t.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!o)return null;try{return JSON.parse(o[0])}catch{return null}}const xe=Object.freeze(["closed","open","half_open"]),Ae=Object.freeze(["healthy","degraded","unhealthy","unknown"]),We=Object.freeze(["heartbeat","latency","success_rate","cpu_usage","memory_usage"]);function y(l,t=0){return typeof l=="number"&&Number.isFinite(l)?l:t}function Ye(l,t=0){if(!l||typeof l!="object")return null;const o=l.node_id??l.nodeId??"";if(!o)return null;const e=String(l.state||"closed").toLowerCase();return{key:o,nodeId:o,state:e,failureCount:y(l.failure_count??l.failureCount,0),successCount:y(l.success_count??l.successCount,0),failureThreshold:y(l.failure_threshold??l.failureThreshold,0),successThreshold:y(l.success_threshold??l.successThreshold,0),openTimeout:y(l.open_timeout??l.openTimeout,0),lastFailureTime:l.last_failure_time??l.lastFailureTime??null,lastSuccessTime:l.last_success_time??l.lastSuccessTime??null,stateChangedAt:l.state_changed_at??l.stateChangedAt??null,metadata:l.metadata??null,createdAt:l.created_at??l.createdAt??null,updatedAt:l.updated_at??l.updatedAt??null,_idx:t}}function ge(l){const t=E(l);return Array.isArray(t)?t.map(Ye).filter(Boolean):[]}function Qe(l,t=0){if(!l||typeof l!="object")return null;const o=l.check_id??l.checkId??"";return o?{key:o,checkId:o,nodeId:l.node_id??l.nodeId??"",checkType:String(l.check_type??l.checkType??"").toLowerCase(),status:String(l.status||"unknown").toLowerCase(),metrics:l.metrics??null,checkedAt:l.checked_at??l.checkedAt??null,_idx:t}:null}function _e(l){const t=E(l);return Array.isArray(t)?t.map(Qe).filter(Boolean):[]}function Ze(l,t=0){if(!l||typeof l!="object")return null;const o=l.nodeId??l.node_id??"";return o?{key:o,nodeId:o,minConnections:y(l.minConnections,0),maxConnections:y(l.maxConnections,0),idleTimeout:y(l.idleTimeout,0),activeConnections:y(l.activeConnections,0),idleConnections:y(l.idleConnections,0),totalCreated:y(l.totalCreated,0),totalDestroyed:y(l.totalDestroyed,0),waitingRequests:y(l.waitingRequests,0),createdAt:l.createdAt??null,_idx:t}:null}function be(l){const t=E(l);return Array.isArray(t)?t.map(Ze).filter(Boolean):[]}function pe(l){const t=E(l);if(!t||typeof t!="object"||Array.isArray(t))return{nodeId:"",status:"unknown",checks:0,latestChecks:[]};const e=(Array.isArray(t.latestChecks)?t.latestChecks:[]).filter(g=>g&&typeof g=="object").map(g=>({checkType:String(g.checkType??g.check_type??"").toLowerCase(),status:String(g.status||"unknown").toLowerCase(),checkedAt:g.checkedAt??g.checked_at??null}));return{nodeId:t.nodeId??t.node_id??"",status:String(t.status||"unknown").toLowerCase(),checks:y(t.checks,0),latestChecks:e}}function le(l){const t=E(l);if(!t||typeof t!="object"||Array.isArray(t))return{ok:!1,id:null,reason:""};const o=!!(t.registered||t.recorded||t.initialized),e=t.nodeId??t.checkId??null;return{ok:o,id:e?String(e):null,reason:t.reason?String(t.reason):""}}function ve(l){const t=E(l);return!t||typeof t!="object"||Array.isArray(t)?{ok:!1,state:"",previousState:"",failureCount:0,successCount:0,remainingMs:0,reason:""}:{ok:!!(t.updated||t.reset),state:String(t.state||""),previousState:String(t.previousState||""),failureCount:y(t.failureCount,0),successCount:y(t.successCount,0),remainingMs:y(t.remainingMs,0),reason:t.reason?String(t.reason):""}}function Ce(l){const t=E(l);return!t||typeof t!="object"||Array.isArray(t)?{ok:!1,active:0,idle:0,waiting:0,reason:""}:{ok:!!(t.acquired||t.released||t.destroyed),active:y(t.active,0),idle:y(t.idle,0),waiting:y(t.waiting,0),reason:t.reason?String(t.reason):""}}function Te(l){const t=E(l);return!t||typeof t!="object"||Array.isArray(t)?{ok:!1,reason:""}:{ok:!!t.removed,reason:t.reason?String(t.reason):""}}const Xe={circuitBreakers:{total:0,byState:{}},healthChecks:{total:0,byStatus:{}},connectionPools:{total:0,totalActive:0,totalIdle:0,totalConnections:0}};function Se(l){const t=JSON.parse(JSON.stringify(Xe));for(const e of xe)t.circuitBreakers.byState[e]=0;for(const e of Ae)t.healthChecks.byStatus[e]=0;const o=E(l);if(!o||typeof o!="object"||Array.isArray(o))return t;if(o.circuitBreakers&&typeof o.circuitBreakers=="object"&&(t.circuitBreakers.total=y(o.circuitBreakers.total,0),o.circuitBreakers.byState&&typeof o.circuitBreakers.byState=="object"))for(const[e,g]of Object.entries(o.circuitBreakers.byState))typeof g=="number"&&Number.isFinite(g)&&(t.circuitBreakers.byState[e]=g);if(o.healthChecks&&typeof o.healthChecks=="object"&&(t.healthChecks.total=y(o.healthChecks.total,0),o.healthChecks.byStatus&&typeof o.healthChecks.byStatus=="object"))for(const[e,g]of Object.entries(o.healthChecks.byStatus))typeof g=="number"&&Number.isFinite(g)&&(t.healthChecks.byStatus[e]=g);return o.connectionPools&&typeof o.connectionPools=="object"&&(t.connectionPools.total=y(o.connectionPools.total,0),t.connectionPools.totalActive=y(o.connectionPools.totalActive,0),t.connectionPools.totalIdle=y(o.connectionPools.totalIdle,0),t.connectionPools.totalConnections=y(o.connectionPools.totalConnections,0)),t}function $e(l){if(l==null||l==="")return"—";const t=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(t.getTime())?String(l):t.toLocaleString("zh-CN",{hour12:!1})}const et={__name:"Federation",setup(l,{expose:t}){t();const{t:o}=he(),e=ke(),g=ye.PRESENTED_IMAGE_SIMPLE,oe=v(!1),_=v(!1),B=v(!1),D=v([]),J=v([]),q=v([]),F=v({circuitBreakers:{total:0,byState:{closed:0,open:0,half_open:0}},healthChecks:{total:0,byStatus:{healthy:0,degraded:0,unhealthy:0,unknown:0}},connectionPools:{total:0,totalActive:0,totalIdle:0,totalConnections:0}}),M=v("breakers"),P=v(""),K=v(""),R=v(""),G=v(!1),H=v(!1),V=v(!1),b=re({nodeId:"",failureThreshold:5,successThreshold:2,openTimeout:6e4}),C=re({nodeId:"",checkType:"heartbeat",status:"healthy",metrics:""}),p=re({nodeId:"",min:5,max:50,idleTimeout:3e5}),W=v(""),N=v(null),Y=O(()=>[{title:o("federation.breakerColumns.node"),key:"nodeId",dataIndex:"nodeId",width:"200px"},{title:o("federation.breakerColumns.state"),key:"state",width:"100px"},{title:o("federation.breakerColumns.failure"),key:"failure",width:"120px"},{title:o("federation.breakerColumns.success"),key:"success",width:"120px"},{title:o("federation.breakerColumns.openTimeout"),key:"openTimeout",dataIndex:"openTimeout",width:"110px"},{title:o("federation.breakerColumns.updatedAt"),key:"updatedAt",width:"170px"},{title:o("federation.breakerColumns.action"),key:"action",width:"340px"}]),ie=O(()=>[{title:o("federation.checkColumns.id"),key:"checkId",width:"130px"},{title:o("federation.checkColumns.node"),key:"nodeId",dataIndex:"nodeId",width:"180px"},{title:o("federation.checkColumns.metric"),key:"checkType",width:"120px"},{title:o("federation.checkColumns.status"),key:"status",width:"100px"},{title:o("federation.checkColumns.metrics"),key:"metrics"},{title:o("federation.checkColumns.checkedAt"),key:"checkedAt",width:"170px"}]),se=O(()=>[{title:o("federation.poolColumns.node"),key:"nodeId",dataIndex:"nodeId",width:"200px"},{title:o("federation.poolColumns.active"),key:"activeConnections",dataIndex:"activeConnections",width:"90px"},{title:o("federation.poolColumns.idle"),key:"idleConnections",dataIndex:"idleConnections",width:"90px"},{title:o("federation.poolColumns.max"),key:"maxConnections",dataIndex:"maxConnections",width:"90px"},{title:o("federation.poolColumns.utilization"),key:"utilization",width:"160px"},{title:o("federation.poolColumns.waiting"),key:"waitingRequests",dataIndex:"waitingRequests",width:"90px"},{title:o("federation.poolColumns.totalCreated"),key:"totalCreated",dataIndex:"totalCreated",width:"90px"},{title:o("federation.poolColumns.createdAt"),key:"createdAt",width:"170px"},{title:o("federation.poolColumns.action"),key:"action",width:"240px"}]),x=O(()=>[{title:o("federation.latestColumns.metric"),key:"checkType",width:"160px"},{title:o("federation.latestColumns.status"),key:"status",width:"120px"},{title:o("federation.latestColumns.checkedAt"),key:"checkedAt"}]),j=O(()=>P.value?D.value.filter(i=>i.state===P.value):D.value),Q=O(()=>{let i=J.value;return K.value&&(i=i.filter(d=>d.checkType===K.value)),R.value&&(i=i.filter(d=>d.status===R.value)),i}),Z=O(()=>(F.value.circuitBreakers.byState.open||0)+(F.value.circuitBreakers.byState.half_open||0)),ae=O(()=>{const i=F.value.circuitBreakers.total;return i?(F.value.circuitBreakers.byState.closed||0)/i*100:100});function ne(i){return i.maxConnections?Math.round(i.activeConnections/i.maxConnections*100):0}function X(i){const d=`federation.state.${i}`,c=o(d);return c===d?i:c}function r(i){return{closed:"green",open:"red",half_open:"gold"}[i]||"default"}function u(i){const d=`federation.metric.${i}`,c=o(d);return c===d?i:c}function L(i){const d=`federation.health.${i}`,c=o(d);return c===d?i:c}function Ie(i){return{healthy:"green",degraded:"gold",unhealthy:"red",unknown:"default"}[i]||"default"}function we(i){return i>=95?"#52c41a":i>=80?"#1677ff":i>=60?"#faad14":"#ff4d4f"}function Fe(i,d){return i?i.length<=d?i:i.slice(0,d)+"…":""}function z(i){return`"${String(i).replace(/"/g,'\\"')}"`}async function U(){oe.value=!0;try{const[i,d,c,$]=await Promise.all([e.execute("federation breakers --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("federation checks --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("federation pools --json",8e3).catch(()=>({output:""})),e.execute("federation stats --json",8e3).catch(()=>({output:""}))]);D.value=ge(i.output),J.value=_e(d.output),q.value=be(c.output),F.value=Se($.output)}catch(i){k.error(o("federation.messages.loadFailed",{err:i?.message||i}))}finally{oe.value=!1}}async function Re(){if(!b.nodeId.trim()){k.warning(o("federation.messages.nodeIdRequired"));return}_.value=!0;try{const i=[`federation register ${z(b.nodeId.trim())}`];b.failureThreshold&&i.push(`-f ${b.failureThreshold}`),b.successThreshold&&i.push(`-s ${b.successThreshold}`),b.openTimeout&&i.push(`-t ${b.openTimeout}`),i.push("--json");const{output:d}=await e.execute(i.join(" "),1e4),c=le(d);if(!c.ok){k.error(o("federation.messages.registerFailed",{err:c.reason||d.slice(0,120)}));return}k.success(o("federation.messages.registerOk",{id:c.id})),G.value=!1,de(),await U()}catch(i){k.error(o("federation.messages.registerFailed",{err:i?.message||i}))}finally{_.value=!1}}async function Me(){if(!C.nodeId.trim()){k.warning(o("federation.messages.nodeIdRequired"));return}_.value=!0;try{const i=[`federation check ${z(C.nodeId.trim())}`];i.push(`-t ${C.checkType}`),i.push(`-s ${C.status}`),C.metrics.trim()&&i.push(`-m ${z(C.metrics.trim())}`),i.push("--json");const{output:d}=await e.execute(i.join(" "),1e4),c=le(d);if(!c.ok){k.error(o("federation.messages.checkFailed",{err:c.reason||d.slice(0,120)}));return}k.success(o("federation.messages.checkOk",{id:c.id?.slice(0,8)})),H.value=!1,ce(),await U()}catch(i){k.error(o("federation.messages.checkFailed",{err:i?.message||i}))}finally{_.value=!1}}async function Pe(){if(!p.nodeId.trim()){k.warning(o("federation.messages.nodeIdRequired"));return}_.value=!0;try{const i=[`federation pool-init ${z(p.nodeId.trim())}`];p.min&&i.push(`--min ${p.min}`),p.max&&i.push(`--max ${p.max}`),p.idleTimeout&&i.push(`--idle-timeout ${p.idleTimeout}`),i.push("--json");const{output:d}=await e.execute(i.join(" "),1e4),c=le(d);if(!c.ok){k.error(o("federation.messages.poolFailed",{err:c.reason||d.slice(0,120)}));return}k.success(o("federation.messages.poolOk",{id:c.id})),V.value=!1,ue(),await U()}catch(i){k.error(o("federation.messages.poolFailed",{err:i?.message||i}))}finally{_.value=!1}}async function He(i,d){try{const c=`federation ${d} ${z(i.nodeId)} --json`,{output:$}=await e.execute(c,8e3),S=ve($);if(!S.ok){k.warning(S.remainingMs?o("federation.messages.operationCooldown",{ms:S.remainingMs}):S.reason||o("federation.messages.operationNoEffect"));return}S.previousState&&S.state&&S.previousState!==S.state?k.success(o("federation.messages.transitionMsg",{from:X(S.previousState),to:X(S.state)})):k.success(o(d==="reset"?"federation.messages.resetMsg":"federation.messages.recordedMsg")),await U()}catch(c){k.error(o("federation.messages.operationFailed",{err:c?.message||c}))}}async function Le(i){try{const{output:d}=await e.execute(`federation remove ${z(i.nodeId)} --json`,8e3),c=Te(d);if(!c.ok){k.error(o("federation.messages.removeFailed",{err:c.reason||d.slice(0,120)}));return}k.success(o("federation.messages.removeOk")),await U()}catch(d){k.error(o("federation.messages.removeFailed",{err:d?.message||d}))}}async function ze(i,d){try{const c={acquire:"pool-acquire",release:"pool-release",destroy:"pool-destroy"}[d],{output:$}=await e.execute(`federation ${c} ${z(i.nodeId)} --json`,8e3),S=Ce($);if(!S.ok){k.warning(S.reason||o("federation.messages.operationNoEffect"));return}if(d==="destroy")k.success(o("federation.messages.destroyMsg"));else{const Ee=d==="acquire"?"federation.messages.acquireMsg":"federation.messages.releaseMsg";k.success(o(Ee,{active:S.active,idle:S.idle}))}await U()}catch(c){k.error(o("federation.messages.operationFailed",{err:c?.message||c}))}}async function Oe(){if(!W.value.trim()){k.warning(o("federation.messages.nodeIdRequired"));return}B.value=!0;try{const{output:i}=await e.execute(`federation node-health ${z(W.value.trim())} --json`,8e3);N.value=pe(i)}catch(i){k.error(o("federation.messages.queryFailed",{err:i?.message||i}))}finally{B.value=!1}}function de(){b.nodeId="",b.failureThreshold=5,b.successThreshold=2,b.openTimeout=6e4}function ce(){C.nodeId="",C.checkType="heartbeat",C.status="healthy",C.metrics=""}function ue(){p.nodeId="",p.min=5,p.max=50,p.idleTimeout=3e5}me(U);const fe={t:o,ws:e,EMPTY_IMG:g,loading:oe,creating:_,queryingHealth:B,breakers:D,checks:J,pools:q,stats:F,activeTab:M,stateFilter:P,metricFilter:K,healthStatusFilter:R,showRegisterModal:G,showCheckModal:H,showPoolModal:V,registerForm:b,checkForm:C,poolForm:p,nodeHealthInput:W,nodeHealth:N,breakerColumns:Y,checkColumns:ie,poolColumns:se,latestChecksColumns:x,filteredBreakers:j,filteredChecks:Q,degradedCount:Z,availabilityRate:ae,poolUtilization:ne,stateLabel:X,stateColor:r,metricLabel:u,healthLabel:L,healthColor:Ie,rateColor:we,truncate:Fe,shellQuote:z,loadAll:U,submitRegister:Re,submitCheck:Me,submitPool:Pe,recordTransition:He,removeNode:Le,poolAction:ze,queryNodeHealth:Oe,resetRegisterForm:de,resetCheckForm:ce,resetPoolForm:ue,ref:v,reactive:re,computed:O,onMounted:me,get useI18n(){return he},get ReloadOutlined(){return Ve},get PlusOutlined(){return Ke},get ClusterOutlined(){return Je},get HeartOutlined(){return Ge},get ApiOutlined(){return De},get WarningOutlined(){return Ne},get CheckCircleOutlined(){return qe},get SearchOutlined(){return Be},get message(){return k},get Empty(){return ye},get useWsStore(){return ke},get parseBreakers(){return ge},get parseChecks(){return _e},get parsePools(){return be},get parseNodeHealth(){return pe},get parseRegisterResult(){return le},get parseTransitionResult(){return ve},get parsePoolActionResult(){return Ce},get parseRemoveResult(){return Te},get parseStats(){return Se},get formatFedTime(){return $e},get CIRCUIT_STATES(){return xe},get HEALTH_STATUSES(){return Ae},get HEALTH_METRICS(){return We}};return Object.defineProperty(fe,"__isScriptSetup",{enumerable:!1,value:!0}),fe}},tt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ot={class:"page-title"},at={class:"page-sub"},nt={class:"stat-sub"},rt={class:"stat-sub"},lt={class:"stat-sub"},it={class:"stat-sub"},st={class:"filter-bar"},dt={key:1},ct={key:2},ut={key:3,class:"muted"},ft={class:"filter-bar"},mt={key:0,style:{"font-family":"monospace","font-size":"12px"}},ht={key:3,class:"muted",style:{"font-family":"monospace","font-size":"11px"}},kt={key:4,class:"muted"},yt={key:1,class:"muted"},gt={style:{"font-family":"monospace"}},_t={style:{"margin-top":"16px"}},bt={style:{color:"var(--text-primary)","margin-bottom":"8px"}},pt={key:2,class:"muted"};function vt(l,t,o,e,g,oe){const _=h("a-button"),B=h("a-menu-item"),D=h("a-menu"),J=h("a-dropdown"),q=h("a-space"),F=h("a-statistic"),M=h("a-card"),P=h("a-col"),K=h("a-row"),R=h("a-radio-button"),G=h("a-radio-group"),H=h("a-tag"),V=h("a-popconfirm"),b=h("a-empty"),C=h("a-table"),p=h("a-tab-pane"),W=h("a-progress"),N=h("a-input"),Y=h("a-descriptions-item"),ie=h("a-descriptions"),se=h("a-tabs"),x=h("a-form-item"),j=h("a-input-number"),Q=h("a-form"),Z=h("a-modal"),ae=h("a-select-option"),ne=h("a-select"),X=h("a-textarea");return f(),A("div",null,[w("div",tt,[w("div",null,[w("h2",ot,s(e.t("federation.title")),1),w("p",at,s(e.t("federation.subtitle")),1)]),a(q,null,{default:n(()=>[a(_,{loading:e.loading,onClick:e.loadAll},{icon:n(()=>[a(e.ReloadOutlined)]),default:n(()=>[m(" "+s(e.t("federation.refresh")),1)]),_:1},8,["loading"]),a(J,null,{overlay:n(()=>[a(D,null,{default:n(()=>[a(B,{key:"register",onClick:t[0]||(t[0]=r=>e.showRegisterModal=!0)},{default:n(()=>[m(s(e.t("federation.newMenu.register")),1)]),_:1}),a(B,{key:"check",onClick:t[1]||(t[1]=r=>e.showCheckModal=!0)},{default:n(()=>[m(s(e.t("federation.newMenu.check")),1)]),_:1}),a(B,{key:"pool",onClick:t[2]||(t[2]=r=>e.showPoolModal=!0)},{default:n(()=>[m(s(e.t("federation.newMenu.pool")),1)]),_:1})]),_:1})]),default:n(()=>[a(_,{type:"primary"},{icon:n(()=>[a(e.PlusOutlined)]),default:n(()=>[m(" "+s(e.t("federation.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),I(" Stat cards "),a(K,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[a(P,{xs:12,sm:8,lg:5},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(F,{title:e.t("federation.stats.breakers"),value:e.stats.circuitBreakers.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[a(e.ClusterOutlined)]),_:1},8,["title","value"]),w("div",nt,s(e.t("federation.stats.breakerSub",{closed:e.stats.circuitBreakers.byState.closed||0,open:e.stats.circuitBreakers.byState.open||0})),1)]),_:1})]),_:1}),a(P,{xs:12,sm:8,lg:5},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(F,{title:e.t("federation.stats.checks"),value:e.stats.healthChecks.total,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[a(e.HeartOutlined)]),_:1},8,["title","value"]),w("div",rt,s(e.t("federation.stats.checkSub",{healthy:e.stats.healthChecks.byStatus.healthy||0,unhealthy:e.stats.healthChecks.byStatus.unhealthy||0})),1)]),_:1})]),_:1}),a(P,{xs:12,sm:8,lg:5},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(F,{title:e.t("federation.stats.pools"),value:e.stats.connectionPools.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[a(e.ApiOutlined)]),_:1},8,["title","value"]),w("div",lt,s(e.t("federation.stats.poolSub",{active:e.stats.connectionPools.totalActive,idle:e.stats.connectionPools.totalIdle})),1)]),_:1})]),_:1}),a(P,{xs:12,sm:8,lg:5},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(F,{title:e.t("federation.stats.degraded"),value:e.degradedCount,"value-style":{color:e.degradedCount>0?"#faad14":"#8c8c8c",fontSize:"20px"}},{prefix:n(()=>[a(e.WarningOutlined)]),_:1},8,["title","value","value-style"]),w("div",it,s(e.t("federation.stats.degradedSub",{halfOpen:e.stats.circuitBreakers.byState.half_open||0})),1)]),_:1})]),_:1}),a(P,{xs:24,sm:8,lg:4},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(F,{title:e.t("federation.stats.availability"),value:e.availabilityRate,suffix:"%",precision:0,"value-style":{color:e.rateColor(e.availabilityRate),fontSize:"20px"}},{prefix:n(()=>[a(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),I(" Tabs (4 surfaces) "),a(se,{activeKey:e.activeTab,"onUpdate:activeKey":t[7]||(t[7]=r=>e.activeTab=r),class:"fed-tabs"},{default:n(()=>[I(" ── Circuit breakers ──────────────────────────── "),a(p,{key:"breakers",tab:e.t("federation.tabs.breakers")},{default:n(()=>[w("div",st,[a(G,{value:e.stateFilter,"onUpdate:value":t[3]||(t[3]=r=>e.stateFilter=r),size:"small","button-style":"solid"},{default:n(()=>[a(R,{value:""},{default:n(()=>[m(s(e.t("federation.filter.allStates")),1)]),_:1}),(f(!0),A(ee,null,te(e.CIRCUIT_STATES,r=>(f(),T(R,{key:r,value:r},{default:n(()=>[m(s(e.stateLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(C,{columns:e.breakerColumns,"data-source":e.filteredBreakers,pagination:{pageSize:20,showTotal:r=>e.t("federation.totals.rows",{count:r})},size:"small",loading:e.loading,"row-key":"key",style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:u})=>[r.key==="state"?(f(),T(H,{key:0,color:e.stateColor(u.state)},{default:n(()=>[m(s(e.stateLabel(u.state)),1)]),_:2},1032,["color"])):r.key==="failure"?(f(),A("span",dt,s(u.failureCount)+" / "+s(u.failureThreshold),1)):r.key==="success"?(f(),A("span",ct,s(u.successCount)+" / "+s(u.successThreshold),1)):r.key==="updatedAt"?(f(),A("span",ut,s(e.formatFedTime(u.updatedAt)),1)):r.key==="action"?(f(),T(q,{key:4,size:4},{default:n(()=>[a(_,{size:"small",danger:"",onClick:L=>e.recordTransition(u,"failure")},{default:n(()=>[m(s(e.t("federation.breakerActions.failure")),1)]),_:1},8,["onClick"]),a(_,{size:"small",onClick:L=>e.recordTransition(u,"success")},{default:n(()=>[m(s(e.t("federation.breakerActions.success")),1)]),_:1},8,["onClick"]),a(_,{size:"small",type:"dashed",onClick:L=>e.recordTransition(u,"half-open")},{default:n(()=>[m(s(e.t("federation.breakerActions.halfOpen")),1)]),_:1},8,["onClick"]),a(_,{size:"small",onClick:L=>e.recordTransition(u,"reset")},{default:n(()=>[m(s(e.t("federation.breakerActions.reset")),1)]),_:1},8,["onClick"]),a(V,{title:e.t("federation.breakerActions.removeConfirm"),onConfirm:L=>e.removeNode(u)},{default:n(()=>[a(_,{size:"small",danger:"",type:"text"},{default:n(()=>[m(s(e.t("federation.breakerActions.remove")),1)]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)):I("v-if",!0)]),emptyText:n(()=>[a(b,{image:e.EMPTY_IMG,description:e.t("federation.empty.breakers")},null,8,["image","description"])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),I(" ── Health checks ─────────────────────────────── "),a(p,{key:"checks",tab:e.t("federation.tabs.checks")},{default:n(()=>[w("div",ft,[a(G,{value:e.metricFilter,"onUpdate:value":t[4]||(t[4]=r=>e.metricFilter=r),size:"small","button-style":"solid"},{default:n(()=>[a(R,{value:""},{default:n(()=>[m(s(e.t("federation.filter.allMetrics")),1)]),_:1}),(f(!0),A(ee,null,te(e.HEALTH_METRICS,r=>(f(),T(R,{key:r,value:r},{default:n(()=>[m(s(e.metricLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(G,{value:e.healthStatusFilter,"onUpdate:value":t[5]||(t[5]=r=>e.healthStatusFilter=r),size:"small"},{default:n(()=>[a(R,{value:""},{default:n(()=>[m(s(e.t("federation.filter.allStates")),1)]),_:1}),(f(!0),A(ee,null,te(e.HEALTH_STATUSES,r=>(f(),T(R,{key:r,value:r},{default:n(()=>[m(s(e.healthLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(C,{columns:e.checkColumns,"data-source":e.filteredChecks,pagination:{pageSize:20,showTotal:r=>e.t("federation.totals.rows",{count:r})},size:"small",loading:e.loading,"row-key":"key",style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:u})=>[r.key==="checkId"?(f(),A("span",mt,s(u.checkId.slice(0,12)),1)):r.key==="checkType"?(f(),T(H,{key:1,color:"blue"},{default:n(()=>[m(s(e.metricLabel(u.checkType)),1)]),_:2},1024)):r.key==="status"?(f(),T(H,{key:2,color:e.healthColor(u.status)},{default:n(()=>[m(s(e.healthLabel(u.status)),1)]),_:2},1032,["color"])):r.key==="metrics"?(f(),A("span",ht,s(e.truncate(u.metrics||"",50)),1)):r.key==="checkedAt"?(f(),A("span",kt,s(e.formatFedTime(u.checkedAt)),1)):I("v-if",!0)]),emptyText:n(()=>[a(b,{image:e.EMPTY_IMG,description:e.t("federation.empty.checks")},null,8,["image","description"])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),I(" ── Connection pools ──────────────────────────── "),a(p,{key:"pools",tab:e.t("federation.tabs.pools")},{default:n(()=>[a(C,{columns:e.poolColumns,"data-source":e.pools,pagination:{pageSize:20,showTotal:r=>e.t("federation.totals.rows",{count:r})},size:"small",loading:e.loading,"row-key":"key",style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:u})=>[r.key==="utilization"?(f(),T(W,{key:0,percent:e.poolUtilization(u),"stroke-color":e.rateColor(e.poolUtilization(u)),size:"small"},null,8,["percent","stroke-color"])):r.key==="createdAt"?(f(),A("span",yt,s(e.formatFedTime(u.createdAt)),1)):r.key==="action"?(f(),T(q,{key:2,size:4},{default:n(()=>[a(_,{size:"small",type:"primary",onClick:L=>e.poolAction(u,"acquire")},{default:n(()=>[m(s(e.t("federation.poolActions.acquire")),1)]),_:1},8,["onClick"]),a(_,{size:"small",onClick:L=>e.poolAction(u,"release")},{default:n(()=>[m(s(e.t("federation.poolActions.release")),1)]),_:1},8,["onClick"]),a(V,{title:e.t("federation.poolActions.destroyConfirm"),onConfirm:L=>e.poolAction(u,"destroy")},{default:n(()=>[a(_,{size:"small",danger:"",type:"text"},{default:n(()=>[m(s(e.t("federation.poolActions.destroy")),1)]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)):I("v-if",!0)]),emptyText:n(()=>[a(b,{image:e.EMPTY_IMG,description:e.t("federation.empty.pools")},null,8,["image","description"])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),I(" ── Node health aggregate ────────────────────── "),a(p,{key:"node-health",tab:e.t("federation.tabs.nodeHealth")},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:n(()=>[a(q,null,{default:n(()=>[a(N,{value:e.nodeHealthInput,"onUpdate:value":t[6]||(t[6]=r=>e.nodeHealthInput=r),placeholder:e.t("federation.nodeHealth.inputPlaceholder"),style:{width:"240px"},"allow-clear":"",onPressEnter:e.queryNodeHealth},null,8,["value","placeholder"]),a(_,{type:"primary",loading:e.queryingHealth,onClick:e.queryNodeHealth},{icon:n(()=>[a(e.SearchOutlined)]),default:n(()=>[m(" "+s(e.t("federation.nodeHealth.query")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),e.nodeHealth?(f(),T(M,{key:0,style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(ie,{column:3,size:"small",bordered:""},{default:n(()=>[a(Y,{label:e.t("federation.nodeHealth.node")},{default:n(()=>[w("span",gt,s(e.nodeHealth.nodeId),1)]),_:1},8,["label"]),a(Y,{label:e.t("federation.nodeHealth.status")},{default:n(()=>[a(H,{color:e.healthColor(e.nodeHealth.status)},{default:n(()=>[m(s(e.healthLabel(e.nodeHealth.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(Y,{label:e.t("federation.nodeHealth.checkCount")},{default:n(()=>[m(s(e.nodeHealth.checks),1)]),_:1},8,["label"])]),_:1}),w("div",_t,[w("h4",bt,s(e.t("federation.nodeHealth.latestTitle")),1),e.nodeHealth.latestChecks.length?(f(),T(C,{key:1,columns:e.latestChecksColumns,"data-source":e.nodeHealth.latestChecks,pagination:!1,size:"small","row-key":"checkType",style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:u})=>[r.key==="checkType"?(f(),T(H,{key:0,color:"blue"},{default:n(()=>[m(s(e.metricLabel(u.checkType)),1)]),_:2},1024)):r.key==="status"?(f(),T(H,{key:1,color:e.healthColor(u.status)},{default:n(()=>[m(s(e.healthLabel(u.status)),1)]),_:2},1032,["color"])):r.key==="checkedAt"?(f(),A("span",pt,s(e.formatFedTime(u.checkedAt)),1)):I("v-if",!0)]),_:1},8,["columns","data-source"])):(f(),T(b,{key:0,image:e.EMPTY_IMG,description:e.t("federation.empty.noLatest")},null,8,["image","description"]))])]),_:1})):I("v-if",!0)]),_:1},8,["tab"])]),_:1},8,["activeKey"]),I(" Modal: register node "),a(Z,{open:e.showRegisterModal,"onUpdate:open":t[12]||(t[12]=r=>e.showRegisterModal=r),title:e.t("federation.register.title"),"confirm-loading":e.creating,onOk:e.submitRegister},{default:n(()=>[a(Q,{layout:"vertical"},{default:n(()=>[a(x,{label:e.t("federation.register.nodeIdLabel"),required:""},{default:n(()=>[a(N,{value:e.registerForm.nodeId,"onUpdate:value":t[8]||(t[8]=r=>e.registerForm.nodeId=r),placeholder:e.t("federation.register.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(x,{label:e.t("federation.register.failureThresholdLabel")},{default:n(()=>[a(j,{value:e.registerForm.failureThreshold,"onUpdate:value":t[9]||(t[9]=r=>e.registerForm.failureThreshold=r),min:1,max:100,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(x,{label:e.t("federation.register.successThresholdLabel")},{default:n(()=>[a(j,{value:e.registerForm.successThreshold,"onUpdate:value":t[10]||(t[10]=r=>e.registerForm.successThreshold=r),min:1,max:100,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(x,{label:e.t("federation.register.openTimeoutLabel")},{default:n(()=>[a(j,{value:e.registerForm.openTimeout,"onUpdate:value":t[11]||(t[11]=r=>e.registerForm.openTimeout=r),min:1e3,step:1e3,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading"]),I(" Modal: record health check "),a(Z,{open:e.showCheckModal,"onUpdate:open":t[17]||(t[17]=r=>e.showCheckModal=r),title:e.t("federation.check.title"),"confirm-loading":e.creating,onOk:e.submitCheck},{default:n(()=>[a(Q,{layout:"vertical"},{default:n(()=>[a(x,{label:e.t("federation.check.nodeIdLabel"),required:""},{default:n(()=>[a(N,{value:e.checkForm.nodeId,"onUpdate:value":t[13]||(t[13]=r=>e.checkForm.nodeId=r),placeholder:e.t("federation.check.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(x,{label:e.t("federation.check.metricLabel"),required:""},{default:n(()=>[a(ne,{value:e.checkForm.checkType,"onUpdate:value":t[14]||(t[14]=r=>e.checkForm.checkType=r)},{default:n(()=>[(f(!0),A(ee,null,te(e.HEALTH_METRICS,r=>(f(),T(ae,{key:r,value:r},{default:n(()=>[m(s(e.metricLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),a(x,{label:e.t("federation.check.statusLabel"),required:""},{default:n(()=>[a(ne,{value:e.checkForm.status,"onUpdate:value":t[15]||(t[15]=r=>e.checkForm.status=r)},{default:n(()=>[(f(!0),A(ee,null,te(e.HEALTH_STATUSES,r=>(f(),T(ae,{key:r,value:r},{default:n(()=>[m(s(e.healthLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),a(x,{label:e.t("federation.check.metricsLabel")},{default:n(()=>[a(X,{value:e.checkForm.metrics,"onUpdate:value":t[16]||(t[16]=r=>e.checkForm.metrics=r),rows:3,placeholder:e.t("federation.check.metricsPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading"]),I(" Modal: init pool "),a(Z,{open:e.showPoolModal,"onUpdate:open":t[22]||(t[22]=r=>e.showPoolModal=r),title:e.t("federation.pool.title"),"confirm-loading":e.creating,onOk:e.submitPool},{default:n(()=>[a(Q,{layout:"vertical"},{default:n(()=>[a(x,{label:e.t("federation.pool.nodeIdLabel"),required:""},{default:n(()=>[a(N,{value:e.poolForm.nodeId,"onUpdate:value":t[18]||(t[18]=r=>e.poolForm.nodeId=r),placeholder:e.t("federation.pool.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(x,{label:e.t("federation.pool.minLabel")},{default:n(()=>[a(j,{value:e.poolForm.min,"onUpdate:value":t[19]||(t[19]=r=>e.poolForm.min=r),min:1,max:500,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(x,{label:e.t("federation.pool.maxLabel")},{default:n(()=>[a(j,{value:e.poolForm.max,"onUpdate:value":t[20]||(t[20]=r=>e.poolForm.max=r),min:1,max:500,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(x,{label:e.t("federation.pool.idleTimeoutLabel")},{default:n(()=>[a(j,{value:e.poolForm.idleTimeout,"onUpdate:value":t[21]||(t[21]=r=>e.poolForm.idleTimeout=r),min:1e3,step:1e3,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading"])])}const At=je(et,[["render",vt],["__scopeId","data-v-5c4035e7"],["__file","/tmp/cc-web-panel-DNn50E/repo/packages/web-panel/src/views/Federation.vue"]]);export{At as default};
@@ -1 +0,0 @@
1
- import{I as y,J as g,U as f,R as s,c as o,K as a,V as p,S as k,o as ue,a as se,b as ie,r as P,P as d,Q as u,F,Z as N,$ as Ne}from"./vendor-BvqAck49.js";import{_ as Ue,u as pe,b as ve,E as fe,d as b}from"./index-D9ImwlR4.js";import{s as Pe}from"./community-parser-CO25nZFt.js";import{aU as Ie,aT as Ve,d as Ye,f as Ge,ap as Be,a4 as qe,as as Je,R as Ke}from"./icons-DP3uiYxy.js";function B(t){const n=Pe(t);if(!n)return null;try{return JSON.parse(n)}catch{}const c=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!c)return null;try{return JSON.parse(c[0])}catch{return null}}const Se=Object.freeze(["draft","active","passed","rejected","expired"]),he=Object.freeze(["parameter_change","feature_request","policy_update","budget_allocation"]),He=Object.freeze(["yes","no","abstain"]);function z(t,n=0){return typeof t=="number"&&Number.isFinite(t)?t:n}function U(t){if(!t)return{noDb:!1,error:""};const n=Pe(t),c=/Database not available/i.test(n);return{noDb:c,error:c?"Database not available":""}}function We(t,n=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,name:String(t.name||""),description:String(t.description||""),_idx:n}:null}function me(t){const n=B(t);return Array.isArray(n)?n.map(We).filter(Boolean):[]}function Qe(t,n=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,title:String(t.title||""),description:t.description??"",type:String(t.type||"feature_request"),proposerDid:t.proposerDid??"",status:String(t.status||"draft").toLowerCase(),impactLevel:t.impactLevel??"",impactAnalysis:t.impactAnalysis??null,voteYes:z(t.voteYes,0),voteNo:z(t.voteNo,0),voteAbstain:z(t.voteAbstain,0),votingStartsAt:t.votingStartsAt??null,votingEndsAt:t.votingEndsAt??null,metadata:t.metadata??null,createdAt:t.createdAt??null,_idx:n}:null}function ye(t){const n=B(t);return Array.isArray(n)?n.map(Qe).filter(Boolean):[]}function Ze(t,n=0){if(!t||typeof t!="object")return null;const c=t.id||"";if(!c)return null;const e=String(t.vote||"").toLowerCase();return{key:c,id:c,proposalId:String(t.proposalId||""),voterDid:String(t.voterDid||""),vote:He.includes(e)?e:"unknown",reason:t.reason??"",weight:z(t.weight,1),createdAt:t.createdAt??null,_idx:n}}function ge(t){const n=B(t);return Array.isArray(n)?n.map(Ze).filter(Boolean):[]}function be(t){const n=B(t);return!n||typeof n!="object"||Array.isArray(n)?null:{impactLevel:String(n.impactLevel||""),affectedComponents:Array.isArray(n.affectedComponents)?n.affectedComponents.filter(c=>typeof c=="string"):[],riskScore:z(n.riskScore,0),benefitScore:z(n.benefitScore,0),estimatedEffort:String(n.estimatedEffort||""),communitySentiment:String(n.communitySentiment||""),recommendations:Array.isArray(n.recommendations)?n.recommendations.filter(c=>typeof c=="string"):[],analyzedAt:n.analyzedAt??null}}function _e(t){const n=B(t);return!n||typeof n!="object"||Array.isArray(n)?null:{proposalId:String(n.proposalId||""),predictedOutcome:String(n.predictedOutcome||""),confidence:z(n.confidence,0),yesProb:z(n.yesProb,0),noProb:z(n.noProb,0),abstainProb:z(n.abstainProb,0),basedOn:String(n.basedOn||""),sampleSize:z(n.sampleSize,0)}}const Xe={proposalCount:0,voteCount:0,byStatus:{},byType:{}};function ke(t){const n=JSON.parse(JSON.stringify(Xe));for(const e of Se)n.byStatus[e]=0;for(const e of he)n.byType[e]=0;const c=B(t);if(!c||typeof c!="object"||Array.isArray(c))return n;if(n.proposalCount=z(c.proposalCount,0),n.voteCount=z(c.voteCount,0),c.byStatus&&typeof c.byStatus=="object")for(const[e,D]of Object.entries(c.byStatus))typeof D=="number"&&Number.isFinite(D)&&(n.byStatus[e]=D);if(c.byType&&typeof c.byType=="object")for(const[e,D]of Object.entries(c.byType))typeof D=="number"&&Number.isFinite(D)&&(n.byType[e]=D);return n}function $e(t){if(t==null||t==="")return"—";const n=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(n.getTime())?String(t):n.toLocaleString("zh-CN",{hour12:!1})}const et={__name:"Governance",setup(t,{expose:n}){n();const c=pe(),{t:e}=ve(),D=fe.PRESENTED_IMAGE_SIMPLE,Q=P(!1),L=P(!1),I=P(!1),q=P([]),T=P([]),O=P({proposalCount:0,voteCount:0,byStatus:{},byType:{}}),C=P({noDb:!1,error:""}),V=P("proposals"),_=P(""),x=P(""),Y=P(!1),E=P(!1),Z=P(!1),X=P(!1),J=P(!1),w=se({title:"",type:"feature_request",proposerDid:"",description:""}),A=se({voterDid:"",value:"yes",weight:1,reason:""}),h=P(null),K=P([]),H=P(null),G=P(null),$=ie(()=>[{title:e("governance.cols.title"),key:"title"},{title:e("governance.cols.type"),key:"type",width:"130px"},{title:e("governance.cols.status"),key:"status",width:"100px"},{title:e("governance.cols.tally"),key:"tally",width:"180px"},{title:e("governance.cols.impact"),key:"impact",width:"100px"},{title:e("governance.cols.createdAt"),key:"createdAt",width:"160px"},{title:e("governance.cols.action"),key:"action",width:"320px"}]),M=ie(()=>{let l=q.value;return _.value&&(l=l.filter(i=>i.status===_.value)),x.value&&(l=l.filter(i=>i.type===x.value)),l});function ae(l){const i=`governance.statusLabels.${l}`,v=e(i);return v===i?l:v}function S(l){return{draft:"default",active:"processing",passed:"green",rejected:"red",expired:"default"}[l]||"default"}function ee(l){return{draft:"#888",active:"#1677ff",passed:"#52c41a",rejected:"#ff4d4f",expired:"#888"}[l]||"#888"}function ne(l){const i=`governance.typeLabels.${l}`,v=e(i);return v===i?l:v}function te(l){return{parameter_change:"cyan",feature_request:"blue",policy_update:"purple",budget_allocation:"gold"}[l]||"default"}function oe(l){return{parameter_change:"#13c2c2",feature_request:"#1677ff",policy_update:"#722ed1",budget_allocation:"#faad14"}[l]||"#888"}function r(l){const i=`governance.impactLabels.${l}`,v=e(i);return v===i?l:v}function m(l){return{low:"default",medium:"blue",high:"orange",critical:"red"}[l]||"default"}function R(l){return{low:"#888",medium:"#1677ff",high:"#faad14",critical:"#ff4d4f"}[l]||"#888"}function Ce(l){const i=`governance.voteLabels.${l}`,v=e(i);return v===i?l:v}function Ae(l){return{yes:"green",no:"red",abstain:"default"}[l]||"default"}function Oe(l){if(!l)return"—";const i=`governance.effortLabels.${l}`,v=e(i);return v===i?l:v}function we(l){if(!l)return"—";const i=`governance.sentimentLabels.${l}`,v=e(i);return v===i?l:v}function ze(l){const i=l.voteYes+l.voteNo;return i?Math.round(l.voteYes/i*100):0}function Le(l,i){return i?Math.round(l/i*100):0}async function W(){Q.value=!0,C.value={noDb:!1,error:""};try{const[l,i,v]=await Promise.all([c.execute("governance types --json",8e3).catch(()=>({output:""})),c.execute("governance list --json",1e4).catch(()=>({output:""})),c.execute("governance stats --json",8e3).catch(()=>({output:""}))]),j=[i,v].map(le=>U(le.output)).find(le=>le.noDb);j&&(C.value=j),T.value=me(l.output),q.value=ye(i.output),O.value=ke(v.output)}catch(l){b.error(e("governance.msg.loadFailed")+": "+(l?.message||l))}finally{Q.value=!1}}async function Te(){if(!w.title.trim()){b.warning(e("governance.msg.titleEmpty"));return}L.value=!0;try{const l=[`governance create "${w.title.trim().replace(/"/g,'\\"')}"`];l.push(`-t ${w.type}`),w.proposerDid.trim()&&l.push(`-p "${w.proposerDid.trim().replace(/"/g,'\\"')}"`),w.description.trim()&&l.push(`-d "${w.description.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:i}=await c.execute(l.join(" "),1e4);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}if(!/"id"/.test(i)){b.error(e("governance.msg.createFailed")+": "+i.slice(0,120));return}b.success(e("governance.msg.createSuccess")),Y.value=!1,ce(),await W()}catch(l){b.error(e("governance.msg.createFailed")+": "+(l?.message||l))}finally{L.value=!1}}async function xe(l){await re(`governance activate ${l.id} --json`,e("governance.msg.activated"))}async function Fe(l){await re(`governance close ${l.id} --json`,e("governance.msg.closed"))}async function re(l,i){try{const{output:v}=await c.execute(l,1e4);if(U(v).noDb){b.error(e("governance.msg.needCcInit"));return}if(!/"id"|"proposalId"|"passed"/.test(v)){b.error(e("governance.msg.actionFailed")+": "+v.slice(0,120));return}b.success(i),await W()}catch(v){b.error(e("governance.msg.actionFailed")+": "+(v?.message||v))}}function De(l){h.value=l,A.voterDid="",A.value="yes",A.weight=1,A.reason="",E.value=!0}async function Ee(){if(h.value){if(!A.voterDid.trim()){b.warning(e("governance.msg.voterEmpty"));return}I.value=!0;try{const l=[`governance vote ${h.value.id}`,`"${A.voterDid.trim().replace(/"/g,'\\"')}"`,A.value,`-w ${A.weight}`];A.reason.trim()&&l.push(`-r "${A.reason.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:i}=await c.execute(l.join(" "),8e3);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}if(!/"id"/.test(i)){b.error(e("governance.msg.voteFailed")+": "+i.slice(0,120));return}b.success(e("governance.msg.voteSuccess")),E.value=!1,await W()}catch(l){b.error(e("governance.msg.voteFailed")+": "+(l?.message||l))}finally{I.value=!1}}}async function je(l){h.value=l,K.value=[],Z.value=!0;try{const{output:i}=await c.execute(`governance votes ${l.id} --json`,8e3);K.value=ge(i)}catch{}}async function Me(l){h.value=l,H.value=null;try{const{output:i}=await c.execute(`governance analyze ${l.id} --json`,8e3);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}const j=be(i);if(!j){b.error(e("governance.msg.analyzeFailed")+": "+i.slice(0,120));return}H.value=j,X.value=!0}catch(i){b.error(e("governance.msg.analyzeFailed")+": "+(i?.message||i))}}async function Re(l){h.value=l,G.value=null;try{const{output:i}=await c.execute(`governance predict ${l.id} --json`,8e3);if(U(i).noDb){b.error(e("governance.msg.needCcInit"));return}const j=_e(i);if(!j){b.error(e("governance.msg.predictFailed")+": "+i.slice(0,120));return}G.value=j,J.value=!0}catch(i){b.error(e("governance.msg.predictFailed")+": "+(i?.message||i))}}function ce(){w.title="",w.type="feature_request",w.proposerDid="",w.description=""}ue(W);const de={ws:c,t:e,EMPTY_IMG:D,loading:Q,creating:L,voting:I,proposals:q,proposalTypes:T,stats:O,errorState:C,activeTab:V,statusFilter:_,typeFilter:x,showCreateModal:Y,showVoteModal:E,showDetailsModal:Z,showAnalysisModal:X,showPredictionModal:J,createForm:w,voteForm:A,currentProposal:h,detailVotes:K,currentAnalysis:H,currentPrediction:G,proposalColumns:$,filteredProposals:M,statusLabel:ae,statusColor:S,statusBarColor:ee,typeLabel:ne,typeColor:te,typeBarColor:oe,impactLabel:r,impactColor:m,impactBarColor:R,voteLabel:Ce,voteColor:Ae,effortLabel:Oe,sentimentLabel:we,yesPct:ze,pctOfTotal:Le,loadAll:W,createProposal:Te,activateProposal:xe,closeProposal:Fe,runProposalAction:re,openVoteModal:De,submitVote:Ee,viewProposalDetails:je,runAnalyze:Me,runPredict:Re,resetCreateForm:ce,ref:P,computed:ie,onMounted:ue,reactive:se,get ReloadOutlined(){return Ke},get PlusOutlined(){return Je},get FileTextOutlined(){return qe},get PlayCircleOutlined(){return Be},get CheckCircleOutlined(){return Ge},get CloseCircleOutlined(){return Ye},get LikeOutlined(){return Ve},get ArrowRightOutlined(){return Ie},get message(){return b},get Empty(){return fe},get useI18n(){return ve},get useWsStore(){return pe},get parseTypes(){return me},get parseProposals(){return ye},get parseVotes(){return ge},get parseAnalysis(){return be},get parsePrediction(){return _e},get parseStats(){return ke},get detectGovernanceError(){return U},get formatGovernanceTime(){return $e},get PROPOSAL_STATUSES(){return Se},get PROPOSAL_TYPE_IDS(){return he}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},tt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ot={class:"page-title"},at={class:"page-sub"},nt={class:"type-head"},rt={class:"type-count"},lt={class:"type-name"},st={class:"type-desc"},it={class:"filter-bar"},ct={style:{color:"var(--text-primary)","font-weight":"500"}},dt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},ut={style:{"font-family":"monospace","font-size":"12px"}},pt={style:{color:"#52c41a"}},vt={style:{color:"#ff4d4f"}},ft={style:{color:"var(--text-muted)"}},mt={key:1,style:{color:"var(--text-muted)"}},yt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},gt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},bt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},_t={key:0,style:{"padding-top":"8px"}},kt={style:{"font-family":"monospace","font-size":"12px"}},Pt={key:0,style:{"font-family":"monospace","font-size":"12px"}},St={key:1,style:{color:"var(--text-muted)"}},ht={key:0,style:{"white-space":"pre-wrap"}},Ct={key:1,style:{color:"var(--text-muted)"}},At={style:{color:"var(--text-primary)","font-size":"13px",margin:"20px 0 10px"}},Ot={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},wt={style:{"margin-left":"8px","font-family":"monospace","font-size":"11px",color:"var(--text-secondary)"}},zt={key:0,style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Lt={style:{"margin-left":"auto",color:"var(--text-muted)","font-size":"11px"}},Tt={key:0,style:{"padding-top":"8px"}},xt={style:{"margin-bottom":"8px"}},Ft={style:{color:"var(--text-secondary)","font-size":"12px"}},Dt={style:{color:"var(--text-secondary)","font-size":"12px"}},Et={key:0,style:{"padding-top":"8px"}},jt={style:{"text-align":"center","margin-bottom":"20px"}},Mt={style:{color:"#52c41a"}},Rt={style:{color:"#ff4d4f"}},Nt={style:{color:"var(--text-muted)"}};function Ut(t,n,c,e,D,Q){const L=y("a-button"),I=y("a-space"),q=y("a-alert"),T=y("a-statistic"),O=y("a-card"),C=y("a-col"),V=y("a-row"),_=y("a-tag"),x=y("a-radio-button"),Y=y("a-radio-group"),E=y("a-progress"),Z=y("a-popconfirm"),X=y("a-table"),J=y("a-tab-pane"),w=y("a-tabs"),A=y("a-input"),h=y("a-form-item"),K=y("a-select-option"),H=y("a-select"),G=y("a-textarea"),$=y("a-form"),M=y("a-modal"),ae=y("a-input-number"),S=y("a-descriptions-item"),ee=y("a-descriptions"),ne=y("a-empty"),te=y("a-list-item"),oe=y("a-list");return d(),g("div",null,[f("div",tt,[f("div",null,[f("h2",ot,s(t.$t("governance.title")),1),f("p",at,s(t.$t("governance.subtitle")),1)]),o(I,null,{default:a(()=>[o(L,{loading:e.loading,onClick:e.loadAll},{icon:a(()=>[o(e.ReloadOutlined)]),default:a(()=>[u(" "+s(t.$t("governance.refresh")),1)]),_:1},8,["loading"]),o(L,{type:"primary",onClick:n[0]||(n[0]=r=>e.showCreateModal=!0)},{icon:a(()=>[o(e.PlusOutlined)]),default:a(()=>[u(" "+s(t.$t("governance.create")),1)]),_:1})]),_:1})]),p(" noDb banner "),e.errorState.noDb?(d(),k(q,{key:0,type:"info","show-icon":"",message:t.$t("governance.noDb.message"),description:t.$t("governance.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):p("v-if",!0),p(" Stat cards "),o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.total"),value:e.stats.proposalCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[o(e.FileTextOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.active"),value:e.stats.byStatus.active||0,"value-style":{color:(e.stats.byStatus.active||0)>0?"#1677ff":"#888",fontSize:"20px"}},{prefix:a(()=>[o(e.PlayCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.passed"),value:e.stats.byStatus.passed||0,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:a(()=>[o(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(C,{xs:12,sm:8,lg:5},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.rejected"),value:e.stats.byStatus.rejected||0,"value-style":{color:"#ff4d4f",fontSize:"20px"}},{prefix:a(()=>[o(e.CloseCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(C,{xs:24,sm:8,lg:4},{default:a(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("governance.stats.votes"),value:e.stats.voteCount,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:a(()=>[o(e.LikeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),p(" Type catalogue "),o(O,{title:t.$t("governance.typesCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:a(()=>[o(V,{gutter:[12,12]},{default:a(()=>[(d(!0),g(F,null,N(e.proposalTypes,r=>(d(),k(C,{key:r.id,xs:12,sm:12,lg:6},{default:a(()=>[f("div",{class:"type-pill",style:Ne({borderLeftColor:e.typeColor(r.id)})},[f("div",nt,[o(_,{color:e.typeColor(r.id),style:{"font-family":"monospace"}},{default:a(()=>[u(s(r.id),1)]),_:2},1032,["color"]),f("span",rt,s(e.stats.byType[r.id]||0),1)]),f("div",lt,s(r.name),1),f("div",st,s(r.description),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),p(" Tabs "),o(w,{activeKey:e.activeTab,"onUpdate:activeKey":n[3]||(n[3]=r=>e.activeTab=r),class:"governance-tabs"},{default:a(()=>[p(" ── Proposals tab ────────────────────────────────────────── "),o(J,{key:"proposals",tab:t.$t("governance.tabs.proposals")},{default:a(()=>[f("div",it,[o(Y,{value:e.statusFilter,"onUpdate:value":n[1]||(n[1]=r=>e.statusFilter=r),size:"small","button-style":"solid"},{default:a(()=>[o(x,{value:""},{default:a(()=>[u(s(t.$t("governance.filter.allStatuses")),1)]),_:1}),(d(!0),g(F,null,N(e.PROPOSAL_STATUSES,r=>(d(),k(x,{key:r,value:r},{default:a(()=>[u(s(e.statusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(Y,{value:e.typeFilter,"onUpdate:value":n[2]||(n[2]=r=>e.typeFilter=r),size:"small"},{default:a(()=>[o(x,{value:""},{default:a(()=>[u(s(t.$t("governance.filter.allTypes")),1)]),_:1}),(d(!0),g(F,null,N(e.PROPOSAL_TYPE_IDS,r=>(d(),k(x,{key:r,value:r},{default:a(()=>[u(s(e.typeLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(X,{columns:e.proposalColumns,"data-source":e.filteredProposals,pagination:{pageSize:20,showTotal:r=>t.$t("governance.table.totalSuffix",{n:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:r,record:m})=>[r.key==="title"?(d(),g(F,{key:0},[f("span",ct,s(m.title||t.$t("governance.table.unnamed")),1),f("div",dt,s(m.id.slice(0,16)),1)],64)):p("v-if",!0),r.key==="type"?(d(),k(_,{key:1,color:e.typeColor(m.type),style:{"font-family":"monospace"}},{default:a(()=>[u(s(e.typeLabel(m.type)),1)]),_:2},1032,["color"])):p("v-if",!0),r.key==="status"?(d(),k(_,{key:2,color:e.statusColor(m.status)},{default:a(()=>[u(s(e.statusLabel(m.status)),1)]),_:2},1032,["color"])):p("v-if",!0),r.key==="tally"?(d(),g(F,{key:3},[f("span",ut,[f("span",pt,"+"+s(m.voteYes),1),n[17]||(n[17]=u(" / ",-1)),f("span",vt,"-"+s(m.voteNo),1),n[18]||(n[18]=u(" / ",-1)),f("span",ft,"~"+s(m.voteAbstain),1)]),m.voteYes+m.voteNo>0?(d(),k(E,{key:0,percent:e.yesPct(m),size:"small","show-info":!1,"stroke-color":m.voteYes>=m.voteNo?"#52c41a":"#ff4d4f",style:{"margin-top":"4px"}},null,8,["percent","stroke-color"])):p("v-if",!0)],64)):p("v-if",!0),r.key==="impact"?(d(),g(F,{key:4},[m.impactLevel?(d(),k(_,{key:0,color:e.impactColor(m.impactLevel)},{default:a(()=>[u(s(e.impactLabel(m.impactLevel)),1)]),_:2},1032,["color"])):(d(),g("span",mt,"—"))],64)):p("v-if",!0),r.key==="createdAt"?(d(),g("span",yt,s(e.formatGovernanceTime(m.createdAt)),1)):p("v-if",!0),r.key==="action"?(d(),g(F,{key:6},[o(L,{size:"small",type:"link",onClick:R=>e.viewProposalDetails(m)},{default:a(()=>[u(s(t.$t("governance.actions.details")),1)]),_:1},8,["onClick"]),m.status==="draft"?(d(),k(L,{key:0,size:"small",type:"link",onClick:R=>e.activateProposal(m)},{default:a(()=>[u(s(t.$t("governance.actions.activate")),1)]),_:1},8,["onClick"])):p("v-if",!0),m.status==="active"?(d(),k(L,{key:1,size:"small",type:"link",style:{color:"#52c41a"},onClick:R=>e.openVoteModal(m)},{default:a(()=>[u(s(t.$t("governance.actions.vote")),1)]),_:1},8,["onClick"])):p("v-if",!0),m.status==="active"?(d(),k(Z,{key:2,title:t.$t("governance.closeConfirm.title"),"ok-text":t.$t("governance.closeConfirm.ok"),"cancel-text":t.$t("governance.closeConfirm.cancel"),onConfirm:R=>e.closeProposal(m)},{default:a(()=>[o(L,{size:"small",type:"link",danger:""},{default:a(()=>[u(s(t.$t("governance.actions.close")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):p("v-if",!0),o(L,{size:"small",type:"link",onClick:R=>e.runAnalyze(m)},{default:a(()=>[u(s(t.$t("governance.actions.analyze")),1)]),_:1},8,["onClick"]),o(L,{size:"small",type:"link",onClick:R=>e.runPredict(m)},{default:a(()=>[u(s(t.$t("governance.actions.predict")),1)]),_:1},8,["onClick"])],64)):p("v-if",!0)]),emptyText:a(()=>[f("div",gt,[o(e.FileTextOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),u(" "+s(e.statusFilter||e.typeFilter?t.$t("governance.table.emptyFiltered"):t.$t("governance.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Status & type breakdown tab ──────────────────────────── "),o(J,{key:"breakdown",tab:t.$t("governance.tabs.breakdown")},{default:a(()=>[o(V,{gutter:[16,16]},{default:a(()=>[o(C,{xs:24,lg:12},{default:a(()=>[o(O,{title:t.$t("governance.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[(d(!0),g(F,null,N(e.PROPOSAL_STATUSES,r=>(d(),g("div",{key:r,class:"bd-row"},[o(_,{color:e.statusColor(r),style:{"min-width":"60px","text-align":"center"}},{default:a(()=>[u(s(e.statusLabel(r)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byStatus[r]||0,e.stats.proposalCount),"stroke-color":e.statusBarColor(r),format:()=>`${e.stats.byStatus[r]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(C,{xs:24,lg:12},{default:a(()=>[o(O,{title:t.$t("governance.breakdown.byType"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[(d(!0),g(F,null,N(e.PROPOSAL_TYPE_IDS,r=>(d(),g("div",{key:r,class:"bd-row"},[o(_,{color:e.typeColor(r),style:{"min-width":"90px","text-align":"center"}},{default:a(()=>[u(s(e.typeLabel(r)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byType[r]||0,e.stats.proposalCount),"stroke-color":e.typeBarColor(r),format:()=>`${e.stats.byType[r]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),p(" ── Create proposal modal ───────────────────────────────── "),o(M,{open:e.showCreateModal,"onUpdate:open":n[8]||(n[8]=r=>e.showCreateModal=r),title:t.$t("governance.create_modal.title"),"confirm-loading":e.creating,width:560,"ok-text":t.$t("governance.create_modal.ok"),"cancel-text":t.$t("governance.create_modal.cancel"),onOk:e.createProposal,onCancel:e.resetCreateForm},{default:a(()=>[o($,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(h,{label:t.$t("governance.create_modal.titleLabel"),required:""},{default:a(()=>[o(A,{value:e.createForm.title,"onUpdate:value":n[4]||(n[4]=r=>e.createForm.title=r),placeholder:t.$t("governance.create_modal.titlePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.create_modal.typeLabel"),required:""},{default:a(()=>[o(H,{value:e.createForm.type,"onUpdate:value":n[5]||(n[5]=r=>e.createForm.type=r)},{default:a(()=>[(d(!0),g(F,null,N(e.PROPOSAL_TYPE_IDS,r=>(d(),k(K,{key:r,value:r},{default:a(()=>[u(s(e.typeLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.create_modal.proposerLabel")},{default:a(()=>[o(A,{value:e.createForm.proposerDid,"onUpdate:value":n[6]||(n[6]=r=>e.createForm.proposerDid=r),placeholder:t.$t("governance.create_modal.proposerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.create_modal.descLabel")},{default:a(()=>[o(G,{value:e.createForm.description,"onUpdate:value":n[7]||(n[7]=r=>e.createForm.description=r),placeholder:t.$t("governance.create_modal.descPlaceholder"),"auto-size":{minRows:3,maxRows:8}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Vote modal ───────────────────────────────────────────── "),o(M,{open:e.showVoteModal,"onUpdate:open":n[13]||(n[13]=r=>e.showVoteModal=r),title:t.$t("governance.vote_modal.title",{title:e.currentProposal?.title||""}),"confirm-loading":e.voting,width:540,"ok-text":t.$t("governance.vote_modal.ok"),"cancel-text":t.$t("governance.vote_modal.cancel"),onOk:e.submitVote},{default:a(()=>[o($,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(h,{label:t.$t("governance.vote_modal.voterLabel"),required:""},{default:a(()=>[o(A,{value:e.voteForm.voterDid,"onUpdate:value":n[9]||(n[9]=r=>e.voteForm.voterDid=r),placeholder:"did:key:..."},null,8,["value"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.vote_modal.valueLabel"),required:""},{default:a(()=>[o(Y,{value:e.voteForm.value,"onUpdate:value":n[10]||(n[10]=r=>e.voteForm.value=r),"button-style":"solid"},{default:a(()=>[o(x,{value:"yes",style:{color:"#52c41a"}},{default:a(()=>[u(s(t.$t("governance.vote_modal.yes")),1)]),_:1}),o(x,{value:"no",style:{color:"#ff4d4f"}},{default:a(()=>[u(s(t.$t("governance.vote_modal.no")),1)]),_:1}),o(x,{value:"abstain"},{default:a(()=>[u(s(t.$t("governance.vote_modal.abstain")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),o(h,{label:t.$t("governance.vote_modal.weightLabel")},{default:a(()=>[o(ae,{value:e.voteForm.weight,"onUpdate:value":n[11]||(n[11]=r=>e.voteForm.weight=r),min:.1,step:.1,style:{width:"120px"}},null,8,["value"]),f("span",bt,s(t.$t("governance.vote_modal.weightHint")),1)]),_:1},8,["label"]),o(h,{label:t.$t("governance.vote_modal.reasonLabel")},{default:a(()=>[o(G,{value:e.voteForm.reason,"onUpdate:value":n[12]||(n[12]=r=>e.voteForm.reason=r),placeholder:t.$t("governance.vote_modal.reasonPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Proposal details modal ──────────────────────────────── "),o(M,{open:e.showDetailsModal,"onUpdate:open":n[14]||(n[14]=r=>e.showDetailsModal=r),title:t.$t("governance.details.title",{title:e.currentProposal?.title||""}),width:780,footer:null},{default:a(()=>[e.currentProposal?(d(),g("div",_t,[o(ee,{column:2,size:"small",bordered:""},{default:a(()=>[o(S,{label:t.$t("governance.details.id"),span:2},{default:a(()=>[f("span",kt,s(e.currentProposal.id),1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.type")},{default:a(()=>[o(_,{color:e.typeColor(e.currentProposal.type)},{default:a(()=>[u(s(e.typeLabel(e.currentProposal.type)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.status")},{default:a(()=>[o(_,{color:e.statusColor(e.currentProposal.status)},{default:a(()=>[u(s(e.statusLabel(e.currentProposal.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.proposer"),span:2},{default:a(()=>[e.currentProposal.proposerDid?(d(),g("span",Pt,s(e.currentProposal.proposerDid),1)):(d(),g("span",St,s(t.$t("governance.details.proposerUnset")),1))]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.description"),span:2},{default:a(()=>[e.currentProposal.description?(d(),g("div",ht,s(e.currentProposal.description),1)):(d(),g("span",Ct,"—"))]),_:1},8,["label"]),o(S,{label:t.$t("governance.details.tally"),span:2},{default:a(()=>[o(I,null,{default:a(()=>[o(_,{color:"green"},{default:a(()=>[u(s(t.$t("governance.details.tallyYes",{n:e.currentProposal.voteYes})),1)]),_:1}),o(_,{color:"red"},{default:a(()=>[u(s(t.$t("governance.details.tallyNo",{n:e.currentProposal.voteNo})),1)]),_:1}),o(_,null,{default:a(()=>[u(s(t.$t("governance.details.tallyAbstain",{n:e.currentProposal.voteAbstain})),1)]),_:1})]),_:1})]),_:1},8,["label"]),e.currentProposal.impactLevel?(d(),k(S,{key:0,label:t.$t("governance.details.impact")},{default:a(()=>[o(_,{color:e.impactColor(e.currentProposal.impactLevel)},{default:a(()=>[u(s(e.impactLabel(e.currentProposal.impactLevel)),1)]),_:1},8,["color"])]),_:1},8,["label"])):p("v-if",!0),o(S,{label:t.$t("governance.details.createdAt")},{default:a(()=>[u(s(e.formatGovernanceTime(e.currentProposal.createdAt)),1)]),_:1},8,["label"]),e.currentProposal.votingStartsAt?(d(),k(S,{key:1,label:t.$t("governance.details.votingStartsAt")},{default:a(()=>[u(s(e.formatGovernanceTime(e.currentProposal.votingStartsAt)),1)]),_:1},8,["label"])):p("v-if",!0),e.currentProposal.votingEndsAt?(d(),k(S,{key:2,label:t.$t("governance.details.votingEndsAt")},{default:a(()=>[u(s(e.formatGovernanceTime(e.currentProposal.votingEndsAt)),1)]),_:1},8,["label"])):p("v-if",!0)]),_:1}),p(" Votes list "),f("h4",At,s(t.$t("governance.details.votesHeader")),1),e.detailVotes.length?(d(),k(oe,{key:1,size:"small","data-source":e.detailVotes,pagination:{pageSize:8}},{renderItem:a(({item:r})=>[o(te,null,{default:a(()=>[o(_,{color:e.voteColor(r.vote),style:{"min-width":"50px","text-align":"center"}},{default:a(()=>[u(s(e.voteLabel(r.vote)),1)]),_:2},1032,["color"]),f("span",Ot,"w="+s(r.weight),1),f("span",wt,s(r.voterDid),1),r.reason?(d(),g("span",zt,"— "+s(r.reason),1)):p("v-if",!0),f("span",Lt,s(e.formatGovernanceTime(r.createdAt)),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(ne,{key:0,description:t.$t("governance.details.votesEmpty"),image:e.EMPTY_IMG},null,8,["description","image"]))])):p("v-if",!0)]),_:1},8,["open","title"]),p(" ── Analysis modal ──────────────────────────────────────── "),o(M,{open:e.showAnalysisModal,"onUpdate:open":n[15]||(n[15]=r=>e.showAnalysisModal=r),title:t.$t("governance.analysis.title",{title:e.currentProposal?.title||""}),width:640,footer:null},{default:a(()=>[e.currentAnalysis?(d(),g("div",Tt,[o(V,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:a(()=>[o(C,{span:8},{default:a(()=>[o(T,{title:t.$t("governance.analysis.impactLevel"),value:e.impactLabel(e.currentAnalysis.impactLevel),"value-style":{color:e.impactBarColor(e.currentAnalysis.impactLevel),fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1}),o(C,{span:8},{default:a(()=>[o(T,{title:t.$t("governance.analysis.effort"),value:e.effortLabel(e.currentAnalysis.estimatedEffort),"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(C,{span:8},{default:a(()=>[o(T,{title:t.$t("governance.analysis.sentiment"),value:e.sentimentLabel(e.currentAnalysis.communitySentiment),"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1})]),_:1}),o(O,{title:t.$t("governance.analysis.riskBenefit"),size:"small",style:{"margin-bottom":"12px"}},{default:a(()=>[f("div",xt,[f("span",Ft,s(t.$t("governance.analysis.riskScore")),1),o(E,{percent:Math.round(e.currentAnalysis.riskScore*100),"stroke-color":"#ff4d4f"},null,8,["percent"])]),f("div",null,[f("span",Dt,s(t.$t("governance.analysis.benefitScore")),1),o(E,{percent:Math.round(e.currentAnalysis.benefitScore*100),"stroke-color":"#52c41a"},null,8,["percent"])])]),_:1},8,["title"]),e.currentAnalysis.affectedComponents.length?(d(),k(O,{key:0,title:t.$t("governance.analysis.components"),size:"small",style:{"margin-bottom":"12px"}},{default:a(()=>[(d(!0),g(F,null,N(e.currentAnalysis.affectedComponents,r=>(d(),k(_,{key:r,color:"blue"},{default:a(()=>[u(s(r),1)]),_:2},1024))),128))]),_:1},8,["title"])):p("v-if",!0),e.currentAnalysis.recommendations.length?(d(),k(O,{key:1,title:t.$t("governance.analysis.recommendations"),size:"small"},{default:a(()=>[o(oe,{size:"small","data-source":e.currentAnalysis.recommendations},{renderItem:a(({item:r})=>[o(te,null,{default:a(()=>[o(e.ArrowRightOutlined,{style:{color:"#faad14","margin-right":"8px"}}),u(" "+s(r),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):p("v-if",!0)])):p("v-if",!0)]),_:1},8,["open","title"]),p(" ── Prediction modal ────────────────────────────────────── "),o(M,{open:e.showPredictionModal,"onUpdate:open":n[16]||(n[16]=r=>e.showPredictionModal=r),title:t.$t("governance.prediction.title",{title:e.currentProposal?.title||""}),width:540,footer:null},{default:a(()=>[e.currentPrediction?(d(),g("div",Et,[f("div",jt,[o(_,{color:e.currentPrediction.predictedOutcome==="pass"?"green":"red",style:{"font-size":"16px",padding:"6px 14px"}},{default:a(()=>[u(s(e.currentPrediction.predictedOutcome==="pass"?t.$t("governance.prediction.outcomePass"):t.$t("governance.prediction.outcomeReject")),1)]),_:1},8,["color"])]),o(ee,{column:2,size:"small",bordered:""},{default:a(()=>[o(S,{label:t.$t("governance.prediction.confidence"),span:2},{default:a(()=>[o(E,{percent:Math.round(e.currentPrediction.confidence*100),"stroke-color":e.currentPrediction.confidence>=.6?"#52c41a":"#faad14"},null,8,["percent","stroke-color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.basedOn")},{default:a(()=>[o(_,{color:e.currentPrediction.basedOn==="votes"?"blue":"orange"},{default:a(()=>[u(s(e.currentPrediction.basedOn==="votes"?t.$t("governance.prediction.basedOnVotes"):t.$t("governance.prediction.basedOnHeuristic")),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.sampleSize")},{default:a(()=>[u(s(e.currentPrediction.sampleSize),1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.yesProb")},{default:a(()=>[f("span",Mt,s((e.currentPrediction.yesProb*100).toFixed(1))+"%",1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.noProb")},{default:a(()=>[f("span",Rt,s((e.currentPrediction.noProb*100).toFixed(1))+"%",1)]),_:1},8,["label"]),o(S,{label:t.$t("governance.prediction.abstainProb"),span:2},{default:a(()=>[f("span",Nt,s((e.currentPrediction.abstainProb*100).toFixed(1))+"%",1)]),_:1},8,["label"])]),_:1})])):p("v-if",!0)]),_:1},8,["open","title"])])}const Bt=Ue(et,[["render",Ut],["__scopeId","data-v-3a4a41f3"],["__file","/tmp/cc-web-panel-DNn50E/repo/packages/web-panel/src/views/Governance.vue"]]);export{Bt as default};
@@ -1 +0,0 @@
1
- import{I as b,J as g,U as w,R as d,c as a,K as t,V as f,S,o as ae,a as Z,b as V,r as _,P as c,Q as m,F as h,Z as E,$ as Se}from"./vendor-BvqAck49.js";import{_ as he,b as oe,u as re,d as p}from"./index-D9ImwlR4.js";import{s as Ce}from"./community-parser-CO25nZFt.js";import{a0 as Fe,f as Te,$ as Oe,a3 as we,as as Ae,R as Me}from"./icons-DP3uiYxy.js";function X(s){const i=Ce(s);if(!i)return null;try{return JSON.parse(i)}catch{}const n=i.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!n)return null;try{return JSON.parse(n[0])}catch{return null}}const Ne=Object.freeze(["online","offline","busy","degraded"]),ze=Object.freeze(["queued","dispatched","running","complete","failed"]),Ie=Object.freeze(["standard","encrypted","federated"]);function F(s,i=0){return typeof s=="number"&&Number.isFinite(s)?s:i}function Le(s){if(Array.isArray(s))return s.filter(i=>typeof i=="string");if(typeof s=="string")try{const i=JSON.parse(s);if(Array.isArray(i))return i.filter(n=>typeof n=="string")}catch{}return[]}function je(s,i=0){if(!s||typeof s!="object")return null;const n=s.id||"";return n?{key:n,id:n,nodeId:s.nodeId??s.node_id??"",endpoint:s.endpoint||"",capabilities:Le(s.capabilities),gpuMemoryMb:F(s.gpuMemoryMb??s.gpu_memory_mb,0),status:String(s.status||"offline").toLowerCase(),lastHeartbeat:s.lastHeartbeat??s.last_heartbeat??null,taskCount:F(s.taskCount??s.task_count,0),createdAt:s.createdAt??s.created_at??null,_idx:i}:null}function ie(s){const i=X(s);return Array.isArray(i)?i.map(je).filter(Boolean):[]}function Ue(s,i=0){if(!s||typeof s!="object")return null;const n=s.id||"";return n?{key:n,id:n,model:String(s.model||""),input:s.input??"",output:s.output??"",privacyMode:String(s.privacyMode??s.privacy_mode??"standard").toLowerCase(),priority:F(s.priority,5),assignedNode:s.assignedNode??s.assigned_node??null,status:String(s.status||"queued").toLowerCase(),durationMs:s.durationMs??s.duration_ms??null,createdAt:s.createdAt??s.created_at??null,completedAt:s.completedAt??s.completed_at??null,_idx:i}:null}function le(s){const i=X(s);return Array.isArray(i)?i.map(Ue).filter(Boolean):[]}const Re={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function se(s){const i=JSON.parse(JSON.stringify(Re)),n=X(s);return!n||typeof n!="object"||Array.isArray(n)||(n.nodes&&typeof n.nodes=="object"&&(i.nodes.total=F(n.nodes.total,0),i.nodes.online=F(n.nodes.online,0),i.nodes.offline=F(n.nodes.offline,0),i.nodes.busy=F(n.nodes.busy,0)),n.tasks&&typeof n.tasks=="object"&&(i.tasks.total=F(n.tasks.total,0),i.tasks.queued=F(n.tasks.queued,0),i.tasks.completed=F(n.tasks.completed,0),i.tasks.failed=F(n.tasks.failed,0),i.tasks.avgDurationMs=F(n.tasks.avgDurationMs??n.tasks.avg_duration_ms,0))),i}function De(s){if(s==null||s==="")return"—";const i=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(i.getTime())?String(s):i.toLocaleString("zh-CN",{hour12:!1})}const Pe={__name:"Inference",setup(s,{expose:i}){i();const{t:n}=oe(),e=re(),H=_(!1),J=_(!1),T=_(!1),U=_(""),R=_(""),I=_([]),D=_([]),L=_({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),M=_("nodes"),N=_(""),q=_(""),C=_(""),O=_(!1),j=_(!1),k=Z({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),v=Z({model:"",input:"",priority:5,mode:"standard"}),K=V(()=>[{title:n("inference.nodeColumns.nodeId"),key:"nodeId"},{title:n("inference.nodeColumns.capabilities"),key:"capabilities",width:"220px"},{title:n("inference.nodeColumns.gpu"),key:"gpu",width:"100px"},{title:n("inference.nodeColumns.status"),key:"status",width:"100px"},{title:n("inference.nodeColumns.taskCount"),key:"taskCount",width:"90px"},{title:n("inference.nodeColumns.lastHeartbeat"),key:"lastHeartbeat",width:"160px"},{title:n("inference.nodeColumns.action"),key:"action",width:"210px"}]),W=V(()=>[{title:n("inference.taskColumns.model"),key:"model"},{title:n("inference.taskColumns.privacyMode"),key:"privacyMode",width:"110px"},{title:n("inference.taskColumns.priority"),key:"priority",width:"80px"},{title:n("inference.taskColumns.assignedNode"),key:"assignedNode",width:"140px"},{title:n("inference.taskColumns.status"),key:"status",width:"110px"},{title:n("inference.taskColumns.duration"),key:"duration",width:"110px"},{title:n("inference.taskColumns.createdAt"),key:"createdAt",width:"160px"},{title:n("inference.taskColumns.action"),key:"action",width:"140px"}]),P=V(()=>N.value?I.value.filter(o=>o.status===N.value):I.value),A=V(()=>{let o=D.value;return q.value&&(o=o.filter(r=>r.status===q.value)),C.value&&(o=o.filter(r=>r.privacyMode===C.value)),o});function B(o){const r=`inference.nodeStatus.${o}`,y=n(r);return y===r?o:y}function Y(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function G(o){const r=`inference.taskStatus.${o}`,y=n(r);return y===r?o:y}function Q(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function l(o){const r=`inference.privacy.${o}`,y=n(r);return y===r?o:y}function u(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function x(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function de(o){const r=I.value.find(y=>y.id===o);return r?r.nodeId:o.slice(0,8)}function ce(o,r){return o?o.length>r?o.slice(0,r)+"...":o:""}function ue(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function fe(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function me(o){return o.status!=="complete"&&o.status!=="failed"}function ye({key:o}){o==="register"?O.value=!0:o==="submit"&&(j.value=!0)}async function z(){H.value=!0;try{const[o,r,y]=await Promise.all([e.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference stats --json",8e3).catch(()=>({output:""}))]);I.value=ie(o.output),D.value=le(r.output),L.value=se(y.output)}catch(o){p.error(n("inference.messages.loadFailed",{err:o?.message||o}))}finally{H.value=!1}}async function ge(){const o=k.nodeId.trim();if(!o){p.warning(n("inference.messages.nodeIdRequired"));return}J.value=!0;try{const r=[`inference register "${o.replace(/"/g,'\\"')}"`];if(k.endpoint.trim()&&r.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.capabilities.trim()){const ne=k.capabilities.split(/[,\s]+/).filter(Boolean).join(",");ne&&r.push(`--capabilities "${ne}"`)}k.gpuMemory!=null&&r.push(`--gpu ${k.gpuMemory}`),r.push("--json");const{output:y}=await e.execute(r.join(" "),1e4);if(/error|failed|失败/i.test(y)&&!/"nodeId"/.test(y)){p.error(n("inference.messages.registerFailed",{err:y.slice(0,120)}));return}p.success(n("inference.messages.registerOk")),O.value=!1,$(),await z()}catch(r){p.error(n("inference.messages.registerFailed",{err:r?.message||r}))}finally{J.value=!1}}async function pe(){const o=v.model.trim();if(!o){p.warning(n("inference.messages.modelRequired"));return}T.value=!0;try{const r=[`inference submit "${o.replace(/"/g,'\\"')}"`];v.input.trim()&&r.push(`--input "${v.input.trim().replace(/"/g,'\\"')}"`),v.priority!=null&&r.push(`--priority ${v.priority}`),r.push(`--mode ${v.mode}`),r.push("--json");const{output:y}=await e.execute(r.join(" "),12e3);if(/error|failed|失败/i.test(y)&&!/"taskId"/.test(y)){p.error(n("inference.messages.submitFailed",{err:y.slice(0,120)}));return}p.success(n("inference.messages.submitOk")),j.value=!1,ee(),M.value="tasks",await z()}catch(r){p.error(n("inference.messages.submitFailed",{err:r?.message||r}))}finally{T.value=!1}}async function be(o){U.value=o.id;try{const{output:r}=await e.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(r)&&!/"updated"/.test(r)){p.error(n("inference.messages.heartbeatFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.heartbeatOk")),await z()}catch(r){p.error(n("inference.messages.heartbeatFailed",{err:r?.message||r}))}finally{U.value=""}}async function ke(o,r){if(r!==o.status)try{const{output:y}=await e.execute(`inference node-status ${o.id} ${r} --json`,8e3);if(/error|invalid/i.test(y)&&!/"updated"/.test(y)){p.error(n("inference.messages.statusFailed",{err:y.slice(0,120)}));return}p.success(n("inference.messages.statusOk",{status:B(r)})),await z()}catch(y){p.error(n("inference.messages.statusFailed",{err:y?.message||y}))}}async function _e(o){try{const{output:r}=await e.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(r)&&!/"removed"/.test(r)){p.error(n("inference.messages.unregisterFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.unregisterOk")),await z()}catch(r){p.error(n("inference.messages.unregisterFailed",{err:r?.message||r}))}}async function ve(o){R.value=o.id;try{const{output:r}=await e.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(r)&&!/"completed"/.test(r)){p.error(n("inference.messages.completeFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.completeOk")),await z()}catch(r){p.error(n("inference.messages.completeFailed",{err:r?.message||r}))}finally{R.value=""}}async function xe(o){try{const{output:r}=await e.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(r)&&!/"failed"/.test(r)){p.error(n("inference.messages.failFailed",{err:r.slice(0,120)}));return}p.success(n("inference.messages.failOk")),await z()}catch(r){p.error(n("inference.messages.failFailed",{err:r?.message||r}))}}function $(){k.nodeId="",k.endpoint="",k.capabilities="",k.gpuMemory=null}function ee(){v.model="",v.input="",v.priority=5,v.mode="standard"}ae(z);const te={t:n,ws:e,loading:H,registering:J,submitting:T,heartbeatId:U,completingId:R,nodes:I,tasks:D,stats:L,activeTab:M,nodeStatusFilter:N,taskStatusFilter:q,taskPrivacyFilter:C,showRegisterModal:O,showSubmitModal:j,registerForm:k,submitForm:v,nodeColumns:K,taskColumns:W,filteredNodes:P,filteredTasks:A,nodeStatusLabel:B,nodeStatusColor:Y,taskStatusLabel:G,taskStatusColor:Q,privacyLabel:l,privacyColor:u,priorityColor:x,nodeShortName:de,truncate:ce,formatGpuMemory:ue,canComplete:fe,canFail:me,handleNewClick:ye,loadAll:z,registerNode:ge,submitTask:pe,sendHeartbeat:be,transitionStatus:ke,unregisterNode:_e,completeTask:ve,failTask:xe,resetRegisterForm:$,resetSubmitForm:ee,ref:_,computed:V,onMounted:ae,reactive:Z,get useI18n(){return oe},get ReloadOutlined(){return Me},get PlusOutlined(){return Ae},get CloudServerOutlined(){return we},get ThunderboltOutlined(){return Oe},get CheckCircleOutlined(){return Te},get ClockCircleOutlined(){return Fe},get message(){return p},get useWsStore(){return re},get parseNodes(){return ie},get parseTasks(){return le},get parseStats(){return se},get formatInferenceTime(){return De},get NODE_STATUSES(){return Ne},get TASK_STATUSES(){return ze},get PRIVACY_MODES(){return Ie}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Ee={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},qe={class:"page-title"},Be={class:"page-sub"},Ve={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},He={class:"filter-bar"},Je={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Ye={key:1,style:{color:"var(--text-muted)"}},Ge={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},We={key:1,style:{color:"var(--text-muted)"}},Qe={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Ze={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Xe={class:"filter-bar"},$e={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},et={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},tt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},nt={key:1,style:{color:"var(--text-muted)"}},at={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},ot={key:1,style:{color:"var(--text-muted)"}},rt={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function lt(s,i,n,e,H,J){const T=b("a-button"),U=b("a-menu-item"),R=b("a-menu"),I=b("a-dropdown"),D=b("a-space"),L=b("a-statistic"),M=b("a-card"),N=b("a-col"),q=b("a-row"),C=b("a-tag"),O=b("a-radio-button"),j=b("a-radio-group"),k=b("a-popconfirm"),v=b("a-table"),K=b("a-tab-pane"),W=b("a-tabs"),P=b("a-input"),A=b("a-form-item"),B=b("a-input-number"),Y=b("a-form"),G=b("a-modal"),Q=b("a-textarea");return c(),g("div",null,[w("div",Ee,[w("div",null,[w("h2",qe,d(e.t("inference.title")),1),w("p",Be,d(e.t("inference.subtitle")),1)]),a(D,null,{default:t(()=>[a(T,{loading:e.loading,onClick:e.loadAll},{icon:t(()=>[a(e.ReloadOutlined)]),default:t(()=>[m(" "+d(e.t("inference.refresh")),1)]),_:1},8,["loading"]),a(I,{trigger:["click"]},{overlay:t(()=>[a(R,{onClick:e.handleNewClick},{default:t(()=>[a(U,{key:"register"},{default:t(()=>[a(e.CloudServerOutlined),m(" "+d(e.t("inference.actions.register")),1)]),_:1}),a(U,{key:"submit"},{default:t(()=>[a(e.ThunderboltOutlined),m(" "+d(e.t("inference.actions.submit")),1)]),_:1})]),_:1})]),default:t(()=>[a(T,{type:"primary"},{icon:t(()=>[a(e.PlusOutlined)]),default:t(()=>[m(" "+d(e.t("inference.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),f(" Stat cards "),a(q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.totalNodes"),value:e.stats.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(e.CloudServerOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.onlineNodes"),value:e.stats.nodes.online,"value-style":{color:e.stats.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[a(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.totalTasks"),value:e.stats.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(N,{xs:12,sm:8,lg:5},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.queued"),value:e.stats.tasks.queued,"value-style":{color:e.stats.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(e.ClockCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(N,{xs:24,sm:8,lg:4},{default:t(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(L,{title:e.t("inference.stats.avgDuration"),value:e.stats.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),f(" Node status breakdown "),e.stats.nodes.total>0?(c(),S(M,{key:0,title:e.t("inference.breakdown.title"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(D,{size:[12,8],wrap:""},{default:t(()=>[a(C,{color:"green"},{default:t(()=>[m(d(e.t("inference.breakdown.online",{count:e.stats.nodes.online})),1)]),_:1}),a(C,{color:"orange"},{default:t(()=>[m(d(e.t("inference.breakdown.busy",{count:e.stats.nodes.busy})),1)]),_:1}),a(C,{color:"default"},{default:t(()=>[m(d(e.t("inference.breakdown.offline",{count:e.stats.nodes.offline})),1)]),_:1}),w("span",Ve,d(e.t("inference.breakdown.extra",{complete:e.stats.tasks.completed,failed:e.stats.tasks.failed})),1)]),_:1})]),_:1},8,["title"])):f("v-if",!0),f(" Tabs "),a(W,{activeKey:e.activeTab,"onUpdate:activeKey":i[3]||(i[3]=l=>e.activeTab=l),class:"inference-tabs"},{default:t(()=>[f(" ── Nodes tab ─────────────────────────────────────────────── "),a(K,{key:"nodes",tab:e.t("inference.tabs.nodes")},{default:t(()=>[w("div",He,[a(j,{value:e.nodeStatusFilter,"onUpdate:value":i[0]||(i[0]=l=>e.nodeStatusFilter=l),size:"small","button-style":"solid"},{default:t(()=>[a(O,{value:""},{default:t(()=>[m(d(e.t("inference.filter.all")),1)]),_:1}),(c(!0),g(h,null,E(e.NODE_STATUSES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.nodeStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(v,{columns:e.nodeColumns,"data-source":e.filteredNodes,pagination:{pageSize:20,showTotal:l=>e.t("inference.totals.rows",{count:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:l,record:u})=>[l.key==="nodeId"?(c(),g(h,{key:0},[w("span",Je,d(u.nodeId),1),u.endpoint?(c(),g("div",Ke,d(e.truncate(u.endpoint,50)),1)):f("v-if",!0)],64)):f("v-if",!0),l.key==="capabilities"?(c(),g(h,{key:1},[(c(!0),g(h,null,E(u.capabilities.slice(0,4),x=>(c(),S(C,{key:x,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[m(d(x),1)]),_:2},1024))),128)),u.capabilities.length>4?(c(),S(C,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[m("+"+d(u.capabilities.length-4),1)]),_:2},1024)):f("v-if",!0),u.capabilities.length?f("v-if",!0):(c(),g("span",Ye,"—"))],64)):f("v-if",!0),l.key==="gpu"?(c(),g(h,{key:2},[u.gpuMemoryMb>0?(c(),g("span",Ge,d(e.formatGpuMemory(u.gpuMemoryMb)),1)):(c(),g("span",We,"—"))],64)):f("v-if",!0),l.key==="status"?(c(),S(C,{key:3,color:e.nodeStatusColor(u.status)},{default:t(()=>[m(d(e.nodeStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),l.key==="taskCount"?(c(),S(C,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[m(d(u.taskCount),1)]),_:2},1024)):f("v-if",!0),l.key==="lastHeartbeat"?(c(),g("span",Qe,d(e.formatInferenceTime(u.lastHeartbeat)),1)):f("v-if",!0),l.key==="action"?(c(),g(h,{key:6},[a(T,{size:"small",type:"link",loading:e.heartbeatId===u.id,onClick:x=>e.sendHeartbeat(u)},{default:t(()=>[m(d(e.t("inference.rowActions.heartbeat")),1)]),_:1},8,["loading","onClick"]),a(I,{trigger:["click"]},{overlay:t(()=>[a(R,{onClick:x=>e.transitionStatus(u,x.key)},{default:t(()=>[(c(!0),g(h,null,E(e.NODE_STATUSES,x=>(c(),S(U,{key:x,disabled:x===u.status},{default:t(()=>[m(d(e.nodeStatusLabel(x)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(T,{size:"small",type:"link"},{default:t(()=>[m(d(e.t("inference.rowActions.statusDropdown")),1)]),_:1})]),_:2},1024),a(k,{title:e.t("inference.rowActions.unregisterConfirm"),"ok-text":e.t("inference.rowActions.unregisterOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.unregisterNode(u)},{default:t(()=>[a(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.unregister")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):f("v-if",!0)]),emptyText:t(()=>[w("div",Ze,[a(e.CloudServerOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.nodeStatusFilter?e.t("inference.empty.filteredNodes"):e.t("inference.empty.noNodes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),f(" ── Tasks tab ─────────────────────────────────────────────── "),a(K,{key:"tasks",tab:e.t("inference.tabs.tasks")},{default:t(()=>[w("div",Xe,[a(j,{value:e.taskStatusFilter,"onUpdate:value":i[1]||(i[1]=l=>e.taskStatusFilter=l),size:"small"},{default:t(()=>[a(O,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allStatuses")),1)]),_:1}),(c(!0),g(h,null,E(e.TASK_STATUSES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.taskStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(j,{value:e.taskPrivacyFilter,"onUpdate:value":i[2]||(i[2]=l=>e.taskPrivacyFilter=l),size:"small"},{default:t(()=>[a(O,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allModes")),1)]),_:1}),(c(!0),g(h,null,E(e.PRIVACY_MODES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.privacyLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(v,{columns:e.taskColumns,"data-source":e.filteredTasks,pagination:{pageSize:20,showTotal:l=>e.t("inference.totals.rows",{count:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:l,record:u})=>[l.key==="model"?(c(),g(h,{key:0},[w("span",$e,d(u.model),1),u.input?(c(),g("div",et,d(e.truncate(u.input,60)),1)):f("v-if",!0)],64)):f("v-if",!0),l.key==="privacyMode"?(c(),S(C,{key:1,color:e.privacyColor(u.privacyMode)},{default:t(()=>[m(d(e.privacyLabel(u.privacyMode)),1)]),_:2},1032,["color"])):f("v-if",!0),l.key==="priority"?(c(),g("span",{key:2,style:Se({color:e.priorityColor(u.priority),fontWeight:500})},d(u.priority),5)):f("v-if",!0),l.key==="assignedNode"?(c(),g(h,{key:3},[u.assignedNode?(c(),g("span",tt,d(e.nodeShortName(u.assignedNode)),1)):(c(),g("span",nt,"—"))],64)):f("v-if",!0),l.key==="status"?(c(),S(C,{key:4,color:e.taskStatusColor(u.status)},{default:t(()=>[m(d(e.taskStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),l.key==="duration"?(c(),g(h,{key:5},[u.durationMs!=null?(c(),g("span",at,d(u.durationMs)+" ms ",1)):(c(),g("span",ot,"—"))],64)):f("v-if",!0),l.key==="createdAt"?(c(),g("span",rt,d(e.formatInferenceTime(u.createdAt)),1)):f("v-if",!0),l.key==="action"?(c(),g(h,{key:7},[e.canComplete(u)?(c(),S(T,{key:0,size:"small",type:"link",loading:e.completingId===u.id,onClick:x=>e.completeTask(u)},{default:t(()=>[m(d(e.t("inference.rowActions.complete")),1)]),_:1},8,["loading","onClick"])):f("v-if",!0),e.canFail(u)?(c(),S(k,{key:1,title:e.t("inference.rowActions.failConfirm"),"ok-text":e.t("inference.rowActions.failOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.failTask(u)},{default:t(()=>[a(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.fail")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):f("v-if",!0)],64)):f("v-if",!0)]),emptyText:t(()=>[w("div",it,[a(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.taskStatusFilter||e.taskPrivacyFilter?e.t("inference.empty.filteredTasks"):e.t("inference.empty.noTasks")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Register node modal ──────────────────────────────────── "),a(G,{open:e.showRegisterModal,"onUpdate:open":i[8]||(i[8]=l=>e.showRegisterModal=l),title:e.t("inference.register.title"),"confirm-loading":e.registering,width:520,"ok-text":e.t("inference.register.ok"),"cancel-text":e.t("common.cancel"),onOk:e.registerNode,onCancel:e.resetRegisterForm},{default:t(()=>[a(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(A,{label:e.t("inference.register.nodeIdLabel"),required:""},{default:t(()=>[a(P,{value:e.registerForm.nodeId,"onUpdate:value":i[4]||(i[4]=l=>e.registerForm.nodeId=l),placeholder:e.t("inference.register.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.register.endpointLabel")},{default:t(()=>[a(P,{value:e.registerForm.endpoint,"onUpdate:value":i[5]||(i[5]=l=>e.registerForm.endpoint=l),placeholder:e.t("inference.register.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.register.capabilitiesLabel")},{default:t(()=>[a(P,{value:e.registerForm.capabilities,"onUpdate:value":i[6]||(i[6]=l=>e.registerForm.capabilities=l),placeholder:e.t("inference.register.capabilitiesPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.register.gpuLabel")},{default:t(()=>[a(B,{value:e.registerForm.gpuMemory,"onUpdate:value":i[7]||(i[7]=l=>e.registerForm.gpuMemory=l),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" ── Submit task modal ────────────────────────────────────── "),a(G,{open:e.showSubmitModal,"onUpdate:open":i[13]||(i[13]=l=>e.showSubmitModal=l),title:e.t("inference.submit.title"),"confirm-loading":e.submitting,width:520,"ok-text":e.t("inference.submit.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitTask,onCancel:e.resetSubmitForm},{default:t(()=>[a(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(A,{label:e.t("inference.submit.modelLabel"),required:""},{default:t(()=>[a(P,{value:e.submitForm.model,"onUpdate:value":i[9]||(i[9]=l=>e.submitForm.model=l),placeholder:e.t("inference.submit.modelPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(A,{label:e.t("inference.submit.inputLabel")},{default:t(()=>[a(Q,{value:e.submitForm.input,"onUpdate:value":i[10]||(i[10]=l=>e.submitForm.input=l),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"]),a(A,{label:e.t("inference.submit.priorityLabel")},{default:t(()=>[a(B,{value:e.submitForm.priority,"onUpdate:value":i[11]||(i[11]=l=>e.submitForm.priority=l),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(A,{label:e.t("inference.submit.modeLabel")},{default:t(()=>[a(j,{value:e.submitForm.mode,"onUpdate:value":i[12]||(i[12]=l=>e.submitForm.mode=l)},{default:t(()=>[(c(!0),g(h,null,E(e.PRIVACY_MODES,l=>(c(),S(O,{key:l,value:l},{default:t(()=>[m(d(e.privacyLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const ft=he(Pe,[["render",lt],["__scopeId","data-v-93ae85f8"],["__file","/tmp/cc-web-panel-DNn50E/repo/packages/web-panel/src/views/Inference.vue"]]);export{ft as default};